123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576 |
- var W3tc_Lightbox = {
- window: jQuery(window),
- container: null,
- options: null,
- create: function() {
- var me = this;
- this.container = jQuery('<div class="' + this.options.id + '"><div class="lightbox-close">' + this.options.close + '</div><div id="w3tc_lightbox_content" class="lightbox-content"></div></div>').css({
- top: 0,
- left: 0,
- width: 0,
- height: 0,
- position: 'fixed',
- 'z-index': 9991,
- display: 'none'
- });
- jQuery('body').append(this.container);
- this.window.resize(function() {
- me.resize();
- });
- this.container.find('.lightbox-close').on( 'click', function() {
- me.close();
- });
- jQuery(document).keyup(function(e) {
- if (e.keyCode == 27) { me.close(); } // esc
- });
- },
- open: function(options) {
- this.options = jQuery.extend({
- id: 'lightbox',
- close: '',
- width: 0,
- height: 0,
- maxWidth: 0,
- maxHeight: 0,
- minWidth: 0,
- minHeight: 0,
- widthPercent: 0.6,
- heightPercent: 0.8,
- content: null,
- url: null,
- callback: null
- }, options);
- this.create();
- if (this.options.content) {
- this.content(this.options.content);
- } else if (this.options.url) {
- this.load(this.options.url, this.options.callback);
- if (window.w3tc_ga) {
- var w3tc_action = this.options.url.match(/w3tc_action=([^&]+)/);
- if (! w3tc_action || ! w3tc_action[1]) {
- w3tc_action = this.options.url.match(/&(w3tc_[^&]+)&/);
- }
- if (w3tc_action && w3tc_action[1]) {
- w3tc_ga(
- 'event',
- 'pageview',
- {
- eventLabel: 'overlays/' + w3tc_action[1]
- }
- );
- }
- }
- }
- W3tc_Overlay.show();
- this.container.show();
- },
- close: function() {
- if (this.options.onClose)
- this.options.onClose();
- this.container.remove();
- W3tc_Overlay.hide();
- },
- resize: function() {
- var width = (this.options.width ? this.options.width : this.window.width() * this.options.widthPercent);
- var height = (this.options.height ? this.options.height : this.window.height() * this.options.heightPercent);
- if (!this.options.maxWidth)
- this.options.maxWidth = this.window.width();
- if (!this.options.maxHeight)
- this.options.maxHeight = this.window.height();
- if (this.options.maxWidth && width > this.options.maxWidth) {
- width = this.options.maxWidth;
- } else if (width < this.options.minWidth) {
- width = this.options.minWidth;
- }
- if (this.options.maxHeight && height > this.options.maxHeight) {
- height = this.options.maxHeight;
- } else if (height < this.options.minHeight) {
- height = this.options.minHeight;
- }
- this.container.css({
- width: width,
- height: height
- });
- this.container.css({
- top: (this.window.height() / 2 - this.container.outerHeight() / 2)>=0 ? this.window.height() / 2 - this.container.outerHeight() / 2 : 0,
- left: (this.window.width() / 2 - this.container.outerWidth() / 2)>=0 ? this.window.width() / 2 - this.container.outerWidth() / 2 : 0
- });
- jQuery('.lightbox-content', this.container).css({
- width: width,
- height: height
- });
- },
- load: function(url, callback) {
- this.content('');
- this.loading(true);
- var me = this;
- jQuery.get(url, {}, function(content) {
- me.loading(false);
- if (content.substr(0, 9) === 'Location ') {
- w3tc_beforeupload_unbind();
- window.location = content.substr(9);
- return;
- }
- me.content(content);
- if (callback) {
- callback.call(this, me);
- }
- });
- },
- /**
- * adds all controls of the form to the url
- */
- load_form: function(url, form_selector, callback) {
- data = {};
- var v = jQuery(form_selector).find('input').each(function(i) {
- var name = jQuery(this).attr('name');
- var type = jQuery(this).attr('type');
- if (type == 'radio' || type == 'checkbox' ) {
- if (!jQuery(this).prop('checked'))
- return;
- }
- if (name)
- data[name] = jQuery(this).val();
- });
- this.content('');
- this.loading(true);
- var me = this;
- jQuery.post(url, data, function(content) {
- me.loading(false);
- if (content.substr(0, 9) === 'Location ') {
- w3tc_beforeupload_unbind();
- window.location = content.substr(9);
- return;
- }
- me.content(content);
- if (callback) {
- callback.call(this, me);
- }
- });
- },
- content: function(content) {
- return this.container.find('.lightbox-content').html(content);
- },
- width: function(width) {
- if (width === undefined) {
- return this.container.width();
- } else {
- this.container.css('width', width);
- return this.resize();
- }
- },
- height: function(height) {
- if (height === undefined) {
- return this.container.height();
- } else {
- this.container.css('height', height);
- return this.resize();
- }
- },
- loading: function(loading) {
- if (loading)
- this.container.find('.lightbox-content').addClass('lightbox-loader');
- else
- this.container.find('.lightbox-content').removeClass('lightbox-loader');
- }
- };
- var W3tc_Overlay = {
- window: jQuery(window),
- container: null,
- create: function() {
- var me = this;
- this.container = jQuery('<div id="overlay" />').css({
- top: 0,
- left: 0,
- width: 0,
- height: 0,
- position: 'fixed',
- 'z-index': 9990,
- display: 'none',
- opacity: 0.6
- });
- jQuery('#w3tc').append(this.container);
- this.window.resize(function() {
- me.resize();
- });
- this.window.scroll(function() {
- me.resize();
- });
- },
- show: function() {
- this.create();
- this.resize();
- this.container.show();
- },
- hide: function() {
- this.container.remove();
- },
- resize: function() {
- this.container.css({
- width: this.window.width(),
- height: this.window.height()
- });
- }
- };
- var w3tc_minify_recommendations_checked = {};
- function w3tc_lightbox_minify_recommendations(nonce) {
- W3tc_Lightbox.open({
- width: 1000,
- url: 'admin.php?page=w3tc_minify&w3tc_test_minify_recommendations&_wpnonce=' + nonce,
- callback: function(lightbox) {
- var theme = jQuery('#recom_theme').val();
- if (jQuery.ui && jQuery.ui.sortable) {
- jQuery("#recom_js_files,#recom_css_files").sortable({
- axis: 'y',
- stop: function() {
- jQuery(this).find('li').each(function(index) {
- jQuery(this).find('td:eq(1)').html((index + 1) + '.');
- });
- }
- });
- }
- if (w3tc_minify_recommendations_checked[theme] !== undefined) {
- jQuery('#recom_js_files :text,#recom_css_files :text').each(function() {
- var hash = jQuery(this).parents('li').find('[name=recom_js_template]').val() + ':' + jQuery(this).val();
- if (w3tc_minify_recommendations_checked[theme][hash] !== undefined) {
- var checkbox = jQuery(this).parents('li').find(':checkbox');
- if (w3tc_minify_recommendations_checked[theme][hash]) {
- checkbox.attr('checked', 'checked');
- } else {
- checkbox.removeAttr('checked');
- }
- }
- });
- }
- jQuery('#recom_theme').change(function() {
- jQuery('#recom_js_files :checkbox,#recom_css_files :checkbox').each(function() {
- var li = jQuery(this).parents('li');
- var hash = li.find('[name=recom_js_template]').val() + ':' + li.find(':text').val();
- if (w3tc_minify_recommendations_checked[theme] === undefined) {
- w3tc_minify_recommendations_checked[theme] = {};
- }
- w3tc_minify_recommendations_checked[theme][hash] = jQuery(this).is(':checked');
- });
- lightbox.load('admin.php?page=w3tc_minify&w3tc_test_minify_recommendations&theme_key=' + jQuery(this).val() + '&_wpnonce=' + nonce, lightbox.options.callback);
- });
- jQuery('#recom_js_check').on( 'click', function() {
- if (jQuery('#recom_js_files :checkbox:checked').length) {
- jQuery('#recom_js_files :checkbox').removeAttr('checked');
- } else {
- jQuery('#recom_js_files :checkbox').attr('checked', 'checked');
- }
- return false;
- });
- jQuery('#recom_css_check').on( 'click', function() {
- if (jQuery('#recom_css_files :checkbox:checked').length) {
- jQuery('#recom_css_files :checkbox').removeAttr('checked');
- } else {
- jQuery('#recom_css_files :checkbox').attr('checked', 'checked');
- }
- return false;
- });
- jQuery('.recom_apply', lightbox.container).on( 'click', function() {
- var theme = jQuery('#recom_theme').val();
- jQuery('#js_files li').each(function() {
- if (jQuery(this).find(':text').attr('name').indexOf('js_files[' + theme + ']') != -1) {
- jQuery(this).remove();
- }
- });
- jQuery('#css_files li').each(function() {
- if (jQuery(this).find(':text').attr('name').indexOf('css_files[' + theme + ']') != -1) {
- jQuery(this).remove();
- }
- });
- jQuery('#recom_js_files li').each(function() {
- if (jQuery(this).find(':checkbox:checked').length) {
- w3tc_minify_js_file_add(theme, jQuery(this).find('[name=recom_js_template]').val(), jQuery(this).find('[name=recom_js_location]').val(), jQuery(this).find('[name=recom_js_file]').val());
- }
- });
- jQuery('#recom_css_files li').each(function() {
- if (jQuery(this).find(':checkbox:checked').length) {
- w3tc_minify_css_file_add(theme, jQuery(this).find('[name=recom_css_template]').val(), jQuery(this).find('[name=recom_css_file]').val());
- }
- });
- w3tc_minify_js_theme(theme);
- w3tc_minify_css_theme(theme);
- w3tc_input_enable('.js_enabled', jQuery('#minify_js_enable:checked').length);
- w3tc_input_enable('.css_enabled', jQuery('#minify_css_enable:checked').length);
- lightbox.close();
- });
- lightbox.resize();
- }
- });
- }
- function w3tc_lightbox_self_test(nonce) {
- W3tc_Lightbox.open({
- width: 800,
- minHeight: 300,
- url: 'admin.php?page=w3tc_dashboard&w3tc_test_self&_wpnonce=' + w3tc_nonce,
- callback: function(lightbox) {
- jQuery('.button-primary', lightbox.container).on( 'click', function() {
- lightbox.close();
- });
- lightbox.resize();
- }
- });
- }
- function w3tc_lightbox_upgrade(nonce, data_src, renew_key) {
- var client_id = '';
- if (window.w3tc_ga) {
- client_id = w3tc_ga_cid;
- }
- var minWidth = jQuery(window).width() - 30;
- var minHeight = jQuery(window).height() - 30;
- W3tc_Lightbox.open({
- id: 'w3tc-overlay',
- close: '',
- maxWidth: 1000,
- minWidth: ( minWidth < 1000 ? minWidth : 1000 ),
- minHeight: ( minHeight < 500 ? minHeight : 500 ),
- url: 'admin.php?page=w3tc_dashboard&w3tc_licensing_upgrade&_wpnonce=' +
- encodeURIComponent(nonce) + '&data_src=' + encodeURIComponent(data_src) +
- (renew_key ? '&renew_key=' + encodeURIComponent(renew_key) : '') +
- (client_id ? '&client_id=' + encodeURIComponent(client_id) : ''),
- callback: function(lightbox) {
- lightbox.options.height = jQuery('#w3tc-upgrade').outerHeight();
- jQuery('.button-primary', lightbox.container).on( 'click', function() {
- lightbox.close();
- });
- jQuery('#w3tc-purchase', lightbox.container).on( 'click', function() {
- lightbox.close();
- w3tc_lightbox_buy_plugin(nonce, data_src, renew_key, client_id);
- });
- jQuery('#w3tc-purchase-link', lightbox.container).on( 'click', function() {
- lightbox.close();
- if ( jQuery('#licensing').length ) {
- jQuery([document.documentElement, document.body]).animate({
- scrollTop: jQuery('#licensing').offset().top
- }, 2000);
- }
- });
- // Allow for customizations of the "upgrade" overlay specifically.
- jQuery( '.w3tc-overlay' ).addClass( 'w3tc-overlay-upgrade' );
- lightbox.resize();
- }
- });
- }
- function w3tc_lightbox_buy_plugin(nonce, data_src, renew_key, client_id) {
- if (window.w3tc_ga) {
- client_id = w3tc_ga_cid;
- }
- var minWidth = jQuery(window).width() - 30;
- var minHeight = jQuery(window).height() - 30;
- W3tc_Lightbox.open({
- id: 'w3tc-overlay',
- maxWidth: 1000,
- minWidth: ( minWidth < 1000 ? minWidth : 1000 ),
- minHeight: ( minHeight < 700 ? minHeight : 700 ),
- url: 'admin.php?page=w3tc_dashboard&w3tc_licensing_buy_plugin' +
- '&_wpnonce=' + encodeURIComponent(nonce) +
- '&data_src=' + encodeURIComponent(data_src) +
- (renew_key ? '&renew_key=' + encodeURIComponent(renew_key) : '') +
- (client_id ? '&client_id=' + encodeURIComponent(client_id) : ''),
- callback: function(lightbox) {
- var w3tc_license_listener = function(event) {
- if (event.origin.substr(event.origin.length - 12) !== ".w3-edge.com")
- return;
- var data = event.data.split(' ');
- if (data[0] === 'license') {
- // legacy purchase
- w3tc_lightbox_save_license_key(function() {
- lightbox.close();
- });
- } else if (data[0] === 'v2_license') {
- // reset default timeout
- var iframe = document.getElementById('buy_frame');
- if (iframe.contentWindow && iframe.contentWindow.postMessage)
- iframe.contentWindow.postMessage('v2_license_accepted', '*');
- lightbox.options.onClose = function() {
- window.location = window.location + '&refresh';
- }
- w3tc_lightbox_save_license_key(data[1], nonce, function() {
- jQuery('#buy_frame').attr('src', data[3]);
- });
- }
- }
- if (window.addEventListener) {
- addEventListener("message", w3tc_license_listener, false)
- } else if (attachEvent) {
- attachEvent("onmessage", w3tc_license_listener);
- }
- jQuery('.button-primary', lightbox.container).on( 'click', function() {
- lightbox.close();
- });
- // Allow for customizations of the "upgrade" overlay specifically.
- jQuery( '.w3tc-overlay' ).addClass( 'w3tc-overlay-upgrade' );
- lightbox.resize();
- }
- });
- }
- function w3tc_lightbox_save_license_key(license_key, nonce, callback) {
- jQuery('#plugin_license_key').val(license_key);
- var params = {
- w3tc_default_save_license_key: 1,
- license_key: license_key,
- _wpnonce: ('array' === jQuery.type(nonce)) ? nonce[0] : nonce
- };
- jQuery.post('admin.php?page=w3tc_dashboard', params, function(data) {
- callback();
- }, 'json').fail(callback);
- }
- jQuery(function() {
- jQuery('.button-minify-recommendations').on( 'click', function() {
- var nonce = jQuery(this).metadata().nonce;
- w3tc_lightbox_minify_recommendations(nonce);
- return false;
- });
- jQuery('.button-self-test').on( 'click', function() {
- var nonce = jQuery(this).metadata().nonce;
- w3tc_lightbox_self_test(nonce);
- return false;
- });
- jQuery('.button-buy-plugin').on( 'click', function() {
- var data_src = jQuery(this).data('src');
- var nonce = jQuery(this).data('nonce');
- if (!nonce) {
- nonce = w3tc_nonce;
- }
- var renew_key = jQuery(this).data('renew-key');
- if (window.w3tc_ga) {
- w3tc_ga(
- 'event',
- 'button',
- {
- eventCategory: 'click',
- eventLabel: 'license_upgrade_' + data_src
- }
- );
- }
- w3tc_lightbox_upgrade(nonce, data_src, renew_key);
- jQuery('#w3tc-license-instruction').show();
- return false;
- });
- jQuery('.button-renew-plugin').on( 'click', function() {
- var data_src = jQuery(this).data('src');
- var nonce = jQuery(this).data('nonce');
- if (!nonce) {
- nonce = w3tc_nonce;
- }
- var renew_key = jQuery(this).data('renew-key');
- if (window.w3tc_ga) {
- w3tc_ga(
- 'event',
- 'button',
- {
- eventCategory: 'click',
- eventLabel: 'license_renew_' + data_src
- }
- );
- }
- w3tc_lightbox_buy_plugin(nonce, data_src, renew_key);
- return false;
- });
- jQuery('body').on('click', '.w3tc_lightbox_close', function() {
- W3tc_Lightbox.close();
- });
- });
|