????JFIF??x?x????'
Server IP : 79.136.114.73 / Your IP : 52.15.53.236 Web Server : Apache/2.4.7 (Ubuntu) PHP/5.5.9-1ubuntu4.29 OpenSSL/1.0.1f System : Linux b8009 3.13.0-170-generic #220-Ubuntu SMP Thu May 9 12:40:49 UTC 2019 x86_64 User : www-data ( 33) PHP Version : 5.5.9-1ubuntu4.29 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority, MySQL : ON | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /var/www/www.astacus.se/wp-content/themes/x/framework/js/src/admin/ |
Upload File : |
// ============================================================================= // X-ADDONS-HOME.JS // ----------------------------------------------------------------------------- // Addons scripts. // ============================================================================= // ============================================================================= // TABLE OF CONTENTS // ----------------------------------------------------------------------------- // 01. Add Data Sources // 02. Notices // 03. Auto Configure Cornerstone // 04. Validation // 05. Automatic Updates // 06. Customizer Manager // 07. Demo Content // 08. Extensions and Approved Plugins // ============================================================================= // Add Data Sources // ============================================================================= tco.addDataSource( xAddonsHome ); // Notices // ============================================================================= ( function(){ if ( ! xAddonsHome.modules || ! xAddonsHome.notices ) return for ( var moduleName in xAddonsHome.modules ) { var module = xAddonsHome.modules[moduleName]; if ( module.notices ) { for ( var noticeKey in module.notices ) { var notice = module.notices[noticeKey]; if ( -1 !== xAddonsHome.notices.indexOf( noticeKey ) ) { tco.showNotice( module.notices[noticeKey] ); } } } } } )(); // Auto Configure Cornerstone // ============================================================================= tco.addModule( 'x-auto-configure-cornerstone', function( $this, targets, data ) { var state = $this.data( 'tco-module-state' ); if ( 'install' === state ) { install(); } if ( 'activate' === state ) { activate(); } function install() { tco.ajax({ action: 'x_auto_install_cornerstone', done: function( installResponse ){ activate( function() { complete( installResponse ); } ) }, fail: fail, }); } function activate( handler ) { tco.ajax({ action: 'x_auto_activate_cornerstone', done: ( 'function' === typeof handler ) ? handler : complete, fail: fail, }); } function fail( response ) { if ( ! response || ! response.message ) { var error = { message: data.errors[ state ] || data.errors.install }; if ( response.status && response.statusText ) { error.errorDetails = response.status + ' ' + response.statusText; } response = error; } complete( response ); } function complete( response ) { if ( ! response ) return; if ( response.message ) { var $notice = tco.showNotice( response.message ); } if ( $notice && response.errorDetails ) { $notice.find('[data-tco-error-details]').click( function( e ) { e.preventDefault(); tco.confirm( { message: response.errorDetails, acceptBtn: '', declineBtn: data.errorBack, class: 'tco-confirm-error' }); } ); } } } ); // Validation // ============================================================================= tco.addModule( 'x-validation', function( $this, targets, data ) { var $message = targets['message'] || false, $button = targets['button'] || false, $overlay = targets['overlay'] || false, $input = targets['input'] || false, $form = targets['form'] || false; $preloadKey = targets['preload-key'] || false; if ( ! $message || ! $button || ! $overlay || ! $input || ! $form || ! $preloadKey ) return; $form.on( 'submit', function( e ) { e.preventDefault(); $input.prop( 'disabled', true ); $this.tcoShowMessage( data.verifying ); tco.ajax({ action: 'x_validation', code: $input.val(), done: done, fail: fail }); } ); var preloadKey = $preloadKey.val() if ( 'string' === typeof preloadKey && preloadKey.length > 1 ) { $input.val( preloadKey ); $form.submit(); } function done( response ) { if ( ! response.message ) { return fail( response ); } if ( response.complete ) { $this.tcoShowMessage( response.message ); setTimeout( complete, 2500 ); } else { incomplete( response ); } } function incomplete( response ) { $message.html( response.message ); $button.html( response.button ); var baseDelay = 650; setTimeout( function() { $this.tcoShowMessage( '' ); }, baseDelay * 2 ); setTimeout( function() { $overlay.addClass( 'tco-active' ); }, baseDelay * 3 ); if ( response.url ) { $button.attr('href', response.url ); if ( response.newTab ) { $button.attr( 'target', '_blank' ); } } else { $button.attr( 'href', '#' ); } $button.off( 'click' ); if ( response.dismiss ) { $button.click( function() { $overlay.removeClass( 'tco-active' ); $this.tcoRemoveMessage(); setTimeout( function() { $input.val( '' ).prop( 'disabled', false ); }, baseDelay * 2 ); } ); } } function complete() { var args = tco.queryString.parse( window.location.search ); delete args['tco-key']; args.notice = 'validation-complete'; window.location.search = tco.queryString.stringify( args ); } function fail( response ) { var message = ( response.message ) ? response.message : response; if ( message.responseText ) { message = message.responseText; } incomplete( { message: data.error, button: data.errorButton, dismiss: true } ); $message.find('[data-tco-error-details]').click( function( e ) { e.preventDefault(); tco.confirm( { message: message, acceptBtn: '', declineBtn: data.errorButton, class: 'tco-confirm-error' }); } ); console.log( response ); } jQuery( 'body' ).on( 'click', 'a[data-tco-focus="validation-input"]', function( e ) { e.preventDefault(); $input.focus(); }); } ); tco.addModule( 'x-validation-revoke', function( $this, targets, data ) { var $revoke = targets['revoke'] || false; if ( ! $revoke ) return; $revoke.click( function() { tco.confirm( { message: data.confirm, acceptClass: 'tco-btn-nope', acceptBtn: data.accept, declineBtn: data.decline, accept: function() { $revoke.removeAttr( 'href' ); $revoke.html( data.revoking ); tco.ajax({ action: 'x_validation_revoke', done: reload, fail: reload }); }, } ); }); function reload() { var args = tco.queryString.parse( tco.queryString.extract( window.location.href ) ); delete args['tco-key']; args.notice = 'validation-revoked'; window.location.search = tco.queryString.stringify( args ); } } ); // Automatic Updates // ============================================================================= tco.addModule( 'x-automatic-updates', function( $this, targets, data ) { var $checkNow = targets['check-now'] || false, $latestAvailable = targets['latest-available'] || false; if ( ! $checkNow || ! $latestAvailable) return; if ( data.latest ) { $latestAvailable.html( data.latest ); } $checkNow.find( 'a' ).click( function( e ) { e.preventDefault(); $checkNow.html( data.checking ); tco.ajax({ action: 'x_update_check', done: function( response ) { if ( response.latest && response.latest !== data.latest ) { $checkNow.html( data.completeNew ); $latestAvailable.html( response.latest ); } else { $checkNow.html( data.complete ); } }, fail: function( response ) { console.warn( 'X Update Check Error', response ); $checkNow.html( data.error ); } }); }); } ); // Customizer Manager // ============================================================================= tco.addModule( 'x-customizer-manager', function( $this, targets, data ) { $importForm = targets['import-form'] || false, $importFile = targets['import-file'] || false, $export = targets['export'] || false, $reset = targets['reset'] || false; if ( ! $importForm || ! $importFile || ! $export || ! $reset ) return; // // Export. // $export.on( 'click', function() { $this.tcoShowMessage( data.export, 1500 ); } ); // // Import. // if ( featureDetect() ) { $importForm.on('drag dragstart dragend dragover dragenter dragleave drop', function(e) { e.preventDefault(); e.stopPropagation(); }).on('dragover dragenter', function() { $importForm.addClass( 'tco-dragover' ); }).on('dragleave dragend drop', function() { $importForm.removeClass( 'tco-dragover' ); }).on('drop', function(e) { confirmUpload( e.originalEvent.dataTransfer.files[0] ); }); $importFile[0].onchange = function () { confirmUpload( this.files[0] ); }; } else { $this.tcoShowMessage( data.useModernBrowser, 2500 ); } function confirmUpload( file ) { tco.confirm( { message: data.importConfirm, acceptClass: 'tco-btn-nope', acceptBtn: data.yep, declineBtn: data.nope, accept: function() { readFile( file ) }, decline: function() { clearFileInput() } } ); } function readFile( file ) { $this.tcoShowMessage( data.importBegin ); var reader = new FileReader(); reader.onload = function(e) { try { upload( JSON.parse( reader.result ) ); } catch (e) { $this.tcoShowMessage( data.importError, 2500 ); console.log( 'X Customizer Manager Import Error', e ); } } try { reader.readAsText( file ); } catch (e) { $this.tcoShowMessage( data.importError, 2500 ); console.log( 'X Customizer Manager Import Error', e ); } } function upload( fileData ) { tco.ajax( { action: 'x_customizer_manager_import', import: fileData, done: function( response ) { $this.tcoShowMessage( data.importSuccess, 2500 ); clearFileInput(); }, fail: function( response ) { console.warn( 'X Customizer Import Error', response ); $this.tcoShowMessage( data.importError, 2500 ); clearFileInput(); } } ); } function clearFileInput() { $importFile[0].value = ''; $importFile[0].type = ''; $importFile[0].type = 'file'; } // // Reset. // $reset.click( function( e ) { e.preventDefault(); tco.confirm( { message: data.resetConfirm, acceptClass: 'tco-btn-nope', acceptBtn: data.yep, declineBtn: data.nope, accept: function() { $this.tcoShowMessage( data.resetBegin ); tco.ajax( { action: 'x_customizer_manager_reset', done: function( response ) { $this.tcoShowMessage( data.resetSuccess, 2500 ); }, fail: function( response ) { console.warn( 'X Customizer Reset Error', response ); $this.tcoShowMessage( data.resetError, 2500 ); } } ); } } ); }); function featureDetect() { var div = document.createElement('div'); return ( ( 'draggable' in div ) || ( 'ondragstart' in div && 'ondrop' in div ) ) && 'FormData' in window && 'FileReader' in window; } } ); // Demo Content // ============================================================================= tco.addModule( 'x-demo-content', function( $this, targets, data ) { var $select = targets['select'] || false, $selectExpanded = targets['select-group-expanded'] || false, $selectStandard = targets['select-group-standard'] || false, $demoLink = targets['demo-link'] || false, $setupButton = targets['setup-button'] || false; if ( ! $select || ! $selectExpanded || ! $selectStandard || ! $demoLink || ! $setupButton ) return; // // Setup markup. // jQuery.each( data.demos.expanded_demos, function( handle, data ) { $selectExpanded.append( makeOption( handle, data, 'expanded' ) ); } ); jQuery.each( data.demos.standard_demos, function( handle, data ) { $selectStandard.append( makeOption( handle, data, 'standard' ) ); } ); function makeOption( handle, data, type ) { return jQuery( '<option data-demo-type="' + type + '" value="' + handle + '">' + data.title + '</option>' ); } updateDemoLink(); $select.on( 'change', updateDemoLink ) function getSelectedDemo() { var $option = $select.find( ':selected' ) var expanded = 'expanded' === $option.data( 'demo-type'); var type = ( expanded ) ? 'expanded_demos' : 'standard_demos'; var name = $option.val(); var demo = data.demos[type][ name ] || {}; demo.name = name; demo.expanded = expanded; return demo; } function updateDemoLink() { var demo = getSelectedDemo(); $demoLink.attr( 'href', demo.demo_url ); } // // Submit. // $setupButton.click( function( e ) { e.preventDefault(); tco.confirm( { message: data.strings.confirm, acceptClass: 'tco-btn-nope', acceptBtn: data.strings.yep, declineBtn: data.strings.nope, accept: runImport } ); } ); function runImport() { var demo = getSelectedDemo(); importer.init( { 'demo': ( demo.expanded ) ? demo.name : demo.url }, demo.expanded ); } function buttonReady( state ) { $setupButton.prop( 'disabled', !state ); } // // Progress. // var $ = jQuery; var Progress = function() { this.$el = $( this.markup ); this.$message = this.$el.find('.tco-progress-title'); this.$bar = this.$el.find('.tco-progress-bar-inner'); } $.extend( Progress.prototype, { markup: '<div class="tco-modal-outer">' + '<div class="tco-modal-inner">' + '<div class="tco-progress">' + '<div class="tco-progress-title"></div>' + '<div class="tco-progress-bar-outer">' + '<div class="tco-progress-bar-inner"></div>' + '</div>' + '</div>' + '<div class="tco-progress-complete">' + '<div class="tco-progress-complete-icon dashicons dashicons-yes"></div>' + '<div class="tco-progress-complete-title">' + data.strings.complete + '</div>' + '</div>' + '</div>' + '</div>', start: function() { this.message( data.strings.start ); this.$el.addClass( 'tco-processing' ); $( 'body' ).prepend( this.$el ); setTimeout( function() { this.$el.addClass( 'tco-active' ); }.bind( this ), 0 ) this.setProgress(0); }, message: function( message ) { this.$message.html( message ) }, setProgress: function( ratio ) { ratio = ratio * 0.9 + 0.1; this.$bar.css( 'width', Math.round( ratio * 100) + '%' ); }, simulateProgress: function() { this.message( data.strings.simulated ); this.$bar.animate( { width: '80%' }, 250 ); }, complete: function() { this.message( ' ' ); this.$bar.animate( { width: '100%' }, 250 ); setTimeout(function(){ this.$el.removeClass( 'tco-processing' ); this.close(); }.bind(this), 400 ) }, fail: function( message ) { this.message( message ); this.close(); }, close: function() { setTimeout( function(){ this.$el.removeClass( 'tco-active' ); }.bind( this ), 1500 ); setTimeout(function(){ this.$el.detach(); this.setProgress(0); this.message(''); }.bind( this ), 2000 ); } }); // // Importer. // var Importer = function() { } $.extend( Importer.prototype, { init: function( demoData, expanded ) { this.demoData = demoData; this.demoData.action = ( expanded ) ? 'x_demo_importer' : 'x_demo_content_setup'; this.demoData.attempts = 1; this.demoData._tco_nonce = tcoCommon._tco_nonce; if (!expanded) return this.runStandard(); this.demoData.session = 's_' + Math.round( new Date().getTime() + ( Math.random() * 100 ) ); progress.start(); buttonReady( false ); this.acknowledge( { data: {}, first: true } ); }, runStandard: function() { progress.start(); progress.simulateProgress(); buttonReady( false ); // this.standardProcess( function( response ){ if ( response.success === false ) return this.failure( response.data.message, response ); progress.complete(); buttonReady(true); }.bind(this) ); }, standardProcess: function( success ) { jQuery.post( ajaxurl, this.demoData, success ).fail( function(data) { progress.message( this.timeOutMessage( this.demoData.attempts++ ) ); if ( this.demoData.attempts >= 25 ) return this.failure( data.strings.failure, data ); this.standardProcess( success ); // repeat }.bind(this) ); }, acknowledge: function( response ) { if ( !response.data && !response.first ) { progress.message( this.timeOutMessage( this.demoData.attempts++ ) ); if ( this.demoData.attempts > 25 ) return this.failure( data.strings.failure, response ); } else { this.demoData.attempts = 0; if ( response.success == false ) return this.failure( response.data.message, response.data ); if ( response.data.message ) progress.message( response.data.message ); if ( response.data.debug_message && data.strings.debug ) console.log( 'X Demo Debug', response.data.debug_message, response.data.debug || null ); if ( response.data.completion && response.data.completion === true ) { if ( response.data.debug && data.strings.debug ) console.log( response.data.debug ); return this.complete(); } if ( response.data.completion ) { progress.setProgress( response.data.completion.ratio ); } } setTimeout( function() { jQuery.post( ajaxurl, this.demoData ).always( this.acknowledge.bind(this) ); }.bind(this), 40 * this.demoData.attempts ); // slow down if timeouts start }, complete: function() { progress.complete(); buttonReady(true); }, failure: function( message, debug ) { progress.fail( message ); buttonReady(true); console.error( 'X Demo Importer failure', debug || {}); }, timeOutMessage: function( attempts ) { if (attempts > 20) return data.strings.timeout3; if (attempts > 10) return data.strings.timeout2; return data.strings.timeout1; } } ); var progress = new Progress(); var importer = new Importer(); } ); // Extensions and Approved Plugins // ============================================================================= tco.addModule( 'x-extension', function( $this, targets, data ) { var $install = targets['install'] || false, slug = $this.attr('id'), extension = ( 'undefined' !== typeof $this.data( 'x-extension' ) ) ? data.extensions[slug] : data.approvedPlugins[slug]; if ( ! $install || ! extension ) return; if ( extension.activated ) { $install.html( data.activated ) .addClass( 'tco-btn-yep tco-btn-disabled' ); return; } else if ( extension.installed ) { updateInstallButton(); return; } if ( ! window._xExtensionQueue ) { window._xExtensionQueue = { running: false, queue: [] }; } $install.on( 'click', clickInstall ); function clickInstall() { $install.prop( 'disabled', true ); if ( window._xExtensionQueue.running ) { $this.tcoShowMessage( 'Waiting to install…' ); window._xExtensionQueue.queue.unshift( install ); } else { install(); window._xExtensionQueue.running = true; } } function next() { if ( 0 < window._xExtensionQueue.queue.length ) { var job = window._xExtensionQueue.queue.pop(); job(); } else { window._xExtensionQueue.running = false; } } function install() { $this.tcoShowMessage( 'Installing…' ) tco.ajax( { action: 'x_extensions_installer', plugin: extension.plugin, package: extension.package, done: done, fail: fail, } ); } function done ( response ) { console.log( 'Installed', response ); updateInstallButton(); $this.tcoRemoveMessage( false, function() { $this.removeClass( 'tco-extension-not-installed' ).addClass( 'tco-extension-installed' ); } ); next(); } function fail( response ) { var message = ( response.message ) ? response.message : response; if ( message.responseText ) { message = message.responseText; } $this.tcoShowErrorMessage( data.error, message ); console.log( response ); next(); } function updateInstallButton() { $install.off( 'click', clickInstall ); $install.html( data.installed ) .attr( 'href', data.pluginsURI ) } } );