PluginProbe
UiCore Elements – Free widgets and templates for Elementor / 1.3.18
UiCore Elements – Free widgets and templates for Elementor v1.3.18
1.3.18 1.3.17 1.3.16 trunk 1.0.0 1.0.1 1.0.10 1.0.11 1.0.12 1.0.13 1.0.14 1.0.15 1.0.16 1.0.2 1.0.3 1.0.4 1.0.5 1.0.6 1.0.7 1.0.8 1.0.9 1.2.0 1.2.1 1.2.2 1.2.3 All 42 releases
← All changes | includes/widgets/theme-builder/post-meta.php +146 -171 1.0.13 → 1.3.18 View file →
@@ -1,11 +1,12 @@
1 1 <?php
2 +
2 3 namespace UiCoreElements\Widgets\ThemeBuilder;
3 4
4 -use Elementor\Widget_Base;
5 +use UiCoreElements\UiCoreWidget;
5 6 use Elementor\Controls_Manager;
7 +use UiCoreElements\Utils\Meta_Trait;
6 8 use UiCoreElements\Helper;
7 -use UiCoreElements\Utils\Meta_Trait;
8 9
9 10 defined('ABSPATH') || exit();
10 11
11 12 /**
@@ -10,198 +11,172 @@
10 11
11 12 /**
12 13 * The Title widget.
13 14 *
14 - * @since 4.0.0
15 + * @since 1.0.0
15 16 */
16 -class PostMeta extends Widget_Base {
17 +class PostMeta extends UiCoreWidget
18 +{
17 19
18 - use Meta_Trait;
20 + use Meta_Trait;
19 21
20 - /**
21 - * Get widget name.
22 - *
23 - * Retrieve heading widget name.
24 - *
25 - * @since 1.0.0
26 - * @access public
27 - *
28 - * @return string Widget name.
29 - */
30 - public function get_name() {
31 - return 'uicore-post-meta';
32 - }
22 + public function get_name()
23 + {
24 + return 'uicore-post-meta';
25 + }
26 + public function get_title()
27 + {
28 + return esc_html__('Post Meta', 'uicore-elements');
29 + }
30 + public function get_icon()
31 + {
32 + return 'eicon-post-info ui-e-widget';
33 + }
34 + public function get_categories()
35 + {
36 + return ['uicore', 'uicore-theme-builder'];
37 + }
38 + public function get_styles()
39 + {
40 + return ['post-meta'];
41 + }
42 + public function get_scripts()
43 + {
44 + return [];
45 + }
46 + public function get_keywords()
47 + {
48 + return ['post', 'meta', 'info'];
49 + }
50 + public function has_widget_inner_wrapper(): bool
51 + {
52 + // TODO: remove after Optmized Markup experiment is merged to the core
53 + return ! \Elementor\Plugin::$instance->experiments->is_feature_active('e_optimized_markup');
54 + }
33 55
34 - /**
35 - * Get widget title.
36 - *
37 - * Retrieve heading widget title.
38 - *
39 - * @since 1.0.0
40 - * @access public
41 - *
42 - * @return string Widget title.
43 - */
44 - public function get_title() {
45 - return esc_html__( 'Post Meta', 'uicore-elements' );
46 - }
56 + protected function register_controls()
57 + {
58 + $this->start_controls_section(
59 + 'section_content',
60 + [
61 + 'label' => esc_html__('Content', 'uicore-elements'),
62 + ]
63 + );
47 64
48 - /**
49 - * Get widget icon.
50 - *
51 - * Retrieve heading widget icon.
52 - *
53 - * @since 1.0.0
54 - * @access public
55 - *
56 - * @return string Widget icon.
57 - */
58 - public function get_icon() {
59 - return 'eicon-post-info ui-e-widget';
60 - }
65 + $this->add_control(
66 + 'meta_list',
67 + [
68 + 'label' => esc_html__('Meta Data', 'uicore-elements'),
69 + 'type' => \Elementor\Controls_Manager::REPEATER,
70 + 'fields' => $this->get_meta_content_controls(),
71 + 'default' => [
72 + [
73 + 'type' => 'author'
74 + ],
75 + ],
76 + 'title_field' => '<span style="text-transform: capitalize">{{{ type }}}</span>',
77 + 'prevent_empty' => false,
78 + 'separator' => 'before'
79 + ]
80 + );
81 + $this->add_responsive_control(
82 + 'content_align',
83 + [
84 + 'label' => esc_html__('Content Alignment', 'uicore-elements'),
85 + 'type' => Controls_Manager::CHOOSE,
86 + 'options' => [
87 + 'left' => [
88 + 'title' => esc_html__('Left', 'uicore-elements'),
89 + 'icon' => 'eicon-text-align-left',
90 + ],
91 + 'center' => [
92 + 'title' => esc_html__('Center', 'uicore-elements'),
93 + 'icon' => 'eicon-text-align-center',
94 + ],
95 + ],
96 + 'selectors' => [
97 + '{{WRAPPER}}' => 'text-align: {{VALUE}};',
98 + ],
99 + ]
100 + );
101 + $this->end_controls_section();
61 102
62 - /**
63 - * Get widget categories.
64 - *
65 - * Retrieve the list of categories the heading widget belongs to.
66 - *
67 - * Used to determine where to display the widget in the editor.
68 - *
69 - * @since 2.0.0
70 - * @access public
71 - *
72 - * @return array Widget categories.
73 - */
74 - public function get_categories() {
75 - return ['uicore', 'uicore-theme-builder' ];
76 - }
103 + $this->start_controls_section(
104 + 'section_meta_style',
105 + [
106 + 'label' => esc_html__('Style', 'uicore-elements'),
107 + 'tab' => Controls_Manager::TAB_STYLE,
108 + ]
109 + );
110 + $this->get_meta_style_controls();
111 + $this->end_controls_section();
112 + }
77 113
78 - public function get_style_depends() {
79 - Helper::register_widget_style('meta');
80 - return [ 'ui-e-meta' ];
81 - }
114 + protected function display_dummy_text($meta_list)
115 + {
116 + echo '<div class="ui-e-post-meta ui-e-tb-meta">';
117 + foreach ($meta_list as $meta) {
118 + if ($meta['type'] != 'none') {
82 119
83 - /**
84 - * Get widget keywords.
85 - *
86 - * Retrieve the list of keywords the widget belongs to.
87 - *
88 - * @since 2.1.0
89 - * @access public
90 - *
91 - * @return array Widget keywords.
92 - */
93 - public function get_keywords() {
94 - return [ 'post', 'meta', 'info' ];
95 - }
120 + $dummy_content = [
121 + 'excerpt' => esc_html__('This is a sample post excerpt. It provides a brief summary of the article, giving readers a quick preview of the content before they click through to read the full post.', 'uicore-elements'),
122 + 'comment' => rand(1, 5),
123 + 'reading time' => rand(1, 5)
124 + ];
96 125
97 - /**
98 - * Register heading widget controls.
99 - *
100 - * Adds different input fields to allow the user to change and customize the widget settings.
101 - *
102 - * @since 3.1.0
103 - * @access protected
104 - */
105 - protected function register_controls() {
106 - $this->start_controls_section(
107 - 'section_content',
108 - [
109 - 'label' => esc_html__( 'Content', 'uicore-elements' ),
110 - ]
111 - );
126 + // Print dummy content, if available
127 + if (array_key_exists($meta['type'], $dummy_content)) {
128 + $content = $dummy_content[$meta['type']];
112 129
113 - $this->add_control('meta_list',[
114 - 'label' => esc_html__( 'Meta Data', 'uicore-elements' ),
115 - 'type' => \Elementor\Controls_Manager::REPEATER,
116 - 'fields' => $this->get_meta_content_controls(),
117 - 'default' => [
118 - [
119 - 'type' => 'author'
120 - ],
121 - ],
122 - 'title_field' => '<span style="text-transform: capitalize">{{{ type }}}</span>',
123 - 'prevent_empty' => false,
124 - 'separator'=> 'before'
125 - ]
126 - );
127 - $this->add_responsive_control('content_align',
128 - [
129 - 'label' => esc_html__( 'Content Alignment', 'uicore-elements' ),
130 - 'type' => Controls_Manager::CHOOSE,
131 - 'options' => [
132 - 'left' => [
133 - 'title' => esc_html__( 'Left', 'uicore-elements' ),
134 - 'icon' => 'eicon-text-align-left',
135 - ],
136 - 'center' => [
137 - 'title' => esc_html__( 'Center', 'uicore-elements' ),
138 - 'icon' => 'eicon-text-align-center',
139 - ],
140 - ],
141 - 'selectors' => [
142 - '{{WRAPPER}}' => 'text-align: {{VALUE}};',
143 - ],
144 - ]
145 - );
146 - $this->end_controls_section();
130 + // The content printing is the same from display_meta() and should follow up future changes
131 + $wrapper = '<div class="ui-e-meta-item">';
132 + $prefix = $meta['before'] ? '<span>' . esc_html($meta['before']) . '</span>' : '';
133 + $suffix = $meta['after'] ? '<span class="ui-e-meta-after">' . esc_html($meta['after']) . '</span>' : '';
147 134
148 - $this->start_controls_section(
149 - 'section_meta_style',
150 - [
151 - 'label' => esc_html__( 'Style', 'uicore-elements' ),
152 - 'tab' => Controls_Manager::TAB_STYLE,
153 - ]
154 - );
155 - $this->get_meta_style_controls();
156 - $this->end_controls_section();
135 + ob_start();
136 + \Elementor\Icons_Manager::render_icon($meta['icon'], ['aria-hidden' => 'true', 'class' => 'ui-e-meta-icon'], 'span');
137 + $icon = ob_get_clean();
157 138
158 - }
139 + if (!empty($content)) {
140 + echo $wrapper . Helper::esc_svg($icon) . $prefix . $content . $suffix . '</div>'; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
141 + }
142 + } else {
143 + $this->display_meta($meta);
144 + }
159 145
160 - /**
161 - * Render heading widget output on the frontend.
162 - *
163 - * Written in PHP and used to generate the final HTML.
164 - *
165 - * @since 1.0.0
166 - * @access protected
167 - */
168 - protected function render() {
146 + if (next($meta_list) && $this->get_settings_for_display('tb-meta_meta_separator')) {
147 + echo '<span class="ui-e-separator">' . esc_html($this->get_settings_for_display('tb-meta_meta_separator')) . '</span>';
148 + }
149 + }
150 + }
151 + echo '</div>';
152 + }
169 153
170 - if( !\Elementor\Plugin::$instance->editor->is_edit_mode() ) {
171 - $title = wp_title(null,false);
172 - $title = $title ? $title : get_bloginfo('name');
173 - }else{
174 - $title = __( 'This is a dummy title.', 'uicore-elements' );
154 + protected function render()
155 + {
156 + $meta_list = $this->get_settings_for_display('meta_list');
157 +
158 + if (!isset($meta_list[0]) || $meta_list[0]['type'] == '') {
159 + return;
175 160 }
176 161
177 - $meta_list = $this->get_settings_for_display( 'meta_list' );
178 - if(!isset($meta_list[0]) || $meta_list[0]['type'] == ''){
162 + if ($this->is_edit_mode()) {
163 + $this->display_dummy_text($meta_list);
179 164 return;
180 165 }
181 166
182 - echo '<div class="ui-e-post-meta ui-e-tb-meta">';
183 - foreach ($meta_list as $meta) {
184 - if($meta['type'] != 'none'){
185 - $this->display_meta($meta);
167 + echo '<div class="ui-e-post-meta ui-e-tb-meta">';
168 + foreach ($meta_list as $meta) {
169 + if ($meta['type'] != 'none') {
170 + $this->display_meta($meta);
186 171
187 - if( next( $meta_list ) && $this->get_settings_for_display( 'tb-meta_meta_separator' ) ) {
188 - echo '<span class="ui-e-separator">'.esc_html($this->get_settings_for_display('tb-meta_meta_separator' )).'</span>';
189 - }
172 + if (next($meta_list) && $this->get_settings_for_display('tb-meta_meta_separator')) {
173 + echo '<span class="ui-e-separator">' . esc_html($this->get_settings_for_display('tb-meta_meta_separator')) . '</span>';
190 174 }
191 175 }
192 - echo '</div>';
176 + }
177 + echo '</div>';
178 + }
193 179
194 - }
195 -
196 - /**
197 - * Render heading widget output in the editor.
198 - *
199 - * Written as a Backbone JavaScript template and used to generate the live preview.
200 - *
201 - * @since 2.9.0
202 - * @access protected
203 - */
204 - protected function content_template() {
205 - }
180 + protected function content_template() {}
206 181 }
207 182 \Elementor\Plugin::instance()->widgets_manager->register(new PostMeta());