first commit
This commit is contained in:
@@ -0,0 +1,65 @@
|
||||
<?php
|
||||
namespace Elementor\Modules\Library\Documents;
|
||||
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit; // Exit if accessed directly
|
||||
}
|
||||
|
||||
/**
|
||||
* Elementor container library document.
|
||||
*
|
||||
* Elementor container library document handler class is responsible for
|
||||
* handling a document of a container type.
|
||||
*
|
||||
* @since 2.0.0
|
||||
*/
|
||||
class Container extends Library_Document {
|
||||
|
||||
public static function get_properties() {
|
||||
$properties = parent::get_properties();
|
||||
|
||||
$properties['support_kit'] = true;
|
||||
|
||||
return $properties;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get document name.
|
||||
*
|
||||
* Retrieve the document name.
|
||||
*
|
||||
* @since 2.0.0
|
||||
* @access public
|
||||
*
|
||||
* @return string Document name.
|
||||
*/
|
||||
public function get_name() {
|
||||
return 'container';
|
||||
}
|
||||
|
||||
/**
|
||||
* Get document title.
|
||||
*
|
||||
* Retrieve the document title.
|
||||
*
|
||||
* @since 2.0.0
|
||||
* @access public
|
||||
* @static
|
||||
*
|
||||
* @return string Document title.
|
||||
*/
|
||||
public static function get_title() {
|
||||
return esc_html__( 'Container', 'elementor' );
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Type
|
||||
*
|
||||
* Return the container document type.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public static function get_type() {
|
||||
return 'container';
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,78 @@
|
||||
<?php
|
||||
namespace Elementor\Modules\Library\Documents;
|
||||
|
||||
use Elementor\Core\Base\Document;
|
||||
use Elementor\Modules\Library\Traits\Library;
|
||||
use Elementor\TemplateLibrary\Source_Local;
|
||||
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit; // Exit if accessed directly
|
||||
}
|
||||
|
||||
/**
|
||||
* Elementor library document.
|
||||
*
|
||||
* Elementor library document handler class is responsible for handling
|
||||
* a document of the library type.
|
||||
*
|
||||
* @since 2.0.0
|
||||
*/
|
||||
abstract class Library_Document extends Document {
|
||||
|
||||
// Library Document Trait
|
||||
use Library;
|
||||
|
||||
/**
|
||||
* The taxonomy type slug for the library document.
|
||||
*/
|
||||
const TAXONOMY_TYPE_SLUG = 'elementor_library_type';
|
||||
|
||||
/**
|
||||
* Get document properties.
|
||||
*
|
||||
* Retrieve the document properties.
|
||||
*
|
||||
* @since 2.0.0
|
||||
* @access public
|
||||
* @static
|
||||
*
|
||||
* @return array Document properties.
|
||||
*/
|
||||
public static function get_properties() {
|
||||
$properties = parent::get_properties();
|
||||
|
||||
$properties['admin_tab_group'] = 'library';
|
||||
$properties['show_in_library'] = true;
|
||||
$properties['register_type'] = true;
|
||||
$properties['cpt'] = [ Source_Local::CPT ];
|
||||
|
||||
return $properties;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get initial config.
|
||||
*
|
||||
* Retrieve the current element initial configuration.
|
||||
*
|
||||
* Adds more configuration on top of the controls list and the tabs assigned
|
||||
* to the control. This method also adds element name, type, icon and more.
|
||||
*
|
||||
* @since 2.9.0
|
||||
* @access protected
|
||||
*
|
||||
* @return array The initial config.
|
||||
*/
|
||||
public function get_initial_config() {
|
||||
$config = parent::get_initial_config();
|
||||
|
||||
$config['library'] = [
|
||||
'save_as_same_type' => true,
|
||||
];
|
||||
|
||||
return $config;
|
||||
}
|
||||
|
||||
public function get_content( $with_css = false ) {
|
||||
return do_shortcode( parent::get_content( $with_css ) );
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,73 @@
|
||||
<?php
|
||||
namespace Elementor\Modules\Library\Documents;
|
||||
|
||||
use Elementor\TemplateLibrary\Source_Local;
|
||||
use Elementor\Utils;
|
||||
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit; // Exit if accessed directly
|
||||
}
|
||||
|
||||
/**
|
||||
* Elementor section library document.
|
||||
*
|
||||
* Elementor section library document handler class is responsible for
|
||||
* handling a document of a section type.
|
||||
*
|
||||
*/
|
||||
class Not_Supported extends Library_Document {
|
||||
|
||||
/**
|
||||
* Get document properties.
|
||||
*
|
||||
* Retrieve the document properties.
|
||||
*
|
||||
* @access public
|
||||
* @static
|
||||
*
|
||||
* @return array Document properties.
|
||||
*/
|
||||
public static function get_properties() {
|
||||
$properties = parent::get_properties();
|
||||
|
||||
$properties['admin_tab_group'] = '';
|
||||
$properties['register_type'] = false;
|
||||
$properties['is_editable'] = false;
|
||||
$properties['show_in_library'] = false;
|
||||
$properties['show_in_finder'] = false;
|
||||
|
||||
return $properties;
|
||||
}
|
||||
|
||||
public static function get_type() {
|
||||
return 'not-supported';
|
||||
}
|
||||
|
||||
/**
|
||||
* Get document title.
|
||||
*
|
||||
* Retrieve the document title.
|
||||
*
|
||||
* @access public
|
||||
* @static
|
||||
*
|
||||
* @return string Document title.
|
||||
*/
|
||||
public static function get_title() {
|
||||
return esc_html__( 'Not Supported', 'elementor' );
|
||||
}
|
||||
|
||||
public function save_template_type() {
|
||||
// Do nothing.
|
||||
}
|
||||
|
||||
public function print_admin_column_type() {
|
||||
Utils::print_unescaped_internal_string( self::get_title() );
|
||||
}
|
||||
|
||||
public function filter_admin_row_actions( $actions ) {
|
||||
unset( $actions['view'] );
|
||||
|
||||
return $actions;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,96 @@
|
||||
<?php
|
||||
namespace Elementor\Modules\Library\Documents;
|
||||
|
||||
use Elementor\Core\DocumentTypes\Post;
|
||||
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit; // Exit if accessed directly
|
||||
}
|
||||
|
||||
/**
|
||||
* Elementor page library document.
|
||||
*
|
||||
* Elementor page library document handler class is responsible for
|
||||
* handling a document of a page type.
|
||||
*
|
||||
* @since 2.0.0
|
||||
*/
|
||||
class Page extends Library_Document {
|
||||
|
||||
/**
|
||||
* Get document properties.
|
||||
*
|
||||
* Retrieve the document properties.
|
||||
*
|
||||
* @since 2.0.0
|
||||
* @access public
|
||||
* @static
|
||||
*
|
||||
* @return array Document properties.
|
||||
*/
|
||||
public static function get_properties() {
|
||||
$properties = parent::get_properties();
|
||||
|
||||
$properties['support_wp_page_templates'] = true;
|
||||
$properties['support_kit'] = true;
|
||||
$properties['show_in_finder'] = true;
|
||||
|
||||
return $properties;
|
||||
}
|
||||
|
||||
public static function get_type() {
|
||||
return 'page';
|
||||
}
|
||||
|
||||
/**
|
||||
* Get document title.
|
||||
*
|
||||
* Retrieve the document title.
|
||||
*
|
||||
* @since 2.0.0
|
||||
* @access public
|
||||
* @static
|
||||
*
|
||||
* @return string Document title.
|
||||
*/
|
||||
public static function get_title() {
|
||||
return esc_html__( 'Page', 'elementor' );
|
||||
}
|
||||
|
||||
public static function get_plural_title() {
|
||||
return esc_html__( 'Pages', 'elementor' );
|
||||
}
|
||||
|
||||
public static function get_add_new_title() {
|
||||
return esc_html__( 'Add New Page Template', 'elementor' );
|
||||
}
|
||||
|
||||
/**
|
||||
* @since 2.1.3
|
||||
* @access public
|
||||
*/
|
||||
public function get_css_wrapper_selector() {
|
||||
return 'body.elementor-page-' . $this->get_main_id();
|
||||
}
|
||||
|
||||
/**
|
||||
* @since 3.1.0
|
||||
* @access protected
|
||||
*/
|
||||
protected function register_controls() {
|
||||
parent::register_controls();
|
||||
|
||||
Post::register_hide_title_control( $this );
|
||||
|
||||
Post::register_style_controls( $this );
|
||||
}
|
||||
|
||||
protected function get_remote_library_config() {
|
||||
$config = parent::get_remote_library_config();
|
||||
|
||||
$config['type'] = 'page';
|
||||
$config['default_route'] = 'templates/pages';
|
||||
|
||||
return $config;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,49 @@
|
||||
<?php
|
||||
namespace Elementor\Modules\Library\Documents;
|
||||
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit; // Exit if accessed directly
|
||||
}
|
||||
|
||||
/**
|
||||
* Elementor section library document.
|
||||
*
|
||||
* Elementor section library document handler class is responsible for
|
||||
* handling a document of a section type.
|
||||
*
|
||||
* @since 2.0.0
|
||||
*/
|
||||
class Section extends Library_Document {
|
||||
|
||||
public static function get_properties() {
|
||||
$properties = parent::get_properties();
|
||||
|
||||
$properties['support_kit'] = true;
|
||||
$properties['show_in_finder'] = true;
|
||||
|
||||
return $properties;
|
||||
}
|
||||
|
||||
public static function get_type() {
|
||||
return 'section';
|
||||
}
|
||||
|
||||
/**
|
||||
* Get document title.
|
||||
*
|
||||
* Retrieve the document title.
|
||||
*
|
||||
* @since 2.0.0
|
||||
* @access public
|
||||
* @static
|
||||
*
|
||||
* @return string Document title.
|
||||
*/
|
||||
public static function get_title() {
|
||||
return esc_html__( 'Section', 'elementor' );
|
||||
}
|
||||
|
||||
public static function get_plural_title() {
|
||||
return esc_html__( 'Sections', 'elementor' );
|
||||
}
|
||||
}
|
||||
58
wp-content/plugins/elementor/modules/library/module.php
Normal file
58
wp-content/plugins/elementor/modules/library/module.php
Normal file
@@ -0,0 +1,58 @@
|
||||
<?php
|
||||
namespace Elementor\Modules\Library;
|
||||
|
||||
use Elementor\Core\Base\Module as BaseModule;
|
||||
use Elementor\Modules\Library\Documents;
|
||||
use Elementor\Plugin;
|
||||
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit; // Exit if accessed directly.
|
||||
}
|
||||
|
||||
/**
|
||||
* Elementor library module.
|
||||
*
|
||||
* Elementor library module handler class is responsible for registering and
|
||||
* managing Elementor library modules.
|
||||
*
|
||||
* @since 2.0.0
|
||||
*/
|
||||
class Module extends BaseModule {
|
||||
|
||||
/**
|
||||
* Get module name.
|
||||
*
|
||||
* Retrieve the library module name.
|
||||
*
|
||||
* @since 2.0.0
|
||||
* @access public
|
||||
*
|
||||
* @return string Module name.
|
||||
*/
|
||||
public function get_name() {
|
||||
return 'library';
|
||||
}
|
||||
|
||||
/**
|
||||
* Library module constructor.
|
||||
*
|
||||
* Initializing Elementor library module.
|
||||
*
|
||||
* @since 2.0.0
|
||||
* @access public
|
||||
*/
|
||||
public function __construct() {
|
||||
Plugin::$instance->documents
|
||||
->register_document_type( 'not-supported', Documents\Not_Supported::get_class_full_name() )
|
||||
->register_document_type( 'page', Documents\Page::get_class_full_name() )
|
||||
->register_document_type( 'section', Documents\Section::get_class_full_name() );
|
||||
|
||||
$experiments_manager = Plugin::$instance->experiments;
|
||||
|
||||
// Register `Container` document type only if the experiment is active.
|
||||
if ( $experiments_manager->is_feature_active( 'container' ) ) {
|
||||
Plugin::$instance->documents
|
||||
->register_document_type( 'container', Documents\Container::get_class_full_name() );
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
<?php
|
||||
namespace Elementor\Modules\Library\Traits;
|
||||
|
||||
use Elementor\TemplateLibrary\Source_Local;
|
||||
|
||||
/**
|
||||
* Elementor Library Trait
|
||||
*
|
||||
* This trait is used by all Library Documents and Landing Pages.
|
||||
*
|
||||
* @since 3.1.0
|
||||
*/
|
||||
trait Library {
|
||||
/**
|
||||
* Print Admin Column Type
|
||||
*
|
||||
* Runs on WordPress' 'manage_{custom post type}_posts_custom_column' hook to modify each row's content.
|
||||
*
|
||||
* @since 3.1.0
|
||||
* @access public
|
||||
*/
|
||||
public function print_admin_column_type() {
|
||||
$admin_filter_url = admin_url( Source_Local::ADMIN_MENU_SLUG . '&elementor_library_type=' . $this->get_name() );
|
||||
//PHPCS - Not a user input
|
||||
printf( '<a href="%s">%s</a>', $admin_filter_url, $this->get_title() ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
|
||||
}
|
||||
|
||||
/**
|
||||
* Save document type.
|
||||
*
|
||||
* Set new/updated document type.
|
||||
*
|
||||
* @since 3.1.0
|
||||
* @access public
|
||||
*/
|
||||
public function save_template_type() {
|
||||
parent::save_template_type();
|
||||
|
||||
wp_set_object_terms( $this->post->ID, $this->get_name(), Source_Local::TAXONOMY_TYPE_SLUG );
|
||||
}
|
||||
}
|
||||
145
wp-content/plugins/elementor/modules/library/user-favorites.php
Normal file
145
wp-content/plugins/elementor/modules/library/user-favorites.php
Normal file
@@ -0,0 +1,145 @@
|
||||
<?php
|
||||
namespace Elementor\Modules\Library;
|
||||
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit; // Exit if accessed directly.
|
||||
}
|
||||
|
||||
class User_Favorites {
|
||||
const USER_META_KEY = 'elementor_library_favorites';
|
||||
|
||||
/**
|
||||
* @var int
|
||||
*/
|
||||
private $user_id;
|
||||
|
||||
/**
|
||||
* @var array|null
|
||||
*/
|
||||
private $cache;
|
||||
|
||||
/**
|
||||
* User_Favorites constructor.
|
||||
*
|
||||
* @param $user_id
|
||||
*/
|
||||
public function __construct( $user_id ) {
|
||||
$this->user_id = $user_id;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param null $vendor
|
||||
* @param null $resource
|
||||
* @param false $ignore_cache
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function get( $vendor = null, $resource = null, $ignore_cache = false ) {
|
||||
if ( $ignore_cache || empty( $this->cache ) ) {
|
||||
$this->cache = get_user_meta( $this->user_id, self::USER_META_KEY, true );
|
||||
}
|
||||
|
||||
if ( ! $this->cache || ! is_array( $this->cache ) ) {
|
||||
return [];
|
||||
}
|
||||
|
||||
if ( $vendor && $resource ) {
|
||||
$key = $this->get_key( $vendor, $resource );
|
||||
|
||||
return isset( $this->cache[ $key ] ) ? $this->cache[ $key ] : [];
|
||||
}
|
||||
|
||||
return $this->cache;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $vendor
|
||||
* @param $resource
|
||||
* @param $id
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function exists( $vendor, $resource, $id ) {
|
||||
return in_array( $id, $this->get( $vendor, $resource ), true );
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $vendor
|
||||
* @param $resource
|
||||
* @param array $value
|
||||
*
|
||||
* @return $this
|
||||
* @throws \Exception
|
||||
*/
|
||||
public function save( $vendor, $resource, $value = [] ) {
|
||||
$all_favorites = $this->get();
|
||||
|
||||
$all_favorites[ $this->get_key( $vendor, $resource ) ] = $value;
|
||||
|
||||
$result = update_user_meta( $this->user_id, self::USER_META_KEY, $all_favorites );
|
||||
|
||||
if ( false === $result ) {
|
||||
throw new \Exception( 'Failed to save user favorites.' );
|
||||
}
|
||||
|
||||
$this->cache = $all_favorites;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $vendor
|
||||
* @param $resource
|
||||
* @param $id
|
||||
*
|
||||
* @return $this
|
||||
* @throws \Exception
|
||||
*/
|
||||
public function add( $vendor, $resource, $id ) {
|
||||
$favorites = $this->get( $vendor, $resource );
|
||||
|
||||
if ( in_array( $id, $favorites, true ) ) {
|
||||
return $this;
|
||||
}
|
||||
|
||||
$favorites[] = $id;
|
||||
|
||||
$this->save( $vendor, $resource, $favorites );
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $vendor
|
||||
* @param $resource
|
||||
* @param $id
|
||||
*
|
||||
* @return $this
|
||||
* @throws \Exception
|
||||
*/
|
||||
public function remove( $vendor, $resource, $id ) {
|
||||
$favorites = $this->get( $vendor, $resource );
|
||||
|
||||
if ( ! in_array( $id, $favorites, true ) ) {
|
||||
return $this;
|
||||
}
|
||||
|
||||
$favorites = array_filter( $favorites, function ( $item ) use ( $id ) {
|
||||
return $item !== $id;
|
||||
} );
|
||||
|
||||
$this->save( $vendor, $resource, $favorites );
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $vendor
|
||||
* @param $resource
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
private function get_key( $vendor, $resource ) {
|
||||
return "{$vendor}/{$resource}";
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user