first commit

This commit is contained in:
2024-07-15 11:28:08 +02:00
commit f52d538ea5
21891 changed files with 6161164 additions and 0 deletions

View File

@@ -0,0 +1,102 @@
/* global jQuery */
( function( $ ) {
'use strict';
var ElementorAdminDialogApp = {
cacheElements: function() {
this.cache = {
$deactivateLink: $( '#the-list' ).find( '[data-slug="elementor"] span.deactivate a' ),
$dialogHeader: $( '#elementor-deactivate-feedback-dialog-header' ),
$dialogForm: $( '#elementor-deactivate-feedback-dialog-form' ),
};
},
bindEvents: function() {
var self = this;
self.cache.$deactivateLink.on( 'click', function( event ) {
event.preventDefault();
self.getModal().show();
} );
},
deactivate: function() {
location.href = this.cache.$deactivateLink.attr( 'href' );
},
initModal: function() {
var self = this,
modal;
self.getModal = function() {
if ( ! modal ) {
modal = elementorCommon.dialogsManager.createWidget( 'lightbox', {
id: 'elementor-deactivate-feedback-modal',
headerMessage: self.cache.$dialogHeader,
message: self.cache.$dialogForm,
hide: {
onButtonClick: false,
},
position: {
my: 'center',
at: 'center',
},
onReady: function() {
DialogsManager.getWidgetType( 'lightbox' ).prototype.onReady.apply( this, arguments );
this.addButton( {
name: 'submit',
text: __( 'Submit & Deactivate', 'elementor' ),
callback: self.sendFeedback.bind( self ),
} );
if ( ! elementorAdmin.config.feedback.is_tracker_opted_in ) {
this.addButton( {
name: 'skip',
text: __( 'Skip & Deactivate', 'elementor' ),
callback: function() {
self.deactivate();
},
} );
}
},
onShow: function() {
var $dialogModal = $( '#elementor-deactivate-feedback-modal' ),
radioSelector = '.elementor-deactivate-feedback-dialog-input';
$dialogModal.find( radioSelector ).on( 'change', function() {
$dialogModal.attr( 'data-feedback-selected', $( this ).val() );
} );
$dialogModal.find( radioSelector + ':checked' ).trigger( 'change' );
},
} );
}
return modal;
};
},
sendFeedback: function() {
var self = this,
formData = self.cache.$dialogForm.serialize();
self.getModal().getElements( 'submit' ).text( '' ).addClass( 'elementor-loading' );
$.post( ajaxurl, formData, this.deactivate.bind( this ) );
},
init: function() {
this.initModal();
this.cacheElements();
this.bindEvents();
},
};
$( function() {
ElementorAdminDialogApp.init();
} );
}( jQuery ) );

View File

@@ -0,0 +1,44 @@
export default class AdminMenuHandler extends elementorModules.ViewModule {
getDefaultElements() {
const settings = this.getSettings();
return {
$adminPageMenuLink: jQuery( `a[href="${ settings.path }"]` ),
};
}
// This method highlights the currently visited submenu item for the slug provided as an argument to this handler.
// This method also accepts a jQuery instance of a custom submenu item to highlight. If provided, the provided
// item will be the one highlighted.
highlightSubMenuItem( $element = null ) {
const $submenuItem = $element || this.elements.$adminPageMenuLink;
$submenuItem.addClass( 'current' );
// Need to add the 'current' class to the link element's parent `<li>` element as well.
$submenuItem.parent().addClass( 'current' );
}
highlightTopLevelMenuItem( $elementToHighlight, $elementToRemove = null ) {
const activeClasses = 'wp-has-current-submenu wp-menu-open current';
$elementToHighlight
.parent()
.addClass( activeClasses )
.removeClass( 'wp-not-current-submenu' );
if ( $elementToRemove ) {
$elementToRemove.removeClass( activeClasses );
}
}
onInit() {
super.onInit();
const settings = this.getSettings();
if ( window.location.href.includes( settings.path ) ) {
this.highlightSubMenuItem();
}
}
}

