PluginProbe
UiCore Elements – Free widgets and templates for Elementor / 1.3.17
UiCore Elements – Free widgets and templates for Elementor v1.3.17
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 1.2.4 All 41 releases
uicore-elements / includes / widgets / theme-builder / post-meta.php

post-meta.php in UiCore Elements – Free widgets and templates for Elementor 1.3.17, at includes/widgets/theme-builder/post-meta.php

183 lines 6.0 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace UiCoreElements\Widgets\ThemeBuilder;
4
5 use UiCoreElements\UiCoreWidget;
6 use Elementor\Controls_Manager;
7 use UiCoreElements\Utils\Meta_Trait;
8 use UiCoreElements\Helper;
9
10 defined('ABSPATH') || exit();
11
12 /**
13 * The Title widget.
14 *
15 * @since 1.0.0
16 */
17 class PostMeta extends UiCoreWidget
18 {
19
20 use Meta_Trait;
21
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 }
55
56 protected function register_controls()
57 {
58 $this->start_controls_section(
59 'section_content',
60 [
61 'label' => esc_html__('Content', 'uicore-elements'),
62 ]
63 );
64
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();
102
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 }
113
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') {
119
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 ];
125
126 // Print dummy content, if available
127 if (array_key_exists($meta['type'], $dummy_content)) {
128 $content = $dummy_content[$meta['type']];
129
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>' : '';
134
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();
138
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 }
145
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 }
153
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;
160 }
161
162 if ($this->is_edit_mode()) {
163 $this->display_dummy_text($meta_list);
164 return;
165 }
166
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);
171
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>';
174 }
175 }
176 }
177 echo '</div>';
178 }
179
180 protected function content_template() {}
181 }
182 \Elementor\Plugin::instance()->widgets_manager->register(new PostMeta());
183