PluginProbe ʕ •ᴥ•ʔ
EmbedPress – PDF Embedder, 3D PDF FlipBook, Google Reviews, YouTube Videos, Upload & Embed PDF documents / 3.6.8
EmbedPress – PDF Embedder, 3D PDF FlipBook, Google Reviews, YouTube Videos, Upload & Embed PDF documents v3.6.8
4.6.0 4.5.6 4.5.5 4.5.4 4.5.3 4.5.2 trunk 1.0.0 1.1.0 1.1.1 1.1.2 1.1.3 1.2.0 1.3.0 1.3.1 1.4.0 1.4.1 1.4.2 1.4.3 1.4.4 1.5.0 1.6.0 1.6.1 1.6.2 1.6.3 1.7.0 1.7.1 1.7.2 1.7.3 1.7.4 1.7.5 2.0.0 2.0.1 2.0.2 2.0.3 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.2.0 2.2.1 2.2.2 2.3.0 2.3.1 2.3.2 2.3.3 2.4.0 2.4.1 2.5.0 2.5.1 2.5.2 2.5.3 2.5.4 2.5.5 2.6.0 2.6.1 2.6.2 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.7.6 2.7.7 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.1.0 3.1.1 3.1.2 3.1.3 3.2.0 3.2.1 3.3.0 3.3.1 3.3.2 3.3.3 3.3.4 3.3.5 3.3.6 3.3.7 3.4.0 3.4.1 3.4.2 3.4.3 3.5.0 3.5.1 3.5.2 3.5.3 3.6.0 3.6.1 3.6.2 3.6.3 3.6.4 3.6.5 3.6.6 3.6.7 3.6.8 3.7.0 3.7.1 3.7.2 3.7.3 3.8.0 3.8.1 3.8.2 3.8.3 3.8.4 3.8.5 3.9.0 3.9.1 3.9.10 3.9.11 3.9.12 3.9.13 3.9.14 3.9.15 3.9.16 3.9.17 3.9.2 3.9.3 3.9.4 3.9.5 3.9.6 3.9.7 3.9.8 3.9.9 4.0.0 4.0.1 4.0.10 4.0.11 4.0.12 4.0.13 4.0.14 4.0.2 4.0.3 4.0.4 4.0.5 4.0.6 4.0.7 4.0.8 4.0.9 4.1.0 4.1.1 4.1.10 4.1.2 4.1.3 4.1.4 4.1.5 4.1.6 4.1.7 4.1.8 4.1.9 4.2.0 4.2.1 4.2.2 4.2.3 4.2.4 4.2.5 4.2.6 4.2.7 4.2.8 4.2.9 4.3.0 4.3.1 4.4.0 4.4.1 4.4.10 4.4.11 4.4.2 4.4.3 4.4.4 4.4.5 4.4.6 4.4.7 4.4.8 4.4.9 4.5.0 4.5.1
embedpress / EmbedPress / Elementor / Widgets / Embedpress_Document.php
embedpress / EmbedPress / Elementor / Widgets Last commit date
Embedpress_Calendar.php 3 years ago Embedpress_Document.php 3 years ago Embedpress_Elementor.php 3 years ago Embedpress_Pdf.php 3 years ago
Embedpress_Document.php
331 lines
1 <?php
2
3 namespace EmbedPress\Elementor\Widgets;
4
5
6 use \Elementor\Controls_Manager as Controls_Manager;
7 use \Elementor\Modules\DynamicTags\Module as TagsModule;
8 use \Elementor\Widget_Base as Widget_Base;
9 use \Elementor\Plugin;
10 use EmbedPress\Includes\Traits\Branding;
11 use EmbedPress\Includes\Classes\Helper;
12
13 ( defined( 'ABSPATH' ) ) or die( "No direct script access allowed." );
14
15 class Embedpress_Document extends Widget_Base
16 {
17 use Branding;
18 protected $pro_class = '';
19 protected $pro_text = '';
20 public function get_name()
21 {
22 return 'embedpres_document';
23 }
24
25 public function get_title()
26 {
27 return esc_html__( 'EmbedPress Document', 'embedpress' );
28 }
29
30 public function get_categories()
31 {
32 return ['embedpress'];
33 }
34
35 public function get_custom_help_url()
36 {
37 return 'https://embedpress.com/documentation';
38 }
39
40 public function get_icon()
41 {
42 return 'icon-document';
43 }
44
45 /**
46 * Get widget keywords.
47 *
48 * Retrieve the list of keywords the widget belongs to.
49 *
50 * @return array Widget keywords.
51 * @since 2.5.5
52 * @access public
53 *
54 */
55 public function get_keywords()
56 {
57 return ['embedpress', 'pdf', 'doc', 'docx', 'ppt', 'pptx', 'xls', 'xlsx', 'embedpress-document'];
58 }
59
60 protected function register_controls()
61 {
62 $this->pro_class = is_embedpress_pro_active() ? '': 'embedpress-pro-control';
63 $this->pro_text = is_embedpress_pro_active() ? '': '<sup class="embedpress-pro-label" style="color:red">'.__('Pro', 'embedpress').'</sup>';
64 /**
65 * EmbedPress Content Settings
66 */
67 $this->start_controls_section(
68 'embedpress_document_content_settings',
69 [
70 'label' => esc_html__( 'Content Settings', 'embedpress' ),
71 ]
72 );
73
74 $this->add_control(
75 'embedpress_document_type',
76 [
77 'label' => __( 'Document Type', 'embedpress' ),
78 'type' => Controls_Manager::SELECT,
79 'default' => 'file',
80 'options' => [
81 'file' => __( 'File', 'embedpress' ),
82 'url' => __( 'URL', 'embedpress' )
83 ],
84 ]
85 );
86
87 $this->add_control(
88 'embedpress_document_Uploader',
89 [
90
91 'label' => __( 'Upload File', 'embedpress' ),
92 'type' => Controls_Manager::MEDIA,
93 'dynamic' => [
94 'active' => true,
95 'categories' => [
96 TagsModule::MEDIA_CATEGORY,
97 ],
98 ],
99 'media_type' => [
100 'application/pdf',
101 'application/msword',
102 'application/vnd.ms-powerpoint',
103 'application/vnd.ms-excel',
104 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
105 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
106 'application/vnd.openxmlformats-officedocument.presentationml.presentation'
107 ],
108 'description' => __( 'Upload a file or pick one from your media library for embed. Supported File Type: PDF, DOC/DOCX, PPT/PPTX, XLS/XLSX etc.',
109 'embedpress' ),
110 'condition' => [
111 'embedpress_document_type' => 'file'
112 ],
113 ]
114 );
115
116 $this->add_control(
117 'embedpress_document_file_link',
118 [
119 'label' => __( 'URL', 'embedpress' ),
120 'type' => Controls_Manager::URL,
121 'placeholder' => __( 'https://your-link.com/file.pdf', 'embedpress' ),
122 'show_external' => false,
123 'default' => [
124 'url' => ''
125 ],
126 'condition' => [
127 'embedpress_document_type' => 'url'
128 ],
129 ]
130 );
131
132 $this->add_control(
133 'embedpress_elementor_document_width',
134 [
135 'label' => __( 'Width', 'embedpress' ),
136 'type' => Controls_Manager::SLIDER,
137 'separator' => 'before',
138 'default' => [
139 'unit' => 'px',
140 'size' => 600,
141 ],
142 'range' => [
143 'px' => [
144 'min' => 6,
145 'max' => 1000,
146 ],
147 ],
148 'selectors' => [
149 '{{WRAPPER}} .embedpress-document-embed iframe' => 'width: {{SIZE}}{{UNIT}} !important; max-width: 100%',
150 '{{WRAPPER}} .embedpress-document-embed .pdfobject-container' => 'width: {{SIZE}}{{UNIT}} !important; max-width: 100%',
151 '{{WRAPPER}} .embedpress-document-embed' => 'width: {{SIZE}}{{UNIT}} !important; max-width: 100%',
152 ],
153 ]
154 );
155
156 $this->add_control(
157 'embedpress_elementor_document_height',
158 [
159 'label' => __( 'Height', 'embedpress' ),
160 'type' => Controls_Manager::SLIDER,
161 'default' => [
162 'unit' => 'px',
163 'size' => 600,
164 ],
165 'range' => [
166 'px' => [
167 'min' => 6,
168 'max' => 1000,
169 ],
170 ],
171 'selectors' => [
172 '{{WRAPPER}}' => 'height: {{SIZE}}{{UNIT}};',
173 '{{WRAPPER}} .embedpress-document-embed iframe' => 'height: {{SIZE}}{{UNIT}};',
174 '{{WRAPPER}} .embedpress-document-embed .pdfobject-container' => 'height: {{SIZE}}{{UNIT}};',
175 ],
176 ]
177 );
178
179 $this->add_responsive_control(
180 'embedpress_elementor_document_align',
181 [
182 'label' => __( 'Alignment', 'embedpress' ),
183 'type' => Controls_Manager::CHOOSE,
184 'options' => [
185 'left' => [
186 'title' => __( 'Left', 'embedpress' ),
187 'icon' => 'eicon-text-align-left',
188 ],
189 'center' => [
190 'title' => __( 'Center', 'embedpress' ),
191 'icon' => 'eicon-text-align-center',
192 ],
193 'right' => [
194 'title' => __( 'Right', 'embedpress' ),
195 'icon' => 'eicon-text-align-right',
196 ]
197 ],
198 'prefix_class' => 'elementor%s-align-',
199 'default' => 'center',
200 ]
201 );
202
203 $this->add_control(
204 'embedpress_document_powered_by',
205 [
206 'label' => __( 'Powered By', 'embedpress' ),
207 'type' => Controls_Manager::SWITCHER,
208 'label_on' => __( 'Show', 'embedpress' ),
209 'label_off' => __( 'Hide', 'embedpress' ),
210 'return_value' => 'yes',
211 'default' => apply_filters( 'embedpress_document_powered_by_control', 'yes' ),
212 ]
213 );
214
215 $this->init_branding_controls( 'document');
216
217 $this->end_controls_section();
218
219 if (! is_embedpress_pro_active()) {
220 $this->start_controls_section(
221 'embedpress_pro_section',
222 [
223 'label' => __('Go Premium for More Features', 'embedpress'),
224 ]
225 );
226
227 $this->add_control(
228 'embedpress_pro_cta',
229 [
230 'label' => __('Unlock more possibilities', 'embedpress'),
231 'type' => Controls_Manager::CHOOSE,
232 'options' => [
233 '1' => [
234 'title' => '',
235 'icon' => 'eicon-lock',
236 ],
237 ],
238 'default' => '1',
239 'description' => '<span class="pro-feature"> Get the <a href="https://wpdeveloper.com/in/upgrade-embedpress" target="_blank">Pro version</a> for more provider support and customization options.</span>',
240 ]
241 );
242
243 $this->end_controls_section();
244 }
245 }
246
247 private function is_pdf( $url )
248 {
249 $arr = explode( '.', $url );
250 return end( $arr ) === 'pdf';
251 }
252
253 protected function render()
254 {
255 $settings = $this->get_settings();
256 $url = $this->get_file_url();
257 $id = 'embedpress-pdf-' . $this->get_id();
258 $dimension = "width: {$settings['embedpress_elementor_document_width']['size']}px;height: {$settings['embedpress_elementor_document_height']['size']}px";
259 $this->add_render_attribute( 'embedpres-pdf-render', [
260 'class' => ['embedpress-embed-document-pdf', $id],
261 'data-emid' => $id
262 ] );
263
264 Helper::get_source_data(md5($this->get_id()).'_eb_elementor', $url, 'elementor_source_data', 'elementor_temp_source_data');
265
266 $this->add_render_attribute( 'embedpress-document', [
267 'class' => ['embedpress-document-embed', 'ep-doc-'.md5( $id), 'ose-document']
268 ] );
269 ?>
270 <div <?php echo $this->get_render_attribute_string( 'embedpress-document' ); ?> style="<?php echo esc_attr( $dimension); ?>; max-width:100%; display: inline-block">
271 <?php
272 do_action( 'embedpress_document_after_embed', $settings, $url, $id, $this);
273 ?>
274 <?php if ( $url != '' ) {
275 if ( $this->is_pdf( $url ) ) {
276 $this->add_render_attribute( 'embedpres-pdf-render', 'data-emsrc', $url );
277 ?>
278 <div <?php echo $this->get_render_attribute_string( 'embedpres-pdf-render' ); ?>>
279 </div>
280 <?php
281
282 if ( Plugin::$instance->editor->is_edit_mode() ) {
283 $this->render_editor_script( $id, $url );
284 }
285
286 } else {
287 $view_link = '//view.officeapps.live.com/op/embed.aspx?src=' . $url . '&embedded=true';
288 ?>
289 <div>
290 <iframe title="<?php echo esc_attr(Helper::get_file_title($url)); ?>" allowfullscreen="true" mozallowfullscreen="true" webkitallowfullscreen="true" style="<?php echo esc_attr( $dimension); ?>; max-width:100%;" src="<?php echo esc_url( $view_link); ?>"></iframe>
291 </div>
292
293 <?php
294 }
295 if ( $settings[ 'embedpress_document_powered_by' ] === 'yes' ) {
296 printf( '<p class="embedpress-el-powered">%s</p>', __( 'Powered By EmbedPress', 'embedpress' ) );
297 }
298 }
299 ?>
300 </div>
301
302 <?php
303 }
304
305 private function get_file_url()
306 {
307 $settings = $this->get_settings();
308 return $settings[ 'embedpress_document_type' ] === 'url' ? $settings[ 'embedpress_document_file_link' ][ 'url' ] : $settings[ 'embedpress_document_Uploader' ][ 'url' ];
309 }
310
311 protected function render_editor_script( $id, $url )
312 {
313 ?>
314 <script>
315 (function ($) {
316 'use strict';
317 $(document).ready(function () {
318 var selector = $('.embedpress-embed-document-pdf');
319 let option = {
320 forceObject: false,
321 };
322 if (selector.length) {
323 PDFObject.embed("<?php echo $url; ?>", "<?php echo '.' . $id; ?>", option);
324 }
325 });
326 })(jQuery);
327 </script>
328 <?php
329 }
330 }
331