%PDF- %PDF-
Direktori : /var/www/html/buggydubrovnik.com/wp-content/plugins/envira-gallery-lite/assets/js/ |
Current File : /var/www/html/buggydubrovnik.com/wp-content/plugins/envira-gallery-lite/assets/js/addons.js |
/* ========================================================== * addons.js * http://enviragallery.com/ * ========================================================== * Copyright 2016 David Bisset. * * Licensed under the GPL License, Version 2.0 or later (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.gnu.org/licenses/gpl-2.0.html * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * ========================================================== */ ;(function($){ $(function(){ // Addons Search var addon_search_timeout; $( 'form#add-on-search input#add-on-searchbox' ).on( 'keyup', function() { // Clear timeout clearTimeout( addon_search_timeout ); // Get the search input, heading, results and cancel elements var search = $( this ), search_terms = $( search ).val().toLowerCase(), search_heading = $( search ).data( 'heading' ), search_results = $( search ).data( 'results' ), search_cancel = $( search ).data( 'cancel' ); // Show the Spinner $( 'form#add-on-search .spinner' ).css( 'visibility', 'visible' ); // If the search terms is less than 3 characters, show all Addons if ( search_terms.length < 3 ) { $( 'div.envira-addon' ).fadeIn( 'fast', function() { // Hide the Spinner $( 'form#add-on-search .spinner' ).css( 'visibility', 'hidden' ); } ); return; } // Iterate through the Addons, showing or hiding them depending on whether they // match the given search terms. $( 'div.envira-addon' ).each( function() { if ( $( 'h3.envira-addon-title', $( this ) ).text().toLowerCase().search( search_terms ) >= 0 ) { // This Addon's title does match the search terms // Show $( this ).fadeIn(); } else { // This Addon's title does not match the search terms // Hide $( this ).fadeOut(); } } ); // Hide the Spinner $( 'form#add-on-search .spinner' ).css( 'visibility', 'hidden' ); } ); //Sort Filter for addons $('#envira-filter-select').on('change', function () { var $select = $(this), $value = $select.val(), $container = $('#envira-addons-unlicensed'), container_data = $container.data('envira-filter'), $addon = $('#envira-addons-unlicensed .envira-addon'); //Make sure the addons are visible. $addon.show(); switch ($value) { case 'asc': $addon.sort(function (a, b) { return $(a).data('addon-title').localeCompare($(b).data('addon-title')); }).each(function (_, addon) { $(addon).removeClass('last'); $container.append(addon).hide().fadeIn(100); }); $("#envira-addons-unlicensed .envira-addon:nth-child(3n)").addClass('last'); break; case 'desc': $addon.sort(function (a, b) { return $(b).data('addon-title').localeCompare($(a).data('addon-title')); }).each(function (_, addon) { $(addon).removeClass('last'); $container.append(addon).hide().fadeIn(100); }); $("#envira-addons-unlicensed .envira-addon:nth-child(3n)").addClass('last'); break; case 'sort-order': $addon.sort(function (a, b) { return $(b).data('sort-order') - $(a).data('sort-order'); }).each(function (_, addon) { $(addon).removeClass('last'); $container.append(addon).hide().fadeIn(100); }); $("#envira-addons-unlicensed .envira-addon:nth-child(3n)").addClass('last'); break; } }); $('#envira-filter-select').on('change', function () { var $select = $(this), $value = $select.val(), $container = $('#envira-addons-licensed'), container_data = $container.data('envira-filter'), $addon = $('#envira-addons-licensed .envira-addon'); //Make sure the addons are visible. $addon.show(); switch ($value) { case 'asc': $addon.sort(function (a, b) { return $(a).data('addon-title').localeCompare($(b).data('addon-title')); }).each(function (_, addon) { $(addon).removeClass('last'); $container.append(addon).hide().fadeIn(100); }); $("#envira-addons-licensed .envira-addon:nth-child(3n)").addClass('last'); break; case 'desc': $addon.sort(function (a, b) { return $(b).data('addon-title').localeCompare($(a).data('addon-title')); }).each(function (_, addon) { $(addon).removeClass('last'); $container.append(addon).hide().fadeIn(100); }); $("#envira-addons-licensed .envira-addon:nth-child(3n)").addClass('last'); break; case 'sort-order': $addon.sort(function (a, b) { return $(b).data('sort-order') - $(a).data('sort-order'); }).each(function (_, addon) { $(addon).removeClass('last'); $container.append(addon).hide().fadeIn(100); }); $("#envira-addons-licensed .envira-addon:nth-child(3n)").addClass('last'); break; } }); // Re-enable install button if user clicks on it, needs creds but tries to install another addon instead. $('#envira-addons').on('click.refreshInstallAddon', '.envira-addon-action-button', function(e) { var el = $(this); var buttons = $('#envira-addons').find('.envira-addon-action-button'); $.each(buttons, function(i, element) { if ( el == element ) return true; enviraAddonRefresh(element); }); }); // Activate Addon $('#envira-addons').on('click.activateAddon', '.envira-activate-addon', function(e) { e.preventDefault(); var $this = $(this); // Remove any leftover error messages, output an icon and get the plugin basename that needs to be activated. $('.envira-addon-error').remove(); $(this).html('<i class="envira-toggle-on"></i> ' + envira_gallery_addons.activating); $(this).next().css({'display' : 'inline-block', 'margin-top' : '0px'}); var button = $(this); var plugin = $(this).attr('rel'); var el = $(this).parent().parent(); var message = $(this).parent().parent().find('.addon-status'); // Process the Ajax to perform the activation. var opts = { url: ajaxurl, type: 'post', async: true, cache: false, dataType: 'json', data: { action: 'envira_gallery_activate_addon', nonce: envira_gallery_addons.activate_nonce, plugin: plugin }, success: function(response) { // If there is a WP Error instance, output it here and quit the script. if ( response && true !== response ) { $(el).slideDown('normal', function() { $(this).after('<div class="envira-addon-error"><strong>' + response.error + '</strong></div>'); $this.next().hide(); $('.envira-addon-error').delay(3000).slideUp(); }); return; } // The Ajax request was successful, so let's update the output. $(button).html('<i class="envira-toggle-on"></i> ' + envira_gallery_addons.deactivate).removeClass('envira-activate-addon').addClass('envira-deactivate-addon'); $(message).text(envira_gallery_addons.active); // Trick here to wrap a span around he last word of the status var heading = $(message), word_array, last_word, first_part; word_array = heading.html().split(/\s+/); // split on spaces last_word = word_array.pop(); // pop the last word first_part = word_array.join(' '); // rejoin the first words together heading.html([first_part, ' <span>', last_word, '</span>'].join('')); // Proceed with CSS changes $(el).removeClass('envira-addon-inactive').addClass('envira-addon-active'); $this.next().hide(); }, error: function(xhr, textStatus ,e) { $this.next().hide(); return; } } $.ajax(opts); }); // Deactivate Addon $('#envira-addons').on('click.deactivateAddon', '.envira-deactivate-addon', function(e) { e.preventDefault(); var $this = $(this); // Remove any leftover error messages, output an icon and get the plugin basename that needs to be activated. $('.envira-addon-error').remove(); $(this).html('<i class="envira-toggle-on"></i> ' + envira_gallery_addons.deactivating); $(this).next().css({'display' : 'inline-block', 'margin-top' : '0px'}); var button = $(this); var plugin = $(this).attr('rel'); var el = $(this).parent().parent(); var message = $(this).parent().parent().find('.addon-status'); // Process the Ajax to perform the activation. var opts = { url: ajaxurl, type: 'post', async: true, cache: false, dataType: 'json', data: { action: 'envira_gallery_deactivate_addon', nonce: envira_gallery_addons.deactivate_nonce, plugin: plugin }, success: function(response) { // If there is a WP Error instance, output it here and quit the script. if ( response && true !== response ) { $(el).slideDown('normal', function() { $(this).after('<div class="envira-addon-error"><strong>' + response.error + '</strong></div>'); $this.next().hide(); $('.envira-addon-error').delay(3000).slideUp(); }); return; } // The Ajax request was successful, so let's update the output. $(button).html('<i class="envira-toggle-on"></i> ' + envira_gallery_addons.activate).removeClass('envira-deactivate-addon').addClass('envira-activate-addon'); $(message).text(envira_gallery_addons.inactive); // Trick here to wrap a span around he last word of the status var heading = $(message), word_array, last_word, first_part; word_array = heading.html().split(/\s+/); // split on spaces last_word = word_array.pop(); // pop the last word first_part = word_array.join(' '); // rejoin the first words together heading.html([first_part, ' <span>', last_word, '</span>'].join('')); // Proceed with CSS changes $(el).removeClass('envira-addon-active').addClass('envira-addon-inactive'); $this.next().hide(); }, error: function(xhr, textStatus ,e) { $this.next().hide(); return; } } $.ajax(opts); }); // Install Addon $('#envira-addons').on('click.installAddon', '.envira-install-addon', function(e) { e.preventDefault(); var $this = $(this); // Remove any leftover error messages, output an icon and get the plugin basename that needs to be activated. $('.envira-addon-error').remove(); $(this).html('<i class="envira-cloud-download"></i> ' + envira_gallery_addons.installing); $(this).next().css({'display' : 'inline-block', 'margin-top' : '0px'}); var button = $(this); var plugin = $(this).attr('rel'); var el = $(this).parent().parent(); var message = $(this).parent().parent().find('.addon-status'); // Process the Ajax to perform the activation. var opts = { url: ajaxurl, type: 'post', async: true, cache: false, dataType: 'json', data: { action: 'envira_gallery_install_addon', nonce: envira_gallery_addons.install_nonce, plugin: plugin }, success: function(response) { // If there is a WP Error instance, output it here and quit the script. if ( response.error ) { $(el).slideDown('normal', function() { $(button).parent().parent().after('<div class="envira-addon-error"><div class="xinterior"><p><strong>' + response.error + '</strong></p></div></div>'); $(button).html('<i class="envira-cloud-download"></i> ' + envira_gallery_addons.install); $this.next().hide(); $('.envira-addon-error').delay(4000).slideUp(); }); return; } // If we need more credentials, output the form sent back to us. if ( response.form ) { // Display the form to gather the users credentials. $(el).slideDown('normal', function() { $(this).after('<div class="envira-addon-error">' + response.form + '</div>'); $this.next().hide(); }); // Add a disabled attribute the install button if the creds are needed. $(button).attr('disabled', true); $('#envira-addons').on('click.installCredsAddon', '#upgrade', function(e) { // Prevent the default action, let the user know we are attempting to install again and go with it. e.preventDefault(); $this.next().hide(); $(this).html('<i class="envira-cloud-download"></i> ' + envira_gallery_addons.installing); $(this).next().css({'display' : 'inline-block', 'margin-top' : '0px'}); // Now let's make another Ajax request once the user has submitted their credentials. var hostname = $(this).parent().parent().find('#hostname').val(); var username = $(this).parent().parent().find('#username').val(); var password = $(this).parent().parent().find('#password').val(); var proceed = $(this); var connect = $(this).parent().parent().parent().parent(); var cred_opts = { url: ajaxurl, type: 'post', async: true, cache: false, dataType: 'json', data: { action: 'envira_gallery_install_addon', nonce: envira_gallery_addons.install_nonce, plugin: plugin, hostname: hostname, username: username, password: password }, success: function(response) { // If there is a WP Error instance, output it here and quit the script. if ( response.error ) { $(el).slideDown('normal', function() { $(button).parent().parent().after('<div class="envira-addon-error"><strong>' + response.error + '</strong></div>'); $(button).html('<i class="envira-cloud-download"></i> ' + envira_gallery_addons.install); $this.next().hide(); $('.envira-addon-error').delay(4000).slideUp(); }); return; } if ( response.form ) { $this.next().hide(); $('.envira-inline-error').remove(); $(proceed).val(envira_gallery_addons.proceed); $(proceed).after('<span class="envira-inline-error">' + envira_gallery_addons.connect_error + '</span>'); return; } // The Ajax request was successful, so let's update the output. $(connect).remove(); $(button).show(); $(button).text(envira_gallery_addons.activate).removeClass('envira-install-addon').addClass('envira-activate-addon'); $(button).attr('rel', response.plugin); $(button).removeAttr('disabled'); $(message).text(envira_gallery_addons.inactive); // Trick here to wrap a span around he last word of the status var heading = $(message), word_array, last_word, first_part; word_array = heading.html().split(/\s+/); // split on spaces last_word = word_array.pop(); // pop the last word first_part = word_array.join(' '); // rejoin the first words together heading.html([first_part, ' <span>', last_word, '</span>'].join('')); // Proceed with CSS changes $(el).removeClass('envira-addon-not-installed').addClass('envira-addon-inactive'); $this.next().hide(); }, error: function(xhr, textStatus ,e) { $this.next().hide(); return; } } $.ajax(cred_opts); }); // No need to move further if we need to enter our creds. return; } // The Ajax request was successful, so let's update the output. $(button).html('<i class="envira-toggle-on"></i> ' + envira_gallery_addons.activate).removeClass('envira-install-addon').addClass('envira-activate-addon'); $(button).attr('rel', response.plugin); $(message).text(envira_gallery_addons.inactive); // Trick here to wrap a span around he last word of the status var heading = $(message), word_array, last_word, first_part; word_array = heading.html().split(/\s+/); // split on spaces last_word = word_array.pop(); // pop the last word first_part = word_array.join(' '); // rejoin the first words together heading.html([first_part, ' <span>', last_word, '</span>'].join('')); // Proceed with CSS changes $(el).removeClass('envira-addon-not-installed').addClass('envira-addon-inactive'); $this.next().hide(); }, error: function(xhr, textStatus ,e) { $this.next().hide(); return; } } $.ajax(opts); }); // Function to clear any disabled buttons and extra text if the user needs to add creds but instead tries to install a different addon. function enviraAddonRefresh(element) { if ( $(element).attr('disabled') ) $(element).removeAttr('disabled'); if ( $(element).parent().parent().hasClass('envira-addon-not-installed') ) $(element).text(envira_gallery_addons.install); } }); }(jQuery));