View File

@@ -0,0 +1,463 @@
import LandingPagesModule from 'elementor/modules/landing-pages/assets/js/admin/module';
import ExperimentsModule from 'elementor/core/experiments/assets/js/admin/module';
import environment from '../../../../core/common/assets/js/utils/environment';
( function( $ ) {
var ElementorAdmin = elementorModules.ViewModule.extend( {
maintenanceMode: null,
config: elementorAdminConfig,
getDefaultElements: function() {
var elements = {
$switchMode: $( '#elementor-switch-mode' ),
$goToEditLink: $( '#elementor-go-to-edit-page-link' ),
$switchModeInput: $( '#elementor-switch-mode-input' ),
$switchModeButton: $( '#elementor-switch-mode-button' ),
$elementorLoader: $( '.elementor-loader' ),
$builderEditor: $( '#elementor-editor' ),
$importButton: $( '#elementor-import-template-trigger' ),
$importArea: $( '#elementor-import-template-area' ),
$settingsForm: $( '#elementor-settings-form' ),
$settingsTabsWrapper: $( '#elementor-settings-tabs-wrapper' ),
$menuGetHelpLink: $( 'a[href="admin.php?page=go_knowledge_base_site"]' ),
$reMigrateGlobalsButton: $( '.elementor-re-migrate-globals-button' ),
};
elements.$settingsFormPages = elements.$settingsForm.find( '.elementor-settings-form-page' );
elements.$activeSettingsPage = elements.$settingsFormPages.filter( '.elementor-active' );
elements.$settingsTabs = elements.$settingsTabsWrapper.children();
elements.$activeSettingsTab = elements.$settingsTabs.filter( '.nav-tab-active' );
return elements;
},
toggleStatus: function() {
var isElementorMode = this.isElementorMode();
elementorCommon.elements.$body
.toggleClass( 'elementor-editor-active', isElementorMode )
.toggleClass( 'elementor-editor-inactive', ! isElementorMode );
},
bindEvents: function() {
var self = this;
self.elements.$switchModeButton.on( 'click', function( event ) {
event.preventDefault();
if ( self.isElementorMode() ) {
elementorCommon.dialogsManager.createWidget( 'confirm', {
message: __( 'Please note that you are switching to WordPress default editor. Your current layout, design and content might break.', 'elementor' ),
headerMessage: __( 'Back to WordPress Editor', 'elementor' ),
strings: {
confirm: __( 'Continue', 'elementor' ),
cancel: __( 'Cancel', 'elementor' ),
},
defaultOption: 'confirm',
onConfirm: function() {
self.elements.$switchModeInput.val( '' );
self.toggleStatus();
},
} ).show();
} else {
self.elements.$switchModeInput.val( true );
var $wpTitle = $( '#title' );
if ( ! $wpTitle.val() ) {
$wpTitle.val( 'Elementor #' + $( '#post_ID' ).val() );
}
if ( wp.autosave ) {
wp.autosave.server.triggerSave();
}
self.animateLoader();
$( document ).on( 'heartbeat-tick.autosave', function() {
elementorCommon.elements.$window.off( 'beforeunload.edit-post' );
location.href = self.elements.$goToEditLink.attr( 'href' );
} );
self.toggleStatus();
}
} );
self.elements.$goToEditLink.on( 'click', function() {
self.animateLoader();
} );
$( '.e-notice--dismissible' ).on( 'click', '.e-notice__dismiss, .e-notice-dismiss', function( event ) {
event.preventDefault();
const $wrapperElm = $( this ).closest( '.e-notice--dismissible' );
$.post( ajaxurl, {
action: 'elementor_set_admin_notice_viewed',
notice_id: $wrapperElm.data( 'notice_id' ),
} );
$wrapperElm.fadeTo( 100, 0, function() {
$wrapperElm.slideUp( 100, function() {
$wrapperElm.remove();
} );
} );
} );
$( '#elementor-clear-cache-button' ).on( 'click', function( event ) {
event.preventDefault();
var $thisButton = $( this );
$thisButton.removeClass( 'success' ).addClass( 'loading' );
$.post( ajaxurl, {
action: 'elementor_clear_cache',
_nonce: $thisButton.data( 'nonce' ),
} )
.done( function() {
$thisButton.removeClass( 'loading' ).addClass( 'success' );
} );
} );
$( '#elementor-library-sync-button' ).on( 'click', function( event ) {
event.preventDefault();
var $thisButton = $( this );
$thisButton.removeClass( 'success' ).addClass( 'loading' );
$.post( ajaxurl, {
action: 'elementor_reset_library',
_nonce: $thisButton.data( 'nonce' ),
} )
.done( function() {
$thisButton.removeClass( 'loading' ).addClass( 'success' );
} );
} );
$( '#elementor-replace-url-button' ).on( 'click', function( event ) {
event.preventDefault();
var $this = $( this ),
$tr = $this.parents( 'tr' ),
$from = $tr.find( '[name="from"]' ),
$to = $tr.find( '[name="to"]' );
$this.removeClass( 'success' ).addClass( 'loading' );
$.post( ajaxurl, {
action: 'elementor_replace_url',
from: $from.val(),
to: $to.val(),
_nonce: $this.data( 'nonce' ),
} )
.done( function( response ) {
$this.removeClass( 'loading' );
if ( response.success ) {
$this.addClass( 'success' );
}
elementorCommon.dialogsManager.createWidget( 'alert', {
message: response.data,
} ).show();
} );
} );
$( '#elementor_upgrade_fa_button' ).on( 'click', function( event ) {
event.preventDefault();
const $updateButton = $( this );
$updateButton.addClass( 'loading' );
elementorCommon.dialogsManager.createWidget( 'confirm', {
id: 'confirm_fa_migration_admin_modal',
message: __( 'I understand that by upgrading to Font Awesome 5,', 'elementor' ) + '<br>' + __( 'I acknowledge that some changes may affect my website and that this action cannot be undone.', 'elementor' ),
headerMessage: __( 'Font Awesome 5 Migration', 'elementor' ),
strings: {
confirm: __( 'Continue', 'elementor' ),
cancel: __( 'Cancel', 'elementor' ),
},
defaultOption: 'confirm',
onConfirm: () => {
$updateButton.removeClass( 'error' ).addClass( 'loading' );
$.post( ajaxurl, $updateButton.data() )
.done( function( response ) {
$updateButton.removeClass( 'loading' ).addClass( 'success' );
$( '#elementor_upgrade_fa_button' ).parent().append( response.data.message );
const redirectTo = ( location.search.split( 'redirect_to=' )[ 1 ] || '' ).split( '&' )[ 0 ];
if ( redirectTo ) {
location.href = decodeURIComponent( redirectTo );
return;
}
history.go( -1 );
} )
.fail( function() {
$updateButton.removeClass( 'loading' ).addClass( 'error' );
} );
},
onCancel: () => {
$updateButton.removeClass( 'loading' ).addClass( 'error' );
},
} ).show();
} );
self.elements.$settingsTabs.on( {
click: function( event ) {
event.preventDefault();
event.currentTarget.focus(); // Safari does not focus the tab automatically
},
focus: function() { // Using focus event to enable navigation by tab key
var hrefWithoutHash = location.href.replace( /#.*/, '' );
history.pushState( {}, '', hrefWithoutHash + this.hash );
self.goToSettingsTabFromHash();
},
} );
$( 'select.elementor-rollback-select' ).on( 'change', function() {
var $this = $( this ),
$rollbackButton = $this.next( '.elementor-rollback-button' ),
placeholderText = $rollbackButton.data( 'placeholder-text' ),
placeholderUrl = $rollbackButton.data( 'placeholder-url' );
$rollbackButton.html( placeholderText.replace( '{VERSION}', $this.val() ) );
$rollbackButton.attr( 'href', placeholderUrl.replace( 'VERSION', $this.val() ) );
} ).trigger( 'change' );
$( '.elementor-rollback-button' ).on( 'click', function( event ) {
event.preventDefault();
var $this = $( this );
elementorCommon.dialogsManager.createWidget( 'confirm', {
headerMessage: __( 'Rollback to Previous Version', 'elementor' ),
message: __( 'Are you sure you want to reinstall previous version?', 'elementor' ),
strings: {
confirm: __( 'Continue', 'elementor' ),
cancel: __( 'Cancel', 'elementor' ),
},
onConfirm: function() {
$this.addClass( 'loading' );
location.href = $this.attr( 'href' );
},
} ).show();
} );
self.elements.$reMigrateGlobalsButton.on( 'click', ( event ) => {
event.preventDefault();
const $this = $( event.currentTarget );
elementorCommon.dialogsManager.createWidget( 'confirm', {
headerMessage: __( 'Migrate to v3.0', 'elementor' ),
message: __( 'Please note that this process will revert all changes made to Global Colors and Fonts since upgrading to v3.x.', 'elementor' ),
strings: {
confirm: __( 'Continue', 'elementor' ),
cancel: __( 'Cancel', 'elementor' ),
},
onConfirm: () => {
$this.removeClass( 'success' ).addClass( 'loading' );
elementorCommon.ajax.addRequest( 're_migrate_globals', {
success: () => $this.removeClass( 'loading' ).addClass( 'success' ),
} );
},
} ).show();
} );
$( '.elementor_css_print_method select' ).on( 'change', function() {
var $descriptions = $( '.elementor-css-print-method-description' );
$descriptions.hide();
$descriptions.filter( '[data-value="' + $( this ).val() + '"]' ).show();
} ).trigger( 'change' );
},
onInit: function() {
elementorModules.ViewModule.prototype.onInit.apply( this, arguments );
this.initTemplatesImport();
this.initMaintenanceMode();
this.goToSettingsTabFromHash();
this.openGetHelpInNewTab();
this.addUserAgentClasses();
this.roleManager.init();
if ( elementorCommon.config.experimentalFeatures[ 'landing-pages' ] ) {
new LandingPagesModule();
}
new ExperimentsModule();
},
addUserAgentClasses() {
const body = document.querySelector( 'body' );
Object.entries( environment ).forEach( ( [ key, value ] ) => {
if ( ! value ) {
return;
}
body.classList.add( 'e--ua-' + key );
} );
},
openGetHelpInNewTab: function() {
this.elements.$menuGetHelpLink.attr( 'target', '_blank' );
},
initTemplatesImport: function() {
if ( ! elementorCommon.elements.$body.hasClass( 'post-type-elementor_library' ) ) {
return;
}
var self = this,
$importButton = self.elements.$importButton,
$importArea = self.elements.$importArea;
self.elements.$formAnchor = $( 'h1' );
$( '#wpbody-content' ).find( '.page-title-action' ).last().after( $importButton );
self.elements.$formAnchor.after( $importArea );
$importButton.on( 'click', function() {
$( '#elementor-import-template-area' ).toggle();
} );
},
initMaintenanceMode: function() {
var MaintenanceMode = require( 'elementor-admin/maintenance-mode' );
this.maintenanceMode = new MaintenanceMode();
},
isElementorMode: function() {
return ! ! this.elements.$switchModeInput.val();
},
animateLoader: function() {
this.elements.$goToEditLink.addClass( 'elementor-animate' );
},
goToSettingsTabFromHash: function() {
var hash = location.hash.slice( 1 );
if ( hash ) {
this.goToSettingsTab( hash );
}
},
goToSettingsTab: function( tabName ) {
const $pages = this.elements.$settingsFormPages;
if ( ! $pages.length ) {
return;
}
const $activePage = $pages.filter( '#' + tabName );
this.elements.$activeSettingsPage.removeClass( 'elementor-active' );
this.elements.$activeSettingsTab.removeClass( 'nav-tab-active' );
const $activeTab = this.elements.$settingsTabs.filter( '#elementor-settings-' + tabName );
$activePage.addClass( 'elementor-active' );
$activeTab.addClass( 'nav-tab-active' );
this.elements.$settingsForm.attr( 'action', 'options.php#' + tabName );
this.elements.$activeSettingsPage = $activePage;
this.elements.$activeSettingsTab = $activeTab;
},
translate: function( stringKey, templateArgs ) {
return elementorCommon.translate( stringKey, null, templateArgs, this.config.i18n );
},
roleManager: {
selectors: {
body: 'elementor-role-manager',
row: '.elementor-role-row',
label: '.elementor-role-label',
excludedIndicator: '.elementor-role-excluded-indicator',
excludedField: 'input[name="elementor_exclude_user_roles[]"]',
controlsContainer: '.elementor-role-controls',
toggleHandle: '.elementor-role-toggle',
arrowUp: 'dashicons-arrow-up',
arrowDown: 'dashicons-arrow-down',
},
toggle: function( $trigger ) {
var self = this,
$row = $trigger.closest( self.selectors.row ),
$toggleHandleIcon = $row.find( self.selectors.toggleHandle ).find( '.dashicons' ),
$controls = $row.find( self.selectors.controlsContainer );
$controls.toggleClass( 'hidden' );
if ( $controls.hasClass( 'hidden' ) ) {
$toggleHandleIcon.removeClass( self.selectors.arrowUp ).addClass( self.selectors.arrowDown );
} else {
$toggleHandleIcon.removeClass( self.selectors.arrowDown ).addClass( self.selectors.arrowUp );
}
self.updateLabel( $row );
},
updateLabel: function( $row ) {
var self = this,
$indicator = $row.find( self.selectors.excludedIndicator ),
excluded = $row.find( self.selectors.excludedField ).is( ':checked' );
if ( excluded ) {
$indicator.html( $indicator.data( 'excluded-label' ) );
} else {
$indicator.html( '' );
}
self.setAdvancedState( $row, excluded );
},
setAdvancedState: function( $row, state ) {
var self = this,
$controls = $row.find( 'input[type="checkbox"]' ).not( self.selectors.excludedField );
$controls.each( function( index, input ) {
$( input ).prop( 'disabled', state );
} );
},
bind: function() {
var self = this;
$( document ).on( 'click', self.selectors.label + ',' + self.selectors.toggleHandle, function( event ) {
event.stopPropagation();
event.preventDefault();
self.toggle( $( this ) );
} ).on( 'change', self.selectors.excludedField, function() {
self.updateLabel( $( this ).closest( self.selectors.row ) );
} );
},
init: function() {
var self = this;
if ( ! $( 'body[class*="' + self.selectors.body + '"]' ).length ) {
return;
}
self.bind();
$( self.selectors.row ).each( function( index, row ) {
self.updateLabel( $( row ) );
} );
},
},
} );
$( function() {
window.elementorAdmin = new ElementorAdmin();
elementorCommon.elements.$window.trigger( 'elementor/admin/init' );
} );
}( jQuery ) );

View File

@@ -0,0 +1,43 @@
import BetaTesterLayout from './layout';
class BetaTesterModule extends elementorModules.ViewModule {
onInit() {
elementorModules.ViewModule.prototype.onInit.apply( this, arguments );
this.showLayout( false );
}
showLayout( always = true ) {
if ( ! always && ( ! elementorAdmin.config.beta_tester.option_enabled || elementorAdmin.config.beta_tester.signup_dismissed || '#tab-fontawesome4_migration' === location.hash ) ) {
return;
}
this.layout = new BetaTesterLayout();
this.layout.showModal();
}
getDefaultSettings() {
return {
selectors: {
betaTesterFirstToKnow: '#beta-tester-first-to-know',
},
};
}
getDefaultElements() {
const elements = {};
const selectors = this.getSettings( 'selectors' );
elements.$betaTesterFirstToKnow = jQuery( selectors.betaTesterFirstToKnow );
return elements;
}
bindEvents() {
const elements = this.elements;
elements.$betaTesterFirstToKnow.on( 'click', this.showLayout.bind( this ) );
}
}
jQuery( function() {
window.elementorBetaTester = new BetaTesterModule();
} );

View File

@@ -0,0 +1,61 @@
import BetaTesterView from './view';
export default class BetaTesterLayout extends elementorModules.common.views.modal.Layout {
ui() {
return {
closeModal: '.elementor-templates-modal__header__close',
dontShowAgain: '.elementor-beta-tester-do-not-show-again',
};
}
events() {
return {
'click @ui.closeModal': this.onCloseModalClick,
'click @ui.dontShowAgain': this.onDontShowAgainClick,
};
}
getModalOptions() {
return {
id: 'elementor-beta-tester-modal',
hide: {
onBackgroundClick: false,
},
};
}
getLogoOptions() {
return {
title: __( 'Sign Up', 'elementor' ),
};
}
initialize() {
elementorModules.common.views.modal.Layout.prototype.initialize.apply( this, arguments );
this.showLogo();
this.showContentView();
const doNotShowAgain = __( 'Don\'t Show Again', 'elementor' );
this.modalHeader.currentView.ui.closeModal.after( jQuery( '<div>', { class: 'elementor-beta-tester-do-not-show-again' } ).text( doNotShowAgain ) );
}
showContentView() {
this.modalContent.show( new BetaTesterView() );
}
onDontShowAgainClick() {
this.hideModal();
this.onCloseModalClick();
}
onCloseModalClick() {
elementorCommon.ajax.addRequest( 'introduction_viewed', {
data: {
introductionKey: elementorAdmin.config.beta_tester.beta_tester_signup,
},
} );
}
}

View File

@@ -0,0 +1,39 @@
export default class BetaTesterView extends Marionette.ItemView {
constructor() {
super();
this.id = 'elementor-beta-tester-dialog-content';
this.template = '#tmpl-elementor-beta-tester';
}
ui() {
return {
betaForm: '#elementor-beta-tester-form',
betaEmail: '#elementor-beta-tester-form__email',
betaButton: '#elementor-beta-tester-form__submit',
};
}
events() {
return {
'submit @ui.betaForm': 'onBetaFormSubmit',
};
}
onBetaFormSubmit( event ) {
event.preventDefault();
const email = this.ui.betaEmail.val();
this.ui.betaButton.addClass( 'elementor-button-state' );
elementorCommon.ajax.addRequest( 'beta_tester_signup', {
data: {
betaTesterEmail: email,
},
// Do not wait for response.
} );
elementorBetaTester.layout.hideModal();
}
onRender() {}
}

View File

@@ -0,0 +1,126 @@
/* global jQuery, ElementorGutenbergSettings */
( function( $ ) {
'use strict';
var ElementorGutenbergApp = {
cacheElements: function() {
var self = this;
self.isElementorMode = ElementorGutenbergSettings.isElementorMode;
self.cache = {};
self.cache.$gutenberg = $( '#editor' );
self.cache.$switchMode = $( $( '#elementor-gutenberg-button-switch-mode' ).html() );
self.cache.$switchModeButton = self.cache.$switchMode.find( '#elementor-switch-mode-button' );
self.bindEvents();
self.toggleStatus();
wp.data.subscribe( function() {
setTimeout( function() {
self.buildPanel();
}, 1 );
} );
},
buildPanel: function() {
var self = this;
if ( ! self.cache.$gutenberg.find( '#elementor-switch-mode' ).length ) {
self.cache.$gutenberg.find( '.edit-post-header-toolbar' ).append( self.cache.$switchMode );
}
if ( ! $( '#elementor-editor' ).length ) {
self.cache.$editorPanel = $( $( '#elementor-gutenberg-panel' ).html() );
// TODO: `editor-block-list__layout` class for WP < 5.3 support.
self.cache.$gurenbergBlockList = self.cache.$gutenberg.find( '.editor-block-list__layout, .editor-post-text-editor, .block-editor-block-list__layout' );
self.cache.$gurenbergBlockList.after( self.cache.$editorPanel );
self.cache.$editorPanelButton = self.cache.$editorPanel.find( '#elementor-go-to-edit-page-link' );
self.cache.$editorPanelButton.on( 'click', function( event ) {
event.preventDefault();
self.animateLoader();
// A new post is initialized as an 'auto-draft'.
// if the post is not a new post it should not save it to avoid some saving conflict between elementor and gutenberg.
const isNewPost = 'auto-draft' === wp.data.select( 'core/editor' ).getCurrentPost().status;
if ( isNewPost ) {
var documentTitle = wp.data.select( 'core/editor' ).getEditedPostAttribute( 'title' );
if ( ! documentTitle ) {
wp.data.dispatch( 'core/editor' ).editPost( { title: 'Elementor #' + $( '#post_ID' ).val() } );
}
wp.data.dispatch( 'core/editor' ).savePost();
}
self.redirectWhenSave();
} );
}
},
bindEvents: function() {
var self = this;
self.cache.$switchModeButton.on( 'click', function() {
if ( self.isElementorMode ) {
elementorCommon.dialogsManager.createWidget( 'confirm', {
message: __( 'Please note that you are switching to WordPress default editor. Your current layout, design and content might break.', 'elementor' ),
headerMessage: __( 'Back to WordPress Editor', 'elementor' ),
strings: {
confirm: __( 'Continue', 'elementor' ),
cancel: __( 'Cancel', 'elementor' ),
},
defaultOption: 'confirm',
onConfirm: function() {
const wpEditor = wp.data.dispatch( 'core/editor' );
wpEditor.editPost( { gutenberg_elementor_mode: false } );
wpEditor.savePost();
self.isElementorMode = ! self.isElementorMode;
self.toggleStatus();
},
} ).show();
} else {
self.isElementorMode = ! self.isElementorMode;
self.toggleStatus();
self.cache.$editorPanelButton.trigger( 'click' );
}
} );
},
redirectWhenSave: function() {
var self = this;
setTimeout( function() {
if ( wp.data.select( 'core/editor' ).isSavingPost() ) {
self.redirectWhenSave();
} else {
location.href = ElementorGutenbergSettings.editLink;
}
}, 300 );
},
animateLoader: function() {
this.cache.$editorPanelButton.addClass( 'elementor-animate' );
},
toggleStatus: function() {
jQuery( 'body' )
.toggleClass( 'elementor-editor-active', this.isElementorMode )
.toggleClass( 'elementor-editor-inactive', ! this.isElementorMode );
},
init: function() {
this.cacheElements();
},
};
$( function() {
ElementorGutenbergApp.init();
} );
}( jQuery ) );

View File

@@ -0,0 +1,91 @@
module.exports = elementorModules.ViewModule.extend( {
getDefaultSettings: function() {
return {
selectors: {
modeSelect: '.elementor_maintenance_mode_mode select',
maintenanceModeTable: '#tab-maintenance_mode table',
maintenanceModeDescriptions: '.elementor-maintenance-mode-description',
excludeModeSelect: '.elementor_maintenance_mode_exclude_mode select',
excludeRolesArea: '.elementor_maintenance_mode_exclude_roles',
templateSelect: '.elementor_maintenance_mode_template_id select',
editTemplateButton: '.elementor-edit-template',
maintenanceModeError: '.elementor-maintenance-mode-error',
},
classes: {
isEnabled: 'elementor-maintenance-mode-is-enabled',
},
};
},
getDefaultElements: function() {
var elements = {},
selectors = this.getSettings( 'selectors' );
elements.$modeSelect = jQuery( selectors.modeSelect );
elements.$maintenanceModeTable = elements.$modeSelect.parents( selectors.maintenanceModeTable );
elements.$excludeModeSelect = elements.$maintenanceModeTable.find( selectors.excludeModeSelect );
elements.$excludeRolesArea = elements.$maintenanceModeTable.find( selectors.excludeRolesArea );
elements.$templateSelect = elements.$maintenanceModeTable.find( selectors.templateSelect );
elements.$editTemplateButton = elements.$maintenanceModeTable.find( selectors.editTemplateButton );
elements.$maintenanceModeDescriptions = elements.$maintenanceModeTable.find( selectors.maintenanceModeDescriptions );
elements.$maintenanceModeError = elements.$maintenanceModeTable.find( selectors.maintenanceModeError );
return elements;
},
handleModeSelectChange: function() {
var settings = this.getSettings(),
elements = this.elements;
elements.$maintenanceModeTable.toggleClass( settings.classes.isEnabled, !! elements.$modeSelect.val() );
elements.$maintenanceModeDescriptions.hide();
elements.$maintenanceModeDescriptions.filter( '[data-value="' + elements.$modeSelect.val() + '"]' ).show();
},
handleExcludeModeSelectChange: function() {
var elements = this.elements;
elements.$excludeRolesArea.toggle( 'custom' === elements.$excludeModeSelect.val() );
},
handleTemplateSelectChange: function() {
var elements = this.elements;
var templateID = elements.$templateSelect.val();
if ( ! templateID ) {
elements.$editTemplateButton.hide();
elements.$maintenanceModeError.show();
return;
}
var editUrl = elementorAdmin.config.home_url + '?p=' + templateID + '&elementor';
elements.$editTemplateButton
.prop( 'href', editUrl )
.show();
elements.$maintenanceModeError.hide();
},
bindEvents: function() {
var elements = this.elements;
elements.$modeSelect.on( 'change', this.handleModeSelectChange.bind( this ) );
elements.$excludeModeSelect.on( 'change', this.handleExcludeModeSelectChange.bind( this ) );
elements.$templateSelect.on( 'change', this.handleTemplateSelectChange.bind( this ) );
},
onAdminInit: function() {
this.handleModeSelectChange();
this.handleExcludeModeSelectChange();
this.handleTemplateSelectChange();
},
onInit: function() {
elementorModules.ViewModule.prototype.onInit.apply( this, arguments );
elementorCommon.elements.$window.on( 'elementor/admin/init', this.onAdminInit );
},
} );

View File

@@ -0,0 +1,28 @@
var NewTemplateView = require( 'elementor-admin/new-template/view' );
module.exports = elementorModules.common.views.modal.Layout.extend( {
getModalOptions: function() {
return {
id: 'elementor-new-template-modal',
};
},
getLogoOptions: function() {
return {
title: __( 'New Template', 'elementor' ),
};
},
initialize: function() {
elementorModules.common.views.modal.Layout.prototype.initialize.apply( this, arguments );
this.showLogo();
this.showContentView();
},
showContentView: function() {
this.modalContent.show( new NewTemplateView() );
},
} );

View File

@@ -0,0 +1,52 @@
var NewTemplateLayout = require( 'elementor-admin/new-template/layout' );
var NewTemplateModule = elementorModules.ViewModule.extend( {
getDefaultSettings: function() {
return {
selectors: {
addButton: '.page-title-action:first, #elementor-template-library-add-new',
},
};
},
getDefaultElements: function() {
var selectors = this.getSettings( 'selectors' );
return {
$addButton: jQuery( selectors.addButton ),
};
},
bindEvents: function() {
this.elements.$addButton.on( 'click', this.onAddButtonClick );
elementorCommon.elements.$window.on( 'hashchange', this.showModalByHash.bind( this ) );
},
showModalByHash: function() {
if ( '#add_new' === location.hash ) {
this.layout.showModal();
location.hash = '';
}
},
onInit: function() {
elementorModules.ViewModule.prototype.onInit.apply( this, arguments );
this.layout = new NewTemplateLayout();
this.showModalByHash();
},
onAddButtonClick: function( event ) {
event.preventDefault();
this.layout.showModal();
},
} );
jQuery( function() {
window.elementorNewTemplate = new NewTemplateModule();
} );

View File

@@ -0,0 +1,12 @@
module.exports = Marionette.ItemView.extend( {
id: 'elementor-new-template-dialog-content',
template: '#tmpl-elementor-new-template',
ui: {},
events: {},
onRender: function() {},
} );