PluginProbe ʕ •ᴥ•ʔ
EmbedPress – PDF Embedder, 3D PDF FlipBook, Google Reviews, YouTube Videos, Upload & Embed PDF documents / 3.3.1
EmbedPress – PDF Embedder, 3D PDF FlipBook, Google Reviews, YouTube Videos, Upload & Embed PDF documents v3.3.1
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_Document.php 4 years ago Embedpress_Elementor.php 4 years ago
Embedpress_Document.php
309 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\Classes\Helper;
11 use EmbedPress\Includes\Traits\Branding;
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-pdf';
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 ],
152 ]
153 );
154
155 $this->add_control(
156 'embedpress_elementor_document_height',
157 [
158 'label' => __( 'Height', 'embedpress' ),
159 'type' => Controls_Manager::SLIDER,
160 'default' => [
161 'unit' => 'px',
162 'size' => 600,
163 ],
164 'range' => [
165 'px' => [
166 'min' => 6,
167 'max' => 1000,
168 ],
169 ],
170 'selectors' => [
171 '{{WRAPPER}} .embedpress-document-embed iframe' => 'height: {{SIZE}}{{UNIT}};',
172 '{{WRAPPER}} .embedpress-document-embed .pdfobject-container' => 'height: {{SIZE}}{{UNIT}};',
173 ],
174 'render_type' => 'template',
175 ]
176 );
177
178 $this->add_responsive_control(
179 'embedpress_elementor_document_align',
180 [
181 'label' => __( 'Alignment', 'embedpress' ),
182 'type' => Controls_Manager::CHOOSE,
183 'options' => [
184 'left' => [
185 'title' => __( 'Left', 'embedpress' ),
186 'icon' => 'eicon-text-align-left',
187 ],
188 'center' => [
189 'title' => __( 'Center', 'embedpress' ),
190 'icon' => 'eicon-text-align-center',
191 ],
192 'right' => [
193 'title' => __( 'Right', 'embedpress' ),
194 'icon' => 'eicon-text-align-right',
195 ]
196 ],
197 'prefix_class' => 'elementor%s-align-',
198 'default' => '',
199 ]
200 );
201
202 $this->add_control(
203 'embedpress_document_powered_by',
204 [
205 'label' => __( 'Powered By', 'embedpress' ),
206 'type' => Controls_Manager::SWITCHER,
207 'label_on' => __( 'Show', 'embedpress' ),
208 'label_off' => __( 'Hide', 'embedpress' ),
209 'return_value' => 'yes',
210 'default' => apply_filters( 'embedpress_document_powered_by_control', 'yes' ),
211 ]
212 );
213
214 $this->init_branding_controls( 'document');
215
216 $this->end_controls_section();
217
218 if (! is_embedpress_pro_active()) {
219 $this->start_controls_section(
220 'embedpress_pro_section',
221 [
222 'label' => __('Go Premium for More Features', 'embedpress'),
223 ]
224 );
225
226 $this->add_control(
227 'embedpress_pro_cta',
228 [
229 'label' => __('Unlock more possibilities', 'embedpress'),
230 'type' => Controls_Manager::CHOOSE,
231 'options' => [
232 '1' => [
233 'title' => '',
234 'icon' => 'eicon-lock',
235 ],
236 ],
237 'default' => '1',
238 'description' => '<span class="pro-feature"> Get the <a href="https://wpdeveloper.net/in/upgrade-embedpress" target="_blank">Pro version</a> for more provider support and customization options.</span>',
239 ]
240 );
241
242 $this->end_controls_section();
243 }
244 }
245
246 private function is_pdf( $url )
247 {
248 $arr = explode( '.', $url );
249 return end( $arr ) === 'pdf';
250 }
251
252 protected function render()
253 {
254 $settings = $this->get_settings();
255 $url = $this->get_file_url();
256 $id = 'embedpress-pdf-' . $this->get_id();
257 $dimension = "width: {$settings['embedpress_elementor_document_width']['size']}px;height: {$settings['embedpress_elementor_document_height']['size']}px";
258 $this->add_render_attribute( 'embedpres-pdf-render', [
259 'class' => ['embedpress-embed-document-pdf', $id],
260 'data-emid' => $id
261 ] );
262 $this->add_render_attribute( 'embedpress-document', [
263 'class' => ['embedpress-document-embed', 'ep-doc-'.md5( $id), 'ose-document']
264 ] );
265 ?>
266 <div <?php echo $this->get_render_attribute_string( 'embedpress-document' ); ?> style="<?php echo esc_attr( "width: {$settings['embedpress_elementor_document_width']['size']}px"); ?>; max-width:100%; display: inline-block">
267 <?php
268 do_action( 'embedpress_document_after_embed', $settings, $url, $id, $this);
269 ?>
270 <?php if ( $url != '' ) {
271 if ( $this->is_pdf( $url ) ) {
272 $this->add_render_attribute( 'embedpres-pdf-render', 'data-emsrc', $url );
273 $renderer = Helper::get_pdf_renderer();
274 $src = $renderer . ((strpos($renderer, '?') == false) ? '?' : '&') . 'file=' . $url;
275 ?>
276
277 <iframe style="<?php echo esc_attr( $dimension); ?>; max-width:100%; display: inline-block" src="<?php echo esc_attr( $src); ?>" <?php $this->get_render_attribute_string( 'embedpres-pdf-render' ); ?>
278 frameborder="0"></iframe>
279
280 <?php
281
282 } else {
283 $view_link = 'https://docs.google.com/viewer?url=' . $url . '&embedded=true';
284 ?>
285 <div>
286 <iframe allowfullscreen="true" mozallowfullscreen="true" webkitallowfullscreen="true" style="<?php echo esc_attr( $dimension); ?>; max-width:100%;" src="<?php echo esc_url( $view_link); ?>"/>
287 </div>
288
289 <?php
290 }
291 if ( $settings[ 'embedpress_document_powered_by' ] === 'yes' ) {
292 printf( '<p class="embedpress-el-powered">%s</p>', __( 'Powered By EmbedPress', 'embedpress' ) );
293 }
294 }
295 ?>
296 </div>
297
298 <?php
299 }
300
301 private function get_file_url()
302 {
303 $settings = $this->get_settings();
304 return $settings[ 'embedpress_document_type' ] === 'url' ? $settings[ 'embedpress_document_file_link' ][ 'url' ] : $settings[ 'embedpress_document_Uploader' ][ 'url' ];
305 }
306
307
308 }
309