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 +182 -207 1.0.12 → 1.3.18 View file →
@@ -1,207 +1,182 @@
1 -<?php
2 -namespace UiCoreElements\Widgets\ThemeBuilder;
3 -
4 -use Elementor\Widget_Base;
5 -use Elementor\Controls_Manager;
6 -use UiCoreElements\Helper;
7 -use UiCoreElements\Utils\Meta_Trait;
8 -
9 -defined('ABSPATH') || exit();
10 -
11 -/**
12 - * The Title widget.
13 - *
14 - * @since 4.0.0
15 - */
16 -class PostMeta extends Widget_Base {
17 -
18 - use Meta_Trait;
19 -
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 - }
33 -
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 - }
47 -
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 - }
61 -
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 - }
77 -
78 - public function get_style_depends() {
79 - Helper::register_widget_style('meta');
80 - return [ 'ui-e-meta' ];
81 - }
82 -
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 - }
96 -
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 - );
112 -
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();
147 -
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();
157 -
158 - }
159 -
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() {
169 -
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' );
175 - }
176 -
177 - $meta_list = $this->get_settings_for_display( 'meta_list' );
178 - if(!isset($meta_list[0]) || $meta_list[0]['type'] == ''){
179 - return;
180 - }
181 -
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);
186 -
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 - }
190 - }
191 - }
192 - echo '</div>';
193 -
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 - }
206 -}
207 -\Elementor\Plugin::instance()->widgets_manager->register(new PostMeta());
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());