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,53 @@
import AdminMenuHandler from 'elementor-admin/admin-menu';
export default class LandingPagesHandler extends AdminMenuHandler {
getDefaultSettings() {
const pageName = 'e-landing-page',
adminMenuSelectors = {
// The escaping is done because jQuery requires it for selectors.
landingPagesTablePage: 'a[href=\"edit.php?post_type=' + pageName + '\"]',
landingPagesAddNewPage: 'a[href=\"edit.php?post_type=elementor_library&page=' + pageName + '\"]',
};
return {
selectors: {
addButton: '.page-title-action:first',
pagesMenuItemAndLink: '#menu-pages, #menu-pages > a',
landingPagesMenuItem: `${ adminMenuSelectors.landingPagesTablePage }, ${ adminMenuSelectors.landingPagesAddNewPage }`,
templatesMenuItem: '.menu-icon-elementor_library',
},
};
}
getDefaultElements() {
const selectors = this.getSettings( 'selectors' ),
elements = super.getDefaultElements();
elements.$landingPagesMenuItem = jQuery( selectors.landingPagesMenuItem );
elements.$templatesMenuItem = jQuery( selectors.templatesMenuItem );
elements.$pagesMenuItemAndLink = jQuery( selectors.pagesMenuItemAndLink );
return elements;
}
onInit() {
super.onInit();
const settings = this.getSettings(),
isLandingPagesTablePage = !! window.location.href.includes( settings.paths.landingPagesTablePage ),
isLandingPagesTrashPage = !! window.location.href.includes( settings.paths.landingPagesTrashPage ),
isLandingPagesCreateYourFirstPage = !! window.location.href.includes( settings.paths.landingPagesAddNewPage );
// If the current page is a Landing Pages Page (the Posts Table page, "Create Your First.." page, or a native
// WordPress dashboard page edit screen when using WordPress' Classic Editor).
if ( isLandingPagesTablePage || isLandingPagesTrashPage || isLandingPagesCreateYourFirstPage || settings.isLandingPageAdminEdit ) {
// Make sure the active admin top level menu item is 'Templates', and not 'Pages'.
this.highlightTopLevelMenuItem( this.elements.$templatesMenuItem, this.elements.$pagesMenuItemAndLink );
this.highlightSubMenuItem( this.elements.$landingPagesMenuItem );
// Overwrite the 'Add New' button at the top of the page to open in Elementor with the library module open.
jQuery( settings.selectors.addButton ).attr( 'href', elementorAdminConfig.urls.addNewLandingPageUrl );
}
}
}

View File

@@ -0,0 +1,29 @@
import LandingPagesHandler from './landing-pages';
export default class extends elementorModules.Module {
constructor() {
super();
elementorCommon.elements.$window.on( 'elementor/admin/init', () => {
this.runHandler();
} );
}
runHandler() {
const pageName = 'e-landing-page',
paths = {
landingPagesTablePage: 'edit.php?post_type=' + pageName,
landingPagesAddNewPage: 'edit.php?post_type=elementor_library&page=' + pageName,
landingPagesTrashPage: 'edit.php?post_status=trash&post_type=' + pageName,
},
args = {
path: elementorAdmin.config.landingPages?.landingPagesHasPages ? paths.landingPagesTablePage : paths.landingPagesAddNewPage,
isLandingPageAdminEdit: elementorAdmin.config.landingPages?.isLandingPageAdminEdit,
paths,
};
// This class modifies elements in the WordPress admin that are rendered "wrong" by the WordPress core
// and could not be modified in the backend.
new LandingPagesHandler( args );
}
}

View File

@@ -0,0 +1,11 @@
import * as hooks from './hooks/';
export default class LandingPageComponent extends $e.modules.ComponentBase {
getNamespace() {
return 'document/landing-page';
}
defaultHooks() {
return this.importHooks( hooks );
}
}

View File

@@ -0,0 +1,2 @@
export { LandingPageAddLibraryTab } from './ui/editor/documents/open/add-landing-pages-tab';
export { LandingPageRemoveLibraryTab } from './ui/editor/documents/close/remove-landing-pages-tab';

View File

@@ -0,0 +1,23 @@
export class LandingPageRemoveLibraryTab extends $e.modules.hookUI.After {
getCommand() {
return 'editor/documents/unload';
}
getId() {
return 'elementor-landing-pages-remove-library-tab';
}
getConditions( args ) {
const { document } = args;
return 'landing-page' === document.config.type;
}
apply() {
$e.components.get( 'library' ).removeTab( 'templates/landing-pages' );
// Pages are replaced by landing pages so when Landing Pages are removed, the Pages have to be re-added.
$e.components.get( 'library' ).addTab( 'templates/pages' );
}
}
export default LandingPageRemoveLibraryTab;

View File

@@ -0,0 +1,29 @@
export class LandingPageAddLibraryTab extends $e.modules.hookUI.After {
getCommand() {
return 'editor/documents/open';
}
getId() {
return 'elementor-landing-pages-add-library-tab';
}
getConditions( args ) {
const document = elementor.documents.get( args.id );
return 'landing-page' === document.config.type;
}
apply() {
$e.components.get( 'library' ).addTab( 'templates/landing-pages', {
title: __( 'Landing Pages', 'elementor' ),
filter: {
source: 'remote',
type: 'lp',
},
}, 2 );
// Pages are replaced by landing pages so they need to be removed.
$e.components.get( 'library' ).removeTab( 'templates/pages' );
}
}
export default LandingPageAddLibraryTab;

View File

@@ -0,0 +1,9 @@
import Component from './component';
class LandingPageLibraryModule extends elementorModules.editor.utils.Module {
onElementorLoaded() {
this.component = $e.components.register( new Component( { manager: this } ) );
}
}
export default LandingPageLibraryModule;