( function () { 'use strict'; Vue.component( 'plugin-item-registered', { template: '#jet-dashboard-plugin-item-registered', props: { pluginData: Object, }, data: function() { return { usefulLinksToggle: false } }, computed: { itemClass: function() { return [ 'plugin-item', 'plugin-item--registered', this.dropdownVisible ? 'dropdown-visible' : '' ]; }, usefulLinksEmpty: function() { return 0 === this.pluginData.usefulLinks.length; }, mainLinkItem: function() { if ( ! this.usefulLinksEmpty ) { let firstItem = this.pluginData.usefulLinks[0]; return { 'url': firstItem.url, 'label': firstItem.label, 'target': firstItem.target, }; } return { 'url': this.pluginData.docs, 'label': __( 'Go to docs', 'jet-dashboard' ), 'target': '_blank' }; }, dropdownLinkItems: function() { let usefulLinks = this.pluginData.usefulLinks; return usefulLinks; }, dropdownAvaliable: function() { return 1 < this.dropdownLinkItems.length; }, dropdownVisible: function() { return this.usefulLinksToggle && 1 < this.dropdownLinkItems.length; }, }, methods: { mouseoverHandle: function() { this.usefulLinksToggle = true; }, mouseleaveHandle: function() { this.usefulLinksToggle = false; }, } } ); Vue.component( 'offers-item', { template: '#jet-dashboard-offers-item', props: { config: Object, }, data: function() { return {} }, computed: { itemClass: function() { return [ 'offers-item', ]; }, configDefined: function() { return this.config; }, logo: function() { return this.configDefined && this.config['logo'] ? this.config['logo'] : false; }, name: function() { return this.configDefined && this.config['name'] ? this.config['name'] : false; }, desc: function() { return this.configDefined && this.config['desc'] ? this.config['desc'] : false; }, actionConfig: function() { return this.configDefined && this.config['actionUrl'] && this.config['actionLabel'] ? { url: this.config['actionUrl'], label: this.config['actionLabel'] } : false; }, }, } ); Vue.component( 'extras-item', { template: '#jet-dashboard-extras-item', props: { config: Object, }, data: function() { return { adminUrl: window.JetDashboardConfig.adminUrl || '#', userPlugins: window.JetDashboardConfig.userPlugins || {}, } }, computed: { itemClass: function() { return [ 'extras-item', ]; }, configDefined: function() { return this.config || false; }, logo: function() { return this.configDefined && this.config['logo'] ? this.config['logo'] : false; }, name: function() { return this.configDefined && this.config['name'] ? this.config['name'] : false; }, desc: function() { return this.configDefined && this.config['desc'] ? this.config['desc'] : false; }, actionType: function() { return this.configDefined && this.config['actionType'] ? this.config['actionType'] : 'external'; }, requirementPlugin: function() { return this.configDefined && this.config['requirementPlugin'] ? this.config['requirementPlugin'] : false; }, actionConfig: function() { let actionConfig = false; switch( this.actionType ) { case 'external': actionConfig = this.configDefined && this.config['externalUrl'] && this.config['externalLabel'] ? { url: this.config['externalUrl'], label: this.config['externalLabel'], target: '_blank' } : false; break; case 'dashboard': if ( this.requirementPlugin && this.userPlugins.hasOwnProperty( this.requirementPlugin ) && this.userPlugins[ this.requirementPlugin ].isActivated ) { actionConfig = this.configDefined && this.config['dashboardUrl'] && this.config['dashboardLabel'] ? { url: this.adminUrl + this.config['dashboardUrl'], label: this.config['dashboardLabel'], target: '_self' } : false; } else { actionConfig = this.configDefined && this.config['externalUrl'] && this.config['externalLabel'] ? { url: this.config['externalUrl'], label: this.config['externalLabel'], target: '_blank' } : false; } break; } return actionConfig; }, }, } ); Vue.component( 'welcome-page', { template: '#jet-dashboard-welcome-page', props: { subpage: [ String, Boolean ] }, data: function() { return { proccesingState: false, allJetPlugins: window.JetDashboardConfig.allJetPlugins || {}, licenseList: window.JetDashboardConfig.licenseList || [], avaliableBanners: window.JetDashboardConfig.avaliableBanners || [], offersConfig: window.JetDashboardConfig.offersConfig || [], extrasConfig: window.JetDashboardConfig.extrasConfig || [], generalConfig: window.JetDashboardConfig.generalConfig || [], crocoWizardData: window.JetDashboardConfig.crocoWizardData || false, themeInfo: window.JetDashboardConfig.themeInfo || false, actionPlugin: false, actionPluginRequest: null, actionPluginProcessed: false, }; }, computed: { innerComponentConfig: function() { let innerComponentConfig = this.$root.pageConfig['inner-component'] || false, bannersData = this.$root.getBannerListForArea( innerComponentConfig ); innerComponentConfig = Object.assign( innerComponentConfig, { bannersData: bannersData } ); return innerComponentConfig; }, isLicenseActivated: function() { return 0 !== this.licenseList.length; }, licencePluginList: function() { let licencePluginList = {}; for ( let licence of this.licenseList ) { let plugins = licence['licenseDetails']['plugins']; for ( let plugin in plugins ) { let pluginData = plugins[ plugin ]; let pluginSlug = pluginData.slug; if ( ! licencePluginList.hasOwnProperty( plugin ) ) { licencePluginList[ plugin ] = pluginData; } } } return licencePluginList; }, registeredPluginList: function() { let registeredPluginList = {}; for ( let pluginSlug in this.allJetPlugins ) { if ( this.allJetPlugins[ pluginSlug ][ 'isInstalled' ] && this.allJetPlugins[ pluginSlug ][ 'isActivated' ] ) { registeredPluginList[ pluginSlug ] = this.allJetPlugins[ pluginSlug ]; } } return registeredPluginList; }, avaliablePluginList: function() { let avaliablePluginList = {}; for ( let pluginSlug in this.allJetPlugins ) { if ( ( ! this.allJetPlugins[ pluginSlug ]['isInstalled'] ) && this.licencePluginList.hasOwnProperty( pluginSlug ) ) { let pluginData = this.allJetPlugins[ pluginSlug ]; avaliablePluginList[ pluginSlug ] = pluginData; } } return avaliablePluginList; }, avaliablePluginCount: function() { return Object.keys( this.avaliablePluginList ).length; }, morePluginList: function() { let morePluginList = {}; for ( let pluginSlug in this.allJetPlugins ) { if ( ( ! this.allJetPlugins[ pluginSlug ]['isInstalled'] ) && ( ! this.licencePluginList.hasOwnProperty( pluginSlug ) ) ) { let pluginData = this.allJetPlugins[ pluginSlug ]; morePluginList[ pluginSlug ] = pluginData; } } return morePluginList; }, morePluginsVisible: function() { return 0 !== Object.keys( this.morePluginList ).length; }, updatePluginList: function() { let updatePluginList = {}; for ( let pluginSlug in this.registeredPluginList ) { if ( this.registeredPluginList[ pluginSlug ][ 'updateAvaliable' ] ) { updatePluginList[ pluginSlug ] = this.registeredPluginList[ pluginSlug ]; } } return updatePluginList; }, updatePluginCount: function() { return Object.keys( this.updatePluginList ).length; }, updatesMessage: function() { let updateMessage = sprintf( _n( 'You can update %s plugin', 'You can update %s plugins', this.updatePluginCount, 'jet-dashboard' ), this.updatePluginCount ), noUpdatesMessage = __( 'All plugins updated', 'jet-dashboard' ), message = ( 0 === this.updatePluginCount ) ? noUpdatesMessage : updateMessage; if ( ! this.isLicenseActivated ) { message = __( 'Activate license to update your JetPlugins', 'jet-dashboard' ); } return message; }, avaliableToInstallMessage: function() { let avaliableMessage = sprintf( _n( 'You can install %s more Plugin with your licence', 'You can install %s more Plugins with your licence', this.avaliablePluginCount, 'jet-dashboard' ), this.avaliablePluginCount ), noAvaliableMessage = __( 'All available plugins are already installed', 'jet-dashboard' ); return 0 === this.avaliablePluginCount ? noAvaliableMessage : avaliableMessage; }, avaliableOffers: function() { return this.offersConfig.offerList || []; }, isWizardInstalled: function() { return this.crocoWizardData.isInstalled || false; }, isWizardActivated: function() { return this.crocoWizardData.isActivated || false; }, wizardSectionsVisible: function() { let productType = this.$root.productType, visibleMap = [ 'plugin-set', 'all-inclusive', 'lifetime', ]; return ( !this.isWizardInstalled || !this.isWizardActivated ) && visibleMap.includes( productType ); }, wizardSectionsTitle: function() { let productType = this.$root.productType, title = __( 'Try quickstart installation', 'jet-dashboard' ); switch( productType ) { case 'lifetime': case 'all-inclusive': title = __( 'Unpack Free All-inclusive items', 'jet-dashboard' ); break; case 'default': title = __( 'Try quickstart installation', 'jet-dashboard' ); break; } return title; }, offersVisible: function() { return 0 !== this.avaliableOffers.length; }, avaliableExtras: function() { return this.extrasConfig.extraList || []; }, extrasVisible: function() { let productType = this.$root.productType, visibleMap = [ 'all-inclusive', 'lifetime', ]; return 0 !== this.avaliableExtras.length && visibleMap.includes( productType ) && ! this.wizardSectionsVisible; }, getMoreBannerVisible: function() { let productType = this.$root.productType, visibleMap = [ 'not-activated', 'theme-plugin-bundle', 'single-plugin', ]; return visibleMap.includes( productType ); }, getMoreBannerLink: function() { let baseUrl = this.generalConfig.pricingPageUrl || 'https://crocoblock.com/pricing/', licenseType = `${ this.$root.licenseType }-license` || 'not-activated-license', themeAuthor = this.$root.themeInfo.authorSlug || 'unknow-author', utmString = window.JetDasboard.getUtmParamsString( { utm_source: `dashboard/${ this.$root.pageModule }`, utm_medium: `${ licenseType }/${ themeAuthor }`, utm_campaign: 'upsale-crocoblock', utm_content: 'banner-60-percent' } ); if ( utmString ) { return `${ baseUrl }?${ utmString }`; } return baseUrl; }, isLifetime: function() { let productType = this.$root.productType; return 'lifetime' === productType ? true : false; } }, methods: { getLicenseExpireMessage: function( rawDate = '' ) { let convertedDate = this.convertDateFormat( rawDate ), expireCases = [ '0000-00-00 00:00:00', '1000-01-01 00:00:00', 'lifetime' ]; if ( expireCases.includes( rawDate ) ) { return __( 'Lifetime', 'jet-dashboard' ); } return sprintf( __( 'Licence expires %s', 'jet-dashboard' ), convertedDate ); }, convertDateFormat: function( _date = '' ) { let lifetimeCases = [ '0000-00-00 00:00:00', '1000-01-01 00:00:00', 'lifetime' ], rawDate = lifetimeCases.includes( _date ) ? '1000-01-01 00:00:00' : _date, timeStamp = Date.parse( rawDate ), dateTimeFormat = new Intl.DateTimeFormat( 'en', { year: 'numeric', month: 'short', day: '2-digit' } ), [ { value: month },,{ value: day },,{ value: year } ] = dateTimeFormat.formatToParts( timeStamp ), convertedDate = `${ month }. ${ day }, ${ year }`; return convertedDate; }, wizardActionHandle: function() { let self = this, action = false; if ( ! this.isWizardInstalled ) { action = 'install'; } if ( this.isWizardInstalled && ! this.isWizardActivated ) { action = 'activate'; } self.actionPluginRequest = jQuery.ajax( { type: 'POST', url: window.JetDashboardConfig.ajaxUrl, dataType: 'json', data: { action: 'jet_dashboard_wizard_plugin_action', data: { plugin: 'crocoblock-wizard/crocoblock-wizard.php', action: action, } }, beforeSend: function( jqXHR, ajaxSettings ) { if ( null !== self.actionPluginRequest ) { self.actionPluginRequest.abort(); } self.actionPluginProcessed = true; }, success: function( responce, textStatus, jqXHR ) { self.actionPluginProcessed = false; self.$CXNotice.add( { message: responce.message, type: responce.status, duration: 3000, } ); if ( 'success' === responce.status ) { self.proccesingState = true; setTimeout( function() { window.location.reload(); }, 1000 ); //self.crocoWizardData = responce.data; } } } ); }, pluginAction: function( plugin_file, action ) { }, navigateToLicensePage: function() { window.location.href = window.JetDashboardConfig.licensePageUrl; }, navigateToLicenseManager: function() { window.location.href = window.JetDashboardConfig.licenseManagerUrl; } } } ); } )();