PluginProbe
Elementor Website Builder – more than just a page builder / 3.30.0
Elementor Website Builder – more than just a page builder v3.30.0
4.3.0-beta2 4.3.0-beta1 4.2.4 4.2.3 4.2.2 4.2.1 4.2.0 4.1.5 4.2.0-beta2 4.2.0-dev2 4.2.0-beta1 4.1.4 4.1.3 4.1.2 4.1.1 4.1.0 4.1.0-beta3 4.1.0-dev3 4.0.9 4.1.0-beta2 4.1.0-dev2 4.0.8 4.1.0-beta1 4.1.0-dev1 4.0.7 All 451 releases
elementor / includes / template-library / data / endpoints / templates.php

templates.php in Elementor Website Builder – more than just a page builder 3.30.0, at includes/template-library/data/endpoints/templates.php

92 lines 2.3 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 namespace Elementor\Includes\TemplateLibrary\Data\Endpoints;
3
4 use Elementor\Data\V2\Base\Endpoint;
5 use Elementor\Plugin;
6 use Elementor\TemplateLibrary\Source_Local;
7
8 if ( ! defined( 'ABSPATH' ) ) {
9 exit; // Exit if accessed directly.
10 }
11
12 class Templates extends Endpoint {
13
14 protected function register() {
15 parent::register();
16
17 $document_types = Plugin::$instance->documents->get_document_types( [
18 'show_in_library' => true,
19 ] );
20
21 $this->register_route( '', \WP_REST_Server::CREATABLE, [
22 'is_multi' => true,
23 'title' => [
24 'required' => false,
25 'type' => 'string',
26 'description' => 'The title of the document',
27 ],
28 'type' => [
29 'required' => true,
30 'description' => 'The document type.',
31 'type' => 'string',
32 'enum' => array_keys( $document_types ),
33 ],
34 'content' => [
35 'required' => false,
36 'description' => 'Elementor data object',
37 'type' => 'object',
38 ],
39 ] );
40 }
41
42 public function get_name() {
43 return 'templates';
44 }
45
46 public function get_format() {
47 return 'template-library/templates';
48 }
49
50 public function get_items( $request ) {
51 return $this->reorder_categories( Plugin::$instance->templates_manager->get_library_data( [ 'filter_sources' => [ $request->get_param( 'source' ) ] ] ) );
52 }
53
54 /**
55 * Move the '404 page' category to the end of the list
56 *
57 * @param array $library_data
58 * @return array
59 */
60 private function reorder_categories( array $library_data ): array {
61 $not_found_category = '404 page';
62
63 $key = array_search( $not_found_category, $library_data['config']['block']['categories'] );
64 if ( false === $key ) {
65 return $library_data;
66 }
67
68 array_splice( $library_data['config']['block']['categories'], $key, 1 );
69 $library_data['config']['block']['categories'][] = $not_found_category;
70
71 return $library_data;
72 }
73
74 public function create_items( $request ) {
75 /** @var Source_Local $source */
76 $source = Plugin::$instance->templates_manager->get_source( 'local' );
77
78 $result = $source->save_item( [
79 'title' => $request->get_param( 'title' ),
80 'type' => $request->get_param( 'type' ),
81 'content' => $request->get_param( 'content' ),
82 'page_settings' => $request->get_param( 'page_settings' ),
83 ] );
84
85 if ( is_wp_error( $result ) ) {
86 return $result;
87 }
88
89 return $source->get_item( $result );
90 }
91 }
92