PluginProbe
Visual Slider / trunk
Visual Slider vtrunk
visual-slider / admin / includes / slide.php

slide.php in Visual Slider trunk, at admin/includes/slide.php

378 lines 13.5 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 if ( ! defined( 'ABSPATH' ) ) {
3 exit; // Exit if accessed directly.
4 }
5 if ( !function_exists ( "vs_module_slide" )){
6 function vs_module_slide($slide=false){
7 global $post;
8
9 echo '<div class="vs_module_slide_warp">';
10 echo '<div class="vs_module_add_warp">';
11 echo '<a class="vs_module_slide_add vs_module_button">'.esc_html__('Add New Slide','visual-slider').'</a>';
12 echo '<a class="vs_module_all_slide_template_save vs_module_button vs_module_template_save" data-id="all_slide">'.esc_html__('Save All Slides in Library','visual-slider').'</a>';
13 echo '<a class="vs_module_slide_template_add vs_module_button">'.esc_html__('Add a Slide From Library','visual-slider').'</a>';
14
15
16
17 echo '</div>';
18 echo '<ul class="vs_module_slide_list">';
19 vs_module_slide_list(true,$slide);
20
21 echo '</ul>';
22
23 echo '</div>';
24
25 }
26 }
27
28 if ( !function_exists ( "vs_module_slide_list" )){
29 add_action('wp_ajax_vs_module_slide_list', 'vs_module_slide_list');
30 function vs_module_slide_list($none_ajax='',$slide =false){
31 if(empty($none_ajax)){
32 if ( ! isset( $_POST['_wpnonce'] ) ||
33 ! wp_verify_nonce(sanitize_text_field(wp_unslash( $_POST['_wpnonce'])), 'vs_slider_nonce' ) )
34 return;
35 $post_id =!empty($_POST['post_id'])? absint(wp_unslash($_POST['post_id'])): absint(get_the_ID());
36 if (!current_user_can('edit_post', $post_id) && !current_user_can('manage_options')){
37 return;
38 }
39 }
40
41
42
43 if(!empty($_POST['slide_template_id']) && empty($none_ajax)){
44 $template = get_option( 'vs_slide_template');
45 $slide_json = urldecode($template[sanitize_text_field(wp_unslash( $_POST['slide_template_id']))]['slide']);
46 $slide= vs_options_array_row($slide_json,'sl');
47 }
48 $count=0;
49 if (!empty($slide)) :
50 foreach($slide as $slide_key => $slide_value):
51 $count++;
52
53 vs_module_slide_item(true,$slide_key,$slide_value,$count);
54
55 endforeach;
56 endif;
57
58 if(empty($none_ajax)){
59 die(0);
60 }
61 }
62 }
63 if ( !function_exists ( "vs_module_slide_item" )){
64 add_action('wp_ajax_vs_module_slide_item', 'vs_module_slide_item');
65 function vs_module_slide_item($none_ajax='',$slide_key =false,$slide_value=false,$count=1){
66 if(empty($none_ajax)){
67 if ( ! isset( $_POST['_wpnonce'] ) ||
68 ! wp_verify_nonce(sanitize_text_field(wp_unslash( $_POST['_wpnonce'])), 'vs_slider_nonce' ) )
69 return;
70 $post_id =!empty($_POST['post_id'])? absint(wp_unslash($_POST['post_id'])): absint(get_the_ID());
71 if (!current_user_can('edit_post', $post_id) && !current_user_can('manage_options')){
72 return;
73 }
74 }
75 $slide_template_id = !empty($_POST['slide_template_id'])?sanitize_key(wp_unslash( $_POST['slide_template_id'])):'';
76
77 if(!empty($slide_template_id)){
78 $slide=$slide_value;
79 $key = 'r'.wp_rand(0000000001,9999999999);
80 }else{
81 $slide=$slide_value;
82 $key = !empty($_POST['key'])&& empty($none_ajax)? sanitize_key(wp_unslash($_POST['key'])): $slide_key;
83 }
84
85 echo '<li id="vs_module_slide_'.esc_attr($key).'" class="vs_module_slide_item" data-key="'.esc_attr($key).'" data-value="slide" data-count="'.esc_attr($count).'">';
86
87 vs_slide_top();
88
89 vs_module_slide_inner(true,$slide);
90
91 echo '</li> ';
92 if(empty($none_ajax)){
93 die(0);
94 }
95
96 }
97 }
98 if ( !function_exists ( "vs_module_slide_inner" )){
99 add_action('wp_ajax_vs_module_slide_inner', 'vs_module_slide_inner');
100 function vs_module_slide_inner($none_ajax='',$slide_value=false){
101 if(empty($none_ajax)){
102 if ( ! isset( $_POST['_wpnonce'] ) ||
103 ! wp_verify_nonce(sanitize_text_field(wp_unslash( $_POST['_wpnonce'])), 'vs_slider_nonce' ) )
104 return;
105 $post_id =!empty($_POST['post_id'])? absint(wp_unslash($_POST['post_id'])): absint(get_the_ID());
106 if (!current_user_can('edit_post', $post_id) && !current_user_can('manage_options')){
107 return;
108 }
109 }
110 if(!empty($_POST['option'])&& empty($none_ajax)){
111
112 if(vs_validate_decode_code(wp_unslash(filter_input(INPUT_POST, 'option', FILTER_UNSAFE_RAW)))){
113 $data_option= wp_unslash(filter_input(INPUT_POST, 'option', FILTER_UNSAFE_RAW));
114
115 }else{
116 $data_option = vs_options_encode(wp_unslash(filter_input(INPUT_POST, 'option', FILTER_UNSAFE_RAW)));
117 }
118 }else{
119 $data_option = !empty($slide_value['option'])?$slide_value['option']:'';
120 }
121
122 if(!empty($_POST['layer']) && empty($none_ajax)){
123 if(vs_validate_decode_code(wp_unslash(filter_input(INPUT_POST, 'layer', FILTER_UNSAFE_RAW)))){
124 $data_layer= wp_unslash(filter_input(INPUT_POST, 'layer', FILTER_UNSAFE_RAW));
125 }else{
126 $data_layer = vs_options_encode(wp_unslash(filter_input(INPUT_POST, 'layer', FILTER_UNSAFE_RAW)));
127 }
128 }else{
129 $data_layer = !empty($slide_value['layer'])?$slide_value['layer']:'';
130 }
131
132 $slide_array=array();
133 $vs_slide_options = array(apply_filters('vs_slide_options',$slide_array));
134 if(!empty($_POST['default']) && empty($none_ajax)){
135
136 $value_default=array();
137 foreach ($vs_slide_options as $slide_options):
138 if(!empty($slide_options)):
139 foreach ($slide_options as $option ):
140 if($option['id'] =='title'){
141 $option['default'] =!empty($_POST['default_title']) && empty($none_ajax) ? sanitize_text_field(wp_unslash($_POST['default_title'])):'';
142 }
143 if(!empty($option['default']) && !empty($option['id'])){
144 $value_default[$option['id']] = $option['default'];
145 }
146 endforeach;
147 endif;
148
149 endforeach;
150
151
152 $data_option =!empty($value_default)? vs_new_encode($value_default,'op'):'';
153 }else{
154 $data_option =$data_option;
155 }
156
157 echo '<div class="vs_module_slide_inner">';
158
159
160 echo '<div class="vs_module_slide_option">'.wp_kses($data_option,vs_kses()).'</div>';
161 echo '<div class="vs_module_slide_layer">'.wp_kses($data_layer,vs_kses()).'</div>';
162 if(vs_validate_decode_code($data_option)){
163 $value_option =vs_new_decode($data_option,'op');
164 }else{
165 $value_option = vs_options_decode(urldecode(esc_html($data_option)));
166 }
167
168 $background_color =vs_slider_var_gradient_background_color('sl',$value_option,'background_color');
169 $background_image =vs_slider_background_image('sl',$value_option,'background_image');
170
171 echo '<div class="vs_module_slide_cover" style="'.esc_attr($background_image.''.$background_color).'"></div>';
172
173 $option_title =!empty($value_option['title'])?$value_option['title']:'';
174
175 echo '<span class="vs_module_slide_title">'.esc_html($option_title).'</span>';
176
177 echo '</div>';
178 if(empty($none_ajax)){
179 die();
180 }
181
182 }
183 }
184 if ( !function_exists ( "vs_slide_top" )){
185 function vs_slide_top() {
186
187
188 echo '<div class="vs_module_slide_top">';
189 echo '<a class="vs_module_slide_options"></a>';
190 echo '<a class="vs_module_slide_duplicate"></a>';
191 echo '<a class="vs_module_slide_template_save vs_module_template_save" data-id="slide"></a>';
192 echo '<a class="vs_module_slide_remove"></a>';
193 echo '</div>';
194
195 }
196 }
197
198
199 if ( !function_exists ( "vs_module_panel_options" )){
200 add_action('wp_ajax_vs_module_panel_options', 'vs_module_panel_options');
201 function vs_module_panel_options(){
202
203 if ( ! isset( $_POST['_wpnonce'] ) ||
204 ! wp_verify_nonce(sanitize_text_field(wp_unslash( $_POST['_wpnonce'])), 'vs_slider_nonce' ) )
205 return;
206 $post_id =!empty($_POST['post_id'])? absint(wp_unslash($_POST['post_id'])): absint(get_the_ID());
207 if (!current_user_can('edit_post', $post_id) && !current_user_can('manage_options')){
208 return;
209 }
210
211
212 $key = !empty($_POST['key'])?sanitize_key(wp_unslash($_POST['key'])):'';
213
214 echo '<div id="vs_options_'.esc_attr($key).'" class="vs_panel vs_panel_desktop" data-key="'.esc_attr($key).'">';
215 echo '<div class="vs_panel_middle">';
216 //Title
217 echo '<div class="vs_panel_title"><h3>'.esc_html__('Slide Options','visual-slider').'</h3>';
218 echo '<div class="vs_panel_cancel">'.esc_html__('Cancel','visual-slider').'</div>';
219 echo '<div class="vs_panel_save">'.esc_html__('Save changes','visual-slider').'</div>';
220 echo '</div>';
221 //Content
222 echo '<div class="vs_panel_scroll">';
223 echo '<div class="vs_panel_content">';
224
225 echo '<div class="vs_module_add_warp">';
226 echo '<a class="vs_module_slide_options_show vs_module_button">'.esc_html__('Slide Options','visual-slider').'</a>';
227 echo '<a class="vs_module_layer_add vs_module_button">'.esc_html__('Add Layer','visual-slider').'</a>';
228 echo '<a class="vs_module_all_layer_template_save vs_module_button vs_module_template_save" data-id="all_layer">'.esc_html__('Save All Layer in Library','visual-slider').'</a>';
229 echo '<a class="vs_module_layer_template_add vs_module_button">'.esc_html__('Add Layer From Library','visual-slider').'</a>';
230 echo '</div>';
231
232 vs_module_slide_options();
233
234 vs_icon_fonts();
235 vs_module_layer();
236 vs_perview_slide_warp();
237
238 echo '</div>';
239 echo '</div>';
240 echo '</div>';
241 echo '</div>';
242
243 die();
244 }
245 }
246
247 if ( !function_exists ( "vs_module_slide_tabs" )){
248 function vs_module_slide_tabs(){
249 $setting=array();
250 $vs_setting_options = array(apply_filters('vs_slide_options',$setting));
251 $tab= array();
252
253 foreach ($vs_setting_options as $setting) :
254 foreach ($setting as $option ) :
255 if(!empty($option['group'])){
256 $dass = sanitize_title($option['group']);
257 if(!array_key_exists($dass,$tab)){
258 $tab[sanitize_title($option['group'])] = $option['group'];
259 }
260 }else{
261 $general = esc_html__('General','visual-slider');
262 $tab[sanitize_title($general)] = $general;
263 }
264 endforeach;
265 endforeach;
266
267 return $tab;
268
269 }
270 }
271
272 if ( !function_exists ( "vs_module_slide_options" )){
273 function vs_module_slide_options(){
274
275
276 if ( ! isset( $_POST['_wpnonce'] ) ||
277 ! wp_verify_nonce(sanitize_text_field(wp_unslash( $_POST['_wpnonce'])), 'vs_slider_nonce' ) )
278 return;
279 $post_id =!empty($_POST['post_id'])? absint(wp_unslash($_POST['post_id'])): absint(get_the_ID());
280 if (!current_user_can('edit_post', $post_id) && !current_user_can('manage_options')){
281 return;
282 }
283
284
285
286 if(!empty(vs_validate_decode_code(wp_unslash(filter_input(INPUT_POST, 'option', FILTER_UNSAFE_RAW))))){
287 $value_id = vs_new_decode(wp_unslash(filter_input(INPUT_POST, 'option', FILTER_UNSAFE_RAW)),'op');
288 }else{
289 $value_id = !empty($_POST['option']) ? vs_options_decode(urldecode(wp_unslash(filter_input(INPUT_POST, 'option', FILTER_UNSAFE_RAW)))):'';
290 }
291
292 $slide_array=array();
293 $vs_slide_options = array(apply_filters('vs_slide_options',$slide_array));
294 echo '<form id="vs_module_slide_options" class="vs_options vs_side_options vs_active">';
295 echo '<div class="vs_module_side_options_title"><span>'.esc_html__('Layer Options','visual-slider').'</span><i class="vs_module_side_options_close"></i>';
296 echo '</div>';
297 echo '<div class="vs_side_options_content">';
298 foreach ($vs_slide_options as $slide_options):
299 echo'<div class="vs_title_tabs">';
300 $array_tab = vs_module_slide_tabs();
301 $count_tab=0;
302
303 foreach ($array_tab as $key=> $tabs) :
304 $count_tab++;
305 if($count_tab==1){
306 $tab_active = 'vs_layout_active';
307 }else{
308 $tab_active = '';
309 }
310 echo'<a class="vs_tab_'.esc_attr($key).' '.esc_attr($tab_active).'" data-id="'.esc_attr($key).'">'.esc_html($tabs).'</a>';
311 endforeach;
312
313 echo'</div>';
314 endforeach;
315
316
317
318 echo '<div class="vs_options_content">';
319
320 foreach ($vs_slide_options as $slide_options):
321
322 $array_tab = vs_module_slide_tabs();
323 $count_container=0;
324 foreach ($array_tab as $key=> $tabs):
325
326 $count_container++;
327 if($count_container==1){
328 $group_active = 'vs_layout_group_active';
329 }else{
330 $group_active = '';
331 }
332
333 echo '<section class="vs_options_warp '.esc_attr($group_active).' " data-tab="'.esc_attr($key).'">';
334 foreach ($slide_options as $option ):
335 $general = !empty($option['group']) ? sanitize_title($option['group']):sanitize_title(esc_html__('General','visual-slider'));
336 if($key == $general ){
337 if(!empty($option['name']) && !empty($option['id']) && !empty($option['type'])){
338 $data_options = !empty( $option['options'] ) ? $option['options'] : null;
339 $desc = !empty( $option['desc'] ) ? $option['desc'] : null;
340 $placeholder = !empty( $option['placeholder'] ) ? $option['placeholder'] : null;
341 $fold = !empty( $option['fold'] ) ? $option['fold'] : null;
342
343 $unit = !empty( $option['unit'] ) ? $option['unit'] : null;
344 $min = !empty( $option['min'] ) ? $option['min'] : null;
345 $max = !empty( $option['max'] ) ? $option['max'] : null;
346 $step = !empty( $option['step'] ) ? $option['step'] : null;
347 $width = !empty( $option['width'] ) ? $option['width'] : null;
348 $responsive = !empty( $option['responsive'] ) ? $option['responsive'] : null;
349 $warp_width = !empty( $option['warp_width'] ) ? $option['warp_width'] : null;
350
351
352
353 $value =isset($value_id[$option['id']])?$value_id[$option['id']]:'';
354 vs_options_function($value, $option['name'], $option['id'],$option['type'],$data_options,$desc,$placeholder,$fold,'slide_'.$option['id'],$unit,'vs_slide',$min,$max,$step,$width,$responsive,$warp_width);
355
356
357
358 }
359
360
361
362
363 }
364 endforeach;
365 echo '</section>';
366
367 endforeach;
368 endforeach;
369
370 echo '</div>';
371 echo '</div>';
372
373
374
375 echo '</form>';
376 }
377 }
378