File "multisite-updater.js"
Full Path: /home/siazco/grocery.siazco.se/wp-content/plugins/yith-woocommerce-wishlist/plugin-fw/assets/js/multisite-updater.js
File size: 8.39 KB
MIME-type: text/html
Charset: utf-8
/**
* This file belongs to the YIT Framework.
*
* This source file is subject to the GNU GENERAL PUBLIC LICENSE (GPL 3.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://www.gnu.org/licenses/gpl-3.0.txt
*/
(function ( $ ) {
var plugins_menu_item = $( '#menu-plugins' ),
update = plugins_menu_item.find( '.update-plugins' ),
count = update.find( ".plugin-count" ).text(),
registered = plugins.registered,
activated = plugins.activated;
if ( count == 0 || count == '' ) {
var update_row = '<span class="update-plugins"><span class="plugin-count"></span></span>';
count = 0;
plugins_menu_item.find( '.wp-menu-name' ).append( update_row );
}
/**
* Add the plugin update rows for old plugins
*/
update_plugins_row( registered, activated, count, plugins );
/**
*
* Add the update plugin rows for old plugin
*
* @param registered Registred plugins
* @param activated Activated plugins
* @param count Number of old plugins
* @param localize Localize strings array
*
* @return void
*/
function update_plugins_row( registered, activated, count, localize ) {
for ( var init in registered ) {
var plugin = registered[ init ];
for ( var headers in plugin ) {
if ( headers == 'slug' || version_compare( plugin[ headers ].Version, plugin[ headers ].Latest, '=' ) ) {
continue;
}
count = parseInt( count ) + 1;
$( ".plugin-count" ).empty().html( count );
var regex = new RegExp( ' ', 'g' ),
info = plugin[ headers ],
name = '' + info.Name,
id = name.replace( regex, '-' ).trim(),
row = '*[data-slug="' + id.toLowerCase() + '"]';
$( row ).addClass( "update" );
var html = '<tr class="plugin-update-tr">' +
'<td colspan="3" class="plugin-update colspanchange">' +
'<div class="update-message notice inline notice-warning notice-alt">' + localize.strings.new_version.replace( '%plugin_name%', name ) +
'<a class="thickbox open-plugin-details-modal" href="' + localize.details_url[ init ] + '">' + localize.strings.latest.replace( '%latest%', plugin[ headers ].Latest ) + '</a>';
if ( typeof activated[ init ] == "undefined" ) {
html = html +
' <em>' + localize.strings.unavailable + '</em>' +
localize.strings.activate.replace( '%activate_link%', localize.licence_activation_url ).replace( '%plugin_name%', name );
} else {
html = html +
'. <a href="' + localize.update_url[ init ] + '">' + localize.strings.update_now + '</a>';
}
if( version_compare( plugin[ headers ].Version, plugin[ headers ].Latest, '>' ) ){
html = html + localize.strings.version_issue.replace( '%plugin_name%', name )
}
html = html +
'</div>' +
'</td>' +
'</tr>';
$( html ).insertAfter( row );
}
}
}
/**
*
* @param v1 Version 1
* @param v2 Version 2
* @param operator Compare type
* @returns bool
*
* @see php.js library http://phpjs.org/
*/
function version_compare( v1, v2, operator ) {
// discuss at: http://phpjs.org/functions/version_compare/
// original by: Philippe Jausions (http://pear.php.net/user/jausions)
// original by: Aidan Lister (http://aidanlister.com/)
// reimplemented by: Kankrelune (http://www.webfaktory.info/)
// improved by: Brett Zamir (http://brett-zamir.me)
// improved by: Scott Baker
// improved by: Theriault
// example 1: version_compare('8.2.5rc', '8.2.5a');
// returns 1: 1
// example 2: version_compare('8.2.50', '8.2.52', '<');
// returns 2: true
// example 3: version_compare('5.3.0-dev', '5.3.0');
// returns 3: -1
// example 4: version_compare('4.1.0.52','4.01.0.51');
// returns 4: 1
this.php_js = this.php_js || {};
this.php_js.ENV = this.php_js.ENV || {};
// END REDUNDANT
// Important: compare must be initialized at 0.
var i = 0,
x = 0,
compare = 0,
// vm maps textual PHP versions to negatives so they're less than 0.
// PHP currently defines these as CASE-SENSITIVE. It is important to
// leave these as negatives so that they can come before numerical versions
// and as if no letters were there to begin with.
// (1alpha is < 1 and < 1.1 but > 1dev1)
// If a non-numerical value can't be mapped to this table, it receives
// -7 as its value.
vm = {
'dev' : -6,
'alpha': -5,
'a' : -5,
'beta' : -4,
'b' : -4,
'RC' : -3,
'rc' : -3,
'#' : -2,
'p' : 1,
'pl' : 1
},
// This function will be called to prepare each version argument.
// It replaces every _, -, and + with a dot.
// It surrounds any nonsequence of numbers/dots with dots.
// It replaces sequences of dots with a single dot.
// version_compare('4..0', '4.0') == 0
// Important: A string of 0 length needs to be converted into a value
// even less than an unexisting value in vm (-7), hence [-8].
// It's also important to not strip spaces because of this.
// version_compare('', ' ') == 1
prepVersion = function ( v ) {
v = ('' + v)
.replace( /[_\-+]/g, '.' );
v = v.replace( /([^.\d]+)/g, '.$1.' )
.replace( /\.{2,}/g, '.' );
return (!v.length ? [ -8 ] : v.split( '.' ));
};
// This converts a version component to a number.
// Empty component becomes 0.
// Non-numerical component becomes a negative number.
// Numerical component becomes itself as an integer.
numVersion = function ( v ) {
return !v ? 0 : (isNaN( v ) ? vm[ v ] || -7 : parseInt( v, 10 ));
};
v1 = prepVersion( v1 );
v2 = prepVersion( v2 );
x = Math.max( v1.length, v2.length );
for ( i = 0; i < x; i++ ) {
if ( v1[ i ] == v2[ i ] ) {
continue;
}
v1[ i ] = numVersion( v1[ i ] );
v2[ i ] = numVersion( v2[ i ] );
if ( v1[ i ] < v2[ i ] ) {
compare = -1;
break;
} else if ( v1[ i ] > v2[ i ] ) {
compare = 1;
break;
}
}
if ( !operator ) {
return compare;
}
// Important: operator is CASE-SENSITIVE.
// "No operator" seems to be treated as "<."
// Any other values seem to make the function return null.
switch ( operator ) {
case '>':
case 'gt':
return (compare > 0);
case '>=':
case 'ge':
return (compare >= 0);
case '<=':
case 'le':
return (compare <= 0);
case '==':
case '=':
case 'eq':
return (compare === 0);
case '<>':
case '!=':
case 'ne':
return (compare !== 0);
case '':
case '<':
case 'lt':
return (compare < 0);
default:
return null;
}
}
// fix ThickBox issue (width-height) when opening a changelog
$( 'body' ).on( 'click', '.yit-changelog-button', function () {
$( '#TB_window' ).remove();
} );
})( jQuery );