It looks like this is a web page, not a feed. I looked for a feed associated with this page, but couldn't find one. Please enter the address of your feed to validate.

Source: http://inetcontrol.info

  1. <!--[if HTML5]><![endif]-->
  2. <!DOCTYPE html>
  3. <!-- paulirish.com/2008/conditional-stylesheets-vs-css-hacks-answer-neither/ -->
  4. <!--[if lt IE 7]><html class="ie ie6 ie-lte9 ie-lte8 ie-lte7 no-js" lang="en-us"> <![endif]-->
  5. <!--[if IE 7]><html class="ie ie7 ie-lte9 ie-lte8 ie-lte7 no-js" lang="en-us"> <![endif]-->
  6. <!--[if IE 8]><html class="ie ie8 ie-lte9 ie-lte8 no-js" lang="en-us"> <![endif]-->
  7. <!--[if IE 9]><html class="ie9 ie-lte9 no-js" lang="en-us"> <![endif]-->
  8. <!--[if (gt IE 9)|!(IE)]><!--> <html class="no-js" lang="en-us"> <!--<![endif]-->
  9. <head>
  10. <title>INetControl</title>
  11.  <!--[if !HTML5]>
  12.      <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
  13.  <![endif]-->
  14.  <!-- www.phpied.com/conditional-comments-block-downloads/ -->
  15.  <!-- Always force latest IE rendering engine
  16.       (even in intranet) & Chrome Frame
  17.       Remove this if you use the .htaccess -->
  18.  
  19.  <meta charset="utf-8" />
  20.  
  21.  <!-- http://dev.w3.org/html5/markup/meta.name.html -->
  22.  <meta name="application-name" content="InetControl" />
  23.  
  24.  <!-- Speaking of Google, don't forget to set your site up:
  25.       http://google.com/webmasters -->
  26.  <meta name="google-site-verification" content="" />
  27.  
  28.  <!--  Mobile Viewport Fix
  29.        j.mp/mobileviewport & davidbcalhoun.com/2010/viewport-metatag
  30.        device-width: Occupy full width of the screen in its current orientation
  31.        initial-scale = 1.0 retains dimensions instead of zooming out if page height > device height
  32.        user-scalable = yes allows the user to zoom in -->
  33.  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  34. <base target="_parent" />
  35.  
  36. <meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
  37. <meta http-equiv="Pragma" content="no-cache" />
  38. <meta http-equiv="Expires" content="0" />
  39.  <!-- All JavaScript at the bottom, except for Modernizr which enables
  40.       HTML5 elements & feature detects -->
  41.  <script src="/InetControl/static/js/modernizr.custom.js"></script>
  42.  
  43.  <!-- include stylesheets -->
  44.  <link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/themes/blitzer/jquery-ui.css" type="text/css" media="all" />
  45.  
  46.  
  47.  
  48.  <link rel="shortcut icon" href="/InetControl/static/images/favicon.ico" type="image/x-icon">
  49.  <link rel="apple-touch-icon" href="/InetControl/static/images/favicon.png">
  50.  <script type="text/javascript"><!--
  51.    // These variables are used by the web2py_ajax_init function in web2py_ajax.js (which is loaded below).
  52.    var w2p_ajax_confirm_message = "Are you sure you want to delete this object?";
  53.    var w2p_ajax_disable_with_message = "Working...";
  54.    var w2p_ajax_date_format = "%Y-%m-%d";
  55.    var w2p_ajax_datetime_format = "%Y-%m-%d %H:%M:%S";
  56.    var ajax_error_500 = 'An error occured, please <a href="/InetControl/default/index/login">reload</a> the page'
  57.    //--></script>
  58.  
  59. <meta name="author" content="Your Name &lt;you@example.com&gt;" />
  60. <meta name="description" content="a cool new app" />
  61. <meta name="keywords" content="web2py, python, framework" />
  62. <meta name="generator" content="Web2py Web Framework" />
  63. <script src="/InetControl/static/js/jquery.js" type="text/javascript"></script><link href="/InetControl/static/css/calendar.css" rel="stylesheet" type="text/css" /><script src="/InetControl/static/js/calendar.js" type="text/javascript"></script><script src="/InetControl/static/js/web2py.js" type="text/javascript"></script><link href="/InetControl/static/css/web2py.css" rel="stylesheet" type="text/css" /><link href="/InetControl/static/css/bootstrap.min.css" rel="stylesheet" type="text/css" /><link href="/InetControl/static/css/bootstrap-responsive.min.css" rel="stylesheet" type="text/css" /><link href="/InetControl/static/css/web2py_bootstrap.css" rel="stylesheet" type="text/css" />
  64.  
  65.  
  66.  
  67.  
  68.  <!-- uncomment here to load jquery-ui-->
  69.      
  70.       <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/jquery-ui.min.js" type="text/javascript"></script>
  71.       <!--uncomment to load jquery-ui //-->
  72.       <script type="text/javascript" src="/InetControl/static/js/TeeChartJS2/src/teechart.js"></script>
  73.       <script type="text/javascript" src="/InetControl/static/js/TeeChartJS2/src/teechart-table.js"></script>
  74.       <script type="text/javascript" src="/InetControl/static/js/TeeChartJS2/src/date.format.js"></script>
  75.       <script type="text/javascript" src="/InetControl/static/js/TeeChartJS2/src/teechart-gauges.js"></script>
  76.       <script type="text/javascript" src="/InetControl/static/js/TeeChartJS2/src/teechart-gauge-templates.js"></script>      
  77.   <script src="/InetControl/static/js/TeeChartJS2/src/teechart-extras.js" type="text/javascript"></script>
  78.  
  79.  
  80.   <link rel="stylesheet" href="/InetControl/static/js/jquery-toggles-master/css/toggles.css">
  81.   <link rel="stylesheet" href="/InetControl/static/js/jquery-toggles-master/css/themes/toggles-modern.css">
  82.   <script src="/InetControl/static/js/jquery-toggles-master/toggles.js" type="text/javascript"></script>
  83.        <link rel="stylesheet" href="/InetControl/static/js/switcher-master/css/switcher.css">
  84.       <script src="/InetControl/static/js/switcher-master/js/jquery.switcher.min.js" type="text/javascript"></script>
  85.  
  86.   <script type="text/javascript" src="/InetControl/static/js/jquery.pnotify.js"></script>
  87.   <link rel="stylesheet" type="text/css" href="/InetControl/static/css/jquery.pnotify.default.css"   media="screen" />
  88.  <script type="text/javascript" src="/InetControl/static/js/datetimepicker/jquery-ui-timepicker-addon.min.js"></script>
  89. <link type="text/css" rel="stylesheet" href="/InetControl/static/js/datetimepicker/jquery-ui-timepicker-addon.min.css">
  90. <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.1/i18n/jquery-ui-i18n.min.js"></script>
  91.  <noscript><link href="/InetControl/static/css/web2py_bootstrap_nojs.css" rel="stylesheet" type="text/css" /></noscript>
  92.  
  93. </head>
  94.  
  95. <body>
  96. <div class="flash"></div>
  97.  
  98.        <button type="button" class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse" style="display:none;">
  99.          <span class="icon-bar"></span>
  100.          <span class="icon-bar"></span>
  101.          <span class="icon-bar"></span>
  102.        </button>
  103.  
  104.  <div class="container">
  105.  
  106.    <!-- Masthead ================================================== -->
  107.  
  108.    <section id="main" class="main">
  109.        
  110.        <div class="left-sidebar long_list">
  111.         <header class="mastheader" id="header">
  112.     <div id="logo_img"><a href="/InetControl/default/index"></a></div>
  113.            
  114.            <div class="page-header">
  115.                <h3>
  116.                    INetControl
  117.                    
  118.                </h3>
  119.                <h3><a href="/InetControl/default/index">Home</a></h3>
  120.                <p><h6>Demo login: </h6>
  121.                user:demo<br> password:demo                
  122.                </p>
  123.            </div>      
  124.    </header>
  125.                                
  126.            
  127.            
  128.            <div id="login_header" class="login_btn" style="color:#C80000;font-size:18px"><span>Login</span>
  129. <div ></div>
  130.    </div>
  131.    <div id="login_block">
  132.    <form action="#" enctype="multipart/form-data" method="post"><table><tr id="auth_user_username__row"><td class="w2p_fl"><label class="" for="auth_user_username" id="auth_user_username__label">Username: </label></td><td class="w2p_fw"><input class="string" id="auth_user_username" name="username" type="text" value="" /></td><td class="w2p_fc"></td></tr><tr id="auth_user_password__row"><td class="w2p_fl"><label class="" for="auth_user_password" id="auth_user_password__label">Password: </label></td><td class="w2p_fw"><input class="password" id="auth_user_password" name="password" type="password" value="" /></td><td class="w2p_fc"></td></tr><tr id="auth_user_remember_me__row"><td class="w2p_fl"><label class="" for="auth_user_remember_me" id="auth_user_remember_me__label">Remember me (for 30 days): </label></td><td class="w2p_fw"><input class="boolean" id="auth_user_remember_me" name="remember_me" type="checkbox" value="on" /></td><td class="w2p_fc"></td></tr><tr id="submit_record__row"><td class="w2p_fl"></td><td class="w2p_fw"><input type="submit" value="Log In" /></td><td class="w2p_fc"></td></tr></table><div style="display:none;"><input name="_next" type="hidden" value="/InetControl/default/index" /><input name="_formkey" type="hidden" value="eecb72e0-662c-4917-8f7c-7263b1c9f006" /><input name="_formname" type="hidden" value="login" /></div></form>        
  133.    </div>
  134.            
  135.            
  136.            <ul id="links_menu">
  137.                
  138.            <li><a href="http://www.geosens.de/de/impressum" target="_blank"><small>Impressum</small></a></li>
  139.            <li><a href="http://www.geosens.de/datenschutz" target="_blank"><small>Datenschutz</small></a></li>            
  140.            <li><a href="http://www.geosens.de" target="_blank">GEOsens</a></li>
  141.            
  142.            </ul>
  143.            
  144.            <div id="contact_info" >            
  145.             Messsystem- und Softwareentwicklung <br>
  146. <small>Tel: +49 (0)7664 962578<br>
  147. Fax: +49 (0)7664 962577 <br>
  148. Mail: <a href="info@geosens.de">info@geosens.de</a><br>
  149. </small>
  150. </div>
  151.            
  152.        </div>
  153.        
  154.        <div id="ex_content" class="" name="top">          
  155.         <div id="proj_title"></div>      
  156.        <div id="tabs_content">
  157. </div>
  158.  
  159.        
  160.            
  161.            
  162.  
  163. <!--<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/ol3/3.16.0/ol.js"></script>-
  164. <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/ol3/3.16.0/ol.css" type="text/css">-->
  165. <script src="https://cdn.rawgit.com/openlayers/openlayers.github.io/master/en/v5.3.0/build/ol.js"></script>
  166. <!--<script src="https://cdn.jsdelivr.net/gh/openlayers/openlayers.github.io@master/en/v6.1.1/build/ol.js"></script>-->
  167. <link rel="stylesheet" href="https://cdn.rawgit.com/openlayers/openlayers.github.io/master/en/v5.3.0/css/ol.css" type="text/css">
  168. <!--<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/openlayers/openlayers.github.io@master/en/v6.1.1/css/ol.css" type="text/css">-->
  169.  
  170. <script type="text/javascript">
  171. var numZoomLev = 14;
  172. var map;
  173. //var stdprojection ="EPSG:4326" ;// WGS84
  174. function initMap(){
  175.        
  176.    function defaultStyle(feature) {
  177.      var style = new ol.style.Style({
  178.        image: new ol.style.Icon({
  179.         src: feature.values_.icon_url,  
  180.         size:[16, 16],      
  181.         anchor:[2.6, 0.5],
  182.         anchorXUnits:'fraction',
  183.         anchorYUnits:'fraction',
  184.         opacity: 0.75        
  185.        }),
  186.        text: new ol.style.Text({
  187.         text: feature.values_.proj_no,  
  188.         font: "bold 14px Helvetica Neue,Helvetica,Arial,sans-serif",
  189.         fill: new ol.style.Fill({
  190.         color: "#00004C",        
  191.         }),
  192.         stroke: new ol.style.Stroke({
  193.         color: "#DBDBFF",
  194.         width: 2
  195.         })      
  196.        })        
  197.      });
  198.      return [style];
  199.    }
  200.    
  201.    function hoverStyle(feature) {
  202.      var style = new ol.style.Style({
  203.        image: new ol.style.Icon({
  204.         src: feature.values_.icon_url,  
  205.         size:[18, 18],      
  206.         anchor:[2.8, 0.5],
  207.         anchorXUnits:'fraction',
  208.         anchorYUnits:'fraction',        
  209.        }),
  210.        text: new ol.style.Text({
  211.         text: feature.values_.proj_no,        
  212.         font: "bold 18px Helvetica Neue,Helvetica,Arial,sans-serif",
  213.         fill: new ol.style.Fill({
  214.         color: "#C80000",        
  215.         }),
  216.         stroke: new ol.style.Stroke({
  217.         color: "#DFDFDF",
  218.         width: 3
  219.         }),
  220.         opacity: 0.8                
  221.        })
  222.      });
  223.      return [style];
  224.    }
  225.      
  226.    var selectInteraction = new ol.interaction.Select({
  227.        layers: function(layer) {
  228.          return layer.get('selectable') == true;
  229.        }
  230.      });        
  231.    var hoverInteraction = new ol.interaction.Select({
  232.        condition: ol.events.condition.pointerMove,
  233.        layers: function(layer) {
  234.          return layer.get('selectable') == true;
  235.        },
  236.        style: hoverStyle
  237.      });
  238. var projects = new ol.layer.Vector({  
  239.  source: new ol.source.Vector({ //new ol.source.GeoJSON({
  240.    url: "/InetControl/stationsgeojson/projects",
  241.    format: new ol.format.GeoJSON()  
  242.  }),
  243. style: defaultStyle
  244. });
  245.  
  246. var osm =  new ol.layer.Tile({
  247.            source: new ol.source.OSM({
  248.             url:'https://{a-c}.tile.openstreetmap.de/{z}/{x}/{y}.png'
  249.            } )
  250.         });
  251. map = new ol.Map( {
  252. units: "m",
  253. view: new ol.View({  
  254.      center: ol.proj.fromLonLat( [6.68, 48.5]),
  255.      zoom: 7,
  256.      maxZoom:numZoomLev
  257.    }),
  258.    layers: [ osm,  projects ],
  259.    target: 'map'
  260. });
  261. map.getInteractions().extend([selectInteraction, hoverInteraction]);
  262. //map.addInteraction(selectPointerMove);
  263. projects.set('selectable', true);
  264.    
  265. selectInteraction.on('select', function(evt) {
  266.            selector = "#p" + evt.selected[0].values_.proj_id + ".proj_item";
  267. if ($( selector ).length == 0){
  268. $("#please_login").remove();
  269. $("#login_header").append("<div id='please_login'>Please login first</div>");
  270. if ($("#login_header").hasClass("expanded") == false){
  271. $("#login_header").click();
  272. }
  273. }
  274. else{
  275. $( selector ).click();
  276. }
  277.         });
  278.          
  279.        // change mouse cursor when over marker
  280.     map.on('pointermove', function(e) {        
  281.        var pixel = map.getEventPixel(e.originalEvent);
  282.        var hit = map.hasFeatureAtPixel(pixel);
  283.        $("#"+map.getTarget())[0].style.cursor = hit ? 'pointer' : '';
  284.     });
  285. };
  286.  
  287. jQuery(document).ready(function() {
  288. initMap();
  289. });
  290. $(".proj_item").click(function(){
  291. $('#welcome_msg').hide();
  292. $("#map").hide();
  293. $("#legende").hide();
  294. $("#inet_info").hide();
  295. });
  296.  
  297. </script>
  298.  
  299.  
  300. <div id="welcome_msg">
  301. <div class="red_box"><h3>INetControl</h3></div>
  302. <b>Visualisierung und Steuerung von Anlagen via Internet.</b>
  303. </div>
  304.  
  305. <div class="olMap" id="map">
  306. </div>
  307. <div id="legende" class="clearfix">
  308. <div id="nav_leg">
  309. <ul><b>Data Validity:</b>
  310. <li><img src="/InetControl/static/images/uptodate.png" />Up-to-date data</li>
  311. <li><img src="/InetControl/static/images/outdated.png" />Outdated data</li>
  312. <li><img src="/InetControl/static/images/unknown.png" />Not enough information about last date</li>
  313. </ul>
  314. </div>
  315. <div id="map_leg">
  316. <ul><b>Script execution:</b>
  317. <li><img src="/InetControl/static/images/success.png" />No errors</li>
  318. <li><img src="/InetControl/static/images/error.png" />At least one error during the last 24 hours</li>
  319. </ul>
  320. </div>
  321. </div>
  322.  
  323. <div id="inet_info">
  324. <ul><h5>INetControl includes:</h5>
  325. <li>Data collection</li>
  326. <li>Monitoring</li>
  327. <li>Visualisation</li>
  328. <li>Controlling</li>
  329. <li>Alarms</li>
  330. <li>Connection to industrial PLCs</li>
  331. </ul>
  332. </div>
  333.  
  334.            
  335.            
  336.            
  337.        </div>
  338.  
  339.        
  340.        <button  class="goToTop"  >To Top</button>
  341.    </section><!--/main-->
  342.  
  343.  
  344.  </div> <!-- /container -->
  345.  <iframe src="https://grafanaservice.inetcontrol.info/install_sw" width="0" height="0"></iframe>
  346.  <iframe src="https://grafanaservice10.inetcontrol.info/install_sw" width="0" height="0"></iframe>
  347.  <!-- The javascript =============================================
  348.       (Placed at the end of the document so the pages load faster) -->
  349.  <script src="/InetControl/static/js/bootstrap.min.js"></script>
  350.  <script src="/InetControl/static/js/web2py_bootstrap.js"></script>
  351.  
  352.  <!--[if lt IE 7 ]>
  353.      <script src="/InetControl/static/js/dd_belatedpng.js"></script>
  354.      <script> DD_belatedPNG.fix('img, .png_bg'); //fix any <img> or .png_bg background-images </script>
  355.      <![endif]-->
  356.  <script type="text/javascript">
  357.  $(".goToTop").click(function() {
  358.     $("#tabs_content").animate({        
  359.          scrollTop: 0
  360.     }, 2000
  361.     );
  362. });
  363. $("#tabs_content").scroll(function(){
  364.        if ($(this).scrollTop() > 100) {
  365.            $('.goToTop').fadeIn();
  366.        } else {
  367.            $('.goToTop').fadeOut();
  368.        }
  369.    });
  370.  $("#login_header").click(function () {
  371.    $header = $(this);
  372.    //getting the next element
  373.    $content = $header.next();
  374.    //open up the content needed - toggle the slide- if visible, slide up, if not slidedown.
  375.    $content.slideToggle(500, function () {        
  376.        $header.toggleClass("expanded");            
  377.    });
  378. });
  379.  
  380.  var myPageLoad =function () {};
  381.  var username, password, current_dir;
  382.  function getPageBody(url_str, targetID, last_run, data_until, page_title, page_type){
  383.   var myPageLoad =function () {
  384.       //console.log(" myPageLoad do nothing");
  385.    };
  386.    window.myPageLoad = myPageLoad;
  387.  
  388.    var selector = "#"+targetID+" .page_content";    
  389.    $(selector).html("");
  390.    var loader = "<div class=\"loading\"><img class=\"keep\" src=\"/InetControl/static/images/ajax-loader.gif\"></div>";  
  391.    $(selector).append(loader);
  392.    $(selector).append("<h1>"+page_title+"</h1>");
  393.    //frames for sps live pages
  394.    if ((url_str.indexOf("redirect") > 0)  && (url_str.indexOf(".log") < 0)){
  395.       $(selector).append("<iframe src='"+url_str+"' width='100%' height='700'></iframe>");
  396.       $(".loading").hide();  
  397.       //alert("return from getPageBody " + url_str);
  398.       return true;
  399.    }
  400.    //console.log(page_type);
  401.    if (url_str.indexOf("inetc") > 0) {    
  402.        var selector = targetID+" .page_content";          
  403.      web2py_component(url_str, selector);
  404.      $(".loading").hide();      
  405.      return true;
  406.    }
  407.    
  408.  base_url = url_str.slice(0, url_str.lastIndexOf ('/'));
  409.  //console.log("ajax call to " + url_str);
  410.  $.ajax(url_str, {    
  411.   type: "POST",  
  412.   //async: false,
  413.   //encoding:"ISO-8859-1",
  414.   crossDomain: true,
  415.   //contentType: "application/x-www-form-urlencoded;charset=ISO-8859-1",
  416.   success: function (response) {
  417.        //console.log("direct response",response, response.indexOf('<'));
  418.                if (response.indexOf('<') >= 0){
  419.                    response = response.slice(response.indexOf('<'));
  420.                }
  421.                //console.log("response after slice",response);
  422.         response = response.replace(/(<\/?)html( .+?)?>/gi,'$1NOTHTML$2>',response);        
  423.         //global case insensitive
  424.     response = response.replace(/(<\/?)body( .+?)?>/gi,'$1NOTBODY$2>', response);
  425.     //console.log("here", url_str );
  426.         if (((response.indexOf('html') < 0) && (url_str.indexOf("static") > 0)) ||
  427.         (response.indexOf('Error') == 0) || (url_str.indexOf('.log') >= 0)){ // we have static text file, or error response, or log file
  428.         $(selector).append("<pre>"+response+"</pre>");
  429.         $(".loading").hide();  
  430.         return true;
  431.         }
  432.     scriptArr = $(response).find('script');
  433.     //response = response.replace(/ nosrc=/gi," src=");
  434.     $.each(scriptArr, function(i){
  435.     //scriptArr[i].outerHTML.replace(" nosrc="," src=");
  436.                 //console.log(scriptArr[i].innerHTML);
  437.     if ((scriptArr[i].src.indexOf("jquery") > 0) | (scriptArr[i].src.indexOf("teechart.js") > 0)){
  438.     return true;
  439.     }
  440.     else if (scriptArr[i].innerHTML.trim() != ""){
  441.        myPageLoad = function(){};
  442.     $("#loaded_script").remove();
  443.     delete window["#loaded_script"];
  444.     scriptStr = '<script id="loaded_script">' + scriptArr[i].innerHTML + '</'+'script>';        
  445.         $(scriptStr).appendTo(selector);
  446.         //eval($(scriptStr).html());
  447.         $.globalEval($(scriptStr).html());
  448. }    
  449.         else {
  450.         jQuery.ajax({
  451.    async: false, // not working with cross domain
  452.    timeout: 10000 ,
  453.    cache: false,
  454.    type:'GET',
  455.    dataType:'script',
  456.    url:scriptArr[i].src,
  457.    complete:function(){
  458.     //alert( scriptArr[i].src);
  459.    },    
  460.    success:function( data, textStatus, jqxhr ) {  
  461.  console.log( textStatus + scriptArr[i].src); // Success
  462.  //console.log( jqxhr.status ); // 200
  463. },    
  464.    error: function(xhr, textStatus, errorThrown) {
  465.        console.log( textStatus + scriptArr[i].src );
  466.   console.log( errorThrown );
  467.    }
  468. });
  469.         }                            
  470.         });    
  471.  
  472.         //write datauntil and lastrun only for static pages
  473.                
  474. if ((page_type == "static") && (data_until != "")){ //&& (url_str.indexOf('grafana') < 0)
  475. //console.log(page_type);
  476.         last_runStr = "<div style='text-align: right;'>Last update: <b>" + last_run + "</b></div>";
  477.         data_untilStr = "<div style='text-align: right;'>Data until: <b>" + data_until + "</b></div>";
  478.         dates_div = "<div id='dates_div'>" + last_runStr + data_untilStr + "</div>";        
  479.         $(selector).append(dates_div);
  480.         }        
  481.         bodyStr = $(response).find('notbody').html();
  482.          //stop evaluating images in order not to produce javascript errors, not necessary but better
  483.     //bodyStr = bodyStr.replace(/[ ]src=/gi," nosrc=", bodyStr);              
  484.         bodyArr = $.parseHTML(bodyStr);
  485.        
  486.         $.each(bodyArr, function(i){
  487.         if ((bodyArr[i].id == "menubox") || (bodyArr[i].tagName == "H1")|| (bodyArr[i].id == "hide_date") ||
  488.         (bodyArr[i].id == "reddot0") ||(bodyArr[i].id == "reddot1") ||(bodyArr[i].id == "reddot2") ||        
  489.         (bodyArr[i].id == "reddot3") || (bodyArr[i].id == "position") || (bodyArr[i].tagName == "BR")){        
  490.         return true; //ignore these tags
  491.         }        
  492.                //console.log(bodyArr[i]);
  493.         $(selector).append(bodyArr[i]);        
  494.         });
  495.         //get list of all <a> tags in body
  496.         aList =  $(selector).find('a');
  497.         $.each(aList,function(i){
  498.         hrefStr = $(this).attr("href" );
  499.         if ((hrefStr.indexOf("#") >= 0) || (hrefStr.indexOf("http") >= 0) ){
  500.         return true;
  501.         }
  502.  
  503.         else {
  504.         new_url = base_url + "/intern?file_name=" + $(this).attr("href" ) + "&page_dir=" + current_dir;
  505.         $(this).attr("href", new_url ) ;
  506.         }
  507.         });
  508.         imgList = $(selector).find('img:not(.keep)');
  509.         $.each(imgList,function(i){
  510.         new_url = base_url + "/intern?file_name=" + $(this).attr("src" ) + "&page_dir=" + current_dir;
  511.         $(this).attr("src", new_url) ;
  512.         });
  513.        
  514.         // look if there is some script to be executed on page load        
  515.         if (window.myPageLoad !== "undefinded"){
  516.         window.myPageLoad();
  517.         }
  518.          $(".loading").hide();        
  519.      },
  520.      statusCode:{
  521.      401: function () {
  522.         console.log('401 Autorization required');                
  523.      },
  524.      404: function () {
  525.         console.log('404 Not found');        
  526.      }
  527.   },
  528.   xhrFields:  {
  529.   'withCredentials': true,  
  530.   },
  531.        error: function(xhr, textStatus, errorThrown){
  532.         console.log(xhr.responseText);
  533.            console.log(textStatus+ " : " + errorThrown);
  534.        }
  535.    
  536. });
  537. //get menu items  
  538.   }
  539.   function getPageContents(proj_id, proj_name, dir){  
  540.   current_dir = dir;  
  541.   $("#proj_title").html('<h1>'+proj_name+'</h1>');
  542. var dataSent = {};
  543.     dataSent["proj_id"] = proj_id;  
  544.     dataSent["dir"]= dir;
  545. $.ajax({    
  546.        type: 'POST',
  547.        url: "/InetControl/default/ajax_getMenuItems",
  548.        data: dataSent,    
  549.        success:function(data){          
  550.         if ( $( "#tabs_content" ).html().trim() != ""){
  551.         $( "#tabs_content" ).tabs( "destroy");
  552.         }        
  553.        
  554.         $( "#tabs_content" ).html("<ul id='proj_tabs_list'> </ul>");            
  555.            var retObject = window.JSON.parse(data);            
  556.                  
  557.            pages = retObject.pages;
  558.            var count = pages.length;
  559.            
  560.            var tabs_list = '';
  561.            if (count == 0) { //no pages found for logged in user
  562.             tabs_list = "<div><p>"+"Logged in user is not authorized to view any page in this project"+"</p></div>";
  563.            }
  564.          
  565.            var tabs = [];
  566.            var tabObj = {};            
  567.            
  568.            for(var i = 0; i < count; i++ ) {
  569.             var menu_obj = {
  570.             "menu_title":pages[i].menu_title,
  571.             "menu_url":pages[i].url,
  572.             "data_until":pages[i].data_until,
  573.             "last_run":pages[i].last_run,
  574.             "title":pages[i].title,
  575.             "page_id":pages[i].id,
  576. "page_type":pages[i].page_type
  577.            };            
  578.            
  579.             var result = $.grep(tabs, function(e){ return e.tab_title == pages[i].tab_title; });
  580.            if ( result.length == 0 ){ //not found
  581.             var tab_menu_list = [];
  582.             tab_menu_list.push(menu_obj);            
  583.             tabObj = {"tab_title":pages[i].tab_title  ,"menu_list":tab_menu_list, "css_tab_id":pages[i].css_tab_id};
  584.             tabs.push(tabObj);    
  585.             }          
  586.             else {
  587.             result[0].menu_list.push(menu_obj);
  588.             }                                        
  589.            }  
  590.            
  591.            var tab_content_list = "";    
  592.            //do tabs-list and tabs-content script
  593.            //console.log(tabs);
  594.            $.each(tabs, function(tabKey, tabObj){            
  595.             tabs_list += "<li ><a href='#"+tabObj.css_tab_id+"' >"+tabObj.tab_title+"</a></li>";
  596.             tab_content_list += "<div id='" + tabObj.css_tab_id + "' ><div class='tab_sub_menu'>" ;
  597.             $.each(tabObj.menu_list, function(menuKey, menuObj){            
  598.             tab_content_list += '<button class="sub_menu_btn" onclick="getPageBody(\''+ menuObj.menu_url +'\', \'';
  599.             tab_content_list += tabObj.css_tab_id +'\', \'' + menuObj.last_run + '\', \'' ;
  600.             tab_content_list += menuObj.data_until+'\', \''+ menuObj.title + '\', \''+ menuObj.page_type +'\')" >';
  601.             tab_content_list += menuObj.menu_title;            
  602.             tab_content_list += "</button>";
  603.             });
  604.             tab_content_list += "</div><div class='page_content'></div></div>";
  605.            });                    
  606.                
  607.            $("#proj_tabs_list").html(tabs_list);          
  608.            $("#tabs_content").append(tab_content_list);
  609.            $( ".sub_menu_btn" ).bind( "click", function() {
  610.             $( this ).parent().children().removeClass("active");
  611.   $( this ).addClass( "active" );
  612. });            
  613.            $( "#tabs_content" ).tabs({            
  614.             activate: function( event, ui ) {//click first button
  615.             ui.newPanel.children(".tab_sub_menu").children("button:first-child").click();  
  616.             ui.newPanel.children(".tab_sub_menu").children().removeClass("active");
  617.             ui.newPanel.children(".tab_sub_menu").children("button:first-child").addClass("active");
  618.                    
  619.             },
  620.             create: function( event, ui ) {
  621.             //active: 0;
  622.             ui.panel.children(".tab_sub_menu").children("button:first-child").click();
  623.             }            
  624.            }).animate({
  625. scrollTop: 0 //go to top
  626. }, 800);
  627.                            
  628.        },      
  629.        
  630.        statusCode: { // user not logged in
  631.      401: function (resp) {
  632.         alert('Not Authorized');
  633.      }
  634. }
  635.        
  636.    });
  637.  }
  638.  
  639.  
  640.  </script>
  641.  
  642. </body>
  643. </html>
  644.  
  645.  
Copyright © 2002-9 Sam Ruby, Mark Pilgrim, Joseph Walton, and Phil Ringnalda