Thread: [Phpsysinfo-subversion] SF.net SVN: phpsysinfo:[393] trunk
Brought to you by:
namiltd
From: <jac...@us...> - 2010-11-12 14:15:19
|
Revision: 393 http://phpsysinfo.svn.sourceforge.net/phpsysinfo/?rev=393&view=rev Author: jacky672 Date: 2010-11-12 14:15:13 +0000 (Fri, 12 Nov 2010) Log Message: ----------- [ADD] Added a new theme : nextgen.css from iysaak Modified Paths: -------------- trunk/ChangeLog Added Paths: ----------- trunk/templates/nextgen/ trunk/templates/nextgen/nextgen_bg.png trunk/templates/nextgen.css Modified: trunk/ChangeLog =================================================================== --- trunk/ChangeLog 2010-11-12 13:06:16 UTC (rev 392) +++ trunk/ChangeLog 2010-11-12 14:15:13 UTC (rev 393) @@ -3,6 +3,7 @@ phpSysInfo 3.0.6 - [ADD] Added PSI_JS_COMPRESSION_ENABLE option to enable/disable JavaScript compression - [ADD] New UUpdate plugin which display update notifications for Ubuntu Server systems + - [ADD] Added a new theme : nextgen.css from iysaak - [FIX] Fix bug [ 3077928 ] Dynamic view stops refreshing after a while (thanks to willelwood) - [FIX] Fix uptime calculation parse error with Mac OS X 10.6 Added: trunk/templates/nextgen/nextgen_bg.png =================================================================== (Binary files differ) Property changes on: trunk/templates/nextgen/nextgen_bg.png ___________________________________________________________________ Added: svn:mime-type + image/png Added: trunk/templates/nextgen.css =================================================================== --- trunk/templates/nextgen.css (rev 0) +++ trunk/templates/nextgen.css 2010-11-12 14:15:13 UTC (rev 393) @@ -0,0 +1,144 @@ +/* + $Id: phpsysinfo.css 386 2010-11-11 11:56:46Z jacky672 $ + */ +a { + text-decoration: none; + color: #00A; +} + +a:hover { + text-decoration: underline; + color: #7D9100; +} + +* { + margin: 0; + padding: 0; +} + +html { + height: 100%; + background: url("nextgen/nextgen_bg.png") repeat-x scroll center top #F3F1E9; +} + +body { + position: relative; + width: 940px; + min-height: 100%; + overflow: auto; + margin: 0 auto; + padding: 20px 20px 0 20px; + font: 0.75em arial, tahoma, helvetica, sans-serif; + color: #000; +} + +div#container { + margin: -20px -10px 0 -10px; + padding: 116px 0 0 0; +} + +h1 { + position: absolute; + top: 35px; + margin: 0; + padding: 0px 10px; + font-size: 2em; + font-weight: normal; + color: #fff; +} + +#select { + position: absolute; + top: 75px; + color: #FFF; + right: 30px; + width: 370px; + text-align: right; +} + +#select select { + width: 100px; +} + +#vitals, #network, #memory, #filesystem, #hardware, #temp, #voltage, #fan, #ups { + float: left; + width: 451px; + margin: 10px 0 0 10px; + padding: 1px; + border: 1px solid #354242; +} + +h2 { + padding: 5px 10px; + font-family: "trebuchet ms"; + font-size: 1.2em; + font-weight: bold; + letter-spacing: 0.0em; + text-transform: uppercase; + color: #C9DE55; /* #7D9100; */ + background: #354242; +} + +table { + width: 100%; +} + +div[id ^=Plugin] { + margin: 10px 0 0 8px; + padding: 1px; + padding: 1px; + border: 1px solid #354242; +} + +.dataTables_wrapper{ + margin: 0 0 0 0 !important; + border: 0px !important; +} + + +th, td, h3 { + padding: 4px 10px 2px 10px; + text-align: left; + vertical-align: top; +} + +h3 { + font-size: 120%; +} + +.even { + background: #DDD; +} + +#footer { + color: #777777; + clear: both; + margin: 12px; + padding: 13px 25px; + line-height: 18px; + text-align: right; +} + +#memory, #filesystem { + width: 915px; +} + +.bar { + background: #C1DC70 url("../gfx/html.gif"); +} + +p { + padding: 4px 10px 2px 10px; + line-height: 1.6; + text-align: left; + vertical-align: top; +} + +.right { + text-align: right; + padding-right: 20px; +} + +#pciTable, #ideTable, #scsiTable, #usbTable { + padding: 0px 30px; +} Property changes on: trunk/templates/nextgen.css ___________________________________________________________________ Added: svn:mime-type + text/css Added: svn:eol-style + native This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jac...@us...> - 2010-11-13 08:51:26
|
Revision: 395 http://phpsysinfo.svn.sourceforge.net/phpsysinfo/?rev=395&view=rev Author: jacky672 Date: 2010-11-13 08:51:15 +0000 (Sat, 13 Nov 2010) Log Message: ----------- [UPD] Updated jQuery plugin to 1.4.4 Modified Paths: -------------- trunk/ChangeLog trunk/js/jQuery/jquery.js Modified: trunk/ChangeLog =================================================================== --- trunk/ChangeLog 2010-11-12 14:22:42 UTC (rev 394) +++ trunk/ChangeLog 2010-11-13 08:51:15 UTC (rev 395) @@ -1,5 +1,8 @@ $Id$ +phpSysInfo 3.0.7 + - [UPD] Updated jQuery plugin to 1.4.4 + phpSysInfo 3.0.6 - [ADD] Added PSI_JS_COMPRESSION_ENABLE option to enable/disable JavaScript compression - [ADD] New UUpdate plugin which display update notifications for Ubuntu Server systems Modified: trunk/js/jQuery/jquery.js =================================================================== --- trunk/js/jQuery/jquery.js 2010-11-12 14:22:42 UTC (rev 394) +++ trunk/js/jQuery/jquery.js 2010-11-13 08:51:15 UTC (rev 395) @@ -1,5 +1,5 @@ /*! - * jQuery JavaScript Library v1.4.3 + * jQuery JavaScript Library v1.4.4 * http://jquery.com/ * * Copyright 2010, John Resig @@ -11,7 +11,7 @@ * Copyright 2010, The Dojo Foundation * Released under the MIT, BSD, and GPL Licenses. * - * Date: Thu Oct 14 23:10:06 2010 -0400 + * Date: Thu Nov 11 19:04:53 2010 -0500 */ (function( window, undefined ) { @@ -211,7 +211,7 @@ selector: "", // The current version of jQuery being used - jquery: "1.4.3", + jquery: "1.4.4", // The default length of a jQuery object is 0 length: 0, @@ -330,8 +330,11 @@ jQuery.fn.init.prototype = jQuery.fn; jQuery.extend = jQuery.fn.extend = function() { - // copy reference to target object - var target = arguments[0] || {}, i = 1, length = arguments.length, deep = false, options, name, src, copy, copyIsArray; + var options, name, src, copy, copyIsArray, clone, + target = arguments[0] || {}, + i = 1, + length = arguments.length, + deep = false; // Handle a deep copy situation if ( typeof target === "boolean" ) { @@ -433,18 +436,21 @@ // If there are functions bound, to execute if ( readyList ) { // Execute all of them - var fn, i = 0; - while ( (fn = readyList[ i++ ]) ) { - fn.call( document, jQuery ); - } + var fn, + i = 0, + ready = readyList; // Reset the list of functions readyList = null; - } - // Trigger any bound ready events - if ( jQuery.fn.triggerHandler ) { - jQuery( document ).triggerHandler( "ready" ); + while ( (fn = ready[ i++ ]) ) { + fn.call( document, jQuery ); + } + + // Trigger any bound ready events + if ( jQuery.fn.trigger ) { + jQuery( document ).trigger( "ready" ).unbind( "ready" ); + } } } }, @@ -697,7 +703,8 @@ }, merge: function( first, second ) { - var i = first.length, j = 0; + var i = first.length, + j = 0; if ( typeof second.length === "number" ) { for ( var l = second.length; j < l; j++ ) { @@ -964,6 +971,7 @@ optSelected: opt.selected, // Will be defined later + deleteExpando: true, optDisabled: false, checkClone: false, scriptEval: false, @@ -994,6 +1002,15 @@ delete window[ id ]; } + // Test to see if it's possible to delete an expando from an element + // Fails in Internet Explorer + try { + delete script.test; + + } catch(e) { + jQuery.support.deleteExpando = false; + } + root.removeChild( script ); if ( div.attachEvent && div.fireEvent ) { @@ -1087,22 +1104,8 @@ root = script = div = all = a = null; })(); -jQuery.props = { - "for": "htmlFor", - "class": "className", - readonly: "readOnly", - maxlength: "maxLength", - cellspacing: "cellSpacing", - rowspan: "rowSpan", - colspan: "colSpan", - tabindex: "tabIndex", - usemap: "useMap", - frameborder: "frameBorder" -}; - - var windowData = {}, rbrace = /^(?:\{.*\}|\[.*\])$/; @@ -1237,9 +1240,25 @@ jQuery.fn.extend({ data: function( key, value ) { + var data = null; + if ( typeof key === "undefined" ) { - return this.length ? jQuery.data( this[0] ) : null; + if ( this.length ) { + var attr = this[0].attributes, name; + data = jQuery.data( this[0] ); + for ( var i = 0, l = attr.length; i < l; i++ ) { + name = attr[i].name; + + if ( name.indexOf( "data-" ) === 0 ) { + name = name.substr( 5 ); + dataAttr( this[0], name, data[ name ] ); + } + } + } + + return data; + } else if ( typeof key === "object" ) { return this.each(function() { jQuery.data( this, key ); @@ -1250,31 +1269,12 @@ parts[1] = parts[1] ? "." + parts[1] : ""; if ( value === undefined ) { - var data = this.triggerHandler("getData" + parts[1] + "!", [parts[0]]); + data = this.triggerHandler("getData" + parts[1] + "!", [parts[0]]); // Try to fetch any internally stored data first if ( data === undefined && this.length ) { data = jQuery.data( this[0], key ); - - // If nothing was found internally, try to fetch any - // data from the HTML5 data-* attribute - if ( data === undefined && this[0].nodeType === 1 ) { - data = this[0].getAttribute( "data-" + key ); - - if ( typeof data === "string" ) { - try { - data = data === "true" ? true : - data === "false" ? false : - data === "null" ? null : - !jQuery.isNaN( data ) ? parseFloat( data ) : - rbrace.test( data ) ? jQuery.parseJSON( data ) : - data; - } catch( e ) {} - - } else { - data = undefined; - } - } + data = dataAttr( this[0], key, data ); } return data === undefined && parts[1] ? @@ -1283,7 +1283,8 @@ } else { return this.each(function() { - var $this = jQuery( this ), args = [ parts[0], value ]; + var $this = jQuery( this ), + args = [ parts[0], value ]; $this.triggerHandler( "setData" + parts[1] + "!", args ); jQuery.data( this, key, value ); @@ -1299,9 +1300,36 @@ } }); +function dataAttr( elem, key, data ) { + // If nothing was found internally, try to fetch any + // data from the HTML5 data-* attribute + if ( data === undefined && elem.nodeType === 1 ) { + data = elem.getAttribute( "data-" + key ); + if ( typeof data === "string" ) { + try { + data = data === "true" ? true : + data === "false" ? false : + data === "null" ? null : + !jQuery.isNaN( data ) ? parseFloat( data ) : + rbrace.test( data ) ? jQuery.parseJSON( data ) : + data; + } catch( e ) {} + // Make sure we set the data so it isn't changed later + jQuery.data( elem, key, data ); + } else { + data = undefined; + } + } + + return data; +} + + + + jQuery.extend({ queue: function( elem, type, data ) { if ( !elem ) { @@ -1329,7 +1357,8 @@ dequeue: function( elem, type ) { type = type || "fx"; - var queue = jQuery.queue( elem, type ), fn = queue.shift(); + var queue = jQuery.queue( elem, type ), + fn = queue.shift(); // If the fx queue is dequeued, always remove the progress sentinel if ( fn === "inprogress" ) { @@ -1405,6 +1434,19 @@ rclickable = /^a(?:rea)?$/i, rradiocheck = /^(?:radio|checkbox)$/i; +jQuery.props = { + "for": "htmlFor", + "class": "className", + readonly: "readOnly", + maxlength: "maxLength", + cellspacing: "cellSpacing", + rowspan: "rowSpan", + colspan: "colSpan", + tabindex: "tabIndex", + usemap: "useMap", + frameborder: "frameBorder" +}; + jQuery.fn.extend({ attr: function( name, value ) { return jQuery.access( this, name, value, true, jQuery.attr ); @@ -1438,7 +1480,9 @@ elem.className = value; } else { - var className = " " + elem.className + " ", setClass = elem.className; + var className = " " + elem.className + " ", + setClass = elem.className; + for ( var c = 0, cl = classNames.length; c < cl; c++ ) { if ( className.indexOf( " " + classNames[c] + " " ) < 0 ) { setClass += " " + classNames[c]; @@ -1486,7 +1530,8 @@ }, toggleClass: function( value, stateVal ) { - var type = typeof value, isBool = typeof stateVal === "boolean"; + var type = typeof value, + isBool = typeof stateVal === "boolean"; if ( jQuery.isFunction( value ) ) { return this.each(function(i) { @@ -1498,7 +1543,9 @@ return this.each(function() { if ( type === "string" ) { // toggle individual class names - var className, i = 0, self = jQuery(this), + var className, + i = 0, + self = jQuery( this ), state = stateVal, classNames = value.split( rspaces ); @@ -1667,91 +1714,88 @@ // Try to normalize/fix the name name = notxml && jQuery.props[ name ] || name; - // Only do all the following if this is a node (faster for style) - if ( elem.nodeType === 1 ) { - // These attributes require special treatment - var special = rspecialurl.test( name ); + // These attributes require special treatment + var special = rspecialurl.test( name ); - // Safari mis-reports the default selected property of an option - // Accessing the parent's selectedIndex property fixes it - if ( name === "selected" && !jQuery.support.optSelected ) { - var parent = elem.parentNode; - if ( parent ) { - parent.selectedIndex; - - // Make sure that it also works with optgroups, see #5701 - if ( parent.parentNode ) { - parent.parentNode.selectedIndex; - } + // Safari mis-reports the default selected property of an option + // Accessing the parent's selectedIndex property fixes it + if ( name === "selected" && !jQuery.support.optSelected ) { + var parent = elem.parentNode; + if ( parent ) { + parent.selectedIndex; + + // Make sure that it also works with optgroups, see #5701 + if ( parent.parentNode ) { + parent.parentNode.selectedIndex; } } + } - // If applicable, access the attribute via the DOM 0 way - // 'in' checks fail in Blackberry 4.7 #6931 - if ( (name in elem || elem[ name ] !== undefined) && notxml && !special ) { - if ( set ) { - // We can't allow the type property to be changed (since it causes problems in IE) - if ( name === "type" && rtype.test( elem.nodeName ) && elem.parentNode ) { - jQuery.error( "type property can't be changed" ); - } + // If applicable, access the attribute via the DOM 0 way + // 'in' checks fail in Blackberry 4.7 #6931 + if ( (name in elem || elem[ name ] !== undefined) && notxml && !special ) { + if ( set ) { + // We can't allow the type property to be changed (since it causes problems in IE) + if ( name === "type" && rtype.test( elem.nodeName ) && elem.parentNode ) { + jQuery.error( "type property can't be changed" ); + } - if ( value === null ) { - if ( elem.nodeType === 1 ) { - elem.removeAttribute( name ); - } - - } else { - elem[ name ] = value; + if ( value === null ) { + if ( elem.nodeType === 1 ) { + elem.removeAttribute( name ); } - } - // browsers index elements by id/name on forms, give priority to attributes. - if ( jQuery.nodeName( elem, "form" ) && elem.getAttributeNode(name) ) { - return elem.getAttributeNode( name ).nodeValue; + } else { + elem[ name ] = value; } + } - // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set - // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ - if ( name === "tabIndex" ) { - var attributeNode = elem.getAttributeNode( "tabIndex" ); + // browsers index elements by id/name on forms, give priority to attributes. + if ( jQuery.nodeName( elem, "form" ) && elem.getAttributeNode(name) ) { + return elem.getAttributeNode( name ).nodeValue; + } - return attributeNode && attributeNode.specified ? - attributeNode.value : - rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ? - 0 : - undefined; - } + // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set + // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ + if ( name === "tabIndex" ) { + var attributeNode = elem.getAttributeNode( "tabIndex" ); - return elem[ name ]; + return attributeNode && attributeNode.specified ? + attributeNode.value : + rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ? + 0 : + undefined; } - if ( !jQuery.support.style && notxml && name === "style" ) { - if ( set ) { - elem.style.cssText = "" + value; - } + return elem[ name ]; + } - return elem.style.cssText; - } - + if ( !jQuery.support.style && notxml && name === "style" ) { if ( set ) { - // convert the value to a string (all browsers do this but IE) see #1070 - elem.setAttribute( name, "" + value ); + elem.style.cssText = "" + value; } - // Ensure that missing attributes return undefined - // Blackberry 4.7 returns "" from getAttribute #6938 - if ( !elem.attributes[ name ] && (elem.hasAttribute && !elem.hasAttribute( name )) ) { - return undefined; - } + return elem.style.cssText; + } - var attr = !jQuery.support.hrefNormalized && notxml && special ? - // Some attributes require a special call on IE - elem.getAttribute( name, 2 ) : - elem.getAttribute( name ); + if ( set ) { + // convert the value to a string (all browsers do this but IE) see #1070 + elem.setAttribute( name, "" + value ); + } - // Non-existent attributes return null, we normalize to undefined - return attr === null ? undefined : attr; + // Ensure that missing attributes return undefined + // Blackberry 4.7 returns "" from getAttribute #6938 + if ( !elem.attributes[ name ] && (elem.hasAttribute && !elem.hasAttribute( name )) ) { + return undefined; } + + var attr = !jQuery.support.hrefNormalized && notxml && special ? + // Some attributes require a special call on IE + elem.getAttribute( name, 2 ) : + elem.getAttribute( name ); + + // Non-existent attributes return null, we normalize to undefined + return attr === null ? undefined : attr; } }); @@ -1790,6 +1834,9 @@ if ( handler === false ) { handler = returnFalse; + } else if ( !handler ) { + // Fixes bug #7229. Fix recommended by jdalton + return; } var handleObjIn, handleObj; @@ -2133,8 +2180,10 @@ jQuery.event.trigger( event, data, parent, true ); } else if ( !event.isDefaultPrevented() ) { - var target = event.target, old, targetType = type.replace(rnamespaces, ""), - isClick = jQuery.nodeName(target, "a") && targetType === "click", + var old, + target = event.target, + targetType = type.replace( rnamespaces, "" ), + isClick = jQuery.nodeName( target, "a" ) && targetType === "click", special = jQuery.event.special[ targetType ] || {}; if ( (!special._default || special._default.call( elem, event ) === false) && @@ -2166,7 +2215,9 @@ }, handle: function( event ) { - var all, handlers, namespaces, namespace_sort = [], namespace_re, events, args = jQuery.makeArray( arguments ); + var all, handlers, namespaces, namespace_re, events, + namespace_sort = [], + args = jQuery.makeArray( arguments ); event = args[0] = jQuery.event.fix( event || window.event ); event.currentTarget = this; @@ -2245,7 +2296,8 @@ // Fix target property, if necessary if ( !event.target ) { - event.target = event.srcElement || document; // Fixes #1925 where srcElement might not be defined either + // Fixes #1925 where srcElement might not be defined either + event.target = event.srcElement || document; } // check if target is a textnode (safari) @@ -2260,7 +2312,9 @@ // Calculate pageX/Y if missing and clientX/Y available if ( event.pageX == null && event.clientX != null ) { - var doc = document.documentElement, body = document.body; + var doc = document.documentElement, + body = document.body; + event.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0); event.pageY = event.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc && doc.clientTop || body && body.clientTop || 0); } @@ -2466,7 +2520,8 @@ setup: function( data, namespaces ) { if ( this.nodeName.toLowerCase() !== "form" ) { jQuery.event.add(this, "click.specialSubmit", function( e ) { - var elem = e.target, type = elem.type; + var elem = e.target, + type = elem.type; if ( (type === "submit" || type === "image") && jQuery( elem ).closest("form").length ) { e.liveFired = undefined; @@ -2475,7 +2530,8 @@ }); jQuery.event.add(this, "keypress.specialSubmit", function( e ) { - var elem = e.target, type = elem.type; + var elem = e.target, + type = elem.type; if ( (type === "text" || type === "password") && jQuery( elem ).closest("form").length && e.keyCode === 13 ) { e.liveFired = undefined; @@ -2716,7 +2772,8 @@ toggle: function( fn ) { // Save reference to arguments for access in closure - var args = arguments, i = 1; + var args = arguments, + i = 1; // link all the functions, so any of them can unbind this click handler while ( i < args.length ) { @@ -2811,8 +2868,9 @@ }); function liveHandler( event ) { - var stop, maxLevel, elems = [], selectors = [], - related, match, handleObj, elem, j, i, l, data, close, namespace, ret, + var stop, maxLevel, related, match, handleObj, elem, j, i, l, data, close, namespace, ret, + elems = [], + selectors = [], events = jQuery.data( this, this.nodeType ? "events" : "__events__" ); if ( typeof events === "function" ) { @@ -2823,7 +2881,7 @@ if ( event.liveFired === this || !events || !events.live || event.button && event.type === "click" ) { return; } - + if ( event.namespace ) { namespace = new RegExp("(^|\\.)" + event.namespace.split(".").join("\\.(?:.*\\.)?") + "(\\.|$)"); } @@ -2887,6 +2945,9 @@ if ( ret === false ) { stop = false; } + if ( event.isImmediatePropagationStopped() ) { + break; + } } } @@ -2954,12 +3015,12 @@ // optimization where it does not always call our comparision // function. If that is the case, discard the hasDuplicate value. // Thus far that includes Google Chrome. -[0, 0].sort(function(){ +[0, 0].sort(function() { baseHasDuplicate = false; return 0; }); -var Sizzle = function(selector, context, results, seed) { +var Sizzle = function( selector, context, results, seed ) { results = results || []; context = context || document; @@ -2973,13 +3034,16 @@ return results; } - var parts = [], m, set, checkSet, extra, prune = true, contextXML = Sizzle.isXML(context), - soFar = selector, ret, cur, pop, i; + var m, set, checkSet, extra, ret, cur, pop, i, + prune = true, + contextXML = Sizzle.isXML( context ), + parts = [], + soFar = selector; // Reset the position of the chunker regexp (start from head) do { - chunker.exec(""); - m = chunker.exec(soFar); + chunker.exec( "" ); + m = chunker.exec( soFar ); if ( m ) { soFar = m[3]; @@ -2994,8 +3058,10 @@ } while ( m ); if ( parts.length > 1 && origPOS.exec( selector ) ) { + if ( parts.length === 2 && Expr.relative[ parts[0] ] ) { set = posProcess( parts[0] + parts[1], context ); + } else { set = Expr.relative[ parts[0] ] ? [ context ] : @@ -3011,23 +3077,31 @@ set = posProcess( selector, set ); } } + } else { // Take a shortcut and set the context if the root selector is an ID // (but not if it'll be faster if the inner selector is an ID) if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML && Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) { + ret = Sizzle.find( parts.shift(), context, contextXML ); - context = ret.expr ? Sizzle.filter( ret.expr, ret.set )[0] : ret.set[0]; + context = ret.expr ? + Sizzle.filter( ret.expr, ret.set )[0] : + ret.set[0]; } if ( context ) { ret = seed ? { expr: parts.pop(), set: makeArray(seed) } : Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML ); - set = ret.expr ? Sizzle.filter( ret.expr, ret.set ) : ret.set; + set = ret.expr ? + Sizzle.filter( ret.expr, ret.set ) : + ret.set; + if ( parts.length > 0 ) { - checkSet = makeArray(set); + checkSet = makeArray( set ); + } else { prune = false; } @@ -3048,6 +3122,7 @@ Expr.relative[ cur ]( checkSet, pop, contextXML ); } + } else { checkSet = parts = []; } @@ -3064,12 +3139,14 @@ if ( toString.call(checkSet) === "[object Array]" ) { if ( !prune ) { results.push.apply( results, checkSet ); + } else if ( context && context.nodeType === 1 ) { for ( i = 0; checkSet[i] != null; i++ ) { if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && Sizzle.contains(context, checkSet[i])) ) { results.push( set[i] ); } } + } else { for ( i = 0; checkSet[i] != null; i++ ) { if ( checkSet[i] && checkSet[i].nodeType === 1 ) { @@ -3077,6 +3154,7 @@ } } } + } else { makeArray( checkSet, results ); } @@ -3089,15 +3167,15 @@ return results; }; -Sizzle.uniqueSort = function(results){ +Sizzle.uniqueSort = function( results ) { if ( sortOrder ) { hasDuplicate = baseHasDuplicate; - results.sort(sortOrder); + results.sort( sortOrder ); if ( hasDuplicate ) { for ( var i = 1; i < results.length; i++ ) { - if ( results[i] === results[i-1] ) { - results.splice(i--, 1); + if ( results[i] === results[ i - 1 ] ) { + results.splice( i--, 1 ); } } } @@ -3106,15 +3184,15 @@ return results; }; -Sizzle.matches = function(expr, set){ - return Sizzle(expr, null, null, set); +Sizzle.matches = function( expr, set ) { + return Sizzle( expr, null, null, set ); }; -Sizzle.matchesSelector = function(node, expr){ - return Sizzle(expr, null, null, [node]).length > 0; +Sizzle.matchesSelector = function( node, expr ) { + return Sizzle( expr, null, null, [node] ).length > 0; }; -Sizzle.find = function(expr, context, isXML){ +Sizzle.find = function( expr, context, isXML ) { var set; if ( !expr ) { @@ -3122,15 +3200,17 @@ } for ( var i = 0, l = Expr.order.length; i < l; i++ ) { - var type = Expr.order[i], match; + var match, + type = Expr.order[i]; if ( (match = Expr.leftMatch[ type ].exec( expr )) ) { var left = match[1]; - match.splice(1,1); + match.splice( 1, 1 ); if ( left.substr( left.length - 1 ) !== "\\" ) { match[1] = (match[1] || "").replace(/\\/g, ""); set = Expr.find[ type ]( match, context, isXML ); + if ( set != null ) { expr = expr.replace( Expr.match[ type ], "" ); break; @@ -3140,20 +3220,26 @@ } if ( !set ) { - set = context.getElementsByTagName("*"); + set = context.getElementsByTagName( "*" ); } - return {set: set, expr: expr}; + return { set: set, expr: expr }; }; -Sizzle.filter = function(expr, set, inplace, not){ - var old = expr, result = [], curLoop = set, match, anyFound, - isXMLFilter = set && set[0] && Sizzle.isXML(set[0]); +Sizzle.filter = function( expr, set, inplace, not ) { + var match, anyFound, + old = expr, + result = [], + curLoop = set, + isXMLFilter = set && set[0] && Sizzle.isXML( set[0] ); while ( expr && set.length ) { for ( var type in Expr.filter ) { if ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) { - var filter = Expr.filter[ type ], found, item, left = match[1]; + var found, item, + filter = Expr.filter[ type ], + left = match[1]; + anyFound = false; match.splice(1,1); @@ -3171,6 +3257,7 @@ if ( !match ) { anyFound = found = true; + } else if ( match === true ) { continue; } @@ -3185,9 +3272,11 @@ if ( inplace && found != null ) { if ( pass ) { anyFound = true; + } else { curLoop[i] = false; } + } else if ( pass ) { result.push( item ); anyFound = true; @@ -3216,6 +3305,7 @@ if ( expr === old ) { if ( anyFound == null ) { Sizzle.error( expr ); + } else { break; } @@ -3233,6 +3323,7 @@ var Expr = Sizzle.selectors = { order: [ "ID", "NAME", "TAG" ], + match: { ID: /#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/, CLASS: /\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/, @@ -3243,20 +3334,24 @@ POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/, PSEUDO: /:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/ }, + leftMatch: {}, + attrMap: { "class": "className", "for": "htmlFor" }, + attrHandle: { - href: function(elem){ - return elem.getAttribute("href"); + href: function( elem ) { + return elem.getAttribute( "href" ); } }, + relative: { "+": function(checkSet, part){ var isPartStr = typeof part === "string", - isTag = isPartStr && !/\W/.test(part), + isTag = isPartStr && !/\W/.test( part ), isPartStrNotTag = isPartStr && !isTag; if ( isTag ) { @@ -3277,23 +3372,29 @@ Sizzle.filter( part, checkSet, true ); } }, - ">": function(checkSet, part){ - var isPartStr = typeof part === "string", - elem, i = 0, l = checkSet.length; - if ( isPartStr && !/\W/.test(part) ) { + ">": function( checkSet, part ) { + var elem, + isPartStr = typeof part === "string", + i = 0, + l = checkSet.length; + + if ( isPartStr && !/\W/.test( part ) ) { part = part.toLowerCase(); for ( ; i < l; i++ ) { elem = checkSet[i]; + if ( elem ) { var parent = elem.parentNode; checkSet[i] = parent.nodeName.toLowerCase() === part ? parent : false; } } + } else { for ( ; i < l; i++ ) { elem = checkSet[i]; + if ( elem ) { checkSet[i] = isPartStr ? elem.parentNode : @@ -3306,8 +3407,11 @@ } } }, + "": function(checkSet, part, isXML){ - var doneName = done++, checkFn = dirCheck, nodeCheck; + var nodeCheck, + doneName = done++, + checkFn = dirCheck; if ( typeof part === "string" && !/\W/.test(part) ) { part = part.toLowerCase(); @@ -3315,22 +3419,26 @@ checkFn = dirNodeCheck; } - checkFn("parentNode", part, doneName, checkSet, nodeCheck, isXML); + checkFn( "parentNode", part, doneName, checkSet, nodeCheck, isXML ); }, - "~": function(checkSet, part, isXML){ - var doneName = done++, checkFn = dirCheck, nodeCheck; - if ( typeof part === "string" && !/\W/.test(part) ) { + "~": function( checkSet, part, isXML ) { + var nodeCheck, + doneName = done++, + checkFn = dirCheck; + + if ( typeof part === "string" && !/\W/.test( part ) ) { part = part.toLowerCase(); nodeCheck = part; checkFn = dirNodeCheck; } - checkFn("previousSibling", part, doneName, checkSet, nodeCheck, isXML); + checkFn( "previousSibling", part, doneName, checkSet, nodeCheck, isXML ); } }, + find: { - ID: function(match, context, isXML){ + ID: function( match, context, isXML ) { if ( typeof context.getElementById !== "undefined" && !isXML ) { var m = context.getElementById(match[1]); // Check parentNode to catch when Blackberry 4.6 returns @@ -3338,9 +3446,11 @@ return m && m.parentNode ? [m] : []; } }, - NAME: function(match, context){ + + NAME: function( match, context ) { if ( typeof context.getElementsByName !== "undefined" ) { - var ret = [], results = context.getElementsByName(match[1]); + var ret = [], + results = context.getElementsByName( match[1] ); for ( var i = 0, l = results.length; i < l; i++ ) { if ( results[i].getAttribute("name") === match[1] ) { @@ -3351,12 +3461,13 @@ return ret.length === 0 ? null : ret; } }, - TAG: function(match, context){ - return context.getElementsByTagName(match[1]); + + TAG: function( match, context ) { + return context.getElementsByTagName( match[1] ); } }, preFilter: { - CLASS: function(match, curLoop, inplace, result, not, isXML){ + CLASS: function( match, curLoop, inplace, result, not, isXML ) { match = " " + match[1].replace(/\\/g, "") + " "; if ( isXML ) { @@ -3369,6 +3480,7 @@ if ( !inplace ) { result.push( elem ); } + } else if ( inplace ) { curLoop[i] = false; } @@ -3377,13 +3489,16 @@ return false; }, - ID: function(match){ + + ID: function( match ) { return match[1].replace(/\\/g, ""); }, - TAG: function(match, curLoop){ + + TAG: function( match, curLoop ) { return match[1].toLowerCase(); }, - CHILD: function(match){ + + CHILD: function( match ) { if ( match[1] === "nth" ) { // parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6' var test = /(-?)(\d*)n((?:\+|-)?\d*)/.exec( @@ -3400,7 +3515,8 @@ return match; }, - ATTR: function(match, curLoop, inplace, result, not, isXML){ + + ATTR: function( match, curLoop, inplace, result, not, isXML ) { var name = match[1].replace(/\\/g, ""); if ( !isXML && Expr.attrMap[name] ) { @@ -3413,122 +3529,156 @@ return match; }, - PSEUDO: function(match, curLoop, inplace, result, not){ + + PSEUDO: function( match, curLoop, inplace, result, not ) { if ( match[1] === "not" ) { // If we're dealing with a complex expression, or a simple one if ( ( chunker.exec(match[3]) || "" ).length > 1 || /^\w/.test(match[3]) ) { match[3] = Sizzle(match[3], null, null, curLoop); + } else { var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not); + if ( !inplace ) { result.push.apply( result, ret ); } + return false; } + } else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) { return true; } return match; }, - POS: function(match){ + + POS: function( match ) { match.unshift( true ); + return match; } }, + filters: { - enabled: function(elem){ + enabled: function( elem ) { return elem.disabled === false && elem.type !== "hidden"; }, - disabled: function(elem){ + + disabled: function( elem ) { return elem.disabled === true; }, - checked: function(elem){ + + checked: function( elem ) { return elem.checked === true; }, - selected: function(elem){ + + selected: function( elem ) { // Accessing this property makes selected-by-default // options in Safari work properly elem.parentNode.selectedIndex; + return elem.selected === true; }, - parent: function(elem){ + + parent: function( elem ) { return !!elem.firstChild; }, - empty: function(elem){ + + empty: function( elem ) { return !elem.firstChild; }, - has: function(elem, i, match){ + + has: function( elem, i, match ) { return !!Sizzle( match[3], elem ).length; }, - header: function(elem){ + + header: function( elem ) { return (/h\d/i).test( elem.nodeName ); }, - text: function(elem){ + + text: function( elem ) { return "text" === elem.type; }, - radio: function(elem){ + radio: function( elem ) { return "radio" === elem.type; }, - checkbox: function(elem){ + + checkbox: function( elem ) { return "checkbox" === elem.type; }, - file: function(elem){ + + file: function( elem ) { return "file" === elem.type; }, - password: function(elem){ + password: function( elem ) { return "password" === elem.type; }, - submit: function(elem){ + + submit: function( elem ) { return "submit" === elem.type; }, - image: function(elem){ + + image: function( elem ) { return "image" === elem.type; }, - reset: function(elem){ + + reset: function( elem ) { return "reset" === elem.type; }, - button: function(elem){ + + button: function( elem ) { return "button" === elem.type || elem.nodeName.toLowerCase() === "button"; }, - input: function(elem){ - return (/input|select|textarea|button/i).test(elem.nodeName); + + input: function( elem ) { + return (/input|select|textarea|button/i).test( elem.nodeName ); } }, setFilters: { - first: function(elem, i){ + first: function( elem, i ) { return i === 0; }, - last: function(elem, i, match, array){ + + last: function( elem, i, match, array ) { return i === array.length - 1; }, - even: function(elem, i){ + + even: function( elem, i ) { return i % 2 === 0; }, - odd: function(elem, i){ + + odd: function( elem, i ) { return i % 2 === 1; }, - lt: function(elem, i, match){ + + lt: function( elem, i, match ) { return i < match[3] - 0; }, - gt: function(elem, i, match){ + + gt: function( elem, i, match ) { return i > match[3] - 0; }, - nth: function(elem, i, match){ + + nth: function( elem, i, match ) { return match[3] - 0 === i; }, - eq: function(elem, i, match){ + + eq: function( elem, i, match ) { return match[3] - 0 === i; } }, filter: { - PSEUDO: function(elem, match, i, array){ - var name = match[1], filter = Expr.filters[ name ]; + PSEUDO: function( elem, match, i, array ) { + var name = match[1], + filter = Expr.filters[ name ]; if ( filter ) { return filter( elem, i, match, array ); + } else if ( name === "contains" ) { return (elem.textContent || elem.innerText || Sizzle.getText([ elem ]) || "").indexOf(match[3]) >= 0; + } else if ( name === "not" ) { var not = match[3]; @@ -3539,34 +3689,44 @@ } return true; + } else { Sizzle.error( "Syntax error, unrecognized expression: " + name ); } }, - CHILD: function(elem, match){ - var type = match[1], node = elem; - switch (type) { - case 'only': - case 'first': + + CHILD: function( elem, match ) { + var type = match[1], + node = elem; + + switch ( type ) { + case "only": + case "first": while ( (node = node.previousSibling) ) { if ( node.nodeType === 1 ) { return false; } } + if ( type === "first" ) { return true; } + node = elem; - case 'last': + + case "last": while ( (node = node.nextSibling) ) { if ( node.nodeType === 1 ) { return false; } } + return true; - case 'nth': - var first = match[2], last = match[3]; + case "nth": + var first = match[2], + last = match[3]; + if ( first === 1 && last === 0 ) { return true; } @@ -3576,33 +3736,41 @@ if ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) { var count = 0; + for ( node = parent.firstChild; node; node = node.nextSibling ) { if ( node.nodeType === 1 ) { node.nodeIndex = ++count; } } + parent.sizcache = doneName; } var diff = elem.nodeIndex - last; + if ( first === 0 ) { return diff === 0; + } else { return ( diff % first === 0 && diff / first >= 0 ); } } }, - ID: function(elem, match){ + + ID: function( elem, match ) { return elem.nodeType === 1 && elem.getAttribute("id") === match; }, - TAG: function(elem, match){ + + TAG: function( elem, match ) { return (match === "*" && elem.nodeType === 1) || elem.nodeName.toLowerCase() === match; }, - CLASS: function(elem, match){ + + CLASS: function( elem, match ) { return (" " + (elem.className || elem.getAttribute("class")) + " ") .indexOf( match ) > -1; }, - ATTR: function(elem, match){ + + ATTR: function( elem, match ) { var name = match[1], result = Expr.attrHandle[ name ] ? Expr.attrHandle[ name ]( elem ) : @@ -3633,9 +3801,11 @@ value === check || value.substr(0, check.length + 1) === check + "-" : false; }, - POS: function(elem, match, i, array){ - var name = match[2], filter = Expr.setFilters[ name ]; + POS: function( elem, match, i, array ) { + var name = match[2], + filter = Expr.setFilters[ name ]; + if ( filter ) { return filter( elem, i, match, array ); } @@ -3653,7 +3823,7 @@ Expr.leftMatch[ type ] = new RegExp( /(^(?:.|\r|\n)*?)/.source + Expr.match[ type ].source.replace(/\\(\d+)/g, fescape) ); } -var makeArray = function(array, results) { +var makeArray = function( array, results ) { array = Array.prototype.slice.call( array, 0 ); if ( results ) { @@ -3672,17 +3842,20 @@ Array.prototype.slice.call( document.documentElement.childNodes, 0 )[0].nodeType; // Provide a fallback method if it does not work -} catch(e){ - makeArray = function(array, results) { - var ret = results || [], i = 0; +} catch( e ) { + makeArray = function( array, results ) { + var i = 0, + ret = results || []; if ( toString.call(array) === "[object Array]" ) { Array.prototype.push.apply( ret, array ); + } else { if ( typeof array.length === "number" ) { for ( var l = array.length; i < l; i++ ) { ret.push( array[i] ); } + } else { for ( ; array[i]; i++ ) { ret.push( array[i] ); @@ -3709,10 +3882,15 @@ return a.compareDocumentPosition(b) & 4 ? -1 : 1; }; + } else { sortOrder = function( a, b ) { - var ap = [], bp = [], aup = a.parentNode, bup = b.parentNode, - cur = aup, al, bl; + var al, bl, + ap = [], + bp = [], + aup = a.parentNode, + bup = b.parentNode, + cur = aup; // The nodes are identical, we can exit early if ( a === b ) { @@ -3805,31 +3983,40 @@ (function(){ // We're going to inject a fake input element with a specified name var form = document.createElement("div"), - id = "script" + (new Date()).getTime(); + id = "script" + (new Date()).getTime(), + root = document.documentElement; + form.innerHTML = "<a name='" + id + "'/>"; // Inject it into the root element, check its status, and remove it quickly - var root = document.documentElement; root.insertBefore( form, root.firstChild ); // The workaround has to do additional checks after a getElementById // Which slows things down for other browsers (hence the branching) if ( document.getElementById( id ) ) { - Expr.find.ID = function(match, context, isXML){ + Expr.find.ID = function( match, context, isXML ) { if ( typeof context.getElementById !== "undefined" && !isXML ) { var m = context.getElementById(match[1]); - return m ? m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ? [m] : undefined : []; + + return m ? + m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ? + [m] : + undefined : + []; } }; - Expr.filter.ID = function(elem, match){ + Expr.filter.ID = function( elem, match ) { var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id"); + return elem.nodeType === 1 && node && node.nodeValue === match; }; } root.removeChild( form ); - root = form = null; // release memory in IE + + // release memory in IE + root = form = null; })(); (function(){ @@ -3842,8 +4029,8 @@ // Make sure no comments are found if ( div.getElementsByTagName("*").length > 0 ) { - Expr.find.TAG = function(match, context){ - var results = context.getElementsByTagName(match[1]); + Expr.find.TAG = function( match, context ) { + var results = context.getElementsByTagName( match[1] ); // Filter out possible comments if ( match[1] === "*" ) { @@ -3864,19 +4051,25 @@ // Check to see if an attribute returns normalized href attributes div.innerHTML = "<a href='#'></a>"; + if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" && div.firstChild.getAttribute("href") !== "#" ) { - Expr.attrHandle.href = function(elem){ - return elem.getAttribute("href", 2); + + Expr.attrHandle.href = function( elem ) { + return elem.getAttribute( "href", 2 ); }; } - div = null; // release memory in IE + // release memory in IE + div = null; })(); if ( document.querySelectorAll ) { (function(){ - var oldSizzle = Sizzle, div = document.createElement("div"); + var oldSizzle = Sizzle, + div = document.createElement("div"), + id = "__sizzle__"; + div.innerHTML = "<p class='TEST'></p>"; // Safari can't handle uppercase or unicode characters when @@ -3885,9 +4078,12 @@ return; } - Sizzle = function(query, context, extra, seed){ + Sizzle = function( query, context, extra, seed ) { context = context || document; + // Make sure that attribute selectors are quoted + query = query.replace(/\=\s*([^'"\]]*)\s*\]/g, "='$1']"); + // Only use querySelectorAll on non-XML documents // (ID selectors don't work in non-HTML documents) if ( !seed && !Sizzle.isXML(context) ) { @@ -3901,17 +4097,19 @@ // and working up from there (Thanks to Andrew Dupont for the technique) // IE 8 doesn't work on object elements } else if ( context.nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) { - var old = context.id, id = context.id = "__sizzle__"; + var old = context.getAttribute( "id" ), + nid = old || id; + if ( !old ) { + context.setAttribute( "id", nid ); + } + try { - return makeArray( context.querySelectorAll( "#" + id + " " + query ), extra ); + return makeArray( context.querySelectorAll( "#" + nid + " " + query ), extra ); } catch(pseudoError) { } finally { - if ( old ) { - context.id = old; - - } else { + if ( !old ) { context.removeAttribute( "id" ); } } @@ -3925,7 +4123,8 @@ Sizzle[ prop ] = oldSizzle[ prop ]; } - div = null; // release memory in IE + // release memory in IE + div = null; })(); } @@ -3937,7 +4136,7 @@ try { // This should fail with an exception // Gecko does not error, returns false instead - matches.call( document.documentElement, ":sizzle" ); + matches.call( document.documentElement, "[test!='']:sizzle" ); } catch( pseudoError ) { pseudoWorks = true; @@ -3945,13 +4144,18 @@ if ( matches ) { Sizzle.matchesSelector = function( node, expr ) { + // Make sure that attribute selectors are quoted + expr = expr.replace(/\=\s*([^'"\]]*)\s*\]/g, "='$1']"); + + if ( !Sizzle.isXML( node ) ) { try { - if ( pseudoWorks || !Expr.match.PSEUDO.test( expr ) ) { + if ( pseudoWorks || !Expr.match.PSEUDO.test( expr ) && !/!=/.test( expr ) ) { return matches.call( node, expr ); } } catch(e) {} + } - return Sizzle(expr, null, null, [node]).length > 0; + return Sizzle(expr, null, null, [node]).length > 0; }; } })(); @@ -3975,22 +4179,25 @@ } Expr.order.splice(1, 0, "CLASS"); - Expr.find.CLASS = function(match, context, isXML) { + Expr.find.CLASS = function( match, context, isXML ) { if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) { return context.getElementsByClassName(match[1]); } }; - div = null; // release memory in IE + // release memory in IE + div = null; })(); function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { for ( var i = 0, l = checkSet.length; i < l; i++ ) { var elem = checkSet[i]; + if ( elem ) { - elem = elem[dir]; var match = false; + elem = elem[dir]; + while ( elem ) { if ( elem.sizcache === doneName ) { match = checkSet[elem.sizset]; @@ -4018,9 +4225,11 @@ function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { for ( var i = 0, l = checkSet.length; i < l; i++ ) { var elem = checkSet[i]; + if ( elem ) { + var match = false; + elem = elem[dir]; - var match = false; while ( elem ) { if ( elem.sizcache === doneName ) { @@ -4033,6 +4242,7 @@ elem.sizcache = doneName; elem.sizset = i; } + if ( typeof cur !== "string" ) { if ( elem === cur ) { match = true; @@ -4053,21 +4263,34 @@ } } -Sizzle.contains = document.documentElement.contains ? function(a, b){ - return a !== b && (a.contains ? a.contains(b) : true); -} : function(a, b){ - return !!(a.compareDocumentPosition(b) & 16); -}; +if ( document.documentElement.contains ) { + Sizzle.contains = function( a, b ) { + return a !== b && (a.contains ? a.contains(b) : true); + }; -Sizzle.isXML = function(elem){ +} else if ( document.documentElement.compareDocumentPosition ) { + Sizzle.contains = function( a, b ) { + return !!(a.compareDocumentPosition(b) & 16); + }; + +} else { + Sizzle.contains = function() { + return false; + }; +} + +Sizzle.isXML = function( elem ) { // documentElement is verified for cases where it doesn't yet exist // (such as loading iframes in IE - #4833) var documentElement = (elem ? elem.ownerDocument || elem : 0).documentElement; + return documentElement ? documentElement.nodeName !== "HTML" : false; }; -var posProcess = function(selector, context){ - var tmpSet = [], later = "", match, +var posProcess = function( selector, context ) { + var match, + tmpSet = [], + later = "", root = context.nodeType ? [context] : context; // Position selectors must be done after the filter @@ -4109,7 +4332,8 @@ jQuery.fn.extend({ find: function( selector ) { - var ret = this.pushStack( "", "find", selector ), length = 0; + var ret = this.pushStack( "", "find", selector ), + length = 0; for ( var i = 0, l = this.length; i < l; i++ ) { length = ret.length; @@ -4158,7 +4382,9 @@ var ret = [], i, l, cur = this[0]; if ( jQuery.isArray( selectors ) ) { - var match, matches = {}, selector, level = 1; + var match, selector, + matches = {}, + level = 1; if ( cur && selectors.length ) { for ( i = 0, l = selectors.length; i < l; i++ ) { @@ -4324,7 +4550,9 @@ }, dir: function( elem, dir, until ) { - var matched = [], cur = elem[dir]; + var matched = [], + cur = elem[ dir ]; + while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) { if ( cur.nodeType === 1 ) { matched.push( cur ); @@ -4400,7 +4628,8 @@ rtbody = /<tbody/i, rhtml = /<|&#?\w+;/, rnocache = /<(?:script|object|embed|option|style)/i, - rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i, // checked="checked" or checked (html5) + // checked="checked" or checked (html5) + rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i, raction = /\=([^="'>\s]+\/)>/g, wrapMap = { option: [ 1, "<select multiple='multiple'>", "</select>" ], @@ -4426,7 +4655,8 @@ text: function( text ) { if ( jQuery.isFunction(text) ) { return this.each(function(i) { - var self = jQuery(this); + var self = jQuery( this ); + self.text( text.call(this, i, self.text()) ); }); } @@ -4475,7 +4705,8 @@ } return this.each(function() { - var self = jQuery( this ), contents = self.contents(); + var self = jQuery( this ), + contents = self.contents(); if ( contents.length ) { contents.wrapAll( html ); @@ -4586,7 +4817,9 @@ // attributes in IE that are actually only stored // as properties will not be copied (such as the // the name attribute on an input). - var html = this.outerHTML, ownerDocument = this.ownerDocument; + var html = this.outerHTML, + ownerDocument = this.ownerDocument; + if ( !html ) { var div = ownerDocument.createElement("div"); div.appendChild( this.cloneNode(true) ); @@ -4641,7 +4874,8 @@ } else if ( jQuery.isFunction( value ) ) { this.each(function(i){ - var self = jQuery(this); + var self = jQuery( this ); + self.html( value.call(this, i, self.html()) ); }); @@ -4664,13 +4898,14 @@ } if ( typeof value !== "string" ) { - value = jQuery(value).detach(); + value = jQuery( value ).detach(); } return this.each(function() { - var next = this.nextSibling, parent = this.parentNode; + var next = this.nextSibling, + parent = this.parentNode; - jQuery(this).remove(); + jQuery( this ).remove(); if ( next ) { jQuery(next).before( value ); @@ -4688,7 +4923,9 @@ }, domManip: function( args, table, callback ) { - var results, first, value = args[0], scripts = [], fragment, parent; + var results, first, fragment, parent, + value = args[0], + scripts = []; // We can't cloneNode fragments that contain checked, in WebKit if ( !jQuery.support.checkClone && arguments.length === 3 && typeof value === "string" && rchecked.test( value ) ) { @@ -4763,7 +5000,9 @@ return; } - var oldData = jQuery.data( orig[i++] ), curData = jQuery.data( this, oldData ), events = oldData && oldData.events; + var oldData = jQuery.data( orig[i++] ), + curData = jQuery.data( this, oldData ), + events = oldData && oldData.events; if ( events ) { delete curData.handle; @@ -4820,7 +5059,8 @@ replaceAll: "replaceWith" }, function( name, original ) { jQuery.fn[ name ] = function( selector ) { - var ret = [], insert = jQuery( selector ), + var ret = [], + insert = jQuery( selector ), parent = this.length === 1 && this[0].parentNode; if ( parent && parent.nodeType === 11 && parent.childNodes.length === 1 && insert.length === 1 ) { @@ -5004,8 +5244,8 @@ cssHeight = [ "Top", "Bottom" ], curCSS, - // cache check for defaultView.getComputedStyle - getComputedStyle = document.defaultView && document.defaultView.getComputedStyle, + getComputedStyle, + currentStyle, fcamelCase = function( all, letter ) { return letter.toUpperCase(); @@ -5161,7 +5401,29 @@ }); } - return val + "px"; + if ( val <= 0 ) { + val = curCSS( elem, name, name ); + + if ( val === "0px" && currentStyle ) { + val = currentStyle( elem, name, name ); + } + + if ( val != null ) { + // Should return "auto" instead of 0, use 0 for + // temporary backwards-compat + return val === "" || val === "auto" ? "0px" : val; + } + } + + if ( val < 0 || val == null ) { + val = elem.style[ name ]; + + // Should return "auto" instead of 0, use 0 for + // temporary backwards-compat + return val === "" || val === "auto" ? "0px" : val; + } + + return typeof val === "string" ? val : val + "px"; } }, @@ -5210,8 +5472,8 @@ }; } -if ( getComputedStyle ) { - curCSS = function( elem, newName, name ) { +if ( document.defaultView && document.defaultView.getComputedStyle ) { + getComputedStyle = function( elem, newName, name ) { var ret, defaultView, computedStyle; name = name.replace( rupper, "-$1" ).toLowerCase(); @@ -5229,10 +5491,13 @@ return ret; }; +} -} else if ( document.documentElement.currentStyle ) { - curCSS = function( elem, name ) { - var left, rsLeft, ret = elem.currentStyle && elem.currentStyle[ name ], style = elem.style; +if ( document.documentElement.currentStyle ) { + currentStyle = function( elem, name ) { + var left, rsLeft, + ret = elem.currentStyle && elem.currentStyle[ name ], + style = elem.style; // From the awesome hack by Dean Edwards // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291 @@ -5254,10 +5519,12 @@ elem.runtimeStyle.left = rsLeft; } - return ret; + return ret === "" ? "auto" : ret; }; } +curCSS = getComputedStyle || currentStyle; + function getWH( elem, name, extra ) { var which = name === "width" ? cssWidth : cssHeight, val = name === "width" ? elem.offsetWidth : elem.offsetHeight; @@ -5284,7 +5551,8 @@ if ( jQuery.expr && jQuery.expr.filters ) { jQuery.expr.filters.hidden = function( elem ) { - var width = elem.offsetWidth, height = elem.offsetHeight; + var width = elem.offsetWidth, + height = elem.offsetHeight; return (width === 0 && height === 0) || (!jQuery.support.reliableHiddenOffsets && (elem.style.display || jQuery.css( elem, "display" )) === "none"); }; @@ -5301,7 +5569,7 @@ rscript = /<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi, rselectTextarea = /^(?:select|textarea)/i, rinput = /^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i, - rnoContent = /^(?:GET|HEAD|DELETE)$/, + rnoContent = /^(?:GET|HEAD)$/, rbracket = /\[\]$/, jsre = /\=\?(&|$)/, rquery = /\?/, @@ -5536,10 +5804,6 @@ var customJsonp = window[ jsonp ]; window[ jsonp ] = function( tmp ) { - data = tmp; - jQuery.handleSuccess( s, xhr, status, data ); - jQuery.handleComplete( s, xhr, status, data ); - if ( jQuery.isFunction( customJsonp ) ) { customJsonp( tmp ); @@ -5551,6 +5815,10 @@ delete window[ jsonp ]; } catch( jsonpError ) {} } + + data = tmp; + jQuery.handleSuccess( s, xhr, status, data ); + jQuery.handleComplete( s, xhr, status, data ); if ( head ) { head.removeChild( script ); @@ -5562,7 +5830,7 @@ s.cache = false; } - if ( s.cache === false && type === "GET" ) { + if ( s.cache === false && noContent ) { var ts = jQuery.now(); // try replacing _= if it is there @@ -5572,8 +5840,8 @@ s.url = ret + ((ret === s.url) ? (rquery.test(s.url) ? "&" : "?") + "_=" + ts : ""); } - // If data is available, append data to url for get requests - if ( s.data && type === "GET" ) { + // If data is available, append data to url for GET/HEAD requests + if ( s.data && noContent ) { s.url += (rquery.test(s.url) ? "&" : "?") + s.data; } @@ -5584,7 +5852,7 @@ // Matches an absolute URL, and saves the domain var parts = rurl.exec( s.url ), - remote = parts && (parts[1] && parts[1] !== location.protocol || parts[2] !== location.host); + remote = parts && (parts[1] && parts[1].toLowerCase() !== location.protocol || parts[2].toLowerCase() !== location.host); // If we're requesting a remote document // and trying to load JSON or Script with a GET @@ -5760,10 +6028,11 @@ try { var oldAbort = xhr.abort; xhr.abort = function() { - // xhr.abort in IE7 is not a native JS function - // and does not have a call property - if ( xhr && oldAbort.call ) { - oldAbort.call( xhr ); + if ( xhr ) { + // oldAbort has no call property in IE7 so + // just do it this way, which works in all + // browsers + Function.prototype.call.call( oldAbort, xhr ); } onreadystatechange( "abort" ); @@ -5803,11 +6072,12 @@ // Serialize an array of form elements or a set of // key/values into a query string param: function( a, traditional ) { - var s = [], add = function( key, value ) { - // If value is a function, invoke it and return its value - value = jQuery.isFunction(value) ? value() : value; - s[ s.length ] = encodeURIComponent(key) + "=" + encodeURIComponent(value); - }; + var s = [], + add = function( key, value ) { + // If value is a function, invoke it and return its value + value = jQuery.isFunction(value) ? value() : value; + s[ s.length ] = encodeURIComponent(key) + "=" + encodeURIComponent(value); + }; // Set traditional to true for jQuery <= 1.3.2 behavior. if ( traditional === undefined ) { @@ -6029,28 +6299,39 @@ jQuery.fn.extend({ show: function( speed, easing, callback ) { + var elem, display; + if ( speed || speed === 0 ) { return this.animate( genFx("show", 3), speed, easing, callback); + } else { for ( var i = 0, j = this.length; i < j; i++ ) { + elem = this[i]; + display = elem.style.display; + // Reset the inline display of this element to learn if it is // being hidden by cascaded rules or not - if ( !jQuery.data(this[i], "olddisplay") && this[i].style.display === "none" ) { - this[i].style.display = ""; + if ( !jQuery.data(elem, "olddisplay") && display === "none" ) { + display = elem.style.display = ""; } // Set elements which have been overridden with display: none // in a stylesheet to whatever the default browser style is // for such an element - if ( this[i].style.display === "" && jQuery.css( this[i], "display" ) === "none" ) { - jQuery.data(this[i], "olddisplay", defaultDisplay(this[i].nodeName)); + if ( display === "" && jQuery.css( elem, "display" ) === "none" ) { + jQuery.data(elem, "olddisplay", defaultDisplay(elem.nodeName)); } } // Set the display of most of the elements in a second loop // to avoid the constant reflow for ( i = 0; i < j; i++ ) { - this[i].style.display = jQuery.data(this[i], "olddisplay") || ""; + elem = this[i]; + display = elem.style.display; + + if ( display === "" || display === "none" ) { + elem.style.display = jQuery.data(elem, "olddisplay") || ""; + } } return this; @@ -6115,7 +6396,7 @@ } return this[ optall.queue === false ? "each" : "queue" ](function() { - // XXX ‘this’ does not always have a nodeName when running the + // XXX 'this' does not always have a nodeName when running the // test suite var opt = jQuery.extend({}, optall), p, @@ -6188,7 +6469,7 @@ } else { var parts = rfxnum.exec(val), - start = e.cur(true) || 0; + start = e.cur() || 0; if ( parts ) { var end = parseFloat( parts[2] ), @@ -6197,7 +6478,7 @@ // We need to compute starting value if ( unit !== "px" ) { jQuery.style( self, name, (end || 1) + unit); - start = ((end || 1) / e.cur(true)) * start; + start = ((end || 1) / e.cur()) * start; jQuery.style( self, name, start + unit); } @@ -6266,7 +6547,8 @@ slideUp: genFx("hide", 1), slideToggle: genFx("toggle", 1), fadeIn: { opacity: "show" }, - fadeOut: { opacity: "hide" } + fadeOut: { opacity: "hide" }, + fadeToggle: { opacity: "toggle" } }, function( name, props ) { jQuery.fn[ name ] = function( speed, easing, callback ) { return this.animate( props, speed, easing, callback ); @@ -6344,6 +6626,9 @@ // Start an animation from one number to another custom: function( from, to, unit ) { + var self = this, + fx = jQuery.fx; + this.startTime = jQuery.now(); this.start = from; this.end = to; @@ -6351,7 +6636,6 @@ this.now = this.start; this.pos = this.state = 0; - var self = this, fx = jQuery.fx; function t( gotoEnd ) { return self.step(gotoEnd); } @@ -6408,7 +6692,9 @@ if ( done ) { // Reset the overflow if ( this.options.overflow != null && !jQuery.support.shrinkWrapBlocks ) { - var elem = this.elem, options = this.options; + var elem = this.elem, + options = this.options; + jQuery.each( [ "", "X", "Y" ], function (index, value) { elem.style[ "overflow" + value ] = options.overflow[index]; } ); @@ -6587,11 +6873,16 @@ jQuery.offset.initialize(); - var offsetParent = elem.offsetParent, prevOffsetParent = elem, - doc = elem.ownerDocument, computedStyle, docElem = doc.documentElement, - body = doc.body, defaultView = doc.defaultView, + var computedStyle, + offsetParent = elem.offsetParent, + prevOffsetParent = elem, + doc = elem.ownerDocument, + docElem = doc.documentElement, + body = doc.body, + defaultView = doc.defaultView, prevComputedStyle = defaultView ? defaultView.getComputedStyle( elem, null ) : elem.currentStyle, - top = elem.offsetTop, left = elem.offsetLeft; + top = elem.offsetTop, + left = elem.offsetLeft; while ( (elem = elem.parentNode) && elem !== body && elem !== docElem ) { if ( jQuery.offset.supportsFixedPosition && prevComputedStyle.position === "fixed" ) { @@ -6673,7 +6964,8 @@ }, bodyOffset: function( body ) { - var top = body.offsetTop, left = body.offsetLeft; + var top = body.offsetTop, + left = body.offsetLeft; jQuery.offset.initialize(); @@ -6854,27 +7146,31 @@ }); } - return jQuery.isWindow( elem ) ? + if ( jQuery.isWindow( elem ) ) { // Everyone else use document.documentElement or document.body depending on Quirks vs Standards mode - elem.document.compatMode === "CSS1Compat" && elem.document.documentElement[ "client" + name ] || - elem.document.body[ "client" + name ] : + return elem.document.compatMode === "CSS1Compat" && elem.document.documentElement[ "client" + name ] || + elem.document.body[ "client" + name ]; - // Get document width or height - (elem.nodeType === 9) ? // is it a document - // Ei... [truncated message content] |
From: <jac...@us...> - 2010-11-13 20:34:15
|
Revision: 397 http://phpsysinfo.svn.sourceforge.net/phpsysinfo/?rev=397&view=rev Author: jacky672 Date: 2010-11-13 20:34:09 +0000 (Sat, 13 Nov 2010) Log Message: ----------- [FIX] SMART plugin doesn't display (JavaScript error) Modified Paths: -------------- trunk/ChangeLog trunk/plugins/SMART/js/SMART.js Modified: trunk/ChangeLog =================================================================== --- trunk/ChangeLog 2010-11-13 16:21:27 UTC (rev 396) +++ trunk/ChangeLog 2010-11-13 20:34:09 UTC (rev 397) @@ -1,6 +1,8 @@ $Id$ phpSysInfo 3.0.7 + - [FIX] SMART plugin doesn't display (JavaScript error) + - [UPD] Updated jQuery plugin to 1.4.4 - [UPD] Rename UUpdate plugin to UpdateNotifier Modified: trunk/plugins/SMART/js/SMART.js =================================================================== --- trunk/plugins/SMART/js/SMART.js 2010-11-13 16:21:27 UTC (rev 396) +++ trunk/plugins/SMART/js/SMART.js 2010-11-13 20:34:09 UTC (rev 397) @@ -152,10 +152,6 @@ var html = ""; $("#footer").before(buildBlock("SMART", 1, true)); - html += " <table id=\"Plugin_SMARTTable\" cellspacing=\"0\">\n"; - html += " </table>\n"; - $("#Plugin_SMART").append(html); - $("#Plugin_SMART").css("width", "915px"); smart_initTable(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jac...@us...> - 2010-11-15 18:44:37
|
Revision: 403 http://phpsysinfo.svn.sourceforge.net/phpsysinfo/?rev=403&view=rev Author: jacky672 Date: 2010-11-15 18:44:31 +0000 (Mon, 15 Nov 2010) Log Message: ----------- fix CpuSpeed display Modified Paths: -------------- trunk/js/phpSysInfo/phpsysinfo.js trunk/phpsysinfo.xslt Modified: trunk/js/phpSysInfo/phpsysinfo.js =================================================================== --- trunk/js/phpSysInfo/phpsysinfo.js 2010-11-15 08:44:26 UTC (rev 402) +++ trunk/js/phpSysInfo/phpsysinfo.js 2010-11-15 18:44:31 UTC (rev 403) @@ -598,8 +598,8 @@ html += "<tr><td colspan=\"2\">" + model + "</td></tr>\n"; cpucoreposition = tree.push(rootposition); - html += "<tr><td style=\"width:50%\">" + genlang(13, true) + ":</td><td>" + formatHertz(speed) + "</td></tr>\n"; if (!isNaN(speed)) { + html += "<tr><td style=\"width:50%\">" + genlang(13, true) + ":</td><td>" + formatHertz(speed) + "</td></tr>\n"; tree.push(cpucoreposition); } collapsed.push(cpucoreposition); Modified: trunk/phpsysinfo.xslt =================================================================== --- trunk/phpsysinfo.xslt 2010-11-15 08:44:26 UTC (rev 402) +++ trunk/phpsysinfo.xslt 2010-11-15 18:44:31 UTC (rev 403) @@ -236,11 +236,14 @@ </span> </td> <td> - <xsl:value-of - select="@CpuSpeed" /> - <span> - <xsl:text> Mhz</xsl:text> - </span> + <xsl:if + test="count(@CpuSpeed )>0"> + <xsl:value-of + select="@CpuSpeed" /> + <span> + <xsl:text> Mhz</xsl:text> + </span> + </xsl:if> </td> </tr> <tr class="odd"> @@ -252,7 +255,7 @@ </td> <td> <xsl:if - test="count(@BusSpeed )>0"> + test="count(@BusSpeed )>0"> <xsl:value-of select="@BusSpeed" /> <span> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jac...@us...> - 2010-11-16 11:46:07
|
Revision: 404 http://phpsysinfo.svn.sourceforge.net/phpsysinfo/?rev=404&view=rev Author: jacky672 Date: 2010-11-16 11:46:01 +0000 (Tue, 16 Nov 2010) Log Message: ----------- [ADD] Added a favicon Modified Paths: -------------- trunk/ChangeLog trunk/includes/output/class.Webpage.inc.php trunk/index.php Modified: trunk/ChangeLog =================================================================== --- trunk/ChangeLog 2010-11-15 18:44:31 UTC (rev 403) +++ trunk/ChangeLog 2010-11-16 11:46:01 UTC (rev 404) @@ -1,6 +1,8 @@ $Id$ phpSysInfo 3.0.7 + - [ADD] Added a favicon + - [FIX] SMART plugin doesn't display (JavaScript error) - [UPD] Updated jQuery plugin to 1.4.4 Modified: trunk/includes/output/class.Webpage.inc.php =================================================================== --- trunk/includes/output/class.Webpage.inc.php 2010-11-15 18:44:31 UTC (rev 403) +++ trunk/includes/output/class.Webpage.inc.php 2010-11-16 11:46:01 UTC (rev 404) @@ -136,6 +136,7 @@ echo " <meta http-equiv=\"Content-Script-Type\" content=\"text/javascript\" />\n"; echo " <meta name=\"Description\" content=\"phpSysInfo is a customizable PHP Script that parses /proc, and formats information nicely."; echo " It will display information about system facts like Uptime, CPU, Memory, PCI devices, SCSI devices, IDE devices, Network adapters, Disk usage, and more.\" />\n"; + echo " <link href=\"gfx/favicon.png\" rel=\"shortcut icon\" />"; echo " <link type=\"text/css\" rel=\"stylesheet\" href=\"./templates/".$this->_template.".css\" title=\"PSI_Template\"/>\n"; echo " <link type=\"text/css\" rel=\"stylesheet\" href=\"./templates/plugin/nyroModal.full.css\" />\n"; echo " <link type=\"text/css\" rel=\"stylesheet\" href=\"./templates/plugin/jquery.jgrowl.css\" />\n"; Modified: trunk/index.php =================================================================== --- trunk/index.php 2010-11-15 18:44:31 UTC (rev 403) +++ trunk/index.php 2010-11-16 11:46:01 UTC (rev 404) @@ -56,6 +56,7 @@ echo " <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n"; echo " <meta http-equiv=\"Content-Script-Type\" content=\"text/javascript\" />\n"; echo " <meta http-equiv=\"Content-Style-Type\" content=\"text/css\" />\n"; + echo " <link href=\"gfx/favicon.png\" rel=\"shortcut icon\" />"; echo " <link type=\"text/css\" rel=\"stylesheet\" href=\"./templates/two.css\" />\n"; echo " <title>Redirection</title>\n"; echo " <noscript>\n"; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jac...@us...> - 2010-12-02 08:12:51
|
Revision: 406 http://phpsysinfo.svn.sourceforge.net/phpsysinfo/?rev=406&view=rev Author: jacky672 Date: 2010-12-02 08:12:45 +0000 (Thu, 02 Dec 2010) Log Message: ----------- Optimize size of png and gif files Modified Paths: -------------- trunk/ChangeLog trunk/gfx/attention.png trunk/gfx/body.gif trunk/gfx/favicon.png trunk/gfx/images/Apple.png trunk/gfx/images/CentOS.png trunk/gfx/images/Cobalt.png trunk/gfx/images/Debian.png trunk/gfx/images/DragonFly.png trunk/gfx/images/Fedora.png trunk/gfx/images/FreeBSD.png trunk/gfx/images/Gentoo.png trunk/gfx/images/NetBSD.png trunk/gfx/images/OpenSolaris.png trunk/gfx/images/ReactOS.png trunk/gfx/images/Redhat.png trunk/gfx/images/Rubix.png trunk/gfx/images/SunOS.png trunk/gfx/images/Synology.png trunk/gfx/images/Trustix.png trunk/gfx/images/Ubuntu.png trunk/gfx/images/XandrOS.png trunk/gfx/images/free-eos.png trunk/gfx/images/hlfs.png trunk/gfx/images/lfs.png trunk/gfx/images/unknown.png trunk/gfx/images/vista.png trunk/gfx/images/xp.png trunk/gfx/next.gif trunk/gfx/prev.gif trunk/gfx/reload.png trunk/gfx/sort_asc.png trunk/gfx/sort_both.png trunk/gfx/sort_desc.png trunk/gfx/treeTable/tv-expandable-last.gif trunk/gfx/treeTable/tv-expandable.gif trunk/templates/two/gradient.png Modified: trunk/ChangeLog =================================================================== --- trunk/ChangeLog 2010-11-16 17:51:55 UTC (rev 405) +++ trunk/ChangeLog 2010-12-02 08:12:45 UTC (rev 406) @@ -1,5 +1,8 @@ $Id$ +phpSysInfo 3.0.8 + - [UPD] Optimize size of png and gif files + phpSysInfo 3.0.7 - [ADD] Added a favicon Modified: trunk/gfx/attention.png =================================================================== (Binary files differ) Modified: trunk/gfx/body.gif =================================================================== (Binary files differ) Modified: trunk/gfx/favicon.png =================================================================== (Binary files differ) Modified: trunk/gfx/images/Apple.png =================================================================== (Binary files differ) Modified: trunk/gfx/images/CentOS.png =================================================================== (Binary files differ) Modified: trunk/gfx/images/Cobalt.png =================================================================== (Binary files differ) Modified: trunk/gfx/images/Debian.png =================================================================== (Binary files differ) Modified: trunk/gfx/images/DragonFly.png =================================================================== (Binary files differ) Modified: trunk/gfx/images/Fedora.png =================================================================== (Binary files differ) Modified: trunk/gfx/images/FreeBSD.png =================================================================== (Binary files differ) Modified: trunk/gfx/images/Gentoo.png =================================================================== (Binary files differ) Modified: trunk/gfx/images/NetBSD.png =================================================================== (Binary files differ) Modified: trunk/gfx/images/OpenSolaris.png =================================================================== (Binary files differ) Modified: trunk/gfx/images/ReactOS.png =================================================================== (Binary files differ) Modified: trunk/gfx/images/Redhat.png =================================================================== (Binary files differ) Modified: trunk/gfx/images/Rubix.png =================================================================== (Binary files differ) Modified: trunk/gfx/images/SunOS.png =================================================================== (Binary files differ) Modified: trunk/gfx/images/Synology.png =================================================================== (Binary files differ) Modified: trunk/gfx/images/Trustix.png =================================================================== (Binary files differ) Modified: trunk/gfx/images/Ubuntu.png =================================================================== (Binary files differ) Modified: trunk/gfx/images/XandrOS.png =================================================================== (Binary files differ) Modified: trunk/gfx/images/free-eos.png =================================================================== (Binary files differ) Modified: trunk/gfx/images/hlfs.png =================================================================== (Binary files differ) Modified: trunk/gfx/images/lfs.png =================================================================== (Binary files differ) Modified: trunk/gfx/images/unknown.png =================================================================== (Binary files differ) Modified: trunk/gfx/images/vista.png =================================================================== (Binary files differ) Modified: trunk/gfx/images/xp.png =================================================================== (Binary files differ) Modified: trunk/gfx/next.gif =================================================================== (Binary files differ) Modified: trunk/gfx/prev.gif =================================================================== (Binary files differ) Modified: trunk/gfx/reload.png =================================================================== (Binary files differ) Modified: trunk/gfx/sort_asc.png =================================================================== (Binary files differ) Modified: trunk/gfx/sort_both.png =================================================================== (Binary files differ) Modified: trunk/gfx/sort_desc.png =================================================================== (Binary files differ) Modified: trunk/gfx/treeTable/tv-expandable-last.gif =================================================================== (Binary files differ) Modified: trunk/gfx/treeTable/tv-expandable.gif =================================================================== (Binary files differ) Modified: trunk/templates/two/gradient.png =================================================================== (Binary files differ) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jac...@us...> - 2010-12-11 18:42:41
|
Revision: 408 http://phpsysinfo.svn.sourceforge.net/phpsysinfo/?rev=408&view=rev Author: jacky672 Date: 2010-12-11 18:42:35 +0000 (Sat, 11 Dec 2010) Log Message: ----------- FIX: favicon for static mode Modified Paths: -------------- trunk/js/jQuery/README trunk/phpsysinfo.xslt Modified: trunk/js/jQuery/README =================================================================== --- trunk/js/jQuery/README 2010-12-03 14:27:17 UTC (rev 407) +++ trunk/js/jQuery/README 2010-12-11 18:42:35 UTC (rev 408) @@ -3,7 +3,7 @@ jquery.js --------- -VERSION : 1.4.3 +VERSION : 1.4.4 URL : http://jquery.com/ DESC : jQuery is a fast, concise, JavaScript Library that simplifies how you traverse HTML documents, handle events, perform animations, and add Ajax interactions to your web pages. Modified: trunk/phpsysinfo.xslt =================================================================== --- trunk/phpsysinfo.xslt 2010-12-03 14:27:17 UTC (rev 407) +++ trunk/phpsysinfo.xslt 2010-12-11 18:42:35 UTC (rev 408) @@ -13,13 +13,14 @@ <html> <head> <title> - <xsl:text>phpSysInfo STATIC</xsl:text> + <xsl:text>phpSysInfo</xsl:text> </title> <style type="text/css"> <xsl:comment> @import url("templates/phpsysinfo.css"); </xsl:comment> </style> + <link href="gfx/favicon.png" rel="shortcut icon" /> </head> <body> <xsl:for-each select="$XML"> @@ -28,7 +29,7 @@ <xsl:for-each select="Vitals"> <h1 id="title"> <span> - <xsl:text>System Information: </xsl:text> + <xsl:text>System information : </xsl:text> </span> <xsl:value-of select="@Hostname" /> <span> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <Jac...@us...> - 2010-12-28 22:32:59
|
Revision: 411 http://phpsysinfo.svn.sourceforge.net/phpsysinfo/?rev=411&view=rev Author: Jacky672 Date: 2010-12-28 22:32:52 +0000 (Tue, 28 Dec 2010) Log Message: ----------- [ADD] Added cpuinfo virtualization flags (vmx/smv) Modified Paths: -------------- trunk/ChangeLog trunk/includes/os/class.Linux.inc.php trunk/includes/to/device/class.CpuDevice.inc.php trunk/includes/xml/class.XML.inc.php trunk/js/phpSysInfo/phpsysinfo.js trunk/language/en.xml trunk/language/fr.xml Modified: trunk/ChangeLog =================================================================== --- trunk/ChangeLog 2010-12-20 16:07:03 UTC (rev 410) +++ trunk/ChangeLog 2010-12-28 22:32:52 UTC (rev 411) @@ -1,6 +1,8 @@ $Id$ phpSysInfo 3.0.8 + - [ADD] Added cpuinfo virtualization flags (vmx/smv) + - [UPD] Optimize size of png and gif files phpSysInfo 3.0.7 Modified: trunk/includes/os/class.Linux.inc.php =================================================================== --- trunk/includes/os/class.Linux.inc.php 2010-12-20 16:07:03 UTC (rev 410) +++ trunk/includes/os/class.Linux.inc.php 2010-12-28 22:32:52 UTC (rev 411) @@ -233,6 +233,14 @@ case 'cpu0bogo': $dev->setBogomips($arrBuff[1]); break; + case 'flags': + if(preg_match("/vmx/",$arrBuff[1])) { + $dev->setVirt("vmx"); + } + else if(preg_match("/smv/",$arrBuff[1])) { + $dev->setVirt("smv"); + } + break; } } } Modified: trunk/includes/to/device/class.CpuDevice.inc.php =================================================================== --- trunk/includes/to/device/class.CpuDevice.inc.php 2010-12-20 16:07:03 UTC (rev 410) +++ trunk/includes/to/device/class.CpuDevice.inc.php 2010-12-28 22:32:52 UTC (rev 411) @@ -45,6 +45,13 @@ * @var Integer */ private $_cache = null; + + /** + * virtualization, if available + * + * @var String + */ + private $_virt = null; /** * busspeed in hertz, if available @@ -153,6 +160,32 @@ } /** + * Returns $_virt. + * + * @see Cpu::$_virt + * + * @return String + */ + public function getVirt() + { + return $this->_virt; + } + + /** + * Sets $_virt. + * + * @param String $_virt + * + * @see Cpu::$_virt + * + * @return Void + */ + public function setVirt($virt) + { + $this->_virt = $virt; + } + + /** * Returns $_cpuSpeed. * * @see Cpu::$_cpuSpeed Modified: trunk/includes/xml/class.XML.inc.php =================================================================== --- trunk/includes/xml/class.XML.inc.php 2010-12-20 16:07:03 UTC (rev 410) +++ trunk/includes/xml/class.XML.inc.php 2010-12-28 22:32:52 UTC (rev 411) @@ -209,6 +209,9 @@ if ($oneCpu->getCache() !== null) { $tmp->addAttribute('Cache', $oneCpu->getCache()); } + if ($oneCpu->getVirt() !== null) { + $tmp->addAttribute('Virt', $oneCpu->getVirt()); + } if ($oneCpu->getBogomips() !== null) { $tmp->addAttribute('Bogomips', $oneCpu->getBogomips()); } Modified: trunk/js/phpSysInfo/phpsysinfo.js =================================================================== --- trunk/js/phpSysInfo/phpsysinfo.js 2010-12-20 16:07:03 UTC (rev 410) +++ trunk/js/phpSysInfo/phpsysinfo.js 2010-12-28 22:32:52 UTC (rev 411) @@ -586,16 +586,17 @@ function fillCpu(xml, tree, rootposition, collapsed) { var cpucount = 0, html = ""; $("Hardware CPU CpuCore", xml).each(function getCpuCore(cpuCoreId) { - var model = "", speed = 0, bus = 0, cache = 0, bogo = 0, temp = 0, load = 0, cpucoreposition = 0; + var model = "", speed = 0, bus = 0, cache = 0, bogo = 0, temp = 0, load = 0, cpucoreposition = 0, virt = ""; cpucount += 1; model = $(this).attr("Model"); speed = parseInt($(this).attr("CpuSpeed"), 10); cache = parseInt($(this).attr("Cache"), 10); + virt = $(this).attr("Virt"); bus = parseInt($(this).attr("BusSpeed"), 10); temp = parseInt($(this).attr("Cputemp"), 10); bogo = parseInt($(this).attr("Bogomips"), 10); load = parseInt($(this).attr("Load"), 10); - + html += "<tr><td colspan=\"2\">" + model + "</td></tr>\n"; cpucoreposition = tree.push(rootposition); if (!isNaN(speed)) { @@ -607,6 +608,10 @@ html += "<tr><td style=\"width:50%\">" + genlang(15, true) + ":</td><td>" + formatBytes(cache) + "</td></tr>\n"; tree.push(cpucoreposition); } + if (virt != undefined) { + html += "<tr><td style=\"width:50%\">" + genlang(94, true) + ":</td><td>" + virt + "</td></tr>\n"; + tree.push(cpucoreposition); + } if (!isNaN(bus)) { html += "<tr><td style=\"width:50%\">" + genlang(14, true) + ":</td><td>" + formatHertz(bus) + "</td></tr>\n"; tree.push(cpucoreposition); Modified: trunk/language/en.xml =================================================================== --- trunk/language/en.xml 2010-12-20 16:07:03 UTC (rev 410) +++ trunk/language/en.xml 2010-12-28 22:32:52 UTC (rev 411) @@ -285,4 +285,7 @@ <expression id="093" name="ghz"> <exp>GHz</exp> </expression> + <expression id="094" name="virtualization"> + <exp>Virtualization</exp> + </expression> </tns:translation> Modified: trunk/language/fr.xml =================================================================== --- trunk/language/fr.xml 2010-12-20 16:07:03 UTC (rev 410) +++ trunk/language/fr.xml 2010-12-28 22:32:52 UTC (rev 411) @@ -285,4 +285,7 @@ <expression id="093" name="ghz"> <exp>GHz</exp> </expression> + <expression id="094" name="virtualization"> + <exp>Virtualisation</exp> + </expression> </tns:translation> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <Jac...@us...> - 2010-12-29 09:46:00
|
Revision: 412 http://phpsysinfo.svn.sourceforge.net/phpsysinfo/?rev=412&view=rev Author: Jacky672 Date: 2010-12-29 09:45:53 +0000 (Wed, 29 Dec 2010) Log Message: ----------- Include a simple template engine to render HTML (thanks to iysaak) Modified Paths: -------------- trunk/ChangeLog trunk/config.php.new trunk/includes/output/class.Webpage.inc.php trunk/index.php Added Paths: ----------- trunk/includes/output/class.Template.inc.php trunk/templates/html/ trunk/templates/html/error_config.html trunk/templates/html/index_all.html trunk/templates/html/index_dynamic.html Modified: trunk/ChangeLog =================================================================== --- trunk/ChangeLog 2010-12-28 22:32:52 UTC (rev 411) +++ trunk/ChangeLog 2010-12-29 09:45:53 UTC (rev 412) @@ -4,6 +4,7 @@ - [ADD] Added cpuinfo virtualization flags (vmx/smv) - [UPD] Optimize size of png and gif files + - [UPD] Include a simple template engine to render HTML (thanks to iysaak) phpSysInfo 3.0.7 - [ADD] Added a favicon Modified: trunk/config.php.new =================================================================== --- trunk/config.php.new 2010-12-28 22:32:52 UTC (rev 411) +++ trunk/config.php.new 2010-12-29 09:45:53 UTC (rev 412) @@ -60,6 +60,14 @@ // ******************************** /** + * Define the default display mode + * auto: let user browser choose the mode + * dynamic: use javascript to refresh data + * static: static page (use metatag to reload page) + */ +define('PSI_DEFAULT_DISPLAY_MODE', 'auto'); + +/** * Define the default language */ define('PSI_DEFAULT_LANG', 'en'); Added: trunk/includes/output/class.Template.inc.php =================================================================== --- trunk/includes/output/class.Template.inc.php (rev 0) +++ trunk/includes/output/class.Template.inc.php 2010-12-29 09:45:53 UTC (rev 412) @@ -0,0 +1,94 @@ +<?php +/** + * basic output functions + * + * PHP version 5 + * + * @category PHP + * @package PSI_Output + * @author Damien Roth <iy...@us...> + * @copyright 2009 phpSysInfo + * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License + * @version SVN: $Id: class.Output.inc.php 315 2009-09-02 15:48:31Z bigmichi1 $ + * @link http://phpsysinfo.sourceforge.net + */ +/** + * basic output functions for all output formats + * + * @category PHP + * @package PSI_Output + * @author Damien Roth <iy...@us...> + * @copyright 2009 phpSysInfo + * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License + * @version Release: 3.0 + * @link http://phpsysinfo.sourceforge.net + */ +class Template +{ + /** + * Vars used in the template + * + * @Array + */ + private $_vars; + + /** + * Template file + * + * @String + */ + private $_file; + + /** + * Constructor + * + * @param String $file the template file name + */ + public function __construct($file=null) { + $this->_file = $file; + $this->_vars = array(); + } + + + /** + * Set a template variable. + * + * @param string variable name + * @param string variable value + */ + function set($name, $value) { + $this->_vars[$name] = is_object($value) ? $value->fetch() : $value; + } + + + + /** + * Open, parse, and return the template file. + * + * @param string $file + * + * @return string + */ + function fetch($file=null) { + if(!$file) { + $file = $this->_file; + } + + // Extract the vars to local namespace + extract($this->_vars); + + // Start output buffering + ob_start(); + + include(APP_ROOT.$file); + + // Get the contents of the buffer + $contents = ob_get_contents(); + + // End buffering and discard + ob_end_clean(); + + return $contents; + } +} +?> Property changes on: trunk/includes/output/class.Template.inc.php ___________________________________________________________________ Added: svn + propset Added: svn:mime-type + text/plain Added: svn:eol-style + native Modified: trunk/includes/output/class.Webpage.inc.php =================================================================== --- trunk/includes/output/class.Webpage.inc.php 2010-12-28 22:32:52 UTC (rev 411) +++ trunk/includes/output/class.Webpage.inc.php 2010-12-29 09:45:53 UTC (rev 412) @@ -127,180 +127,14 @@ { $this->_checkTemplateLanguage(); - echo "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n"; - echo " \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n"; - echo "<html xmlns=\"http://www.w3.org/1999/xhtml\">\n"; - echo " <head>\n"; - echo " <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n"; - echo " <meta http-equiv=\"Content-Style-Type\" content=\"text/css\" />\n"; - echo " <meta http-equiv=\"Content-Script-Type\" content=\"text/javascript\" />\n"; - echo " <meta name=\"Description\" content=\"phpSysInfo is a customizable PHP Script that parses /proc, and formats information nicely."; - echo " It will display information about system facts like Uptime, CPU, Memory, PCI devices, SCSI devices, IDE devices, Network adapters, Disk usage, and more.\" />\n"; - echo " <link href=\"gfx/favicon.png\" rel=\"shortcut icon\" />"; - echo " <link type=\"text/css\" rel=\"stylesheet\" href=\"./templates/".$this->_template.".css\" title=\"PSI_Template\"/>\n"; - echo " <link type=\"text/css\" rel=\"stylesheet\" href=\"./templates/plugin/nyroModal.full.css\" />\n"; - echo " <link type=\"text/css\" rel=\"stylesheet\" href=\"./templates/plugin/jquery.jgrowl.css\" />\n"; - echo " <link type=\"text/css\" rel=\"stylesheet\" href=\"./templates/plugin/jquery.dataTables.css\" />\n"; - echo " <link type=\"text/css\" rel=\"stylesheet\" href=\"./templates/plugin/jquery.treeTable.css\" />\n"; - echo " <script type=\"text/JavaScript\" src=\"./js.php?name=jquery\"></script>\n"; - echo " <script type=\"text/JavaScript\" src=\"./js.php?name=jquery.dataTables\"></script>\n"; - echo " <script type=\"text/JavaScript\" src=\"./js.php?name=jquery.nyroModal\"></script>\n"; - echo " <script type=\"text/JavaScript\" src=\"./js.php?name=jquery.jgrowl\"></script>\n"; - echo " <script type=\"text/JavaScript\" src=\"./js.php?name=jquery.timers\"></script>\n"; - echo " <script type=\"text/JavaScript\" src=\"./js.php?name=jquery.treeTable\"></script>\n"; - echo " <script type=\"text/JavaScript\" src=\"./js.php?name=phpsysinfo\"></script>\n"; - foreach (CommonFunctions::getPlugins() as $plugin) { - echo " <script type=\"text/JavaScript\" src=\"./js.php?plugin=".trim($plugin)."\"></script>\n"; - } - echo " <title>phpSysInfo ".CommonFunctions::PSI_VERSION."</title>\n"; - echo " </head>\n"; - echo " <body>\n"; - echo " <div id=\"loader\">\n"; - echo " <h1>Loading... please wait!</h1>\n"; - echo " </div>\n"; - echo " <div id=\"errors\" style=\"display: none; width: 940px\">\n"; - echo " <div id=\"errorlist\">\n"; - echo " <h2>Oh, I'm sorry. Something seems to be wrong.</h2>\n"; - echo " </div>\n"; - echo " </div>\n"; - echo " <div id=\"container\" style=\"display: none;\">\n"; - echo " <h1>\n"; - echo " <a href=\"#errors\" class=\"nyroModal\">\n"; - echo " <img id=\"warn\" style=\"vertical-align: middle; display:none; border:0px;\" src=\"./gfx/attention.png\" alt=\"warning\" />\n"; - echo " </a>\n"; - echo " <span id=\"title\">\n"; - echo " <span id=\"lang_001\">System information</span>\n"; - echo " : <span id=\"s_hostname_title\"></span>\n"; - echo " (<span id=\"s_ip_title\"></span>)\n"; - echo " </span>\n"; - echo " </h1>\n"; - echo " <div id=\"select\">\n"; - echo " <span id=\"lang_044\">Template</span>\n"; - echo " <select id=\"template\" name=\"template\">\n"; - foreach ($this->_templates as $template) { - $selected = ""; - if ($this->_template === $template) { - $selected = " selected=\"selected\""; - } - echo " <option value=\"".$template."\"".$selected.">".$template."</option>\n"; - } - echo " </select>\n"; - echo " <span id=\"lang_045\">Language</span>\n"; - echo " <select id=\"lang\" name=\"lang\">\n"; - foreach ($this->_languages as $language) { - $selected = ""; - if ($this->_language === $language) { - $selected = " selected=\"selected\""; - } - echo " <option value=\"".$language."\"".$selected.">".$language."</option>\n"; - } - echo " </select>\n"; - echo " </div>\n"; - echo " <div id=\"vitals\">\n"; - echo " <h2><span id=\"lang_002\">System vitals</span></h2>\n"; - echo " <table class=\"stripeMe\" id=\"vitalsTable\" cellspacing=\"0\">\n"; - echo " <tr>\n"; - echo " <td style=\"width:160px;\"><span id=\"lang_003\">Hostname</span></td>\n"; - echo " <td><span id=\"s_hostname\"></span></td>\n"; - echo " </tr>\n"; - echo " <tr>\n"; - echo " <td style=\"width:160px;\"><span id=\"lang_004\">Listening IP</span></td>\n"; - echo " <td><span id=\"s_ip\"></span></td>\n"; - echo " </tr>\n"; - echo " <tr>\n"; - echo " <td style=\"width:160px;\"><span id=\"lang_005\">Kernel Version</span></td>\n"; - echo " <td><span id=\"s_kernel\"></span></td>\n"; - echo " </tr>\n"; - echo " <tr>\n"; - echo " <td style=\"width:160px;\"><span id=\"lang_006\">Distro Name</span></td>\n"; - echo " <td><span id=\"s_distro\"></span></td>\n"; - echo " </tr>\n"; - echo " <tr>\n"; - echo " <td style=\"width:160px;\"><span id=\"lang_007\">Uptime</span></td>\n"; - echo " <td><span id=\"s_uptime\"></span></td>\n"; - echo " </tr>\n"; - echo " <tr>\n"; - echo " <td style=\"width:160px;\"><span id=\"lang_008\">Current Users</span></td>\n"; - echo " <td><span id=\"s_users\"></span></td>\n"; - echo " </tr>\n"; - echo " <tr>\n"; - echo " <td style=\"width:160px;\"><span id=\"lang_009\">Load Averages</span></td>\n"; - echo " <td id=\"s_loadavg\"></td>\n"; - echo " </tr>\n"; - echo " </table>\n"; - echo " </div>\n"; - echo " <div id=\"hardware\">\n"; - echo " </div>\n"; - echo " <div id=\"memory\">\n"; - echo " </div>\n"; - echo " <div id=\"filesystem\">\n"; - echo " </div>\n"; - echo " <div id=\"network\">\n"; - echo " <h2><span id=\"lang_021\">Network Usage</span></h2>\n"; - echo " <table class=\"stripeMe\" id=\"networkTable\" cellspacing=\"0\">\n"; - echo " <thead>\n"; - echo " <tr>\n"; - echo " <th><span id=\"lang_022\">Interface</span></th>\n"; - echo " <th class=\"right\" style=\"width:60px;\"><span id=\"lang_023\">Recieved</span></th>\n"; - echo " <th class=\"right\" style=\"width:60px;\"><span id=\"lang_024\">Transfered</span></th>\n"; - echo " <th class=\"right\" style=\"width:60px;\"><span id=\"lang_025\">Error/Drops</span></th>\n"; - echo " </tr>\n"; - echo " </thead>\n"; - echo " <tbody id=\"tbody_network\">\n"; - echo " </tbody>\n"; - echo " </table>\n"; - echo " </div>\n"; - echo " <div id=\"voltage\" style=\"display: none;\">\n"; - echo " <h2><span id=\"lang_052\">Voltage</span></h2>\n"; - echo " <table class=\"stripeMe\" id=\"voltageTable\" cellspacing=\"0\">\n"; - echo " <thead>\n"; - echo " <tr>\n"; - echo " <th><span id=\"lang_059\">Label</span></th>\n"; - echo " <th class=\"right\"><span id=\"lang_052\">Voltage</span></th>\n"; - echo " <th class=\"right\" style=\"width: 80px;\"><span id=\"lang_055\">Min</span></th>\n"; - echo " <th class=\"right\" style=\"width: 80px;\"><span id=\"lang_056\">Max</span></th>\n"; - echo " </tr>\n"; - echo " </thead>\n"; - echo " <tbody>\n"; - echo " </tbody>\n"; - echo " </table>\n"; - echo " </div>\n"; - echo " <div id=\"temp\" style=\"display: none;\">\n"; - echo " <h2><span id=\"lang_051\">Temperature</span></h2>\n"; - echo " <table class=\"stripeMe\" id=\"tempTable\" cellspacing=\"0\">\n"; - echo " <thead>\n"; - echo " <tr>\n"; - echo " <th><span id=\"lang_059\">Label</span></th>\n"; - echo " <th class=\"right\" style=\"width: 80px;\"><span id=\"lang_054\">Value</span></th>\n"; - echo " <th class=\"right\" style=\"width: 80px;\"><span id=\"lang_058\">Limit</span></th>\n"; - echo " </tr>\n"; - echo " </thead>\n"; - echo " <tbody>\n"; - echo " </tbody>\n"; - echo " </table>\n"; - echo " </div>\n"; - echo " <div id=\"fan\" style=\"display: none;\">\n"; - echo " <h2><span id=\"lang_053\">Fan</span></h2>\n"; - echo " <table class=\"stripeMe\" id=\"fanTable\" cellspacing=\"0\">\n"; - echo " <thead>\n"; - echo " <tr>\n"; - echo " <th><span id=\"lang_059\">Label</span></th>\n"; - echo " <th class=\"right\" style=\"width: 80px;\"><span id=\"lang_054\">Value</span></th>\n"; - echo " <th class=\"right\" style=\"width: 80px;\"><span id=\"lang_055\">Min</span></th>\n"; - echo " </tr>\n"; - echo " </thead>\n"; - echo " <tbody>\n"; - echo " </tbody>\n"; - echo " </table>\n"; - echo " </div>\n"; - echo " <div id=\"ups\" style=\"display: none;\">\n"; - echo " </div>\n"; - echo " <div id=\"footer\">\n"; - echo " <span id=\"lang_047\">Generated by</span> <a href=\"http://phpsysinfo.sourceforge.net/\">phpSysInfo - <span id=\"version\"></span></a>\n"; - echo " </div>\n"; - echo " </div>\n"; - echo " </body>\n"; - echo "</html>\n"; + $tpl = new Template("/templates/html/index_dynamic.html"); + + $tpl->set("template", $this->_template); + $tpl->set("templates", $this->_templates); + $tpl->set("language", $this->_language); + $tpl->set("languages", $this->_languages); + + echo $tpl->fetch(); } } ?> Modified: trunk/index.php =================================================================== --- trunk/index.php 2010-12-28 22:32:52 UTC (rev 411) +++ trunk/index.php 2010-12-29 09:45:53 UTC (rev 412) @@ -32,9 +32,19 @@ } require_once APP_ROOT.'/includes/autoloader.inc.php'; + +// Load configuration +if (!is_readable(APP_ROOT.'/config.php')) { + $tpl = new Template("/templates/html/error_config.html"); + echo $tpl->fetch(); + die(); +} +else { + include_once APP_ROOT.'/config.php'; +} // redirect to page with and without javascript -$display = isset($_GET['disp']) ? $_GET['disp'] : ""; +$display = isset($_GET['disp']) ? $_GET['disp'] : PSI_DEFAULT_DISPLAY_MODE; switch ($display) { case "static": $webpage = new WebpageXSLT(); @@ -49,47 +59,8 @@ $webpage->run(); break; default: - echo "<?xml version=\"1.0\" encoding=\"utf-8\">\n"; - echo "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n"; - echo "<html xmlns=\"http://www.w3.org/1999/xhtml\">\n"; - echo " <head>\n"; - echo " <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n"; - echo " <meta http-equiv=\"Content-Script-Type\" content=\"text/javascript\" />\n"; - echo " <meta http-equiv=\"Content-Style-Type\" content=\"text/css\" />\n"; - echo " <link href=\"gfx/favicon.png\" rel=\"shortcut icon\" />"; - echo " <link type=\"text/css\" rel=\"stylesheet\" href=\"./templates/two.css\" />\n"; - echo " <title>Redirection</title>\n"; - echo " <noscript>\n"; - echo " <meta http-equiv=\"refresh\" content=\"2; URL=index.php?disp=static\" />\n"; - echo " </noscript>\n"; - echo " <script type=\"text/JavaScript\" language=\"JavaScript\">\n"; - echo " <!--\n"; - echo " var sTargetURL = \"index.php?disp=dynamic\";\n"; - echo " function doRedirect() {\n"; - echo " setTimeout( \"window.location.href = sTargetURL\", 2*1000 );\n"; - echo " }\n"; - echo " //-->\n"; - echo " </script>\n"; - echo " <script type=\"text/JavaScript\" language=\"JavaScript1.1\">\n"; - echo " <!--\n"; - echo " function doRedirect() {\n"; - echo " window.location.replace( sTargetURL );\n"; - echo " }\n"; - echo " doRedirect();\n"; - echo " //-->\n"; - echo " </script>\n"; - echo " </head>\n"; - echo " <body onload=\"doRedirect()\">\n"; - echo " <h1>REDIRECTING ... </h1>\n"; - echo " <div style=\"position:absolute;top:150px;text-align:center;width:95%;\">\n"; - echo " <p style=\"margin:12pt;\">Loading <a href=\"index.php?disp=static\">redirection target</a></p>\n"; - echo " <p style=\"margin:12pt;\">In approx. 2 seconds the redirection target page should load.<br/>\n"; - echo " If it doesn't please select the link above.</p>\n"; - echo " <p style=\"margin:12pt;\">Generated by <a href=\"http://phpsysinfo.sourceforge.net/\">phpSysInfo - ".CommonFunctions::PSI_VERSION."</a></p>\n"; - echo " </div>\n"; - echo " </body>\n"; - echo "</html>\n"; + $tpl = new Template("/templates/html/index_all.html"); + echo $tpl->fetch(); break; } -die(); ?> Added: trunk/templates/html/error_config.html =================================================================== --- trunk/templates/html/error_config.html (rev 0) +++ trunk/templates/html/error_config.html 2010-12-29 09:45:53 UTC (rev 412) @@ -0,0 +1,22 @@ +<?="<?xml version=\"1.0\" encoding=\"utf-8\">";?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> + <meta http-equiv="Content-Script-Type" content="text/javascript" /> + <meta http-equiv="Content-Style-Type" content="text/css" /> + <link rel="shortcut icon" href="gfx/favicon.png" /> + <link type="text/css" rel="stylesheet" href="./templates/phpsysinfo.css" /> + <title>phpSysInfo - Error</title> + <noscript> + <meta http-equiv="refresh" content="2; URL=index.php?disp=static" /> + </noscript> +</head> +<body onload="doRedirect()"> +<h1>phpSysInfo - Error</h1> +<div style="position:absolute;top:150px;text-align:center;width:95%;"> + <p style="margin:12pt;"><strong>config.php</strong> does not exist or is not readable by the webserver in the phpsysinfo directory.</p> + <p style="margin:12pt;">Generated by <a href="http://phpsysinfo.sourceforge.net/">phpSysInfo - <?=CommonFunctions::PSI_VERSION?></a></p> +</div> +</body> +</html> Property changes on: trunk/templates/html/error_config.html ___________________________________________________________________ Added: svn + propset Added: svn:mime-type + text/plain Added: svn:eol-style + native Added: trunk/templates/html/index_all.html =================================================================== --- trunk/templates/html/index_all.html (rev 0) +++ trunk/templates/html/index_all.html 2010-12-29 09:45:53 UTC (rev 412) @@ -0,0 +1,40 @@ +<?="<?xml version=\"1.0\" encoding=\"utf-8\">";?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> + <meta http-equiv="Content-Script-Type" content="text/javascript" /> + <meta http-equiv="Content-Style-Type" content="text/css" /> + <link rel="shortcut icon" href="gfx/favicon.png" /> + <link type="text/css" rel="stylesheet" href="./templates/phpsysinfo.css" /> + <title>phpSysInfo - Redirection</title> + <noscript> + <meta http-equiv="refresh" content="2; URL=index.php?disp=static" /> + </noscript> + <script type="text/JavaScript" language="JavaScript"> + <!-- + var sTargetURL = "index.php?disp=dynamic"; + function doRedirect() { + setTimeout( "window.location.href = sTargetURL", 2*1000 ); + } + //--> + </script> + <script type="text/JavaScript" language="JavaScript1.1"> + <!-- + function doRedirect() { + window.location.replace( sTargetURL ); + } + doRedirect(); + //--> + </script> +</head> +<body onload="doRedirect()"> +<h1>REDIRECTING ... </h1> +<div style="position:absolute;top:150px;text-align:center;width:95%;"> + <p style="margin:12pt;">Loading <a href="index.php?disp=static">redirection target</a></p> + <p style="margin:12pt;">In approx. 2 seconds the redirection target page should load.<br/> + If it doesn't please select the link above.</p> + <p style="margin:12pt;">Generated by <a href="http://phpsysinfo.sourceforge.net/">phpSysInfo - <?=CommonFunctions::PSI_VERSION?></a></p> +</div> +</body> +</html> Property changes on: trunk/templates/html/index_all.html ___________________________________________________________________ Added: svn + propset Added: svn:mime-type + text/plain Added: svn:eol-style + native Added: trunk/templates/html/index_dynamic.html =================================================================== --- trunk/templates/html/index_dynamic.html (rev 0) +++ trunk/templates/html/index_dynamic.html 2010-12-29 09:45:53 UTC (rev 412) @@ -0,0 +1,187 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> + <head> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> + <meta http-equiv="Content-Style-Type" content="text/css" /> + <meta http-equiv="Content-Script-Type" content="text/javascript" /> + <meta name="Description" content="phpSysInfo is a customizable PHP Script that parses /proc, and formats information nicely."; + It will display information about system facts like Uptime, CPU, Memory, PCI devices, SCSI devices, IDE devices, Network adapters, Disk usage, and more." /> + <noscript> + <meta http-equiv="refresh" content="2; URL=index.php?disp=static" /> + </noscript> + <link rel="shortcut icon" href="gfx/favicon.png" /> + <link type="text/css" rel="stylesheet" href="./templates/<?=$template?>.css" title="PSI_Template"/> + <link type="text/css" rel="stylesheet" href="./templates/plugin/nyroModal.full.css" /> + <link type="text/css" rel="stylesheet" href="./templates/plugin/jquery.jgrowl.css" /> + <link type="text/css" rel="stylesheet" href="./templates/plugin/jquery.dataTables.css" /> + <link type="text/css" rel="stylesheet" href="./templates/plugin/jquery.treeTable.css" /> + <script type="text/JavaScript" src="./js.php?name=jquery"></script> + <script type="text/JavaScript" src="./js.php?name=jquery.dataTables"></script> + <script type="text/JavaScript" src="./js.php?name=jquery.nyroModal"></script> + <script type="text/JavaScript" src="./js.php?name=jquery.jgrowl"></script> + <script type="text/JavaScript" src="./js.php?name=jquery.timers"></script> + <script type="text/JavaScript" src="./js.php?name=jquery.treeTable"></script> + <script type="text/JavaScript" src="./js.php?name=phpsysinfo"></script> +<?php foreach (CommonFunctions::getPlugins() as $plugin) : ?> + <script type="text/JavaScript" src="./js.php?plugin=<?=$plugin?>"></script> +<?php endforeach; ?> + <title>phpSysInfo <?=CommonFunctions::PSI_VERSION?></title> + </head> + <body> + <div id="loader"> + <h1>Loading... please wait!</h1> + <div id="container2"> + <noscript> + <p>Your navigator does not support JavaScript (or JavaScript is not activated).</p> + <p>In approximatively 2 seconds you will be redirected to the static version of phpSysInfo.</p> + <p> </p> + <p><a href="index.php?disp=static">Click here to switch to the static version</a></p> + </noscript> + </div> + </div> + <div id="errors" style="display: none; width: 940px"> + <div id="errorlist"> + <h2>Oh, I'm sorry. Something seems to be wrong.</h2> + </div> + </div> + <div id="container" style="display: none;"> + <h1> + <a href="#errors" class="nyroModal"> + <img id="warn" style="vertical-align: middle; display:none; border:0px;" src="./gfx/attention.png" alt="warning" /> + </a> + <span id="title"> + <span id="lang_001">System information</span> + : <span id="s_hostname_title"></span> + (<span id="s_ip_title"></span>) + </span> + </h1> + <div id="select"> + <span id="lang_044">Template</span> + <select id="template" name="template"> +<?php foreach ($templates as $t) : + $selected = ""; + if ($template === $t) { + $selected = " selected=\"selected\""; + } +?> + <option value="<?=$t?>"<?=$selected?>><?=$t?></option> +<?php endforeach; ?> + </select> + <span id="lang_045">Language</span> + <select id="lang" name="lang"> +<?php foreach ($languages as $l) : + $selected = ""; + if ($language === $l) { + $selected = " selected=\"selected\""; + } +?> + <option value="<?=$l?>"<?=$selected?>><?=$l?></option> +<?php endforeach; ?> + </select> + </div> + <div id="vitals"> + <h2><span id="lang_002">System vitals</span></h2> + <table class="stripeMe" id="vitalsTable" cellspacing="0"> + <tr> + <td style="width:160px;"><span id="lang_003">Hostname</span></td> + <td><span id="s_hostname"></span></td> + </tr> + <tr> + <td style="width:160px;"><span id="lang_004">Listening IP</span></td> + <td><span id="s_ip"></span></td> + </tr> + <tr> + <td style="width:160px;"><span id="lang_005">Kernel Version</span></td> + <td><span id="s_kernel"></span></td> + </tr> + <tr> + <td style="width:160px;"><span id="lang_006">Distro Name</span></td> + <td><span id="s_distro"></span></td> + </tr> + <tr> + <td style="width:160px;"><span id="lang_007">Uptime</span></td> + <td><span id="s_uptime"></span></td> + </tr> + <tr> + <td style="width:160px;"><span id="lang_008">Current Users</span></td> + <td><span id="s_users"></span></td> + </tr> + <tr> + <td style="width:160px;"><span id="lang_009">Load Averages</span></td> + <td id="s_loadavg"></td> + </tr> + </table> + </div> + <div id="hardware"> + </div> + <div id="memory"> + </div> + <div id="filesystem"> + </div> + <div id="network"> + <h2><span id="lang_021">Network Usage</span></h2> + <table class="stripeMe" id="networkTable" cellspacing="0"> + <thead> + <tr> + <th><span id="lang_022">Interface</span></th> + <th class="right" style="width:60px;"><span id="lang_023">Recieved</span></th> + <th class="right" style="width:60px;"><span id="lang_024">Transfered</span></th> + <th class="right" style="width:60px;"><span id="lang_025">Error/Drops</span></th> + </tr> + </thead> + <tbody id="tbody_network"> + </tbody> + </table> + </div> + <div id="voltage" style="display: none;"> + <h2><span id="lang_052">Voltage</span></h2> + <table class="stripeMe" id="voltageTable" cellspacing="0"> + <thead> + <tr> + <th><span id="lang_059">Label</span></th> + <th class="right"><span id="lang_052">Voltage</span></th> + <th class="right" style="width: 80px;"><span id="lang_055">Min</span></th> + <th class="right" style="width: 80px;"><span id="lang_056">Max</span></th> + </tr> + </thead> + <tbody> + </tbody> + </table> + </div> + <div id="temp" style="display: none;"> + <h2><span id="lang_051">Temperature</span></h2> + <table class="stripeMe" id="tempTable" cellspacing="0"> + <thead> + <tr> + <th><span id="lang_059">Label</span></th> + <th class="right" style="width: 80px;"><span id="lang_054">Value</span></th> + <th class="right" style="width: 80px;"><span id="lang_058">Limit</span></th> + </tr> + </thead> + <tbody> + </tbody> + </table> + </div> + <div id="fan" style="display: none;"> + <h2><span id="lang_053">Fan</span></h2> + <table class="stripeMe" id="fanTable" cellspacing="0"> + <thead> + <tr> + <th><span id="lang_059">Label</span></th> + <th class="right" style="width: 80px;"><span id="lang_054">Value</span></th> + <th class="right" style="width: 80px;"><span id="lang_055">Min</span></th> + </tr> + </thead> + <tbody> + </tbody> + </table> + </div> + <div id="ups" style="display: none;"> + </div> + <div id="footer"> + <span id="lang_047">Generated by</span> <a href="http://phpsysinfo.sourceforge.net/">phpSysInfo - <span id="version"></span></a> + </div> + </div> + </body> +</html> Property changes on: trunk/templates/html/index_dynamic.html ___________________________________________________________________ Added: svn + propset Added: svn:mime-type + text/plain Added: svn:eol-style + native This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jac...@us...> - 2010-12-29 09:54:23
|
Revision: 413 http://phpsysinfo.svn.sourceforge.net/phpsysinfo/?rev=413&view=rev Author: jacky672 Date: 2010-12-29 09:54:16 +0000 (Wed, 29 Dec 2010) Log Message: ----------- [UPD] Updated jQuery plugin DataTables to 1.7.5 Modified Paths: -------------- trunk/ChangeLog trunk/js/jQuery/README trunk/js/jQuery/jquery.dataTables.js Modified: trunk/ChangeLog =================================================================== --- trunk/ChangeLog 2010-12-29 09:45:53 UTC (rev 412) +++ trunk/ChangeLog 2010-12-29 09:54:16 UTC (rev 413) @@ -5,6 +5,7 @@ - [UPD] Optimize size of png and gif files - [UPD] Include a simple template engine to render HTML (thanks to iysaak) + - [UPD] Updated jQuery plugin DataTables to 1.7.5 phpSysInfo 3.0.7 - [ADD] Added a favicon Modified: trunk/js/jQuery/README =================================================================== --- trunk/js/jQuery/README 2010-12-29 09:45:53 UTC (rev 412) +++ trunk/js/jQuery/README 2010-12-29 09:54:16 UTC (rev 413) @@ -12,7 +12,7 @@ jquery.dataTables.js -------------------- -VERSION : 1.7.4 +VERSION : 1.7.5 URL : http://plugins.jquery.com/project/DataTables DESC : dataTables is a jQuery plugin for turning a standard HTML table with THEAD and TBODY tags into a sortable table without page refreshes. Modified: trunk/js/jQuery/jquery.dataTables.js =================================================================== --- trunk/js/jQuery/jquery.dataTables.js 2010-12-29 09:45:53 UTC (rev 412) +++ trunk/js/jQuery/jquery.dataTables.js 2010-12-29 09:54:16 UTC (rev 413) @@ -1,6 +1,6 @@ /* * File: jquery.dataTables.js - * Version: 1.7.4 + * Version: 1.7.5 * Description: Paginate, search and sort HTML tables * Author: Allan Jardine (www.sprymedia.co.uk) * Created: 28/3/2008 @@ -26,7 +26,7 @@ * building the dynamic multi-column sort functions. */ /*jslint evil: true, undef: true, browser: true */ -/*globals $, jQuery,_fnExternApiFunc,_fnInitalise,_fnLanguageProcess,_fnAddColumn,_fnColumnOptions,_fnAddData,_fnGatherData,_fnDrawHead,_fnDraw,_fnReDraw,_fnAjaxUpdate,_fnAjaxUpdateDraw,_fnAddOptionsHtml,_fnFeatureHtmlTable,_fnScrollDraw,_fnAjustColumnSizing,_fnFeatureHtmlFilter,_fnFilterComplete,_fnFilterCustom,_fnFilterColumn,_fnFilter,_fnBuildSearchArray,_fnBuildSearchRow,_fnFilterCreateSearch,_fnDataToSearch,_fnSort,_fnSortAttachListener,_fnSortingClasses,_fnFeatureHtmlPaginate,_fnPageChange,_fnFeatureHtmlInfo,_fnUpdateInfo,_fnFeatureHtmlLength,_fnFeatureHtmlProcessing,_fnProcessingDisplay,_fnVisibleToColumnIndex,_fnColumnIndexToVisible,_fnNodeToDataIndex,_fnVisbleColumns,_fnCalculateEnd,_fnConvertToWidth,_fnCalculateColumnWidths,_fnScrollingWidthAdjust,_fnGetWidestNode,_fnGetMaxLenString,_fnStringToCss,_fnArrayCmp,_fnDetectType,_fnSettingsFromNode,_fnGetDataMaster,_fnGetTrNodes,_fnGetTdNodes,_fnEscapeRegex,_fnDeleteIndex,_fnReOrderIndex,_fnColumnOrdering,_fnLog,_fnClearTable,_fnSaveState,_fnLoadState,_fnCreateCookie,_fnReadCookie,_fnGetUniqueThs,_fnScrollBarWidth,_fnApplyToChildren,_fnMap*/ +/*globals $, jQuery,_fnExternApiFunc,_fnInitalise,_fnInitComplete,_fnLanguageProcess,_fnAddColumn,_fnColumnOptions,_fnAddData,_fnGatherData,_fnDrawHead,_fnDraw,_fnReDraw,_fnAjaxUpdate,_fnAjaxUpdateDraw,_fnAddOptionsHtml,_fnFeatureHtmlTable,_fnScrollDraw,_fnAjustColumnSizing,_fnFeatureHtmlFilter,_fnFilterComplete,_fnFilterCustom,_fnFilterColumn,_fnFilter,_fnBuildSearchArray,_fnBuildSearchRow,_fnFilterCreateSearch,_fnDataToSearch,_fnSort,_fnSortAttachListener,_fnSortingClasses,_fnFeatureHtmlPaginate,_fnPageChange,_fnFeatureHtmlInfo,_fnUpdateInfo,_fnFeatureHtmlLength,_fnFeatureHtmlProcessing,_fnProcessingDisplay,_fnVisibleToColumnIndex,_fnColumnIndexToVisible,_fnNodeToDataIndex,_fnVisbleColumns,_fnCalculateEnd,_fnConvertToWidth,_fnCalculateColumnWidths,_fnScrollingWidthAdjust,_fnGetWidestNode,_fnGetMaxLenString,_fnStringToCss,_fnArrayCmp,_fnDetectType,_fnSettingsFromNode,_fnGetDataMaster,_fnGetTrNodes,_fnGetTdNodes,_fnEscapeRegex,_fnDeleteIndex,_fnReOrderIndex,_fnColumnOrdering,_fnLog,_fnClearTable,_fnSaveState,_fnLoadState,_fnCreateCookie,_fnReadCookie,_fnGetUniqueThs,_fnScrollBarWidth,_fnApplyToChildren,_fnMap*/ (function($, window, document) { /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * @@ -68,7 +68,7 @@ * Notes: Allowed format is a.b.c.d.e where: * a:int, b:int, c:int, d:string(dev|beta), e:int. d and e are optional */ - _oExt.sVersion = "1.7.4"; + _oExt.sVersion = "1.7.5"; /* * Variable: sErrMode @@ -929,7 +929,8 @@ "bCollapse": false, "bInfinite": false, "iLoadGap": 100, - "iBarWidth": 0 + "iBarWidth": 0, + "bAutoCss": true }; /* @@ -1946,7 +1947,7 @@ var oSettings = _fnSettingsFromNode( this[_oExt.iApiIndex] ); var i, iLen; var iColumns = oSettings.aoColumns.length; - var nTd, anTds; + var nTd, anTds, nCell, anTrs, jqChildren; /* No point in doing anything if we are requesting what is already true */ if ( oSettings.aoColumns[iCol].bVisible == bShow ) @@ -1980,9 +1981,20 @@ if ( iInsert >= _fnVisbleColumns( oSettings ) ) { nTrHead.appendChild( anTheadTh[iCol] ); + anTrs = $('>tr', oSettings.nTHead); + for ( i=1, iLen=anTrs.length ; i<iLen ; i++ ) + { + anTrs[i].appendChild( oSettings.aoColumns[iCol].anThExtra[i-1] ); + } + if ( nTrFoot ) { nTrFoot.appendChild( anTfootTh[iCol] ); + anTrs = $('>tr', oSettings.nTFoot); + for ( i=1, iLen=anTrs.length ; i<iLen ; i++ ) + { + anTrs[i].appendChild( oSettings.aoColumns[iCol].anTfExtra[i-1] ); + } } for ( i=0, iLen=oSettings.aoData.length ; i<iLen ; i++ ) @@ -2005,9 +2017,22 @@ } nTrHead.insertBefore( anTheadTh[iCol], nTrHead.getElementsByTagName('th')[iBefore] ); + anTrs = $('>tr', oSettings.nTHead); + for ( i=1, iLen=anTrs.length ; i<iLen ; i++ ) + { + jqChildren = $(anTrs[i]).children(); + anTrs[i].insertBefore( oSettings.aoColumns[iCol].anThExtra[i-1], jqChildren[iBefore] ); + } + if ( nTrFoot ) { nTrFoot.insertBefore( anTfootTh[iCol], nTrFoot.getElementsByTagName('th')[iBefore] ); + anTrs = $('>tr', oSettings.nTFoot); + for ( i=1, iLen=anTrs.length ; i<iLen ; i++ ) + { + jqChildren = $(anTrs[i]).children(); + anTrs[i].insertBefore( oSettings.aoColumns[iCol].anTfExtra[i-1], jqChildren[iBefore] ); + } } anTds = _fnGetTdNodes( oSettings ); @@ -2025,9 +2050,20 @@ { /* Remove a column from display */ nTrHead.removeChild( anTheadTh[iCol] ); + for ( i=0, iLen=oSettings.aoColumns[iCol].anThExtra.length ; i<iLen ; i++ ) + { + nCell = oSettings.aoColumns[iCol].anThExtra[i]; + nCell.parentNode.removeChild( nCell ); + } + if ( nTrFoot ) { nTrFoot.removeChild( anTfootTh[iCol] ); + for ( i=0, iLen=oSettings.aoColumns[iCol].anTfExtra.length ; i<iLen ; i++ ) + { + nCell = oSettings.aoColumns[iCol].anTfExtra[i]; + nCell.parentNode.removeChild( nCell ); + } } anTds = _fnGetTdNodes( oSettings ); @@ -2186,12 +2222,18 @@ */ this.fnAdjustColumnSizing = function ( bRedraw ) { - _fnAjustColumnSizing( _fnSettingsFromNode( this[_oExt.iApiIndex] ) ); + var oSettings = _fnSettingsFromNode(this[_oExt.iApiIndex]); + _fnAjustColumnSizing( oSettings ); if ( typeof bRedraw == 'undefined' || bRedraw ) { this.fnDraw( false ); } + else if ( oSettings.oScroll.sX !== "" || oSettings.oScroll.sY !== "" ) + { + /* If not redrawing, but scrolling, we want to apply the new column sizes anyway */ + this.oApi._fnScrollDraw(oSettings); + } }; /* @@ -2283,8 +2325,9 @@ } } - /* If there is default sorting required - let's do it. The sort function - * will do the drawing for us. Otherwise we draw the table + /* If there is default sorting required - let's do it. The sort function will do the + * drawing for us. Otherwise we draw the table regardless of the Ajax source - this allows + * the table to look initialised for Ajax sourcing data (show 'loading' message possibly) */ if ( oSettings.oFeatures.bSort ) { @@ -2297,7 +2340,7 @@ _fnDraw( oSettings ); } - /* if there is an ajax source */ + /* if there is an ajax source load the data */ if ( oSettings.sAjaxSource !== null && !oSettings.oFeatures.bServerSide ) { oSettings.fnServerData.call( oSettings.oInstance, oSettings.sAjaxSource, [], function(json) { @@ -2324,23 +2367,42 @@ } _fnProcessingDisplay( oSettings, false ); - - /* Run the init callback if there is one - done here for ajax source for json obj */ - if ( typeof oSettings.fnInitComplete == 'function' ) - { - oSettings.fnInitComplete.call( oSettings.oInstance, oSettings, json ); - } + _fnInitComplete( oSettings, json ); } ); return; } + /* Server-side processing initialisation complete is done at the end of _fnDraw */ if ( !oSettings.oFeatures.bServerSide ) { _fnProcessingDisplay( oSettings, false ); + _fnInitComplete( oSettings ); } } /* + * Function: _fnInitalise + * Purpose: Draw the table for the first time, adding all required features + * Returns: - + * Inputs: object:oSettings - dataTables settings object + */ + function _fnInitComplete ( oSettings, json ) + { + oSettings._bInitComplete = true; + if ( typeof oSettings.fnInitComplete == 'function' ) + { + if ( typeof json != 'undefined' ) + { + oSettings.fnInitComplete.call( oSettings.oInstance, oSettings, json ); + } + else + { + oSettings.fnInitComplete.call( oSettings.oInstance, oSettings ); + } + } + } + + /* * Function: _fnLanguageProcess * Purpose: Copy language variables from remote object to a local one * Returns: - @@ -2411,7 +2473,9 @@ "iDataSort": oSettings.aoColumns.length-1, "sSortDataType": 'std', "nTh": nTh ? nTh : document.createElement('th'), - "nTf": null + "nTf": null, + "anThExtra": [], + "anTfExtra": [] }; var iCol = oSettings.aoColumns.length-1; @@ -2791,8 +2855,10 @@ function _fnDrawHead( oSettings ) { var i, nTh, iLen, j, jLen; + var anTr = oSettings.nTHead.getElementsByTagName('tr'); var iThs = oSettings.nTHead.getElementsByTagName('th').length; var iCorrector = 0; + var jqChildren; /* If there is a header in place - then use it - otherwise it's going to get nuked... */ if ( iThs !== 0 ) @@ -2802,6 +2868,22 @@ { nTh = oSettings.aoColumns[i].nTh; + if ( oSettings.aoColumns[i].sClass !== null ) + { + $(nTh).addClass( oSettings.aoColumns[i].sClass ); + } + + /* Cache and remove (if needed) any extra elements for this column in the header */ + for ( j=1, jLen=anTr.length ; j<jLen ; j++ ) + { + jqChildren = $(anTr[j]).children(); + oSettings.aoColumns[i].anThExtra.push( jqChildren[i-iCorrector] ); + if ( !oSettings.aoColumns[i].bVisible ) + { + anTr[j].removeChild( jqChildren[i-iCorrector] ); + } + } + if ( oSettings.aoColumns[i].bVisible ) { /* Set the title of the column if it is user defined (not what was auto detected) */ @@ -2827,13 +2909,13 @@ nTh = oSettings.aoColumns[i].nTh; nTh.innerHTML = oSettings.aoColumns[i].sTitle; + if ( oSettings.aoColumns[i].sClass !== null ) + { + $(nTh).addClass( oSettings.aoColumns[i].sClass ); + } + if ( oSettings.aoColumns[i].bVisible ) { - if ( oSettings.aoColumns[i].sClass !== null ) - { - nTh.className = oSettings.aoColumns[i].sClass; - } - nTr.appendChild( nTh ); } } @@ -2884,7 +2966,9 @@ if ( oSettings.nTFoot !== null ) { iCorrector = 0; - var nTfs = oSettings.nTFoot.getElementsByTagName('th'); + anTr = oSettings.nTFoot.getElementsByTagName('tr'); + var nTfs = anTr[0].getElementsByTagName('th'); + for ( i=0, iLen=nTfs.length ; i<iLen ; i++ ) { if ( typeof oSettings.aoColumns[i] != 'undefined' ) @@ -2896,6 +2980,17 @@ oSettings.aoColumns[i].nTf.className += " "+oSettings.oClasses.sFooterTH; } + /* Deal with any extra elements for this column from the footer */ + for ( j=1, jLen=anTr.length ; j<jLen ; j++ ) + { + jqChildren = $(anTr[j]).children(); + oSettings.aoColumns[i].anTfExtra.push( jqChildren[i-iCorrector] ); + if ( !oSettings.aoColumns[i].bVisible ) + { + anTr[j].removeChild( jqChildren[i-iCorrector] ); + } + } + if ( !oSettings.aoColumns[i].bVisible ) { nTfs[i-iCorrector].parentNode.removeChild( nTfs[i-iCorrector] ); @@ -2940,7 +3035,7 @@ } /* If we are dealing with Ajax - do it here */ - if ( oSettings.oFeatures.bServerSide && + if ( !oSettings.bDestroying && oSettings.oFeatures.bServerSide && !_fnAjaxUpdate( oSettings ) ) { return; @@ -3090,7 +3185,7 @@ } /* Call all required callback functions for the end of a draw */ - for ( i=0, iLen=oSettings.aoDrawCallback.length ; i<iLen ; i++ ) + for ( i=oSettings.aoDrawCallback.length-1 ; i>=0 ; i-- ) { oSettings.aoDrawCallback[i].fn.call( oSettings.oInstance, oSettings ); } @@ -3099,16 +3194,13 @@ oSettings.bSorted = false; oSettings.bFiltered = false; oSettings.bDrawing = false; - - /* On first draw, initilaisation is now complete */ - if ( typeof oSettings._bInitComplete == "undefined" ) + + if ( oSettings.oFeatures.bServerSide ) { - oSettings._bInitComplete = true; - - if ( typeof oSettings.fnInitComplete == 'function' && - (oSettings.oFeatures.bServerSide || oSettings.sAjaxSource === null) ) + _fnProcessingDisplay( oSettings, false ); + if ( typeof oSettings._bInitComplete == 'undefined' ) { - oSettings.fnInitComplete.call( oSettings.oInstance, oSettings ); + _fnInitComplete( oSettings ); } } } @@ -3162,14 +3254,6 @@ aoData.push( { "name": "iDisplayLength", "value": oSettings.oFeatures.bPaginate !== false ? oSettings._iDisplayLength : -1 } ); - /* Column names */ - var aNames = []; - for ( i=0 ; i<iColumns ; i++ ) - { - aNames.push( oSettings.aoColumns[i].sName ); - } - aoData.push( { "name": "sNames", "value": aNames.join(',') } ); - /* Filtering */ if ( oSettings.oFeatures.bFilter !== false ) { @@ -3528,10 +3612,14 @@ nScrollFoot.className = oClasses.sScrollFoot; nScrollFootInner.className = oClasses.sScrollFootInner; - nScrollHead.style.overflow = "hidden"; - nScrollHead.style.position = "relative"; - nScrollFoot.style.overflow = "hidden"; - nScrollBody.style.overflow = "auto"; + if ( oSettings.oScroll.bAutoCss ) + { + nScrollHead.style.overflow = "hidden"; + nScrollHead.style.position = "relative"; + nScrollFoot.style.overflow = "hidden"; + nScrollBody.style.overflow = "auto"; + } + nScrollHead.style.border = "0"; nScrollFoot.style.border = "0"; nScrollHeadInner.style.width = "150%"; /* will be overwritten */ @@ -4257,12 +4345,14 @@ */ function _fnSort ( oSettings, bApplyClasses ) { - var aaSort = []; - var oSort = _oExt.oSort; - var aoData = oSettings.aoData; - var iDataSort; - var iDataType; - var i, j, jLen; + var + iDataSort, iDataType, + i, iLen, j, jLen, + aaSort = [], + aiOrig = [], + oSort = _oExt.oSort, + aoData = oSettings.aoData, + aoColumns = oSettings.aoColumns; /* No sorting required if server-side or no sorting array */ if ( !oSettings.oFeatures.bServerSide && @@ -4295,109 +4385,51 @@ } } - /* DataTables offers two different methods for doing the 2D array sorting over multiple - * columns. The first is to construct a function dynamically, and then evaluate and run - * the function, while the second has no need for evalulation, but is a little bit slower. - * This is used for environments which do not allow eval() for code execuation such as AIR + /* Create a value - key array of the current row positions such that we can use their + * current position during the sort, if values match, in order to perform stable sorting */ - if ( !window.runtime ) + for ( i=0, iLen=oSettings.aiDisplayMaster.length ; i<iLen ; i++ ) { - /* Dynamically created sorting function. Based on the information that we have, we can - * create a sorting function as if it were specifically written for this sort. Here we - * want to build a function something like (for two column sorting): - * fnLocalSorting = function(a,b){ - * var iTest; - * iTest = oSort['string-asc']('data11', 'data12'); - * if (iTest === 0) - * iTest = oSort['numeric-desc']('data21', 'data22'); - * if (iTest === 0) - * return oSort['numeric-desc'](1,2); - * return iTest; - * } - * So basically we have a test for each column, and if that column matches, test the - * next one. If all columns match, then we use a numeric sort on the position the two - * row have in the original data array in order to provide a stable sort. In order to - * get the position for the numeric stablisation, we need to take a clone of the current - * display array and then get the position of the sorting value from that during the - * sort. - * - * Note that for use with the Closure compiler, we need to be very careful how we deal - * with this eval. Closure will rename all of our local variables, resutling in breakage - * if the variables in the eval don't also reflect this. For this reason, we need to use - * 'this' to store the variables we need in the eval, so we can control them. A little - * nasty, but well worth it for using Closure. - */ - this.ClosureDataTables = { - "fn": function(){}, - "data": aoData, - "sort": _oExt.oSort, - "master": oSettings.aiDisplayMaster.slice() - }; - var sDynamicSort = "this.ClosureDataTables.fn = function(a,b){"+ - "var iTest, oSort=this.ClosureDataTables.sort, "+ - "aoData=this.ClosureDataTables.data, "+ - "aiOrig=this.ClosureDataTables.master;"; - - for ( i=0 ; i<aaSort.length-1 ; i++ ) + aiOrig[ oSettings.aiDisplayMaster[i] ] = i; + } + + /* Do the sort - here we want multi-column sorting based on a given data source (column) + * and sorting function (from oSort) in a certain direction. It's reasonably complex to + * follow on it's own, but this is what we want (example two column sorting): + * fnLocalSorting = function(a,b){ + * var iTest; + * iTest = oSort['string-asc']('data11', 'data12'); + * if (iTest !== 0) + * return iTest; + * iTest = oSort['numeric-desc']('data21', 'data22'); + * if (iTest !== 0) + * return iTest; + * return oSort['numeric-asc']( aiOrig[a], aiOrig[b] ); + * } + * Basically we have a test for each sorting column, if the data in that column is equal, + * test the next column. If all columns match, then we use a numeric sort on the row + * positions in the original data array to provide a stable sort. + */ + var iSortLen = aaSort.length; + oSettings.aiDisplayMaster.sort( function ( a, b ) { + var iTest; + for ( i=0 ; i<iSortLen ; i++ ) { - iDataSort = oSettings.aoColumns[ aaSort[i][0] ].iDataSort; - iDataType = oSettings.aoColumns[ iDataSort ].sType; - sDynamicSort += "iTest = oSort['"+iDataType+"-"+aaSort[i][1]+"']"+ - "( aoData[a]._aData["+iDataSort+"], aoData[b]._aData["+iDataSort+"] ); if ( iTest === 0 )"; - } - - if ( aaSort.length > 0 ) - { - iDataSort = oSettings.aoColumns[ aaSort[aaSort.length-1][0] ].iDataSort; - iDataType = oSettings.aoColumns[ iDataSort ].sType; - sDynamicSort += "iTest = oSort['"+iDataType+"-"+aaSort[aaSort.length-1][1]+"']"+ - "( aoData[a]._aData["+iDataSort+"], aoData[b]._aData["+iDataSort+"] );"+ - "if (iTest===0) "+ - "return oSort['numeric-asc'](jQuery.inArray(a,aiOrig), jQuery.inArray(b,aiOrig)); "+ - "return iTest;}"; + iDataSort = aoColumns[ aaSort[i][0] ].iDataSort; + iDataType = aoColumns[ iDataSort ].sType; + iTest = oSort[ iDataType+"-"+aaSort[i][1] ]( + aoData[a]._aData[iDataSort], + aoData[b]._aData[iDataSort] + ); - /* The eval has to be done to a variable for IE */ - eval( sDynamicSort ); - oSettings.aiDisplayMaster.sort( this.ClosureDataTables.fn ); + if ( iTest !== 0 ) + { + return iTest; + } } - this.ClosureDataTables = undefined; - } - else - { - /* - * Non-eval() sorting (AIR and other environments which doesn't allow code in eval() - * Note that for reasonable sized data sets this method is around 1.5 times slower than - * the eval above (hence why it is not used all the time). Oddly enough, it is ever so - * slightly faster for very small sets (presumably the eval has overhead). - * Single column (1083 records) - eval: 32mS AIR: 38mS - * Two columns (1083 records) - eval: 55mS AIR: 66mS - */ - /* Build a cached array so the sort doesn't have to process this stuff on every call */ - var aAirSort = []; - var iLen = aaSort.length; - for ( i=0 ; i<iLen ; i++ ) - { - iDataSort = oSettings.aoColumns[ aaSort[i][0] ].iDataSort; - aAirSort.push( [ - iDataSort, - oSettings.aoColumns[ iDataSort ].sType+'-'+aaSort[i][1] - ] ); - } - - oSettings.aiDisplayMaster.sort( function (a,b) { - var iTest; - for ( var i=0 ; i<iLen ; i++ ) - { - iTest = oSort[ aAirSort[i][1] ]( aoData[a]._aData[aAirSort[i][0]], aoData[b]._aData[aAirSort[i][0]] ); - if ( iTest !== 0 ) - { - return iTest; - } - } - return 0; - } ); - } + return oSort['numeric-asc']( aiOrig[a], aiOrig[b] ); + } ); } /* Alter the sorting classes to take account of the changes */ @@ -6156,7 +6188,7 @@ { for ( j=0, jLen=aLayout[i].length ; j<jLen ; j++ ) { - if ( typeof aLayout[i][j] == 'object' ) + if ( typeof aLayout[i][j] == 'object' && typeof aReturn[j] == 'undefined' ) { aReturn[j] = aLayout[i][j]; } @@ -6442,6 +6474,7 @@ _fnMap( oSettings.oScroll, oInit, "bScrollCollapse", "bCollapse" ); _fnMap( oSettings.oScroll, oInit, "bScrollInfinite", "bInfinite" ); _fnMap( oSettings.oScroll, oInit, "iScrollLoadGap", "iLoadGap" ); + _fnMap( oSettings.oScroll, oInit, "bScrollAutoCss", "bAutoCss" ); _fnMap( oSettings, oInit, "asStripClasses" ); _fnMap( oSettings, oInit, "fnRowCallback" ); _fnMap( oSettings, oInit, "fnHeaderCallback" ); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jac...@us...> - 2011-01-11 10:00:48
|
Revision: 415 http://phpsysinfo.svn.sourceforge.net/phpsysinfo/?rev=415&view=rev Author: jacky672 Date: 2011-01-11 10:00:42 +0000 (Tue, 11 Jan 2011) Log Message: ----------- [FIX] JavaScript error in UpdateNotifier plugin Modified Paths: -------------- trunk/ChangeLog trunk/plugins/UpdateNotifier/js/UpdateNotifier.js Modified: trunk/ChangeLog =================================================================== --- trunk/ChangeLog 2010-12-29 10:07:51 UTC (rev 414) +++ trunk/ChangeLog 2011-01-11 10:00:42 UTC (rev 415) @@ -7,6 +7,8 @@ - [UPD] Include a simple template engine to render HTML (thanks to iysaak) - [UPD] Updated jQuery plugin DataTables to 1.7.5 + - [FIX] JavaScript error in UpdateNotifier plugin + phpSysInfo 3.0.7 - [ADD] Added a favicon Modified: trunk/plugins/UpdateNotifier/js/UpdateNotifier.js =================================================================== --- trunk/plugins/UpdateNotifier/js/UpdateNotifier.js 2010-12-29 10:07:51 UTC (rev 414) +++ trunk/plugins/UpdateNotifier/js/UpdateNotifier.js 2011-01-11 10:00:42 UTC (rev 415) @@ -38,10 +38,10 @@ //UpdateNotifier_table.fnAddData([security]); html = " <tr>\n"; - html += " <td>" + packages + " " + genlang(3, true, "updatenotifier") + "</td>\n"; + html += " <td>" + packages + " " + genlang(3, true, "UpdateNotifier") + "</td>\n"; html += " </tr>\n"; html += " <tr>\n"; - html += " <td>" + security + " " + genlang(4, true, "updatenotifier") + "</td>\n"; + html += " <td>" + security + " " + genlang(4, true, "UpdateNotifier") + "</td>\n"; html += " </tr>\n"; $("#Plugin_UpdateNotifier tbody").append(html); @@ -59,7 +59,7 @@ html += "<table id=\"Plugin_UpdateNotifierTable\" cellspacing=\"0\">\n"; html += " <thead>\n"; html += " <tr>\n"; - html += " <th>" + genlang(2, true, "updatenotifier") + "</th>\n"; + html += " <th>" + genlang(2, true, "UpdateNotifier") + "</th>\n"; html += " </tr>\n"; html += " </thead>\n"; html += " <tbody>\n"; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jac...@us...> - 2011-01-13 19:26:05
|
Revision: 416 http://phpsysinfo.svn.sourceforge.net/phpsysinfo/?rev=416&view=rev Author: jacky672 Date: 2011-01-13 19:25:59 +0000 (Thu, 13 Jan 2011) Log Message: ----------- [FIX] Fix UPS info display if multiple UPSes present and configured (thanks to namiltd) Modified Paths: -------------- trunk/ChangeLog trunk/includes/ups/class.Apcupsd.inc.php Modified: trunk/ChangeLog =================================================================== --- trunk/ChangeLog 2011-01-11 10:00:42 UTC (rev 415) +++ trunk/ChangeLog 2011-01-13 19:25:59 UTC (rev 416) @@ -7,6 +7,7 @@ - [UPD] Include a simple template engine to render HTML (thanks to iysaak) - [UPD] Updated jQuery plugin DataTables to 1.7.5 + - [FIX] Fix UPS info display if multiple UPSes present and configured (thanks to namiltd) - [FIX] JavaScript error in UpdateNotifier plugin phpSysInfo 3.0.7 Modified: trunk/includes/ups/class.Apcupsd.inc.php =================================================================== --- trunk/includes/ups/class.Apcupsd.inc.php 2011-01-11 10:00:42 UTC (rev 415) +++ trunk/includes/ups/class.Apcupsd.inc.php 2011-01-13 19:25:59 UTC (rev 416) @@ -55,9 +55,10 @@ */ private function _info() { - $dev = new UPSDevice(); - foreach ($this->_output as $ups) { + + $dev = new UPSDevice(); + // General info if (preg_match('/^UPSNAME\s*:\s*(.*)$/m', $ups, $data)) { $dev->setName(trim($data[1])); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jac...@us...> - 2011-01-16 10:54:24
|
Revision: 418 http://phpsysinfo.svn.sourceforge.net/phpsysinfo/?rev=418&view=rev Author: jacky672 Date: 2011-01-16 10:54:18 +0000 (Sun, 16 Jan 2011) Log Message: ----------- update README and update pl.xml file Modified Paths: -------------- trunk/README trunk/language/pl.xml Modified: trunk/README =================================================================== --- trunk/README 2011-01-14 12:57:16 UTC (rev 417) +++ trunk/README 2011-01-16 10:54:18 UTC (rev 418) @@ -3,7 +3,7 @@ Copyright (c), 1999-2008, Uriah Welcome (pre...@us...) Copyright (c), 1999-2009, Michael Cramer (big...@us...) Copyright (c), 2007-2008, Audun Larsen (xq...@us...) -Copyright (c), 2007-2010, Erkan Valentin (jac...@us...) +Copyright (c), 2007-2011, Erkan Valentin (jac...@us...) CURRENT TESTED PLATFORMS ------------------------ Modified: trunk/language/pl.xml =================================================================== --- trunk/language/pl.xml 2011-01-14 12:57:16 UTC (rev 417) +++ trunk/language/pl.xml 2011-01-16 10:54:18 UTC (rev 418) @@ -285,4 +285,7 @@ <expression id="093" name="ghz"> <exp>GHz</exp> </expression> + <expression id="094" name="virtualization"> + <exp>Wirtualizacja</exp> + </expression> </tns:translation> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jac...@us...> - 2011-01-18 08:29:02
|
Revision: 419 http://phpsysinfo.svn.sourceforge.net/phpsysinfo/?rev=419&view=rev Author: jacky672 Date: 2011-01-18 08:28:56 +0000 (Tue, 18 Jan 2011) Log Message: ----------- [FIX] Fix the refresh break when cookie is empty with JQTreeTable plugin Modified Paths: -------------- trunk/ChangeLog trunk/js/phpSysInfo/phpsysinfo.js Modified: trunk/ChangeLog =================================================================== --- trunk/ChangeLog 2011-01-16 10:54:18 UTC (rev 418) +++ trunk/ChangeLog 2011-01-18 08:28:56 UTC (rev 419) @@ -3,13 +3,14 @@ phpSysInfo 3.0.8 - [ADD] Added cpuinfo virtualization flags (vmx/smv) + - [FIX] Fix the refresh break when cookie is empty with JQTreeTable plugin + - [FIX] Fix UPS info display if multiple UPSes present and configured (thanks to namiltd) + - [FIX] Fix JavaScript error in UpdateNotifier plugin + - [UPD] Optimize size of png and gif files - [UPD] Include a simple template engine to render HTML (thanks to iysaak) - [UPD] Updated jQuery plugin DataTables to 1.7.5 - - [FIX] Fix UPS info display if multiple UPSes present and configured (thanks to namiltd) - - [FIX] JavaScript error in UpdateNotifier plugin - phpSysInfo 3.0.7 - [ADD] Added a favicon Modified: trunk/js/phpSysInfo/phpsysinfo.js =================================================================== --- trunk/js/phpSysInfo/phpsysinfo.js 2011-01-16 10:54:18 UTC (rev 418) +++ trunk/js/phpSysInfo/phpsysinfo.js 2011-01-18 08:28:56 UTC (rev 419) @@ -714,7 +714,7 @@ column: 0, striped: true, highlight: false, - state: true + state: false }); } @@ -835,7 +835,7 @@ column: 0, striped: true, highlight: false, - state: true + state: false }); } @@ -1061,7 +1061,7 @@ column: 0, striped: true, highlight: false, - state: true + state: false }); $("#ups").show(); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jac...@us...> - 2011-01-21 12:42:31
|
Revision: 422 http://phpsysinfo.svn.sourceforge.net/phpsysinfo/?rev=422&view=rev Author: jacky672 Date: 2011-01-21 12:42:25 +0000 (Fri, 21 Jan 2011) Log Message: ----------- [FIX] Fix the long load time with many CPU core on Linux Modified Paths: -------------- trunk/ChangeLog trunk/includes/os/class.Linux.inc.php Modified: trunk/ChangeLog =================================================================== --- trunk/ChangeLog 2011-01-19 08:16:03 UTC (rev 421) +++ trunk/ChangeLog 2011-01-21 12:42:25 UTC (rev 422) @@ -1,5 +1,8 @@ $Id$ +phpSysInfo 3.0.9 + - [FIX] Fix the long load time with many CPU core on Linux + phpSysInfo 3.0.8 - [ADD] Added cpuinfo virtualization flags (vmx/smv) Modified: trunk/includes/os/class.Linux.inc.php =================================================================== --- trunk/includes/os/class.Linux.inc.php 2011-01-19 08:16:03 UTC (rev 421) +++ trunk/includes/os/class.Linux.inc.php 2011-01-21 12:42:25 UTC (rev 422) @@ -170,7 +170,9 @@ } } // we need a second value, wait 1 second befor getting (< 1 second no good value will occour) - sleep(1); + if(PSI_LOAD_BAR) { + sleep(1); + } if (CommonFunctions::rfts('/proc/stat', $buf)) { $lines = preg_split("/\n/", $buf, -1, PREG_SPLIT_NO_EMPTY); foreach ($lines as $line) { @@ -209,7 +211,9 @@ if (count($arrBuff) == 2) { switch (strtolower($arrBuff[0])) { case 'processor': - $dev->setLoad($this->_parseProcStat('cpu'.trim($arrBuff[1]))); + if(PSI_LOAD_BAR) { + $dev->setLoad($this->_parseProcStat('cpu'.trim($arrBuff[1]))); + } break; case 'model name': case 'cpu': This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jac...@us...> - 2011-02-06 17:38:27
|
Revision: 436 http://phpsysinfo.svn.sourceforge.net/phpsysinfo/?rev=436&view=rev Author: jacky672 Date: 2011-02-06 17:38:21 +0000 (Sun, 06 Feb 2011) Log Message: ----------- update sc.xml and tw.xml (thanks to Frisa) Modified Paths: -------------- trunk/ChangeLog trunk/language/sc.xml trunk/language/tw.xml Modified: trunk/ChangeLog =================================================================== --- trunk/ChangeLog 2011-02-06 11:06:53 UTC (rev 435) +++ trunk/ChangeLog 2011-02-06 17:38:21 UTC (rev 436) @@ -7,7 +7,7 @@ - [FIX] Fix UTF8 conversion (iconv function) - [UPD] Updated jQuery plugin to 1.5 - - [UPD] Language files (da, pl) + - [UPD] Language files (da, pl, sc, tw) phpSysInfo 3.0.9 - [FIX] Fix the long load time with many CPU core on Linux Modified: trunk/language/sc.xml =================================================================== --- trunk/language/sc.xml 2011-02-06 11:06:53 UTC (rev 435) +++ trunk/language/sc.xml 2011-02-06 17:38:21 UTC (rev 436) @@ -286,4 +286,7 @@ <expression id="093" name="ghz"> <exp>GHz</exp> </expression> + <expression id="094" name="virtualization"> + <exp>虚拟化</exp> + </expression> </tns:translation> Modified: trunk/language/tw.xml =================================================================== --- trunk/language/tw.xml 2011-02-06 11:06:53 UTC (rev 435) +++ trunk/language/tw.xml 2011-02-06 17:38:21 UTC (rev 436) @@ -286,4 +286,7 @@ <expression id="093" name="ghz"> <exp>GHz</exp> </expression> + <expression id="094" name="virtualization"> + <exp>虛擬化</exp> + </expression> </tns:translation> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jac...@us...> - 2011-02-19 16:56:36
|
Revision: 440 http://phpsysinfo.svn.sourceforge.net/phpsysinfo/?rev=440&view=rev Author: jacky672 Date: 2011-02-19 16:56:29 +0000 (Sat, 19 Feb 2011) Log Message: ----------- [ADD] Added date of the last boot Modified Paths: -------------- trunk/ChangeLog trunk/js/phpSysInfo/phpsysinfo.js trunk/language/en.xml trunk/language/fr.xml trunk/templates/html/index_dynamic.html Modified: trunk/ChangeLog =================================================================== --- trunk/ChangeLog 2011-02-11 18:43:51 UTC (rev 439) +++ trunk/ChangeLog 2011-02-19 16:56:29 UTC (rev 440) @@ -1,5 +1,8 @@ $Id$ +phpSysInfo 3.0.11 + - [ADD] Added date of the last boot + phpSysInfo 3.0.10 - [ADD] Added PSI_JS_COMPRESSION option to select JavaScript compression method (deleted PSI_JS_COMPRESSION_ENABLED option) - [ADD] Added JSMin JavaScript compression method Modified: trunk/js/phpSysInfo/phpsysinfo.js =================================================================== --- trunk/js/phpSysInfo/phpsysinfo.js 2011-02-11 18:43:51 UTC (rev 439) +++ trunk/js/phpSysInfo/phpsysinfo.js 2011-02-19 16:56:29 UTC (rev 440) @@ -551,6 +551,8 @@ */ function refreshVitals(xml) { var hostname = "", ip = "", kernel = "", distro = "", icon = "", uptime = "", users = 0, loadavg = ""; + var lastboot = 0, timestamp = Number(new Date()); + $("Vitals", xml).each(function getVitals(id) { hostname = $(this).attr("Hostname"); ip = $(this).attr("IPAddr"); @@ -558,6 +560,7 @@ distro = $(this).attr("Distro"); icon = $(this).attr("Distroicon"); uptime = formatUptime(parseInt($(this).attr("Uptime"), 10)); + lastboot = new Date(timestamp - (parseInt($(this).attr("Uptime"), 10)*1000)); users = parseInt($(this).attr("Users"), 10); loadavg = $(this).attr("LoadAvg"); if ($(this).attr("CPULoad") !== undefined) { @@ -571,6 +574,7 @@ $("#s_kernel").html(kernel); $("#s_distro").html("<img src='./gfx/images/" + icon + "' alt='Icon' height='16' width='16' style='vertical-align:middle;' /> " + distro); $("#s_uptime").html(uptime); + $("#s_lastboot").html(lastboot.toGMTString()); //toGMTString() or toLocaleString() $("#s_users").html(users); $("#s_loadavg").html(loadavg); }); @@ -1040,7 +1044,7 @@ html += "<tr><td style=\"width:160px\">" + genlang(81, false) + "</td><td>" + time_left_minutes + " " + genlang(83, false) + "</td></tr>\n"; tree.push(index); } - values=true; + values=true; }); html += " </tbody>\n"; html += " </table>\n"; Modified: trunk/language/en.xml =================================================================== --- trunk/language/en.xml 2011-02-11 18:43:51 UTC (rev 439) +++ trunk/language/en.xml 2011-02-19 16:56:29 UTC (rev 440) @@ -288,4 +288,7 @@ <expression id="094" name="virtualization"> <exp>Virtualization</exp> </expression> + <expression id="095" name="lastboot"> + <exp>Last boot</exp> + </expression> </tns:translation> Modified: trunk/language/fr.xml =================================================================== --- trunk/language/fr.xml 2011-02-11 18:43:51 UTC (rev 439) +++ trunk/language/fr.xml 2011-02-19 16:56:29 UTC (rev 440) @@ -25,7 +25,7 @@ <exp>Distribution</exp> </expression> <expression id="007" name="uptime"> - <exp>Uptime</exp> + <exp>Durée d'activité</exp> </expression> <expression id="008" name="users"> <exp>Utilisateurs</exp> @@ -288,4 +288,7 @@ <expression id="094" name="virtualization"> <exp>Virtualisation</exp> </expression> + <expression id="095" name="lastboot"> + <exp>Dernier démarrage</exp> + </expression> </tns:translation> Modified: trunk/templates/html/index_dynamic.html =================================================================== --- trunk/templates/html/index_dynamic.html 2011-02-11 18:43:51 UTC (rev 439) +++ trunk/templates/html/index_dynamic.html 2011-02-19 16:56:29 UTC (rev 440) @@ -103,6 +103,10 @@ <td><span id="s_uptime"></span></td> </tr> <tr> + <td style="width:160px;"><span id="lang_095">Last boot</span></td> + <td><span id="s_lastboot"></span></td> + </tr> + <tr> <td style="width:160px;"><span id="lang_008">Current Users</span></td> <td><span id="s_users"></span></td> </tr> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jac...@us...> - 2011-02-25 18:34:16
|
Revision: 443 http://phpsysinfo.svn.sourceforge.net/phpsysinfo/?rev=443&view=rev Author: jacky672 Date: 2011-02-25 18:34:08 +0000 (Fri, 25 Feb 2011) Log Message: ----------- [UPD] Updated jQuery plugin to 1.5.1 Modified Paths: -------------- trunk/ChangeLog trunk/js/jQuery/README trunk/js/jQuery/jquery.js Modified: trunk/ChangeLog =================================================================== --- trunk/ChangeLog 2011-02-20 16:13:54 UTC (rev 442) +++ trunk/ChangeLog 2011-02-25 18:34:08 UTC (rev 443) @@ -3,6 +3,8 @@ phpSysInfo 3.0.11 - [ADD] Added date of the last boot + - [UPD] Updated jQuery plugin to 1.5.1 + phpSysInfo 3.0.10 - [ADD] Added PSI_JS_COMPRESSION option to select JavaScript compression method (deleted PSI_JS_COMPRESSION_ENABLED option) - [ADD] Added JSMin JavaScript compression method Modified: trunk/js/jQuery/README =================================================================== --- trunk/js/jQuery/README 2011-02-20 16:13:54 UTC (rev 442) +++ trunk/js/jQuery/README 2011-02-25 18:34:08 UTC (rev 443) @@ -3,7 +3,7 @@ jquery.js --------- -VERSION : 1.5 +VERSION : 1.5.1 URL : http://jquery.com/ DESC : jQuery is a fast, concise, JavaScript Library that simplifies how you traverse HTML documents, handle events, perform animations, and add Ajax interactions to your web pages. Modified: trunk/js/jQuery/jquery.js =================================================================== --- trunk/js/jQuery/jquery.js 2011-02-20 16:13:54 UTC (rev 442) +++ trunk/js/jQuery/jquery.js 2011-02-25 18:34:08 UTC (rev 443) @@ -1,5 +1,5 @@ /*! - * jQuery JavaScript Library v1.5 + * jQuery JavaScript Library v1.5.1 * http://jquery.com/ * * Copyright 2011, John Resig @@ -11,7 +11,7 @@ * Copyright 2011, The Dojo Foundation * Released under the MIT, BSD, and GPL Licenses. * - * Date: Mon Jan 31 08:31:29 2011 -0500 + * Date: Wed Feb 23 13:55:29 2011 -0500 */ (function( window, undefined ) { @@ -202,7 +202,7 @@ selector: "", // The current version of jQuery being used - jquery: "1.5", + jquery: "1.5.1", // The default length of a jQuery object is 0 length: 0, @@ -313,7 +313,7 @@ jQuery.fn.init.prototype = jQuery.fn; jQuery.extend = jQuery.fn.extend = function() { - var options, name, src, copy, copyIsArray, clone, + var options, name, src, copy, copyIsArray, clone, target = arguments[0] || {}, i = 1, length = arguments.length, @@ -585,11 +585,9 @@ if ( data && rnotwhite.test(data) ) { // Inspired by code by Andrea Giammarchi // http://webreflection.blogspot.com/2007/08/global-scope-evaluation-and-dom.html - var head = document.getElementsByTagName("head")[0] || document.documentElement, - script = document.createElement("script"); + var head = document.head || document.getElementsByTagName( "head" )[0] || document.documentElement, + script = document.createElement( "script" ); - script.type = "text/javascript"; - if ( jQuery.support.scriptEval() ) { script.appendChild( document.createTextNode( data ) ); } else { @@ -864,6 +862,12 @@ callbacks.shift().apply( context, args ); } } + // We have to add a catch block for + // IE prior to 8 or else the finally + // block will never get executed + catch (e) { + throw e; + } finally { fired = [ context, args ]; firing = 0; @@ -911,22 +915,22 @@ isRejected: failDeferred.isResolved, // Get a promise for this deferred // If obj is provided, the promise aspect is added to the object - promise: function( obj , i /* internal */ ) { + promise: function( obj ) { if ( obj == null ) { if ( promise ) { return promise; } promise = obj = {}; } - i = promiseMethods.length; + var i = promiseMethods.length; while( i-- ) { - obj[ promiseMethods[ i ] ] = deferred[ promiseMethods[ i ] ]; + obj[ promiseMethods[i] ] = deferred[ promiseMethods[i] ]; } return obj; } } ); // Make sure only one callback list will be used - deferred.then( failDeferred.cancel, deferred.cancel ); + deferred.done( failDeferred.cancel ).fail( deferred.cancel ); // Unexpose cancel delete deferred.cancel; // Call given func if any @@ -938,24 +942,34 @@ // Deferred helper when: function( object ) { - var args = arguments, - length = args.length, - deferred = length <= 1 && object && jQuery.isFunction( object.promise ) ? + var lastIndex = arguments.length, + deferred = lastIndex <= 1 && object && jQuery.isFunction( object.promise ) ? object : jQuery.Deferred(), - promise = deferred.promise(), - resolveArray; + promise = deferred.promise(); - if ( length > 1 ) { - resolveArray = new Array( length ); - jQuery.each( args, function( index, element ) { - jQuery.when( element ).then( function( value ) { - resolveArray[ index ] = arguments.length > 1 ? slice.call( arguments, 0 ) : value; - if( ! --length ) { - deferred.resolveWith( promise, resolveArray ); - } - }, deferred.reject ); - } ); + if ( lastIndex > 1 ) { + var array = slice.call( arguments, 0 ), + count = lastIndex, + iCallback = function( index ) { + return function( value ) { + array[ index ] = arguments.length > 1 ? slice.call( arguments, 0 ) : value; + if ( !( --count ) ) { + deferred.resolveWith( promise, array ); + } + }; + }; + while( ( lastIndex-- ) ) { + object = array[ lastIndex ]; + if ( object && jQuery.isFunction( object.promise ) ) { + object.promise().then( iCallback(lastIndex), deferred.reject ); + } else { + --count; + } + } + if ( !count ) { + deferred.resolveWith( promise, array ); + } } else if ( deferred !== object ) { deferred.resolve( object ); } @@ -1071,7 +1085,7 @@ } // Expose jQuery to the global object -return (window.jQuery = window.$ = jQuery); +return jQuery; })(); @@ -1088,7 +1102,8 @@ var all = div.getElementsByTagName("*"), a = div.getElementsByTagName("a")[0], select = document.createElement("select"), - opt = select.appendChild( document.createElement("option") ); + opt = select.appendChild( document.createElement("option") ), + input = div.getElementsByTagName("input")[0]; // Can't get basic test support if ( !all || !all.length || !a ) { @@ -1127,7 +1142,7 @@ // Make sure that if no value is specified for a checkbox // that it defaults to "on". // (WebKit defaults to "" instead) - checkOn: div.getElementsByTagName("input")[0].value === "on", + checkOn: input.value === "on", // Make sure that a selected-by-default option has a working selected property. // (WebKit defaults to false instead of true, IE too, if it's in an optgroup) @@ -1137,26 +1152,29 @@ deleteExpando: true, optDisabled: false, checkClone: false, - _scriptEval: null, noCloneEvent: true, + noCloneChecked: true, boxModel: null, inlineBlockNeedsLayout: false, shrinkWrapBlocks: false, reliableHiddenOffsets: true }; + input.checked = true; + jQuery.support.noCloneChecked = input.cloneNode( true ).checked; + // Make sure that the options inside disabled selects aren't marked as disabled // (WebKit marks them as diabled) select.disabled = true; jQuery.support.optDisabled = !opt.disabled; + var _scriptEval = null; jQuery.support.scriptEval = function() { - if ( jQuery.support._scriptEval === null ) { + if ( _scriptEval === null ) { var root = document.documentElement, script = document.createElement("script"), id = "script" + jQuery.now(); - script.type = "text/javascript"; try { script.appendChild( document.createTextNode( "window." + id + "=1;" ) ); } catch(e) {} @@ -1167,10 +1185,10 @@ // tag with appendChild/createTextNode // (IE doesn't support this, fails, and uses .text instead) if ( window[ id ] ) { - jQuery.support._scriptEval = true; + _scriptEval = true; delete window[ id ]; } else { - jQuery.support._scriptEval = false; + _scriptEval = false; } root.removeChild( script ); @@ -1178,7 +1196,7 @@ root = script = id = null; } - return jQuery.support._scriptEval; + return _scriptEval; }; // Test to see if it's possible to delete an expando from an element @@ -1190,7 +1208,7 @@ jQuery.support.deleteExpando = false; } - if ( div.attachEvent && div.fireEvent ) { + if ( !div.addEventListener && div.attachEvent && div.fireEvent ) { div.attachEvent("onclick", function click() { // Cloning a node shouldn't copy over any // bound event handlers (IE does this) @@ -1321,7 +1339,7 @@ hasData: function( elem ) { elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ]; - return !!elem && !jQuery.isEmptyObject(elem); + return !!elem && !isEmptyDataObject( elem ); }, data: function( elem, name, data, pvt /* Internal Use Only */ ) { @@ -1361,11 +1379,18 @@ if ( !cache[ id ] ) { cache[ id ] = {}; + + // TODO: This is a hack for 1.5 ONLY. Avoids exposing jQuery + // metadata on plain JS objects when the object is serialized using + // JSON.stringify + if ( !isNode ) { + cache[ id ].toJSON = jQuery.noop; + } } // An object can be passed to jQuery.data instead of a key/value pair; this gets // shallow copied over onto the existing cache - if ( typeof name === "object" ) { + if ( typeof name === "object" || typeof name === "function" ) { if ( pvt ) { cache[ id ][ internalKey ] = jQuery.extend(cache[ id ][ internalKey ], name); } else { @@ -1427,7 +1452,7 @@ // If there is no data left in the cache, we want to continue // and let the cache object itself get destroyed - if ( !jQuery.isEmptyObject(thisCache) ) { + if ( !isEmptyDataObject(thisCache) ) { return; } } @@ -1439,7 +1464,7 @@ // Don't destroy the parent cache unless the internal data object // had been the only thing left in it - if ( !jQuery.isEmptyObject(cache[ id ]) ) { + if ( !isEmptyDataObject(cache[ id ]) ) { return; } } @@ -1460,6 +1485,13 @@ // data if it existed if ( internalCache ) { cache[ id ] = {}; + // TODO: This is a hack for 1.5 ONLY. Avoids exposing jQuery + // metadata on plain JS objects when the object is serialized using + // JSON.stringify + if ( !isNode ) { + cache[ id ].toJSON = jQuery.noop; + } + cache[ id ][ internalKey ] = internalCache; // Otherwise, we need to eliminate the expando on the node to avoid @@ -1588,9 +1620,22 @@ return data; } +// TODO: This is a hack for 1.5 ONLY to allow objects with a single toJSON +// property to be considered empty objects; this property always exists in +// order to make sure JSON.stringify does not expose internal metadata +function isEmptyDataObject( obj ) { + for ( var name in obj ) { + if ( name !== "toJSON" ) { + return false; + } + } + return true; +} + + jQuery.extend({ queue: function( elem, type, data ) { if ( !elem ) { @@ -1888,6 +1933,11 @@ } } + // Fixes Bug #2551 -- select.val() broken in IE after form.reset() + if ( one && !values.length && options.length ) { + return jQuery( options[ index ] ).val(); + } + return values; } @@ -2081,8 +2131,7 @@ rescape = /[^\w\s.|`]/g, fcleanup = function( nm ) { return nm.replace(rescape, "\\$&"); - }, - eventKey = "events"; + }; /* * A number of helper functions used for managing events. @@ -2098,17 +2147,22 @@ return; } - // For whatever reason, IE has trouble passing the window object - // around, causing it to be cloned in the process - if ( jQuery.isWindow( elem ) && ( elem !== window && !elem.frameElement ) ) { - elem = window; + // TODO :: Use a try/catch until it's safe to pull this out (likely 1.6) + // Minor release fix for bug #8018 + try { + // For whatever reason, IE has trouble passing the window object + // around, causing it to be cloned in the process + if ( jQuery.isWindow( elem ) && ( elem !== window && !elem.frameElement ) ) { + elem = window; + } } + catch ( e ) {} if ( handler === false ) { handler = returnFalse; } else if ( !handler ) { // Fixes bug #7229. Fix recommended by jdalton - return; + return; } var handleObjIn, handleObj; @@ -2132,23 +2186,10 @@ return; } - var events = elemData[ eventKey ], + var events = elemData.events, eventHandle = elemData.handle; - if ( typeof events === "function" ) { - // On plain objects events is a fn that holds the the data - // which prevents this data from being JSON serialized - // the function does not need to be called, it just contains the data - eventHandle = events.handle; - events = events.events; - - } else if ( !events ) { - if ( !elem.nodeType ) { - // On plain objects, create a fn that acts as the holder - // of the values to avoid JSON serialization of event data - elemData[ eventKey ] = elemData = function(){}; - } - + if ( !events ) { elemData.events = events = {}; } @@ -2249,17 +2290,12 @@ var ret, type, fn, j, i = 0, all, namespaces, namespace, special, eventType, handleObj, origType, elemData = jQuery.hasData( elem ) && jQuery._data( elem ), - events = elemData && elemData[ eventKey ]; + events = elemData && elemData.events; if ( !elemData || !events ) { return; } - if ( typeof events === "function" ) { - elemData = events; - events = events.events; - } - // types is actually an event object here if ( types && types.type ) { handler = types.handler; @@ -2359,10 +2395,7 @@ delete elemData.events; delete elemData.handle; - if ( typeof elemData === "function" ) { - jQuery.removeData( elem, eventKey, true ); - - } else if ( jQuery.isEmptyObject( elemData ) ) { + if ( jQuery.isEmptyObject( elemData ) ) { jQuery.removeData( elem, undefined, true ); } } @@ -2403,7 +2436,7 @@ // points to jQuery.expando var internalKey = jQuery.expando, internalCache = this[ internalKey ]; - if ( internalCache && internalCache.events && internalCache.events[type] ) { + if ( internalCache && internalCache.events && internalCache.events[ type ] ) { jQuery.event.trigger( event, data, internalCache.handle.elem ); } }); @@ -2429,9 +2462,7 @@ event.currentTarget = elem; // Trigger the event, it is assumed that "handle" is a function - var handle = elem.nodeType ? - jQuery._data( elem, "handle" ) : - (jQuery._data( elem, eventKey ) || {}).handle; + var handle = jQuery._data( elem, "handle" ); if ( handle ) { handle.apply( elem, data ); @@ -2509,12 +2540,8 @@ event.namespace = event.namespace || namespace_sort.join("."); - events = jQuery._data(this, eventKey); + events = jQuery._data(this, "events"); - if ( typeof events === "function" ) { - events = events.events; - } - handlers = (events || {})[ event.type ]; if ( events && handlers ) { @@ -2680,7 +2707,7 @@ // Events bubbling up the document may have been marked as prevented // by a handler lower down the tree; reflect the correct value. - this.isDefaultPrevented = (src.defaultPrevented || src.returnValue === false || + this.isDefaultPrevented = (src.defaultPrevented || src.returnValue === false || src.getPreventDefault && src.getPreventDefault()) ? returnTrue : returnFalse; // Event type @@ -2755,6 +2782,12 @@ // Firefox sometimes assigns relatedTarget a XUL element // which we cannot access the parentNode property of try { + + // Chrome does something similar, the parentNode property + // can be accessed but is null. + if ( parent !== document && !parent.parentNode ) { + return; + } // Traverse up the tree while ( parent && parent !== this ) { parent = parent.parentNode; @@ -2805,8 +2838,7 @@ type = elem.type; if ( (type === "submit" || type === "image") && jQuery( elem ).closest("form").length ) { - e.liveFired = undefined; - return trigger( "submit", this, arguments ); + trigger( "submit", this, arguments ); } }); @@ -2815,8 +2847,7 @@ type = elem.type; if ( (type === "text" || type === "password") && jQuery( elem ).closest("form").length && e.keyCode === 13 ) { - e.liveFired = undefined; - return trigger( "submit", this, arguments ); + trigger( "submit", this, arguments ); } }); @@ -2879,7 +2910,7 @@ if ( data != null || val ) { e.type = "change"; e.liveFired = undefined; - return jQuery.event.trigger( e, arguments[1], elem ); + jQuery.event.trigger( e, arguments[1], elem ); } }; @@ -2893,7 +2924,7 @@ var elem = e.target, type = elem.type; if ( type === "radio" || type === "checkbox" || elem.nodeName.toLowerCase() === "select" ) { - return testChange.call( this, e ); + testChange.call( this, e ); } }, @@ -2905,7 +2936,7 @@ if ( (e.keyCode === 13 && elem.nodeName.toLowerCase() !== "textarea") || (e.keyCode === 32 && (type === "checkbox" || type === "radio")) || type === "select-multiple" ) { - return testChange.call( this, e ); + testChange.call( this, e ); } }, @@ -2944,8 +2975,18 @@ } function trigger( type, elem, args ) { - args[0].type = type; - return jQuery.event.handle.apply( elem, args ); + // Piggyback on a donor event to simulate a different one. + // Fake originalEvent to avoid donor's stopPropagation, but if the + // simulated event prevents default then we do the same on the donor. + // Don't pass args or remember liveFired; they apply to the donor event. + var event = jQuery.extend( {}, args[ 0 ] ); + event.type = type; + event.originalEvent = {}; + event.liveFired = undefined; + jQuery.event.handle.call( elem, event ); + if ( event.isDefaultPrevented() ) { + args[ 0 ].preventDefault(); + } } // Create "bubbling" focus and blur events @@ -2954,8 +2995,8 @@ jQuery.event.special[ fix ] = { setup: function() { this.addEventListener( orig, handler, true ); - }, - teardown: function() { + }, + teardown: function() { this.removeEventListener( orig, handler, true ); } }; @@ -3148,12 +3189,8 @@ var stop, maxLevel, related, match, handleObj, elem, j, i, l, data, close, namespace, ret, elems = [], selectors = [], - events = jQuery._data( this, eventKey ); + events = jQuery._data( this, "events" ); - if ( typeof events === "function" ) { - events = events.events; - } - // Make sure we avoid non-left-click bubbling in Firefox (#3861) and disabled elements in IE (#6911) if ( event.liveFired === this || !events || !events.live || event.target.disabled || event.button && event.type === "click" ) { return; @@ -3186,7 +3223,7 @@ for ( j = 0; j < live.length; j++ ) { handleObj = live[j]; - if ( close.selector === handleObj.selector && (!namespace || namespace.test( handleObj.namespace )) ) { + if ( close.selector === handleObj.selector && (!namespace || namespace.test( handleObj.namespace )) && !close.elem.disabled ) { elem = close.elem; related = null; @@ -3269,7 +3306,9 @@ done = 0, toString = Object.prototype.toString, hasDuplicate = false, - baseHasDuplicate = true; + baseHasDuplicate = true, + rBackslash = /\\/g, + rNonWord = /\W/; // Here we check if the JavaScript engine is using some sort of // optimization where it does not always call our comparision @@ -3468,7 +3507,7 @@ match.splice( 1, 1 ); if ( left.substr( left.length - 1 ) !== "\\" ) { - match[1] = (match[1] || "").replace(/\\/g, ""); + match[1] = (match[1] || "").replace( rBackslash, "" ); set = Expr.find[ type ]( match, context, isXML ); if ( set != null ) { @@ -3607,13 +3646,16 @@ attrHandle: { href: function( elem ) { return elem.getAttribute( "href" ); + }, + type: function( elem ) { + return elem.getAttribute( "type" ); } }, relative: { "+": function(checkSet, part){ var isPartStr = typeof part === "string", - isTag = isPartStr && !/\W/.test( part ), + isTag = isPartStr && !rNonWord.test( part ), isPartStrNotTag = isPartStr && !isTag; if ( isTag ) { @@ -3641,7 +3683,7 @@ i = 0, l = checkSet.length; - if ( isPartStr && !/\W/.test( part ) ) { + if ( isPartStr && !rNonWord.test( part ) ) { part = part.toLowerCase(); for ( ; i < l; i++ ) { @@ -3675,7 +3717,7 @@ doneName = done++, checkFn = dirCheck; - if ( typeof part === "string" && !/\W/.test(part) ) { + if ( typeof part === "string" && !rNonWord.test( part ) ) { part = part.toLowerCase(); nodeCheck = part; checkFn = dirNodeCheck; @@ -3689,7 +3731,7 @@ doneName = done++, checkFn = dirCheck; - if ( typeof part === "string" && !/\W/.test( part ) ) { + if ( typeof part === "string" && !rNonWord.test( part ) ) { part = part.toLowerCase(); nodeCheck = part; checkFn = dirNodeCheck; @@ -3732,7 +3774,7 @@ }, preFilter: { CLASS: function( match, curLoop, inplace, result, not, isXML ) { - match = " " + match[1].replace(/\\/g, "") + " "; + match = " " + match[1].replace( rBackslash, "" ) + " "; if ( isXML ) { return match; @@ -3755,11 +3797,11 @@ }, ID: function( match ) { - return match[1].replace(/\\/g, ""); + return match[1].replace( rBackslash, "" ); }, TAG: function( match, curLoop ) { - return match[1].toLowerCase(); + return match[1].replace( rBackslash, "" ).toLowerCase(); }, CHILD: function( match ) { @@ -3790,14 +3832,14 @@ }, ATTR: function( match, curLoop, inplace, result, not, isXML ) { - var name = match[1] = match[1].replace(/\\/g, ""); + var name = match[1] = match[1].replace( rBackslash, "" ); if ( !isXML && Expr.attrMap[name] ) { match[1] = Expr.attrMap[name]; } // Handle if an un-quoted value was used - match[4] = ( match[4] || match[5] || "" ).replace(/\\/g, ""); + match[4] = ( match[4] || match[5] || "" ).replace( rBackslash, "" ); if ( match[2] === "~=" ) { match[4] = " " + match[4] + " "; @@ -3852,7 +3894,9 @@ selected: function( elem ) { // Accessing this property makes selected-by-default // options in Safari work properly - elem.parentNode.selectedIndex; + if ( elem.parentNode ) { + elem.parentNode.selectedIndex; + } return elem.selected === true; }, @@ -3874,7 +3918,9 @@ }, text: function( elem ) { - return "text" === elem.type; + // IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc) + // use getAttribute instead to test this case + return "text" === elem.getAttribute( 'type' ); }, radio: function( elem ) { return "radio" === elem.type; @@ -4407,7 +4453,8 @@ // and working up from there (Thanks to Andrew Dupont for the technique) // IE 8 doesn't work on object elements } else if ( context.nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) { - var old = context.getAttribute( "id" ), + var oldContext = context, + old = context.getAttribute( "id" ), nid = old || id, hasParent = context.parentNode, relativeHierarchySelector = /^\s*[+~]/.test( query ); @@ -4429,7 +4476,7 @@ } catch(pseudoError) { } finally { if ( !old ) { - context.removeAttribute( "id" ); + oldContext.removeAttribute( "id" ); } } } @@ -4845,11 +4892,11 @@ }, function( name, fn ) { jQuery.fn[ name ] = function( until, selector ) { var ret = jQuery.map( this, fn, until ), - // The variable 'args' was introduced in - // https://github.com/jquery/jquery/commit/52a0238 - // to work around a bug in Chrome 10 (Dev) and should be removed when the bug is fixed. - // http://code.google.com/p/v8/issues/detail?id=1050 - args = slice.call(arguments); + // The variable 'args' was introduced in + // https://github.com/jquery/jquery/commit/52a0238 + // to work around a bug in Chrome 10 (Dev) and should be removed when the bug is fixed. + // http://code.google.com/p/v8/issues/detail?id=1050 + args = slice.call(arguments); if ( !runtil.test( name ) ) { selector = until; @@ -4959,7 +5006,7 @@ rtbody = /<tbody/i, rhtml = /<|&#?\w+;/, rnocache = /<(?:script|object|embed|option|style)/i, - // checked="checked" or checked (html5) + // checked="checked" or checked rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i, wrapMap = { option: [ 1, "<select multiple='multiple'>", "</select>" ], @@ -5111,7 +5158,7 @@ } if ( elem.parentNode ) { - elem.parentNode.removeChild( elem ); + elem.parentNode.removeChild( elem ); } } } @@ -5136,7 +5183,7 @@ }, clone: function( dataAndEvents, deepDataAndEvents ) { - dataAndEvents = dataAndEvents == null ? true : dataAndEvents; + dataAndEvents = dataAndEvents == null ? false : dataAndEvents; deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; return this.map( function () { @@ -5305,8 +5352,8 @@ } var internalKey = jQuery.expando, - oldData = jQuery.data( src ), - curData = jQuery.data( dest, oldData ); + oldData = jQuery.data( src ), + curData = jQuery.data( dest, oldData ); // Switch to use the internal data object, if it exists, for the next // stage of data copying @@ -5320,7 +5367,7 @@ for ( var type in events ) { for ( var i = 0, l = events[ type ].length; i < l; i++ ) { - jQuery.event.add( dest, type, events[ type ][ i ], events[ type ][ i ].data ); + jQuery.event.add( dest, type + ( events[ type ][ i ].namespace ? "." : "" ) + events[ type ][ i ].namespace, events[ type ][ i ], events[ type ][ i ].data ); } } } @@ -5441,6 +5488,18 @@ }; }); +function getAll( elem ) { + if ( "getElementsByTagName" in elem ) { + return elem.getElementsByTagName( "*" ); + + } else if ( "querySelectorAll" in elem ) { + return elem.querySelectorAll( "*" ); + + } else { + return []; + } +} + jQuery.extend({ clone: function( elem, dataAndEvents, deepDataAndEvents ) { var clone = elem.cloneNode(true), @@ -5448,17 +5507,20 @@ destElements, i; - if ( !jQuery.support.noCloneEvent && (elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) { + if ( (!jQuery.support.noCloneEvent || !jQuery.support.noCloneChecked) && + (elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) { // IE copies events bound via attachEvent when using cloneNode. // Calling detachEvent on the clone will also remove the events // from the original. In order to get around this, we use some // proprietary methods to clear the events. Thanks to MooTools // guys for this hotness. + cloneFixAttributes( elem, clone ); + // Using Sizzle here is crazy slow, so we use getElementsByTagName // instead - srcElements = elem.getElementsByTagName("*"); - destElements = clone.getElementsByTagName("*"); + srcElements = getAll( elem ); + destElements = getAll( clone ); // Weird iteration because IE will replace the length property // with an element if you are cloning the body and one of the @@ -5466,30 +5528,25 @@ for ( i = 0; srcElements[i]; ++i ) { cloneFixAttributes( srcElements[i], destElements[i] ); } - - cloneFixAttributes( elem, clone ); } // Copy the events from the original to the clone if ( dataAndEvents ) { - cloneCopyEvent( elem, clone ); - if ( deepDataAndEvents && "getElementsByTagName" in elem ) { + if ( deepDataAndEvents ) { + srcElements = getAll( elem ); + destElements = getAll( clone ); - srcElements = elem.getElementsByTagName("*"); - destElements = clone.getElementsByTagName("*"); - - if ( srcElements.length ) { - for ( i = 0; srcElements[i]; ++i ) { - cloneCopyEvent( srcElements[i], destElements[i] ); - } + for ( i = 0; srcElements[i]; ++i ) { + cloneCopyEvent( srcElements[i], destElements[i] ); } } } + // Return the cloned set return clone; - }, +}, clean: function( elems, context, fragment, scripts ) { context = context || document; @@ -5910,7 +5967,7 @@ if ( document.documentElement.currentStyle ) { currentStyle = function( elem, name ) { - var left, + var left, ret = elem.currentStyle && elem.currentStyle[ name ], rsLeft = elem.runtimeStyle && elem.runtimeStyle[ name ], style = elem.style; @@ -5988,8 +6045,10 @@ rbracket = /\[\]$/, rCRLF = /\r?\n/g, rhash = /#.*$/, - rheaders = /^(.*?):\s*(.*?)\r?$/mg, // IE leaves an \r character at EOL + rheaders = /^(.*?):[ \t]*([^\r\n]*)\r?$/mg, // IE leaves an \r character at EOL rinput = /^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i, + // #7653, #8125, #8152: local protocol detection + rlocalProtocol = /(?:^file|^widget|\-extension):$/, rnoContent = /^(?:GET|HEAD)$/, rprotocol = /^\/\//, rquery = /\?/, @@ -5997,7 +6056,11 @@ rselectTextarea = /^(?:select|textarea)/i, rspacesAjax = /\s+/, rts = /([?&])_=[^&]*/, - rurl = /^(\w+:)\/\/([^\/?#:]+)(?::(\d+))?/, + rucHeaders = /(^|\-)([a-z])/g, + rucHeadersFunc = function( _, $1, $2 ) { + return $1 + $2.toUpperCase(); + }, + rurl = /^([\w\+\.\-]+:)\/\/([^\/?#:]*)(?::(\d+))?/, // Keep a copy of the old load method _load = jQuery.fn.load, @@ -6018,8 +6081,29 @@ * 2) the catchall symbol "*" can be used * 3) selection will start with transport dataType and THEN go to "*" if needed */ - transports = {}; + transports = {}, + // Document location + ajaxLocation, + + // Document location segments + ajaxLocParts; + +// #8138, IE may throw an exception when accessing +// a field from document.location if document.domain has been set +try { + ajaxLocation = document.location.href; +} catch( e ) { + // Use the href attribute of an A element + // since IE will modify it given document.location + ajaxLocation = document.createElement( "a" ); + ajaxLocation.href = ""; + ajaxLocation = ajaxLocation.href; +} + +// Segment location into parts +ajaxLocParts = rurl.exec( ajaxLocation.toLowerCase() ); + // Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport function addToPrefiltersOrTransports( structure ) { @@ -6057,7 +6141,7 @@ } //Base inspection function for prefilters and transports -function inspectPrefiltersOrTransports( structure, options, originalOptions, jXHR, +function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR, dataType /* internal */, inspected /* internal */ ) { dataType = dataType || options.dataTypes[ 0 ]; @@ -6072,16 +6156,16 @@ selection; for(; i < length && ( executeOnly || !selection ); i++ ) { - selection = list[ i ]( options, originalOptions, jXHR ); + selection = list[ i ]( options, originalOptions, jqXHR ); // If we got redirected to another dataType - // we try there if not done already + // we try there if executing only and not done already if ( typeof selection === "string" ) { - if ( inspected[ selection ] ) { + if ( !executeOnly || inspected[ selection ] ) { selection = undefined; } else { options.dataTypes.unshift( selection ); selection = inspectPrefiltersOrTransports( - structure, options, originalOptions, jXHR, selection, inspected ); + structure, options, originalOptions, jqXHR, selection, inspected ); } } } @@ -6089,7 +6173,7 @@ // we try the catchall dataType if not done already if ( ( executeOnly || !selection ) && !inspected[ "*" ] ) { selection = inspectPrefiltersOrTransports( - structure, options, originalOptions, jXHR, "*", inspected ); + structure, options, originalOptions, jqXHR, "*", inspected ); } // unnecessary when only executing (prefilters) // but it'll be ignored by the caller in that case @@ -6121,7 +6205,7 @@ if ( jQuery.isFunction( params ) ) { // We assume that it's the callback callback = params; - params = null; + params = undefined; // Otherwise, build a param string } else if ( typeof params === "object" ) { @@ -6139,14 +6223,14 @@ dataType: "html", data: params, // Complete callback (responseText is used internally) - complete: function( jXHR, status, responseText ) { - // Store the response as specified by the jXHR object - responseText = jXHR.responseText; + complete: function( jqXHR, status, responseText ) { + // Store the response as specified by the jqXHR object + responseText = jqXHR.responseText; // If successful, inject the HTML into all the matched elements - if ( jXHR.isResolved() ) { + if ( jqXHR.isResolved() ) { // #4825: Get the actual response in case // a dataFilter is present in ajaxSettings - jXHR.done(function( r ) { + jqXHR.done(function( r ) { responseText = r; }); // See if a selector was specified @@ -6165,7 +6249,7 @@ } if ( callback ) { - self.each( callback, [ responseText, status, jXHR ] ); + self.each( callback, [ responseText, status, jqXHR ] ); } } }); @@ -6213,7 +6297,7 @@ if ( jQuery.isFunction( data ) ) { type = type || callback; callback = data; - data = null; + data = undefined; } return jQuery.ajax({ @@ -6229,22 +6313,39 @@ jQuery.extend({ getScript: function( url, callback ) { - return jQuery.get( url, null, callback, "script" ); + return jQuery.get( url, undefined, callback, "script" ); }, getJSON: function( url, data, callback ) { return jQuery.get( url, data, callback, "json" ); }, - ajaxSetup: function( settings ) { - jQuery.extend( true, jQuery.ajaxSettings, settings ); - if ( settings.context ) { - jQuery.ajaxSettings.context = settings.context; + // Creates a full fledged settings object into target + // with both ajaxSettings and settings fields. + // If target is omitted, writes into ajaxSettings. + ajaxSetup: function ( target, settings ) { + if ( !settings ) { + // Only one parameter, we extend ajaxSettings + settings = target; + target = jQuery.extend( true, jQuery.ajaxSettings, settings ); + } else { + // target was provided, we extend into it + jQuery.extend( true, target, jQuery.ajaxSettings, settings ); } + // Flatten fields we don't want deep extended + for( var field in { context: 1, url: 1 } ) { + if ( field in settings ) { + target[ field ] = settings[ field ]; + } else if( field in jQuery.ajaxSettings ) { + target[ field ] = jQuery.ajaxSettings[ field ]; + } + } + return target; }, ajaxSettings: { - url: location.href, + url: ajaxLocation, + isLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ), global: true, type: "GET", contentType: "application/x-www-form-urlencoded", @@ -6306,9 +6407,8 @@ // Main method ajax: function( url, options ) { - // If options is not an object, - // we simulate pre-1.5 signature - if ( typeof options !== "object" ) { + // If url is an object, simulate pre-1.5 signature + if ( typeof url === "object" ) { options = url; url = undefined; } @@ -6317,19 +6417,22 @@ options = options || {}; var // Create the final options object - s = jQuery.extend( true, {}, jQuery.ajaxSettings, options ), - // Callbacks contexts - // We force the original context if it exists - // or take it from jQuery.ajaxSettings otherwise - // (plain objects used as context get extended) - callbackContext = - ( s.context = ( "context" in options ? options : jQuery.ajaxSettings ).context ) || s, - globalEventContext = callbackContext === s ? jQuery.event : jQuery( callbackContext ), + s = jQuery.ajaxSetup( {}, options ), + // Callbacks context + callbackContext = s.context || s, + // Context for global events + // It's the callbackContext if one was provided in the options + // and if it's a DOM node or a jQuery collection + globalEventContext = callbackContext !== s && + ( callbackContext.nodeType || callbackContext instanceof jQuery ) ? + jQuery( callbackContext ) : jQuery.event, // Deferreds deferred = jQuery.Deferred(), completeDeferred = jQuery._Deferred(), // Status-dependent callbacks statusCode = s.statusCode || {}, + // ifModified key + ifModifiedKey, // Headers (they are sent all at once) requestHeaders = {}, // Response headers @@ -6340,22 +6443,22 @@ // timeout handle timeoutTimer, // Cross-domain detection vars - loc = document.location, - protocol = loc.protocol || "http:", parts, - // The jXHR state + // The jqXHR state state = 0, + // To know if global events are to be dispatched + fireGlobals, // Loop variable i, // Fake xhr - jXHR = { + jqXHR = { readyState: 0, // Caches the header setRequestHeader: function( name, value ) { - if ( state === 0 ) { - requestHeaders[ name.toLowerCase() ] = value; + if ( !state ) { + requestHeaders[ name.toLowerCase().replace( rucHeaders, rucHeadersFunc ) ] = value; } return this; }, @@ -6377,9 +6480,17 @@ } match = responseHeaders[ key.toLowerCase() ]; } - return match || null; + return match === undefined ? null : match; }, + // Overrides response content-type header + overrideMimeType: function( type ) { + if ( !state ) { + s.mimeType = type; + } + return this; + }, + // Cancel the request abort: function( statusText ) { statusText = statusText || "abort"; @@ -6394,7 +6505,7 @@ // Callback for when everything is done // It is defined here because jslint complains if it is declared // at the end of the function (which would be more logical and readable) - function done( status, statusText, responses, headers) { + function done( status, statusText, responses, headers ) { // Called once if ( state === 2 ) { @@ -6410,19 +6521,19 @@ } // Dereference transport for early garbage collection - // (no matter how long the jXHR object will be used) + // (no matter how long the jqXHR object will be used) transport = undefined; // Cache response headers responseHeadersString = headers || ""; // Set readyState - jXHR.readyState = status ? 4 : 0; + jqXHR.readyState = status ? 4 : 0; var isSuccess, success, error, - response = responses ? ajaxHandleResponses( s, jXHR, responses ) : undefined, + response = responses ? ajaxHandleResponses( s, jqXHR, responses ) : undefined, lastModified, etag; @@ -6432,11 +6543,11 @@ // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. if ( s.ifModified ) { - if ( ( lastModified = jXHR.getResponseHeader( "Last-Modified" ) ) ) { - jQuery.lastModified[ s.url ] = lastModified; + if ( ( lastModified = jqXHR.getResponseHeader( "Last-Modified" ) ) ) { + jQuery.lastModified[ ifModifiedKey ] = lastModified; } - if ( ( etag = jXHR.getResponseHeader( "Etag" ) ) ) { - jQuery.etag[ s.url ] = etag; + if ( ( etag = jqXHR.getResponseHeader( "Etag" ) ) ) { + jQuery.etag[ ifModifiedKey ] = etag; } } @@ -6463,7 +6574,7 @@ // We extract error from statusText // then normalize statusText and status for non-aborts error = statusText; - if( status ) { + if( !statusText || status ) { statusText = "error"; if ( status < 0 ) { status = 0; @@ -6472,30 +6583,30 @@ } // Set data for the fake xhr object - jXHR.status = status; - jXHR.statusText = statusText; + jqXHR.status = status; + jqXHR.statusText = statusText; // Success/Error if ( isSuccess ) { - deferred.resolveWith( callbackContext, [ success, statusText, jXHR ] ); + deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] ); } else { - deferred.rejectWith( callbackContext, [ jXHR, statusText, error ] ); + deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] ); } // Status-dependent callbacks - jXHR.statusCode( statusCode ); + jqXHR.statusCode( statusCode ); statusCode = undefined; - if ( s.global ) { + if ( fireGlobals ) { globalEventContext.trigger( "ajax" + ( isSuccess ? "Success" : "Error" ), - [ jXHR, s, isSuccess ? success : error ] ); + [ jqXHR, s, isSuccess ? success : error ] ); } // Complete - completeDeferred.resolveWith( callbackContext, [ jXHR, statusText ] ); + completeDeferred.resolveWith( callbackContext, [ jqXHR, statusText ] ); - if ( s.global ) { - globalEventContext.trigger( "ajaxComplete", [ jXHR, s] ); + if ( fireGlobals ) { + globalEventContext.trigger( "ajaxComplete", [ jqXHR, s] ); // Handle the global AJAX counter if ( !( --jQuery.active ) ) { jQuery.event.trigger( "ajaxStop" ); @@ -6504,13 +6615,13 @@ } // Attach deferreds - deferred.promise( jXHR ); - jXHR.success = jXHR.done; - jXHR.error = jXHR.fail; - jXHR.complete = completeDeferred.done; + deferred.promise( jqXHR ); + jqXHR.success = jqXHR.done; + jqXHR.error = jqXHR.fail; + jqXHR.complete = completeDeferred.done; // Status-dependent callbacks - jXHR.statusCode = function( map ) { + jqXHR.statusCode = function( map ) { if ( map ) { var tmp; if ( state < 2 ) { @@ -6518,8 +6629,8 @@ statusCode[ tmp ] = [ statusCode[tmp], map[tmp] ]; } } else { - tmp = map[ jXHR.status ]; - jXHR.then( tmp, tmp ); + tmp = map[ jqXHR.status ]; + jqXHR.then( tmp, tmp ); } } return this; @@ -6528,7 +6639,7 @@ // Remove hash character (#7531: and string promotion) // Add protocol if not provided (#5866: IE7 issue with protocol-less urls) // We also use the url parameter if available - s.url = ( "" + ( url || s.url ) ).replace( rhash, "" ).replace( rprotocol, protocol + "//" ); + s.url = ( ( url || s.url ) + "" ).replace( rhash, "" ).replace( rprotocol, ajaxLocParts[ 1 ] + "//" ); // Extract dataTypes list s.dataTypes = jQuery.trim( s.dataType || "*" ).toLowerCase().split( rspacesAjax ); @@ -6537,9 +6648,9 @@ if ( !s.crossDomain ) { parts = rurl.exec( s.url.toLowerCase() ); s.crossDomain = !!( parts && - ( parts[ 1 ] != protocol || parts[ 2 ] != loc.hostname || + ( parts[ 1 ] != ajaxLocParts[ 1 ] || parts[ 2 ] != ajaxLocParts[ 2 ] || ( parts[ 3 ] || ( parts[ 1 ] === "http:" ? 80 : 443 ) ) != - ( loc.port || ( protocol === "http:" ? 80 : 443 ) ) ) + ( ajaxLocParts[ 3 ] || ( ajaxLocParts[ 1 ] === "http:" ? 80 : 443 ) ) ) ); } @@ -6549,8 +6660,16 @@ } // Apply prefilters - inspectPrefiltersOrTransports( prefilters, s, options, jXHR ); + inspectPrefiltersOrTransports( prefilters, s, options, jqXHR ); + // If request was aborted inside a prefiler, stop there + if ( state === 2 ) { + return false; + } + + // We can fire global events as of now if asked to + fireGlobals = s.global; + // Uppercase the type s.type = s.type.toUpperCase(); @@ -6558,7 +6677,7 @@ s.hasContent = !rnoContent.test( s.type ); // Watch for a new set of requests - if ( s.global && jQuery.active++ === 0 ) { + if ( fireGlobals && jQuery.active++ === 0 ) { jQuery.event.trigger( "ajaxStart" ); } @@ -6570,6 +6689,9 @@ s.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.data; } + // Get ifModifiedKey before adding the anti-cache parameter + ifModifiedKey = s.url; + // Add anti-cache in url if needed if ( s.cache === false ) { @@ -6584,77 +6706,77 @@ // Set the correct header, if data is being sent if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) { - requestHeaders[ "content-type" ] = s.contentType; + requestHeaders[ "Content-Type" ] = s.contentType; } // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. if ( s.ifModified ) { - if ( jQuery.lastModified[ s.url ] ) { - requestHeaders[ "if-modified-since" ] = jQuery.lastModified[ s.url ]; + ifModifiedKey = ifModifiedKey || s.url; + if ( jQuery.lastModified[ ifModifiedKey ] ) { + requestHeaders[ "If-Modified-Since" ] = jQuery.lastModified[ ifModifiedKey ]; } - if ( jQuery.etag[ s.url ] ) { - requestHeaders[ "if-none-match" ] = jQuery.etag[ s.url ]; + if ( jQuery.etag[ ifModifiedKey ] ) { + requestHeaders[ "If-None-Match" ] = jQuery.etag[ ifModifiedKey ]; } } // Set the Accepts header for the server, depending on the dataType - requestHeaders.accept = s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ? + requestHeaders.Accept = s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ? s.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== "*" ? ", */*; q=0.01" : "" ) : s.accepts[ "*" ]; // Check for headers option for ( i in s.headers ) { - requestHeaders[ i.toLowerCase() ] = s.headers[ i ]; + jqXHR.setRequestHeader( i, s.headers[ i ] ); } // Allow custom headers/mimetypes and early abort - if ( s.beforeSend && ( s.beforeSend.call( callbackContext, jXHR, s ) === false || state === 2 ) ) { + if ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) { // Abort if not done already - done( 0, "abort" ); - // Return false - jXHR = false; + jqXHR.abort(); + return false; - } else { + } - // Install callbacks on deferreds - for ( i in { success: 1, error: 1, complete: 1 } ) { - jXHR[ i ]( s[ i ] ); - } + // Install callbacks on deferreds + for ( i in { success: 1, error: 1, complete: 1 } ) { + jqXHR[ i ]( s[ i ] ); + } - // Get transport - transport = inspectPrefiltersOrTransports( transports, s, options, jXHR ); + // Get transport + transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR ); - // If no transport, we auto-abort - if ( !transport ) { - done( -1, "No Transport" ); - } else { - // Set state as sending - state = jXHR.readyState = 1; - // Send global event - if ( s.global ) { - globalEventContext.trigger( "ajaxSend", [ jXHR, s ] ); - } - // Timeout - if ( s.async && s.timeout > 0 ) { - timeoutTimer = setTimeout( function(){ - jXHR.abort( "timeout" ); - }, s.timeout ); - } + // If no transport, we auto-abort + if ( !transport ) { + done( -1, "No Transport" ); + } else { + jqXHR.readyState = 1; + // Send global event + if ( fireGlobals ) { + globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] ); + } + // Timeout + if ( s.async && s.timeout > 0 ) { + timeoutTimer = setTimeout( function(){ + jqXHR.abort( "timeout" ); + }, s.timeout ); + } - try { - transport.send( requestHeaders, done ); - } catch (e) { - // Propagate exception as error if not done - if ( status < 2 ) { - done( -1, e ); - // Simply rethrow otherwise - } else { - jQuery.error( e ); - } + try { + state = 1; + transport.send( requestHeaders, done ); + } catch (e) { + // Propagate exception as error if not done + if ( status < 2 ) { + done( -1, e ); + // Simply rethrow otherwise + } else { + jQuery.error( e ); } } } - return jXHR; + + return jqXHR; }, // Serialize an array of form elements or a set of @@ -6673,7 +6795,7 @@ } // If an array was passed in, assume that it is an array of form elements. - if ( jQuery.isArray( a ) || a.jquery ) { + if ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) { // Serialize the form elements jQuery.each( a, function() { add( this.name, this.value ); @@ -6720,9 +6842,9 @@ // Serialize object item. } else { - jQuery.each( obj, function( k, v ) { - buildParams( prefix + "[" + k + "]", v, traditional, add ); - }); + for ( var name in obj ) { + buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add ); + } } } else { @@ -6749,7 +6871,7 @@ * - finds the right dataType (mediates between content-type and expected dataType) * - returns the corresponding response */ -function ajaxHandleResponses( s, jXHR, responses ) { +function ajaxHandleResponses( s, jqXHR, responses ) { var contents = s.contents, dataTypes = s.dataTypes, @@ -6762,7 +6884,7 @@ // Fill responseXXX fields for( type in responseFields ) { if ( type in responses ) { - jXHR[ responseFields[type] ] = responses[ type ]; + jqXHR[ responseFields[type] ] = responses[ type ]; } } @@ -6770,7 +6892,7 @@ while( dataTypes[ 0 ] === "*" ) { dataTypes.shift(); if ( ct === undefined ) { - ct = jXHR.getResponseHeader( "content-type" ); + ct = s.mimeType || jqXHR.getResponseHeader( "content-type" ); } } @@ -6822,8 +6944,9 @@ } var dataTypes = s.dataTypes, - converters = s.converters, + converters = {}, i, + key, length = dataTypes.length, tmp, // Current and previous dataTypes @@ -6840,6 +6963,16 @@ // For each dataType in the chain for( i = 1; i < length; i++ ) { + // Create converters map + // with lowercased keys + if ( i === 1 ) { + for( key in s.converters ) { + if( typeof key === "string" ) { + converters[ key.toLowerCase() ] = s.converters[ key ]; + } + } + } + // Get the dataTypes prev = current; current = dataTypes[ i ]; @@ -6902,9 +7035,9 @@ }); // Detect, normalize options and install callbacks for jsonp requests -jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, dataIsString /* internal */ ) { +jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) { - dataIsString = ( typeof s.data === "string" ); + var dataIsString = ( typeof s.data === "string" ); if ( s.dataTypes[ 0 ] === "jsonp" || originalSettings.jsonpCallback || @@ -6918,7 +7051,15 @@ previous = window[ jsonpCallback ], url = s.url, data = s.data, - replace = "$1" + jsonpCallback + "$2"; + replace = "$1" + jsonpCallback + "$2", + cleanUp = function() { + // Set callback back to previous value + window[ jsonpCallback ] = previous; + // Call if it was a function and we have a response + if ( responseContainer && jQuery.isFunction( previous ) ) { + window[ jsonpCallback ]( responseContainer[ 0 ] ); + } + }; if ( s.jsonp !== false ) { url = url.replace( jsre, replace ); @@ -6936,32 +7077,17 @@ s.url = url; s.data = data; + // Install callback window[ jsonpCallback ] = function( response ) { responseContainer = [ response ]; }; - s.complete = [ function() { + // Install cleanUp function + jqXHR.then( cleanUp, cleanUp ); - // Set callback back to previous value - window[ jsonpCallback ] = previous; - - // Call if it was a function and we have a response - if ( previous) { - if ( responseContainer && jQuery.isFunction( previous ) ) { - window[ jsonpCallback ] ( responseContainer[ 0 ] ); - } - } else { - // else, more memory leak avoidance - try{ - delete window[ jsonpCallback ]; - } catch( e ) {} - } - - }, s.complete ]; - // Use data converter to retrieve json after script execution s.converters["script json"] = function() { - if ( ! responseContainer ) { + if ( !responseContainer ) { jQuery.error( jsonpCallback + " was not called" ); } return responseContainer[ 0 ]; @@ -6981,10 +7107,10 @@ // Install script dataType jQuery.ajaxSetup({ accepts: { - script: "text/javascript, application/javascript" + script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript" }, contents: { - script: /javascript/ + script: /javascript|ecmascript/ }, converters: { "text script": function( text ) { @@ -7012,7 +7138,7 @@ if ( s.crossDomain ) { var script, - head = document.getElementsByTagName( "head" )[ 0 ] || document.documentElement; + head = document.head || document.getElementsByTagName( "head" )[0] || document.documentElement; return { @@ -7067,18 +7193,36 @@ -var // Next active xhr id +var // #5280: next active xhr id and list of active xhrs' callbacks xhrId = jQuery.now(), + xhrCallbacks, - // active xhrs - xhrs = {}, - - // #5280: see below - xhrUnloadAbortInstalled, - // XHR used to determine supports properties testXHR; +// #5280: Internet Explorer will keep connections alive if we don't abort on unload +function xhrOnUnloadAbort() { + jQuery( window ).unload(function() { + // Abort all pending requests + for ( var key in xhrCallbacks ) { + xhrCallbacks[ key ]( 0, 1 ); + } + }); +} + +// Functions to create xhrs +function createStandardXHR() { + try { + return new window.XMLHttpRequest(); + } catch( e ) {} +} + +function createActiveXHR() { + try { + return new window.ActiveXObject( "Microsoft.XMLHTTP" ); + } catch( e ) {} +} + // Create the request object // (This is still attached to ajaxSettings for backward compatibility) jQuery.ajaxSettings.xhr = window.ActiveXObject ? @@ -7089,27 +7233,13 @@ * we need a fallback. */ function() { - if ( window.location.protocol !== "file:" ) { - try { - return new window.XMLHttpRequest(); - } catch( xhrError ) {} - } - - try { - return new window.ActiveXObject("Microsoft.XMLHTTP"); - } catch( activeError ) {} + return !this.isLocal && createStandardXHR() || createActiveXHR(); } : // For all other browsers, use the standard XMLHttpRequest object - function() { - return new window.XMLHttpRequest(); - }; + createStandardXHR; // Test if we can create an xhr object -try { - testXHR = jQuery.ajaxSettings.xhr(); -} catch( xhrCreationException ) {} - -//Does this browser support XHR requests? +testXHR = jQuery.ajaxSettings.xhr(); jQuery.support.ajax = !!testXHR; // Does this browser support crossDomain XHR requests @@ -7130,26 +7260,10 @@ return { send: function( headers, complete ) { - // #5280: we need to abort on unload or IE will keep connections alive - if ( !xhrUnloadAbortInstalled ) { - - xhrUnloadAbortInstalled = 1; - - jQuery(window).bind( "unload", function() { - - // Abort all pending requests - jQuery.each( xhrs, function( _, xhr ) { - if ( xhr.onreadystatechange ) { - xhr.onreadystatechange( 1 ); - } - } ); - - } ); - } - // Get a new xhr var xhr = s.xhr(), - handle; + handle, + i; // Open the socket // Passing null username, generates a login popup on Opera (#2865) @@ -7159,19 +7273,31 @@ xhr.open( s.type, s.url, s.async ); } + // Apply custom fields if provided + if ( s.xhrFields ) { + for ( i in s.xhrFields ) { + xhr[ i ] = s.xhrFields[ i ]; + } + } + + // Override mime type if needed + if ( s.mimeType && xhr.overrideMimeType ) { + xhr.overrideMimeType( s.mimeType ); + } + // Requested-With header // Not set for crossDomain requests with no content // (see why at http://trac.dojotoolkit.org/ticket/9486) // Won't change header if already provided - if ( !( s.crossDomain && !s.hasContent ) && !headers["x-requested-with"] ) { - headers[ "x-requested-with" ] = "XMLHttpRequest"; + if ( !( s.crossDomain && !s.hasContent ) && !headers["X-Requested-With"] ) { + headers[ "X-Requested-With" ] = "XMLHttpRequest"; } // Need an extra try/catch for cross domain requests in Firefox 3 try { - jQuery.each( headers, function( key, value ) { - xhr.setRequestHeader( key, value ); - } ); + for ( i in headers ) { + xhr.setRequestHeader( i, headers[ i ] ); + } } catch( _ ) {} // Do send the request @@ -7182,75 +7308,79 @@ // Listener callback = function( _, isAbort ) { - // Was never called and is aborted or complete - if ( callback && ( isAbort || xhr.readyState === 4 ) ) { + var status, + statusText, + responseHeaders, + responses, + xml; - // Only called once - callback = 0; + // Firefox throws exceptions when accessing properties + // of an xhr when a network error occured + // http://helpful.knobs-dials.com/index.php/Component_returned_failure_code:_0x80040111_(NS_ERROR_NOT_AVAILABLE) + try { - // Do not keep as active anymore - if ( handle ) { - xhr.onreadystatechange = jQuery.noop; - delete xhrs[ handle ]; - } + // Was never called and is aborted or complete + if ( callback && ( isAbort || xhr.readyState === 4 ) ) { - // If it's an abort - if ( isAbort ) { - // Abort it manually if needed - if ( xhr.readyState !== 4 ) { - xhr.abort(); + // Only called once + callback = undefined; + + // Do not keep as active anymore + if ( handle ) { + xhr.onreadystatechange = jQuery.noop; + delete xhrCallbacks[ handle ]; } - } else { - // Get info - var status = xhr.status, - statusText, - responseHeaders = xhr.getAllResponseHeaders(), - responses = {}, + + // If it's an abort + if ( isAbort ) { + // Abort it manually if needed + if ( xhr.readyState !== 4 ) { + xhr.abort(); + } + } else { + status = xhr.status; + responseHeaders = xhr.getAllResponseHeaders(); + responses = {}; xml = xhr.responseXML; - // Construct response list - if ( xml && xml.documentElement /* #4958 */ ) { - responses.xml = xml; - } - responses.text = xhr.responseText; + // Construct response list + if ( xml && xml.documentElement /* #4958 */ ) { + responses.xml = xml; + } + responses.text = xhr.responseText; - // Firefox throws an exception when accessing - // statusText for faulty cross-domain requests - try { - statusText = xhr.statusText; - } catch( e ) { - // We normalize with Webkit giving an empty statusText - statusText = ""; - } + // Firefox throws an exception when accessing + // statusText for faulty cross-domain requests + try { + statusText = xhr.statusText; + } catch( e ) { + // We normalize with Webkit giving an empty statusText + statusText = ""; + } - // Filter status for non standard behaviours - status = - // Opera returns 0 when it should be 304 - // Webkit returns 0 for failing cross-domain no matter the real status - status === 0 ? - ( - // Webkit, Firefox: filter out faulty cross-domain requests - !s.crossDomain || statusText ? - ( - // Opera: filter out real aborts #6060 - responseHeaders ? - 304 : - 0 - ) : - // We assume 302 but could be anything cross-domain related - 302 - ) : - ( - // IE sometimes returns 1223 when it should be 204 (see #1450) - status == 1223 ? - 204 : - status - ); + // Filter status for non standard behaviors - // Call complete - complete( status, statusText, responses, responseHeaders ); + // If the request is local and we have data: assume a success + // (success with no data won't get notified, that's the best we + // can do given current implementations) + if ( !status && s.isLocal && !s.crossDomain ) { + status = responses.text ? 200 : 404; + // IE - #1450: sometimes returns 1223 when it should be 204 + } else if ( status === 1223 ) { + status = 204; + } + } } + } catch( firefoxAccessException ) { + if ( !isAbort ) { + complete( -1, firefoxAccessException ); + } } + + // Call complete if needed + if ( responses ) { + complete( status, statusText, responses, responseHeaders ); + } }; // if we're in sync mode or it's in cache @@ -7259,10 +7389,15 @@ if ( !s.async || xhr.readyState === 4 ) { callback(); } else { - // Add to list of active xhrs + // Create the active xhrs callbacks list if needed + // and attach the unl... [truncated message content] |
From: <jac...@us...> - 2011-03-20 11:46:10
|
Revision: 444 http://phpsysinfo.svn.sourceforge.net/phpsysinfo/?rev=444&view=rev Author: jacky672 Date: 2011-03-20 11:46:04 +0000 (Sun, 20 Mar 2011) Log Message: ----------- [UPD] Updated jQuery plugin DataTables to 1.7.6 Modified Paths: -------------- trunk/ChangeLog trunk/js/jQuery/README trunk/js/jQuery/jquery.dataTables.js Modified: trunk/ChangeLog =================================================================== --- trunk/ChangeLog 2011-02-25 18:34:08 UTC (rev 443) +++ trunk/ChangeLog 2011-03-20 11:46:04 UTC (rev 444) @@ -4,6 +4,7 @@ - [ADD] Added date of the last boot - [UPD] Updated jQuery plugin to 1.5.1 + - [UPD] Updated jQuery plugin DataTables to 1.7.6 phpSysInfo 3.0.10 - [ADD] Added PSI_JS_COMPRESSION option to select JavaScript compression method (deleted PSI_JS_COMPRESSION_ENABLED option) Modified: trunk/js/jQuery/README =================================================================== --- trunk/js/jQuery/README 2011-02-25 18:34:08 UTC (rev 443) +++ trunk/js/jQuery/README 2011-03-20 11:46:04 UTC (rev 444) @@ -12,7 +12,7 @@ jquery.dataTables.js -------------------- -VERSION : 1.7.5 +VERSION : 1.7.6 URL : http://plugins.jquery.com/project/DataTables DESC : dataTables is a jQuery plugin for turning a standard HTML table with THEAD and TBODY tags into a sortable table without page refreshes. Modified: trunk/js/jQuery/jquery.dataTables.js =================================================================== --- trunk/js/jQuery/jquery.dataTables.js 2011-02-25 18:34:08 UTC (rev 443) +++ trunk/js/jQuery/jquery.dataTables.js 2011-03-20 11:46:04 UTC (rev 444) @@ -1,6 +1,6 @@ /* * File: jquery.dataTables.js - * Version: 1.7.5 + * Version: 1.7.6 * Description: Paginate, search and sort HTML tables * Author: Allan Jardine (www.sprymedia.co.uk) * Created: 28/3/2008 @@ -68,7 +68,7 @@ * Notes: Allowed format is a.b.c.d.e where: * a:int, b:int, c:int, d:string(dev|beta), e:int. d and e are optional */ - _oExt.sVersion = "1.7.5"; + _oExt.sVersion = "1.7.6"; /* * Variable: sErrMode @@ -318,7 +318,7 @@ nPaging.appendChild( nPrevious ); nPaging.appendChild( nNext ); - $(nPrevious).click( function() { + $(nPrevious).bind( 'click.DT', function() { if ( oSettings.oApi._fnPageChange( oSettings, "previous" ) ) { /* Only draw when the page has actually changed */ @@ -326,7 +326,7 @@ } } ); - $(nNext).click( function() { + $(nNext).bind( 'click.DT', function() { if ( oSettings.oApi._fnPageChange( oSettings, "next" ) ) { fnCallbackDraw( oSettings ); @@ -334,8 +334,8 @@ } ); /* Take the brutal approach to cancelling text selection */ - $(nPrevious).bind( 'selectstart', function () { return false; } ); - $(nNext).bind( 'selectstart', function () { return false; } ); + $(nPrevious).bind( 'selectstart.DT', function () { return false; } ); + $(nNext).bind( 'selectstart.DT', function () { return false; } ); /* ID the first elements only */ if ( oSettings.sTableId !== '' && typeof oSettings.aanFeatures.p == "undefined" ) @@ -425,28 +425,28 @@ nPaging.appendChild( nNext ); nPaging.appendChild( nLast ); - $(nFirst).click( function () { + $(nFirst).bind( 'click.DT', function () { if ( oSettings.oApi._fnPageChange( oSettings, "first" ) ) { fnCallbackDraw( oSettings ); } } ); - $(nPrevious).click( function() { + $(nPrevious).bind( 'click.DT', function() { if ( oSettings.oApi._fnPageChange( oSettings, "previous" ) ) { fnCallbackDraw( oSettings ); } } ); - $(nNext).click( function() { + $(nNext).bind( 'click.DT', function() { if ( oSettings.oApi._fnPageChange( oSettings, "next" ) ) { fnCallbackDraw( oSettings ); } } ); - $(nLast).click( function() { + $(nLast).bind( 'click.DT', function() { if ( oSettings.oApi._fnPageChange( oSettings, "last" ) ) { fnCallbackDraw( oSettings ); @@ -455,8 +455,8 @@ /* Take the brutal approach to cancelling text selection */ $('span', nPaging) - .bind( 'mousedown', function () { return false; } ) - .bind( 'selectstart', function () { return false; } ); + .bind( 'mousedown.DT', function () { return false; } ) + .bind( 'selectstart.DT', function () { return false; } ); /* ID the first elements only */ if ( oSettings.sTableId !== '' && typeof oSettings.aanFeatures.p == "undefined" ) @@ -554,8 +554,8 @@ /* Build up the dynamic list forst - html and listeners */ var qjPaginateList = $('span:eq(2)', an[i]); qjPaginateList.html( sList ); - $('span', qjPaginateList).click( fnClick ).bind( 'mousedown', fnFalse ) - .bind( 'selectstart', fnFalse ); + $('span', qjPaginateList).bind( 'click.DT', fnClick ).bind( 'mousedown.DT', fnFalse ) + .bind( 'selectstart.DT', fnFalse ); /* Update the 'premanent botton's classes */ anButtons = an[i].getElementsByTagName('span'); @@ -1762,7 +1762,7 @@ { var iRow = (typeof mRow == 'object') ? _fnNodeToDataIndex(oSettings, mRow) : mRow; - return oSettings.aoData[iRow]._aData; + return ( (aRowData = oSettings.aoData[iRow]) ? aRowData._aData : null); } return _fnGetDataMaster( oSettings ); }; @@ -1782,7 +1782,7 @@ if ( typeof iRow != 'undefined' ) { - return oSettings.aoData[iRow].nTr; + return ( (aRowData = oSettings.aoData[iRow]) ? aRowData.nTr : null ); } return _fnGetTrNodes( oSettings ); }; @@ -1873,6 +1873,10 @@ oSettings.aoData[iRow].nTr.getElementsByTagName('td')[iVisibleColumn].innerHTML = sDisplay; } + else + { + oSettings.aoData[iRow]._anHidden[iColumn].innerHTML = sDisplay; + } } else { @@ -1909,6 +1913,10 @@ oSettings.aoData[iRow].nTr.getElementsByTagName('td')[iVisibleColumn].innerHTML = sDisplay; } + else + { + oSettings.aoData[iRow]._anHidden[i].innerHTML = sDisplay; + } } } @@ -2130,6 +2138,9 @@ /* Flag to note that the table is currently being destoryed - no action should be taken */ oSettings.bDestroying = true; + /* Blitz all DT events */ + $(oSettings.nTableWrapper).find('*').andSelf().unbind('.DT'); + /* Restore hidden columns */ for ( i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ ) { @@ -2214,7 +2225,7 @@ }; /* - * Function: _fnAjustColumnSizing + * Function: fnAjustColumnSizing * Purpose: Update tale sizing based on content. This would most likely be used for scrolling * and will typically need a redraw after it. * Returns: - @@ -2953,7 +2964,7 @@ _fnSortAttachListener( oSettings, oSettings.aoColumns[i].nTh, i ); /* Take the brutal approach to cancelling text selection in header */ - $(oSettings.aoColumns[i].nTh).mousedown( fnNoSelect ); + $(oSettings.aoColumns[i].nTh).bind( 'mousedown.DT', fnNoSelect ); } else { @@ -3621,6 +3632,7 @@ } nScrollHead.style.border = "0"; + nScrollHead.style.width = "100%"; nScrollFoot.style.border = "0"; nScrollHeadInner.style.width = "150%"; /* will be overwritten */ @@ -3858,6 +3870,7 @@ oStyle.paddingBottom = "0"; oStyle.borderTopWidth = "0"; oStyle.borderBottomWidth = "0"; + oStyle.height = 0; iWidth = $(nSizer).width(); nToSize.style.width = _fnStringToCss( iWidth ); @@ -3939,7 +3952,6 @@ var iOuterWidth = $(o.nTable).outerWidth(); nScrollHeadTable.style.width = _fnStringToCss( iOuterWidth ); nScrollHeadInner.style.width = _fnStringToCss( iOuterWidth+o.oScroll.iBarWidth ); - nScrollHeadInner.parentNode.style.width = _fnStringToCss( $(nScrollBody).width() ); if ( o.nTFoot !== null ) { @@ -4004,7 +4016,7 @@ var jqFilter = $("input", nFilter); jqFilter.val( oSettings.oPreviousSearch.sSearch.replace('"','"') ); - jqFilter.keyup( function(e) { + jqFilter.bind( 'keyup.DT', function(e) { /* Update all other filter input elements for the new display */ var n = oSettings.aanFeatures.f; for ( var i=0, iLen=n.length ; i<iLen ; i++ ) @@ -4026,7 +4038,7 @@ } } ); - jqFilter.keypress( function(e) { + jqFilter.bind( 'keypress.DT', function(e) { /* Prevent default */ if ( e.keyCode == 13 ) { @@ -4467,7 +4479,7 @@ */ function _fnSortAttachListener ( oSettings, nNode, iDataIndex, fnCallback ) { - $(nNode).click( function (e) { + $(nNode).bind( 'click.DT', function (e) { /* If the column is not sortable - don't to anything */ if ( oSettings.aoColumns[iDataIndex].bSortable === false ) { @@ -4996,7 +5008,7 @@ */ $('select option[value="'+oSettings._iDisplayLength+'"]',nLength).attr("selected",true); - $('select', nLength).change( function(e) { + $('select', nLength).bind( 'change.DT', function(e) { var iVal = $(this).val(); /* Update all other length options for the new display */ @@ -5405,7 +5417,7 @@ { if ( oSettings.aoColumns[i].bVisible ) { - iWidth = $(oNodes[iCorrector]).width(); + iWidth = $(oNodes[iCorrector]).outerWidth(); if ( iWidth !== null && iWidth > 0 ) { oSettings.aoColumns[i].sWidth = _fnStringToCss( iWidth ); @@ -6441,12 +6453,14 @@ return; } - /* Store 'this' in the settings object for later retrieval */ - oSettings.oInstance = _that; - /* Set the table node */ oSettings.nTable = this; + /* Keep a reference to the 'this' instance for the table. Note that if this table is being + * created with others, we retrieve a unique instance to ease API access. + */ + oSettings.oInstance = _that.length == 1 ? _that : $(this).dataTable(); + /* Bind the API functions to the settings, so we can perform actions whenever oSettings is * available */ @@ -6625,7 +6639,7 @@ /* Remove row stripe classes if they are already on the table row */ var bStripeRemove = false; - var anRows = $('tbody>tr', this); + var anRows = $('>tbody>tr', this); for ( i=0, iLen=oSettings.asStripClasses.length ; i<iLen ; i++ ) { if ( anRows.filter(":lt(2)").hasClass( oSettings.asStripClasses[i]) ) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jac...@us...> - 2011-04-02 12:51:07
|
Revision: 450 http://phpsysinfo.svn.sourceforge.net/phpsysinfo/?rev=450&view=rev Author: jacky672 Date: 2011-04-02 12:51:00 +0000 (Sat, 02 Apr 2011) Log Message: ----------- [UPD] Updated jQuery plugin to 1.5.2 Modified Paths: -------------- trunk/ChangeLog trunk/js/jQuery/README trunk/js/jQuery/jquery.js Modified: trunk/ChangeLog =================================================================== --- trunk/ChangeLog 2011-03-30 22:01:40 UTC (rev 449) +++ trunk/ChangeLog 2011-04-02 12:51:00 UTC (rev 450) @@ -7,7 +7,7 @@ - [FIX] Fix CPU detection on Mac OS X - [FIX] Fix uptime calculation parse error with Mac OS and FreeBSD - - [UPD] Updated jQuery plugin to 1.5.1 + - [UPD] Updated jQuery plugin to 1.5.2 - [UPD] Updated jQuery plugin DataTables to 1.7.6 phpSysInfo 3.0.10 Modified: trunk/js/jQuery/README =================================================================== --- trunk/js/jQuery/README 2011-03-30 22:01:40 UTC (rev 449) +++ trunk/js/jQuery/README 2011-04-02 12:51:00 UTC (rev 450) @@ -3,7 +3,7 @@ jquery.js --------- -VERSION : 1.5.1 +VERSION : 1.5.2 URL : http://jquery.com/ DESC : jQuery is a fast, concise, JavaScript Library that simplifies how you traverse HTML documents, handle events, perform animations, and add Ajax interactions to your web pages. Modified: trunk/js/jQuery/jquery.js =================================================================== --- trunk/js/jQuery/jquery.js 2011-03-30 22:01:40 UTC (rev 449) +++ trunk/js/jQuery/jquery.js 2011-04-02 12:51:00 UTC (rev 450) @@ -1,5 +1,5 @@ /*! - * jQuery JavaScript Library v1.5.1 + * jQuery JavaScript Library v1.5.2 * http://jquery.com/ * * Copyright 2011, John Resig @@ -11,7 +11,7 @@ * Copyright 2011, The Dojo Foundation * Released under the MIT, BSD, and GPL Licenses. * - * Date: Wed Feb 23 13:55:29 2011 -0500 + * Date: Thu Mar 31 15:28:23 2011 -0400 */ (function( window, undefined ) { @@ -69,15 +69,9 @@ // For matching the engine and version of the browser browserMatch, - // Has the ready events already been bound? - readyBound = false, - // The deferred used on DOM ready readyList, - // Promise methods - promiseMethods = "then done fail isResolved isRejected promise".split( " " ), - // The ready event handler DOMContentLoaded, @@ -202,7 +196,7 @@ selector: "", // The current version of jQuery being used - jquery: "1.5.1", + jquery: "1.5.2", // The default length of a jQuery object is 0 length: 0, @@ -427,11 +421,11 @@ }, bindReady: function() { - if ( readyBound ) { + if ( readyList ) { return; } - readyBound = true; + readyList = jQuery._Deferred(); // Catch cases where $(document).ready() is called after the // browser event has already occurred. @@ -811,6 +805,123 @@ return (new Date()).getTime(); }, + // Use of jQuery.browser is frowned upon. + // More details: http://docs.jquery.com/Utilities/jQuery.browser + uaMatch: function( ua ) { + ua = ua.toLowerCase(); + + var match = rwebkit.exec( ua ) || + ropera.exec( ua ) || + rmsie.exec( ua ) || + ua.indexOf("compatible") < 0 && rmozilla.exec( ua ) || + []; + + return { browser: match[1] || "", version: match[2] || "0" }; + }, + + sub: function() { + function jQuerySubclass( selector, context ) { + return new jQuerySubclass.fn.init( selector, context ); + } + jQuery.extend( true, jQuerySubclass, this ); + jQuerySubclass.superclass = this; + jQuerySubclass.fn = jQuerySubclass.prototype = this(); + jQuerySubclass.fn.constructor = jQuerySubclass; + jQuerySubclass.subclass = this.subclass; + jQuerySubclass.fn.init = function init( selector, context ) { + if ( context && context instanceof jQuery && !(context instanceof jQuerySubclass) ) { + context = jQuerySubclass(context); + } + + return jQuery.fn.init.call( this, selector, context, rootjQuerySubclass ); + }; + jQuerySubclass.fn.init.prototype = jQuerySubclass.fn; + var rootjQuerySubclass = jQuerySubclass(document); + return jQuerySubclass; + }, + + browser: {} +}); + +// Populate the class2type map +jQuery.each("Boolean Number String Function Array Date RegExp Object".split(" "), function(i, name) { + class2type[ "[object " + name + "]" ] = name.toLowerCase(); +}); + +browserMatch = jQuery.uaMatch( userAgent ); +if ( browserMatch.browser ) { + jQuery.browser[ browserMatch.browser ] = true; + jQuery.browser.version = browserMatch.version; +} + +// Deprecated, use jQuery.browser.webkit instead +if ( jQuery.browser.webkit ) { + jQuery.browser.safari = true; +} + +if ( indexOf ) { + jQuery.inArray = function( elem, array ) { + return indexOf.call( array, elem ); + }; +} + +// IE doesn't match non-breaking spaces with \s +if ( rnotwhite.test( "\xA0" ) ) { + trimLeft = /^[\s\xA0]+/; + trimRight = /[\s\xA0]+$/; +} + +// All jQuery objects should point back to these +rootjQuery = jQuery(document); + +// Cleanup functions for the document ready method +if ( document.addEventListener ) { + DOMContentLoaded = function() { + document.removeEventListener( "DOMContentLoaded", DOMContentLoaded, false ); + jQuery.ready(); + }; + +} else if ( document.attachEvent ) { + DOMContentLoaded = function() { + // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443). + if ( document.readyState === "complete" ) { + document.detachEvent( "onreadystatechange", DOMContentLoaded ); + jQuery.ready(); + } + }; +} + +// The DOM ready check for Internet Explorer +function doScrollCheck() { + if ( jQuery.isReady ) { + return; + } + + try { + // If IE is used, use the trick by Diego Perini + // http://javascript.nwbox.com/IEContentLoaded/ + document.documentElement.doScroll("left"); + } catch(e) { + setTimeout( doScrollCheck, 1 ); + return; + } + + // and execute any waiting functions + jQuery.ready(); +} + +// Expose jQuery to the global object +return jQuery; + +})(); + + +var // Promise methods + promiseMethods = "then done fail isResolved isRejected promise".split( " " ), + // Static reference to slice + sliceDeferred = [].slice; + +jQuery.extend({ // Create a simple deferred (one callbacks list) _Deferred: function() { var // callbacks list @@ -856,18 +967,14 @@ // resolve with given context and args resolveWith: function( context, args ) { if ( !cancelled && !fired && !firing ) { + // make sure args are available (#8421) + args = args || []; firing = 1; try { while( callbacks[ 0 ] ) { callbacks.shift().apply( context, args ); } } - // We have to add a catch block for - // IE prior to 8 or else the finally - // block will never get executed - catch (e) { - throw e; - } finally { fired = [ context, args ]; firing = 0; @@ -878,7 +985,7 @@ // resolve with this as context and given arguments resolve: function() { - deferred.resolveWith( jQuery.isFunction( this.promise ) ? this.promise() : this, arguments ); + deferred.resolveWith( this, arguments ); return this; }, @@ -941,155 +1048,46 @@ }, // Deferred helper - when: function( object ) { - var lastIndex = arguments.length, - deferred = lastIndex <= 1 && object && jQuery.isFunction( object.promise ) ? - object : - jQuery.Deferred(), - promise = deferred.promise(); - - if ( lastIndex > 1 ) { - var array = slice.call( arguments, 0 ), - count = lastIndex, - iCallback = function( index ) { - return function( value ) { - array[ index ] = arguments.length > 1 ? slice.call( arguments, 0 ) : value; - if ( !( --count ) ) { - deferred.resolveWith( promise, array ); - } - }; - }; - while( ( lastIndex-- ) ) { - object = array[ lastIndex ]; - if ( object && jQuery.isFunction( object.promise ) ) { - object.promise().then( iCallback(lastIndex), deferred.reject ); + when: function( firstParam ) { + var args = arguments, + i = 0, + length = args.length, + count = length, + deferred = length <= 1 && firstParam && jQuery.isFunction( firstParam.promise ) ? + firstParam : + jQuery.Deferred(); + function resolveFunc( i ) { + return function( value ) { + args[ i ] = arguments.length > 1 ? sliceDeferred.call( arguments, 0 ) : value; + if ( !( --count ) ) { + // Strange bug in FF4: + // Values changed onto the arguments object sometimes end up as undefined values + // outside the $.when method. Cloning the object into a fresh array solves the issue + deferred.resolveWith( deferred, sliceDeferred.call( args, 0 ) ); + } + }; + } + if ( length > 1 ) { + for( ; i < length; i++ ) { + if ( args[ i ] && jQuery.isFunction( args[ i ].promise ) ) { + args[ i ].promise().then( resolveFunc(i), deferred.reject ); } else { --count; } } if ( !count ) { - deferred.resolveWith( promise, array ); + deferred.resolveWith( deferred, args ); } - } else if ( deferred !== object ) { - deferred.resolve( object ); + } else if ( deferred !== firstParam ) { + deferred.resolveWith( deferred, length ? [ firstParam ] : [] ); } - return promise; - }, - - // Use of jQuery.browser is frowned upon. - // More details: http://docs.jquery.com/Utilities/jQuery.browser - uaMatch: function( ua ) { - ua = ua.toLowerCase(); - - var match = rwebkit.exec( ua ) || - ropera.exec( ua ) || - rmsie.exec( ua ) || - ua.indexOf("compatible") < 0 && rmozilla.exec( ua ) || - []; - - return { browser: match[1] || "", version: match[2] || "0" }; - }, - - sub: function() { - function jQuerySubclass( selector, context ) { - return new jQuerySubclass.fn.init( selector, context ); - } - jQuery.extend( true, jQuerySubclass, this ); - jQuerySubclass.superclass = this; - jQuerySubclass.fn = jQuerySubclass.prototype = this(); - jQuerySubclass.fn.constructor = jQuerySubclass; - jQuerySubclass.subclass = this.subclass; - jQuerySubclass.fn.init = function init( selector, context ) { - if ( context && context instanceof jQuery && !(context instanceof jQuerySubclass) ) { - context = jQuerySubclass(context); - } - - return jQuery.fn.init.call( this, selector, context, rootjQuerySubclass ); - }; - jQuerySubclass.fn.init.prototype = jQuerySubclass.fn; - var rootjQuerySubclass = jQuerySubclass(document); - return jQuerySubclass; - }, - - browser: {} + return deferred.promise(); + } }); -// Create readyList deferred -readyList = jQuery._Deferred(); -// Populate the class2type map -jQuery.each("Boolean Number String Function Array Date RegExp Object".split(" "), function(i, name) { - class2type[ "[object " + name + "]" ] = name.toLowerCase(); -}); -browserMatch = jQuery.uaMatch( userAgent ); -if ( browserMatch.browser ) { - jQuery.browser[ browserMatch.browser ] = true; - jQuery.browser.version = browserMatch.version; -} -// Deprecated, use jQuery.browser.webkit instead -if ( jQuery.browser.webkit ) { - jQuery.browser.safari = true; -} - -if ( indexOf ) { - jQuery.inArray = function( elem, array ) { - return indexOf.call( array, elem ); - }; -} - -// IE doesn't match non-breaking spaces with \s -if ( rnotwhite.test( "\xA0" ) ) { - trimLeft = /^[\s\xA0]+/; - trimRight = /[\s\xA0]+$/; -} - -// All jQuery objects should point back to these -rootjQuery = jQuery(document); - -// Cleanup functions for the document ready method -if ( document.addEventListener ) { - DOMContentLoaded = function() { - document.removeEventListener( "DOMContentLoaded", DOMContentLoaded, false ); - jQuery.ready(); - }; - -} else if ( document.attachEvent ) { - DOMContentLoaded = function() { - // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443). - if ( document.readyState === "complete" ) { - document.detachEvent( "onreadystatechange", DOMContentLoaded ); - jQuery.ready(); - } - }; -} - -// The DOM ready check for Internet Explorer -function doScrollCheck() { - if ( jQuery.isReady ) { - return; - } - - try { - // If IE is used, use the trick by Diego Perini - // http://javascript.nwbox.com/IEContentLoaded/ - document.documentElement.doScroll("left"); - } catch(e) { - setTimeout( doScrollCheck, 1 ); - return; - } - - // and execute any waiting functions - jQuery.ready(); -} - -// Expose jQuery to the global object -return jQuery; - -})(); - - (function() { jQuery.support = {}; @@ -1157,7 +1155,8 @@ boxModel: null, inlineBlockNeedsLayout: false, shrinkWrapBlocks: false, - reliableHiddenOffsets: true + reliableHiddenOffsets: true, + reliableMarginRight: true }; input.checked = true; @@ -1175,15 +1174,15 @@ script = document.createElement("script"), id = "script" + jQuery.now(); + // Make sure that the execution of code works by injecting a script + // tag with appendChild/createTextNode + // (IE doesn't support this, fails, and uses .text instead) try { script.appendChild( document.createTextNode( "window." + id + "=1;" ) ); } catch(e) {} root.insertBefore( script, root.firstChild ); - // Make sure that the execution of code works by injecting a script - // tag with appendChild/createTextNode - // (IE doesn't support this, fails, and uses .text instead) if ( window[ id ] ) { _scriptEval = true; delete window[ id ]; @@ -1192,8 +1191,6 @@ } root.removeChild( script ); - // release memory in IE - root = script = id = null; } return _scriptEval; @@ -1278,6 +1275,17 @@ jQuery.support.reliableHiddenOffsets = jQuery.support.reliableHiddenOffsets && tds[0].offsetHeight === 0; div.innerHTML = ""; + // Check if div with explicit width and no margin-right incorrectly + // gets computed margin-right based on width of container. For more + // info see bug #3333 + // Fails in WebKit before Feb 2011 nightlies + // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right + if ( document.defaultView && document.defaultView.getComputedStyle ) { + div.style.width = "1px"; + div.style.marginRight = "0"; + jQuery.support.reliableMarginRight = ( parseInt(document.defaultView.getComputedStyle(div, null).marginRight, 10) || 0 ) === 0; + } + body.removeChild( div ).style.display = "none"; div = tds = null; }); @@ -1301,8 +1309,6 @@ el.setAttribute(eventName, "return;"); isSupported = typeof el[eventName] === "function"; } - el = null; - return isSupported; }; @@ -2194,10 +2200,10 @@ } if ( !eventHandle ) { - elemData.handle = eventHandle = function() { + elemData.handle = eventHandle = function( e ) { // Handle the second event of a trigger and when // an event is called after a page has unloaded - return typeof jQuery !== "undefined" && !jQuery.event.triggered ? + return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ? jQuery.event.handle.apply( eventHandle.elem, arguments ) : undefined; }; @@ -2504,7 +2510,7 @@ target[ "on" + targetType ] = null; } - jQuery.event.triggered = true; + jQuery.event.triggered = event.type; target[ targetType ](); } @@ -2515,7 +2521,7 @@ target[ "on" + targetType ] = old; } - jQuery.event.triggered = false; + jQuery.event.triggered = undefined; } } }, @@ -2785,7 +2791,7 @@ // Chrome does something similar, the parentNode property // can be accessed but is null. - if ( parent !== document && !parent.parentNode ) { + if ( parent && parent !== document && !parent.parentNode ) { return; } // Traverse up the tree @@ -2992,19 +2998,33 @@ // Create "bubbling" focus and blur events if ( document.addEventListener ) { jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) { + + // Attach a single capturing handler while someone wants focusin/focusout + var attaches = 0; + jQuery.event.special[ fix ] = { setup: function() { - this.addEventListener( orig, handler, true ); + if ( attaches++ === 0 ) { + document.addEventListener( orig, handler, true ); + } }, teardown: function() { - this.removeEventListener( orig, handler, true ); + if ( --attaches === 0 ) { + document.removeEventListener( orig, handler, true ); + } } }; - function handler( e ) { - e = jQuery.event.fix( e ); + function handler( donor ) { + // Donor event is always a native one; fix it and switch its type. + // Let focusin/out handler cancel the donor focus/blur event. + var e = jQuery.event.fix( donor ); e.type = fix; - return jQuery.event.handle.call( this, e ); + e.originalEvent = {}; + jQuery.event.trigger( e, null, e.target ); + if ( e.isDefaultPrevented() ) { + donor.preventDefault(); + } } }); } @@ -3918,10 +3938,12 @@ }, text: function( elem ) { + var attr = elem.getAttribute( "type" ), type = elem.type; // IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc) // use getAttribute instead to test this case - return "text" === elem.getAttribute( 'type' ); + return "text" === type && ( attr === type || attr === null ); }, + radio: function( elem ) { return "radio" === elem.type; }, @@ -4496,19 +4518,23 @@ (function(){ var html = document.documentElement, - matches = html.matchesSelector || html.mozMatchesSelector || html.webkitMatchesSelector || html.msMatchesSelector, - pseudoWorks = false; + matches = html.matchesSelector || html.mozMatchesSelector || html.webkitMatchesSelector || html.msMatchesSelector; - try { - // This should fail with an exception - // Gecko does not error, returns false instead - matches.call( document.documentElement, "[test!='']:sizzle" ); + if ( matches ) { + // Check to see if it's possible to do matchesSelector + // on a disconnected node (IE 9 fails this) + var disconnectedMatch = !matches.call( document.createElement( "div" ), "div" ), + pseudoWorks = false; + + try { + // This should fail with an exception + // Gecko does not error, returns false instead + matches.call( document.documentElement, "[test!='']:sizzle" ); - } catch( pseudoError ) { - pseudoWorks = true; - } + } catch( pseudoError ) { + pseudoWorks = true; + } - if ( matches ) { Sizzle.matchesSelector = function( node, expr ) { // Make sure that attribute selectors are quoted expr = expr.replace(/\=\s*([^'"\]]*)\s*\]/g, "='$1']"); @@ -4516,7 +4542,15 @@ if ( !Sizzle.isXML( node ) ) { try { if ( pseudoWorks || !Expr.match.PSEUDO.test( expr ) && !/!=/.test( expr ) ) { - return matches.call( node, expr ); + var ret = matches.call( node, expr ); + + // IE 9's matchesSelector returns false on disconnected nodes + if ( ret || !disconnectedMatch || + // As well, disconnected nodes are said to be in a document + // fragment in IE 9, so check for that + node.document && node.document.nodeType !== 11 ) { + return ret; + } } } catch(e) {} } @@ -5260,7 +5294,9 @@ } }); } else { - return this.pushStack( jQuery(jQuery.isFunction(value) ? value() : value), "replaceWith", value ); + return this.length ? + this.pushStack( jQuery(jQuery.isFunction(value) ? value() : value), "replaceWith", value ) : + this; } }, @@ -5707,7 +5743,8 @@ var ralpha = /alpha\([^)]*\)/i, ropacity = /opacity=([^)]*)/, rdashAlpha = /-([a-z])/ig, - rupper = /([A-Z])/g, + // fixed for IE9, see #8346 + rupper = /([A-Z]|^ms)/g, rnumpx = /^-?\d+(?:px)?$/i, rnum = /^-?\d/, @@ -5944,6 +5981,28 @@ }; } +jQuery(function() { + // This hook cannot be added until DOM ready because the support test + // for it is not run until after DOM ready + if ( !jQuery.support.reliableMarginRight ) { + jQuery.cssHooks.marginRight = { + get: function( elem, computed ) { + // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right + // Work around by temporarily setting element display to inline-block + var ret; + jQuery.swap( elem, { "display": "inline-block" }, function() { + if ( computed ) { + ret = curCSS( elem, "margin-right", "marginRight" ); + } else { + ret = elem.style.marginRight; + } + }); + return ret; + } + }; + } +}); + if ( document.defaultView && document.defaultView.getComputedStyle ) { getComputedStyle = function( elem, newName, name ) { var ret, defaultView, computedStyle; @@ -6048,7 +6107,7 @@ rheaders = /^(.*?):[ \t]*([^\r\n]*)\r?$/mg, // IE leaves an \r character at EOL rinput = /^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i, // #7653, #8125, #8152: local protocol detection - rlocalProtocol = /(?:^file|^widget|\-extension):$/, + rlocalProtocol = /^(?:about|app|app\-storage|.+\-extension|file|widget):$/, rnoContent = /^(?:GET|HEAD)$/, rprotocol = /^\/\//, rquery = /\?/, @@ -6060,7 +6119,7 @@ rucHeadersFunc = function( _, $1, $2 ) { return $1 + $2.toUpperCase(); }, - rurl = /^([\w\+\.\-]+:)\/\/([^\/?#:]*)(?::(\d+))?/, + rurl = /^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/, // Keep a copy of the old load method _load = jQuery.fn.load, @@ -6102,7 +6161,7 @@ } // Segment location into parts -ajaxLocParts = rurl.exec( ajaxLocation.toLowerCase() ); +ajaxLocParts = rurl.exec( ajaxLocation.toLowerCase() ) || []; // Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport function addToPrefiltersOrTransports( structure ) { @@ -6360,7 +6419,6 @@ cache: null, traditional: false, headers: {}, - crossDomain: null, */ accepts: { @@ -6645,7 +6703,7 @@ s.dataTypes = jQuery.trim( s.dataType || "*" ).toLowerCase().split( rspacesAjax ); // Determine if a cross-domain request is in order - if ( !s.crossDomain ) { + if ( s.crossDomain == null ) { parts = rurl.exec( s.url.toLowerCase() ); s.crossDomain = !!( parts && ( parts[ 1 ] != ajaxLocParts[ 1 ] || parts[ 2 ] != ajaxLocParts[ 2 ] || @@ -7024,7 +7082,7 @@ var jsc = jQuery.now(), - jsre = /(\=)\?(&|$)|()\?\?()/i; + jsre = /(\=)\?(&|$)|\?\?/i; // Default jsonp settings jQuery.ajaxSetup({ @@ -7285,11 +7343,12 @@ xhr.overrideMimeType( s.mimeType ); } - // Requested-With header - // Not set for crossDomain requests with no content - // (see why at http://trac.dojotoolkit.org/ticket/9486) - // Won't change header if already provided - if ( !( s.crossDomain && !s.hasContent ) && !headers["X-Requested-With"] ) { + // X-Requested-With header + // For cross-domain requests, seeing as conditions for a preflight are + // akin to a jigsaw puzzle, we simply never set it to be sure. + // (it can always be set on a per-request basis or even using ajaxSetup) + // For same-domain requests, won't change header if already provided. + if ( !s.crossDomain && !headers["X-Requested-With"] ) { headers[ "X-Requested-With" ] = "XMLHttpRequest"; } @@ -7979,8 +8038,8 @@ win = getWindow(doc), clientTop = docElem.clientTop || body.clientTop || 0, clientLeft = docElem.clientLeft || body.clientLeft || 0, - scrollTop = (win.pageYOffset || jQuery.support.boxModel && docElem.scrollTop || body.scrollTop ), - scrollLeft = (win.pageXOffset || jQuery.support.boxModel && docElem.scrollLeft || body.scrollLeft), + scrollTop = win.pageYOffset || jQuery.support.boxModel && docElem.scrollTop || body.scrollTop, + scrollLeft = win.pageXOffset || jQuery.support.boxModel && docElem.scrollLeft || body.scrollLeft, top = box.top + scrollTop - clientTop, left = box.left + scrollLeft - clientLeft; @@ -8093,7 +8152,6 @@ this.doesNotIncludeMarginInBodyOffset = (body.offsetTop !== bodyMarginTop); body.removeChild( container ); - body = container = innerDiv = checkDiv = table = td = null; jQuery.offset.initialize = jQuery.noop; }, @@ -8123,10 +8181,10 @@ curOffset = curElem.offset(), curCSSTop = jQuery.css( elem, "top" ), curCSSLeft = jQuery.css( elem, "left" ), - calculatePosition = (position === "absolute" && jQuery.inArray('auto', [curCSSTop, curCSSLeft]) > -1), + calculatePosition = (position === "absolute" || position === "fixed") && jQuery.inArray('auto', [curCSSTop, curCSSLeft]) > -1, props = {}, curPosition = {}, curTop, curLeft; - // need to be able to calculate position if either top or left is auto and position is absolute + // need to be able to calculate position if either top or left is auto and position is either absolute or fixed if ( calculatePosition ) { curPosition = curElem.position(); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jac...@us...> - 2011-05-13 06:40:59
|
Revision: 465 http://phpsysinfo.svn.sourceforge.net/phpsysinfo/?rev=465&view=rev Author: jacky672 Date: 2011-05-13 06:40:52 +0000 (Fri, 13 May 2011) Log Message: ----------- [UPD] Updated jQuery plugin to 1.6.1 Modified Paths: -------------- trunk/ChangeLog trunk/js/jQuery/README trunk/js/jQuery/jquery.js Modified: trunk/ChangeLog =================================================================== --- trunk/ChangeLog 2011-05-03 17:23:23 UTC (rev 464) +++ trunk/ChangeLog 2011-05-13 06:40:52 UTC (rev 465) @@ -3,7 +3,7 @@ phpSysInfo 3.0.12 - [ADD] SNMPPInfo status plugin (printers status via SNMP) - - [UPD] Updated jQuery plugin to 1.6 + - [UPD] Updated jQuery plugin to 1.6.1 phpSysInfo 3.0.11 - [ADD] Added date of the last boot Modified: trunk/js/jQuery/README =================================================================== --- trunk/js/jQuery/README 2011-05-03 17:23:23 UTC (rev 464) +++ trunk/js/jQuery/README 2011-05-13 06:40:52 UTC (rev 465) @@ -3,7 +3,7 @@ jquery.js --------- -VERSION : 1.6 +VERSION : 1.6.1 URL : http://jquery.com/ DESC : jQuery is a fast, concise, JavaScript Library that simplifies how you traverse HTML documents, handle events, perform animations, and add Ajax interactions to your web pages. Modified: trunk/js/jQuery/jquery.js =================================================================== --- trunk/js/jQuery/jquery.js 2011-05-03 17:23:23 UTC (rev 464) +++ trunk/js/jQuery/jquery.js 2011-05-13 06:40:52 UTC (rev 465) @@ -1,5 +1,5 @@ /*! - * jQuery JavaScript Library v1.6 + * jQuery JavaScript Library v1.6.1 * http://jquery.com/ * * Copyright 2011, John Resig @@ -11,7 +11,7 @@ * Copyright 2011, The Dojo Foundation * Released under the MIT, BSD, and GPL Licenses. * - * Date: Mon May 2 13:50:00 2011 -0400 + * Date: Thu May 12 15:04:36 2011 -0400 */ (function( window, undefined ) { @@ -204,7 +204,7 @@ selector: "", // The current version of jQuery being used - jquery: "1.6", + jquery: "1.6.1", // The default length of a jQuery object is 0 length: 0, @@ -1055,7 +1055,7 @@ if ( jQuery.isFunction( fn ) ) { deferred[ handler ](function() { returned = fn.apply( this, arguments ); - if ( jQuery.isFunction( returned.promise ) ) { + if ( returned && jQuery.isFunction( returned.promise ) ) { returned.promise().then( newDefer.resolve, newDefer.reject ); } else { newDefer[ action ]( returned ); @@ -1137,6 +1137,7 @@ jQuery.support = (function() { var div = document.createElement( "div" ), + documentElement = document.documentElement, all, a, select, @@ -1284,7 +1285,7 @@ body.style[ i ] = bodyStyle[ i ]; } body.appendChild( div ); - document.documentElement.appendChild( body ); + documentElement.insertBefore( body, documentElement.firstChild ); // Check if a disconnected checkbox will retain its checked // value of true after appended to the DOM (IE6/7) @@ -1339,12 +1340,12 @@ marginDiv.style.marginRight = "0"; div.appendChild( marginDiv ); support.reliableMarginRight = - ( parseInt( document.defaultView.getComputedStyle( marginDiv, null ).marginRight, 10 ) || 0 ) === 0; + ( parseInt( ( document.defaultView.getComputedStyle( marginDiv, null ) || { marginRight: 0 } ).marginRight, 10 ) || 0 ) === 0; } // Remove the body element we added body.innerHTML = ""; - document.documentElement.removeChild( body ); + documentElement.removeChild( body ); // Technique from Juriy Zaytsev // http://thinkweb2.com/projects/prototype/detecting-event-support-without-browser-sniffing/ @@ -1475,7 +1476,7 @@ } if ( data !== undefined ) { - thisCache[ name ] = data; + thisCache[ jQuery.camelCase( name ) ] = data; } // TODO: This is a hack for 1.5 ONLY. It will be removed in 1.6. Users should @@ -1485,7 +1486,7 @@ return thisCache[ internalKey ] && thisCache[ internalKey ].events; } - return getByName ? thisCache[ name ] : thisCache; + return getByName ? thisCache[ jQuery.camelCase( name ) ] : thisCache; }, removeData: function( elem, name, pvt /* Internal Use Only */ ) { @@ -1661,7 +1662,7 @@ // If nothing was found internally, try to fetch any // data from the HTML5 data-* attribute if ( data === undefined && elem.nodeType === 1 ) { - name = "data-" + key.replace( rmultiDash, "$1-$2" ).toLowerCase(); + var name = "data-" + key.replace( rmultiDash, "$1-$2" ).toLowerCase(); data = elem.getAttribute( name ); @@ -1850,7 +1851,8 @@ count = 1, deferDataKey = type + "defer", queueDataKey = type + "queue", - markDataKey = type + "mark"; + markDataKey = type + "mark", + tmp; function resolve() { if ( !( --count ) ) { defer.resolveWith( elements, [ elements ] ); @@ -1879,9 +1881,9 @@ rtype = /^(?:button|input)$/i, rfocusable = /^(?:button|input|object|select|textarea)$/i, rclickable = /^a(?:rea)?$/i, - rspecial = /^(?:data-|aria-)/, + rboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i, rinvalidChar = /\:/, - formHook; + formHook, boolHook; jQuery.fn.extend({ attr: function( name, value ) { @@ -1899,6 +1901,7 @@ }, removeProp: function( name ) { + name = jQuery.propFix[ name ] || name; return this.each(function() { // try/catch handles cases where IE balks (such as removing a property on window) try { @@ -2072,7 +2075,7 @@ hooks = jQuery.valHooks[ this.nodeName.toLowerCase() ] || jQuery.valHooks[ this.type ]; // If set returns undefined, fall back to normal setting - if ( !hooks || ("set" in hooks && hooks.set( this, val, "value" ) === undefined) ) { + if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) { this.value = val; } }); @@ -2091,7 +2094,8 @@ }, select: { get: function( elem ) { - var index = elem.selectedIndex, + var value, + index = elem.selectedIndex, values = [], options = elem.options, one = elem.type === "select-one"; @@ -2158,8 +2162,7 @@ attrFix: { // Always normalize to ensure hook usage - tabindex: "tabIndex", - readonly: "readOnly" + tabindex: "tabIndex" }, attr: function( elem, name, value, pass ) { @@ -2173,23 +2176,36 @@ if ( pass && name in jQuery.attrFn ) { return jQuery( elem )[ name ]( value ); } - + + // Fallback to prop when attributes are not supported + if ( !("getAttribute" in elem) ) { + return jQuery.prop( elem, name, value ); + } + var ret, hooks, notxml = nType !== 1 || !jQuery.isXMLDoc( elem ); - + // Normalize the name if needed name = notxml && jQuery.attrFix[ name ] || name; - // Get the appropriate hook, or the formHook - // if getSetAttribute is not supported and we have form objects in IE6/7 - hooks = jQuery.attrHooks[ name ] || - ( formHook && (jQuery.nodeName( elem, "form" ) || rinvalidChar.test( name )) ? - formHook : - undefined ); + hooks = jQuery.attrHooks[ name ]; + if ( !hooks ) { + // Use boolHook for boolean attributes + if ( rboolean.test( name ) && + (typeof value === "boolean" || value === undefined || value.toLowerCase() === name.toLowerCase()) ) { + + hooks = boolHook; + + // Use formHook for forms and if the name contains certain characters + } else if ( formHook && (jQuery.nodeName( elem, "form" ) || rinvalidChar.test( name )) ) { + hooks = formHook; + } + } + if ( value !== undefined ) { - if ( value === null || (value === false && !rspecial.test( name )) ) { + if ( value === null ) { jQuery.removeAttr( elem, name ); return undefined; @@ -2197,34 +2213,26 @@ return ret; } else { - - // Set boolean attributes to the same name - if ( value === true && !rspecial.test( name ) ) { - value = name; - } - elem.setAttribute( name, "" + value ); return value; } + } else if ( hooks && "get" in hooks && notxml ) { + return hooks.get( elem, name ); + } else { - if ( hooks && "get" in hooks && notxml ) { - return hooks.get( elem, name ); + ret = elem.getAttribute( name ); - } else { - - ret = elem.getAttribute( name ); - - // Non-existent attributes return null, we normalize to undefined - return ret === null ? - undefined : - ret; - } + // Non-existent attributes return null, we normalize to undefined + return ret === null ? + undefined : + ret; } }, - + removeAttr: function( elem, name ) { + var propName; if ( elem.nodeType === 1 ) { name = jQuery.attrFix[ name ] || name; @@ -2235,6 +2243,11 @@ jQuery.attr( elem, name, "" ); elem.removeAttributeNode( elem.getAttributeNode( name ) ); } + + // Set corresponding property to false for boolean attributes + if ( rboolean.test( name ) && (propName = jQuery.propFix[ name ] || name) in elem ) { + elem[ propName ] = false; + } } }, @@ -2248,7 +2261,7 @@ // Setting the type on a radio button after the value resets the value in IE6-9 // Reset value to it's default in case type is set after value // This is for element creation - var val = elem.getAttribute("value"); + var val = elem.value; elem.setAttribute( "type", value ); if ( val ) { elem.value = val; @@ -2271,37 +2284,50 @@ } } }, + + propFix: { + tabindex: "tabIndex", + readonly: "readOnly", + "for": "htmlFor", + "class": "className", + maxlength: "maxLength", + cellspacing: "cellSpacing", + cellpadding: "cellPadding", + rowspan: "rowSpan", + colspan: "colSpan", + usemap: "useMap", + frameborder: "frameBorder", + contenteditable: "contentEditable" + }, - propFix: {}, - prop: function( elem, name, value ) { var nType = elem.nodeType; - + // don't get/set properties on text, comment and attribute nodes if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { return undefined; } - + var ret, hooks, notxml = nType !== 1 || !jQuery.isXMLDoc( elem ); - + // Try to normalize/fix the name name = notxml && jQuery.propFix[ name ] || name; hooks = jQuery.propHooks[ name ]; - + if ( value !== undefined ) { if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) { return ret; - + } else { return (elem[ name ] = value); } - + } else { if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== undefined ) { return ret; - + } else { return elem[ name ]; } @@ -2311,30 +2337,65 @@ propHooks: {} }); +// Hook for boolean attributes +boolHook = { + get: function( elem, name ) { + // Align boolean attributes with corresponding properties + return elem[ jQuery.propFix[ name ] || name ] ? + name.toLowerCase() : + undefined; + }, + set: function( elem, value, name ) { + var propName; + if ( value === false ) { + // Remove boolean attributes when set to false + jQuery.removeAttr( elem, name ); + } else { + // value is true since we know at this point it's type boolean and not false + // Set boolean attributes to the same name and set the DOM property + propName = jQuery.propFix[ name ] || name; + if ( propName in elem ) { + // Only set the IDL specifically if it already exists on the element + elem[ propName ] = value; + } + + elem.setAttribute( name, name.toLowerCase() ); + } + return name; + } +}; + +// Use the value property for back compat +// Use the formHook for button elements in IE6/7 (#1954) +jQuery.attrHooks.value = { + get: function( elem, name ) { + if ( formHook && jQuery.nodeName( elem, "button" ) ) { + return formHook.get( elem, name ); + } + return elem.value; + }, + set: function( elem, value, name ) { + if ( formHook && jQuery.nodeName( elem, "button" ) ) { + return formHook.set( elem, value, name ); + } + // Does not return so that setAttribute is also used + elem.value = value; + } +}; + // IE6/7 do not support getting/setting some attributes with get/setAttribute if ( !jQuery.support.getSetAttribute ) { - jQuery.attrFix = jQuery.extend( jQuery.attrFix, { - "for": "htmlFor", - "class": "className", - maxlength: "maxLength", - cellspacing: "cellSpacing", - cellpadding: "cellPadding", - rowspan: "rowSpan", - colspan: "colSpan", - usemap: "useMap", - frameborder: "frameBorder" - }); + + // propFix is more comprehensive and contains all fixes + jQuery.attrFix = jQuery.propFix; // Use this for any attribute on a form in IE6/7 - formHook = jQuery.attrHooks.name = jQuery.attrHooks.value = jQuery.valHooks.button = { + formHook = jQuery.attrHooks.name = jQuery.valHooks.button = { get: function( elem, name ) { var ret; - if ( name === "value" && !jQuery.nodeName( elem, "button" ) ) { - return elem.getAttribute( name ); - } ret = elem.getAttributeNode( name ); - // Return undefined if not specified instead of empty string - return ret && ret.specified ? + // Return undefined if nodeValue is empty string + return ret && ret.nodeValue !== "" ? ret.nodeValue : undefined; }, @@ -3086,6 +3147,9 @@ // Check if mouse(over|out) are still within the same parent element var parent = event.relatedTarget; + // set the correct event type + event.type = event.data; + // Firefox sometimes assigns relatedTarget a XUL element // which we cannot access the parentNode property of try { @@ -3095,15 +3159,13 @@ if ( parent && parent !== document && !parent.parentNode ) { return; } + // Traverse up the tree while ( parent && parent !== this ) { parent = parent.parentNode; } if ( parent !== this ) { - // set the correct event type - event.type = event.data; - // handle event if we actually just moused on to a non sub-element jQuery.event.handle.apply( this, arguments ); } @@ -4291,7 +4353,8 @@ }, reset: function( elem ) { - return elem.nodeName.toLowerCase() === "input" && "reset" === elem.type; + var name = elem.nodeName.toLowerCase(); + return (name === "input" || name === "button") && "reset" === elem.type; }, button: function( elem ) { @@ -4557,6 +4620,16 @@ } else { sortOrder = function( a, b ) { + // The nodes are identical, we can exit early + if ( a === b ) { + hasDuplicate = true; + return 0; + + // Fallback to using sourceIndex (in IE) if it's available on both nodes + } else if ( a.sourceIndex && b.sourceIndex ) { + return a.sourceIndex - b.sourceIndex; + } + var al, bl, ap = [], bp = [], @@ -4564,13 +4637,8 @@ bup = b.parentNode, cur = aup; - // The nodes are identical, we can exit early - if ( a === b ) { - hasDuplicate = true; - return 0; - // If the nodes are siblings (or identical) we can do a quick check - } else if ( aup === bup ) { + if ( aup === bup ) { return siblingCheck( a, b ); // If no parents were found then the nodes are disconnected @@ -5394,6 +5462,7 @@ // checked="checked" or checked rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i, rscriptType = /\/(java|ecma)script/i, + rcleanScript = /^\s*<!(?:\[CDATA\[|\-\-)/, wrapMap = { option: [ 1, "<select multiple='multiple'>", "</select>" ], legend: [ 1, "<fieldset>", "</fieldset>" ], @@ -5884,7 +5953,7 @@ function getAll( elem ) { if ( "getElementsByTagName" in elem ) { return elem.getElementsByTagName( "*" ); - + } else if ( "querySelectorAll" in elem ) { return elem.querySelectorAll( "*" ); @@ -5966,7 +6035,7 @@ context = context.ownerDocument || context[0] && context[0].ownerDocument || document; } - var ret = []; + var ret = [], j; for ( var i = 0, elem; (elem = elems[i]) != null; i++ ) { if ( typeof elem === "number" ) { @@ -6012,7 +6081,7 @@ div.childNodes : []; - for ( var j = tbody.length - 1; j >= 0 ; --j ) { + for ( j = tbody.length - 1; j >= 0 ; --j ) { if ( jQuery.nodeName( tbody[ j ], "tbody" ) && !tbody[ j ].childNodes.length ) { tbody[ j ].parentNode.removeChild( tbody[ j ] ); } @@ -6033,8 +6102,8 @@ var len; if ( !jQuery.support.appendChecked ) { if ( elem[0] && typeof (len = elem.length) === "number" ) { - for ( i = 0; i < len; i++ ) { - findInputs( elem[i] ); + for ( j = 0; j < len; j++ ) { + findInputs( elem[j] ); } } else { findInputs( elem ); @@ -6122,7 +6191,7 @@ dataType: "script" }); } else { - jQuery.globalEval( elem.text || elem.textContent || elem.innerHTML || "" ); + jQuery.globalEval( ( elem.text || elem.textContent || elem.innerHTML || "" ).replace( rcleanScript, "/*$0*/" ) ); } if ( elem.parentNode ) { @@ -7999,6 +8068,9 @@ return this.each( optall.complete, [ false ] ); } + // Do not change referenced properties as per-property easing will be lost + prop = jQuery.extend( {}, prop ); + return this[ optall.queue === false ? "each" : "queue" ](function() { // XXX 'this' does not always have a nodeName when running the // test suite @@ -8007,7 +8079,7 @@ jQuery._mark( this ); } - var opt = jQuery.extend({}, optall), + var opt = jQuery.extend( {}, optall ), isElement = this.nodeType === 1, hidden = isElement && jQuery(this).is(":hidden"), name, val, p, @@ -8026,10 +8098,18 @@ delete prop[ p ]; } - val = prop[name]; + val = prop[ name ]; + // easing resolution: per property > opt.specialEasing > opt.easing > 'swing' (default) + if ( jQuery.isArray( val ) ) { + opt.animatedProperties[ name ] = val[ 1 ]; + val = prop[ name ] = val[ 0 ]; + } else { + opt.animatedProperties[ name ] = opt.specialEasing && opt.specialEasing[ name ] || opt.easing || 'swing'; + } + if ( val === "hide" && hidden || val === "show" && !hidden ) { - return opt.complete.call(this); + return opt.complete.call( this ); } if ( isElement && ( name === "height" || name === "width" ) ) { @@ -8048,7 +8128,7 @@ this.style.display = "inline-block"; } else { - display = defaultDisplay(this.nodeName); + display = defaultDisplay( this.nodeName ); // inline-level elements accept inline-block; // block-level elements need to be inline with layout @@ -8062,11 +8142,6 @@ } } } - - // easing resolution: per property > opt.specialEasing > opt.easing > 'swing' (default) - opt.animatedProperties[name] = jQuery.isArray( val ) ? - val[1]: - opt.specialEasing && opt.specialEasing[name] || opt.easing || 'swing'; } if ( opt.overflow != null ) { @@ -8075,19 +8150,18 @@ for ( p in prop ) { e = new jQuery.fx( this, opt, p ); + val = prop[ p ]; - val = prop[p]; - if ( rfxtypes.test(val) ) { e[ val === "toggle" ? hidden ? "show" : "hide" : val ](); } else { - parts = rfxnum.exec(val); + parts = rfxnum.exec( val ); start = e.cur(); if ( parts ) { end = parseFloat( parts[2] ); - unit = parts[3] || ( jQuery.cssNumber[ name ] ? "" : "px" ); + unit = parts[3] || ( jQuery.cssNumber[ p ] ? "" : "px" ); // We need to compute starting value if ( unit !== "px" ) { @@ -8098,7 +8172,7 @@ // If a +=/-= token was provided, we're doing a relative animation if ( parts[1] ) { - end = ((parts[1] === "-=" ? -1 : 1) * end) + start; + end = ( (parts[ 1 ] === "-=" ? -1 : 1) * end ) + start; } e.custom( start, end, unit ); @@ -8126,7 +8200,6 @@ if ( !gotoEnd ) { jQuery._unmark( true, this ); } - // go in reverse order so anything added to the queue during the loop is ignored while ( i-- ) { if ( timers[i].elem === this ) { if (gotoEnd) { @@ -8374,10 +8447,10 @@ this.now = t; } else { n = t - this.startTime; + this.state = n / options.duration; - this.state = n / options.duration; // Perform the easing function, defaults to swing - this.pos = jQuery.easing[options.animatedProperties[this.prop]](this.state, n, 0, 1, options.duration); + this.pos = jQuery.easing[ options.animatedProperties[ this.prop ] ]( this.state, n, 0, 1, options.duration ); this.now = this.start + ((this.end - this.start) * this.pos); } // Perform the next step of the animation @@ -8390,11 +8463,9 @@ jQuery.extend( jQuery.fx, { tick: function() { - var timers = jQuery.timers, - i = timers.length; - while ( i-- ) { + for ( var timers = jQuery.timers, i = 0 ; i < timers.length ; ++i ) { if ( !timers[i]() ) { - timers.splice(i, 1); + timers.splice(i--, 1); } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jac...@us...> - 2011-05-21 05:44:22
|
Revision: 466 http://phpsysinfo.svn.sourceforge.net/phpsysinfo/?rev=466&view=rev Author: jacky672 Date: 2011-05-21 05:44:13 +0000 (Sat, 21 May 2011) Log Message: ----------- [ADD] Partial support of IBM AIX Modified Paths: -------------- trunk/ChangeLog Added Paths: ----------- trunk/gfx/images/AIX.png trunk/includes/os/class.AIX.inc.php Modified: trunk/ChangeLog =================================================================== --- trunk/ChangeLog 2011-05-13 06:40:52 UTC (rev 465) +++ trunk/ChangeLog 2011-05-21 05:44:13 UTC (rev 466) @@ -2,6 +2,7 @@ phpSysInfo 3.0.12 - [ADD] SNMPPInfo status plugin (printers status via SNMP) + - [ADD] Partial support of IBM AIX - [UPD] Updated jQuery plugin to 1.6.1 Added: trunk/gfx/images/AIX.png =================================================================== (Binary files differ) Property changes on: trunk/gfx/images/AIX.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/includes/os/class.AIX.inc.php =================================================================== --- trunk/includes/os/class.AIX.inc.php (rev 0) +++ trunk/includes/os/class.AIX.inc.php 2011-05-21 05:44:13 UTC (rev 466) @@ -0,0 +1,381 @@ +<?php +/** + * IBM AIX System Class + * + * PHP version 5 + * + * @category PHP + * @package PSI_OS + * @author Krzysztof Paz (kp...@ga...) based on HPUX of Michael Cramer <Big...@us...> + * @copyright 2011 Krzysztof Paz + * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License + * @version SVN: $Id: class.AIX.inc.php 287 2009-06-26 12:11:59Z Krzysztof Paz, IBM POLSKA + * @link http://phpsysinfo.sourceforge.net + */ +/** +* IBM AIX sysinfo class +* get all the required information from IBM AIX system +* +* @category PHP +* @package PSI_OS +* @author Krzysztof Paz (kp...@ga...) based on Michael Cramer <Big...@us...> +* @copyright 2011 Krzysztof Paz +* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License +* @version Release: 3.0 +* @link http://phpsysinfo.sourceforge.net +*/ +class AIX extends OS +{ + + private $myprtconf = array(); + + /** + * Virtual Host Name + * @return void + */ + private function _hostname() + { + /* if (PSI_USE_VHOST === true) { + $this->sys->setHostname(getenv('SERVER_NAME')); + } else { + if (CommonFunctions::executeProgram('hostname', '', $ret)) { + $this->sys->setHostname($ret); + } + } */ + $this->sys->setHostname(getenv('SERVER_NAME')); + + } + + /** + * IP of the Virtual Host Name + * @return void + */ + private function _ip() + { + if (PSI_USE_VHOST === true) + { + $this->sys->setIp(gethostbyname($this->_hostname())); + } + else + { + if (!($result = getenv('SERVER_ADDR'))) + { + $this->sys->setIp(gethostbyname($this->_hostname())); + } + else + { + $this->sys->setIp($result); + } + } + } + + /** + * IBM AIX Version + * @return void + */ + private function _kernel() + { + if (CommonFunctions::executeProgram('oslevel', '', $ret1) && CommonFunctions::executeProgram('oslevel', '-s', $ret2)) + { + $this->sys->setKernel($ret1 . ' (' . $ret2 . ')'); + } + } + + /** + * UpTime + * time the system is running + * @return void + */ + private function _uptime() + { + if (CommonFunctions::executeProgram('uptime', '', $buf)) + { + if (preg_match("/up (\d+) days,\s*(\d+):(\d+),/", $buf, $ar_buf) || preg_match("/up (\d+) day,\s*(\d+):(\d+),/", $buf, $ar_buf)) + { + $min = $ar_buf[3]; + $hours = $ar_buf[2]; + $days = $ar_buf[1]; + $this->sys->setUptime($days * 86400 + $hours * 3600 + $min * 60); + } + } + } + + /** + * Number of Users + * @return void + */ + private function _users() + { + if (CommonFunctions::executeProgram('who', '| wc -l', $buf, PSI_DEBUG)) + { + $this->sys->setUsers($buf); + } + } + + /** + * Processor Load + * optionally create a loadbar + * @return void + */ + private function _loadavg() + { + if (CommonFunctions::executeProgram('uptime', '', $buf)) + { + if (preg_match("/average: (.*), (.*), (.*)$/", $buf, $ar_buf)) + { + $this->sys->setLoad($ar_buf[1].' '.$ar_buf[2].' '.$ar_buf[3]); + } + } + } + + /** + * CPU information + * All of the tags here are highly architecture dependant + * @return void + */ + private function _cpuinfo() + { + $dev = new CpuDevice(); + CommonFunctions::executeProgram('cat', '/tmp/webprtconf.txt |grep Type', $cpudev); + $dev->setModel($cpudev); + CommonFunctions::executeProgram('cat', '/tmp/webprtconf.txt | grep Speed | awk \'{print $4}\'', $cpuspeed); + $dev->setCpuSpeed($cpuspeed); + //$dev->setCache('512000'); //-don't know howto guess cache size + $this->sys->setCpus($dev); + } + + /** + * PCI devices + * @return void + */ + private function _pci() + { + // FIXME + CommonFunctions::executeProgram('cat', '/tmp/webprtconf.txt |grep PCI', $bufr); + $lines = preg_split("/\n/", $bufr, -1, PREG_SPLIT_NO_EMPTY); + foreach ($lines as $line) + { + $dev = new HWDevice(); + $dev->setName($line); + $this->sys->setPciDevices($dev); + } + } + + /** + * IDE devices + * @return void + */ + private function _ide() + { + // FIXME + CommonFunctions::executeProgram('cat', '/tmp/webprtconf.txt |grep IDE', $bufr); + $lines = preg_split("/\n/", $bufr, -1, PREG_SPLIT_NO_EMPTY); + foreach ($lines as $line) + { + $dev = new HWDevice(); + $dev->setName($line); + $this->sys->setIdeDevices($dev); + //$dev->setCapacity(trim($line???) * 512 / 1024); + } + } + + /** + * SCSI devices + * @return void + */ + private function _scsi() + { + // FIXME + CommonFunctions::executeProgram('cat', '/tmp/webprtconf.txt |grep SCSI', $bufr); + $lines = preg_split("/\n/", $bufr, -1, PREG_SPLIT_NO_EMPTY); + foreach ($lines as $line) + { + $dev = new HWDevice(); + $dev->setName($line); + $this->sys->setScsiDevices($dev); + } + } + + /** + * USB devices + * @return void + */ + private function _usb() + { + // FIXME + CommonFunctions::executeProgram('cat', '/tmp/webprtconf.txt |grep USB', $bufr); + $lines = preg_split("/\n/", $bufr, -1, PREG_SPLIT_NO_EMPTY); + foreach ($lines as $line) + { + $dev = new HWDevice(); + $dev->setName($line); + $this->sys->setUsbDevices($dev); + } + } + + /** + * Network devices + * includes also rx/tx bytes + * @return void + */ + private function _network() + { + if (CommonFunctions::executeProgram('netstat', '-ni | tail -n +2', $netstat)) + { + $lines = preg_split("/\n/", $netstat, -1, PREG_SPLIT_NO_EMPTY); + foreach ($lines as $line) + { + $ar_buf = preg_split("/\s+/", $line); + if (! empty($ar_buf[0]) && ! empty($ar_buf[3])) + { + $dev = new NetDevice(); + $dev->setName($ar_buf[0]); + $dev->setRxBytes($ar_buf[4]); + $dev->setTxBytes($ar_buf[6]); + $dev->setErrors($ar_buf[5] + $ar_buf[7]); + //$dev->setDrops($ar_buf[8]); + $this->sys->setNetDevices($dev); + } + } + } + } + + /** + * Physical memory information and Swap Space information + * @return void + */ + private function _memory() + { + CommonFunctions::executeProgram('cat', '/tmp/webprtconf.txt |grep Good|awk \'{print $4}\'', $mems); + $this->sys->setMemTotal($mems*1024*1024); + //FIXME + $mems = 0; + $this->sys->setMemUsed($mems); + $this->sys->setMemFree($mems); + $this->sys->setMemApplication($mems); + $this->sys->setMemBuffer($mems); + $this->sys->setMemCache($mems); + + /* + if (CommonFunctions::rfts('/proc/meminfo', $bufr)) { + $bufe = preg_split("/\n/", $bufr, -1, PREG_SPLIT_NO_EMPTY); + foreach ($bufe as $buf) { + if (preg_match('/Mem:\s+(.*)$/', $buf, $ar_buf)) { + $ar_buf = preg_split('/\s+/', $ar_buf[1], 6); + $this->sys->setMemTotal($ar_buf[0]); + $this->sys->setMemUsed($ar_buf[1]); + $this->sys->setMemFree($ar_buf[2]); + $this->sys->setMemApplication($ar_buf[3]); + $this->sys->setMemBuffer($ar_buf[4]); + $this->sys->setMemCache($ar_buf[5]); + } + // Get info on individual swap files + if (CommonFunctions::rfts('/proc/swaps', $swaps)) { + $swapdevs = preg_split("/\n/", $swaps, -1, PREG_SPLIT_NO_EMPTY); + for ($i = 1, $max = (sizeof($swapdevs) - 1); $i < $max; $i++) { + $ar_buf = preg_split('/\s+/', $swapdevs[$i], 6); + $dev = new DiskDevice(); + $dev->setMountPoint($ar_buf[0]); + $dev->setName("SWAP"); + $dev->setFsType('swap'); + $dev->setTotal($ar_buf[2] * 1024); + $dev->setUsed($ar_buf[3] * 1024); + $dev->setFree($dev->getTotal() - $dev->getUsed()); + $this->sys->setSwapDevices($dev); + } + } + } + } + */ + } + + /** + * filesystem information + * + * @return void + */ + private function _filesystems() + { + if (CommonFunctions::executeProgram('df', '-kP', $df, PSI_DEBUG)) + { + $mounts = preg_split("/\n/", $df, -1, PREG_SPLIT_NO_EMPTY); + if (CommonFunctions::executeProgram('mount', '-v', $s, PSI_DEBUG)) + { + $lines = preg_split("/\n/", $s, -1, PREG_SPLIT_NO_EMPTY); + while (list(, $line) = each($lines)) + { + $a = preg_split('/ /', $line, -1, PREG_SPLIT_NO_EMPTY); + $fsdev[$a[0]] = $a[4]; + } + } + foreach ($mounts as $mount) + { + $ar_buf = preg_split("/\s+/", $mount, 6); + $dev = new DiskDevice(); + $dev->setName($ar_buf[0]); + $dev->setTotal($ar_buf[1] * 1024); + $dev->setUsed($ar_buf[2] * 1024); + $dev->setFree($ar_buf[3] * 1024); + $dev->setMountPoint($ar_buf[5]); + if (isset($fsdev[$ar_buf[0]])) + { + $dev->setFsType($fsdev[$ar_buf[0]]); + } + $this->sys->setDiskDevices($dev); + } + } + } + + /** + * Distribution + * + * @return void + */ + private function _distro() + { + $this->sys->setDistribution(' IBM AIX '); + $this->sys->setDistributionIcon('AIX.png'); + } + + + /** + * IBM AIX INFORMATIONs by K.PAZ + * @return void + */ + private function _myaixdata() + { + CommonFunctions::executeProgram('prtconf', '> /tmp/webprtconf.txt', $confret); + CommonFunctions::rfts('/tmp/webprtconf.txt', $bufr); + $this->myprtconf = preg_split("/\n/", $bufr, -1, PREG_SPLIT_NO_EMPTY); + } + + + + /** + * get the information + * + * @see PSI_Interface_OS::build() + * + * @return Void + */ + function build() + { + $this->_myaixdata(); + $this->_distro(); + $this->_ip(); + $this->_hostname(); + $this->_kernel(); + $this->_uptime(); + $this->_users(); + $this->_loadavg(); + $this->_cpuinfo(); + $this->_pci(); + $this->_ide(); + $this->_scsi(); + $this->_usb(); + $this->_network(); + $this->_memory(); + $this->_filesystems(); + } +} +?> Property changes on: trunk/includes/os/class.AIX.inc.php ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:eol-style + native This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jac...@us...> - 2011-07-01 08:24:16
|
Revision: 467 http://phpsysinfo.svn.sourceforge.net/phpsysinfo/?rev=467&view=rev Author: jacky672 Date: 2011-07-01 08:24:09 +0000 (Fri, 01 Jul 2011) Log Message: ----------- [UPD] Updated jQuery plugin to 1.6.2 Modified Paths: -------------- trunk/ChangeLog trunk/js/jQuery/jquery.js Modified: trunk/ChangeLog =================================================================== --- trunk/ChangeLog 2011-05-21 05:44:13 UTC (rev 466) +++ trunk/ChangeLog 2011-07-01 08:24:09 UTC (rev 467) @@ -4,7 +4,7 @@ - [ADD] SNMPPInfo status plugin (printers status via SNMP) - [ADD] Partial support of IBM AIX - - [UPD] Updated jQuery plugin to 1.6.1 + - [UPD] Updated jQuery plugin to 1.6.2 phpSysInfo 3.0.11 - [ADD] Added date of the last boot Modified: trunk/js/jQuery/jquery.js =================================================================== --- trunk/js/jQuery/jquery.js 2011-05-21 05:44:13 UTC (rev 466) +++ trunk/js/jQuery/jquery.js 2011-07-01 08:24:09 UTC (rev 467) @@ -1,5 +1,5 @@ /*! - * jQuery JavaScript Library v1.6.1 + * jQuery JavaScript Library v1.6.2 * http://jquery.com/ * * Copyright 2011, John Resig @@ -11,7 +11,7 @@ * Copyright 2011, The Dojo Foundation * Released under the MIT, BSD, and GPL Licenses. * - * Date: Thu May 12 15:04:36 2011 -0400 + * Date: Thu Jun 30 14:16:56 2011 -0400 */ (function( window, undefined ) { @@ -65,6 +65,14 @@ rmsie = /(msie) ([\w.]+)/, rmozilla = /(mozilla)(?:.*? rv:([\w.]+))?/, + // Matches dashed string for camelizing + rdashAlpha = /-([a-z])/ig, + + // Used by jQuery.camelCase as callback to replace() + fcamelCase = function( all, letter ) { + return letter.toUpperCase(); + }, + // Keep a UserAgent string for use with jQuery.browser userAgent = navigator.userAgent, @@ -204,7 +212,7 @@ selector: "", // The current version of jQuery being used - jquery: "1.6.1", + jquery: "1.6.2", // The default length of a jQuery object is 0 length: 0, @@ -603,6 +611,12 @@ } }, + // Converts a dashed string to camelCased string; + // Used by both the css and data modules + camelCase: function( string ) { + return string.replace( rdashAlpha, fcamelCase ); + }, + nodeName: function( elem, name ) { return elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase(); }, @@ -799,7 +813,7 @@ }, // Mutifunctional method to get and set values to a collection - // The value/s can be optionally by executed if its a function + // The value/s can optionally be executed if it's a function access: function( elems, key, value, exec, fn, pass ) { var length = elems.length; @@ -930,7 +944,6 @@ jQuery.ready(); } -// Expose jQuery to the global object return jQuery; })(); @@ -1147,7 +1160,9 @@ support, fragment, body, - bodyStyle, + testElementParent, + testElement, + testElementStyle, tds, events, eventName, @@ -1241,11 +1256,10 @@ } if ( !div.addEventListener && div.attachEvent && div.fireEvent ) { - div.attachEvent( "onclick", function click() { + div.attachEvent( "onclick", function() { // Cloning a node shouldn't copy over any // bound event handlers (IE does this) support.noCloneEvent = false; - div.detachEvent( "onclick", click ); }); div.cloneNode( true ).fireEvent( "onclick" ); } @@ -1270,22 +1284,30 @@ // Figure out if the W3C box model works as expected div.style.width = div.style.paddingLeft = "1px"; - // We use our own, invisible, body - body = document.createElement( "body" ); - bodyStyle = { + body = document.getElementsByTagName( "body" )[ 0 ]; + // We use our own, invisible, body unless the body is already present + // in which case we use a div (#9239) + testElement = document.createElement( body ? "div" : "body" ); + testElementStyle = { visibility: "hidden", width: 0, height: 0, border: 0, - margin: 0, - // Set background to avoid IE crashes when removing (#9028) - background: "none" + margin: 0 }; - for ( i in bodyStyle ) { - body.style[ i ] = bodyStyle[ i ]; + if ( body ) { + jQuery.extend( testElementStyle, { + position: "absolute", + left: -1000, + top: -1000 + }); } - body.appendChild( div ); - documentElement.insertBefore( body, documentElement.firstChild ); + for ( i in testElementStyle ) { + testElement.style[ i ] = testElementStyle[ i ]; + } + testElement.appendChild( div ); + testElementParent = body || documentElement; + testElementParent.insertBefore( testElement, testElementParent.firstChild ); // Check if a disconnected checkbox will retain its checked // value of true after appended to the DOM (IE6/7) @@ -1344,8 +1366,8 @@ } // Remove the body element we added - body.innerHTML = ""; - documentElement.removeChild( body ); + testElement.innerHTML = ""; + testElementParent.removeChild( testElement ); // Technique from Juriy Zaytsev // http://thinkweb2.com/projects/prototype/detecting-event-support-without-browser-sniffing/ @@ -1369,6 +1391,9 @@ } } + // Null connected elements to avoid leaks in IE + testElement = fragment = select = opt = body = marginDiv = div = input = null; + return support; })(); @@ -1486,7 +1511,10 @@ return thisCache[ internalKey ] && thisCache[ internalKey ].events; } - return getByName ? thisCache[ jQuery.camelCase( name ) ] : thisCache; + return getByName ? + // Check for both converted-to-camel and non-converted data property names + thisCache[ jQuery.camelCase( name ) ] || thisCache[ name ] : + thisCache; }, removeData: function( elem, name, pvt /* Internal Use Only */ ) { @@ -1882,7 +1910,7 @@ rfocusable = /^(?:button|input|object|select|textarea)$/i, rclickable = /^a(?:rea)?$/i, rboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i, - rinvalidChar = /\:/, + rinvalidChar = /\:|^on/, formHook, boolHook; jQuery.fn.extend({ @@ -1912,30 +1940,31 @@ }, addClass: function( value ) { + var classNames, i, l, elem, + setClass, c, cl; + if ( jQuery.isFunction( value ) ) { - return this.each(function(i) { - var self = jQuery(this); - self.addClass( value.call(this, i, self.attr("class") || "") ); + return this.each(function( j ) { + jQuery( this ).addClass( value.call(this, j, this.className) ); }); } if ( value && typeof value === "string" ) { - var classNames = (value || "").split( rspace ); + classNames = value.split( rspace ); - for ( var i = 0, l = this.length; i < l; i++ ) { - var elem = this[i]; + for ( i = 0, l = this.length; i < l; i++ ) { + elem = this[ i ]; if ( elem.nodeType === 1 ) { - if ( !elem.className ) { + if ( !elem.className && classNames.length === 1 ) { elem.className = value; } else { - var className = " " + elem.className + " ", - setClass = elem.className; + setClass = " " + elem.className + " "; - for ( var c = 0, cl = classNames.length; c < cl; c++ ) { - if ( className.indexOf( " " + classNames[c] + " " ) < 0 ) { - setClass += " " + classNames[c]; + for ( c = 0, cl = classNames.length; c < cl; c++ ) { + if ( !~setClass.indexOf( " " + classNames[ c ] + " " ) ) { + setClass += classNames[ c ] + " "; } } elem.className = jQuery.trim( setClass ); @@ -1948,24 +1977,25 @@ }, removeClass: function( value ) { - if ( jQuery.isFunction(value) ) { - return this.each(function(i) { - var self = jQuery(this); - self.removeClass( value.call(this, i, self.attr("class")) ); + var classNames, i, l, elem, className, c, cl; + + if ( jQuery.isFunction( value ) ) { + return this.each(function( j ) { + jQuery( this ).removeClass( value.call(this, j, this.className) ); }); } if ( (value && typeof value === "string") || value === undefined ) { - var classNames = (value || "").split( rspace ); + classNames = (value || "").split( rspace ); - for ( var i = 0, l = this.length; i < l; i++ ) { - var elem = this[i]; + for ( i = 0, l = this.length; i < l; i++ ) { + elem = this[ i ]; if ( elem.nodeType === 1 && elem.className ) { if ( value ) { - var className = (" " + elem.className + " ").replace(rclass, " "); - for ( var c = 0, cl = classNames.length; c < cl; c++ ) { - className = className.replace(" " + classNames[c] + " ", " "); + className = (" " + elem.className + " ").replace( rclass, " " ); + for ( c = 0, cl = classNames.length; c < cl; c++ ) { + className = className.replace(" " + classNames[ c ] + " ", " "); } elem.className = jQuery.trim( className ); @@ -1984,9 +2014,8 @@ isBool = typeof stateVal === "boolean"; if ( jQuery.isFunction( value ) ) { - return this.each(function(i) { - var self = jQuery(this); - self.toggleClass( value.call(this, i, self.attr("class"), stateVal), stateVal ); + return this.each(function( i ) { + jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal ); }); } @@ -2040,7 +2069,13 @@ return ret; } - return (elem.value || "").replace(rreturn, ""); + ret = elem.value; + + return typeof ret === "string" ? + // handle most common string cases + ret.replace(rreturn, "") : + // handle cases where value is null/undef or number + ret == null ? "" : ret; } return undefined; @@ -2186,20 +2221,23 @@ notxml = nType !== 1 || !jQuery.isXMLDoc( elem ); // Normalize the name if needed - name = notxml && jQuery.attrFix[ name ] || name; + if ( notxml ) { + name = jQuery.attrFix[ name ] || name; - hooks = jQuery.attrHooks[ name ]; + hooks = jQuery.attrHooks[ name ]; - if ( !hooks ) { - // Use boolHook for boolean attributes - if ( rboolean.test( name ) && - (typeof value === "boolean" || value === undefined || value.toLowerCase() === name.toLowerCase()) ) { + if ( !hooks ) { + // Use boolHook for boolean attributes + if ( rboolean.test( name ) ) { - hooks = boolHook; + hooks = boolHook; - // Use formHook for forms and if the name contains certain characters - } else if ( formHook && (jQuery.nodeName( elem, "form" ) || rinvalidChar.test( name )) ) { - hooks = formHook; + // Use formHook for forms and if the name contains certain characters + } else if ( formHook && name !== "className" && + (jQuery.nodeName( elem, "form" ) || rinvalidChar.test( name )) ) { + + hooks = formHook; + } } } @@ -2217,8 +2255,8 @@ return value; } - } else if ( hooks && "get" in hooks && notxml ) { - return hooks.get( elem, name ); + } else if ( hooks && "get" in hooks && notxml && (ret = hooks.get( elem, name )) !== null ) { + return ret; } else { @@ -2282,6 +2320,25 @@ 0 : undefined; } + }, + // Use the value property for back compat + // Use the formHook for button elements in IE6/7 (#1954) + value: { + get: function( elem, name ) { + if ( formHook && jQuery.nodeName( elem, "button" ) ) { + return formHook.get( elem, name ); + } + return name in elem ? + elem.value : + null; + }, + set: function( elem, value, name ) { + if ( formHook && jQuery.nodeName( elem, "button" ) ) { + return formHook.set( elem, value, name ); + } + // Does not return so that setAttribute is also used + elem.value = value; + } } }, @@ -2311,10 +2368,11 @@ var ret, hooks, notxml = nType !== 1 || !jQuery.isXMLDoc( elem ); - // Try to normalize/fix the name - name = notxml && jQuery.propFix[ name ] || name; - - hooks = jQuery.propHooks[ name ]; + if ( notxml ) { + // Fix name and attach hooks + name = jQuery.propFix[ name ] || name; + hooks = jQuery.propHooks[ name ]; + } if ( value !== undefined ) { if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) { @@ -2341,7 +2399,7 @@ boolHook = { get: function( elem, name ) { // Align boolean attributes with corresponding properties - return elem[ jQuery.propFix[ name ] || name ] ? + return jQuery.prop( elem, name ) ? name.toLowerCase() : undefined; }, @@ -2356,7 +2414,7 @@ propName = jQuery.propFix[ name ] || name; if ( propName in elem ) { // Only set the IDL specifically if it already exists on the element - elem[ propName ] = value; + elem[ propName ] = true; } elem.setAttribute( name, name.toLowerCase() ); @@ -2365,24 +2423,6 @@ } }; -// Use the value property for back compat -// Use the formHook for button elements in IE6/7 (#1954) -jQuery.attrHooks.value = { - get: function( elem, name ) { - if ( formHook && jQuery.nodeName( elem, "button" ) ) { - return formHook.get( elem, name ); - } - return elem.value; - }, - set: function( elem, value, name ) { - if ( formHook && jQuery.nodeName( elem, "button" ) ) { - return formHook.set( elem, value, name ); - } - // Does not return so that setAttribute is also used - elem.value = value; - } -}; - // IE6/7 do not support getting/setting some attributes with get/setAttribute if ( !jQuery.support.getSetAttribute ) { @@ -2390,7 +2430,7 @@ jQuery.attrFix = jQuery.propFix; // Use this for any attribute on a form in IE6/7 - formHook = jQuery.attrHooks.name = jQuery.valHooks.button = { + formHook = jQuery.attrHooks.name = jQuery.attrHooks.title = jQuery.valHooks.button = { get: function( elem, name ) { var ret; ret = elem.getAttributeNode( name ); @@ -2493,8 +2533,7 @@ -var hasOwn = Object.prototype.hasOwnProperty, - rnamespaces = /\.(.*)$/, +var rnamespaces = /\.(.*)$/, rformElems = /^(?:textarea|input|select)$/i, rperiod = /\./g, rspaces = / /g, @@ -2838,7 +2877,7 @@ event.target = elem; // Clone any incoming data and prepend the event, creating the handler arg list - data = data ? jQuery.makeArray( data ) : []; + data = data != null ? jQuery.makeArray( data ) : []; data.unshift( event ); var cur = elem, @@ -3144,34 +3183,27 @@ // Checks if an event happened on an element within another element // Used in jQuery.event.special.mouseenter and mouseleave handlers var withinElement = function( event ) { + // Check if mouse(over|out) are still within the same parent element - var parent = event.relatedTarget; + var related = event.relatedTarget, + inside = false, + eventType = event.type; - // set the correct event type event.type = event.data; - // Firefox sometimes assigns relatedTarget a XUL element - // which we cannot access the parentNode property of - try { + if ( related !== this ) { - // Chrome does something similar, the parentNode property - // can be accessed but is null. - if ( parent && parent !== document && !parent.parentNode ) { - return; + if ( related ) { + inside = jQuery.contains( this, related ); } - // Traverse up the tree - while ( parent && parent !== this ) { - parent = parent.parentNode; - } + if ( !inside ) { - if ( parent !== this ) { - // handle event if we actually just moused on to a non sub-element jQuery.event.handle.apply( this, arguments ); + + event.type = eventType; } - - // assuming we've left the element since we most likely mousedover a xul element - } catch(e) { } + } }, // In case of event delegation, we only need to rename the event.type, @@ -5890,9 +5922,22 @@ } jQuery.buildFragment = function( args, nodes, scripts ) { - var fragment, cacheable, cacheresults, - doc = (nodes && nodes[0] ? nodes[0].ownerDocument || nodes[0] : document); + var fragment, cacheable, cacheresults, doc; + // nodes may contain either an explicit document object, + // a jQuery collection or context object. + // If nodes[0] contains a valid object to assign to doc + if ( nodes && nodes[0] ) { + doc = nodes[0].ownerDocument || nodes[0]; + } + + // Ensure that an attr object doesn't incorrectly stand in as a document object + // Chrome and Firefox seem to allow this to occur and will throw exception + // Fixes #8950 + if ( !doc.createDocumentFragment ) { + doc = document; + } + // Only cache "small" (1/2 KB) HTML strings that are associated with the main document // Cloning options loses the selected state, so don't cache them // IE 6 doesn't like it when you put <object> or <embed> elements in a fragment @@ -5972,7 +6017,7 @@ function findInputs( elem ) { if ( jQuery.nodeName( elem, "input" ) ) { fixDefaultChecked( elem ); - } else if ( elem.getElementsByTagName ) { + } else if ( "getElementsByTagName" in elem ) { jQuery.grep( elem.getElementsByTagName("input"), fixDefaultChecked ); } } @@ -6021,6 +6066,8 @@ } } + srcElements = destElements = null; + // Return the cloned set return clone; }, @@ -6201,10 +6248,8 @@ - var ralpha = /alpha\([^)]*\)/i, ropacity = /opacity=([^)]*)/, - rdashAlpha = /-([a-z])/ig, // fixed for IE9, see #8346 rupper = /([A-Z]|^ms)/g, rnumpx = /^-?\d+(?:px)?$/i, @@ -6218,12 +6263,8 @@ curCSS, getComputedStyle, - currentStyle, + currentStyle; - fcamelCase = function( all, letter ) { - return letter.toUpperCase(); - }; - jQuery.fn.css = function( name, value ) { // Setting 'undefined' is a no-op if ( arguments.length === 2 && value === undefined ) { @@ -6257,13 +6298,14 @@ // Exclude the following css properties to add px cssNumber: { - "zIndex": true, + "fillOpacity": true, "fontWeight": true, + "lineHeight": true, "opacity": true, - "zoom": true, - "lineHeight": true, + "orphans": true, "widows": true, - "orphans": true + "zIndex": true, + "zoom": true }, // Add in properties whose names you wish to fix before @@ -6298,6 +6340,8 @@ // convert relative number strings (+= or -=) to relative numbers. #7345 if ( type === "string" && rrelNum.test( value ) ) { value = +value.replace( rrelNumFilter, "" ) + parseFloat( jQuery.css( elem, name ) ); + // Fixes bug #9237 + type = "number"; } // If a number was passed in, add 'px' to the (except for certain CSS properties) @@ -6364,10 +6408,6 @@ for ( name in options ) { elem.style[ name ] = old[ name ]; } - }, - - camelCase: function( string ) { - return string.replace( rdashAlpha, fcamelCase ); } }); @@ -6381,44 +6421,21 @@ if ( computed ) { if ( elem.offsetWidth !== 0 ) { - val = getWH( elem, name, extra ); - + return getWH( elem, name, extra ); } else { jQuery.swap( elem, cssShow, function() { val = getWH( elem, name, extra ); }); } - if ( val <= 0 ) { - val = curCSS( elem, name, name ); - - if ( val === "0px" && currentStyle ) { - val = currentStyle( elem, name, name ); - } - - if ( val != null ) { - // Should return "auto" instead of 0, use 0 for - // temporary backwards-compat - return val === "" || val === "auto" ? "0px" : val; - } - } - - if ( val < 0 || val == null ) { - val = elem.style[ name ]; - - // Should return "auto" instead of 0, use 0 for - // temporary backwards-compat - return val === "" || val === "auto" ? "0px" : val; - } - - return typeof val === "string" ? val : val + "px"; + return val; } }, set: function( elem, value ) { if ( rnumpx.test( value ) ) { // ignore negative width and height values #1599 - value = parseFloat(value); + value = parseFloat( value ); if ( value >= 0 ) { return value + "px"; @@ -6541,27 +6558,50 @@ curCSS = getComputedStyle || currentStyle; function getWH( elem, name, extra ) { - var which = name === "width" ? cssWidth : cssHeight, - val = name === "width" ? elem.offsetWidth : elem.offsetHeight; - if ( extra === "border" ) { - return val; - } + // Start with offset property + var val = name === "width" ? elem.offsetWidth : elem.offsetHeight, + which = name === "width" ? cssWidth : cssHeight; - jQuery.each( which, function() { - if ( !extra ) { - val -= parseFloat(jQuery.css( elem, "padding" + this )) || 0; + if ( val > 0 ) { + if ( extra !== "border" ) { + jQuery.each( which, function() { + if ( !extra ) { + val -= parseFloat( jQuery.css( elem, "padding" + this ) ) || 0; + } + if ( extra === "margin" ) { + val += parseFloat( jQuery.css( elem, extra + this ) ) || 0; + } else { + val -= parseFloat( jQuery.css( elem, "border" + this + "Width" ) ) || 0; + } + }); } - if ( extra === "margin" ) { - val += parseFloat(jQuery.css( elem, "margin" + this )) || 0; + return val + "px"; + } - } else { - val -= parseFloat(jQuery.css( elem, "border" + this + "Width" )) || 0; - } - }); + // Fall back to computed then uncomputed css if necessary + val = curCSS( elem, name, name ); + if ( val < 0 || val == null ) { + val = elem.style[ name ] || 0; + } + // Normalize "", auto, and prepare for extra + val = parseFloat( val ) || 0; - return val; + // Add padding, border, margin + if ( extra ) { + jQuery.each( which, function() { + val += parseFloat( jQuery.css( elem, "padding" + this ) ) || 0; + if ( extra !== "padding" ) { + val += parseFloat( jQuery.css( elem, "border" + this + "Width" ) ) || 0; + } + if ( extra === "margin" ) { + val += parseFloat( jQuery.css( elem, extra + this ) ) || 0; + } + }); + } + + return val + "px"; } if ( jQuery.expr && jQuery.expr.filters ) { @@ -7957,8 +7997,8 @@ ], fxNow, requestAnimationFrame = window.webkitRequestAnimationFrame || - window.mozRequestAnimationFrame || - window.oRequestAnimationFrame; + window.mozRequestAnimationFrame || + window.oRequestAnimationFrame; jQuery.fn.extend({ show: function( speed, easing, callback ) { @@ -8272,15 +8312,15 @@ // Queueing opt.old = opt.complete; opt.complete = function( noUnmark ) { + if ( jQuery.isFunction( opt.old ) ) { + opt.old.call( this ); + } + if ( opt.queue !== false ) { jQuery.dequeue( this ); } else if ( noUnmark !== false ) { jQuery._unmark( this ); } - - if ( jQuery.isFunction( opt.old ) ) { - opt.old.call( this ); - } }; return opt; @@ -8353,7 +8393,7 @@ if ( t() && jQuery.timers.push(t) && !timerId ) { // Use requestAnimationFrame instead of setInterval if available if ( requestAnimationFrame ) { - timerId = 1; + timerId = true; raf = function() { // When timerId gets set to null at any point, this stops if ( timerId ) { @@ -8516,7 +8556,8 @@ if ( !elemdisplay[ nodeName ] ) { - var elem = jQuery( "<" + nodeName + ">" ).appendTo( "body" ), + var body = document.body, + elem = jQuery( "<" + nodeName + ">" ).appendTo( body ), display = elem.css( "display" ); elem.remove(); @@ -8530,14 +8571,15 @@ iframe.frameBorder = iframe.width = iframe.height = 0; } - document.body.appendChild( iframe ); + body.appendChild( iframe ); // Create a cacheable copy of the iframe document on first call. - // IE and Opera will allow us to reuse the iframeDoc without re-writing the fake html - // document to it, Webkit & Firefox won't allow reusing the iframe document + // IE and Opera will allow us to reuse the iframeDoc without re-writing the fake HTML + // document to it; WebKit & Firefox won't allow reusing the iframe document. if ( !iframeDoc || !iframe.createElement ) { iframeDoc = ( iframe.contentWindow || iframe.contentDocument ).document; - iframeDoc.write( "<!doctype><html><body></body></html>" ); + iframeDoc.write( ( document.compatMode === "CSS1Compat" ? "<!doctype html>" : "" ) + "<html><body>" ); + iframeDoc.close(); } elem = iframeDoc.createElement( nodeName ); @@ -8546,7 +8588,7 @@ display = jQuery.css( elem, "display" ); - document.body.removeChild( iframe ); + body.removeChild( iframe ); } // Store the correct default display @@ -8867,22 +8909,24 @@ -// Create innerHeight, innerWidth, outerHeight and outerWidth methods +// Create width, height, innerHeight, innerWidth, outerHeight and outerWidth methods jQuery.each([ "Height", "Width" ], function( i, name ) { var type = name.toLowerCase(); // innerHeight and innerWidth - jQuery.fn["inner" + name] = function() { - return this[0] ? - parseFloat( jQuery.css( this[0], type, "padding" ) ) : + jQuery.fn[ "inner" + name ] = function() { + var elem = this[0]; + return elem && elem.style ? + parseFloat( jQuery.css( elem, type, "padding" ) ) : null; }; // outerHeight and outerWidth - jQuery.fn["outer" + name] = function( margin ) { - return this[0] ? - parseFloat( jQuery.css( this[0], type, margin ? "margin" : "border" ) ) : + jQuery.fn[ "outer" + name ] = function( margin ) { + var elem = this[0]; + return elem && elem.style ? + parseFloat( jQuery.css( elem, type, margin ? "margin" : "border" ) ) : null; }; @@ -8932,5 +8976,6 @@ }); +// Expose jQuery to the global object window.jQuery = window.$ = jQuery; })(window); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jac...@us...> - 2011-07-12 17:02:39
|
Revision: 468 http://phpsysinfo.svn.sourceforge.net/phpsysinfo/?rev=468&view=rev Author: jacky672 Date: 2011-07-12 17:02:33 +0000 (Tue, 12 Jul 2011) Log Message: ----------- [FIX] Fix PCI and network information on BSD [3536419] Modified Paths: -------------- trunk/ChangeLog trunk/includes/os/class.BSDCommon.inc.php trunk/includes/os/class.FreeBSD.inc.php Modified: trunk/ChangeLog =================================================================== --- trunk/ChangeLog 2011-07-01 08:24:09 UTC (rev 467) +++ trunk/ChangeLog 2011-07-12 17:02:33 UTC (rev 468) @@ -4,6 +4,8 @@ - [ADD] SNMPPInfo status plugin (printers status via SNMP) - [ADD] Partial support of IBM AIX + - [FIX] Fix PCI and network information on BSD [3536419] + - [UPD] Updated jQuery plugin to 1.6.2 phpSysInfo 3.0.11 Modified: trunk/includes/os/class.BSDCommon.inc.php =================================================================== --- trunk/includes/os/class.BSDCommon.inc.php 2011-07-01 08:24:09 UTC (rev 467) +++ trunk/includes/os/class.BSDCommon.inc.php 2011-07-12 17:02:33 UTC (rev 468) @@ -328,7 +328,7 @@ */ protected function pci() { - if (!(is_array($results = Parser::lspci()) || is_array($results = Parser::pciconf()))) { + if (!is_array($results = Parser::lspci()) || !is_array($results = Parser::pciconf())) { foreach ($this->readdmesg() as $line) { if (preg_match("/".$this->_PCIRegExp1."/", $line, $ar_buf)) { $dev = new HWDevice(); @@ -341,7 +341,7 @@ } } } - foreach ($results as $device) { + foreach ($results as $dev) { $this->sys->setPciDevices($dev); } } Modified: trunk/includes/os/class.FreeBSD.inc.php =================================================================== --- trunk/includes/os/class.FreeBSD.inc.php 2011-07-01 08:24:09 UTC (rev 467) +++ trunk/includes/os/class.FreeBSD.inc.php 2011-07-12 17:02:33 UTC (rev 468) @@ -68,15 +68,15 @@ $dev = new NetDevice(); $dev->setName($ar_buf[0]); if (strlen($ar_buf[3]) < 15) { - $dev->setTxBytes($ar_buf[8]); - $dev->setRxBytes($ar_buf[5]); - $dev->setDrops($ar_buf[10]); - $dev->setErrors($ar_buf[4] + $ar_buf[7]); + $dev->setTxBytes($ar_buf[6]); + $dev->setRxBytes($ar_buf[9]); + $dev->setDrops($ar_buf[11]); + $dev->setErrors($ar_buf[4] + $ar_buf[8]); } else { - $dev->setTxBytes($ar_buf[9]); - $dev->setRxBytes($ar_buf[6]); - $dev->setErrors($ar_buf[5] + $ar_buf[8]); - $dev->setDrops($ar_buf[11]); + $dev->setTxBytes($ar_buf[7]); + $dev->setRxBytes($ar_buf[10]); + $dev->setErrors($ar_buf[5] + $ar_buf[9]); + $dev->setDrops($ar_buf[12]); } $this->sys->setNetDevices($dev); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jac...@us...> - 2011-08-07 14:44:05
|
Revision: 479 http://phpsysinfo.svn.sourceforge.net/phpsysinfo/?rev=479&view=rev Author: jacky672 Date: 2011-08-07 14:43:59 +0000 (Sun, 07 Aug 2011) Log Message: ----------- [UPD] Change favicon Modified Paths: -------------- trunk/ChangeLog trunk/gfx/favicon.png Modified: trunk/ChangeLog =================================================================== --- trunk/ChangeLog 2011-07-26 10:25:15 UTC (rev 478) +++ trunk/ChangeLog 2011-08-07 14:43:59 UTC (rev 479) @@ -4,7 +4,8 @@ - [UPD] Updated jQuery plugin DataTables to 1.8.1 - [UPD] Updated JSMin - + - [UPD] Change favicon + - [FIX] Fix network information on FreeBSD phpSysInfo 3.0.12 Modified: trunk/gfx/favicon.png =================================================================== (Binary files differ) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |