Master Slider – Responsive Touch Slider - Version 2.7.0

Version Description

Download this release

Release Info

Developer averta
Plugin Icon 128x128 Master Slider – Responsive Touch Slider
Version 2.7.0
Comparing to
See all releases

Code changes from version 2.6.4 to 2.7.0

README.txt CHANGED
@@ -6,7 +6,7 @@ License URI: http://www.gnu.org/licenses/gpl.html
6
  Tags: banner rotator, carousel, content slider, gallery, image slider, responsive slider, showcase, slideshow, swipe, touch slider, video gallery, SEO, vertical slide, HTML5 slider, hardware accelerate, best slider, animation, mobile slider, iOS, android, video slider, youtube slider, horizontal slider, vertical slider, fullwidth slider, fullscreen slider, post slider, photo slider, online album, mobile slider, WordPress slider,wpml, ,ultisite, wistia, woocommerce, product slider, woocommerce slider, portfolio, gallery
7
  Requires at least: 4.0
8
  Tested up to: 4.3.0
9
- Stable tag: 2.6.4
10
 
11
  The most advanced responsive and HTML5 WordPress slider plugin with touch swipe navigation that works smoothly on desktop and devices.
12
 
@@ -225,6 +225,11 @@ Bugs can be reported in our [support forums](http://wordpress.org/tags/master-sl
225
  11. Flexible slider controls
226
 
227
 
 
 
 
 
 
228
  = Version 2.6.4 / (22.9.2015) =
229
  - [Fix]: Legacy widget constructor replaced with new one
230
 
@@ -392,5 +397,5 @@ Bugs can be reported in our [support forums](http://wordpress.org/tags/master-sl
392
 
393
  == Upgrade Notice ==
394
 
395
- = 2.6.4 =
396
  - [Fix]: Legacy widget constructor replaced with new one
6
  Tags: banner rotator, carousel, content slider, gallery, image slider, responsive slider, showcase, slideshow, swipe, touch slider, video gallery, SEO, vertical slide, HTML5 slider, hardware accelerate, best slider, animation, mobile slider, iOS, android, video slider, youtube slider, horizontal slider, vertical slider, fullwidth slider, fullscreen slider, post slider, photo slider, online album, mobile slider, WordPress slider,wpml, ,ultisite, wistia, woocommerce, product slider, woocommerce slider, portfolio, gallery
7
  Requires at least: 4.0
8
  Tested up to: 4.3.0
9
+ Stable tag: 2.7.0
10
 
11
  The most advanced responsive and HTML5 WordPress slider plugin with touch swipe navigation that works smoothly on desktop and devices.
12
 
225
  11. Flexible slider controls
226
 
227
 
228
+ = Version 2.7.0 / (26.9.2015) =
229
+ - [Improvement]: Now the slide info sections with no conent are no longer visible
230
+ - [Improvement]: Now Master Slider is fully compatible with new upcoming translation service on wp.org
231
+ - [Improvement]: Now auto crop is disabled for thumbnail when user set a custom thumbnail
232
+
233
  = Version 2.6.4 / (22.9.2015) =
234
  - [Fix]: Legacy widget constructor replaced with new one
235
 
397
 
398
  == Upgrade Notice ==
399
 
400
+ = 2.7.0 =
401
  - [Fix]: Legacy widget constructor replaced with new one
admin/class-master-slider-admin.php CHANGED
@@ -21,253 +21,253 @@ if ( ! defined( 'ABSPATH' ) ) {
21
  */
22
  class Master_Slider_Admin {
23
 
24
- /**
25
- * Instance of this class.
26
- *
27
- * @since 1.0.0
28
- *
29
- * @var object
30
- */
31
- protected static $instance = null;
32
-
33
- /**
34
- * Slug of the plugin screen.
35
- *
36
- * @since 1.0.0
37
- *
38
- * @var string
39
- */
40
- protected $sliders_screen_hook_suffix = null;
41
 
42
 
43
 
44
- /**
45
- * Initialize the plugin by loading admin classes and functions
46
- *
47
- * @since 1.0.0
48
- */
49
- private function __construct() {
50
-
51
- // include admin files
52
- $this->includes();
53
-
54
- add_action( 'init', array( $this, 'init' ) );
55
- }
56
-
57
-
58
- /**
59
- * Include admin essential classes and functions
60
- *
61
- * @return void
62
- */
63
- private function includes(){
64
- include_once( MSWP_AVERTA_ADMIN_DIR . '/includes/index.php' );
65
- include_once( MSWP_AVERTA_ADMIN_DIR . '/views/setting/class-msp-settings.php' );
66
- }
67
-
68
-
69
- public function init() {
70
-
71
- // Before init action
72
- do_action( 'before_masterslider_admin_init' );
73
-
74
- // A filter hook to restrict access to plugin panel only for super admin on multiste
75
- if( apply_filters( 'masterslider_access_only_for_super_admins' , 0 ) && ! is_super_admin() ) {
76
- return;
77
- }
78
-
79
- // Assign masterslider custom capabilities
80
- Master_Slider::assign_custom_caps();
81
- // Inject default styles and effects
82
- Master_Slider::set_default_options();
83
-
84
-
85
- // Initial tasks on admin init
86
- add_action( 'admin_init', array( $this, 'admin_init') );
87
-
88
- // Load admin Stylesheet and JavaScript.
89
- add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_admin_scripts') );
90
-
91
- // Add some essential content in admin page header
92
- add_action( 'admin_head', array( $this, 'admin_header' ), 9 );
93
-
94
- // Add the options page and menu item.
95
- add_action( 'admin_menu', array( $this, 'add_plugin_admin_menu' ) );
96
-
97
- // Add an action link pointing to the setting page.
98
- add_filter( 'plugin_action_links_'. MSWP_AVERTA_BASE_NAME, array( $this, 'add_action_links' ) );
99
-
100
- // Add an action link on plugin row meta in plugins page
101
- add_filter( 'plugin_row_meta', array( $this, 'plugin_row_meta' ), 10, 4 );
102
-
103
- // Admin init action
104
- do_action( 'masterslider_admin_init' );
105
- }
106
-
107
-
108
- /**
109
- * Triggers on admin init
110
- *
111
- * @return void
112
- */
113
- public function admin_init(){
114
-
115
- $this->after_plugin_update();
116
- }
117
-
118
-
119
- /**
120
- * Regenerate and cache custom css codes for all slider after plugin update
121
- *
122
- * @return bool TRUE on success, FALSE otherwise
123
- */
124
- public function after_plugin_update (){
125
-
126
- if( get_option( 'masterslider_lite_plugin_version', '0' ) == MSWP_AVERTA_VERSION )
127
- return false;
128
-
129
- msp_save_custom_styles();
130
- // msp_flush_all_sliders_cache(); 2.0.0
131
- update_option( 'masterslider_lite_plugin_version', MSWP_AVERTA_VERSION );
132
- do_action( 'masterslider_after_plugin_updated' );
133
-
134
- return true;
135
- }
136
-
137
-
138
- /**
139
- * Return an instance of this class.
140
- *
141
- * @since 1.0.0
142
- *
143
- * @return object A single instance of this class.
144
- */
145
- public static function get_instance() {
146
-
147
- if( apply_filters( 'masterslider_access_only_for_super_admins' , 0 ) && ! is_super_admin() ) {
148
- return;
149
- }
150
-
151
- // If the single instance hasn't been set, set it now.
152
- if ( null == self::$instance ) {
153
- self::$instance = new self;
154
- }
155
-
156
- return self::$instance;
157
- }
158
-
159
-
160
- /**
161
- * Register and enqueue admin-specific JavaScript & Stylesheet.
162
- *
163
- * @since 1.0.0
164
- *
165
- * @return null Return early if no settings page is registered.
166
- */
167
- public function enqueue_admin_scripts() {
168
-
169
- $admin_assets = new MSP_Admin_Assets();
170
- $admin_assets->enqueue_global_assets();
171
-
172
- if ( ! isset( $this->sliders_screen_hook_suffix ) )
173
- return;
174
-
175
- // load masterslider spesific assets only on it's admin page
176
- $screen = get_current_screen();
177
- if ( $this->sliders_screen_hook_suffix == $screen->id ) {
178
-
179
- $admin_assets->enqueue_panel_assets();
180
- }
181
-
182
- }
183
-
184
-
185
- /**
186
- * Print essential content in admin page header
187
- *
188
- * @since 1.0.0
189
- *
190
- * @return void
191
- */
192
- public function admin_header() {
193
-
194
- if ( ! isset( $this->sliders_screen_hook_suffix ) ) {
195
- return;
196
- }
197
-
198
- $screen = get_current_screen();
199
- if ( $this->sliders_screen_hook_suffix == $screen->id ) {
200
-
201
- if ( isset( $_REQUEST['slider_id'] ) ) {
202
-
203
- $slider_id = $_REQUEST['slider_id'];
204
- global $mspdb;
205
- $custom_fonts = $mspdb->get_slider_field_val( $slider_id, 'custom_fonts' );
206
-
207
- if ( ! empty( $custom_fonts ) )
208
- printf( "<link rel='stylesheet' id='masterslider-admin-fonts' href='http://fonts.googleapis.com/css?family=%s' type='text/css' />\n", $custom_fonts );
209
- }
210
- }
211
- }
212
-
213
-
214
- /**
215
- * Register the administration menu for this plugin into the WordPress Dashboard menu.
216
- *
217
- * @since 1.0.0
218
- */
219
- public function add_plugin_admin_menu() {
220
-
221
- $ms_page_title = apply_filters( 'masterslider_admin_page_title', __( 'Master Sliders', MSWP_TEXT_DOMAIN ) );
222
- $ms_menu_title = apply_filters( 'masterslider_admin_menu_title', __( 'Master Slider' , MSWP_TEXT_DOMAIN ) );
223
-
224
- // Add a top-level menu for master slider
225
- $this->sliders_screen_hook_suffix = add_menu_page(
226
- $ms_page_title,
227
- $ms_menu_title,
228
- apply_filters( 'masterslider_access_capability', 'access_masterslider' ),
229
- MSWP_SLUG,
230
- array( $this, 'display_master_slider_panel_page' )
231
- );
232
-
233
- }
234
-
235
-
236
- /**
237
- * Render the panel page for this plugin.
238
- *
239
- * @since 1.0.0
240
- */
241
- public function display_master_slider_panel_page() {
242
- include_once( 'views/index.php' );
243
- }
244
-
245
-
246
- /**
247
- * Add settings action link to the plugins page.
248
- *
249
- * @since 1.2.0
250
- */
251
- public function add_action_links( $links ) {
252
-
253
- $links['settings'] = '<a href="' . admin_url( 'admin.php?page=' . MSWP_SLUG . '-setting' ) . '">' . __( 'Settings', MSWP_TEXT_DOMAIN ) . '</a>';
254
- $links['go_pro'] = '<a href="http://avt.li/mslgo">' . __( 'Go Pro', MSWP_TEXT_DOMAIN ) . '</a>';
255
-
256
- return $links;
257
- }
258
-
259
-
260
- /**
261
- * Add extra action link to the plugin meta on plugins page.
262
- *
263
- * @since 1.8.0
264
- */
265
- public function plugin_row_meta( $plugin_meta, $plugin_file, $plugin_data, $status ){
266
- if( $plugin_file == MSWP_AVERTA_BASE_NAME ) { }
267
- return $plugin_meta;
268
- }
269
-
270
-
271
  }
272
 
273
  return Master_Slider_Admin::get_instance();
21
  */
22
  class Master_Slider_Admin {
23
 
24
+ /**
25
+ * Instance of this class.
26
+ *
27
+ * @since 1.0.0
28
+ *
29
+ * @var object
30
+ */
31
+ protected static $instance = null;
32
+
33
+ /**
34
+ * Slug of the plugin screen.
35
+ *
36
+ * @since 1.0.0
37
+ *
38
+ * @var string
39
+ */
40
+ protected $sliders_screen_hook_suffix = null;
41
 
42
 
43
 
44
+ /**
45
+ * Initialize the plugin by loading admin classes and functions
46
+ *
47
+ * @since 1.0.0
48
+ */
49
+ private function __construct() {
50
+
51
+ // include admin files
52
+ $this->includes();
53
+
54
+ add_action( 'init', array( $this, 'init' ) );
55
+ }
56
+
57
+
58
+ /**
59
+ * Include admin essential classes and functions
60
+ *
61
+ * @return void
62
+ */
63
+ private function includes(){
64
+ include_once( MSWP_AVERTA_ADMIN_DIR . '/includes/index.php' );
65
+ include_once( MSWP_AVERTA_ADMIN_DIR . '/views/setting/class-msp-settings.php' );
66
+ }
67
+
68
+
69
+ public function init() {
70
+
71
+ // Before init action
72
+ do_action( 'before_masterslider_admin_init' );
73
+
74
+ // A filter hook to restrict access to plugin panel only for super admin on multiste
75
+ if( apply_filters( 'masterslider_access_only_for_super_admins' , 0 ) && ! is_super_admin() ) {
76
+ return;
77
+ }
78
+
79
+ // Assign masterslider custom capabilities
80
+ Master_Slider::assign_custom_caps();
81
+ // Inject default styles and effects
82
+ Master_Slider::set_default_options();
83
+
84
+
85
+ // Initial tasks on admin init
86
+ add_action( 'admin_init', array( $this, 'admin_init') );
87
+
88
+ // Load admin Stylesheet and JavaScript.
89
+ add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_admin_scripts') );
90
+
91
+ // Add some essential content in admin page header
92
+ add_action( 'admin_head', array( $this, 'admin_header' ), 9 );
93
+
94
+ // Add the options page and menu item.
95
+ add_action( 'admin_menu', array( $this, 'add_plugin_admin_menu' ) );
96
+
97
+ // Add an action link pointing to the setting page.
98
+ add_filter( 'plugin_action_links_'. MSWP_AVERTA_BASE_NAME, array( $this, 'add_action_links' ) );
99
+
100
+ // Add an action link on plugin row meta in plugins page
101
+ add_filter( 'plugin_row_meta', array( $this, 'plugin_row_meta' ), 10, 4 );
102
+
103
+ // Admin init action
104
+ do_action( 'masterslider_admin_init' );
105
+ }
106
+
107
+
108
+ /**
109
+ * Triggers on admin init
110
+ *
111
+ * @return void
112
+ */
113
+ public function admin_init(){
114
+
115
+ $this->after_plugin_update();
116
+ }
117
+
118
+
119
+ /**
120
+ * Regenerate and cache custom css codes for all slider after plugin update
121
+ *
122
+ * @return bool TRUE on success, FALSE otherwise
123
+ */
124
+ public function after_plugin_update (){
125
+
126
+ if( get_option( 'masterslider_lite_plugin_version', '0' ) == MSWP_AVERTA_VERSION )
127
+ return false;
128
+
129
+ msp_save_custom_styles();
130
+ // msp_flush_all_sliders_cache(); 2.0.0
131
+ update_option( 'masterslider_lite_plugin_version', MSWP_AVERTA_VERSION );
132
+ do_action( 'masterslider_after_plugin_updated' );
133
+
134
+ return true;
135
+ }
136
+
137
+
138
+ /**
139
+ * Return an instance of this class.
140
+ *
141
+ * @since 1.0.0
142
+ *
143
+ * @return object A single instance of this class.
144
+ */
145
+ public static function get_instance() {
146
+
147
+ if( apply_filters( 'masterslider_access_only_for_super_admins' , 0 ) && ! is_super_admin() ) {
148
+ return;
149
+ }
150
+
151
+ // If the single instance hasn't been set, set it now.
152
+ if ( null == self::$instance ) {
153
+ self::$instance = new self;
154
+ }
155
+
156
+ return self::$instance;
157
+ }
158
+
159
+
160
+ /**
161
+ * Register and enqueue admin-specific JavaScript & Stylesheet.
162
+ *
163
+ * @since 1.0.0
164
+ *
165
+ * @return null Return early if no settings page is registered.
166
+ */
167
+ public function enqueue_admin_scripts() {
168
+
169
+ $admin_assets = new MSP_Admin_Assets();
170
+ $admin_assets->enqueue_global_assets();
171
+
172
+ if ( ! isset( $this->sliders_screen_hook_suffix ) )
173
+ return;
174
+
175
+ // load masterslider spesific assets only on it's admin page
176
+ $screen = get_current_screen();
177
+ if ( $this->sliders_screen_hook_suffix == $screen->id ) {
178
+
179
+ $admin_assets->enqueue_panel_assets();
180
+ }
181
+
182
+ }
183
+
184
+
185
+ /**
186
+ * Print essential content in admin page header
187
+ *
188
+ * @since 1.0.0
189
+ *
190
+ * @return void
191
+ */
192
+ public function admin_header() {
193
+
194
+ if ( ! isset( $this->sliders_screen_hook_suffix ) ) {
195
+ return;
196
+ }
197
+
198
+ $screen = get_current_screen();
199
+ if ( $this->sliders_screen_hook_suffix == $screen->id ) {
200
+
201
+ if ( isset( $_REQUEST['slider_id'] ) ) {
202
+
203
+ $slider_id = $_REQUEST['slider_id'];
204
+ global $mspdb;
205
+ $custom_fonts = $mspdb->get_slider_field_val( $slider_id, 'custom_fonts' );
206
+
207
+ if ( ! empty( $custom_fonts ) )
208
+ printf( "<link rel='stylesheet' id='masterslider-admin-fonts' href='http://fonts.googleapis.com/css?family=%s' type='text/css' />\n", $custom_fonts );
209
+ }
210
+ }
211
+ }
212
+
213
+
214
+ /**
215
+ * Register the administration menu for this plugin into the WordPress Dashboard menu.
216
+ *
217
+ * @since 1.0.0
218
+ */
219
+ public function add_plugin_admin_menu() {
220
+
221
+ $ms_page_title = apply_filters( 'masterslider_admin_page_title', __( 'Master Sliders', 'master-slider' ) );
222
+ $ms_menu_title = apply_filters( 'masterslider_admin_menu_title', __( 'Master Slider' , 'master-slider' ) );
223
+
224
+ // Add a top-level menu for master slider
225
+ $this->sliders_screen_hook_suffix = add_menu_page(
226
+ $ms_page_title,
227
+ $ms_menu_title,
228
+ apply_filters( 'masterslider_access_capability', 'access_masterslider' ),
229
+ MSWP_SLUG,
230
+ array( $this, 'display_master_slider_panel_page' )
231
+ );
232
+
233
+ }
234
+
235
+
236
+ /**
237
+ * Render the panel page for this plugin.
238
+ *
239
+ * @since 1.0.0
240
+ */
241
+ public function display_master_slider_panel_page() {
242
+ include_once( 'views/index.php' );
243
+ }
244
+
245
+
246
+ /**
247
+ * Add settings action link to the plugins page.
248
+ *
249
+ * @since 1.2.0
250
+ */
251
+ public function add_action_links( $links ) {
252
+
253
+ $links['settings'] = '<a href="' . admin_url( 'admin.php?page=' . MSWP_SLUG . '-setting' ) . '">' . __( 'Settings', 'master-slider' ) . '</a>';
254
+ $links['go_pro'] = '<a href="http://avt.li/mslgo">' . __( 'Go Pro', 'master-slider' ) . '</a>';
255
+
256
+ return $links;
257
+ }
258
+
259
+
260
+ /**
261
+ * Add extra action link to the plugin meta on plugins page.
262
+ *
263
+ * @since 1.8.0
264
+ */
265
+ public function plugin_row_meta( $plugin_meta, $plugin_file, $plugin_data, $status ){
266
+ if( $plugin_file == MSWP_AVERTA_BASE_NAME ) { }
267
+ return $plugin_meta;
268
+ }
269
+
270
+
271
  }
272
 
273
  return Master_Slider_Admin::get_instance();
admin/includes/classes/class-msp-admin-ajax.php CHANGED
@@ -4,150 +4,150 @@
4
  *
5
  */
6
  class MSP_Admin_Ajax {
7
-
8
-
9
-
10
- function __construct () {
11
-
12
- // get and save data on ajax data post
13
- add_action( 'wp_ajax_msp_panel_handler' , array( $this, 'save_panel_ajax' ) );
14
- add_action( 'wp_ajax_msp_create_new_handler', array( $this, 'create_new_slider' ) );
15
- }
16
-
17
-
18
-
19
- /**
20
- * Save ajax handler for main panel data
21
- *
22
- * @since 1.0.0
23
- */
24
- public function save_panel_ajax() {
25
-
26
- header( "Content-Type: application/json" );
27
-
28
- // verify nonce
29
- if ( ! isset( $_POST['nonce'] ) || ! wp_verify_nonce( $_POST['nonce'], "msp_panel") ) {
30
- echo json_encode( array( 'success' => false, 'message' => __("Authorization failed!", MSWP_TEXT_DOMAIN ) ) );
31
- exit();
32
- }
33
-
34
- // ignore the request if the current user doesn't have sufficient permissions
35
- if ( ! current_user_can( 'publish_masterslider' ) ) {
36
- echo json_encode( array( 'success' => false,
37
- 'message' => apply_filters( 'masterslider_insufficient_permissions_to_publish_message', __( "Sorry, You don't have enough permission to publish slider!", MSWP_TEXT_DOMAIN ) )
38
- )
39
- );
40
- exit();
41
- }
42
-
43
- /////////////////////////////////////////////////////////////////////////////////////////
44
-
45
- // Get the slider id
46
- $slider_id = isset( $_REQUEST['slider_id'] ) ? $_REQUEST['slider_id'] : '';
47
-
48
- if ( empty( $slider_id ) ) {
49
- echo json_encode( array( 'success' => false, 'type' => 'save' , 'message' => __( "Slider id is not defined.", MSWP_TEXT_DOMAIN ) ) );
50
- exit;
51
- }
52
-
53
- // get the slider type
54
- $slider_type = isset( $_REQUEST['slider_type'] ) ? $_REQUEST['slider_type'] : 'custom';
55
-
56
- // get panel data
57
- $msp_data = isset( $_REQUEST['msp_data'] ) ? $_REQUEST['msp_data'] : NULL;
58
-
59
-
60
- // get parse and database tools
61
- global $mspdb;
62
-
63
- // load and get parser and start parsing data
64
- $parser = msp_get_parser();
65
- $parser->set_data( $msp_data, $slider_id );
66
-
67
- // get required parsed data
68
- $slider_setting = $parser->get_slider_setting();
69
- $slides = $parser->get_slides();
70
- $slider_custom_styles = $parser->get_styles();
71
-
72
- $fields = array(
73
- 'title' => $slider_setting[ 'title' ],
74
- 'type' => $slider_setting[ 'slider_type' ],
75
- 'slides_num' => count( $slides ),
76
- 'params' => $msp_data,
77
- 'custom_styles' => $slider_custom_styles,
78
- 'custom_fonts' => $slider_setting[ 'gfonts' ],
79
- 'status' => 'published'
80
- );
81
-
82
- // store slider data in database
83
- $is_saved = $mspdb->update_slider( $slider_id, $fields );
84
-
85
- msp_save_custom_styles();
86
-
87
-
88
- // flush slider cache if slider cache is enabled
89
- msp_flush_slider_cache( $slider_id );
90
-
91
-
92
- // create and output the response
93
- if( isset( $is_saved ) )
94
- $response = json_encode( array( 'success' => true, 'type' => 'save' , 'message' => __( "Saved Successfully.", MSWP_TEXT_DOMAIN ) ) );
95
- else
96
- $response = json_encode( array( 'success' => true, 'type' => 'save' , 'message' => __( "No Data Recieved." , MSWP_TEXT_DOMAIN ) ) );
97
-
98
- echo $response;
99
-
100
- exit;// IMPORTANT
101
- }
102
-
103
-
104
-
105
- /**
106
- * Create new slider by type
107
- *
108
- * @since 1.0.0
109
- */
110
- public function create_new_slider() {
111
-
112
- header( "Content-Type: application/json" );
113
-
114
- // verify nonce
115
- if ( ! isset( $_POST['nonce'] ) || ! wp_verify_nonce( $_POST['nonce'], "msp_panel") ) {
116
- echo json_encode( array( 'success' => false, 'message' => __("Authorization failed!", MSWP_TEXT_DOMAIN ) ) );
117
- exit();
118
- }
119
-
120
- // ignore the request if the current user doesn't have sufficient permissions
121
- if ( ! current_user_can( 'create_masterslider' ) && ! current_user_can( 'publish_masterslider' ) ) {
122
- echo json_encode( array( 'success' => false,
123
- 'message' => apply_filters( 'masterslider_create_slider_permissions_message', __( "Sorry, You don't have enough permission to create slider!", MSWP_TEXT_DOMAIN ) )
124
- )
125
- );
126
- exit();
127
- }
128
-
129
-
130
- /////////////////////////////////////////////////////////////////////////////////////////
131
-
132
- // Get the slider id
133
- $slider_type = isset( $_REQUEST['slider_type'] ) ? $_REQUEST['slider_type'] : '';
134
-
135
-
136
- // Get new slider id
137
- global $mspdb;
138
- $slider_id = $mspdb->add_slider( array( 'status' => 'draft', 'type' => $slider_type ) );
139
-
140
-
141
- // create and output the response
142
- if( false !== $slider_id )
143
- $response = json_encode( array( 'success' => true, 'slider_id' => $slider_id , 'redirect' => admin_url( 'admin.php?page='.MSWP_SLUG.'&action=edit&slider_id='.$slider_id.'&slider_type='.$slider_type ), 'message' => __( "Slider Created Successfully.", MSWP_TEXT_DOMAIN ) ) );
144
- else
145
- $response = json_encode( array( 'success' => true, 'slider_id' => '' , 'redirect' => '', message => __( "Slider can not be created." , MSWP_TEXT_DOMAIN ) ) );
146
-
147
- echo $response;
148
-
149
- exit;// IMPORTANT
150
- }
151
 
152
 
153
  }
4
  *
5
  */
6
  class MSP_Admin_Ajax {
7
+
8
+
9
+
10
+ function __construct () {
11
+
12
+ // get and save data on ajax data post
13
+ add_action( 'wp_ajax_msp_panel_handler' , array( $this, 'save_panel_ajax' ) );
14
+ add_action( 'wp_ajax_msp_create_new_handler', array( $this, 'create_new_slider' ) );
15
+ }
16
+
17
+
18
+
19
+ /**
20
+ * Save ajax handler for main panel data
21
+ *
22
+ * @since 1.0.0
23
+ */
24
+ public function save_panel_ajax() {
25
+
26
+ header( "Content-Type: application/json" );
27
+
28
+ // verify nonce
29
+ if ( ! isset( $_POST['nonce'] ) || ! wp_verify_nonce( $_POST['nonce'], "msp_panel") ) {
30
+ echo json_encode( array( 'success' => false, 'message' => __("Authorization failed!", 'master-slider' ) ) );
31
+ exit();
32
+ }
33
+
34
+ // ignore the request if the current user doesn't have sufficient permissions
35
+ if ( ! current_user_can( 'publish_masterslider' ) ) {
36
+ echo json_encode( array( 'success' => false,
37
+ 'message' => apply_filters( 'masterslider_insufficient_permissions_to_publish_message', __( "Sorry, You don't have enough permission to publish slider!", 'master-slider' ) )
38
+ )
39
+ );
40
+ exit();
41
+ }
42
+
43
+ /////////////////////////////////////////////////////////////////////////////////////////
44
+
45
+ // Get the slider id
46
+ $slider_id = isset( $_REQUEST['slider_id'] ) ? $_REQUEST['slider_id'] : '';
47
+
48
+ if ( empty( $slider_id ) ) {
49
+ echo json_encode( array( 'success' => false, 'type' => 'save' , 'message' => __( "Slider id is not defined.", 'master-slider' ) ) );
50
+ exit;
51
+ }
52
+
53
+ // get the slider type
54
+ $slider_type = isset( $_REQUEST['slider_type'] ) ? $_REQUEST['slider_type'] : 'custom';
55
+
56
+ // get panel data
57
+ $msp_data = isset( $_REQUEST['msp_data'] ) ? $_REQUEST['msp_data'] : NULL;
58
+
59
+
60
+ // get parse and database tools
61
+ global $mspdb;
62
+
63
+ // load and get parser and start parsing data
64
+ $parser = msp_get_parser();
65
+ $parser->set_data( $msp_data, $slider_id );
66
+
67
+ // get required parsed data
68
+ $slider_setting = $parser->get_slider_setting();
69
+ $slides = $parser->get_slides();
70
+ $slider_custom_styles = $parser->get_styles();
71
+
72
+ $fields = array(
73
+ 'title' => $slider_setting[ 'title' ],
74
+ 'type' => $slider_setting[ 'slider_type' ],
75
+ 'slides_num' => count( $slides ),
76
+ 'params' => $msp_data,
77
+ 'custom_styles' => $slider_custom_styles,
78
+ 'custom_fonts' => $slider_setting[ 'gfonts' ],
79
+ 'status' => 'published'
80
+ );
81
+
82
+ // store slider data in database
83
+ $is_saved = $mspdb->update_slider( $slider_id, $fields );
84
+
85
+ msp_save_custom_styles();
86
+
87
+
88
+ // flush slider cache if slider cache is enabled
89
+ msp_flush_slider_cache( $slider_id );
90
+
91
+
92
+ // create and output the response
93
+ if( isset( $is_saved ) )
94
+ $response = json_encode( array( 'success' => true, 'type' => 'save' , 'message' => __( "Saved Successfully.", 'master-slider' ) ) );
95
+ else
96
+ $response = json_encode( array( 'success' => true, 'type' => 'save' , 'message' => __( "No Data Recieved." , 'master-slider' ) ) );
97
+
98
+ echo $response;
99
+
100
+ exit;// IMPORTANT
101
+ }
102
+
103
+
104
+
105
+ /**
106
+ * Create new slider by type
107
+ *
108
+ * @since 1.0.0
109
+ */
110
+ public function create_new_slider() {
111
+
112
+ header( "Content-Type: application/json" );
113
+
114
+ // verify nonce
115
+ if ( ! isset( $_POST['nonce'] ) || ! wp_verify_nonce( $_POST['nonce'], "msp_panel") ) {
116
+ echo json_encode( array( 'success' => false, 'message' => __("Authorization failed!", 'master-slider' ) ) );
117
+ exit();
118
+ }
119
+
120
+ // ignore the request if the current user doesn't have sufficient permissions
121
+ if ( ! current_user_can( 'create_masterslider' ) && ! current_user_can( 'publish_masterslider' ) ) {
122
+ echo json_encode( array( 'success' => false,
123
+ 'message' => apply_filters( 'masterslider_create_slider_permissions_message', __( "Sorry, You don't have enough permission to create slider!", 'master-slider' ) )
124
+ )
125
+ );
126
+ exit();
127
+ }
128
+
129
+
130
+ /////////////////////////////////////////////////////////////////////////////////////////
131
+
132
+ // Get the slider id
133
+ $slider_type = isset( $_REQUEST['slider_type'] ) ? $_REQUEST['slider_type'] : '';
134
+
135
+
136
+ // Get new slider id
137
+ global $mspdb;
138
+ $slider_id = $mspdb->add_slider( array( 'status' => 'draft', 'type' => $slider_type ) );
139
+
140
+
141
+ // create and output the response
142
+ if( false !== $slider_id )
143
+ $response = json_encode( array( 'success' => true, 'slider_id' => $slider_id , 'redirect' => admin_url( 'admin.php?page='.MSWP_SLUG.'&action=edit&slider_id='.$slider_id.'&slider_type='.$slider_type ), 'message' => __( "Slider Created Successfully.", 'master-slider' ) ) );
144
+ else
145
+ $response = json_encode( array( 'success' => true, 'slider_id' => '' , 'redirect' => '', message => __( "Slider can not be created." , 'master-slider' ) ) );
146
+
147
+ echo $response;
148
+
149
+ exit;// IMPORTANT
150
+ }
151
 
152
 
153
  }
admin/includes/classes/class-msp-admin-assets.php CHANGED
@@ -13,424 +13,424 @@
13
  * Class to load and print master slider panel scripts
14
  */
15
  class MSP_Admin_Assets {
16
-
17
-
18
- /**
19
- * __construct
20
- */
21
- function __construct() {
22
-
23
- }
24
-
25
-
26
- public function enqueue_panel_assets (){
27
-
28
- // general assets
29
- $this->load_general_styles();
30
- $this->load_panel_styles();
31
-
32
- $this->add_general_variables();
33
- $this->add_general_script_localizations();
34
- $this->load_general_scripts();
35
-
36
- // panel spesific assets
37
- if( isset( $_REQUEST['action'] ) && in_array( $_REQUEST['action'], array( 'edit', 'add' ) ) ) {
38
-
39
- $this->load_panel_scripts();
40
- $this->add_panel_variables();
41
- $this->add_panel_script_localizations();
42
- }
43
-
44
- }
45
-
46
-
47
- public function enqueue_global_assets(){
48
-
49
- $this->load_global_styles();
50
- $this->add_global_variables();
51
- }
52
-
53
-
54
- public function load_global_styles(){
55
- // load global style - loads on all admin area
56
- wp_enqueue_style( MSWP_SLUG .'-global-styles', MSWP_AVERTA_ADMIN_URL . '/assets/css/global.css', array(), MSWP_AVERTA_VERSION );
57
- }
58
-
59
-
60
- public function add_global_variables(){
61
- // load global variables about Master Slider
62
- wp_localize_script( 'jquery', '__MS_GLOBAL', array(
63
- 'ajax_url' => admin_url( 'admin-ajax.php' ),
64
- 'admin_url' => admin_url(),
65
- 'menu_page_url' => menu_page_url( MSWP_SLUG, false ),
66
- 'plugin_url' => MSWP_AVERTA_URL,
67
- 'plugin_name' => esc_js( __( 'Master Slider', MSWP_TEXT_DOMAIN ) )
68
- ));
69
- }
70
-
71
-
72
- /**
73
- * Load scripts for master slider admin panel
74
- * @return void
75
- */
76
- public function load_panel_scripts() {
77
-
78
- // Load wp media uploader
79
- wp_enqueue_media();
80
-
81
- // Master Slider Panel Scripts
82
- wp_enqueue_script( MSWP_SLUG . '-handlebars' , MSWP_AVERTA_ADMIN_URL . '/views/slider-panel/js/handlebars.min.js', array( 'jquery' ), MSWP_AVERTA_VERSION, true );
83
- wp_enqueue_script( MSWP_SLUG . '-ember-js' , MSWP_AVERTA_ADMIN_URL . '/views/slider-panel/js/ember.min.js', array( 'jquery' ), MSWP_AVERTA_VERSION, true );
84
- wp_enqueue_script( MSWP_SLUG . '-ember-model' , MSWP_AVERTA_ADMIN_URL . '/views/slider-panel/js/ember-model.min.js', array( 'jquery' ), MSWP_AVERTA_VERSION, true );
85
- wp_enqueue_script( MSWP_SLUG . '-msp-required' , MSWP_AVERTA_ADMIN_URL . '/views/slider-panel/js/msp.required.js',
86
- array(
87
- 'jquery', 'jquery-ui-core', 'jquery-ui-dialog', 'jquery-ui-draggable',
88
- 'jquery-ui-sortable', 'jquery-ui-slider', 'jquery-ui-spinner'
89
- ),
90
- MSWP_AVERTA_VERSION, true
91
- );
92
-
93
- wp_enqueue_script( MSWP_SLUG . '-masterslider-wp', MSWP_AVERTA_ADMIN_URL . '/views/slider-panel/js/masterslider.wp.js', array( MSWP_SLUG . '-msp-required' ), MSWP_AVERTA_VERSION, true );
94
- }
95
-
96
-
97
- /**
98
- * Print required variable for master slider panel
99
- */
100
- public function add_panel_variables() {
101
-
102
- $slider_skins = array(
103
- array( 'class' => 'ms-skin-default', 'label' => 'Default' ),
104
- array( 'class' => 'ms-skin-light-2', 'label' => 'Light 2' ),
105
- array( 'class' => 'ms-skin-light-3', 'label' => 'Light 3' ),
106
- array( 'class' => 'ms-skin-light-4', 'label' => 'Light 4' ),
107
- array( 'class' => 'ms-skin-light-5', 'label' => 'Light 5' ),
108
- array( 'class' => 'ms-skin-light-6', 'label' => 'Light 6' ),
109
- array( 'class' => 'ms-skin-light-6 round-skin', 'label' => 'Light 6 Round' ),
110
-
111
- array( 'class' => 'ms-skin-contrast', 'label' => 'Contrast' ),
112
- array( 'class' => 'ms-skin-black-1' , 'label' => 'Black 1' ),
113
- array( 'class' => 'ms-skin-black-2' , 'label' => 'Black 2' ),
114
- array( 'class' => 'ms-skin-black-2 round-skin', 'label' => 'Black 2 Round' ),
115
- array( 'class' => 'ms-skin-metro' , 'label' => 'Metro' )
116
- );
117
-
118
- wp_localize_script( 'jquery', '__MSP_SKINS', apply_filters( 'masterslider_skins', $slider_skins ) );
119
-
120
- // get and print slider id
121
- if ( isset( $_REQUEST['slider_id'] ) ) {
122
-
123
- $slider_id = $_REQUEST['slider_id'];
124
-
125
- } else {
126
- global $mspdb;
127
- $slider_id = 0;
128
-
129
- if ( isset( $_REQUEST['action'] ) && 'add' == $_REQUEST['action'] ) {
130
- $slider_id = $mspdb->add_slider( array( 'status' => 'draft' ) );
131
- wp_localize_script( 'jquery', '__MSP_SLIDER_ID', (string) $slider_id );
132
- }
133
- }
134
-
135
- // Get and print panel data
136
- if ( $slider_id ) {
137
-
138
- global $mspdb;
139
- $slider_data = $mspdb->get_slider( $slider_id );
140
-
141
- $slider_type = isset( $slider_data[ 'type' ] ) ? $slider_data[ 'type' ] : 'custom';
142
- $slider_type = empty( $slider_type ) ? 'custom' : $slider_type;
143
-
144
- $msp_data = isset( $slider_data[ 'params' ] ) ? $slider_data[ 'params' ] : NULL;
145
- $msp_data = empty( $slider_data[ 'params' ] ) ? NULL : $slider_data[ 'params' ];
146
-
147
- $msp_preset_style = msp_get_option( 'preset_style' , NULL );
148
- $msp_preset_effect = msp_get_option( 'preset_effect', NULL );
149
- $msp_buttons_style = msp_get_option( 'buttons_style', NULL );
150
-
151
- $msp_preset_style = empty( $msp_preset_style ) ? NULL : $msp_preset_style;
152
- $msp_preset_effect = empty( $msp_preset_effect ) ? NULL : $msp_preset_effect;
153
- $msp_buttons_style = empty( $msp_buttons_style ) ? NULL : $msp_buttons_style;
154
-
155
- wp_localize_script( 'jquery', '__MSP_DATA' , $msp_data );
156
- wp_localize_script( 'jquery', '__MSP_PRESET_STYLE' , $msp_preset_style );
157
- wp_localize_script( 'jquery', '__MSP_PRESET_EFFECT' , $msp_preset_effect );
158
- wp_localize_script( 'jquery', '__MSP_TYPE' , $slider_type );
159
- wp_localize_script( 'jquery', '__MSP_PRESET_BUTTON' , $msp_buttons_style );
160
- }
161
-
162
-
163
- // define panel directory path
164
- wp_localize_script( 'jquery', '__MSP_PATH', MSWP_AVERTA_ADMIN_URL . '/views/slider-panel/' );
165
-
166
- $slider_panel_default_setting = array(
167
-
168
- 'width' => 1000,
169
- 'height' => 500,
170
-
171
- 'autoCrop' => false,
172
- 'autoplay' => false,
173
- 'layout' => 'boxed',
174
- 'autoHeight' => false,
175
- 'transition' => 'basic',
176
- 'speed' => 20,
177
- 'className' => '',
178
-
179
-
180
- 'start' => 1,
181
- 'space' => 0,
182
-
183
- 'grabCursor' => true,
184
- 'swipe' => true,
185
-
186
- 'wheel' => false,
187
- 'mouse' => true,
188
-
189
- 'loop' => false,
190
- 'shuffle' => false,
191
- 'preload' => '-1',
192
-
193
- 'overPause' => true,
194
- 'endPause' => false,
195
-
196
- 'hideLayers' => false,
197
- 'dir' => 'h',
198
- 'parallaxMode' => 'swipe',
199
- 'centerControls'=> true,
200
- 'instantShowLayers' => false,
201
-
202
- 'skin' => 'ms-skin-default',
203
- 'duration' => 3,
204
- 'slideFillMode' => 'fill',
205
- 'sliderVideoFillMode' => 'fill',
206
- 'slideVideoLoop'=> true,
207
- 'slideVideoMute'=> true,
208
- 'slideVideoAutopause'=> false,
209
- 'layerContent' => 'Lorem Ipsum'
210
- );
211
-
212
- wp_localize_script( 'jquery', '__MSP_DEF_OPTIONS', apply_filters( 'masterslider_panel_default_setting', $slider_panel_default_setting ) );
213
-
214
- do_action( 'masterslider_admin_add_panel_variables', $slider_type );
215
- }
216
-
217
-
218
-
219
-
220
- /**
221
- * Print required variable for master slider admin page
222
- */
223
- public function add_general_variables() {
224
-
225
- $uploads = wp_upload_dir();
226
-
227
- // define admin ajax address and master slider page
228
- wp_localize_script( 'jquery', '__MS', array(
229
- 'ajax_url' => admin_url( 'admin-ajax.php' ),
230
- 'msp_menu_page' => menu_page_url( MSWP_SLUG, false ),
231
- 'msp_plugin_url' => MSWP_AVERTA_URL,
232
- 'upload_dir' => $uploads['baseurl'],
233
- 'importer' => admin_url( 'admin.php?import=masterslider-importer' )
234
- ));
235
- }
236
-
237
-
238
- /**
239
- * Add script localizations
240
- */
241
- public function add_panel_script_localizations() {
242
-
243
- wp_localize_script( 'jquery', '__MSP_LAN', apply_filters( 'masterslider_admin_localize', array(
244
-
245
- // CallbacksController.js
246
- 'cb_001' => __( 'On slide change start', MSWP_TEXT_DOMAIN ),
247
- 'cb_002' => __( 'On slide change end', MSWP_TEXT_DOMAIN ),
248
- 'cb_003' => __( 'On slide timer change', MSWP_TEXT_DOMAIN ),
249
- 'cb_004' => __( 'On slider resize', MSWP_TEXT_DOMAIN ),
250
- 'cb_005' => __( 'On Youtube/Vimeo video play', MSWP_TEXT_DOMAIN ),
251
- 'cb_006' => __( 'On Youtube/Vimeo video close', MSWP_TEXT_DOMAIN ),
252
- 'cb_007' => __( 'On swipe start', MSWP_TEXT_DOMAIN ),
253
- 'cb_008' => __( 'On swipe move', MSWP_TEXT_DOMAIN ),
254
- 'cb_009' => __( 'On swipe end', MSWP_TEXT_DOMAIN ),
255
- 'cb_010' => __( 'Are you sure you want to remove "%s" callback?', MSWP_TEXT_DOMAIN ),
256
- 'cb_011' => __( 'On slider Init', MSWP_TEXT_DOMAIN ),
257
-
258
- // ControlsController.js
259
- 'cc_001' => __( 'Arrows', MSWP_TEXT_DOMAIN ),
260
- 'cc_002' => __( 'Line Timer', MSWP_TEXT_DOMAIN ),
261
- 'cc_003' => __( 'Bullets', MSWP_TEXT_DOMAIN ),
262
- 'cc_004' => __( 'Circle Timer', MSWP_TEXT_DOMAIN ),
263
- 'cc_005' => __( 'Scrollbar', MSWP_TEXT_DOMAIN ),
264
- 'cc_006' => __( 'Slide Info', MSWP_TEXT_DOMAIN ),
265
- 'cc_007' => __( 'Thumblist/Tabs', MSWP_TEXT_DOMAIN ),
266
-
267
- // EffectsController
268
- 'ec_001' => __( 'Please enter name for new preset effect', MSWP_TEXT_DOMAIN ),
269
- 'ec_002' => __( 'Custom effect', MSWP_TEXT_DOMAIN ),
270
-
271
- // LayersController.js
272
- 'lc_001' => __( 'Text Layer', MSWP_TEXT_DOMAIN ),
273
- 'lc_002' => __( 'Image Layer', MSWP_TEXT_DOMAIN ),
274
- 'lc_003' => __( 'Video Layer', MSWP_TEXT_DOMAIN ),
275
- 'lc_004' => __( 'Hotspot', MSWP_TEXT_DOMAIN ),
276
- 'lc_006' => __( 'Button Layer', MSWP_TEXT_DOMAIN ),
277
-
278
- // StylesController.js
279
- 'sc_001' => __( 'Please enter name for new preset style', MSWP_TEXT_DOMAIN ),
280
- 'sc_002' => __( 'Custom style', MSWP_TEXT_DOMAIN ),
281
-
282
- //SliderModel.js
283
- 'sm_001' => __( 'Untitled Slider', MSWP_TEXT_DOMAIN ),
284
-
285
- // EffectEditorView.js
286
- 'ee_001' => __( 'Preset Transitions', MSWP_TEXT_DOMAIN ),
287
- 'ee_002' => __( 'Apply transition', MSWP_TEXT_DOMAIN ),
288
- 'ee_003' => __( 'Save as preset', MSWP_TEXT_DOMAIN ),
289
- 'ee_006' => __( 'Transition Editor', MSWP_TEXT_DOMAIN ),
290
-
291
- // StageView.js
292
- 'sv_001' => __( 'Align to stage :', MSWP_TEXT_DOMAIN ),
293
- 'sv_002' => __( 'Snapping :', MSWP_TEXT_DOMAIN ),
294
- 'sv_003' => __( 'Zoom :', MSWP_TEXT_DOMAIN ),
295
- 'sv_010' => __( 'Layer position origin : ', MSWP_TEXT_DOMAIN ),
296
-
297
- //StyleEditorView.js
298
- 'se_001' => __( 'Apply style', MSWP_TEXT_DOMAIN ),
299
- 'se_002' => __( 'Save as preset', MSWP_TEXT_DOMAIN ),
300
- 'se_003' => __( 'Preset Styles', MSWP_TEXT_DOMAIN ),
301
- 'se_004' => __( 'By deleting preset style it also will be removed from other sliders in your website. Are you sure you want to delete "%s"?', MSWP_TEXT_DOMAIN ),
302
- 'se_006' => __( 'Style Editor', MSWP_TEXT_DOMAIN ),
303
-
304
- //TemplatesView.js
305
- 'tv_001' => __( 'Master Slider Templates', MSWP_TEXT_DOMAIN ),
306
- 'tv_002' => __( 'Changing template will reset all slider controls and will change some slider settings. Continue?', MSWP_TEXT_DOMAIN),
307
- //TimelineView.js
308
- 'tl_001' => __( 'Show/Hide all', MSWP_TEXT_DOMAIN ),
309
- 'tl_002' => __( 'Solo All', MSWP_TEXT_DOMAIN ),
310
- 'tl_003' => __( 'Lock/Unlock all', MSWP_TEXT_DOMAIN ),
311
- 'tl_004' => __( 'Exit preview', MSWP_TEXT_DOMAIN ),
312
- 'tl_005' => __( 'Preview slide', MSWP_TEXT_DOMAIN ),
313
- 'tl_006' => __( 'Show/Hide', MSWP_TEXT_DOMAIN ),
314
- 'tl_007' => __( 'Solo', MSWP_TEXT_DOMAIN ),
315
- 'tl_008' => __( 'Lock/Unlock', MSWP_TEXT_DOMAIN ),
316
- 'tl_009' => __( 'Are you sure you want to remove this layer?', MSWP_TEXT_DOMAIN ),
317
- 'tl_010' => __( 'Start delay :', MSWP_TEXT_DOMAIN ),
318
- 'tl_011' => __( 'Show duration :', MSWP_TEXT_DOMAIN ),
319
- 'tl_012' => __( 'Waiting duration :', MSWP_TEXT_DOMAIN ),
320
- 'tl_013' => __( 'Hide duration :', MSWP_TEXT_DOMAIN ),
321
-
322
- //UIViews.js
323
- 'ui_001' => __( 'Show/Hide slide', MSWP_TEXT_DOMAIN ),
324
- 'ui_002' => __( 'Duplicate slide', MSWP_TEXT_DOMAIN ),
325
- 'ui_003' => __( 'Remove slide', MSWP_TEXT_DOMAIN ),
326
- 'ui_004' => __( 'Are you sure you want to delete this slide?', MSWP_TEXT_DOMAIN ),
327
- 'ui_005' => __( 'Open on the same page', MSWP_TEXT_DOMAIN ),
328
- 'ui_006' => __( 'Open on new page', MSWP_TEXT_DOMAIN ),
329
- 'ui_007' => __( 'Open in parent frame', MSWP_TEXT_DOMAIN ),
330
- 'ui_008' => __( 'Open in main frame', MSWP_TEXT_DOMAIN ),
331
- 'ui_009' => __( 'Fill', MSWP_TEXT_DOMAIN ),
332
- 'ui_010' => __( 'Fit', MSWP_TEXT_DOMAIN ),
333
- 'ui_011' => __( 'Center', MSWP_TEXT_DOMAIN ),
334
- 'ui_012' => __( 'Stretch', MSWP_TEXT_DOMAIN ),
335
- 'ui_013' => __( 'Tile', MSWP_TEXT_DOMAIN ),
336
- 'ui_014' => __( 'None', MSWP_TEXT_DOMAIN ),
337
- 'ui_015' => __( 'Align top', MSWP_TEXT_DOMAIN ),
338
- 'ui_016' => __( 'Align vertical center', MSWP_TEXT_DOMAIN ),
339
- 'ui_017' => __( 'Align bottom', MSWP_TEXT_DOMAIN ),
340
- 'ui_018' => __( 'Align left', MSWP_TEXT_DOMAIN ),
341
- 'ui_019' => __( 'Align horizontal center', MSWP_TEXT_DOMAIN ),
342
- 'ui_020' => __( 'Align right', MSWP_TEXT_DOMAIN ),
343
-
344
- 'ui_030' => __( 'Scroll to an element in page :', MSWP_TEXT_DOMAIN ),
345
- 'ui_031' => __( 'Target element :', MSWP_TEXT_DOMAIN ),
346
-
347
- // ApplicationController.js
348
- 'ap_001' => __( 'Sending data...', MSWP_TEXT_DOMAIN ),
349
- 'ap_002' => __( 'An Error accorded, please try again.', MSWP_TEXT_DOMAIN ),
350
- 'ap_003' => __( 'Data saved successfully.', MSWP_TEXT_DOMAIN ),
351
-
352
- 'flk_001' => __( 'Photo title', MSWP_TEXT_DOMAIN ),
353
- 'flk_002' => __( 'Photo owner name', MSWP_TEXT_DOMAIN ),
354
- 'flk_003' => __( 'Date taken', MSWP_TEXT_DOMAIN ),
355
- 'flk_004' => __( 'Photo description', MSWP_TEXT_DOMAIN ),
356
-
357
- 'fb_001' => __( 'Photo name', MSWP_TEXT_DOMAIN ),
358
- 'fb_002' => __( 'Photo owner name', MSWP_TEXT_DOMAIN ),
359
- 'fb_003' => __( 'Photo link', MSWP_TEXT_DOMAIN ),
360
-
361
- 'ui_021' => __( 'Goto next slide', MSWP_TEXT_DOMAIN ),
362
- 'ui_022' => __( 'Goto previous slide', MSWP_TEXT_DOMAIN ),
363
- 'ui_022' => __( 'Goto slide', MSWP_TEXT_DOMAIN ),
364
- 'ui_023' => __( 'Pause timer', MSWP_TEXT_DOMAIN ),
365
- 'ui_024' => __( 'Resume timer', MSWP_TEXT_DOMAIN ),
366
-
367
- 'be_001' => __( 'Update Button Style', MSWP_TEXT_DOMAIN ),
368
- 'be_002' => __( 'Save As New Button', MSWP_TEXT_DOMAIN ),
369
- 'be_003' => __( 'Are you sure you want to delete this button?', MSWP_TEXT_DOMAIN ),
370
- 'be_004' => __( 'Buttons', MSWP_TEXT_DOMAIN ),
371
- 'be_005' => __( 'Button Editor', MSWP_TEXT_DOMAIN ),
372
- 'be_006' => __( 'By updating a button it will be changed in all of your sliders. Are you sure you want to update this button?', MSWP_TEXT_DOMAIN )
373
-
374
- ) ) );
375
-
376
- }
377
-
378
-
379
-
380
- /**
381
- * Add general script localizations
382
- */
383
- public function add_general_script_localizations() {
384
-
385
- wp_localize_script( 'jquery', '__MSP_GEN_LAN', apply_filters( 'masterslider_admin_general_localize', array(
386
-
387
- 'genl_001' => __( 'The changes you made will be lost if you navigate away from this page. To exit preview mode click on close (X) button.', MSWP_TEXT_DOMAIN ),
388
- 'genl_002' => __( 'Master Slider Preview', MSWP_TEXT_DOMAIN ),
389
- 'genl_003' => __( 'Loading Slider ..', MSWP_TEXT_DOMAIN ),
390
- 'genl_004' => __( 'Creating The Slider ..', MSWP_TEXT_DOMAIN ),
391
- 'genl_005' => __( 'Select a Starter', MSWP_TEXT_DOMAIN ),
392
- 'genl_006' => __( 'No slider is selected to export.', MSWP_TEXT_DOMAIN ),
393
- 'genl_007' => __( 'Import', MSWP_TEXT_DOMAIN )
394
-
395
- ) ) );
396
-
397
- }
398
-
399
-
400
-
401
- /**
402
- * Panel spesific styles
403
- *
404
- * @return void
405
- */
406
- public function load_panel_styles() {
407
-
408
- // Master Slider Panel styles
409
- wp_enqueue_style( MSWP_SLUG .'-reset', MSWP_AVERTA_ADMIN_URL . '/views/slider-panel/css/reset.css', array(), MSWP_AVERTA_VERSION );
410
- wp_enqueue_style( MSWP_SLUG .'-jq-ui', MSWP_AVERTA_ADMIN_URL . '/views/slider-panel/css/jquery-ui-1.10.4.min.css', array(), MSWP_AVERTA_VERSION );
411
- wp_enqueue_style( MSWP_SLUG .'-spectrum', MSWP_AVERTA_ADMIN_URL . '/views/slider-panel/css/spectrum.css', array(), MSWP_AVERTA_VERSION );
412
- wp_enqueue_style( MSWP_SLUG .'-codemirror', MSWP_AVERTA_ADMIN_URL . '/views/slider-panel/css/codemirror.css', array(), MSWP_AVERTA_VERSION );
413
- wp_enqueue_style( MSWP_SLUG .'-jscrollpane', MSWP_AVERTA_ADMIN_URL . '/views/slider-panel/css/jquery.jscrollpane.css', array(), MSWP_AVERTA_VERSION );
414
- wp_enqueue_style( MSWP_SLUG .'-main-style', MSWP_AVERTA_ADMIN_URL . '/views/slider-panel/css/msp-style.css', array(), MSWP_AVERTA_VERSION );
415
- wp_enqueue_style( MSWP_SLUG .'-components', MSWP_AVERTA_ADMIN_URL . '/views/slider-panel/css/msp-components.css', array(), MSWP_AVERTA_VERSION );
416
-
417
- }
418
-
419
- /**
420
- * Master slider general/common styles
421
- *
422
- * @return void
423
- */
424
- public function load_general_styles() {
425
- // gnereal styles for masterslider admin page
426
- wp_enqueue_style( MSWP_SLUG .'-admin-styles', MSWP_AVERTA_ADMIN_URL . '/assets/css/msp-general.css', array(), MSWP_AVERTA_VERSION );
427
- }
428
-
429
-
430
- public function load_general_scripts() {
431
- // disable wp autosave on master slider panel
432
- wp_dequeue_script( 'autosave' );
433
- wp_enqueue_script( MSWP_SLUG .'-admin-scripts', MSWP_AVERTA_ADMIN_URL . '/assets/js/admin.js', array('jquery', 'jquery-ui-core', 'jquery-ui-dialog'), MSWP_AVERTA_VERSION, true );
434
- }
435
 
436
  }
13
  * Class to load and print master slider panel scripts
14
  */
15
  class MSP_Admin_Assets {
16
+
17
+
18
+ /**
19
+ * __construct
20
+ */
21
+ function __construct() {
22
+
23
+ }
24
+
25
+
26
+ public function enqueue_panel_assets (){
27
+
28
+ // general assets
29
+ $this->load_general_styles();
30
+ $this->load_panel_styles();
31
+
32
+ $this->add_general_variables();
33
+ $this->add_general_script_localizations();
34
+ $this->load_general_scripts();
35
+
36
+ // panel spesific assets
37
+ if( isset( $_REQUEST['action'] ) && in_array( $_REQUEST['action'], array( 'edit', 'add' ) ) ) {
38
+
39
+ $this->load_panel_scripts();
40
+ $this->add_panel_variables();
41
+ $this->add_panel_script_localizations();
42
+ }
43
+
44
+ }
45
+
46
+
47
+ public function enqueue_global_assets(){
48
+
49
+ $this->load_global_styles();
50
+ $this->add_global_variables();
51
+ }
52
+
53
+
54
+ public function load_global_styles(){
55
+ // load global style - loads on all admin area
56
+ wp_enqueue_style( MSWP_SLUG .'-global-styles', MSWP_AVERTA_ADMIN_URL . '/assets/css/global.css', array(), MSWP_AVERTA_VERSION );
57
+ }
58
+
59
+
60
+ public function add_global_variables(){
61
+ // load global variables about Master Slider
62
+ wp_localize_script( 'jquery', '__MS_GLOBAL', array(
63
+ 'ajax_url' => admin_url( 'admin-ajax.php' ),
64
+ 'admin_url' => admin_url(),
65
+ 'menu_page_url' => menu_page_url( MSWP_SLUG, false ),
66
+ 'plugin_url' => MSWP_AVERTA_URL,
67
+ 'plugin_name' => esc_js( __( 'Master Slider', 'master-slider' ) )
68
+ ));
69
+ }
70
+
71
+
72
+ /**
73
+ * Load scripts for master slider admin panel
74
+ * @return void
75
+ */
76
+ public function load_panel_scripts() {
77
+
78
+ // Load wp media uploader
79
+ wp_enqueue_media();
80
+
81
+ // Master Slider Panel Scripts
82
+ wp_enqueue_script( MSWP_SLUG . '-handlebars' , MSWP_AVERTA_ADMIN_URL . '/views/slider-panel/js/handlebars.min.js', array( 'jquery' ), MSWP_AVERTA_VERSION, true );
83
+ wp_enqueue_script( MSWP_SLUG . '-ember-js' , MSWP_AVERTA_ADMIN_URL . '/views/slider-panel/js/ember.min.js', array( 'jquery' ), MSWP_AVERTA_VERSION, true );
84
+ wp_enqueue_script( MSWP_SLUG . '-ember-model' , MSWP_AVERTA_ADMIN_URL . '/views/slider-panel/js/ember-model.min.js', array( 'jquery' ), MSWP_AVERTA_VERSION, true );
85
+ wp_enqueue_script( MSWP_SLUG . '-msp-required' , MSWP_AVERTA_ADMIN_URL . '/views/slider-panel/js/msp.required.js',
86
+ array(
87
+ 'jquery', 'jquery-ui-core', 'jquery-ui-dialog', 'jquery-ui-draggable',
88
+ 'jquery-ui-sortable', 'jquery-ui-slider', 'jquery-ui-spinner'
89
+ ),
90
+ MSWP_AVERTA_VERSION, true
91
+ );
92
+
93
+ wp_enqueue_script( MSWP_SLUG . '-masterslider-wp', MSWP_AVERTA_ADMIN_URL . '/views/slider-panel/js/masterslider.wp.js', array( MSWP_SLUG . '-msp-required' ), MSWP_AVERTA_VERSION, true );
94
+ }
95
+
96
+
97
+ /**
98
+ * Print required variable for master slider panel
99
+ */
100
+ public function add_panel_variables() {
101
+
102
+ $slider_skins = array(
103
+ array( 'class' => 'ms-skin-default', 'label' => 'Default' ),
104
+ array( 'class' => 'ms-skin-light-2', 'label' => 'Light 2' ),
105
+ array( 'class' => 'ms-skin-light-3', 'label' => 'Light 3' ),
106
+ array( 'class' => 'ms-skin-light-4', 'label' => 'Light 4' ),
107
+ array( 'class' => 'ms-skin-light-5', 'label' => 'Light 5' ),
108
+ array( 'class' => 'ms-skin-light-6', 'label' => 'Light 6' ),
109
+ array( 'class' => 'ms-skin-light-6 round-skin', 'label' => 'Light 6 Round' ),
110
+
111
+ array( 'class' => 'ms-skin-contrast', 'label' => 'Contrast' ),
112
+ array( 'class' => 'ms-skin-black-1' , 'label' => 'Black 1' ),
113
+ array( 'class' => 'ms-skin-black-2' , 'label' => 'Black 2' ),
114
+ array( 'class' => 'ms-skin-black-2 round-skin', 'label' => 'Black 2 Round' ),
115
+ array( 'class' => 'ms-skin-metro' , 'label' => 'Metro' )
116
+ );
117
+
118
+ wp_localize_script( 'jquery', '__MSP_SKINS', apply_filters( 'masterslider_skins', $slider_skins ) );
119
+
120
+ // get and print slider id
121
+ if ( isset( $_REQUEST['slider_id'] ) ) {
122
+
123
+ $slider_id = $_REQUEST['slider_id'];
124
+
125
+ } else {
126
+ global $mspdb;
127
+ $slider_id = 0;
128
+
129
+ if ( isset( $_REQUEST['action'] ) && 'add' == $_REQUEST['action'] ) {
130
+ $slider_id = $mspdb->add_slider( array( 'status' => 'draft' ) );
131
+ wp_localize_script( 'jquery', '__MSP_SLIDER_ID', (string) $slider_id );
132
+ }
133
+ }
134
+
135
+ // Get and print panel data
136
+ if ( $slider_id ) {
137
+
138
+ global $mspdb;
139
+ $slider_data = $mspdb->get_slider( $slider_id );
140
+
141
+ $slider_type = isset( $slider_data[ 'type' ] ) ? $slider_data[ 'type' ] : 'custom';
142
+ $slider_type = empty( $slider_type ) ? 'custom' : $slider_type;
143
+
144
+ $msp_data = isset( $slider_data[ 'params' ] ) ? $slider_data[ 'params' ] : NULL;
145
+ $msp_data = empty( $slider_data[ 'params' ] ) ? NULL : $slider_data[ 'params' ];
146
+
147
+ $msp_preset_style = msp_get_option( 'preset_style' , NULL );
148
+ $msp_preset_effect = msp_get_option( 'preset_effect', NULL );
149
+ $msp_buttons_style = msp_get_option( 'buttons_style', NULL );
150
+
151
+ $msp_preset_style = empty( $msp_preset_style ) ? NULL : $msp_preset_style;
152
+ $msp_preset_effect = empty( $msp_preset_effect ) ? NULL : $msp_preset_effect;
153
+ $msp_buttons_style = empty( $msp_buttons_style ) ? NULL : $msp_buttons_style;
154
+
155
+ wp_localize_script( 'jquery', '__MSP_DATA' , $msp_data );
156
+ wp_localize_script( 'jquery', '__MSP_PRESET_STYLE' , $msp_preset_style );
157
+ wp_localize_script( 'jquery', '__MSP_PRESET_EFFECT' , $msp_preset_effect );
158
+ wp_localize_script( 'jquery', '__MSP_TYPE' , $slider_type );
159
+ wp_localize_script( 'jquery', '__MSP_PRESET_BUTTON' , $msp_buttons_style );
160
+ }
161
+
162
+
163
+ // define panel directory path
164
+ wp_localize_script( 'jquery', '__MSP_PATH', MSWP_AVERTA_ADMIN_URL . '/views/slider-panel/' );
165
+
166
+ $slider_panel_default_setting = array(
167
+
168
+ 'width' => 1000,
169
+ 'height' => 500,
170
+
171
+ 'autoCrop' => false,
172
+ 'autoplay' => false,
173
+ 'layout' => 'boxed',
174
+ 'autoHeight' => false,
175
+ 'transition' => 'basic',
176
+ 'speed' => 20,
177
+ 'className' => '',
178
+
179
+
180
+ 'start' => 1,
181
+ 'space' => 0,
182
+
183
+ 'grabCursor' => true,
184
+ 'swipe' => true,
185
+
186
+ 'wheel' => false,
187
+ 'mouse' => true,
188
+
189
+ 'loop' => false,
190
+ 'shuffle' => false,
191
+ 'preload' => '-1',
192
+
193
+ 'overPause' => true,
194
+ 'endPause' => false,
195
+
196
+ 'hideLayers' => false,
197
+ 'dir' => 'h',
198
+ 'parallaxMode' => 'swipe',
199
+ 'centerControls'=> true,
200
+ 'instantShowLayers' => false,
201
+
202
+ 'skin' => 'ms-skin-default',
203
+ 'duration' => 3,
204
+ 'slideFillMode' => 'fill',
205
+ 'sliderVideoFillMode' => 'fill',
206
+ 'slideVideoLoop'=> true,
207
+ 'slideVideoMute'=> true,
208
+ 'slideVideoAutopause'=> false,
209
+ 'layerContent' => 'Lorem Ipsum'
210
+ );
211
+
212
+ wp_localize_script( 'jquery', '__MSP_DEF_OPTIONS', apply_filters( 'masterslider_panel_default_setting', $slider_panel_default_setting ) );
213
+
214
+ do_action( 'masterslider_admin_add_panel_variables', $slider_type );
215
+ }
216
+
217
+
218
+
219
+
220
+ /**
221
+ * Print required variable for master slider admin page
222
+ */
223
+ public function add_general_variables() {
224
+
225
+ $uploads = wp_upload_dir();
226
+
227
+ // define admin ajax address and master slider page
228
+ wp_localize_script( 'jquery', '__MS', array(
229
+ 'ajax_url' => admin_url( 'admin-ajax.php' ),
230
+ 'msp_menu_page' => menu_page_url( MSWP_SLUG, false ),
231
+ 'msp_plugin_url' => MSWP_AVERTA_URL,
232
+ 'upload_dir' => $uploads['baseurl'],
233
+ 'importer' => admin_url( 'admin.php?import=masterslider-importer' )
234
+ ));
235
+ }
236
+
237
+
238
+ /**
239
+ * Add script localizations
240
+ */
241
+ public function add_panel_script_localizations() {
242
+
243
+ wp_localize_script( 'jquery', '__MSP_LAN', apply_filters( 'masterslider_admin_localize', array(
244
+
245
+ // CallbacksController.js
246
+ 'cb_001' => __( 'On slide change start', 'master-slider' ),
247
+ 'cb_002' => __( 'On slide change end', 'master-slider' ),
248
+ 'cb_003' => __( 'On slide timer change', 'master-slider' ),
249
+ 'cb_004' => __( 'On slider resize', 'master-slider' ),
250
+ 'cb_005' => __( 'On Youtube/Vimeo video play', 'master-slider' ),
251
+ 'cb_006' => __( 'On Youtube/Vimeo video close', 'master-slider' ),
252
+ 'cb_007' => __( 'On swipe start', 'master-slider' ),
253
+ 'cb_008' => __( 'On swipe move', 'master-slider' ),
254
+ 'cb_009' => __( 'On swipe end', 'master-slider' ),
255
+ 'cb_010' => __( 'Are you sure you want to remove "%s" callback?', 'master-slider' ),
256
+ 'cb_011' => __( 'On slider Init', 'master-slider' ),
257
+
258
+ // ControlsController.js
259
+ 'cc_001' => __( 'Arrows', 'master-slider' ),
260
+ 'cc_002' => __( 'Line Timer', 'master-slider' ),
261
+ 'cc_003' => __( 'Bullets', 'master-slider' ),
262
+ 'cc_004' => __( 'Circle Timer', 'master-slider' ),
263
+ 'cc_005' => __( 'Scrollbar', 'master-slider' ),
264
+ 'cc_006' => __( 'Slide Info', 'master-slider' ),
265
+ 'cc_007' => __( 'Thumblist/Tabs', 'master-slider' ),
266
+
267
+ // EffectsController
268
+ 'ec_001' => __( 'Please enter name for new preset effect', 'master-slider' ),
269
+ 'ec_002' => __( 'Custom effect', 'master-slider' ),
270
+
271
+ // LayersController.js
272
+ 'lc_001' => __( 'Text Layer', 'master-slider' ),
273
+ 'lc_002' => __( 'Image Layer', 'master-slider' ),
274
+ 'lc_003' => __( 'Video Layer', 'master-slider' ),
275
+ 'lc_004' => __( 'Hotspot', 'master-slider' ),
276
+ 'lc_006' => __( 'Button Layer', 'master-slider' ),
277
+
278
+ // StylesController.js
279
+ 'sc_001' => __( 'Please enter name for new preset style', 'master-slider' ),
280
+ 'sc_002' => __( 'Custom style', 'master-slider' ),
281
+
282
+ //SliderModel.js
283
+ 'sm_001' => __( 'Untitled Slider', 'master-slider' ),
284
+
285
+ // EffectEditorView.js
286
+ 'ee_001' => __( 'Preset Transitions', 'master-slider' ),
287
+ 'ee_002' => __( 'Apply transition', 'master-slider' ),
288
+ 'ee_003' => __( 'Save as preset', 'master-slider' ),
289
+ 'ee_006' => __( 'Transition Editor', 'master-slider' ),
290
+
291
+ // StageView.js
292
+ 'sv_001' => __( 'Align to stage :', 'master-slider' ),
293
+ 'sv_002' => __( 'Snapping :', 'master-slider' ),
294
+ 'sv_003' => __( 'Zoom :', 'master-slider' ),
295
+ 'sv_010' => __( 'Layer position origin : ', 'master-slider' ),
296
+
297
+ //StyleEditorView.js
298
+ 'se_001' => __( 'Apply style', 'master-slider' ),
299
+ 'se_002' => __( 'Save as preset', 'master-slider' ),
300
+ 'se_003' => __( 'Preset Styles', 'master-slider' ),
301
+ 'se_004' => __( 'By deleting preset style it also will be removed from other sliders in your website. Are you sure you want to delete "%s"?', 'master-slider' ),
302
+ 'se_006' => __( 'Style Editor', 'master-slider' ),
303
+
304
+ //TemplatesView.js
305
+ 'tv_001' => __( 'Master Slider Templates', 'master-slider' ),
306
+ 'tv_002' => __( 'Changing template will reset all slider controls and will change some slider settings. Continue?', 'master-slider'),
307
+ //TimelineView.js
308
+ 'tl_001' => __( 'Show/Hide all', 'master-slider' ),
309
+ 'tl_002' => __( 'Solo All', 'master-slider' ),
310
+ 'tl_003' => __( 'Lock/Unlock all', 'master-slider' ),
311
+ 'tl_004' => __( 'Exit preview', 'master-slider' ),
312
+ 'tl_005' => __( 'Preview slide', 'master-slider' ),
313
+ 'tl_006' => __( 'Show/Hide', 'master-slider' ),
314
+ 'tl_007' => __( 'Solo', 'master-slider' ),
315
+ 'tl_008' => __( 'Lock/Unlock', 'master-slider' ),
316
+ 'tl_009' => __( 'Are you sure you want to remove this layer?', 'master-slider' ),
317
+ 'tl_010' => __( 'Start delay :', 'master-slider' ),
318
+ 'tl_011' => __( 'Show duration :', 'master-slider' ),
319
+ 'tl_012' => __( 'Waiting duration :', 'master-slider' ),
320
+ 'tl_013' => __( 'Hide duration :', 'master-slider' ),
321
+
322
+ //UIViews.js
323
+ 'ui_001' => __( 'Show/Hide slide', 'master-slider' ),
324
+ 'ui_002' => __( 'Duplicate slide', 'master-slider' ),
325
+ 'ui_003' => __( 'Remove slide', 'master-slider' ),
326
+ 'ui_004' => __( 'Are you sure you want to delete this slide?', 'master-slider' ),
327
+ 'ui_005' => __( 'Open on the same page', 'master-slider' ),
328
+ 'ui_006' => __( 'Open on new page', 'master-slider' ),
329
+ 'ui_007' => __( 'Open in parent frame', 'master-slider' ),
330
+ 'ui_008' => __( 'Open in main frame', 'master-slider' ),
331
+ 'ui_009' => __( 'Fill', 'master-slider' ),
332
+ 'ui_010' => __( 'Fit', 'master-slider' ),
333
+ 'ui_011' => __( 'Center', 'master-slider' ),
334
+ 'ui_012' => __( 'Stretch', 'master-slider' ),
335
+ 'ui_013' => __( 'Tile', 'master-slider' ),
336
+ 'ui_014' => __( 'None', 'master-slider' ),
337
+ 'ui_015' => __( 'Align top', 'master-slider' ),
338
+ 'ui_016' => __( 'Align vertical center', 'master-slider' ),
339
+ 'ui_017' => __( 'Align bottom', 'master-slider' ),
340
+ 'ui_018' => __( 'Align left', 'master-slider' ),
341
+ 'ui_019' => __( 'Align horizontal center', 'master-slider' ),
342
+ 'ui_020' => __( 'Align right', 'master-slider' ),
343
+
344
+ 'ui_030' => __( 'Scroll to an element in page :', 'master-slider' ),
345
+ 'ui_031' => __( 'Target element :', 'master-slider' ),
346
+
347
+ // ApplicationController.js
348
+ 'ap_001' => __( 'Sending data...', 'master-slider' ),
349
+ 'ap_002' => __( 'An Error accorded, please try again.', 'master-slider' ),
350
+ 'ap_003' => __( 'Data saved successfully.', 'master-slider' ),
351
+
352
+ 'flk_001' => __( 'Photo title', 'master-slider' ),
353
+ 'flk_002' => __( 'Photo owner name', 'master-slider' ),
354
+ 'flk_003' => __( 'Date taken', 'master-slider' ),
355
+ 'flk_004' => __( 'Photo description', 'master-slider' ),
356
+
357
+ 'fb_001' => __( 'Photo name', 'master-slider' ),
358
+ 'fb_002' => __( 'Photo owner name', 'master-slider' ),
359
+ 'fb_003' => __( 'Photo link', 'master-slider' ),
360
+
361
+ 'ui_021' => __( 'Goto next slide', 'master-slider' ),
362
+ 'ui_022' => __( 'Goto previous slide', 'master-slider' ),
363
+ 'ui_022' => __( 'Goto slide', 'master-slider' ),
364
+ 'ui_023' => __( 'Pause timer', 'master-slider' ),
365
+ 'ui_024' => __( 'Resume timer', 'master-slider' ),
366
+
367
+ 'be_001' => __( 'Update Button Style', 'master-slider' ),
368
+ 'be_002' => __( 'Save As New Button', 'master-slider' ),
369
+ 'be_003' => __( 'Are you sure you want to delete this button?', 'master-slider' ),
370
+ 'be_004' => __( 'Buttons', 'master-slider' ),
371
+ 'be_005' => __( 'Button Editor', 'master-slider' ),
372
+ 'be_006' => __( 'By updating a button it will be changed in all of your sliders. Are you sure you want to update this button?', 'master-slider' )
373
+
374
+ ) ) );
375
+
376
+ }
377
+
378
+
379
+
380
+ /**
381
+ * Add general script localizations
382
+ */
383
+ public function add_general_script_localizations() {
384
+
385
+ wp_localize_script( 'jquery', '__MSP_GEN_LAN', apply_filters( 'masterslider_admin_general_localize', array(
386
+
387
+ 'genl_001' => __( 'The changes you made will be lost if you navigate away from this page. To exit preview mode click on close (X) button.', 'master-slider' ),
388
+ 'genl_002' => __( 'Master Slider Preview', 'master-slider' ),
389
+ 'genl_003' => __( 'Loading Slider ..', 'master-slider' ),
390
+ 'genl_004' => __( 'Creating The Slider ..', 'master-slider' ),
391
+ 'genl_005' => __( 'Select a Starter', 'master-slider' ),
392
+ 'genl_006' => __( 'No slider is selected to export.', 'master-slider' ),
393
+ 'genl_007' => __( 'Import', 'master-slider' )
394
+
395
+ ) ) );
396
+
397
+ }
398
+
399
+
400
+
401
+ /**
402
+ * Panel spesific styles
403
+ *
404
+ * @return void
405
+ */
406
+ public function load_panel_styles() {
407
+
408
+ // Master Slider Panel styles
409
+ wp_enqueue_style( MSWP_SLUG .'-reset', MSWP_AVERTA_ADMIN_URL . '/views/slider-panel/css/reset.css', array(), MSWP_AVERTA_VERSION );
410
+ wp_enqueue_style( MSWP_SLUG .'-jq-ui', MSWP_AVERTA_ADMIN_URL . '/views/slider-panel/css/jquery-ui-1.10.4.min.css', array(), MSWP_AVERTA_VERSION );
411
+ wp_enqueue_style( MSWP_SLUG .'-spectrum', MSWP_AVERTA_ADMIN_URL . '/views/slider-panel/css/spectrum.css', array(), MSWP_AVERTA_VERSION );
412
+ wp_enqueue_style( MSWP_SLUG .'-codemirror', MSWP_AVERTA_ADMIN_URL . '/views/slider-panel/css/codemirror.css', array(), MSWP_AVERTA_VERSION );
413
+ wp_enqueue_style( MSWP_SLUG .'-jscrollpane', MSWP_AVERTA_ADMIN_URL . '/views/slider-panel/css/jquery.jscrollpane.css', array(), MSWP_AVERTA_VERSION );
414
+ wp_enqueue_style( MSWP_SLUG .'-main-style', MSWP_AVERTA_ADMIN_URL . '/views/slider-panel/css/msp-style.css', array(), MSWP_AVERTA_VERSION );
415
+ wp_enqueue_style( MSWP_SLUG .'-components', MSWP_AVERTA_ADMIN_URL . '/views/slider-panel/css/msp-components.css', array(), MSWP_AVERTA_VERSION );
416
+
417
+ }
418
+
419
+ /**
420
+ * Master slider general/common styles
421
+ *
422
+ * @return void
423
+ */
424
+ public function load_general_styles() {
425
+ // gnereal styles for masterslider admin page
426
+ wp_enqueue_style( MSWP_SLUG .'-admin-styles', MSWP_AVERTA_ADMIN_URL . '/assets/css/msp-general.css', array(), MSWP_AVERTA_VERSION );
427
+ }
428
+
429
+
430
+ public function load_general_scripts() {
431
+ // disable wp autosave on master slider panel
432
+ wp_dequeue_script( 'autosave' );
433
+ wp_enqueue_script( MSWP_SLUG .'-admin-scripts', MSWP_AVERTA_ADMIN_URL . '/assets/js/admin.js', array('jquery', 'jquery-ui-core', 'jquery-ui-dialog'), MSWP_AVERTA_VERSION, true );
434
+ }
435
 
436
  }
admin/includes/classes/class-msp-importer.php CHANGED
@@ -20,100 +20,100 @@ if (!defined('ABSPATH')) {
20
  * @since 1.2.0
21
  */
22
  class MSP_Importer {
23
-
24
 
25
- var $origin_upload_baseurl = '';
26
 
27
- var $upload_baseurl = '';
28
 
29
- var $upload_basedir = '';
30
 
31
- var $image_import_queue = array();
32
 
33
- var $import_medias = true;
34
 
35
- var $last_new_slider_id = null;
36
 
37
 
38
 
39
- function __construct() {
40
 
41
- add_action( 'admin_menu', array( $this, 'admin_init' ) );
42
- }
43
 
44
 
45
- public function admin_init() {
46
-
47
- $upload = wp_upload_dir();
48
- $this->upload_baseurl = $upload['baseurl'];
49
- $this->upload_basedir = $upload['basedir'];
50
 
51
- $this->process_export_request();
52
 
53
- register_importer( 'masterslider-importer', __( 'Master Slider', MSWP_TEXT_DOMAIN ), __( 'Import sliders and images from a Master Slider export file.', MSWP_TEXT_DOMAIN ), array( $this, 'render_importer_page' ) );
54
- }
55
 
56
 
57
- public function render_importer_page() {
58
 
59
- $this->header();
60
 
61
- $this->process_import_request();
62
 
63
- $this->footer();
64
- }
65
 
66
 
67
- /**
68
- * Display import page title
69
- */
70
- function header() {
71
- echo '<div class="wrap">';
72
- screen_icon();
73
- echo '<h2>' . __( 'Importing Master Slider', 'wordpress-importer' ) . '</h2><br />';
74
- }
75
 
76
- /**
77
- * Close div.wrap
78
- */
79
- function footer() {
80
- echo '</div>';
81
- ?>
82
- <script>
83
- function mspGetParameterByName(name) {
84
- name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
85
- var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
86
- results = regex.exec(location.search);
87
- return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
88
- }
89
- jQuery(window).load(function(){
90
- if (typeof redirect_link !== 'undefined' && redirect_link !== '' ) {
91
- window.location.replace( redirect_link );
92
- } else {
93
- console.log('redirect link not found');
94
- }
95
- });
96
- </script>
97
- <?php
98
- }
99
-
100
-
101
- /**
102
- * Decide what the maximum file size for downloaded attachments is.
103
- * Default is 0 (unlimited), can be filtered via masterslider_import_attachment_size_limit
104
- *
105
- * @return int Maximum attachment file size to import
106
- */
107
- function max_attachment_size() {
108
- return apply_filters( 'masterslider_import_attachment_size_limit', 0 );
109
- }
110
-
111
-
112
- // if it's relative url, get absolute origin url
113
- function get_absolute_media_url( $url ){
114
-
115
  if( $this->is_absolute_url( $url ) || $this->contains_origin_upload_dir( $url ) )
116
- return $url;
117
 
118
  return $this->origin_upload_baseurl . $url;
119
  }
@@ -125,658 +125,658 @@ class MSP_Importer {
125
  * @return boolean true if the url is absolue and false otherwise
126
  */
127
  public function is_absolute_url( $url ){
128
- return preg_match( "~^(?:f|ht)tps?://~i", $url );
129
- }
130
-
131
-
132
- /**
133
- * Wheather url contains origin_upload_baseurl or not
134
- * @param string $url the url
135
- * @return bool TRUE, if url contains origin_upload_baseurl
136
- */
137
- public function contains_origin_upload_dir( $url ){
138
- return strpos( $url, $this->origin_upload_baseurl ) !== false;
139
- }
140
-
141
-
142
- /**
143
- * Process incoming requests for importing sliders
144
- * @return void
145
- */
146
- public function process_import_request(){
147
 
148
- $step = isset( $_REQUEST['step'] ) && ! empty( $_REQUEST['step'] ) ? (int)$_REQUEST['step'] : 0;
149
 
150
- if( 2 > $step ) {
 
 
 
 
 
 
 
151
 
152
- $bytes = apply_filters( 'masterslider_import_upload_size_limit', wp_max_upload_size() );
153
- $size = size_format( $bytes );
154
- ?>
155
 
156
- <div class="msp-import-wrapper">
 
 
 
 
157
 
158
- <form action="<?php echo admin_url( 'admin.php?import=masterslider-importer&step=2' ); ?>" method="post" enctype="multipart/form-data" class="msp-import-form msp-dialog-inner-section">
159
 
160
- <span class="msp-dialog-section-desc"><?php _e( 'To import sliders select Masterslider Export file that you downloaded before then click import button.', MSWP_TEXT_DOMAIN ) ?></span>
161
- <br />
162
- <hr />
163
- <br />
164
- <fieldset>
165
- <?php wp_nonce_field('import-msp-sliders'); ?>
166
 
167
- <input type="hidden" name="msp-import" value="1">
 
 
168
 
169
- <input type="hidden" name="max_file_size" value="<?php echo $bytes; ?>" />
170
 
171
- <input type="file" name="msp-import-file" class="msp-select-file">
172
 
173
- <small><?php printf( __( 'Maximum size: %s', MSWP_TEXT_DOMAIN ), $size ); ?></small><br /><br /><br />
174
-
175
- <input type="submit" class="button" value="<?php esc_attr_e( 'Upload file and import', MSWP_TEXT_DOMAIN ); ?>" />
176
- </fieldset>
 
 
177
 
178
-
179
-
180
- </form>
181
 
182
- </div>
183
 
184
- <?php
185
- }
186
 
187
- // Import sliders from export file
188
- if( isset( $_POST['msp-import'] ) ) {
189
-
190
- if( current_user_can('export_masterslider') ) {
191
 
192
- if( check_admin_referer('import-msp-sliders') ) {
 
 
193
 
194
- $step = isset( $_REQUEST['step'] ) && ! empty( $_REQUEST['step'] ) ? (int)$_REQUEST['step'] : 0;
195
 
196
- if( 2 == $step ){
 
197
 
198
- if ( $_FILES['msp-import-file']['error'] == UPLOAD_ERR_OK && is_uploaded_file( $_FILES['msp-import-file']['tmp_name'] ) ) {
199
- // get import file content
200
- $import_data = file_get_contents( $_FILES['msp-import-file']['tmp_name'] );
201
- $this->import_data( $import_data );
202
- }
203
-
204
- }
205
- }
206
 
207
- } else {
208
- add_action( 'admin_notices', array( $this, 'import_export_notice' ) );
209
- }
210
- }
211
 
212
- // Import slider by starter id
213
- if( isset( $_REQUEST['starter_id'] ) && ! empty( $_REQUEST['starter_id'] ) ) {
214
-
215
- if( current_user_can('export_masterslider') || apply_filters( 'masterslider_user_can_import_starter_content', 0 ) ) {
216
 
217
- if ( $starter_field = msp_get_slider_starter_field( $_REQUEST['starter_id'] ) ) {
218
 
219
- if ( isset( $starter_field['importdata'] ) && ! empty( $starter_field['importdata'] ) ) {
 
 
 
 
 
 
 
220
 
221
- $this->import_data( $starter_field['importdata'] );
222
- printf( "<script> var redirect_link = '%s';</script>", admin_url( 'admin.php?page='.MSWP_SLUG.'&action=edit&slider_id='.$this->last_new_slider_id. '&fr' ) );
 
 
223
 
224
- } else {
225
- _e( 'Import data not found ..', MSWP_TEXT_DOMAIN );
226
- }
 
227
 
228
- } else {
229
- _e( 'Starter ID is not valid.', MSWP_TEXT_DOMAIN );
230
- }
231
 
232
- } else {
233
- add_action( 'admin_notices', array( $this, 'import_export_notice' ) );
234
- }
235
 
236
- }
 
237
 
238
- }
 
 
239
 
 
 
 
240
 
 
 
 
241
 
242
- public function process_export_request(){
243
 
244
- // Export sliders
245
- if( isset( $_POST['msp-export'] ) ) {
246
-
247
- if( current_user_can('export_masterslider') ) {
248
 
249
- if( check_admin_referer('export-msp-sliders') ) {
250
 
251
- $sliders = isset( $_POST['msp-export-sliders'] ) ? $_POST['msp-export-sliders'] : '';
252
 
253
- if( ! empty( $sliders ) || ! empty( $args ) ) {
254
- $this->export_slider_data_in_file( $sliders, $args );
255
- }
256
- }
257
 
258
- }else {
259
- add_action( 'admin_notices', array( $this, 'import_export_notice' ) );
260
- }
261
- }
262
 
263
- }
264
 
 
265
 
266
- /**
267
- * Add admin notice if access to import/export is denied
268
- * @return void
269
- */
270
- public function import_export_notice(){
271
- printf( '<div class="error" style="display:block;" ><p>%s</p></div>',
272
- apply_filters( 'masterslider_import_export_access_denied_message', __( "Sorry, You don't have enough permission to import/export sliders.", MSWP_TEXT_DOMAIN ) )
273
- );
274
- }
275
 
 
 
 
 
276
 
 
277
 
278
 
 
 
 
 
 
 
 
 
 
279
 
280
 
281
- /**
282
- * Get slider export data
283
- *
284
- * @param int|array $slider_id the slider id(s)
285
- * @param array The other options that should be included in export data ( preset_styles, preset_effects )
286
- * @param bool $base64 encode output data to base64 or not
287
- * @return string the slider export data
288
- */
289
- function get_slider_export_data( $slider_ids = array() , $args = null, $base64 = true ){
290
 
291
- $slider_ids = (array) $slider_ids;
292
- $args = (array) $args;
293
 
294
- // stores export data
295
- $export_data = array();
296
 
297
- $export_data['sliders_data'] = array();
298
 
299
- // loop through selected sliders and store in sliders_data
300
- foreach ( $slider_ids as $slider_id ) {
 
 
 
 
 
 
 
301
 
302
- if( is_numeric( $slider_id ) ) {
303
- global $mspdb;
304
 
305
- $slider_title = $mspdb->get_slider_field_val( $slider_id, 'title' );
306
- $slider_params = $mspdb->get_slider_field_val( $slider_id, 'params' );
307
- $slider_type = $mspdb->get_slider_field_val( $slider_id, 'type' );
308
- $slides_num = $mspdb->get_slider_field_val( $slider_id, 'slides_num');
309
 
310
- $export_data['sliders_data'][ $slider_id ] = array(
311
- 'title' => $slider_title,
312
- 'params' => $slider_params,
313
- 'type' => $slider_type,
314
- 'slides_num' => $slides_num
315
- );
316
- }
317
 
318
- }
 
319
 
320
- // add origin_uploads_url to export data - this helps us to fetch images from origin domian
321
-
322
- // if you need to bundle sample sliders in your theme you can change the origin_uploads_url
323
- // by default origin_uploads_url is the uploads baseurl on domain you exported the sliders from (e.g www.domain.com/wp-content/uploads)
324
- // when you decide to import data to new domain, importer will use the origin_uploads_url to fetch images from.
325
- // you can change origin_uploads_url by using 'masterslider_export_origin_uploads_url' filter
326
- // if you change origin_uploads_url to something else, importer will import slider images
327
- // from your custom origin_uploads_url instead of default origin_uploads_url
328
- $custom_export_origin_uploads_url = apply_filters( 'masterslider_export_origin_uploads_url', null );
329
 
330
- // if filter passed empty string, origin_uploads_url will be plugins/masterslider/samples folder
331
- if( '' === $custom_export_origin_uploads_url ) {
332
- $export_data['origin_uploads_url'] = '{{masterslider}}/samples';
 
333
 
334
- // if filter passed a string with our special tags :
335
- } elseif( false !== strpos( $custom_export_origin_uploads_url, '{{masterslider}}' ) ||
336
- false !== strpos( $custom_export_origin_uploads_url, '{{theme_dir}}' ) ||
337
- false !== strpos( $custom_export_origin_uploads_url, '{{child_theme_dir}}' ) ) {
 
 
 
338
 
339
- $export_data['origin_uploads_url'] = $custom_export_origin_uploads_url;
340
 
341
- // if filter value not changed use upload baseurl for current domain
342
- } else {
343
- $uploads = wp_upload_dir();
344
- $export_data['origin_uploads_url'] = $uploads['baseurl'];
345
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
346
 
347
 
348
- $export_json_data = json_encode( $export_data );
349
- $export_b64_data = base64_encode( $export_json_data );
350
 
351
- if ( $base64 )
352
- return base64_encode( json_encode( $export_data ) );
353
 
354
- return $export_data;
355
- }
356
 
357
 
358
- /**
359
- * Print slider export data
360
- *
361
- * @param int|array $slider_id the slider id(s)
362
- * @param array The other options that should be included in export data ( preset_styles, preset_effects )
363
- * @param bool $base64 encode output data to base64 or not
364
- * @return void
365
- */
366
- function the_slider_export_data ( $slider_id, $args = null, $base64 = true ){
367
- $export = $this->get_slider_export_data( $slider_id, $args, $base64 );
368
- axpp( $export );
369
- }
370
 
371
 
372
- /**
373
- * Export slider(s) data to file
374
- *
375
- * @param int|array $slider_id slider(s) ID to export
376
- * @param array The other options that should be included in export data ( preset_style, preset_effect )
377
- * @return void
378
- */
379
- function export_slider_data_in_file( $slider_id, $args = null ){
380
 
381
- $blogname = str_replace( " ", "", get_option('blogname') );
382
- $date = date("m-d-Y");
383
- $export_file_name = $blogname."-".MSWP_SLUG."-".$date;
384
 
385
- $export_b64_data = $this->get_slider_export_data( $slider_id, $args );
386
 
387
- header( "Content-Type: application/force-download; charset=" . get_option( 'blog_charset') );
388
- header( "Content-Disposition: attachment; filename=$export_file_name.json" );
389
- exit( $export_b64_data );
390
- }
391
 
392
 
393
 
394
 
395
 
396
 
397
- /**
398
- * Import sliders and options by previousely exported data
399
- *
400
- * @param string $exported_data the exported string
401
- * @return bool true on success and false on failure
402
- */
403
- function import_data( $exported_data ){
404
 
405
- if( empty( $exported_data ) )
406
- return false;
407
 
408
- $exported_b64_decoded = msp_maybe_base64_decode( $exported_data );
409
- $export_array = json_decode( $exported_b64_decoded, true );
410
 
411
- // validate export data
412
- if ( ! is_array( $export_array ) ){
413
- echo __( 'Import data is not valid.', MSWP_TEXT_DOMAIN ) . "<br />";
414
- return false;
415
- }
416
 
417
 
418
- // if you need to change "origin_upload_baseurl" while importing content, just define MSWP_IMPORT_FETCH_DIR const
419
- if( defined( 'MSWP_IMPORT_FETCH_DIR' ) ){
420
- $this->origin_upload_baseurl = MSWP_IMPORT_FETCH_DIR;
421
 
422
- // set origin_upload_baseurl
423
- } elseif( isset( $export_array['origin_uploads_url'] ) && ! empty( $export_array['origin_uploads_url'] ) ) {
424
- $this->origin_upload_baseurl = $export_array['origin_uploads_url'];
425
 
426
- } else {
427
- $this->origin_upload_baseurl = MSWP_AVERTA_URL . '/samples';
428
- }
429
 
430
- // find and replace special template tags
431
- $this->origin_upload_baseurl = str_replace( '{{masterslider}}' , MSWP_AVERTA_URL, $this->origin_upload_baseurl );
432
- $this->origin_upload_baseurl = str_replace( '{{theme_dir}}' , get_template_directory_uri() , $this->origin_upload_baseurl );
433
- $this->origin_upload_baseurl = str_replace( '{{child_theme_dir}}', get_stylesheet_directory_uri() , $this->origin_upload_baseurl );
434
 
435
 
436
 
437
- // import preset styles if it's included in export data
438
- if( isset( $export_array['preset_styles'] ) && ! empty( $export_array['preset_styles'] ) ) {
439
- msp_update_option( 'preset_style' , $export_array['preset_styles'] );
440
- echo __( 'Preset styles imported successfully.', MSWP_TEXT_DOMAIN ) . "<br />";
441
- }
442
 
443
- // import preset effects if it's included in export data
444
- if( isset( $export_array['preset_effects'] ) && ! empty( $export_array['preset_effects'] ) ) {
445
- msp_update_option( 'preset_effect' , $export_array['preset_effects'] );
446
- echo __( 'Preset transitions imported successfully.', MSWP_TEXT_DOMAIN ) . "<br />";
447
- }
448
 
449
- echo __( 'Importing slides ..', MSWP_TEXT_DOMAIN ) . "<br /><br />";
450
 
451
- // import sliders
452
- if( isset( $export_array['sliders_data'] ) ) {
453
- // reset image import queue
454
- $this->image_import_queue = array();
455
- $this->last_new_slider_id = null;
456
- $this->import_add_sliders( $export_array['sliders_data'] );
457
- }
458
 
459
- echo "<br />" . __( 'All data imported successfully, have fun :)' ) . "<br />";
460
 
461
- printf( '<a href="%s">%s</a>', admin_url( 'admin.php?page=' . MSWP_SLUG ), __( 'Back to panel ..', MSWP_TEXT_DOMAIN ) );
462
-
463
- return true;
464
- }
465
 
466
 
467
- /**
468
- * Import slider(s) by exported data
469
- *
470
- * @param string $sliders_data the exported string
471
- * @return bool true on success and false on failure
472
- */
473
- function import_add_sliders( $sliders_data ){
474
 
475
- if( empty( $sliders_data ) )
476
- return false;
477
 
478
- if ( ! is_array( $sliders_data ) ){
479
- return false;
480
- }
481
 
482
- foreach ( $sliders_data as $slider_fields ) {
483
 
484
- global $mspdb;
485
 
486
- // do not publish slider if user has not enough permission to publish sliders
487
- $slider_fields['status'] = current_user_can( 'publish_masterslider' ) ? 'published' : 'draft';
488
-
489
- // import slider
490
- $new_slider_id = $mspdb->import_slider( $slider_fields );
491
- $this->last_new_slider_id = $new_slider_id;
492
- msp_update_slider_custom_css_and_fonts( $new_slider_id );
493
 
494
- echo sprintf( 'Slider "%s" created successfully.', $new_slider_id ) . "<br />";
495
 
496
- // extact and collect images from each slider
497
- if( $this->import_medias && isset( $slider_fields['params'] ) )
498
- $this->extract_slider_images( $slider_fields['params'] );
499
- }
500
 
501
- if( $this->import_medias )
502
- $this->fetch_all_medias();
503
-
504
- return true;
505
- }
506
 
507
 
508
 
509
- /**
510
- * Extract images from slider data and add them to image_import_queue list
511
- * @param string $slider_params the slider params
512
- * @return void
513
- */
514
- public function extract_slider_images( $slider_params ) {
515
 
516
- $parser = msp_get_parser();
517
- $parser->set_data( $slider_params );
518
- $results = $parser->get_results();
519
 
520
- // collect slider background image
521
- $this->image_import_queue[] = $results['setting']['bg_image'];
522
 
523
- if( isset( $results['setting']['ps_slide_bg'] ) )
524
- $this->image_import_queue[] = $results['setting']['ps_slide_bg'];
525
 
526
- // collect slide's images
527
- if( isset( $results['slides'] ) ) {
528
 
529
- foreach ( $results['slides'] as $slide ) {
530
- $this->image_import_queue[] = $slide['src'];
531
- $this->image_import_queue[] = $slide['thumb'];
532
- }
533
- }
534
 
535
- $this->image_import_queue = apply_filters( 'masterslider_extract_slider_images_to_import', $this->image_import_queue, $results );
536
- }
537
 
538
 
539
 
540
- /**
541
- * Download and save slider images in upload directory
542
- * @return void
543
- */
544
- public function fetch_all_medias(){
545
 
546
- echo "<br />";
547
- $this->image_import_queue = array_filter( $this->image_import_queue );
548
-
549
- foreach ( $this->image_import_queue as $url ) {
550
- $this->download_media( $url );
551
- }
552
- }
553
 
554
 
555
- public function download_media( $url ){
556
 
557
- if( ! isset( $url ) || empty( $url ) ) return '';
558
 
559
  // remove upload directory and get relative url
560
  if( $this->contains_origin_upload_dir( $url ) ) {
561
- $url = str_replace( $this->origin_upload_baseurl, '', $url );
562
  }
563
 
564
  // skip if url was not internal media url
565
  if( $this->is_absolute_url( $url ) ) {
566
- echo "Media already exists.<br />";
567
- return '';
568
  }
569
 
570
 
571
  $relative_url = $url;
572
 
573
  // extract the file name and extension from the url
574
- $file_name = basename( $relative_url );
575
 
576
- // extract upload date
577
- $upload_date = untrailingslashit( str_replace( $file_name, '', $relative_url ) );
578
 
579
- // get absolute media url
580
- $absolute_url = $this->get_absolute_media_url( $relative_url );
581
 
582
- // printf( "Importing ( %s ) file from ( %s ) .. <br />", $relative_url, $absolute_url );
583
 
584
- // check if import media already exist
585
- if( is_file( $this->upload_basedir . $relative_url ) ) {
586
- echo sprintf( 'Media “%s” already exists.', $file_name ) . "<br />";
587
- return;
588
- }
589
 
590
- printf( "Importing ( %s ) file .. <br />", $relative_url );
591
 
592
- // printf( "upload date ( %s ) .. <br />", $upload_date ); printf( "absolute url ( %s ) .. <br /><br />", $absolute_url ); return;
593
 
594
- $upload = $this->fetch_remote_file( $absolute_url, $upload_date );
595
 
596
 
597
- if( is_wp_error( $upload ) || $upload['error'] ) {
598
- echo "Failed to import media." . "<br />";
599
- return $upload;
600
- }
601
 
602
 
603
- // Prepare an array of post data for the attachment.
604
- $attachment = array(
605
- 'guid' => '',
606
- 'post_mime_type' => '',
607
- 'post_title' => preg_replace( '/\.[^.]+$/', '', basename( $upload['file'] ) ),
608
- 'post_content' => '',
609
- 'post_status' => 'inherit'
610
- );
611
 
612
- if ( $info = wp_check_filetype( $upload['file'] ) )
613
- $attachment['post_mime_type'] = $info['type'];
614
- else
615
- return new WP_Error( 'attachment_processing_error', __('Invalid file type', 'wordpress-importer') );
616
 
617
- $attachment['guid'] = $upload['url'];
618
 
619
- // as per wp-admin/includes/upload.php
620
- $attachment_id = wp_insert_attachment( $attachment, $upload['file'] );
621
 
622
- // Make sure that this file is included, as wp_generate_attachment_metadata() depends on it.
623
- require_once( ABSPATH . 'wp-admin/includes/image.php' );
624
 
625
- wp_update_attachment_metadata( $attachment_id, wp_generate_attachment_metadata( $attachment_id, $upload['file'] ) );
626
 
627
 
628
 
629
- echo sprintf( '<a href="%s" target="_blank" >%s</a> Imported successfully.', $upload['url'], $file_name ) . "<br />";
630
- }
631
 
632
 
633
- /**
634
- * Attempt to download a remote file attachment
635
- *
636
- * @param string $url URL of item to fetch
637
- * @param array $post Attachment details
638
- * @return array|WP_Error Local file location details on success, WP_Error otherwise
639
- */
640
- function fetch_remote_file( $url, $subdir = null ) {
641
 
642
- add_filter( 'http_request_timeout', array( $this, 'bump_request_timeout' ) );
643
 
644
- // extract the file name and extension from the url
645
- $file_name = basename( $url );
646
 
647
- // get placeholder file in the upload dir with a unique, sanitized filename
648
- $upload = $this->wp_upload_bits( $file_name, '', $subdir );
649
 
650
- // var_dump( $upload );
651
- //echo "<br />" . $url . "<br />"; return new WP_Error( 'import_file_error', '' );
652
 
653
- if ( $upload['error'] )
654
- return new WP_Error( 'upload_dir_error', $upload['error'] );
655
 
656
- // fetch the remote url and write it to the placeholder file
657
- $headers = wp_get_http( $url, $upload['file'] );
658
 
659
- // request failed
660
- if ( ! $headers ) {
661
- @unlink( $upload['file'] );
662
- return new WP_Error( 'import_file_error', __('Remote server did not respond', 'wordpress-importer') );
663
- }
664
 
665
- // make sure the fetch was successful
666
- if ( $headers['response'] != '200' ) {
667
- @unlink( $upload['file'] );
668
- return new WP_Error( 'import_file_error', sprintf( __('Remote server returned error response %1$d %2$s', 'wordpress-importer'), esc_html( $headers['response'] ), get_status_header_desc( $headers['response'] ) ) );
669
- }
670
 
671
- $filesize = filesize( $upload['file'] );
672
 
673
- if ( isset( $headers['content-length'] ) && $filesize != $headers['content-length'] ) {
674
- @unlink( $upload['file'] );
675
- return new WP_Error( 'import_file_error', __('Remote file is incorrect size', 'wordpress-importer') );
676
- }
677
 
678
- if ( 0 == $filesize ) {
679
- @unlink( $upload['file'] );
680
- return new WP_Error( 'import_file_error', __('Zero size file downloaded', 'wordpress-importer') );
681
- }
682
 
683
- $max_size = (int) $this->max_attachment_size();
684
- if ( ! empty( $max_size ) && $filesize > $max_size ) {
685
- @unlink( $upload['file'] );
686
- return new WP_Error( 'import_file_error', sprintf(__('Remote file is too large, limit is %s', 'wordpress-importer'), size_format( $max_size ) ) );
687
- }
688
 
689
- return $upload;
690
- }
691
 
692
 
693
 
694
 
695
 
696
- /**
697
- * Create a file in the upload folder with given content.
698
- *
699
- * If there is an error, then the key 'error' will exist with the error message.
700
- * If success, then the key 'file' will have the unique file path, the 'url' key
701
- * will have the link to the new file. and the 'error' key will be set to false.
702
- *
703
- * This function will not move an uploaded file to the upload folder. It will
704
- * create a new file with the content in $bits parameter. If you move the upload
705
- * file, read the content of the uploaded file, and then you can give the
706
- * filename and content to this function, which will add it to the upload
707
- * folder.
708
- *
709
- * The permissions will be set on the new file automatically by this function.
710
- *
711
- * @param string $name
712
- * @param mixed $bits File content
713
- * @param string $subdir Optional. Time formatted in 'yyyy/mm'.
714
- * @return array
715
- */
716
- function wp_upload_bits( $name, $bits, $subdir = '' ) {
717
 
718
- if ( empty( $name ) )
719
- return array( 'error' => __( 'Empty filename' ) );
720
 
721
- $wp_filetype = wp_check_filetype( $name );
722
 
723
- if ( ! $wp_filetype['ext'] && ! current_user_can( 'unfiltered_upload' ) )
724
- return array( 'error' => __( 'Invalid file type' ) );
725
 
726
- $upload = wp_upload_dir();
727
 
728
- if ( $upload['error'] !== false )
729
- return $upload;
730
 
731
 
732
- $upload_path = $upload['basedir'] . $subdir;
733
 
734
- $filename = wp_unique_filename( $upload_path, $name );
735
 
736
- $new_file = $upload_path . "/$filename";
737
 
738
- // echo "file path : {$new_file} <br />";
739
 
740
 
741
- if ( ! wp_mkdir_p( dirname( $new_file ) ) ) {
742
- if ( 0 === strpos( $upload['basedir'], ABSPATH ) )
743
- $error_path = str_replace( ABSPATH, '', $upload['basedir'] ) . $upload['subdir'];
744
- else
745
- $error_path = basename( $upload['basedir'] ) . $upload['subdir'];
746
 
747
- $message = sprintf( __( 'Unable to create directory %s. Is its parent directory writable by the server?' ), $error_path );
748
- return array( 'error' => $message );
749
- }
750
 
751
- $ifp = @ fopen( $new_file, 'wb' );
752
- if ( ! $ifp )
753
- return array( 'error' => sprintf( __( 'Could not write file %s' ), $new_file ) );
754
 
755
- @fwrite( $ifp, $bits );
756
- fclose( $ifp );
757
- clearstatcache();
758
 
759
- // Set correct file permissions
760
- $stat = @ stat( dirname( $new_file ) );
761
- $perms = $stat['mode'] & 0007777;
762
- $perms = $perms & 0000666;
763
- @ chmod( $new_file, $perms );
764
- clearstatcache();
765
 
766
- // Compute the URL
767
- $url = $upload['baseurl'] . "$subdir/$filename";
768
 
769
- return array( 'file' => $new_file, 'url' => $url, 'error' => false );
770
- }
771
 
772
 
773
- /**
774
- * Added to http_request_timeout filter to force timeout at 60 seconds during import
775
- * @return int 60
776
- */
777
- function bump_request_timeout() {
778
- return 60;
779
- }
780
 
781
 
782
 
20
  * @since 1.2.0
21
  */
22
  class MSP_Importer {
23
+
24
 
25
+ var $origin_upload_baseurl = '';
26
 
27
+ var $upload_baseurl = '';
28
 
29
+ var $upload_basedir = '';
30
 
31
+ var $image_import_queue = array();
32
 
33
+ var $import_medias = true;
34
 
35
+ var $last_new_slider_id = null;
36
 
37
 
38
 
39
+ function __construct() {
40
 
41
+ add_action( 'admin_menu', array( $this, 'admin_init' ) );
42
+ }
43
 
44
 
45
+ public function admin_init() {
46
+
47
+ $upload = wp_upload_dir();
48
+ $this->upload_baseurl = $upload['baseurl'];
49
+ $this->upload_basedir = $upload['basedir'];
50
 
51
+ $this->process_export_request();
52
 
53
+ register_importer( 'masterslider-importer', __( 'Master Slider', 'master-slider' ), __( 'Import sliders and images from a Master Slider export file.', 'master-slider' ), array( $this, 'render_importer_page' ) );
54
+ }
55
 
56
 
57
+ public function render_importer_page() {
58
 
59
+ $this->header();
60
 
61
+ $this->process_import_request();
62
 
63
+ $this->footer();
64
+ }
65
 
66
 
67
+ /**
68
+ * Display import page title
69
+ */
70
+ function header() {
71
+ echo '<div class="wrap">';
72
+ screen_icon();
73
+ echo '<h2>' . __( 'Importing Master Slider', 'wordpress-importer' ) . '</h2><br />';
74
+ }
75
 
76
+ /**
77
+ * Close div.wrap
78
+ */
79
+ function footer() {
80
+ echo '</div>';
81
+ ?>
82
+ <script>
83
+ function mspGetParameterByName(name) {
84
+ name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
85
+ var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
86
+ results = regex.exec(location.search);
87
+ return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
88
+ }
89
+ jQuery(window).load(function(){
90
+ if (typeof redirect_link !== 'undefined' && redirect_link !== '' ) {
91
+ window.location.replace( redirect_link );
92
+ } else {
93
+ console.log('redirect link not found');
94
+ }
95
+ });
96
+ </script>
97
+ <?php
98
+ }
99
+
100
+
101
+ /**
102
+ * Decide what the maximum file size for downloaded attachments is.
103
+ * Default is 0 (unlimited), can be filtered via masterslider_import_attachment_size_limit
104
+ *
105
+ * @return int Maximum attachment file size to import
106
+ */
107
+ function max_attachment_size() {
108
+ return apply_filters( 'masterslider_import_attachment_size_limit', 0 );
109
+ }
110
+
111
+
112
+ // if it's relative url, get absolute origin url
113
+ function get_absolute_media_url( $url ){
114
+
115
  if( $this->is_absolute_url( $url ) || $this->contains_origin_upload_dir( $url ) )
116
+ return $url;
117
 
118
  return $this->origin_upload_baseurl . $url;
119
  }
125
  * @return boolean true if the url is absolue and false otherwise
126
  */
127
  public function is_absolute_url( $url ){
128
+ return preg_match( "~^(?:f|ht)tps?://~i", $url );
129
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
130
 
 
131
 
132
+ /**
133
+ * Wheather url contains origin_upload_baseurl or not
134
+ * @param string $url the url
135
+ * @return bool TRUE, if url contains origin_upload_baseurl
136
+ */
137
+ public function contains_origin_upload_dir( $url ){
138
+ return strpos( $url, $this->origin_upload_baseurl ) !== false;
139
+ }
140
 
 
 
 
141
 
142
+ /**
143
+ * Process incoming requests for importing sliders
144
+ * @return void
145
+ */
146
+ public function process_import_request(){
147
 
148
+ $step = isset( $_REQUEST['step'] ) && ! empty( $_REQUEST['step'] ) ? (int)$_REQUEST['step'] : 0;
149
 
150
+ if( 2 > $step ) {
 
 
 
 
 
151
 
152
+ $bytes = apply_filters( 'masterslider_import_upload_size_limit', wp_max_upload_size() );
153
+ $size = size_format( $bytes );
154
+ ?>
155
 
156
+ <div class="msp-import-wrapper">
157
 
158
+ <form action="<?php echo admin_url( 'admin.php?import=masterslider-importer&step=2' ); ?>" method="post" enctype="multipart/form-data" class="msp-import-form msp-dialog-inner-section">
159
 
160
+ <span class="msp-dialog-section-desc"><?php _e( 'To import sliders select Masterslider Export file that you downloaded before then click import button.', 'master-slider' ) ?></span>
161
+ <br />
162
+ <hr />
163
+ <br />
164
+ <fieldset>
165
+ <?php wp_nonce_field('import-msp-sliders'); ?>
166
 
167
+ <input type="hidden" name="msp-import" value="1">
 
 
168
 
169
+ <input type="hidden" name="max_file_size" value="<?php echo $bytes; ?>" />
170
 
171
+ <input type="file" name="msp-import-file" class="msp-select-file">
 
172
 
173
+ <small><?php printf( __( 'Maximum size: %s', 'master-slider' ), $size ); ?></small><br /><br /><br />
174
+
175
+ <input type="submit" class="button" value="<?php esc_attr_e( 'Upload file and import', 'master-slider' ); ?>" />
176
+ </fieldset>
177
 
178
+
179
+
180
+ </form>
181
 
182
+ </div>
183
 
184
+ <?php
185
+ }
186
 
187
+ // Import sliders from export file
188
+ if( isset( $_POST['msp-import'] ) ) {
189
+
190
+ if( current_user_can('export_masterslider') ) {
 
 
 
 
191
 
192
+ if( check_admin_referer('import-msp-sliders') ) {
 
 
 
193
 
194
+ $step = isset( $_REQUEST['step'] ) && ! empty( $_REQUEST['step'] ) ? (int)$_REQUEST['step'] : 0;
 
 
 
195
 
196
+ if( 2 == $step ){
197
 
198
+ if ( $_FILES['msp-import-file']['error'] == UPLOAD_ERR_OK && is_uploaded_file( $_FILES['msp-import-file']['tmp_name'] ) ) {
199
+ // get import file content
200
+ $import_data = file_get_contents( $_FILES['msp-import-file']['tmp_name'] );
201
+ $this->import_data( $import_data );
202
+ }
203
+
204
+ }
205
+ }
206
 
207
+ } else {
208
+ add_action( 'admin_notices', array( $this, 'import_export_notice' ) );
209
+ }
210
+ }
211
 
212
+ // Import slider by starter id
213
+ if( isset( $_REQUEST['starter_id'] ) && ! empty( $_REQUEST['starter_id'] ) ) {
214
+
215
+ if( current_user_can('export_masterslider') || apply_filters( 'masterslider_user_can_import_starter_content', 0 ) ) {
216
 
217
+ if ( $starter_field = msp_get_slider_starter_field( $_REQUEST['starter_id'] ) ) {
 
 
218
 
219
+ if ( isset( $starter_field['importdata'] ) && ! empty( $starter_field['importdata'] ) ) {
 
 
220
 
221
+ $this->import_data( $starter_field['importdata'] );
222
+ printf( "<script> var redirect_link = '%s';</script>", admin_url( 'admin.php?page='.MSWP_SLUG.'&action=edit&slider_id='.$this->last_new_slider_id. '&fr' ) );
223
 
224
+ } else {
225
+ _e( 'Import data not found ..', 'master-slider' );
226
+ }
227
 
228
+ } else {
229
+ _e( 'Starter ID is not valid.', 'master-slider' );
230
+ }
231
 
232
+ } else {
233
+ add_action( 'admin_notices', array( $this, 'import_export_notice' ) );
234
+ }
235
 
236
+ }
237
 
238
+ }
 
 
 
239
 
 
240
 
 
241
 
242
+ public function process_export_request(){
 
 
 
243
 
244
+ // Export sliders
245
+ if( isset( $_POST['msp-export'] ) ) {
246
+
247
+ if( current_user_can('export_masterslider') ) {
248
 
249
+ if( check_admin_referer('export-msp-sliders') ) {
250
 
251
+ $sliders = isset( $_POST['msp-export-sliders'] ) ? $_POST['msp-export-sliders'] : '';
252
 
253
+ if( ! empty( $sliders ) || ! empty( $args ) ) {
254
+ $this->export_slider_data_in_file( $sliders, $args );
255
+ }
256
+ }
 
 
 
 
 
257
 
258
+ }else {
259
+ add_action( 'admin_notices', array( $this, 'import_export_notice' ) );
260
+ }
261
+ }
262
 
263
+ }
264
 
265
 
266
+ /**
267
+ * Add admin notice if access to import/export is denied
268
+ * @return void
269
+ */
270
+ public function import_export_notice(){
271
+ printf( '<div class="error" style="display:block;" ><p>%s</p></div>',
272
+ apply_filters( 'masterslider_import_export_access_denied_message', __( "Sorry, You don't have enough permission to import/export sliders.", 'master-slider' ) )
273
+ );
274
+ }
275
 
276
 
 
 
 
 
 
 
 
 
 
277
 
 
 
278
 
 
 
279
 
 
280
 
281
+ /**
282
+ * Get slider export data
283
+ *
284
+ * @param int|array $slider_id the slider id(s)
285
+ * @param array The other options that should be included in export data ( preset_styles, preset_effects )
286
+ * @param bool $base64 encode output data to base64 or not
287
+ * @return string the slider export data
288
+ */
289
+ function get_slider_export_data( $slider_ids = array() , $args = null, $base64 = true ){
290
 
291
+ $slider_ids = (array) $slider_ids;
292
+ $args = (array) $args;
293
 
294
+ // stores export data
295
+ $export_data = array();
 
 
296
 
297
+ $export_data['sliders_data'] = array();
 
 
 
 
 
 
298
 
299
+ // loop through selected sliders and store in sliders_data
300
+ foreach ( $slider_ids as $slider_id ) {
301
 
302
+ if( is_numeric( $slider_id ) ) {
303
+ global $mspdb;
 
 
 
 
 
 
 
304
 
305
+ $slider_title = $mspdb->get_slider_field_val( $slider_id, 'title' );
306
+ $slider_params = $mspdb->get_slider_field_val( $slider_id, 'params' );
307
+ $slider_type = $mspdb->get_slider_field_val( $slider_id, 'type' );
308
+ $slides_num = $mspdb->get_slider_field_val( $slider_id, 'slides_num');
309
 
310
+ $export_data['sliders_data'][ $slider_id ] = array(
311
+ 'title' => $slider_title,
312
+ 'params' => $slider_params,
313
+ 'type' => $slider_type,
314
+ 'slides_num' => $slides_num
315
+ );
316
+ }
317
 
318
+ }
319
 
320
+ // add origin_uploads_url to export data - this helps us to fetch images from origin domian
321
+
322
+ // if you need to bundle sample sliders in your theme you can change the origin_uploads_url
323
+ // by default origin_uploads_url is the uploads baseurl on domain you exported the sliders from (e.g www.domain.com/wp-content/uploads)
324
+ // when you decide to import data to new domain, importer will use the origin_uploads_url to fetch images from.
325
+ // you can change origin_uploads_url by using 'masterslider_export_origin_uploads_url' filter
326
+ // if you change origin_uploads_url to something else, importer will import slider images
327
+ // from your custom origin_uploads_url instead of default origin_uploads_url
328
+ $custom_export_origin_uploads_url = apply_filters( 'masterslider_export_origin_uploads_url', null );
329
+
330
+ // if filter passed empty string, origin_uploads_url will be plugins/masterslider/samples folder
331
+ if( '' === $custom_export_origin_uploads_url ) {
332
+ $export_data['origin_uploads_url'] = '{{masterslider}}/samples';
333
+
334
+ // if filter passed a string with our special tags :
335
+ } elseif( false !== strpos( $custom_export_origin_uploads_url, '{{masterslider}}' ) ||
336
+ false !== strpos( $custom_export_origin_uploads_url, '{{theme_dir}}' ) ||
337
+ false !== strpos( $custom_export_origin_uploads_url, '{{child_theme_dir}}' ) ) {
338
+
339
+ $export_data['origin_uploads_url'] = $custom_export_origin_uploads_url;
340
+
341
+ // if filter value not changed use upload baseurl for current domain
342
+ } else {
343
+ $uploads = wp_upload_dir();
344
+ $export_data['origin_uploads_url'] = $uploads['baseurl'];
345
+ }
346
 
347
 
348
+ $export_json_data = json_encode( $export_data );
349
+ $export_b64_data = base64_encode( $export_json_data );
350
 
351
+ if ( $base64 )
352
+ return base64_encode( json_encode( $export_data ) );
353
 
354
+ return $export_data;
355
+ }
356
 
357
 
358
+ /**
359
+ * Print slider export data
360
+ *
361
+ * @param int|array $slider_id the slider id(s)
362
+ * @param array The other options that should be included in export data ( preset_styles, preset_effects )
363
+ * @param bool $base64 encode output data to base64 or not
364
+ * @return void
365
+ */
366
+ function the_slider_export_data ( $slider_id, $args = null, $base64 = true ){
367
+ $export = $this->get_slider_export_data( $slider_id, $args, $base64 );
368
+ axpp( $export );
369
+ }
370
 
371
 
372
+ /**
373
+ * Export slider(s) data to file
374
+ *
375
+ * @param int|array $slider_id slider(s) ID to export
376
+ * @param array The other options that should be included in export data ( preset_style, preset_effect )
377
+ * @return void
378
+ */
379
+ function export_slider_data_in_file( $slider_id, $args = null ){
380
 
381
+ $blogname = str_replace( " ", "", get_option('blogname') );
382
+ $date = date("m-d-Y");
383
+ $export_file_name = $blogname."-".MSWP_SLUG."-".$date;
384
 
385
+ $export_b64_data = $this->get_slider_export_data( $slider_id, $args );
386
 
387
+ header( "Content-Type: application/force-download; charset=" . get_option( 'blog_charset') );
388
+ header( "Content-Disposition: attachment; filename=$export_file_name.json" );
389
+ exit( $export_b64_data );
390
+ }
391
 
392
 
393
 
394
 
395
 
396
 
397
+ /**
398
+ * Import sliders and options by previousely exported data
399
+ *
400
+ * @param string $exported_data the exported string
401
+ * @return bool true on success and false on failure
402
+ */
403
+ function import_data( $exported_data ){
404
 
405
+ if( empty( $exported_data ) )
406
+ return false;
407
 
408
+ $exported_b64_decoded = msp_maybe_base64_decode( $exported_data );
409
+ $export_array = json_decode( $exported_b64_decoded, true );
410
 
411
+ // validate export data
412
+ if ( ! is_array( $export_array ) ){
413
+ echo __( 'Import data is not valid.', 'master-slider' ) . "<br />";
414
+ return false;
415
+ }
416
 
417
 
418
+ // if you need to change "origin_upload_baseurl" while importing content, just define MSWP_IMPORT_FETCH_DIR const
419
+ if( defined( 'MSWP_IMPORT_FETCH_DIR' ) ){
420
+ $this->origin_upload_baseurl = MSWP_IMPORT_FETCH_DIR;
421
 
422
+ // set origin_upload_baseurl
423
+ } elseif( isset( $export_array['origin_uploads_url'] ) && ! empty( $export_array['origin_uploads_url'] ) ) {
424
+ $this->origin_upload_baseurl = $export_array['origin_uploads_url'];
425
 
426
+ } else {
427
+ $this->origin_upload_baseurl = MSWP_AVERTA_URL . '/samples';
428
+ }
429
 
430
+ // find and replace special template tags
431
+ $this->origin_upload_baseurl = str_replace( '{{masterslider}}' , MSWP_AVERTA_URL, $this->origin_upload_baseurl );
432
+ $this->origin_upload_baseurl = str_replace( '{{theme_dir}}' , get_template_directory_uri() , $this->origin_upload_baseurl );
433
+ $this->origin_upload_baseurl = str_replace( '{{child_theme_dir}}', get_stylesheet_directory_uri() , $this->origin_upload_baseurl );
434
 
435
 
436
 
437
+ // import preset styles if it's included in export data
438
+ if( isset( $export_array['preset_styles'] ) && ! empty( $export_array['preset_styles'] ) ) {
439
+ msp_update_option( 'preset_style' , $export_array['preset_styles'] );
440
+ echo __( 'Preset styles imported successfully.', 'master-slider' ) . "<br />";
441
+ }
442
 
443
+ // import preset effects if it's included in export data
444
+ if( isset( $export_array['preset_effects'] ) && ! empty( $export_array['preset_effects'] ) ) {
445
+ msp_update_option( 'preset_effect' , $export_array['preset_effects'] );
446
+ echo __( 'Preset transitions imported successfully.', 'master-slider' ) . "<br />";
447
+ }
448
 
449
+ echo __( 'Importing slides ..', 'master-slider' ) . "<br /><br />";
450
 
451
+ // import sliders
452
+ if( isset( $export_array['sliders_data'] ) ) {
453
+ // reset image import queue
454
+ $this->image_import_queue = array();
455
+ $this->last_new_slider_id = null;
456
+ $this->import_add_sliders( $export_array['sliders_data'] );
457
+ }
458
 
459
+ echo "<br />" . __( 'All data imported successfully, have fun :)' ) . "<br />";
460
 
461
+ printf( '<a href="%s">%s</a>', admin_url( 'admin.php?page=' . MSWP_SLUG ), __( 'Back to panel ..', 'master-slider' ) );
462
+
463
+ return true;
464
+ }
465
 
466
 
467
+ /**
468
+ * Import slider(s) by exported data
469
+ *
470
+ * @param string $sliders_data the exported string
471
+ * @return bool true on success and false on failure
472
+ */
473
+ function import_add_sliders( $sliders_data ){
474
 
475
+ if( empty( $sliders_data ) )
476
+ return false;
477
 
478
+ if ( ! is_array( $sliders_data ) ){
479
+ return false;
480
+ }
481
 
482
+ foreach ( $sliders_data as $slider_fields ) {
483
 
484
+ global $mspdb;
485
 
486
+ // do not publish slider if user has not enough permission to publish sliders
487
+ $slider_fields['status'] = current_user_can( 'publish_masterslider' ) ? 'published' : 'draft';
488
+
489
+ // import slider
490
+ $new_slider_id = $mspdb->import_slider( $slider_fields );
491
+ $this->last_new_slider_id = $new_slider_id;
492
+ msp_update_slider_custom_css_and_fonts( $new_slider_id );
493
 
494
+ echo sprintf( 'Slider "%s" created successfully.', $new_slider_id ) . "<br />";
495
 
496
+ // extact and collect images from each slider
497
+ if( $this->import_medias && isset( $slider_fields['params'] ) )
498
+ $this->extract_slider_images( $slider_fields['params'] );
499
+ }
500
 
501
+ if( $this->import_medias )
502
+ $this->fetch_all_medias();
503
+
504
+ return true;
505
+ }
506
 
507
 
508
 
509
+ /**
510
+ * Extract images from slider data and add them to image_import_queue list
511
+ * @param string $slider_params the slider params
512
+ * @return void
513
+ */
514
+ public function extract_slider_images( $slider_params ) {
515
 
516
+ $parser = msp_get_parser();
517
+ $parser->set_data( $slider_params );
518
+ $results = $parser->get_results();
519
 
520
+ // collect slider background image
521
+ $this->image_import_queue[] = $results['setting']['bg_image'];
522
 
523
+ if( isset( $results['setting']['ps_slide_bg'] ) )
524
+ $this->image_import_queue[] = $results['setting']['ps_slide_bg'];
525
 
526
+ // collect slide's images
527
+ if( isset( $results['slides'] ) ) {
528
 
529
+ foreach ( $results['slides'] as $slide ) {
530
+ $this->image_import_queue[] = $slide['src'];
531
+ $this->image_import_queue[] = $slide['thumb'];
532
+ }
533
+ }
534
 
535
+ $this->image_import_queue = apply_filters( 'masterslider_extract_slider_images_to_import', $this->image_import_queue, $results );
536
+ }
537
 
538
 
539
 
540
+ /**
541
+ * Download and save slider images in upload directory
542
+ * @return void
543
+ */
544
+ public function fetch_all_medias(){
545
 
546
+ echo "<br />";
547
+ $this->image_import_queue = array_filter( $this->image_import_queue );
548
+
549
+ foreach ( $this->image_import_queue as $url ) {
550
+ $this->download_media( $url );
551
+ }
552
+ }
553
 
554
 
555
+ public function download_media( $url ){
556
 
557
+ if( ! isset( $url ) || empty( $url ) ) return '';
558
 
559
  // remove upload directory and get relative url
560
  if( $this->contains_origin_upload_dir( $url ) ) {
561
+ $url = str_replace( $this->origin_upload_baseurl, '', $url );
562
  }
563
 
564
  // skip if url was not internal media url
565
  if( $this->is_absolute_url( $url ) ) {
566
+ echo "Media already exists.<br />";
567
+ return '';
568
  }
569
 
570
 
571
  $relative_url = $url;
572
 
573
  // extract the file name and extension from the url
574
+ $file_name = basename( $relative_url );
575
 
576
+ // extract upload date
577
+ $upload_date = untrailingslashit( str_replace( $file_name, '', $relative_url ) );
578
 
579
+ // get absolute media url
580
+ $absolute_url = $this->get_absolute_media_url( $relative_url );
581
 
582
+ // printf( "Importing ( %s ) file from ( %s ) .. <br />", $relative_url, $absolute_url );
583
 
584
+ // check if import media already exist
585
+ if( is_file( $this->upload_basedir . $relative_url ) ) {
586
+ echo sprintf( 'Media “%s” already exists.', $file_name ) . "<br />";
587
+ return;
588
+ }
589
 
590
+ printf( "Importing ( %s ) file .. <br />", $relative_url );
591
 
592
+ // printf( "upload date ( %s ) .. <br />", $upload_date ); printf( "absolute url ( %s ) .. <br /><br />", $absolute_url ); return;
593
 
594
+ $upload = $this->fetch_remote_file( $absolute_url, $upload_date );
595
 
596
 
597
+ if( is_wp_error( $upload ) || $upload['error'] ) {
598
+ echo "Failed to import media." . "<br />";
599
+ return $upload;
600
+ }
601
 
602
 
603
+ // Prepare an array of post data for the attachment.
604
+ $attachment = array(
605
+ 'guid' => '',
606
+ 'post_mime_type' => '',
607
+ 'post_title' => preg_replace( '/\.[^.]+$/', '', basename( $upload['file'] ) ),
608
+ 'post_content' => '',
609
+ 'post_status' => 'inherit'
610
+ );
611
 
612
+ if ( $info = wp_check_filetype( $upload['file'] ) )
613
+ $attachment['post_mime_type'] = $info['type'];
614
+ else
615
+ return new WP_Error( 'attachment_processing_error', __('Invalid file type', 'wordpress-importer') );
616
 
617
+ $attachment['guid'] = $upload['url'];
618
 
619
+ // as per wp-admin/includes/upload.php
620
+ $attachment_id = wp_insert_attachment( $attachment, $upload['file'] );
621
 
622
+ // Make sure that this file is included, as wp_generate_attachment_metadata() depends on it.
623
+ require_once( ABSPATH . 'wp-admin/includes/image.php' );
624
 
625
+ wp_update_attachment_metadata( $attachment_id, wp_generate_attachment_metadata( $attachment_id, $upload['file'] ) );
626
 
627
 
628
 
629
+ echo sprintf( '<a href="%s" target="_blank" >%s</a> Imported successfully.', $upload['url'], $file_name ) . "<br />";
630
+ }
631
 
632
 
633
+ /**
634
+ * Attempt to download a remote file attachment
635
+ *
636
+ * @param string $url URL of item to fetch
637
+ * @param array $post Attachment details
638
+ * @return array|WP_Error Local file location details on success, WP_Error otherwise
639
+ */
640
+ function fetch_remote_file( $url, $subdir = null ) {
641
 
642
+ add_filter( 'http_request_timeout', array( $this, 'bump_request_timeout' ) );
643
 
644
+ // extract the file name and extension from the url
645
+ $file_name = basename( $url );
646
 
647
+ // get placeholder file in the upload dir with a unique, sanitized filename
648
+ $upload = $this->wp_upload_bits( $file_name, '', $subdir );
649
 
650
+ // var_dump( $upload );
651
+ //echo "<br />" . $url . "<br />"; return new WP_Error( 'import_file_error', '' );
652
 
653
+ if ( $upload['error'] )
654
+ return new WP_Error( 'upload_dir_error', $upload['error'] );
655
 
656
+ // fetch the remote url and write it to the placeholder file
657
+ $headers = wp_get_http( $url, $upload['file'] );
658
 
659
+ // request failed
660
+ if ( ! $headers ) {
661
+ @unlink( $upload['file'] );
662
+ return new WP_Error( 'import_file_error', __('Remote server did not respond', 'wordpress-importer') );
663
+ }
664
 
665
+ // make sure the fetch was successful
666
+ if ( $headers['response'] != '200' ) {
667
+ @unlink( $upload['file'] );
668
+ return new WP_Error( 'import_file_error', sprintf( __('Remote server returned error response %1$d %2$s', 'wordpress-importer'), esc_html( $headers['response'] ), get_status_header_desc( $headers['response'] ) ) );
669
+ }
670
 
671
+ $filesize = filesize( $upload['file'] );
672
 
673
+ if ( isset( $headers['content-length'] ) && $filesize != $headers['content-length'] ) {
674
+ @unlink( $upload['file'] );
675
+ return new WP_Error( 'import_file_error', __('Remote file is incorrect size', 'wordpress-importer') );
676
+ }
677
 
678
+ if ( 0 == $filesize ) {
679
+ @unlink( $upload['file'] );
680
+ return new WP_Error( 'import_file_error', __('Zero size file downloaded', 'wordpress-importer') );
681
+ }
682
 
683
+ $max_size = (int) $this->max_attachment_size();
684
+ if ( ! empty( $max_size ) && $filesize > $max_size ) {
685
+ @unlink( $upload['file'] );
686
+ return new WP_Error( 'import_file_error', sprintf(__('Remote file is too large, limit is %s', 'wordpress-importer'), size_format( $max_size ) ) );
687
+ }
688
 
689
+ return $upload;
690
+ }
691
 
692
 
693
 
694
 
695
 
696
+ /**
697
+ * Create a file in the upload folder with given content.
698
+ *
699
+ * If there is an error, then the key 'error' will exist with the error message.
700
+ * If success, then the key 'file' will have the unique file path, the 'url' key
701
+ * will have the link to the new file. and the 'error' key will be set to false.
702
+ *
703
+ * This function will not move an uploaded file to the upload folder. It will
704
+ * create a new file with the content in $bits parameter. If you move the upload
705
+ * file, read the content of the uploaded file, and then you can give the
706
+ * filename and content to this function, which will add it to the upload
707
+ * folder.
708
+ *
709
+ * The permissions will be set on the new file automatically by this function.
710
+ *
711
+ * @param string $name
712
+ * @param mixed $bits File content
713
+ * @param string $subdir Optional. Time formatted in 'yyyy/mm'.
714
+ * @return array
715
+ */
716
+ function wp_upload_bits( $name, $bits, $subdir = '' ) {
717
 
718
+ if ( empty( $name ) )
719
+ return array( 'error' => __( 'Empty filename' ) );
720
 
721
+ $wp_filetype = wp_check_filetype( $name );
722
 
723
+ if ( ! $wp_filetype['ext'] && ! current_user_can( 'unfiltered_upload' ) )
724
+ return array( 'error' => __( 'Invalid file type' ) );
725
 
726
+ $upload = wp_upload_dir();
727
 
728
+ if ( $upload['error'] !== false )
729
+ return $upload;
730
 
731
 
732
+ $upload_path = $upload['basedir'] . $subdir;
733
 
734
+ $filename = wp_unique_filename( $upload_path, $name );
735
 
736
+ $new_file = $upload_path . "/$filename";
737
 
738
+ // echo "file path : {$new_file} <br />";
739
 
740
 
741
+ if ( ! wp_mkdir_p( dirname( $new_file ) ) ) {
742
+ if ( 0 === strpos( $upload['basedir'], ABSPATH ) )
743
+ $error_path = str_replace( ABSPATH, '', $upload['basedir'] ) . $upload['subdir'];
744
+ else
745
+ $error_path = basename( $upload['basedir'] ) . $upload['subdir'];
746
 
747
+ $message = sprintf( __( 'Unable to create directory %s. Is its parent directory writable by the server?' ), $error_path );
748
+ return array( 'error' => $message );
749
+ }
750
 
751
+ $ifp = @ fopen( $new_file, 'wb' );
752
+ if ( ! $ifp )
753
+ return array( 'error' => sprintf( __( 'Could not write file %s' ), $new_file ) );
754
 
755
+ @fwrite( $ifp, $bits );
756
+ fclose( $ifp );
757
+ clearstatcache();
758
 
759
+ // Set correct file permissions
760
+ $stat = @ stat( dirname( $new_file ) );
761
+ $perms = $stat['mode'] & 0007777;
762
+ $perms = $perms & 0000666;
763
+ @ chmod( $new_file, $perms );
764
+ clearstatcache();
765
 
766
+ // Compute the URL
767
+ $url = $upload['baseurl'] . "$subdir/$filename";
768
 
769
+ return array( 'file' => $new_file, 'url' => $url, 'error' => false );
770
+ }
771
 
772
 
773
+ /**
774
+ * Added to http_request_timeout filter to force timeout at 60 seconds during import
775
+ * @return int 60
776
+ */
777
+ function bump_request_timeout() {
778
+ return 60;
779
+ }
780
 
781
 
782
 
admin/includes/classes/class-msp-list-table.php CHANGED
@@ -3,7 +3,7 @@
3
  class MSP_List_Table extends Axiom_List_Table {
4
 
5
 
6
- function __construct(){
7
 
8
  //Set parent defaults
9
  parent::__construct( array(
@@ -15,57 +15,57 @@ class MSP_List_Table extends Axiom_List_Table {
15
  }
16
 
17
 
18
- function get_columns(){
19
- $columns = array(
20
- 'ID' => __('ID' , MSWP_TEXT_DOMAIN ),
21
- 'title' => __('Name' , MSWP_TEXT_DOMAIN ),
22
- 'shortcode' => __('Shortcode', MSWP_TEXT_DOMAIN ),
23
- 'slides_num' => __('Slides', MSWP_TEXT_DOMAIN ),
24
- 'type' => __('Type', MSWP_TEXT_DOMAIN ),
25
- 'date_modified' => __('Last Modify', MSWP_TEXT_DOMAIN ),
26
- 'date_created' => __('Date Created', MSWP_TEXT_DOMAIN ),
27
- 'action' => __('Action', MSWP_TEXT_DOMAIN )
28
- );
29
- return $columns;
30
- }
31
 
32
 
33
 
34
- function get_sortable_columns() {
35
- $sortable_columns = array(
36
- 'ID' => array('ID',false),
37
- 'date_created' => array('date_created' ,false),
38
- 'date_modified' => array('date_modified',false)
39
- );
40
- return $sortable_columns;
41
- }
42
 
43
 
44
 
45
- function column_title($item) {
46
- return sprintf('<a href="?page=%s&action=%s&slider_id=%s">%s</a>',$_REQUEST['page'],'edit', $item['ID'], $item['title'] );
47
- }
48
 
49
- function column_action( $item ) {
50
- $paged = $this->get_pagenum();
51
- $paged_arg = (int)$paged > 1 ? '&paged=' . $paged : '';
52
 
53
- $buttons = '';
54
 
55
- if( current_user_can( 'duplicate_masterslider' ) || apply_filters( 'masterslider_admin_display_duplicate_btn', 0 ) )
56
- $buttons .= sprintf( '<a class="action-duplicate msp-ac-btn msp-btn-gray msp-iconic" href="?page=%s&action=%s&slider_id=%s%s"><span></span>%s</a>',$_REQUEST['page'],'duplicate' ,$item['ID'], $paged_arg, __('duplicate') );
57
-
58
- if( current_user_can( 'delete_masterslider' ) || apply_filters( 'masterslider_admin_display_delete_btn', 0 ) ) {
59
- $buttons .= sprintf( '<a class="action-delete msp-ac-btn msp-btn-red msp-iconic" href="?page=%s&action=%s&slider_id=%s%s" onClick="return confirm(\'%s\');" ><span></span>%s</a>', $_REQUEST['page'],'delete' ,$item['ID'],
60
- $paged_arg, wp_slash( apply_filters( 'masterslider_admin_delete_btn_alert_message', __( 'Are you sure you want to delete this slider?' , MSWP_TEXT_DOMAIN ) ) ),
61
- __('delete')
62
- );
63
- }
64
-
65
- $buttons .= sprintf( '<a class="action-preview msp-ac-btn msp-btn-blue msp-iconic" href="?page=%s&action=%s&slider_id=%s" onClick="lunchMastersliderPreviewBySliderID(%s);return false;" ><span></span>%s</a>',$_REQUEST['page'],'preview' ,$item['ID'], $item['ID'], __('preview') );
66
-
67
- return $buttons;
68
- }
69
 
70
 
71
 
@@ -77,124 +77,124 @@ class MSP_List_Table extends Axiom_List_Table {
77
  if( current_user_can( 'delete_masterslider' ) && 'delete' === $this->current_action() ) {
78
 
79
  global $mspdb;
80
- $mspdb->delete_slider($slider_id);
81
- // echo "Slider id ($slider_id) Removed";
82
 
83
  } else {
84
- add_action( 'admin_notices', array( $this, 'delete_error_notice' ) );
85
  }
86
 
87
  // check if a duplicate request recieved
88
  if( current_user_can( 'duplicate_masterslider' ) && 'duplicate' === $this->current_action() ) {
89
 
90
- global $mspdb;
91
- $mspdb->duplicate_slider($slider_id);
92
- // echo "Slider id ($slider_id) duplicated";
93
-
94
- } else {
95
- add_action( 'admin_notices', array( $this, 'duplicate_error_notice' ) );
96
- }
97
 
98
  }
99
 
100
 
101
  function delete_error_notice () {
102
- printf( '<div class="error" style="display:block;" ><p>%s</p></div>',
103
- apply_filters( 'masterslider_delete_insufficient_permissions_notice', __( "Sorry, You don't have enough permission to delete slider.", MSWP_TEXT_DOMAIN ) )
104
- );
105
  }
106
 
107
 
108
  function duplicate_error_notice () {
109
- printf( '<div class="error" style="display:block;" ><p>%s</p></div>',
110
- apply_filters( 'masterslider_duplicate_insufficient_permissions_notice', __( "Sorry, You don't have enough permission to duplicate slider.", MSWP_TEXT_DOMAIN ) )
111
- );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
112
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
113
 
 
 
114
 
115
- function no_items() {
116
- _e( 'No slider found.', MSWP_TEXT_DOMAIN );
117
- }
118
-
119
-
120
- function column_default( $item, $column_name ) {
121
- global $mspdb;
122
-
123
- switch( $column_name ) {
124
- case 'shortcode':
125
- return sprintf('[masterslider id="%s"]', $item['ID']);
126
- case 'date_modified':
127
-
128
- $orig_time = isset( $item['date_modified'] ) ? strtotime($item['date_modified']) : '';
129
- $time = date_i18n( 'Y/m/d @ g:i:s A', $orig_time );
130
- $human = human_time_diff( $orig_time );
131
- return sprintf( '<abbr title="%s">%s</abbr>', $time, $human . __(' ago', MSWP_TEXT_DOMAIN) ) ;
132
- case 'date_created':
133
- $orig_time = isset( $item['date_created'] ) ? strtotime($item['date_created']) : '';
134
- $date = date_i18n( 'Y/m/d', $orig_time );
135
- $time = date_i18n( 'Y/m/d @ g:i:s A', $orig_time );
136
- return sprintf( '<abbr title="%s">%s</abbr>', $time, $date );
137
- case 'slides_num':
138
- global $mspdb;
139
- return $mspdb->get_slider_field_val( $item['ID'], 'slides_num' );
140
- case 'ID':
141
- case 'title':
142
- return $item[ $column_name ];
143
- default:
144
- return;
145
- //return print_r( $item, true ) ; //Show the whole array for troubleshooting purposes
146
- }
147
- }
148
-
149
-
150
- function get_records( $perpage = 20, $paged = 1, $orderby = 'ID', $order = 'DESC', $where = "status='published'" ){
151
- global $mspdb;
152
-
153
- $offset = ( (int)$paged - 1 ) * $perpage;
154
- $orderby = isset( $_REQUEST['orderby'] ) ? $_REQUEST['orderby'] : 'ID';
155
- $order = isset( $_REQUEST['order'] ) ? $_REQUEST['order'] : 'ASC';
156
-
157
- $search = isset( $_REQUEST['s'] ) ? " AND title LIKE '%%" . $_REQUEST['s'] . "%%'" : '';
158
-
159
- return $mspdb->get_sliders( $perpage, $offset, $orderby, $order, $where.$search );
160
- }
161
-
162
-
163
- function get_total_count(){
164
- global $mspdb;
165
-
166
- $all_items = $this->get_records( 0 );
167
- return count( $all_items );
168
- }
169
-
170
-
171
-
172
- function prepare_items() {
173
-
174
- $columns = $this->get_columns();
175
- $hidden = array();
176
- $sortable = $this->get_sortable_columns();
177
-
178
- $this->_column_headers = array( $columns, $hidden, $sortable );
179
-
180
- $this->process_bulk_action();
181
-
182
- $perpage = (int) apply_filters( 'masterslider_admin_sliders_per_page', 10 );
183
- $current_page = $this->get_pagenum();
184
- $orderby = 'ID';
185
- $order = 'DESC';
186
- $total_items = $this->get_total_count();
187
-
188
-
189
- $this->items = $this->get_records( $perpage, $current_page, $orderby, $order );
190
- // echo '<pre>'; print_r( $this->items ); echo '</pre>';
191
-
192
- // tell the class the total number of items and how many items to show on a page
193
- $this->set_pagination_args( array(
194
- 'total_items' => $total_items,
195
- 'per_page' => $perpage
196
- ));
197
- }
198
 
199
  }
200
 
3
  class MSP_List_Table extends Axiom_List_Table {
4
 
5
 
6
+ function __construct(){
7
 
8
  //Set parent defaults
9
  parent::__construct( array(
15
  }
16
 
17
 
18
+ function get_columns(){
19
+ $columns = array(
20
+ 'ID' => __('ID' , 'master-slider' ),
21
+ 'title' => __('Name' , 'master-slider' ),
22
+ 'shortcode' => __('Shortcode', 'master-slider' ),
23
+ 'slides_num' => __('Slides', 'master-slider' ),
24
+ 'type' => __('Type', 'master-slider' ),
25
+ 'date_modified' => __('Last Modify', 'master-slider' ),
26
+ 'date_created' => __('Date Created', 'master-slider' ),
27
+ 'action' => __('Action', 'master-slider' )
28
+ );
29
+ return $columns;
30
+ }
31
 
32
 
33
 
34
+ function get_sortable_columns() {
35
+ $sortable_columns = array(
36
+ 'ID' => array('ID',false),
37
+ 'date_created' => array('date_created' ,false),
38
+ 'date_modified' => array('date_modified',false)
39
+ );
40
+ return $sortable_columns;
41
+ }
42
 
43
 
44
 
45
+ function column_title($item) {
46
+ return sprintf('<a href="?page=%s&action=%s&slider_id=%s">%s</a>',$_REQUEST['page'],'edit', $item['ID'], $item['title'] );
47
+ }
48
 
49
+ function column_action( $item ) {
50
+ $paged = $this->get_pagenum();
51
+ $paged_arg = (int)$paged > 1 ? '&paged=' . $paged : '';
52
 
53
+ $buttons = '';
54
 
55
+ if( current_user_can( 'duplicate_masterslider' ) || apply_filters( 'masterslider_admin_display_duplicate_btn', 0 ) )
56
+ $buttons .= sprintf( '<a class="action-duplicate msp-ac-btn msp-btn-gray msp-iconic" href="?page=%s&action=%s&slider_id=%s%s"><span></span>%s</a>',$_REQUEST['page'],'duplicate' ,$item['ID'], $paged_arg, __('duplicate') );
57
+
58
+ if( current_user_can( 'delete_masterslider' ) || apply_filters( 'masterslider_admin_display_delete_btn', 0 ) ) {
59
+ $buttons .= sprintf( '<a class="action-delete msp-ac-btn msp-btn-red msp-iconic" href="?page=%s&action=%s&slider_id=%s%s" onClick="return confirm(\'%s\');" ><span></span>%s</a>', $_REQUEST['page'],'delete' ,$item['ID'],
60
+ $paged_arg, wp_slash( apply_filters( 'masterslider_admin_delete_btn_alert_message', __( 'Are you sure you want to delete this slider?' , 'master-slider' ) ) ),
61
+ __('delete')
62
+ );
63
+ }
64
+
65
+ $buttons .= sprintf( '<a class="action-preview msp-ac-btn msp-btn-blue msp-iconic" href="?page=%s&action=%s&slider_id=%s" onClick="lunchMastersliderPreviewBySliderID(%s);return false;" ><span></span>%s</a>',$_REQUEST['page'],'preview' ,$item['ID'], $item['ID'], __('preview') );
66
+
67
+ return $buttons;
68
+ }
69
 
70
 
71
 
77
  if( current_user_can( 'delete_masterslider' ) && 'delete' === $this->current_action() ) {
78
 
79
  global $mspdb;
80
+ $mspdb->delete_slider($slider_id);
81
+ // echo "Slider id ($slider_id) Removed";
82
 
83
  } else {
84
+ add_action( 'admin_notices', array( $this, 'delete_error_notice' ) );
85
  }
86
 
87
  // check if a duplicate request recieved
88
  if( current_user_can( 'duplicate_masterslider' ) && 'duplicate' === $this->current_action() ) {
89
 
90
+ global $mspdb;
91
+ $mspdb->duplicate_slider($slider_id);
92
+ // echo "Slider id ($slider_id) duplicated";
93
+
94
+ } else {
95
+ add_action( 'admin_notices', array( $this, 'duplicate_error_notice' ) );
96
+ }
97
 
98
  }
99
 
100
 
101
  function delete_error_notice () {
102
+ printf( '<div class="error" style="display:block;" ><p>%s</p></div>',
103
+ apply_filters( 'masterslider_delete_insufficient_permissions_notice', __( "Sorry, You don't have enough permission to delete slider.", 'master-slider' ) )
104
+ );
105
  }
106
 
107
 
108
  function duplicate_error_notice () {
109
+ printf( '<div class="error" style="display:block;" ><p>%s</p></div>',
110
+ apply_filters( 'masterslider_duplicate_insufficient_permissions_notice', __( "Sorry, You don't have enough permission to duplicate slider.", 'master-slider' ) )
111
+ );
112
+ }
113
+
114
+
115
+ function no_items() {
116
+ _e( 'No slider found.', 'master-slider' );
117
+ }
118
+
119
+
120
+ function column_default( $item, $column_name ) {
121
+ global $mspdb;
122
+
123
+ switch( $column_name ) {
124
+ case 'shortcode':
125
+ return sprintf('[masterslider id="%s"]', $item['ID']);
126
+ case 'date_modified':
127
+
128
+ $orig_time = isset( $item['date_modified'] ) ? strtotime($item['date_modified']) : '';
129
+ $time = date_i18n( 'Y/m/d @ g:i:s A', $orig_time );
130
+ $human = human_time_diff( $orig_time );
131
+ return sprintf( '<abbr title="%s">%s</abbr>', $time, $human . __(' ago', 'master-slider') ) ;
132
+ case 'date_created':
133
+ $orig_time = isset( $item['date_created'] ) ? strtotime($item['date_created']) : '';
134
+ $date = date_i18n( 'Y/m/d', $orig_time );
135
+ $time = date_i18n( 'Y/m/d @ g:i:s A', $orig_time );
136
+ return sprintf( '<abbr title="%s">%s</abbr>', $time, $date );
137
+ case 'slides_num':
138
+ global $mspdb;
139
+ return $mspdb->get_slider_field_val( $item['ID'], 'slides_num' );
140
+ case 'ID':
141
+ case 'title':
142
+ return $item[ $column_name ];
143
+ default:
144
+ return;
145
+ //return print_r( $item, true ) ; //Show the whole array for troubleshooting purposes
146
  }
147
+ }
148
+
149
+
150
+ function get_records( $perpage = 20, $paged = 1, $orderby = 'ID', $order = 'DESC', $where = "status='published'" ){
151
+ global $mspdb;
152
+
153
+ $offset = ( (int)$paged - 1 ) * $perpage;
154
+ $orderby = isset( $_REQUEST['orderby'] ) ? $_REQUEST['orderby'] : 'ID';
155
+ $order = isset( $_REQUEST['order'] ) ? $_REQUEST['order'] : 'ASC';
156
+
157
+ $search = isset( $_REQUEST['s'] ) ? " AND title LIKE '%%" . $_REQUEST['s'] . "%%'" : '';
158
+
159
+ return $mspdb->get_sliders( $perpage, $offset, $orderby, $order, $where.$search );
160
+ }
161
+
162
+
163
+ function get_total_count(){
164
+ global $mspdb;
165
+
166
+ $all_items = $this->get_records( 0 );
167
+ return count( $all_items );
168
+ }
169
+
170
+
171
+
172
+ function prepare_items() {
173
+
174
+ $columns = $this->get_columns();
175
+ $hidden = array();
176
+ $sortable = $this->get_sortable_columns();
177
+
178
+ $this->_column_headers = array( $columns, $hidden, $sortable );
179
+
180
+ $this->process_bulk_action();
181
+
182
+ $perpage = (int) apply_filters( 'masterslider_admin_sliders_per_page', 10 );
183
+ $current_page = $this->get_pagenum();
184
+ $orderby = 'ID';
185
+ $order = 'DESC';
186
+ $total_items = $this->get_total_count();
187
+
188
 
189
+ $this->items = $this->get_records( $perpage, $current_page, $orderby, $order );
190
+ // echo '<pre>'; print_r( $this->items ); echo '</pre>';
191
 
192
+ // tell the class the total number of items and how many items to show on a page
193
+ $this->set_pagination_args( array(
194
+ 'total_items' => $total_items,
195
+ 'per_page' => $perpage
196
+ ));
197
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
198
 
199
  }
200
 
admin/includes/classes/class-msp-parser.php CHANGED
@@ -14,324 +14,324 @@
14
  class MSP_Parser {
15
 
16
 
17
- public $maybe_encoded_data;
18
 
19
- // ready to parse data
20
- public $parsable_data ;
21
 
22
- // recent parsed slider setting
23
- public $recent_setting;
24
 
25
- // recent parsed slides
26
- public $recent_slides ;
27
 
28
- // recent parsed styles
29
- public $recent_styles ;
30
 
31
 
32
- public $current_slider_id;
33
 
34
- public $join_char = "\n";
35
- public $tab_char = "\t";
36
 
37
 
38
-
39
- public function __construct() {
40
 
 
41
 
42
- if ( apply_filters( 'masterslider_compress_custom_css' , 1 ) ) {
43
- $this->join_char = "";
44
- $this->tab_char = "";
45
- }
46
- }
47
 
48
- public function get_setting() {
 
 
 
 
49
 
50
- }
51
 
52
- public function is_key_true( $array, $key, $default = 'true' ) {
53
- if( isset( $array[ $key ] ) ) {
54
- return $array[ $key ] ? 'true' : 'false';
55
- } else {
56
- return $default;
57
- }
58
- }
59
 
60
- public function parse_setting( $setting = array() ) {
 
 
 
 
 
 
61
 
62
- // make sure $setting is not serialized
63
- $setting = maybe_unserialize( $setting );
64
 
65
- $setid = isset( $setting['setId'] ) ? (string) $setting['setId'] : '';
 
66
 
67
- $post_cats = isset( $setting['postCats'] ) ? (array) $setting['postCats'] : array();
68
- $post_tags = isset( $setting['postTags'] ) ? (array) $setting['postTags'] : array();
69
- $tax_term_ids = implode( ',', array_merge( $post_cats, $post_tags ) );
70
 
71
- // slider options
72
- return array(
 
73
 
74
- 'id' => is_numeric( $this->current_slider_id ) ? $this->current_slider_id : ( isset( $setting['sliderId'] ) ? (string) $setting['sliderId'] : '' ),
75
- 'uid' => '', // an unique and temporary id
76
- 'class' => isset( $setting['className'] ) ? (string) $setting['className'] : '', // a class that adds to slider wrapper
77
- 'margin' => 0,
78
 
79
- 'custom_style' => isset( $setting['customStyle'] ) ? $setting['customStyle'] : '',
 
 
 
80
 
81
- 'inline_style' => isset( $setting['inlineStyle'] ) ? esc_attr( $setting['inlineStyle'] ) : '',
82
- 'bg_color' => isset( $setting['bgColor'] ) ? (string) $setting['bgColor'] : '',
83
- 'bg_image' => isset( $setting['bgImage'] ) ? msp_get_the_relative_media_url( $setting['bgImage'] ) : '',
84
 
85
- 'title' => isset( $setting['name'] ) ? (string) $setting['name'] : __( 'Untitled Slider', MSWP_TEXT_DOMAIN ), // slider name
 
 
86
 
87
- 'slider_type' => isset( $setting['type'] ) ? (string) $setting['type'] : 'custom', // values: custom, express, flickr, post_view
88
-
89
 
90
- 'width' => isset( $setting['width'] ) ? (int) rtrim($setting['width'] , 'px' ) : 300, // base width of slides. It helps the slider to resize in correct ratio.
91
- 'height' => isset( $setting['height'] ) ? (int) rtrim($setting['height'], 'px' ) : 150, // base height of slides, It helps the slider to resize in correct ratio.
92
- 'min_height' => isset( $setting['minHeight'] ) ? (int) rtrim($setting['minHeight'], 'px' ) : 0,
93
 
94
- 'start' => isset( $setting['start'] ) ? (int) $setting['start'] : 1,
95
- 'space' => isset( $setting['space'] ) ? (int) $setting['space'] : 0,
96
 
97
- 'grab_cursor' => $this->is_key_true( $setting, 'grabCursor', 'true' ), // Whether the slider uses grab mouse cursor
98
- 'swipe' => $this->is_key_true( $setting, 'swipe', 'true' ), // Whether the drag/swipe navigation is enabled
 
99
 
100
- 'wheel' => $this->is_key_true( $setting, 'wheel', 'true' ), // Enables mouse scroll wheel navigation
101
- 'mouse' => $this->is_key_true( $setting, 'mouse', 'true' ), // Whether the user can use mouse drag navigation
102
 
103
- 'crop' => $this->is_key_true( $setting, 'autoCrop', 'false' ), // Automatically crop slide images?
 
104
 
105
- 'autoplay' => $this->is_key_true( $setting, 'autoplay', 'false' ), // Enables the autoplay slideshow
106
- 'loop' => $this->is_key_true( $setting, 'loop', 'false' ), //
107
- 'shuffle' => $this->is_key_true( $setting, 'shuffle', 'false' ), // Enables the shuffle slide order
108
- 'preload' => isset( $setting['preload'] ) ? $setting['preload'] : 0,
109
 
110
- 'wrapper_width' => isset( $setting['wrapperWidth'] ) ? (int) $setting['wrapperWidth'] : '',
111
- 'wrapper_width_unit' => isset( $setting['wrapperWidthUnit'] ) ? $setting['wrapperWidthUnit'] : 'px',
112
-
113
- 'layout' => isset( $setting['layout'] ) ? (string) $setting['layout'] : 'boxed',
114
 
115
- 'fullscreen_margin' => isset( $setting['fullscreenMargin'] ) ? (int) $setting['fullscreenMargin'] : 0,
 
 
 
116
 
 
 
117
 
118
- 'height_limit' => 'true', // It force the slide to use max height value as its base specified height value.
119
- 'auto_height' => $this->is_key_true( $setting, 'autoHeight', 'false' ),
120
- 'smooth_height' => 'true',
121
-
122
- 'end_pause' => $this->is_key_true( $setting, 'endPause' , 'false' ),
123
- 'over_pause' => $this->is_key_true( $setting, 'overPause', 'false' ),
124
-
125
- 'fill_mode' => apply_filters( 'masterslider_params_default_fill_mode', 'fill' ),
126
- 'center_controls'=> $this->is_key_true( $setting, 'centerControls', 'true' ),
127
-
128
- 'speed' => isset( $setting['speed'] ) ? (int) $setting['speed'] : 17,
129
-
130
- 'skin' => isset( $setting['skin'] ) ? $setting['skin'] : 'ms-skin-default', // slider skin. should be seperated by space
131
- 'template' => isset( $setting['msTemplate'] ) ? (string) $setting['msTemplate'] : 'custom',
132
- 'template_class'=> isset( $setting['msTemplateClass'] ) ? (string) $setting['msTemplateClass'] : '',
133
- 'direction' => isset( $setting['dir'] ) ? (string) $setting['dir'] : 'h',
134
- 'view' => isset( $setting['trView'] ) ? (string) $setting['trView'] : 'basic',
135
-
136
- 'gfonts' => isset( $setting['usedFonts'] ) ? (string) $setting['usedFonts'] : '',
137
-
138
- 'parallax_mode' => isset( $setting['parallaxMode'] ) ? (string) $setting['parallaxMode'] : 'swipe',
139
-
140
- 'start_on_appear' => $this->is_key_true( $setting, 'startOnAppear', 'false' ),
141
-
142
- 'flickr_key' => isset( $setting['apiKey'] ) ? (string) $setting['apiKey'] : '',
143
- 'flickr_id' => $setid,
144
- 'flickr_count' => isset( $setting['imgCount'] ) ? (int) $setting['imgCount'] : 10,
145
- 'flickr_type' => isset( $setting['setType'] ) ? (string) $setting['setType'] : 'photos',
146
- 'flickr_size' => isset( $setting['imgSize'] ) ? (string) $setting['imgSize'] : 'c',
147
- 'flickr_thumb_size' => isset( $setting['thumbSize'] ) ? (string) $setting['thumbSize'] : 'q',
148
-
149
-
150
- 'ps_post_type' => isset( $setting['postType'] ) ? (string) $setting['postType'] : '',
151
- 'ps_tax_term_ids' => $tax_term_ids,
152
- 'ps_post_count' => isset( $setting['postCount'] ) ? (int) $setting['postCount'] : 10,
153
- 'ps_image_from' => isset( $setting['postImageType'] ) ? (string) $setting['postImageType'] : 'auto',
154
- 'ps_order' => isset( $setting['postOrder'] ) ? (string) $setting['postOrder'] : 'DESC',
155
- 'ps_orderby' => isset( $setting['postOrderDir'] ) ? (string) $setting['postOrderDir'] : 'menu_order date',
156
- 'ps_posts_not_in' => isset( $setting['postExcludeIds'] ) ? (string) $setting['postExcludeIds'] : '',
157
- 'ps_excerpt_len' => isset( $setting['postExcerptLen'] ) ? (int) $setting['postExcerptLen'] : 100,
158
- 'ps_offset' => isset( $setting['postOffset'] ) ? (int) $setting['postOffset'] : 0,
159
- 'ps_link_slide' => isset( $setting['postLinkSlide'] ) ? (boolean) $setting['postLinkSlide'] : false,
160
- 'ps_link_target' => isset( $setting['postLinkTarget'] ) ? (string) $setting['postLinkTarget'] : '_self',
161
- 'ps_slide_bg' => isset( $setting['postSlideBg'] ) ? msp_get_the_relative_media_url( $setting['postSlideBg'] ) : '',
162
-
163
- 'wc_only_featured' => $this->is_key_true( $setting, 'wcOnlyFeatured', 'false' ),
164
- 'wc_only_instock' => $this->is_key_true( $setting, 'wcOnlyInstock' , 'false' ),
165
- 'wc_only_onsale' => $this->is_key_true( $setting, 'wcOnlyOnsale' , 'false' ),
166
-
167
-
168
- 'facebook_username' => isset( $setting['setType'] ) && ( 'photostream' == $setting['setType'] ) ? $setid : '',
169
- 'facebook_albumid' => isset( $setting['setType'] ) && ( 'album' == $setting['setType'] ) ? $setid : '',
170
- 'facebook_count' => isset( $setting['imgCount'] ) ? (int) $setting['imgCount'] : 10,
171
- 'facebook_type' => isset( $setting['setType'] ) ? (string) $setting['setType'] : 'album',
172
- 'facebook_size' => isset( $setting['imgSize'] ) ? (string) $setting['imgSize'] : 'orginal',
173
- 'facebook_thumb_size' => isset( $setting['thumbSize'] ) ? (string) $setting['thumbSize'] : '320',
174
-
175
- 'arrows' => 'false', // display arrows?
176
- 'arrows_autohide' => 'true', // auto hide arrows?
177
- 'arrows_overvideo' => 'true', // visible over slide video while playing?
178
- 'arrows_hideunder' => '',
179
-
180
- 'bullets' => 'false', // display bullets?
181
- 'bullets_autohide' => 'true', // auto hide bullets?
182
- 'bullets_overvideo'=> 'true', // visible over slide video while playing?
183
- 'bullets_align' => 'bottom',
184
- 'bullets_margin' => '',
185
- 'bullets_hideunder'=> '',
186
-
187
- 'thumbs' => 'false', // display thumbnails?
188
- 'thumbs_autohide' => 'true', // auto hide thumbs?
189
- 'thumbs_overvideo' => 'true', // visible over slide video while playing?
190
- 'thumbs_type' => 'thumbs', // thumb or tabs
191
- 'thumbs_speed' => 17, // scrolling speed. It accepts float values between 0 and 100
192
- 'thumbs_inset' => 'true', // insert thumbs inside slider
193
- 'thumbs_align' => 'bottom',
194
- 'thumbs_margin' => 0,
195
- 'thumbs_width' => 100,
196
- 'thumbs_height' => 80,
197
- 'thumbs_space' => 5,
198
- 'thumbs_hideunder' => '',
199
- 'thumbs_arrows' => 'false',
200
- 'thumbs_in_tab' => 'false',
201
- 'thumbs_hoverchange'=> 'false',
202
-
203
- 'scroll' => 'false', // display scrollbar?
204
- 'scroll_autohide' => 'true', // auto hide scroll?
205
- 'scroll_overvideo' => 'true', // visible over slide video while playing?
206
- 'scroll_align' => 'top',
207
- 'scroll_inset' => 'true',
208
- 'scroll_margin' => '',
209
- 'scroll_hideunder' => '',
210
- 'scroll_color' => '#3D3D3D',
211
- 'scroll_width' => '',
212
-
213
-
214
- 'circletimer' => 'false', // display circletimer?
215
- 'circletimer_autohide' => 'true', // auto hide circletimer?
216
- 'circletimer_overvideo'=> 'true', // visible over slide video while playing?
217
- 'circletimer_color' => '#A2A2A2',// color of circle timer
218
- 'circletimer_radius' => 4, // radius of circle timer in pixels
219
- 'circletimer_stroke' => 10, // the stroke of circle timer in pixels
220
- 'circletimer_margin' => '',
221
- 'circletimer_hideunder'=> '',
222
-
223
- 'timebar' => 'false', // display timebar?
224
- 'timebar_autohide' => 'true', // auto hide timebar?
225
- 'timebar_overvideo'=> 'true', // visible over slide video while playing?
226
- 'timebar_align' => 'bottom',
227
- 'timebar_hideunder'=> '',
228
- 'timebar_color' => '#FFFFFF',
229
- 'timebar_width' => '',
230
-
231
-
232
- 'slideinfo' => 'false', // display timebar?
233
- 'slideinfo_autohide' => 'true', // auto hide timebar?
234
- 'slideinfo_overvideo'=> 'true', // visible over slide video while playing?
235
- 'slideinfo_align' => 'bottom',
236
- 'slideinfo_inset' => 'false',
237
- 'slideinfo_margin' => '',
238
- 'slideinfo_hideunder'=> '',
239
- 'slideinfo_width' => '',
240
- 'slideinfo_height' => '',
241
-
242
- 'on_change_start' => '',
243
- 'on_change_end' => '',
244
- 'on_waiting' => '',
245
- 'on_resize' => '',
246
- 'on_video_play' => '',
247
- 'on_video_close' => '',
248
- 'on_swipe_start' => '',
249
- 'on_swipe_move' => '',
250
- 'on_swipe_end' => ''
251
-
252
- );
253
-
254
-
255
- }
256
-
257
-
258
- public function parse_slide( $slide = array() ) {
259
-
260
- // make sure $slide is not serialized
261
- $slide = maybe_unserialize( $slide );
262
-
263
- if( empty( $slide ) )
264
- return $slide;
265
-
266
- // get slider setting and controls
267
- $slider_setting = $this->get_slider_setting();
268
-
269
- // get slide onfo if is set (usage: for tab content if is set)
270
- $info = isset( $slide['info'] ) ? $slide['info'] : '';
271
-
272
- if( isset( $slide['bg'] ) ) {
273
- $slide_src = msp_get_the_absolute_media_url( $slide['bg'] );
274
-
275
- // generate thumb for master slider panel
276
- msp_get_the_resized_image_src( $slide_src, 150, 150, true );
277
- }
278
-
279
-
280
- // stores a URL for thumbnail in thumbnail list
281
- $thumb = '';
282
-
283
- // add thumb just if thumblist is added to controls list
284
- // also always add thumbnail if slider template is gallery
285
- if( ( 'true' == $slider_setting['thumbs'] && 'thumbs' == $slider_setting['thumbs_type'] ) ||
286
- 'image-gallery' == $slider_setting['template']
287
- ){
288
-
289
- if( isset( $slide['thumb'] ) && ! empty( $slide['thumb'] ) ) {
290
- $thumb = $slide['thumb'];
291
- $thumb = msp_get_the_relative_media_url( $thumb );
292
-
293
- } elseif( isset( $slide['bg'] ) ) {
294
-
295
- // set custom thumb size if slider template is gallery
296
- if( 'image-gallery' == $slider_setting['template'] )
297
- $thumb = msp_get_the_resized_image_src( $slide_src, 175, 140, true );
298
- else
299
- $thumb = msp_get_the_resized_image_src( $slide_src, $slider_setting['thumbs_width'], $slider_setting['thumbs_height'], true );
300
-
301
- $thumb = msp_get_the_relative_media_url( $thumb );
302
 
303
- }
304
-
305
- }
306
 
307
- // stores a URL for thumbnail in tab
308
- $tab_thumb = '';
309
 
310
- // get thumb for tab if thumblist is added to controls list
311
- if( ( 'true' == $slider_setting['thumbs'] &&
312
- 'tabs' == $slider_setting['thumbs_type'] ) &&
313
- 'true' == $slider_setting['thumbs_in_tab'] ){
314
 
315
- if( isset( $slide['thumb'] ) && ! empty( $slide['thumb'] ) ) {
316
- $tab_thumb = $slide['thumb'];
317
- $tab_thumb = msp_get_the_relative_media_url( $tab_thumb );
318
 
319
- } elseif( isset( $slide['bg'] ) ) {
320
- // generate a square thumb for tab
321
- $tab_thumb = msp_get_the_resized_image_src( $slide_src, $slider_setting['thumbs_height'], $slider_setting['thumbs_height'], true );
322
- $tab_thumb = msp_get_the_relative_media_url( $tab_thumb );
323
- }
324
- }
325
 
 
326
 
327
- $slides = array(
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
328
 
329
  'slide_order'=> isset( $slide['order'] ) ? (int) $slide['order'] : 0,
330
 
331
  'css_class' => isset( $slide['cssClass'] ) ? (string) $slide['cssClass'] : '',
332
  'css_id' => isset( $slide['cssId'] ) ? (string) $slide['cssId'] : '',
333
 
334
- 'ishide' => $this->is_key_true( $slide, 'ishide', 'false' ),
335
 
336
  'src' => isset( $slide['bg'] ) ? esc_attr( msp_get_the_relative_media_url( $slide['bg'] ) ) : '',
337
  'src_full' => isset( $slide['bg'] ) ? esc_attr( msp_get_the_relative_media_url( $slide['bg'] ) ) : '',
@@ -360,9 +360,9 @@ class MSP_Parser {
360
  'vbgalign' => isset( $slide['bgv_fillmode'] ) ? (string) $slide['bgv_fillmode'] : 'fill',
361
 
362
  'thumb' => $thumb,
363
- 'tab' => 'true' == $slider_setting['thumbs'] && 'tabs' == $slider_setting['thumbs_type'] ? str_replace( '"', '&quote;', $info ) : '',
364
  'tab_thumb' => $tab_thumb,
365
- 'delay' => isset( $slide['duration'] ) ? (string) $slide['duration'] : '', // data-delay
366
  'bgalign' => isset( $slide['fillMode'] ) ? (string) $slide['fillMode'] : 'fill', // data-fill-mode
367
  'bgcolor' => isset( $slide['bgColor'] ) ? (string) $slide['bgColor'] : '',
368
 
@@ -370,71 +370,71 @@ class MSP_Parser {
370
  'tintcolor' => isset( $slide['colorOverlay'] ) ? (string) $slide['colorOverlay'] : '',
371
  );
372
 
373
- return $slides;
374
- }
375
 
376
 
377
- public function parse_each_style( $style_obj, $allowed_style_type = array( 'custom' ) ) {
378
 
379
- // make sure $style_obj is not serialized
380
- $style_obj = maybe_unserialize( $style_obj );
381
 
382
- if( empty( $style_obj ) )
383
- return $style_obj;
384
 
385
- $allowed_style_type = (array) $allowed_style_type;
386
 
387
- if( ! isset( $style_obj['type'] ) || ( ! in_array( $style_obj['type'], $allowed_style_type ) ) )
388
- return '';
389
 
390
- // the css block selector
391
- $class_name = isset( $style_obj['className'] ) ? ".". $style_obj['className'] : '';
392
- // store css styles
393
- $css = '';
394
 
395
  $supported_css_props = array(
396
 
397
- 'backgroundColor' => array('background-color' , '' ),
398
-
399
- 'paddingTop' => array('padding-top' , 'px'),
400
- 'paddingRight' => array('padding-right' , 'px'),
401
- 'paddingBottom' => array('padding-bottom' , 'px'),
402
- 'paddingLeft' => array('padding-left' , 'px'),
403
-
404
- 'borderTop' => array('border-top' , 'px'),
405
- 'borderRight' => array('border-right' , 'px'),
406
- 'borderBottom' => array('border-bottom' , 'px'),
407
- 'borderLeft' => array('border-left' , 'px'),
408
-
409
- 'borderColor' => array('border-color' , '' ),
410
- 'borderRadius' => array('border-radius' , 'px'),
411
- 'borderStyle' => array('border-style' , '' ),
412
-
413
- 'fontFamily' => array('font-family' , '' ),
414
- 'fontWeight' => array('font-weight' , '' ),
415
- 'fontSize' => array('font-size' , 'px'),
416
-
417
- 'textAlign' => array('text-align' , '' ),
418
- 'letterSpacing' => array('letter-spacing' , 'px'),
419
- 'lineHeight' => array('line-height' , 'px'),
420
- 'whiteSpace' => array('white-space' , '' ),
421
- 'color' => array('color' , '' )
422
  );
423
 
424
  foreach ( $supported_css_props as $js_prop => $parse_option ) {
425
 
426
- if( isset( $style_obj[$js_prop] ) && ! empty( $style_obj[$js_prop] ) ) {
427
- // if prop is font-family add quote around font name
428
- if ( 'fontFamily' == $js_prop )
429
- $css .= sprintf( "%s%s:\"%s\";", $this->tab_char, $parse_option['0'], rtrim( $style_obj[$js_prop] ) ) . $this->join_char;
430
 
431
- elseif ( 'lineHeight' == $js_prop && 'normal' == $style_obj[$js_prop] )
432
- $css .= sprintf( "%s%s:%s;", $this->tab_char, $parse_option['0'], rtrim( $style_obj[$js_prop] ) ) . $this->join_char;
433
 
434
- else
435
- $css .= sprintf( "%s%s:%s%s;" , $this->tab_char, $parse_option['0'], rtrim( $style_obj[$js_prop], $parse_option['1'] ), $parse_option['1'] ) . $this->join_char;
436
-
437
- }
438
  }
439
 
440
  // add custom styles at the end
@@ -442,383 +442,388 @@ class MSP_Parser {
442
  // create css block
443
  $css_block = $this->join_char.$class_name." { ".$this->join_char.$css." } \n";
444
  //$css_block = sprintf( "\n%s {\n%s\n} \n", $class_name, $css );
445
-
446
  return apply_filters( 'msp_parse_each_style', $css_block, $class_name, $css, $supported_css_props );
447
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
448
 
449
 
450
 
 
 
 
 
451
 
452
 
453
 
454
- // set/store panel raw and parsed data for further use
455
- public function set_data( $data, $slider_id = null ) {
456
- $this->reset();
457
 
458
- $this->maybe_encoded_data = $data;
459
- $this->current_slider_id = $slider_id;
460
 
461
- $decoded = msp_maybe_base64_decode( $data );
462
- $this->parsable_data = json_decode($decoded);
463
- }
464
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
465
 
466
- // reset cache data
467
- public function reset() {
468
- $this->recent_setting = null;
469
- $this->recent_slides = null;
470
- $this->recent_styles = null;
471
- $this->maybe_encoded_data = null;
472
- }
473
 
474
 
475
 
476
- // get decoded and parsable panel data
477
- public function get_parsable_data() {
478
- return $this->parsable_data;
479
- }
480
 
481
 
 
 
 
 
 
482
 
483
 
 
 
 
 
 
484
 
485
 
486
- public function get_raw_callbacks(){
487
- if ( isset( $this->parsable_data->{'MSPanel.Callback'} ) )
488
- return $this->parsable_data->{'MSPanel.Callback'};
489
- return array();
490
- }
491
 
 
 
 
492
 
493
- public function get_callbacks_params(){
494
- $callbacks_list = $this->get_raw_callbacks();
 
 
 
 
 
 
495
 
496
- $callbacks_params = array();
497
 
498
- foreach ($callbacks_list as $id => $callback_json) {
499
- $raw_json_decoded_callback = json_decode( $callback_json, true );
500
- $callback_params = $this->get_callback_params( $raw_json_decoded_callback );
501
- $callbacks_params = wp_parse_args( $callback_params, $callbacks_params );
502
- }
503
 
504
- return $callbacks_params;
505
- }
506
 
507
 
508
- public function get_callback_params( $callback ) {
509
-
510
- $name = isset( $callback['name'] ) ? (string) $callback['name'] : '';
511
 
512
- switch ( $name ) {
513
- case 'CHANGE_START':
514
- return array( 'on_change_start' => isset( $callback['content'] ) ? base64_encode( $callback['content'] ) : '' );
515
- case 'CHANGE_END':
516
- return array( 'on_change_end' => isset( $callback['content'] ) ? base64_encode( $callback['content'] ) : '' );
517
- case 'WAITING':
518
- return array( 'on_waiting' => isset( $callback['content'] ) ? base64_encode( $callback['content'] ) : '' );
519
- case 'RESIZE':
520
- return array( 'on_resize' => isset( $callback['content'] ) ? base64_encode( $callback['content'] ) : '' );
521
- case 'VIDEO_PLAY':
522
- return array( 'on_video_play' => isset( $callback['content'] ) ? base64_encode( $callback['content'] ) : '' );
523
- case 'VIDEO_CLOSE':
524
- return array( 'on_video_close' => isset( $callback['content'] ) ? base64_encode( $callback['content'] ) : '' );
525
- case 'SWIPE_START':
526
- return array( 'on_swipe_start' => isset( $callback['content'] ) ? base64_encode( $callback['content'] ) : '' );
527
- case 'SWIPE_MOVE':
528
- return array( 'on_swipe_move' => isset( $callback['content'] ) ? base64_encode( $callback['content'] ) : '' );
529
- case 'SWIPE_END':
530
- return array( 'on_swipe_end' => isset( $callback['content'] ) ? base64_encode( $callback['content'] ) : '' );
531
- default:
532
- return array();
533
- }
534
-
535
- }
536
-
537
-
538
-
539
-
540
-
541
-
542
-
543
-
544
- public function get_raw_controls(){
545
- if ( isset( $this->parsable_data->{'MSPanel.Control'} ) )
546
- return $this->parsable_data->{'MSPanel.Control'};
547
- return array();
548
- }
549
-
550
-
551
- public function get_controls_params(){
552
- $controls_list = $this->get_raw_controls();
553
-
554
- $controls_params = array();
555
-
556
- foreach ($controls_list as $id => $control_json) {
557
- $raw_json_decoded_control = json_decode( $control_json, true );
558
- $control_params = $this->get_control_params( $raw_json_decoded_control );
559
- $controls_params = wp_parse_args( $control_params, $controls_params );
560
- }
561
-
562
- return $controls_params;
563
- }
564
-
565
-
566
- public function get_control_params( $control ) {
567
-
568
- $name = isset( $control['name'] ) ? (string) $control['name'] : '';
569
-
570
- switch ( $name ) {
571
- case 'thumblist':
572
- return array(
573
- 'thumbs' => 'true',
574
- 'thumbs_autohide' => $this->is_key_true( $control, 'autoHide' , 'true' ),
575
- 'thumbs_overvideo' => $this->is_key_true( $control, 'overVideo', 'true' ),
576
- 'thumbs_speed' => isset( $control['speed'] ) ? (int) $control['speed'] : 17,
577
- 'thumbs_type' => isset( $control['type'] ) ? (string) $control['type'] : 'thumbs',
578
- 'thumbs_inset' => $this->is_key_true( $control, 'inset', 'false' ),
579
- 'thumbs_align' => isset( $control['align'] ) ? (string) $control['align'] : 'bottom',
580
- 'thumbs_margin' => isset( $control['margin'] ) ? (int) $control['margin'] : '',
581
- 'thumbs_width' => isset( $control['width'] ) ? (int) $control['width'] : 100,
582
- 'thumbs_height' => isset( $control['height'] ) ? (int) $control['height'] : 80,
583
- 'thumbs_space' => isset( $control['space'] ) ? (int) $control['space'] : 5,
584
- 'thumbs_hideunder' => isset( $control['hideUnder'] ) ? (int) $control['hideUnder'] : '',
585
- 'thumbs_fillmode' => isset( $control['fillMode'] ) ? (string) $control['fillMode'] : 'fill',
586
- 'thumbs_custom_class' => isset( $control['customClass'] ) ? (string) $control['customClass'] : 'ms-tab-thumb',
587
- 'thumbs_arrows' => $this->is_key_true( $control, 'arrows' , 'false' ),
588
- 'thumbs_in_tab' => $this->is_key_true( $control, 'insertThumb' , 'false' ),
589
- 'thumbs_hoverchange' => $this->is_key_true( $control, 'hoverChange' , 'false' )
590
- );
591
- case 'bullets':
592
- return array(
593
- 'bullets' => 'true',
594
- 'bullets_autohide' => $this->is_key_true( $control, 'autoHide' , 'true' ),
595
- 'bullets_overvideo'=> $this->is_key_true( $control, 'overVideo', 'true' ),
596
- 'bullets_align' => isset( $control['align'] ) ? (string) $control['align'] : 'bottom',
597
- 'bullets_margin' => isset( $control['margin'] ) ? (int) $control['margin'] : '',
598
- 'bullets_hideunder' => isset( $control['hideUnder'] ) ? (int) $control['hideUnder'] : ''
599
- );
600
- case 'scrollbar':
601
- return array(
602
- 'scroll' => 'true',
603
- 'scroll_autohide' => $this->is_key_true( $control, 'autoHide' , 'true' ),
604
- 'scroll_overvideo' => $this->is_key_true( $control, 'overVideo', 'true' ),
605
- //'scroll_width' => isset( $control['width'] ) ? (int) $control['width'] : '',
606
- 'scroll_align' => isset( $control['align'] ) ? (string) $control['align'] : 'top',
607
- 'scroll_color' => isset( $control['color'] ) ? (string) $control['color'] : '#3D3D3D',
608
- 'scroll_margin' => isset( $control['margin'] ) ? (int) $control['margin'] : '',
609
- 'scroll_inset' => $this->is_key_true( $control, 'inset', 'true' ),
610
- 'scroll_hideunder' => isset( $control['hideUnder'] ) ? (int) $control['hideUnder'] : '',
611
- 'scroll_width' => isset( $control['width'] ) ? (int) $control['width'] : ''
612
- );
613
- case 'arrows':
614
- return array(
615
- 'arrows' => 'true',
616
- 'arrows_autohide' => $this->is_key_true( $control, 'autoHide' , 'true' ),
617
- 'arrows_overvideo' => $this->is_key_true( $control, 'overVideo', 'true' ),
618
- 'arrows_hideunder' => isset( $control['hideUnder'] ) ? (int) $control['hideUnder'] : ''
619
- );
620
- case 'timebar':
621
- return array(
622
- 'timebar' => 'true',
623
- 'timebar_autohide' => $this->is_key_true( $control, 'autoHide' , 'true' ),
624
- 'timebar_overvideo'=> $this->is_key_true( $control, 'overVideo', 'true' ),
625
- 'timebar_align' => isset( $control['align'] ) ? (string) $control['align'] : 'bottom',
626
- 'timebar_color' => isset( $control['color'] ) ? (string) $control['color'] : '#FFFFFF',
627
- 'timebar_hideunder'=> isset( $control['hideUnder'] ) ? (int) $control['hideUnder'] : '',
628
- 'timebar_width' => isset( $control['width'] ) ? (int) $control['width'] : ''
629
- );
630
- case 'circletimer':
631
- return array(
632
- 'circletimer' => 'true',
633
- 'circletimer_autohide' => $this->is_key_true( $control, 'autoHide' , 'true' ),
634
- 'circletimer_overvideo'=> $this->is_key_true( $control, 'overVideo', 'true' ),
635
- 'circletimer_color' => isset( $control['color'] ) ? (string) $control['color'] : '#A2A2A2',
636
- 'circletimer_radius' => isset( $control['radius'] ) ? (int) $control['radius'] : 4,
637
- 'circletimer_stroke' => isset( $control['stroke'] ) ? (int) $control['stroke'] : 10,
638
- 'circletimer_margin' => isset( $control['margin'] ) ? (int) $control['margin'] : '',
639
- 'circletimer_hideunder'=> isset( $control['hideUnder'] ) ? (int) $control['hideUnder'] : ''
640
- );
641
- case 'slideinfo':
642
- return array(
643
- 'slideinfo' => 'true',
644
- 'slideinfo_autohide' => $this->is_key_true( $control, 'autoHide' , 'true' ),
645
- 'slideinfo_overvideo'=> $this->is_key_true( $control, 'overVideo', 'true' ),
646
- 'slideinfo_align' => isset( $control['align'] ) ? (string) $control['align'] : 'bottom',
647
- 'slideinfo_inset' => $this->is_key_true( $control, 'inset', 'false' ),
648
- 'slideinfo_margin' => isset( $control['margin'] ) ? (int) $control['margin'] : '',
649
- 'slideinfo_hideunder'=> isset( $control['hideUnder'] ) ? (int) $control['hideUnder'] : '',
650
- 'slideinfo_width' => isset( $control['width'] ) ? (int) $control['width'] : '',
651
- 'slideinfo_height' => isset( $control['height'] ) ? (int) $control['height'] : ''
652
- );
653
- default:
654
- return array();
655
- }
656
-
657
- }
658
-
659
-
660
-
661
-
662
-
663
- public function has_raw_setting(){
664
- if ( isset( $this->parsable_data->{'MSPanel.Settings'} ) && isset( $this->parsable_data->{'MSPanel.Settings'}->{'1'} ) )
665
- return true;
666
- return false;
667
- }
668
-
669
-
670
- public function get_raw_setting(){
671
- if ( $this->has_raw_setting() )
672
- return $this->parsable_data->{'MSPanel.Settings'}->{'1'};
673
- return null;
674
- }
675
-
676
-
677
- public function get_slider_setting( $force_new_parse = false ){
678
- $raw_setting = $this->get_raw_setting();
679
-
680
- if( is_null( $raw_setting ) ){
681
- return $this->parse_setting();
682
- }
683
-
684
- if( is_null( $this->recent_setting ) || $force_new_parse ) {
685
- $raw_json_decoded_setting = json_decode( $raw_setting, true );
686
- $this->recent_setting = $this->parse_setting( $raw_json_decoded_setting );
687
- $this->recent_setting = wp_parse_args( $this->get_controls_params() , $this->recent_setting );
688
- $this->recent_setting = wp_parse_args( $this->get_callbacks_params(), $this->recent_setting );
689
- }
690
- return $this->recent_setting;
691
- }
692
 
 
 
 
 
 
 
693
 
694
 
 
 
 
 
 
 
695
 
696
 
 
697
 
 
 
 
698
 
699
- // is slides data passed in raw panel data?
700
- public function has_raw_slide() {
701
- if ( isset( $this->parsable_data->{'MSPanel.Slide'} ) )
702
- return true;
703
- return false;
704
- }
705
 
 
 
 
 
706
 
707
- public function get_raw_slides() {
708
- if ( $this->has_raw_slide() ) {
709
- return $this->parsable_data->{'MSPanel.Slide'};
710
- }
711
- return null;
712
- }
713
 
714
 
715
- public function get_parsable_slides() {
716
 
717
- if( ! $raw_slides = $this->get_raw_slides() ){
718
- return array();
719
- }
720
 
721
- $valid_slides = array();
722
 
723
- foreach ( $raw_slides as $id => $raw_slide ) {
724
- $raw_json_decoded_slide = json_decode( $raw_slide, true );
725
- $valid_slides[ $raw_json_decoded_slide['order'] ] = $raw_json_decoded_slide;
726
- }
727
 
728
- ksort( $valid_slides );
729
- return $valid_slides;
730
- }
731
 
 
 
 
732
 
733
- public function get_slides( $force_new_parse = false ) {
 
 
 
734
 
735
- if( is_null( $this->recent_slides ) || $force_new_parse ) {
736
 
737
- $parsable_slides = $this->get_parsable_slides();
738
 
739
- if ( empty( $parsable_slides ) )
740
- return $parsable_slides;
741
 
742
- $slides = array();
743
 
744
- foreach ( $parsable_slides as $slide ) {
745
- $slides[] = $this->parse_slide( $slide );
746
- }
747
 
748
- $this->recent_slides = $slides;
749
- }
750
- return $this->recent_slides;
751
- }
752
 
 
 
 
 
 
753
 
754
 
 
 
 
 
 
 
755
 
756
 
 
757
 
 
 
 
758
 
759
- public function has_raw_style() {
760
- if ( isset( $this->parsable_data->{'MSPanel.Style'} ) )
761
- return true;
762
- return false;
763
- }
764
 
 
 
 
 
765
 
766
- public function get_raw_styles() {
767
- if ( $this->has_raw_style() ) {
768
- return $this->parsable_data->{'MSPanel.Style'};
769
- }
770
- return null;
771
- }
772
 
773
 
774
- public function get_parsable_styles() {
775
 
776
- if( ! $raw_styles = $this->get_raw_styles() ){
777
- return array();
778
- }
779
 
780
- $valid_styles = array();
781
 
782
- foreach ( $raw_styles as $id => $raw_style ) {
783
- $raw_json_decoded_style = json_decode( $raw_style, true );
784
- $valid_styles[] = $raw_json_decoded_style;
785
- }
786
 
787
- return $valid_styles;
788
- }
789
 
 
 
 
790
 
791
- public function get_styles_list( $force_new_parse = false ) {
 
792
 
793
- if( is_null( $this->recent_styles ) || $force_new_parse ) {
 
794
 
795
- $parsable_styles = $this->get_parsable_styles();
796
 
797
- if ( empty( $parsable_styles ) )
798
- return $parsable_styles;
799
 
800
- $styles = array();
 
 
801
 
802
- foreach ( $parsable_styles as $id => $style ) {
803
- $styles[$id] = $this->parse_each_style( $style );
804
- }
805
 
806
- $this->recent_styles = $styles;
807
- }
808
 
809
- return $this->recent_styles;
810
- }
811
 
812
 
813
- public function get_styles( $force_new_parse = false ) {
814
- $styles_list = $this->get_styles_list();
815
-
816
- // custom css code for sliders added
817
- $setting = $this->get_slider_setting();
818
- $styles_list[] = $setting['custom_style'];
819
 
820
- return implode( $this->join_char, $styles_list );
821
- }
822
 
823
 
824
 
@@ -826,128 +831,123 @@ class MSP_Parser {
826
 
827
 
828
 
 
829
 
 
 
830
 
 
831
 
 
 
 
832
 
 
 
833
 
834
- private function get_preset_styles_list( $parsable_preset_styles ) {
 
835
 
836
- if ( empty( $parsable_preset_styles ) )
837
- return $parsable_preset_styles;
 
 
838
 
839
- $preset_styles = array();
 
 
840
 
841
- foreach ( $parsable_preset_styles as $id => $preset_style ) {
842
- $preset_styles[$id] = $this->parse_each_style( $preset_style, 'preset' );
843
- }
844
 
845
- return $preset_styles;
846
- }
847
 
848
- public function preset_data_to_styles( $raw_preset_styles ){
849
- $valid_preset_styles = array();
850
 
851
- foreach ( $raw_preset_styles as $id => $raw_preset_style ) {
852
- $raw_json_decoded_preset_style = json_decode( $raw_preset_style, true );
853
- $valid_preset_styles[] = $raw_json_decoded_preset_style;
854
- }
855
 
856
- $preset_styles_list = $this->get_preset_styles_list( $valid_preset_styles );
857
- return implode( $this->join_char, $preset_styles_list );
858
- }
859
 
860
- public function get_preset_styles( $raw_preset ) {
861
 
862
- $b64_decoded = msp_maybe_base64_decode( $raw_preset );
863
- $preset_data = json_decode( $b64_decoded );
864
-
865
- if ( ! isset( $preset_data->{'MSPanel.PresetStyle'} ) )
866
- return '';
867
 
868
- $raw_preset_styles = $preset_data->{'MSPanel.PresetStyle'};
869
 
870
- return $this->preset_data_to_styles( $raw_preset_styles );
871
- }
872
 
873
 
 
874
 
 
 
875
 
 
876
 
 
 
877
 
878
- private function get_buttons_styles_list( $parsable_buttons_styles ) {
 
 
 
 
 
 
879
 
880
- if ( empty( $parsable_buttons_styles ) )
881
- return $parsable_buttons_styles;
882
 
883
- $buttons_styles = array();
 
884
 
885
- foreach ( $parsable_buttons_styles as $id => $button_style ) {
886
- if( ! isset( $button_style['className'] ) ) continue;
 
 
887
 
888
- if( isset( $button_style['normal'] ) )
889
- $button_styles[] = sprintf( ".%s{ %s }", $button_style['className'], str_replace("\n", "", $button_style['normal'] ) );
890
- if( isset( $button_style['hover'] ) )
891
- $button_styles[] = sprintf( ".%s:hover{ %s }", $button_style['className'], str_replace("\n", "", $button_style['hover'] ) );
892
- if( isset( $button_style['active'] ) )
893
- $button_styles[] = sprintf( ".%s:active{ %s }", $button_style['className'], str_replace("\n", "", $button_style['active'] ) );
894
- }
895
-
896
- return $button_styles;
897
- }
898
 
899
- public function buttons_data_to_styles( $raw_buttons_styles ){
900
- $valid_buttons_styles = array();
901
 
902
- foreach ( $raw_buttons_styles as $id => $raw_buttons_style ) {
903
- $raw_json_decoded_buttons_style = json_decode( $raw_buttons_style, true );
904
- $valid_buttons_styles[] = $raw_json_decoded_buttons_style;
905
- }
906
-
907
- $buttons_styles_list = $this->get_buttons_styles_list( $valid_buttons_styles );
908
- return implode( $this->join_char. " ", $buttons_styles_list );
909
- }
910
 
911
- public function get_buttons_styles( $raw_buttons ) {
 
912
 
913
- $b64_decoded = msp_maybe_base64_decode( $raw_buttons );
914
- $buttons_data = json_decode( $b64_decoded );
915
-
916
- if ( ! isset( $buttons_data->{'MSPanel.ButtonStyle'} ) )
917
- return '';
918
 
919
- $raw_buttons_styles = $buttons_data->{'MSPanel.ButtonStyle'};
920
- return $this->buttons_data_to_styles( $raw_buttons_styles );
921
- }
922
-
923
 
924
 
925
 
926
 
927
 
928
 
929
- public function parser_slider( $force_new_parse = false ) {
930
- $this->get_slider_setting( $force_new_parse );
931
- $this->get_slides( $force_new_parse );
932
- $this->get_styles( $force_new_parse );
933
- }
934
 
935
 
936
- public function get_results( $force_new_parse = false ) {
937
- $result = array();
938
 
939
- $result['setting'] = $this->get_slider_setting( $force_new_parse );
940
- $result['slides'] = $this->get_slides( $force_new_parse );
941
- $result['styles'] = $this->get_styles( $force_new_parse );
942
 
943
- return $result;
944
- }
945
 
946
 
947
- // pretty human readable print for parsed data
948
- public function pretty_print() {
949
- axpp( $this->parsable_data );
950
- }
951
 
952
 
953
- }
14
  class MSP_Parser {
15
 
16
 
17
+ public $maybe_encoded_data;
18
 
19
+ // ready to parse data
20
+ public $parsable_data ;
21
 
22
+ // recent parsed slider setting
23
+ public $recent_setting;
24
 
25
+ // recent parsed slides
26
+ public $recent_slides ;
27
 
28
+ // recent parsed styles
29
+ public $recent_styles ;
30
 
31
 
32
+ public $current_slider_id;
33
 
34
+ public $join_char = "\n";
35
+ public $tab_char = "\t";
36
 
37
 
 
 
38
 
39
+ public function __construct() {
40
 
 
 
 
 
 
41
 
42
+ if ( apply_filters( 'masterslider_compress_custom_css' , 1 ) ) {
43
+ $this->join_char = "";
44
+ $this->tab_char = "";
45
+ }
46
+ }
47
 
48
+ public function get_setting() {
49
 
50
+ }
 
 
 
 
 
 
51
 
52
+ public function is_key_true( $array, $key, $default = 'true' ) {
53
+ if( isset( $array[ $key ] ) ) {
54
+ return $array[ $key ] ? 'true' : 'false';
55
+ } else {
56
+ return $default;
57
+ }
58
+ }
59
 
60
+ public function parse_setting( $setting = array() ) {
 
61
 
62
+ // make sure $setting is not serialized
63
+ $setting = maybe_unserialize( $setting );
64
 
65
+ $setid = isset( $setting['setId'] ) ? (string) $setting['setId'] : '';
 
 
66
 
67
+ $post_cats = isset( $setting['postCats'] ) ? (array) $setting['postCats'] : array();
68
+ $post_tags = isset( $setting['postTags'] ) ? (array) $setting['postTags'] : array();
69
+ $tax_term_ids = implode( ',', array_merge( $post_cats, $post_tags ) );
70
 
71
+ // slider options
72
+ return array(
 
 
73
 
74
+ 'id' => is_numeric( $this->current_slider_id ) ? $this->current_slider_id : ( isset( $setting['sliderId'] ) ? (string) $setting['sliderId'] : '' ),
75
+ 'uid' => '', // an unique and temporary id
76
+ 'class' => isset( $setting['className'] ) ? (string) $setting['className'] : '', // a class that adds to slider wrapper
77
+ 'margin' => 0,
78
 
79
+ 'custom_style' => isset( $setting['customStyle'] ) ? $setting['customStyle'] : '',
 
 
80
 
81
+ 'inline_style' => isset( $setting['inlineStyle'] ) ? esc_attr( $setting['inlineStyle'] ) : '',
82
+ 'bg_color' => isset( $setting['bgColor'] ) ? (string) $setting['bgColor'] : '',
83
+ 'bg_image' => isset( $setting['bgImage'] ) ? msp_get_the_relative_media_url( $setting['bgImage'] ) : '',
84
 
85
+ 'title' => isset( $setting['name'] ) ? (string) $setting['name'] : __( 'Untitled Slider', 'master-slider' ), // slider name
 
86
 
87
+ 'slider_type' => isset( $setting['type'] ) ? (string) $setting['type'] : 'custom', // values: custom, express, flickr, post_view
 
 
88
 
 
 
89
 
90
+ 'width' => isset( $setting['width'] ) ? (int) rtrim($setting['width'] , 'px' ) : 300, // base width of slides. It helps the slider to resize in correct ratio.
91
+ 'height' => isset( $setting['height'] ) ? (int) rtrim($setting['height'], 'px' ) : 150, // base height of slides, It helps the slider to resize in correct ratio.
92
+ 'min_height' => isset( $setting['minHeight'] ) ? (int) rtrim($setting['minHeight'], 'px' ) : 0,
93
 
94
+ 'start' => isset( $setting['start'] ) ? (int) $setting['start'] : 1,
95
+ 'space' => isset( $setting['space'] ) ? (int) $setting['space'] : 0,
96
 
97
+ 'grab_cursor' => $this->is_key_true( $setting, 'grabCursor', 'true' ), // Whether the slider uses grab mouse cursor
98
+ 'swipe' => $this->is_key_true( $setting, 'swipe', 'true' ), // Whether the drag/swipe navigation is enabled
99
 
100
+ 'wheel' => $this->is_key_true( $setting, 'wheel', 'true' ), // Enables mouse scroll wheel navigation
101
+ 'mouse' => $this->is_key_true( $setting, 'mouse', 'true' ), // Whether the user can use mouse drag navigation
 
 
102
 
103
+ 'crop' => $this->is_key_true( $setting, 'autoCrop', 'false' ), // Automatically crop slide images?
 
 
 
104
 
105
+ 'autoplay' => $this->is_key_true( $setting, 'autoplay', 'false' ), // Enables the autoplay slideshow
106
+ 'loop' => $this->is_key_true( $setting, 'loop', 'false' ), //
107
+ 'shuffle' => $this->is_key_true( $setting, 'shuffle', 'false' ), // Enables the shuffle slide order
108
+ 'preload' => isset( $setting['preload'] ) ? $setting['preload'] : 0,
109
 
110
+ 'wrapper_width' => isset( $setting['wrapperWidth'] ) ? (int) $setting['wrapperWidth'] : '',
111
+ 'wrapper_width_unit' => isset( $setting['wrapperWidthUnit'] ) ? $setting['wrapperWidthUnit'] : 'px',
112
 
113
+ 'layout' => isset( $setting['layout'] ) ? (string) $setting['layout'] : 'boxed',
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
114
 
115
+ 'fullscreen_margin' => isset( $setting['fullscreenMargin'] ) ? (int) $setting['fullscreenMargin'] : 0,
 
 
116
 
 
 
117
 
118
+ 'height_limit' => 'true', // It force the slide to use max height value as its base specified height value.
119
+ 'auto_height' => $this->is_key_true( $setting, 'autoHeight', 'false' ),
120
+ 'smooth_height' => 'true',
 
121
 
122
+ 'end_pause' => $this->is_key_true( $setting, 'endPause' , 'false' ),
123
+ 'over_pause' => $this->is_key_true( $setting, 'overPause', 'false' ),
 
124
 
125
+ 'fill_mode' => apply_filters( 'masterslider_params_default_fill_mode', 'fill' ),
126
+ 'center_controls'=> $this->is_key_true( $setting, 'centerControls', 'true' ),
 
 
 
 
127
 
128
+ 'speed' => isset( $setting['speed'] ) ? (int) $setting['speed'] : 17,
129
 
130
+ 'skin' => isset( $setting['skin'] ) ? $setting['skin'] : 'ms-skin-default', // slider skin. should be seperated by space
131
+ 'template' => isset( $setting['msTemplate'] ) ? (string) $setting['msTemplate'] : 'custom',
132
+ 'template_class'=> isset( $setting['msTemplateClass'] ) ? (string) $setting['msTemplateClass'] : '',
133
+ 'direction' => isset( $setting['dir'] ) ? (string) $setting['dir'] : 'h',
134
+ 'view' => isset( $setting['trView'] ) ? (string) $setting['trView'] : 'basic',
135
+
136
+ 'gfonts' => isset( $setting['usedFonts'] ) ? (string) $setting['usedFonts'] : '',
137
+
138
+ 'parallax_mode' => isset( $setting['parallaxMode'] ) ? (string) $setting['parallaxMode'] : 'swipe',
139
+
140
+ 'start_on_appear' => $this->is_key_true( $setting, 'startOnAppear', 'false' ),
141
+
142
+ 'flickr_key' => isset( $setting['apiKey'] ) ? (string) $setting['apiKey'] : '',
143
+ 'flickr_id' => $setid,
144
+ 'flickr_count' => isset( $setting['imgCount'] ) ? (int) $setting['imgCount'] : 10,
145
+ 'flickr_type' => isset( $setting['setType'] ) ? (string) $setting['setType'] : 'photos',
146
+ 'flickr_size' => isset( $setting['imgSize'] ) ? (string) $setting['imgSize'] : 'c',
147
+ 'flickr_thumb_size' => isset( $setting['thumbSize'] ) ? (string) $setting['thumbSize'] : 'q',
148
+
149
+
150
+ 'ps_post_type' => isset( $setting['postType'] ) ? (string) $setting['postType'] : '',
151
+ 'ps_tax_term_ids' => $tax_term_ids,
152
+ 'ps_post_count' => isset( $setting['postCount'] ) ? (int) $setting['postCount'] : 10,
153
+ 'ps_image_from' => isset( $setting['postImageType'] ) ? (string) $setting['postImageType'] : 'auto',
154
+ 'ps_order' => isset( $setting['postOrder'] ) ? (string) $setting['postOrder'] : 'DESC',
155
+ 'ps_orderby' => isset( $setting['postOrderDir'] ) ? (string) $setting['postOrderDir'] : 'menu_order date',
156
+ 'ps_posts_not_in' => isset( $setting['postExcludeIds'] ) ? (string) $setting['postExcludeIds'] : '',
157
+ 'ps_excerpt_len' => isset( $setting['postExcerptLen'] ) ? (int) $setting['postExcerptLen'] : 100,
158
+ 'ps_offset' => isset( $setting['postOffset'] ) ? (int) $setting['postOffset'] : 0,
159
+ 'ps_link_slide' => isset( $setting['postLinkSlide'] ) ? (boolean) $setting['postLinkSlide'] : false,
160
+ 'ps_link_target' => isset( $setting['postLinkTarget'] ) ? (string) $setting['postLinkTarget'] : '_self',
161
+ 'ps_slide_bg' => isset( $setting['postSlideBg'] ) ? msp_get_the_relative_media_url( $setting['postSlideBg'] ) : '',
162
+
163
+ 'wc_only_featured' => $this->is_key_true( $setting, 'wcOnlyFeatured', 'false' ),
164
+ 'wc_only_instock' => $this->is_key_true( $setting, 'wcOnlyInstock' , 'false' ),
165
+ 'wc_only_onsale' => $this->is_key_true( $setting, 'wcOnlyOnsale' , 'false' ),
166
+
167
+
168
+ 'facebook_username' => isset( $setting['setType'] ) && ( 'photostream' == $setting['setType'] ) ? $setid : '',
169
+ 'facebook_albumid' => isset( $setting['setType'] ) && ( 'album' == $setting['setType'] ) ? $setid : '',
170
+ 'facebook_count' => isset( $setting['imgCount'] ) ? (int) $setting['imgCount'] : 10,
171
+ 'facebook_type' => isset( $setting['setType'] ) ? (string) $setting['setType'] : 'album',
172
+ 'facebook_size' => isset( $setting['imgSize'] ) ? (string) $setting['imgSize'] : 'orginal',
173
+ 'facebook_thumb_size' => isset( $setting['thumbSize'] ) ? (string) $setting['thumbSize'] : '320',
174
+
175
+ 'arrows' => 'false', // display arrows?
176
+ 'arrows_autohide' => 'true', // auto hide arrows?
177
+ 'arrows_overvideo' => 'true', // visible over slide video while playing?
178
+ 'arrows_hideunder' => '',
179
+
180
+ 'bullets' => 'false', // display bullets?
181
+ 'bullets_autohide' => 'true', // auto hide bullets?
182
+ 'bullets_overvideo'=> 'true', // visible over slide video while playing?
183
+ 'bullets_align' => 'bottom',
184
+ 'bullets_margin' => '',
185
+ 'bullets_hideunder'=> '',
186
+
187
+ 'thumbs' => 'false', // display thumbnails?
188
+ 'thumbs_autohide' => 'true', // auto hide thumbs?
189
+ 'thumbs_overvideo' => 'true', // visible over slide video while playing?
190
+ 'thumbs_type' => 'thumbs', // thumb or tabs
191
+ 'thumbs_speed' => 17, // scrolling speed. It accepts float values between 0 and 100
192
+ 'thumbs_inset' => 'true', // insert thumbs inside slider
193
+ 'thumbs_align' => 'bottom',
194
+ 'thumbs_margin' => 0,
195
+ 'thumbs_width' => 100,
196
+ 'thumbs_height' => 80,
197
+ 'thumbs_space' => 5,
198
+ 'thumbs_hideunder' => '',
199
+ 'thumbs_arrows' => 'false',
200
+ 'thumbs_in_tab' => 'false',
201
+ 'thumbs_hoverchange'=> 'false',
202
+
203
+ 'scroll' => 'false', // display scrollbar?
204
+ 'scroll_autohide' => 'true', // auto hide scroll?
205
+ 'scroll_overvideo' => 'true', // visible over slide video while playing?
206
+ 'scroll_align' => 'top',
207
+ 'scroll_inset' => 'true',
208
+ 'scroll_margin' => '',
209
+ 'scroll_hideunder' => '',
210
+ 'scroll_color' => '#3D3D3D',
211
+ 'scroll_width' => '',
212
+
213
+
214
+ 'circletimer' => 'false', // display circletimer?
215
+ 'circletimer_autohide' => 'true', // auto hide circletimer?
216
+ 'circletimer_overvideo'=> 'true', // visible over slide video while playing?
217
+ 'circletimer_color' => '#A2A2A2',// color of circle timer
218
+ 'circletimer_radius' => 4, // radius of circle timer in pixels
219
+ 'circletimer_stroke' => 10, // the stroke of circle timer in pixels
220
+ 'circletimer_margin' => '',
221
+ 'circletimer_hideunder'=> '',
222
+
223
+ 'timebar' => 'false', // display timebar?
224
+ 'timebar_autohide' => 'true', // auto hide timebar?
225
+ 'timebar_overvideo'=> 'true', // visible over slide video while playing?
226
+ 'timebar_align' => 'bottom',
227
+ 'timebar_hideunder'=> '',
228
+ 'timebar_color' => '#FFFFFF',
229
+ 'timebar_width' => '',
230
+
231
+
232
+ 'slideinfo' => 'false', // display timebar?
233
+ 'slideinfo_autohide' => 'true', // auto hide timebar?
234
+ 'slideinfo_overvideo'=> 'true', // visible over slide video while playing?
235
+ 'slideinfo_align' => 'bottom',
236
+ 'slideinfo_inset' => 'false',
237
+ 'slideinfo_margin' => '',
238
+ 'slideinfo_hideunder'=> '',
239
+ 'slideinfo_width' => '',
240
+ 'slideinfo_height' => '',
241
+
242
+ 'on_change_start' => '',
243
+ 'on_change_end' => '',
244
+ 'on_waiting' => '',
245
+ 'on_resize' => '',
246
+ 'on_video_play' => '',
247
+ 'on_video_close' => '',
248
+ 'on_swipe_start' => '',
249
+ 'on_swipe_move' => '',
250
+ 'on_swipe_end' => ''
251
+
252
+ );
253
+
254
+
255
+ }
256
+
257
+
258
+ public function parse_slide( $slide = array() ) {
259
+
260
+ // make sure $slide is not serialized
261
+ $slide = maybe_unserialize( $slide );
262
+
263
+ if( empty( $slide ) )
264
+ return $slide;
265
+
266
+ // get slider setting and controls
267
+ $slider_setting = $this->get_slider_setting();
268
+
269
+ // get slide onfo if is set (usage: for tab content if is set)
270
+ $info = isset( $slide['info'] ) ? $slide['info'] : '';
271
+
272
+ if( isset( $slide['bg'] ) ) {
273
+ $slide_src = msp_get_the_absolute_media_url( $slide['bg'] );
274
+
275
+ // generate thumb for master slider panel
276
+ msp_get_the_resized_image_src( $slide_src, 150, 150, true );
277
+ }
278
+
279
+
280
+ // stores a URL for thumbnail in thumbnail list
281
+ $thumb = '';
282
+
283
+ // add thumb just if thumblist is added to controls list
284
+ // also always add thumbnail if slider template is gallery
285
+ if( ( 'true' == $slider_setting['thumbs'] && 'thumbs' == $slider_setting['thumbs_type'] ) ||
286
+ 'image-gallery' == $slider_setting['template']
287
+ ){
288
+
289
+ if( isset( $slide['thumbOrginal'] ) && ! empty( $slide['thumbOrginal'] ) ) {
290
+ $thumb = $slide['thumbOrginal'];
291
+ $thumb = msp_get_the_relative_media_url( $thumb );
292
+
293
+ } elseif( isset( $slide['bg'] ) ) {
294
+
295
+ // set custom thumb size if slider template is gallery
296
+ if( 'image-gallery' == $slider_setting['template'] )
297
+ $thumb = msp_get_the_resized_image_src( $slide_src, 175, 140, true );
298
+ else
299
+ $thumb = msp_get_the_resized_image_src( $slide_src, $slider_setting['thumbs_width'], $slider_setting['thumbs_height'], true );
300
+
301
+ $thumb = msp_get_the_relative_media_url( $thumb );
302
+
303
+ }
304
+
305
+ }
306
+
307
+ // stores a URL for thumbnail in tab
308
+ $tab_thumb = '';
309
+
310
+ // get thumb for tab if thumblist is added to controls list
311
+ if( ( 'true' == $slider_setting['thumbs'] &&
312
+ 'tabs' == $slider_setting['thumbs_type'] ) &&
313
+ 'true' == $slider_setting['thumbs_in_tab'] ){
314
+
315
+ if( isset( $slide['thumbOrginal'] ) && ! empty( $slide['thumbOrginal'] ) ) {
316
+ $tab_thumb = $slide['thumbOrginal'];
317
+ $tab_thumb = msp_get_the_relative_media_url( $tab_thumb );
318
+
319
+ } elseif( isset( $slide['bg'] ) ) {
320
+ // generate a square thumb for tab
321
+ $tab_thumb = msp_get_the_resized_image_src( $slide_src, $slider_setting['thumbs_height'], $slider_setting['thumbs_height'], true );
322
+ $tab_thumb = msp_get_the_relative_media_url( $tab_thumb );
323
+ }
324
+ }
325
+
326
+
327
+ $slides = array(
328
 
329
  'slide_order'=> isset( $slide['order'] ) ? (int) $slide['order'] : 0,
330
 
331
  'css_class' => isset( $slide['cssClass'] ) ? (string) $slide['cssClass'] : '',
332
  'css_id' => isset( $slide['cssId'] ) ? (string) $slide['cssId'] : '',
333
 
334
+ 'ishide' => $this->is_key_true( $slide, 'ishide', 'false' ),
335
 
336
  'src' => isset( $slide['bg'] ) ? esc_attr( msp_get_the_relative_media_url( $slide['bg'] ) ) : '',
337
  'src_full' => isset( $slide['bg'] ) ? esc_attr( msp_get_the_relative_media_url( $slide['bg'] ) ) : '',
360
  'vbgalign' => isset( $slide['bgv_fillmode'] ) ? (string) $slide['bgv_fillmode'] : 'fill',
361
 
362
  'thumb' => $thumb,
363
+ 'tab' => 'true' == $slider_setting['thumbs'] && 'tabs' == $slider_setting['thumbs_type'] ? str_replace( '"', '&quote;', $info ) : '',
364
  'tab_thumb' => $tab_thumb,
365
+ 'delay' => isset( $slide['duration'] ) ? (string) $slide['duration'] : '', // data-delay
366
  'bgalign' => isset( $slide['fillMode'] ) ? (string) $slide['fillMode'] : 'fill', // data-fill-mode
367
  'bgcolor' => isset( $slide['bgColor'] ) ? (string) $slide['bgColor'] : '',
368
 
370
  'tintcolor' => isset( $slide['colorOverlay'] ) ? (string) $slide['colorOverlay'] : '',
371
  );
372
 
373
+ return $slides;
374
+ }
375
 
376
 
377
+ public function parse_each_style( $style_obj, $allowed_style_type = array( 'custom' ) ) {
378
 
379
+ // make sure $style_obj is not serialized
380
+ $style_obj = maybe_unserialize( $style_obj );
381
 
382
+ if( empty( $style_obj ) )
383
+ return $style_obj;
384
 
385
+ $allowed_style_type = (array) $allowed_style_type;
386
 
387
+ if( ! isset( $style_obj['type'] ) || ( ! in_array( $style_obj['type'], $allowed_style_type ) ) )
388
+ return '';
389
 
390
+ // the css block selector
391
+ $class_name = isset( $style_obj['className'] ) ? ".". $style_obj['className'] : '';
392
+ // store css styles
393
+ $css = '';
394
 
395
  $supported_css_props = array(
396
 
397
+ 'backgroundColor' => array('background-color' , '' ),
398
+
399
+ 'paddingTop' => array('padding-top' , 'px'),
400
+ 'paddingRight' => array('padding-right' , 'px'),
401
+ 'paddingBottom' => array('padding-bottom' , 'px'),
402
+ 'paddingLeft' => array('padding-left' , 'px'),
403
+
404
+ 'borderTop' => array('border-top' , 'px'),
405
+ 'borderRight' => array('border-right' , 'px'),
406
+ 'borderBottom' => array('border-bottom' , 'px'),
407
+ 'borderLeft' => array('border-left' , 'px'),
408
+
409
+ 'borderColor' => array('border-color' , '' ),
410
+ 'borderRadius' => array('border-radius' , 'px'),
411
+ 'borderStyle' => array('border-style' , '' ),
412
+
413
+ 'fontFamily' => array('font-family' , '' ),
414
+ 'fontWeight' => array('font-weight' , '' ),
415
+ 'fontSize' => array('font-size' , 'px'),
416
+
417
+ 'textAlign' => array('text-align' , '' ),
418
+ 'letterSpacing' => array('letter-spacing' , 'px'),
419
+ 'lineHeight' => array('line-height' , 'px'),
420
+ 'whiteSpace' => array('white-space' , '' ),
421
+ 'color' => array('color' , '' )
422
  );
423
 
424
  foreach ( $supported_css_props as $js_prop => $parse_option ) {
425
 
426
+ if( isset( $style_obj[$js_prop] ) && ! empty( $style_obj[$js_prop] ) ) {
427
+ // if prop is font-family add quote around font name
428
+ if ( 'fontFamily' == $js_prop )
429
+ $css .= sprintf( "%s%s:\"%s\";", $this->tab_char, $parse_option['0'], rtrim( $style_obj[$js_prop] ) ) . $this->join_char;
430
 
431
+ elseif ( 'lineHeight' == $js_prop && 'normal' == $style_obj[$js_prop] )
432
+ $css .= sprintf( "%s%s:%s;", $this->tab_char, $parse_option['0'], rtrim( $style_obj[$js_prop] ) ) . $this->join_char;
433
 
434
+ else
435
+ $css .= sprintf( "%s%s:%s%s;" , $this->tab_char, $parse_option['0'], rtrim( $style_obj[$js_prop], $parse_option['1'] ), $parse_option['1'] ) . $this->join_char;
436
+
437
+ }
438
  }
439
 
440
  // add custom styles at the end
442
  // create css block
443
  $css_block = $this->join_char.$class_name." { ".$this->join_char.$css." } \n";
444
  //$css_block = sprintf( "\n%s {\n%s\n} \n", $class_name, $css );
445
+
446
  return apply_filters( 'msp_parse_each_style', $css_block, $class_name, $css, $supported_css_props );
447
+ }
448
+
449
+
450
+
451
+
452
+
453
+
454
+ // set/store panel raw and parsed data for further use
455
+ public function set_data( $data, $slider_id = null ) {
456
+ $this->reset();
457
+
458
+ $this->maybe_encoded_data = $data;
459
+ $this->current_slider_id = $slider_id;
460
+
461
+ $decoded = msp_maybe_base64_decode( $data );
462
+ $this->parsable_data = json_decode($decoded);
463
+ }
464
+
465
+
466
+ // reset cache data
467
+ public function reset() {
468
+ $this->recent_setting = null;
469
+ $this->recent_slides = null;
470
+ $this->recent_styles = null;
471
+ $this->maybe_encoded_data = null;
472
+ }
473
 
474
 
475
 
476
+ // get decoded and parsable panel data
477
+ public function get_parsable_data() {
478
+ return $this->parsable_data;
479
+ }
480
 
481
 
482
 
 
 
 
483
 
 
 
484
 
 
 
 
485
 
486
+ public function get_raw_callbacks(){
487
+ if ( isset( $this->parsable_data->{'MSPanel.Callback'} ) )
488
+ return $this->parsable_data->{'MSPanel.Callback'};
489
+ return array();
490
+ }
491
+
492
+
493
+ public function get_callbacks_params(){
494
+ $callbacks_list = $this->get_raw_callbacks();
495
+
496
+ $callbacks_params = array();
497
+
498
+ foreach ($callbacks_list as $id => $callback_json) {
499
+ $raw_json_decoded_callback = json_decode( $callback_json, true );
500
+ $callback_params = $this->get_callback_params( $raw_json_decoded_callback );
501
+ $callbacks_params = wp_parse_args( $callback_params, $callbacks_params );
502
+ }
503
+
504
+ return $callbacks_params;
505
+ }
506
+
507
+
508
+ public function get_callback_params( $callback ) {
509
+
510
+ $name = isset( $callback['name'] ) ? (string) $callback['name'] : '';
511
+
512
+ switch ( $name ) {
513
+ case 'CHANGE_START':
514
+ return array( 'on_change_start' => isset( $callback['content'] ) ? base64_encode( $callback['content'] ) : '' );
515
+ case 'CHANGE_END':
516
+ return array( 'on_change_end' => isset( $callback['content'] ) ? base64_encode( $callback['content'] ) : '' );
517
+ case 'WAITING':
518
+ return array( 'on_waiting' => isset( $callback['content'] ) ? base64_encode( $callback['content'] ) : '' );
519
+ case 'RESIZE':
520
+ return array( 'on_resize' => isset( $callback['content'] ) ? base64_encode( $callback['content'] ) : '' );
521
+ case 'VIDEO_PLAY':
522
+ return array( 'on_video_play' => isset( $callback['content'] ) ? base64_encode( $callback['content'] ) : '' );
523
+ case 'VIDEO_CLOSE':
524
+ return array( 'on_video_close' => isset( $callback['content'] ) ? base64_encode( $callback['content'] ) : '' );
525
+ case 'SWIPE_START':
526
+ return array( 'on_swipe_start' => isset( $callback['content'] ) ? base64_encode( $callback['content'] ) : '' );
527
+ case 'SWIPE_MOVE':
528
+ return array( 'on_swipe_move' => isset( $callback['content'] ) ? base64_encode( $callback['content'] ) : '' );
529
+ case 'SWIPE_END':
530
+ return array( 'on_swipe_end' => isset( $callback['content'] ) ? base64_encode( $callback['content'] ) : '' );
531
+ default:
532
+ return array();
533
+ }
534
+
535
+ }
536
+
537
+
538
+
539
+
540
+
541
+
542
+
543
+
544
+ public function get_raw_controls(){
545
+ if ( isset( $this->parsable_data->{'MSPanel.Control'} ) )
546
+ return $this->parsable_data->{'MSPanel.Control'};
547
+ return array();
548
+ }
549
+
550
+
551
+ public function get_controls_params(){
552
+ $controls_list = $this->get_raw_controls();
553
+
554
+ $controls_params = array();
555
+
556
+ foreach ($controls_list as $id => $control_json) {
557
+ $raw_json_decoded_control = json_decode( $control_json, true );
558
+ $control_params = $this->get_control_params( $raw_json_decoded_control );
559
+ $controls_params = wp_parse_args( $control_params, $controls_params );
560
+ }
561
+
562
+ return $controls_params;
563
+ }
564
+
565
+
566
+ public function get_control_params( $control ) {
567
+
568
+ $name = isset( $control['name'] ) ? (string) $control['name'] : '';
569
+
570
+ switch ( $name ) {
571
+ case 'thumblist':
572
+ return array(
573
+ 'thumbs' => 'true',
574
+ 'thumbs_autohide' => $this->is_key_true( $control, 'autoHide' , 'true' ),
575
+ 'thumbs_overvideo' => $this->is_key_true( $control, 'overVideo', 'true' ),
576
+ 'thumbs_speed' => isset( $control['speed'] ) ? (int) $control['speed'] : 17,
577
+ 'thumbs_type' => isset( $control['type'] ) ? (string) $control['type'] : 'thumbs',
578
+ 'thumbs_inset' => $this->is_key_true( $control, 'inset', 'false' ),
579
+ 'thumbs_align' => isset( $control['align'] ) ? (string) $control['align'] : 'bottom',
580
+ 'thumbs_margin' => isset( $control['margin'] ) ? (int) $control['margin'] : '',
581
+ 'thumbs_width' => isset( $control['width'] ) ? (int) $control['width'] : 100,
582
+ 'thumbs_height' => isset( $control['height'] ) ? (int) $control['height'] : 80,
583
+ 'thumbs_space' => isset( $control['space'] ) ? (int) $control['space'] : 5,
584
+ 'thumbs_hideunder' => isset( $control['hideUnder'] ) ? (int) $control['hideUnder'] : '',
585
+ 'thumbs_fillmode' => isset( $control['fillMode'] ) ? (string) $control['fillMode'] : 'fill',
586
+ 'thumbs_custom_class' => isset( $control['customClass'] ) ? (string) $control['customClass'] : 'ms-tab-thumb',
587
+ 'thumbs_arrows' => $this->is_key_true( $control, 'arrows' , 'false' ),
588
+ 'thumbs_in_tab' => $this->is_key_true( $control, 'insertThumb' , 'false' ),
589
+ 'thumbs_hoverchange' => $this->is_key_true( $control, 'hoverChange' , 'false' )
590
+ );
591
+ case 'bullets':
592
+ return array(
593
+ 'bullets' => 'true',
594
+ 'bullets_autohide' => $this->is_key_true( $control, 'autoHide' , 'true' ),
595
+ 'bullets_overvideo'=> $this->is_key_true( $control, 'overVideo', 'true' ),
596
+ 'bullets_align' => isset( $control['align'] ) ? (string) $control['align'] : 'bottom',
597
+ 'bullets_margin' => isset( $control['margin'] ) ? (int) $control['margin'] : '',
598
+ 'bullets_hideunder' => isset( $control['hideUnder'] ) ? (int) $control['hideUnder'] : ''
599
+ );
600
+ case 'scrollbar':
601
+ return array(
602
+ 'scroll' => 'true',
603
+ 'scroll_autohide' => $this->is_key_true( $control, 'autoHide' , 'true' ),
604
+ 'scroll_overvideo' => $this->is_key_true( $control, 'overVideo', 'true' ),
605
+ //'scroll_width' => isset( $control['width'] ) ? (int) $control['width'] : '',
606
+ 'scroll_align' => isset( $control['align'] ) ? (string) $control['align'] : 'top',
607
+ 'scroll_color' => isset( $control['color'] ) ? (string) $control['color'] : '#3D3D3D',
608
+ 'scroll_margin' => isset( $control['margin'] ) ? (int) $control['margin'] : '',
609
+ 'scroll_inset' => $this->is_key_true( $control, 'inset', 'true' ),
610
+ 'scroll_hideunder' => isset( $control['hideUnder'] ) ? (int) $control['hideUnder'] : '',
611
+ 'scroll_width' => isset( $control['width'] ) ? (int) $control['width'] : ''
612
+ );
613
+ case 'arrows':
614
+ return array(
615
+ 'arrows' => 'true',
616
+ 'arrows_autohide' => $this->is_key_true( $control, 'autoHide' , 'true' ),
617
+ 'arrows_overvideo' => $this->is_key_true( $control, 'overVideo', 'true' ),
618
+ 'arrows_hideunder' => isset( $control['hideUnder'] ) ? (int) $control['hideUnder'] : ''
619
+ );
620
+ case 'timebar':
621
+ return array(
622
+ 'timebar' => 'true',
623
+ 'timebar_autohide' => $this->is_key_true( $control, 'autoHide' , 'true' ),
624
+ 'timebar_overvideo'=> $this->is_key_true( $control, 'overVideo', 'true' ),
625
+ 'timebar_align' => isset( $control['align'] ) ? (string) $control['align'] : 'bottom',
626
+ 'timebar_color' => isset( $control['color'] ) ? (string) $control['color'] : '#FFFFFF',
627
+ 'timebar_hideunder'=> isset( $control['hideUnder'] ) ? (int) $control['hideUnder'] : '',
628
+ 'timebar_width' => isset( $control['width'] ) ? (int) $control['width'] : ''
629
+ );
630
+ case 'circletimer':
631
+ return array(
632
+ 'circletimer' => 'true',
633
+ 'circletimer_autohide' => $this->is_key_true( $control, 'autoHide' , 'true' ),
634
+ 'circletimer_overvideo'=> $this->is_key_true( $control, 'overVideo', 'true' ),
635
+ 'circletimer_color' => isset( $control['color'] ) ? (string) $control['color'] : '#A2A2A2',
636
+ 'circletimer_radius' => isset( $control['radius'] ) ? (int) $control['radius'] : 4,
637
+ 'circletimer_stroke' => isset( $control['stroke'] ) ? (int) $control['stroke'] : 10,
638
+ 'circletimer_margin' => isset( $control['margin'] ) ? (int) $control['margin'] : '',
639
+ 'circletimer_hideunder'=> isset( $control['hideUnder'] ) ? (int) $control['hideUnder'] : ''
640
+ );
641
+ case 'slideinfo':
642
+ return array(
643
+ 'slideinfo' => 'true',
644
+ 'slideinfo_autohide' => $this->is_key_true( $control, 'autoHide' , 'true' ),
645
+ 'slideinfo_overvideo'=> $this->is_key_true( $control, 'overVideo', 'true' ),
646
+ 'slideinfo_align' => isset( $control['align'] ) ? (string) $control['align'] : 'bottom',
647
+ 'slideinfo_inset' => $this->is_key_true( $control, 'inset', 'false' ),
648
+ 'slideinfo_margin' => isset( $control['margin'] ) ? (int) $control['margin'] : '',
649
+ 'slideinfo_hideunder'=> isset( $control['hideUnder'] ) ? (int) $control['hideUnder'] : '',
650
+ 'slideinfo_width' => isset( $control['width'] ) ? (int) $control['width'] : '',
651
+ 'slideinfo_height' => isset( $control['height'] ) ? (int) $control['height'] : ''
652
+ );
653
+ default:
654
+ return array();
655
+ }
656
 
657
+ }
 
 
 
 
 
 
658
 
659
 
660
 
 
 
 
 
661
 
662
 
663
+ public function has_raw_setting(){
664
+ if ( isset( $this->parsable_data->{'MSPanel.Settings'} ) && isset( $this->parsable_data->{'MSPanel.Settings'}->{'1'} ) )
665
+ return true;
666
+ return false;
667
+ }
668
 
669
 
670
+ public function get_raw_setting(){
671
+ if ( $this->has_raw_setting() )
672
+ return $this->parsable_data->{'MSPanel.Settings'}->{'1'};
673
+ return null;
674
+ }
675
 
676
 
677
+ public function get_slider_setting( $force_new_parse = false ){
678
+ $raw_setting = $this->get_raw_setting();
 
 
 
679
 
680
+ if( is_null( $raw_setting ) ){
681
+ return $this->parse_setting();
682
+ }
683
 
684
+ if( is_null( $this->recent_setting ) || $force_new_parse ) {
685
+ $raw_json_decoded_setting = json_decode( $raw_setting, true );
686
+ $this->recent_setting = $this->parse_setting( $raw_json_decoded_setting );
687
+ $this->recent_setting = wp_parse_args( $this->get_controls_params() , $this->recent_setting );
688
+ $this->recent_setting = wp_parse_args( $this->get_callbacks_params(), $this->recent_setting );
689
+ }
690
+ return $this->recent_setting;
691
+ }
692
 
 
693
 
 
 
 
 
 
694
 
 
 
695
 
696
 
 
 
 
697
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
698
 
699
+ // is slides data passed in raw panel data?
700
+ public function has_raw_slide() {
701
+ if ( isset( $this->parsable_data->{'MSPanel.Slide'} ) )
702
+ return true;
703
+ return false;
704
+ }
705
 
706
 
707
+ public function get_raw_slides() {
708
+ if ( $this->has_raw_slide() ) {
709
+ return $this->parsable_data->{'MSPanel.Slide'};
710
+ }
711
+ return null;
712
+ }
713
 
714
 
715
+ public function get_parsable_slides() {
716
 
717
+ if( ! $raw_slides = $this->get_raw_slides() ){
718
+ return array();
719
+ }
720
 
721
+ $valid_slides = array();
 
 
 
 
 
722
 
723
+ foreach ( $raw_slides as $id => $raw_slide ) {
724
+ $raw_json_decoded_slide = json_decode( $raw_slide, true );
725
+ $valid_slides[ $raw_json_decoded_slide['order'] ] = $raw_json_decoded_slide;
726
+ }
727
 
728
+ ksort( $valid_slides );
729
+ return $valid_slides;
730
+ }
 
 
 
731
 
732
 
733
+ public function get_slides( $force_new_parse = false ) {
734
 
735
+ if( is_null( $this->recent_slides ) || $force_new_parse ) {
 
 
736
 
737
+ $parsable_slides = $this->get_parsable_slides();
738
 
739
+ if ( empty( $parsable_slides ) )
740
+ return $parsable_slides;
 
 
741
 
742
+ $slides = array();
 
 
743
 
744
+ foreach ( $parsable_slides as $slide ) {
745
+ $slides[] = $this->parse_slide( $slide );
746
+ }
747
 
748
+ $this->recent_slides = $slides;
749
+ }
750
+ return $this->recent_slides;
751
+ }
752
 
 
753
 
 
754
 
 
 
755
 
 
756
 
 
 
 
757
 
 
 
 
 
758
 
759
+ public function has_raw_style() {
760
+ if ( isset( $this->parsable_data->{'MSPanel.Style'} ) )
761
+ return true;
762
+ return false;
763
+ }
764
 
765
 
766
+ public function get_raw_styles() {
767
+ if ( $this->has_raw_style() ) {
768
+ return $this->parsable_data->{'MSPanel.Style'};
769
+ }
770
+ return null;
771
+ }
772
 
773
 
774
+ public function get_parsable_styles() {
775
 
776
+ if( ! $raw_styles = $this->get_raw_styles() ){
777
+ return array();
778
+ }
779
 
780
+ $valid_styles = array();
 
 
 
 
781
 
782
+ foreach ( $raw_styles as $id => $raw_style ) {
783
+ $raw_json_decoded_style = json_decode( $raw_style, true );
784
+ $valid_styles[] = $raw_json_decoded_style;
785
+ }
786
 
787
+ return $valid_styles;
788
+ }
 
 
 
 
789
 
790
 
791
+ public function get_styles_list( $force_new_parse = false ) {
792
 
793
+ if( is_null( $this->recent_styles ) || $force_new_parse ) {
 
 
794
 
795
+ $parsable_styles = $this->get_parsable_styles();
796
 
797
+ if ( empty( $parsable_styles ) )
798
+ return $parsable_styles;
 
 
799
 
800
+ $styles = array();
 
801
 
802
+ foreach ( $parsable_styles as $id => $style ) {
803
+ $styles[$id] = $this->parse_each_style( $style );
804
+ }
805
 
806
+ $this->recent_styles = $styles;
807
+ }
808
 
809
+ return $this->recent_styles;
810
+ }
811
 
 
812
 
813
+ public function get_styles( $force_new_parse = false ) {
814
+ $styles_list = $this->get_styles_list();
815
 
816
+ // custom css code for sliders added
817
+ $setting = $this->get_slider_setting();
818
+ $styles_list[] = $setting['custom_style'];
819
 
820
+ return implode( $this->join_char, $styles_list );
821
+ }
 
822
 
 
 
823
 
 
 
824
 
825
 
 
 
 
 
 
 
826
 
 
 
827
 
828
 
829
 
831
 
832
 
833
 
834
+ private function get_preset_styles_list( $parsable_preset_styles ) {
835
 
836
+ if ( empty( $parsable_preset_styles ) )
837
+ return $parsable_preset_styles;
838
 
839
+ $preset_styles = array();
840
 
841
+ foreach ( $parsable_preset_styles as $id => $preset_style ) {
842
+ $preset_styles[$id] = $this->parse_each_style( $preset_style, 'preset' );
843
+ }
844
 
845
+ return $preset_styles;
846
+ }
847
 
848
+ public function preset_data_to_styles( $raw_preset_styles ){
849
+ $valid_preset_styles = array();
850
 
851
+ foreach ( $raw_preset_styles as $id => $raw_preset_style ) {
852
+ $raw_json_decoded_preset_style = json_decode( $raw_preset_style, true );
853
+ $valid_preset_styles[] = $raw_json_decoded_preset_style;
854
+ }
855
 
856
+ $preset_styles_list = $this->get_preset_styles_list( $valid_preset_styles );
857
+ return implode( $this->join_char, $preset_styles_list );
858
+ }
859
 
860
+ public function get_preset_styles( $raw_preset ) {
 
 
861
 
862
+ $b64_decoded = msp_maybe_base64_decode( $raw_preset );
863
+ $preset_data = json_decode( $b64_decoded );
864
 
865
+ if ( ! isset( $preset_data->{'MSPanel.PresetStyle'} ) )
866
+ return '';
867
 
868
+ $raw_preset_styles = $preset_data->{'MSPanel.PresetStyle'};
 
 
 
869
 
870
+ return $this->preset_data_to_styles( $raw_preset_styles );
871
+ }
 
872
 
 
873
 
 
 
 
 
 
874
 
 
875
 
 
 
876
 
877
 
878
+ private function get_buttons_styles_list( $parsable_buttons_styles ) {
879
 
880
+ if ( empty( $parsable_buttons_styles ) )
881
+ return $parsable_buttons_styles;
882
 
883
+ $buttons_styles = array();
884
 
885
+ foreach ( $parsable_buttons_styles as $id => $button_style ) {
886
+ if( ! isset( $button_style['className'] ) ) continue;
887
 
888
+ if( isset( $button_style['normal'] ) )
889
+ $button_styles[] = sprintf( ".%s{ %s }", $button_style['className'], str_replace("\n", "", $button_style['normal'] ) );
890
+ if( isset( $button_style['hover'] ) )
891
+ $button_styles[] = sprintf( ".%s:hover{ %s }", $button_style['className'], str_replace("\n", "", $button_style['hover'] ) );
892
+ if( isset( $button_style['active'] ) )
893
+ $button_styles[] = sprintf( ".%s:active{ %s }", $button_style['className'], str_replace("\n", "", $button_style['active'] ) );
894
+ }
895
 
896
+ return $button_styles;
897
+ }
898
 
899
+ public function buttons_data_to_styles( $raw_buttons_styles ){
900
+ $valid_buttons_styles = array();
901
 
902
+ foreach ( $raw_buttons_styles as $id => $raw_buttons_style ) {
903
+ $raw_json_decoded_buttons_style = json_decode( $raw_buttons_style, true );
904
+ $valid_buttons_styles[] = $raw_json_decoded_buttons_style;
905
+ }
906
 
907
+ $buttons_styles_list = $this->get_buttons_styles_list( $valid_buttons_styles );
908
+ return implode( $this->join_char. " ", $buttons_styles_list );
909
+ }
 
 
 
 
 
 
 
910
 
911
+ public function get_buttons_styles( $raw_buttons ) {
 
912
 
913
+ $b64_decoded = msp_maybe_base64_decode( $raw_buttons );
914
+ $buttons_data = json_decode( $b64_decoded );
 
 
 
 
 
 
915
 
916
+ if ( ! isset( $buttons_data->{'MSPanel.ButtonStyle'} ) )
917
+ return '';
918
 
919
+ $raw_buttons_styles = $buttons_data->{'MSPanel.ButtonStyle'};
920
+ return $this->buttons_data_to_styles( $raw_buttons_styles );
921
+ }
 
 
922
 
 
 
 
 
923
 
924
 
925
 
926
 
927
 
928
 
929
+ public function parser_slider( $force_new_parse = false ) {
930
+ $this->get_slider_setting( $force_new_parse );
931
+ $this->get_slides( $force_new_parse );
932
+ $this->get_styles( $force_new_parse );
933
+ }
934
 
935
 
936
+ public function get_results( $force_new_parse = false ) {
937
+ $result = array();
938
 
939
+ $result['setting'] = $this->get_slider_setting( $force_new_parse );
940
+ $result['slides'] = $this->get_slides( $force_new_parse );
941
+ $result['styles'] = $this->get_styles( $force_new_parse );
942
 
943
+ return $result;
944
+ }
945
 
946
 
947
+ // pretty human readable print for parsed data
948
+ public function pretty_print() {
949
+ axpp( $this->parsable_data );
950
+ }
951
 
952
 
953
+ }
admin/includes/classes/class-msp-pointers.php CHANGED
@@ -1,182 +1,182 @@
1
- <?php
2
- /**
3
- * Master Slider Pointers Class.
4
- *
5
- * @package MasterSlider
6
- * @author averta [averta.net]
7
- * @license LICENSE.txt
8
- * @link http://masterslider.com
9
- * @copyright Copyright © 2014 averta
10
- */
11
-
12
- /**
13
- *
14
- */
15
- class MSP_Pointers {
16
-
17
- /* */
18
- public $pointers = array();
19
- public $seen_ids = array();
20
- public $not_seen_pointers = array();
21
- public $version_file = '';
22
-
23
- /**
24
- * Set theme or plugine file path to get version from
25
- * @param string $version_file a path to plugin or theme file to get and compare version with it
26
- */
27
- function __construct( $version_file = '' ) {
28
- $this->version_file = $version_file;
29
- }
30
-
31
-
32
-
33
- public function add( $options = array() ){
34
- // return if no data passed
35
- if( empty( $options ) || ! is_array( $options ) ) return false;
36
-
37
- $options = array_merge( $this->default_point(), $options );
38
- // add pointer to pointers list
39
- $this->pointers[] = $options;
40
-
41
- return true;
42
- }
43
-
44
-
45
-
46
-
47
- public function init(){
48
- global $wp_version;
49
-
50
- if ( version_compare( $wp_version, '3.4', '<' ) )
51
- return false;
52
-
53
- if( ! count( $this->pointers) ) return "No Point Available.";
54
-
55
- add_action( 'admin_enqueue_scripts' , array( $this, 'add_hooks' ) );
56
- add_action( 'admin_print_footer_scripts', array( $this, 'print_pointer_scripts' ) );
57
- return true;
58
- }
59
-
60
-
61
-
62
-
63
-
64
- public function add_hooks(){
65
- if ( ! current_user_can( 'manage_options' ) ) return;
66
-
67
- if( ! count( $this->pointers ) ) return false;
68
-
69
- $this->seen_ids = explode( ',', (string) get_user_meta( get_current_user_id(), 'dismissed_wp_pointers', true ) );
70
-
71
- foreach ( $this->pointers as $key => $pointer_data ) {
72
- if( ! in_array( $pointer_data["id"], $this->seen_ids ) )
73
- $this->not_seen_pointers[] = $pointer_data;
74
- }
75
-
76
- if( count( $this->not_seen_pointers ) ) {
77
- /* Load wp-pointer scripts and styles */
78
- wp_enqueue_style ( 'wp-pointer' );
79
- wp_enqueue_script( 'wp-pointer' );
80
-
81
- add_action( 'admin_print_footer_scripts', array( $this, 'print_pointer_scripts' ) );
82
- }
83
-
84
- return true;
85
- }
86
-
87
-
88
-
89
-
90
-
91
-
92
- public function print_pointer_scripts() {
93
- if ( ! current_user_can( 'manage_options' ) ) return;
94
-
95
- global $hook_suffix;
96
-
97
- $info = empty( $this->version_file ) ? wp_get_theme() : get_plugin_data( $this->version_file );
98
-
99
- foreach ( $this->not_seen_pointers as $key => $pointer_data ) {
100
- // check if we are on correct page to display pointer
101
- if( ! empty( $pointer_data["hook_suffix"] ) && $pointer_data["hook_suffix"] != $hook_suffix ) continue;
102
- // display pointer for specified theme version and above
103
- if( version_compare( $info["Version"], $pointer_data["version"], '<' ) ) continue;
104
- ?>
105
- <script type="text/javascript">
106
- jQuery(document).ready(function($) {
107
- if( typeof(jQuery().pointer) != 'undefined' ) {
108
- $('<?php echo $pointer_data["target"]; ?>').pointer({
109
- content: '<?php printf('<h3>%s</h3><p>%s</p>', $pointer_data["title"],$pointer_data["content"]); ?>',
110
- pointerClass: '<?php echo $pointer_data["id"]; ?>',
111
- pointerWidth: <?php echo isset( $pointer_data["width"] ) ? (int) $pointer_data["width"] : 320; ?>,
112
- position: {
113
- edge: '<?php echo $pointer_data["position"]["edge"]; ?>',
114
- align: '<?php echo $pointer_data["position"]["align"]; ?>'
115
- },
116
- close: function() {
117
- $.post( ajaxurl, {
118
- pointer: '<?php echo $pointer_data["id"]; ?>',
119
- action: 'dismiss-wp-pointer'
120
- });
121
- }
122
- }).pointer('open');
123
- }
124
- });
125
- </script>
126
- <?php
127
- if( isset( $pointer_data["css"] ) )
128
- printf( '<style>%s</style>', $pointer_data["css"] );
129
- }
130
- }
131
-
132
-
133
-
134
-
135
- public function default_point(){
136
- return array(
137
- 'id' => 'mspo', // Unique id for pointer
138
- 'hook_suffix'=> '', // Screen hook suffix to show pointer on [empty means display every where on admin] (dashboard : index.php)
139
- 'target' => '#menu-settings',// CSS selector to hang the pointer to that element
140
- 'version' => '1', // The theme or plugin version to display tooltip on
141
- 'title' => '', // Tooltip title
142
- 'content' => '', // Tooltip description
143
- 'position' => array(
144
- 'edge' => 'left', //top, bottom, left, right
145
- 'align' => 'middle' //top, bottom, left, right, middle
146
- )
147
- );
148
- }
149
- }
150
-
151
-
152
- /*-----------------------------------------------------------------------------------*/
153
- /* Display Admin Pointers
154
- /*-----------------------------------------------------------------------------------*/
155
-
156
- function msp_add_custom_pointers(){
157
-
158
- // admin pointers /////////////////////////////////////////////////////////
159
- $msp_pointers = new MSP_Pointers( MSWP_AVERTA_DIR . '/' . MSWP_SLUG . '.php' );
160
- $msp_pointers->add( array(
161
- 'id' => 'master_1_0_view_help', // Unique id for pointer
162
- 'hook_suffix'=> 'toplevel_page_masterslider', // Screen hook suffix to show pointer on [empty means display every where on admin] (dashboard : index.php)
163
- 'target' => '#contextual-help-link', // CSS selector to hang the pointer to that element
164
- 'version' => '1.0.0', // The theme or plugin version to display tooltip on
165
- 'title' => __( 'Do you need any help on Master Slider?', MSWP_TEXT_DOMAIN ), // Tooltip title
166
- 'content' => sprintf( __( 'Please open contextual help panel (click the %s button at top right side of this page)', MSWP_TEXT_DOMAIN ), '<strong style="color:#1D86AC;">'.__( 'Help', MSWP_TEXT_DOMAIN ).'</strong>' ), // Tooltip description
167
- 'width' => 370,
168
- 'css' => '.master_1_0_view_help { left:auto !important; right:20px !important; } .master_1_0_view_help .wp-pointer-arrow { left:auto !important; right:25px; }',
169
- 'position' => array(
170
- 'edge' => 'top', //top, bottom, left, right
171
- 'align' => 'middle' //top, bottom, left, right, middle
172
- )
173
- )
174
- );
175
-
176
- $msp_pointers->init();
177
-
178
- }
179
-
180
- // msp_add_custom_pointers();
181
-
182
  ?>
1
+ <?php
2
+ /**
3
+ * Master Slider Pointers Class.
4
+ *
5
+ * @package MasterSlider
6
+ * @author averta [averta.net]
7
+ * @license LICENSE.txt
8
+ * @link http://masterslider.com
9
+ * @copyright Copyright © 2014 averta
10
+ */
11
+
12
+ /**
13
+ *
14
+ */
15
+ class MSP_Pointers {
16
+
17
+ /* */
18
+ public $pointers = array();
19
+ public $seen_ids = array();
20
+ public $not_seen_pointers = array();
21
+ public $version_file = '';
22
+
23
+ /**
24
+ * Set theme or plugine file path to get version from
25
+ * @param string $version_file a path to plugin or theme file to get and compare version with it
26
+ */
27
+ function __construct( $version_file = '' ) {
28
+ $this->version_file = $version_file;
29
+ }
30
+
31
+
32
+
33
+ public function add( $options = array() ){
34
+ // return if no data passed
35
+ if( empty( $options ) || ! is_array( $options ) ) return false;
36
+
37
+ $options = array_merge( $this->default_point(), $options );
38
+ // add pointer to pointers list
39
+ $this->pointers[] = $options;
40
+
41
+ return true;
42
+ }
43
+
44
+
45
+
46
+
47
+ public function init(){
48
+ global $wp_version;
49
+
50
+ if ( version_compare( $wp_version, '3.4', '<' ) )
51
+ return false;
52
+
53
+ if( ! count( $this->pointers) ) return "No Point Available.";
54
+
55
+ add_action( 'admin_enqueue_scripts' , array( $this, 'add_hooks' ) );
56
+ add_action( 'admin_print_footer_scripts', array( $this, 'print_pointer_scripts' ) );
57
+ return true;
58
+ }
59
+
60
+
61
+
62
+
63
+
64
+ public function add_hooks(){
65
+ if ( ! current_user_can( 'manage_options' ) ) return;
66
+
67
+ if( ! count( $this->pointers ) ) return false;
68
+
69
+ $this->seen_ids = explode( ',', (string) get_user_meta( get_current_user_id(), 'dismissed_wp_pointers', true ) );
70
+
71
+ foreach ( $this->pointers as $key => $pointer_data ) {
72
+ if( ! in_array( $pointer_data["id"], $this->seen_ids ) )
73
+ $this->not_seen_pointers[] = $pointer_data;
74
+ }
75
+
76
+ if( count( $this->not_seen_pointers ) ) {
77
+ /* Load wp-pointer scripts and styles */
78
+ wp_enqueue_style ( 'wp-pointer' );
79
+ wp_enqueue_script( 'wp-pointer' );
80
+
81
+ add_action( 'admin_print_footer_scripts', array( $this, 'print_pointer_scripts' ) );
82
+ }
83
+
84
+ return true;
85
+ }
86
+
87
+
88
+
89
+
90
+
91
+
92
+ public function print_pointer_scripts() {
93
+ if ( ! current_user_can( 'manage_options' ) ) return;
94
+
95
+ global $hook_suffix;
96
+
97
+ $info = empty( $this->version_file ) ? wp_get_theme() : get_plugin_data( $this->version_file );
98
+
99
+ foreach ( $this->not_seen_pointers as $key => $pointer_data ) {
100
+ // check if we are on correct page to display pointer
101
+ if( ! empty( $pointer_data["hook_suffix"] ) && $pointer_data["hook_suffix"] != $hook_suffix ) continue;
102
+ // display pointer for specified theme version and above
103
+ if( version_compare( $info["Version"], $pointer_data["version"], '<' ) ) continue;
104
+ ?>
105
+ <script type="text/javascript">
106
+ jQuery(document).ready(function($) {
107
+ if( typeof(jQuery().pointer) != 'undefined' ) {
108
+ $('<?php echo $pointer_data["target"]; ?>').pointer({
109
+ content: '<?php printf('<h3>%s</h3><p>%s</p>', $pointer_data["title"],$pointer_data["content"]); ?>',
110
+ pointerClass: '<?php echo $pointer_data["id"]; ?>',
111
+ pointerWidth: <?php echo isset( $pointer_data["width"] ) ? (int) $pointer_data["width"] : 320; ?>,
112
+ position: {
113
+ edge: '<?php echo $pointer_data["position"]["edge"]; ?>',
114
+ align: '<?php echo $pointer_data["position"]["align"]; ?>'
115
+ },
116
+ close: function() {
117
+ $.post( ajaxurl, {
118
+ pointer: '<?php echo $pointer_data["id"]; ?>',
119
+ action: 'dismiss-wp-pointer'
120
+ });
121
+ }
122
+ }).pointer('open');
123
+ }
124
+ });
125
+ </script>
126
+ <?php
127
+ if( isset( $pointer_data["css"] ) )
128
+ printf( '<style>%s</style>', $pointer_data["css"] );
129
+ }
130
+ }
131
+
132
+
133
+
134
+
135
+ public function default_point(){
136
+ return array(
137
+ 'id' => 'mspo', // Unique id for pointer
138
+ 'hook_suffix'=> '', // Screen hook suffix to show pointer on [empty means display every where on admin] (dashboard : index.php)
139
+ 'target' => '#menu-settings',// CSS selector to hang the pointer to that element
140
+ 'version' => '1', // The theme or plugin version to display tooltip on
141
+ 'title' => '', // Tooltip title
142
+ 'content' => '', // Tooltip description
143
+ 'position' => array(
144
+ 'edge' => 'left', //top, bottom, left, right
145
+ 'align' => 'middle' //top, bottom, left, right, middle
146
+ )
147
+ );
148
+ }
149
+ }
150
+
151
+
152
+ /*-----------------------------------------------------------------------------------*/
153
+ /* Display Admin Pointers
154
+ /*-----------------------------------------------------------------------------------*/
155
+
156
+ function msp_add_custom_pointers(){
157
+
158
+ // admin pointers /////////////////////////////////////////////////////////
159
+ $msp_pointers = new MSP_Pointers( MSWP_AVERTA_DIR . '/' . MSWP_SLUG . '.php' );
160
+ $msp_pointers->add( array(
161
+ 'id' => 'master_1_0_view_help', // Unique id for pointer
162
+ 'hook_suffix'=> 'toplevel_page_masterslider', // Screen hook suffix to show pointer on [empty means display every where on admin] (dashboard : index.php)
163
+ 'target' => '#contextual-help-link', // CSS selector to hang the pointer to that element
164
+ 'version' => '1.0.0', // The theme or plugin version to display tooltip on
165
+ 'title' => __( 'Do you need any help on Master Slider?', 'master-slider' ), // Tooltip title
166
+ 'content' => sprintf( __( 'Please open contextual help panel (click the %s button at top right side of this page)', 'master-slider' ), '<strong style="color:#1D86AC;">'.__( 'Help', 'master-slider' ).'</strong>' ), // Tooltip description
167
+ 'width' => 370,
168
+ 'css' => '.master_1_0_view_help { left:auto !important; right:20px !important; } .master_1_0_view_help .wp-pointer-arrow { left:auto !important; right:25px; }',
169
+ 'position' => array(
170
+ 'edge' => 'top', //top, bottom, left, right
171
+ 'align' => 'middle' //top, bottom, left, right, middle
172
+ )
173
+ )
174
+ );
175
+
176
+ $msp_pointers->init();
177
+
178
+ }
179
+
180
+ // msp_add_custom_pointers();
181
+
182
  ?>
admin/includes/classes/class-msp-screen-help.php CHANGED
@@ -10,37 +10,37 @@ class MSP_Screen_Help extends Axiom_Screen_Help {
10
  /**
11
  * __construct
12
  */
13
- function __construct() {
14
-
15
- // define tabs data
16
- $tabs = array (
17
-
18
- array('id' => 'msp-how-use-tab',
19
- 'title' => __( 'Display Sliders on pages', MSWP_TEXT_DOMAIN ),
20
- 'callback' => array( $this, 'display_masterslider' ) // callback to display tab content @km!
21
- ),
22
- array('id' => 'msp-supp-tab',
23
- 'title' => __( 'Master Slider Support', MSWP_TEXT_DOMAIN ),
24
- 'callback' => array( $this, 'display_support' ) // callback to display tab content @km!
25
- )
26
- );
27
 
28
  parent::__construct( $tabs, msp_get_screen_ids(), 'masterslider_help_tab_' );
29
- }
30
 
31
 
32
- public function display_masterslider(){
33
- ?>
34
- <h2>How to Display Sliders on Pages</h2>
35
- <p>You can display Master Slider on your website with using one of the three ways that are explained below.</p>
36
- <hr />
37
 
38
- <div class="row-fluid">
39
-
40
- <div>
41
- <h3>1 - Inserting the slider with shortcode (Easiest way)</h3>
42
- <p>You can place your sliders into pages and posts with their shortcodes.</p>
43
- <p>You can find the shortcode for each slider in Master Slider admin page next to their names in the list view.</p>
44
 
45
  <img src="<?php echo MSWP_AVERTA_ADMIN_URL. '/assets/images/misc/where-is-ms-shortcode.png'; ?>" />
46
  <p>To insert the slider, edit a page or post and insert its shortcode into the WordPress text editor like following screenshot. </p>
@@ -49,100 +49,100 @@ class MSP_Screen_Help extends Axiom_Screen_Help {
49
  </div>
50
  </div>
51
 
52
- <hr>
53
 
54
- <div class="row-fluid">
55
- <div >
56
- <h3>2 - Inserting the slider with the Master Slider WP widget</h3>
57
- <p>
58
- MasterSlider WP supports widgets, so you can place your slider in your front-end page just by a drag n' drop. To do that, navigate to the Appearance menu on your left sidebar and select "Widgets". Grab the MasterSlider WP Widget and drop it into one of your widget area.
59
 
60
- Please note that some themes may not support a widget area what you need. In this case, you can create a new widget area by editing your theme files.
61
  </p>
62
  </div>
63
  </div>
64
-
65
- <hr>
66
-
67
- <div class="row-fluid">
68
- <div>
69
- <h3>3 - Calling the slider from your theme files (For Advanced users)</h3>
70
- <p>
71
- Because a slider can be an integral part of your site, you may want to place it into your theme files. There are some PHP function which you can call for example from the header.php file of your theme and it inserts your slider into your home page or certail other pages. Here they are :
72
- </p>
73
- <br />
74
-
75
- <h5>Description</h5>
76
- <p>Displays Master Slider markup for specific slider ID</p>
77
-
78
- <h5>Usage :</h5>
79
- <p><code>&lt;?php masterslider( $id ); ?&gt;</code></p>It's equal to :
80
- <p><code>&lt;?php echo get_masterslider( $id ); ?&gt;</code></p>
81
-
82
- <h5>Parameters :</h5>
83
- <dl>
84
- <dt><tt>$id</tt></dt>
85
- <dd> (int) The slider ID that can be found on the plugin page in the slider list view at the first table column. Default: <i>Null</i></dd>
86
- </dl><br />
87
-
88
- <h5>Example :</h5>
89
- <p>If you've created a slider and the slider ID is equal to <code>1</code> you can use the following code to display the slider on your website.</p>
90
- <p><code>&lt;?php masterslider ( 1 ); ?&gt;</code></p>OR
91
- <p><code>&lt;?php echo get_masterslider ( 1 ); ?&gt;</code></p><br />
92
-
93
- <hr>
94
-
95
- <p>
96
- It is important when you want to insert a slider to check its ID on the MasterSlider WP slider list page. When you remove some sliders, their IDs won't be re-indexed and the sequence may broke up. This is important to keep persistent your sliders preventing unwanted changes on the already inserted ones.
97
  </p>
98
  </div>
99
  </div>
100
-
101
- <?php
102
- }
103
-
104
- public function display_support(){
105
- ?>
106
- <h3><strong>Support</strong></h3>
107
- <hr />
108
-
109
- <h4>If you have any questions please follow these steps:</h4>
110
- <ol>
111
- <li>Please read item's <a href="http://masterslider.com/doc/wp/free" target="_blank">Documentation </a> </li>
112
- <li>Take a look in our <a href="http://wordpress.org/plugins/master-slider/faq/" target="_blank">FAQ</a> page</li>
113
- <li>Search plugin's support forum using <a href="https://www.google.com/search?q=site:wordpress.org+%22master+slider%22+%22support%22+your+question+here" target="_blank">this link</a> for finding already asked or similar questions.</li>
114
- <li>If you did not find your answer, please post new topic in <a href="http://wordpress.org/support/plugin/master-slider" target="_blank">support forum</a></li>
115
- </ol>
116
- <br />
117
-
118
-
119
- <strong>Why support forum?</strong>
120
- <ul>
121
- <li>It is organized and searchable (that makes support easier and faster)</li>
122
- </ul>
123
- <br />
124
-
125
- <strong>Supporting our Items INCLUDES</strong>:
126
- <ul>
127
- <li>Responding to questions or problems regarding our item and its features</li>
128
- <li>Fixing bugs and reported issues</li>
129
- <li>Providing updates to ensure compatibility with new software versions</li>
130
- </ul>
131
- <br/>
132
-
133
- <strong>Item support does NOT include</strong>:
134
- <ul>
135
- <li>Customization and installation services</li>
136
- <li>Support for third party software and plug-ins</li>
137
- </ul>
138
- <br/>
139
-
140
- <p><span class="label label-info">Note</span> We <strong>CANNOT</strong> provide support via email, Please ask your support related questions only in <a href="http://wordpress.org/support/plugin/master-slider/" target="_blank">support forum</a>.</p>
141
- <br />
142
- <p><span class="label label-info">Important Note</span> For the fast troubleshooting, please send us detailed informations about the issue and make sure that you don't forget to send us your site url where you are using or want to use the item. Please note, that we cannot troubleshoot from screencast videos or screenshots.</p>
143
-
144
- <?php
145
- }
146
 
147
 
148
  }
10
  /**
11
  * __construct
12
  */
13
+ function __construct() {
14
+
15
+ // define tabs data
16
+ $tabs = array (
17
+
18
+ array('id' => 'msp-how-use-tab',
19
+ 'title' => __( 'Display Sliders on pages', 'master-slider' ),
20
+ 'callback' => array( $this, 'display_masterslider' ) // callback to display tab content @km!
21
+ ),
22
+ array('id' => 'msp-supp-tab',
23
+ 'title' => __( 'Master Slider Support', 'master-slider' ),
24
+ 'callback' => array( $this, 'display_support' ) // callback to display tab content @km!
25
+ )
26
+ );
27
 
28
  parent::__construct( $tabs, msp_get_screen_ids(), 'masterslider_help_tab_' );
29
+ }
30
 
31
 
32
+ public function display_masterslider(){
33
+ ?>
34
+ <h2>How to Display Sliders on Pages</h2>
35
+ <p>You can display Master Slider on your website with using one of the three ways that are explained below.</p>
36
+ <hr />
37
 
38
+ <div class="row-fluid">
39
+
40
+ <div>
41
+ <h3>1 - Inserting the slider with shortcode (Easiest way)</h3>
42
+ <p>You can place your sliders into pages and posts with their shortcodes.</p>
43
+ <p>You can find the shortcode for each slider in Master Slider admin page next to their names in the list view.</p>
44
 
45
  <img src="<?php echo MSWP_AVERTA_ADMIN_URL. '/assets/images/misc/where-is-ms-shortcode.png'; ?>" />
46
  <p>To insert the slider, edit a page or post and insert its shortcode into the WordPress text editor like following screenshot. </p>
49
  </div>
50
  </div>
51
 
52
+ <hr>
53
 
54
+ <div class="row-fluid">
55
+ <div >
56
+ <h3>2 - Inserting the slider with the Master Slider WP widget</h3>
57
+ <p>
58
+ MasterSlider WP supports widgets, so you can place your slider in your front-end page just by a drag n' drop. To do that, navigate to the Appearance menu on your left sidebar and select "Widgets". Grab the MasterSlider WP Widget and drop it into one of your widget area.
59
 
60
+ Please note that some themes may not support a widget area what you need. In this case, you can create a new widget area by editing your theme files.
61
  </p>
62
  </div>
63
  </div>
64
+
65
+ <hr>
66
+
67
+ <div class="row-fluid">
68
+ <div>
69
+ <h3>3 - Calling the slider from your theme files (For Advanced users)</h3>
70
+ <p>
71
+ Because a slider can be an integral part of your site, you may want to place it into your theme files. There are some PHP function which you can call for example from the header.php file of your theme and it inserts your slider into your home page or certail other pages. Here they are :
72
+ </p>
73
+ <br />
74
+
75
+ <h5>Description</h5>
76
+ <p>Displays Master Slider markup for specific slider ID</p>
77
+
78
+ <h5>Usage :</h5>
79
+ <p><code>&lt;?php masterslider( $id ); ?&gt;</code></p>It's equal to :
80
+ <p><code>&lt;?php echo get_masterslider( $id ); ?&gt;</code></p>
81
+
82
+ <h5>Parameters :</h5>
83
+ <dl>
84
+ <dt><tt>$id</tt></dt>
85
+ <dd> (int) The slider ID that can be found on the plugin page in the slider list view at the first table column. Default: <i>Null</i></dd>
86
+ </dl><br />
87
+
88
+ <h5>Example :</h5>
89
+ <p>If you've created a slider and the slider ID is equal to <code>1</code> you can use the following code to display the slider on your website.</p>
90
+ <p><code>&lt;?php masterslider ( 1 ); ?&gt;</code></p>OR
91
+ <p><code>&lt;?php echo get_masterslider ( 1 ); ?&gt;</code></p><br />
92
+
93
+ <hr>
94
+
95
+ <p>
96
+ It is important when you want to insert a slider to check its ID on the MasterSlider WP slider list page. When you remove some sliders, their IDs won't be re-indexed and the sequence may broke up. This is important to keep persistent your sliders preventing unwanted changes on the already inserted ones.
97
  </p>
98
  </div>
99
  </div>
100
+
101
+ <?php
102
+ }
103
+
104
+ public function display_support(){
105
+ ?>
106
+ <h3><strong>Support</strong></h3>
107
+ <hr />
108
+
109
+ <h4>If you have any questions please follow these steps:</h4>
110
+ <ol>
111
+ <li>Please read item's <a href="http://masterslider.com/doc/wp/free" target="_blank">Documentation </a> </li>
112
+ <li>Take a look in our <a href="http://wordpress.org/plugins/master-slider/faq/" target="_blank">FAQ</a> page</li>
113
+ <li>Search plugin's support forum using <a href="https://www.google.com/search?q=site:wordpress.org+%22master+slider%22+%22support%22+your+question+here" target="_blank">this link</a> for finding already asked or similar questions.</li>
114
+ <li>If you did not find your answer, please post new topic in <a href="http://wordpress.org/support/plugin/master-slider" target="_blank">support forum</a></li>
115
+ </ol>
116
+ <br />
117
+
118
+
119
+ <strong>Why support forum?</strong>
120
+ <ul>
121
+ <li>It is organized and searchable (that makes support easier and faster)</li>
122
+ </ul>
123
+ <br />
124
+
125
+ <strong>Supporting our Items INCLUDES</strong>:
126
+ <ul>
127
+ <li>Responding to questions or problems regarding our item and its features</li>
128
+ <li>Fixing bugs and reported issues</li>
129
+ <li>Providing updates to ensure compatibility with new software versions</li>
130
+ </ul>
131
+ <br/>
132
+
133
+ <strong>Item support does NOT include</strong>:
134
+ <ul>
135
+ <li>Customization and installation services</li>
136
+ <li>Support for third party software and plug-ins</li>
137
+ </ul>
138
+ <br/>
139
+
140
+ <p><span class="label label-info">Note</span> We <strong>CANNOT</strong> provide support via email, Please ask your support related questions only in <a href="http://wordpress.org/support/plugin/master-slider/" target="_blank">support forum</a>.</p>
141
+ <br />
142
+ <p><span class="label label-info">Important Note</span> For the fast troubleshooting, please send us detailed informations about the issue and make sure that you don't forget to send us your site url where you are using or want to use the item. Please note, that we cannot troubleshoot from screencast videos or screenshots.</p>
143
+
144
+ <?php
145
+ }
146
 
147
 
148
  }
admin/includes/classes/class-msp-shortcode-factory.php CHANGED
@@ -1,26 +1,26 @@
1
  <?php
2
 
3
  /**
4
- *
5
  */
6
  class MSP_Shortcode_Factory {
7
-
8
  public $parsed_slider_data = array();
9
  private $post_id;
10
  private $post_slider_args = array();
11
 
12
  function __construct() {
13
-
14
  }
15
 
16
  public function set_data( $parsed_data ) {
17
-
18
  $this->parsed_slider_data = $parsed_data;
19
  }
20
 
21
  /**
22
  * Get generated ms_slider shortcode
23
- *
24
  * @return string [ms_slider] shortcode or empty string on error
25
  */
26
  public function get_ms_slider_shortcode( $the_content = '' ){
@@ -60,7 +60,7 @@ class MSP_Shortcode_Factory {
60
  // stores shortcode attributes
61
  $attrs = '';
62
 
63
- // the list of attributes which should be excluded from slide shortcode
64
  $exclude_slide_attrs = array( 'layers', 'layer_ids', 'ishide', 'info' );
65
 
66
  foreach ( $slide as $attr => $attr_value ) {
@@ -73,13 +73,13 @@ class MSP_Shortcode_Factory {
73
  $attrs .= sprintf( '%s="%s" ', $attr, '{{image}}' );
74
 
75
  } elseif( 'alt' == $attr || 'title' == $attr ) {
76
-
77
  if( in_array( $this->parsed_slider_data['setting']['slider_type'], array( "flickr", "facebook", "instagram" ) ) ){
78
  $attrs .= sprintf( '%s="%s" ', $attr, '{{title}}' );
79
  } else {
80
  $attrs .= sprintf( '%s="%s" ', $attr, $this->escape_square_brackets( $attr_value ) );
81
  }
82
-
83
  // encode backets ([]) to prevent any conflict while generating slider shortcode
84
  } elseif( 'link_title' == $attr || 'link_rel' == $attr ) {
85
  $attrs .= sprintf( '%s="%s" ', $attr, $this->escape_square_brackets( $attr_value ) );
@@ -97,7 +97,7 @@ class MSP_Shortcode_Factory {
97
  $tab_content = sprintf( '{{thumb%s}}', $thumb_height ) . $tab_content;
98
  }
99
  $attrs .= sprintf( '%s="%s" ', $attr, esc_attr( $tab_content ) );
100
-
101
  } else {
102
  $attrs .= sprintf( '%s="%s" ', $attr, esc_attr( $attr_value ) );
103
  }
@@ -112,8 +112,8 @@ class MSP_Shortcode_Factory {
112
  $the_content = '';
113
 
114
  // generate slide_info shortcode if slideinfo control is added
115
- if( 'image-gallery' == $this->parsed_slider_data['setting']['template'] ||
116
- ( isset( $this->parsed_slider_data['setting']['slideinfo'] ) && 'true' == $this->parsed_slider_data['setting']['slideinfo'] )
117
  ){
118
  if( ! empty( $slide['info'] ) )
119
  $the_content .= $this->get_ms_slide_info_shortcode( $slide['info'] );
@@ -158,7 +158,11 @@ class MSP_Shortcode_Factory {
158
  if( empty( $the_content ) )
159
  return '';
160
 
161
- return sprintf( '[%1$s]%2$s[/%1$s]', 'ms_slide_info', $the_content )."\n";
 
 
 
 
162
  }
163
 
164
 
@@ -168,8 +172,8 @@ class MSP_Shortcode_Factory {
168
 
169
  $tag_name = preg_replace('/[{}]/', '', $matches['0'] );
170
  $tag_name = msp_get_template_tag_value( $tag_name, $this->post_id, $this->post_slider_args );
171
-
172
  return is_array( $tag_name ) ? implode( ',', $tag_name ) : $tag_name;
173
  }
174
 
175
- }
1
  <?php
2
 
3
  /**
4
+ *
5
  */
6
  class MSP_Shortcode_Factory {
7
+
8
  public $parsed_slider_data = array();
9
  private $post_id;
10
  private $post_slider_args = array();
11
 
12
  function __construct() {
13
+
14
  }
15
 
16
  public function set_data( $parsed_data ) {
17
+
18
  $this->parsed_slider_data = $parsed_data;
19
  }
20
 
21
  /**
22
  * Get generated ms_slider shortcode
23
+ *
24
  * @return string [ms_slider] shortcode or empty string on error
25
  */
26
  public function get_ms_slider_shortcode( $the_content = '' ){
60
  // stores shortcode attributes
61
  $attrs = '';
62
 
63
+ // the list of attributes which should be excluded from slide shortcode
64
  $exclude_slide_attrs = array( 'layers', 'layer_ids', 'ishide', 'info' );
65
 
66
  foreach ( $slide as $attr => $attr_value ) {
73
  $attrs .= sprintf( '%s="%s" ', $attr, '{{image}}' );
74
 
75
  } elseif( 'alt' == $attr || 'title' == $attr ) {
76
+
77
  if( in_array( $this->parsed_slider_data['setting']['slider_type'], array( "flickr", "facebook", "instagram" ) ) ){
78
  $attrs .= sprintf( '%s="%s" ', $attr, '{{title}}' );
79
  } else {
80
  $attrs .= sprintf( '%s="%s" ', $attr, $this->escape_square_brackets( $attr_value ) );
81
  }
82
+
83
  // encode backets ([]) to prevent any conflict while generating slider shortcode
84
  } elseif( 'link_title' == $attr || 'link_rel' == $attr ) {
85
  $attrs .= sprintf( '%s="%s" ', $attr, $this->escape_square_brackets( $attr_value ) );
97
  $tab_content = sprintf( '{{thumb%s}}', $thumb_height ) . $tab_content;
98
  }
99
  $attrs .= sprintf( '%s="%s" ', $attr, esc_attr( $tab_content ) );
100
+
101
  } else {
102
  $attrs .= sprintf( '%s="%s" ', $attr, esc_attr( $attr_value ) );
103
  }
112
  $the_content = '';
113
 
114
  // generate slide_info shortcode if slideinfo control is added
115
+ if( 'image-gallery' == $this->parsed_slider_data['setting']['template'] ||
116
+ ( isset( $this->parsed_slider_data['setting']['slideinfo'] ) && 'true' == $this->parsed_slider_data['setting']['slideinfo'] )
117
  ){
118
  if( ! empty( $slide['info'] ) )
119
  $the_content .= $this->get_ms_slide_info_shortcode( $slide['info'] );
158
  if( empty( $the_content ) )
159
  return '';
160
 
161
+ if( "&nbsp;" == $the_content ){
162
+ $css_class = 'ms-info-empty';
163
+ }
164
+
165
+ return sprintf( '[%1$s css_class="%3$s"]%2$s[/%1$s]', 'ms_slide_info', $the_content, $css_class )."\n";
166
  }
167
 
168
 
172
 
173
  $tag_name = preg_replace('/[{}]/', '', $matches['0'] );
174
  $tag_name = msp_get_template_tag_value( $tag_name, $this->post_id, $this->post_slider_args );
175
+
176
  return is_array( $tag_name ) ? implode( ',', $tag_name ) : $tag_name;
177
  }
178
 
179
+ }
admin/includes/msp-admin-templates.php CHANGED
@@ -2,15 +2,15 @@
2
 
3
  function msp_get_panel_header(){
4
  ?>
5
- <div id="msp-header">
6
  <div class="msp-logo">
7
- <a href="<?php echo admin_url( 'admin.php?page='.MSWP_SLUG ); ?>">
8
- <img src="<?php echo MSWP_AVERTA_ADMIN_URL; ?>/views/slider-panel/images/masterslider.gif">
9
- </a>
10
  </div>
11
  <?php if( isset( $_GET['action'] ) && 'edit' == $_GET['action'] ) { ?>
12
- <a class="upgrade-pro" href="http://avt.li/mslpan" title="<?php _e( "Upgrade to PRO version to unlock more features. Click to see the list of features." ); ?>" target="_blank"><?php _e( "Upgrade to PRO Version", MSWP_TEXT_DOMAIN ); ?></a>
13
- <?php } ?>
14
  </div>
15
  <?php
16
  }
2
 
3
  function msp_get_panel_header(){
4
  ?>
5
+ <div id="msp-header">
6
  <div class="msp-logo">
7
+ <a href="<?php echo admin_url( 'admin.php?page='.MSWP_SLUG ); ?>">
8
+ <img src="<?php echo MSWP_AVERTA_ADMIN_URL; ?>/views/slider-panel/images/masterslider.gif">
9
+ </a>
10
  </div>
11
  <?php if( isset( $_GET['action'] ) && 'edit' == $_GET['action'] ) { ?>
12
+ <a class="upgrade-pro" href="http://avt.li/mslpan" title="<?php _e( "Upgrade to PRO version to unlock more features. Click to see the list of features." ); ?>" target="_blank"><?php _e( "Upgrade to PRO Version", 'master-slider' ); ?></a>
13
+ <?php } ?>
14
  </div>
15
  <?php
16
  }
admin/includes/msp-hooks.php CHANGED
@@ -1,23 +1,23 @@
1
  <?php
2
 
3
  function msp_filter_masterslider_admin_menu_title( $menu_title ){
4
- $current = get_site_transient( 'update_plugins' );
5
 
6
  if ( ! isset( $current->response[ MSWP_AVERTA_BASE_NAME ] ) )
7
- return $menu_title;
8
-
9
- return $menu_title . '&nbsp;<span class="update-plugins"><span class="plugin-count">1</span></span>';
10
  }
11
 
12
  add_filter( 'masterslider_admin_menu_title', 'msp_filter_masterslider_admin_menu_title');
13
 
14
 
15
  function after_master_slider_row_meta( $plugin_meta, $plugin_file, $plugin_data, $status ){
16
- if( MSWP_AVERTA_BASE_NAME == $plugin_file ) {
17
- $plugin_meta[] = '<a href="http://wordpress.org/support/view/plugin-reviews/' . MSWP_SLUG . '?rating=5#postform" target="_blank" title="' . esc_attr__( 'Rate this plugin', MSWP_TEXT_DOMAIN ) . '">' . __( 'Rate this plugin', MSWP_TEXT_DOMAIN ) . '</a>';
18
- $plugin_meta[] = '<a href="http://masterslider.com/doc/wp/free/#donate" target="_blank" title="' . esc_attr__( 'Donate', MSWP_TEXT_DOMAIN ) . '">' . __( 'Donate', MSWP_TEXT_DOMAIN ) . '</a>';
19
- }
20
- return $plugin_meta;
21
  }
22
 
23
  add_filter( "plugin_row_meta", 'after_master_slider_row_meta', 10, 4 );
1
  <?php
2
 
3
  function msp_filter_masterslider_admin_menu_title( $menu_title ){
4
+ $current = get_site_transient( 'update_plugins' );
5
 
6
  if ( ! isset( $current->response[ MSWP_AVERTA_BASE_NAME ] ) )
7
+ return $menu_title;
8
+
9
+ return $menu_title . '&nbsp;<span class="update-plugins"><span class="plugin-count">1</span></span>';
10
  }
11
 
12
  add_filter( 'masterslider_admin_menu_title', 'msp_filter_masterslider_admin_menu_title');
13
 
14
 
15
  function after_master_slider_row_meta( $plugin_meta, $plugin_file, $plugin_data, $status ){
16
+ if( MSWP_AVERTA_BASE_NAME == $plugin_file ) {
17
+ $plugin_meta[] = '<a href="http://wordpress.org/support/view/plugin-reviews/' . MSWP_SLUG . '?rating=5#postform" target="_blank" title="' . esc_attr__( 'Rate this plugin', 'master-slider' ) . '">' . __( 'Rate this plugin', 'master-slider' ) . '</a>';
18
+ $plugin_meta[] = '<a href="http://masterslider.com/doc/wp/free/#donate" target="_blank" title="' . esc_attr__( 'Donate', 'master-slider' ) . '">' . __( 'Donate', 'master-slider' ) . '</a>';
19
+ }
20
+ return $plugin_meta;
21
  }
22
 
23
  add_filter( "plugin_row_meta", 'after_master_slider_row_meta', 10, 4 );
admin/includes/msp-sample-sliders.php CHANGED
@@ -4,13 +4,13 @@ function msp_get_slider_starter_sections () {
4
 
5
  $sections = array(
6
  array(
7
- 'id' => 'main_types',
8
- 'title' => __( 'Slider Types', MSWP_TEXT_DOMAIN ),
9
  'desc' => ''
10
  ),
11
  array(
12
- 'id' => 'masterslider_samples_group1',
13
- 'title' => __( 'Sample Sliders', MSWP_TEXT_DOMAIN ),
14
  'desc' => ''
15
  )
16
  );
@@ -21,114 +21,114 @@ function msp_get_slider_starter_sections () {
21
 
22
  function msp_get_slider_starter_fields () {
23
 
24
- $starters = array();
25
-
26
- $starters['main_types'] = array(
27
-
28
- array(
29
- 'label' => __( 'Custom Slider', MSWP_TEXT_DOMAIN ),
30
- 'id' => 'custom-slider',
31
- 'slidertype'=> 'custom',
32
- 'importdata'=> '',
33
- 'image_dir' => '',
34
- 'selected' => 'true',
35
- 'screenshot'=> MSWP_AVERTA_ADMIN_URL . '/assets/images/slider-types/pt_custom.png'
36
- )
37
-
38
- );
39
-
40
- $starters['masterslider_samples_group1'] = array(
41
-
42
- array(
43
- 'label' => __( 'Slider with Horizontal Thumbnails', MSWP_TEXT_DOMAIN ),
44
- 'id' => 'slider-with-thumbs-1',
45
- 'slidertype'=> 'custom',
46
- 'importdata'=> 'eyJzbGlkZXJzX2RhdGEiOnsiNTIiOnsidGl0bGUiOiJTbGlkZXIgd2l0aCBIb3Jpem9udGFsIFRodW1ibmFpbHMiLCJwYXJhbXMiOiJleUp0WlhSaElqcDdJbE5sZEhScGJtZHpJV2xrY3lJNklqRWlMQ0pUWlhSMGFXNW5jeUZ1WlhoMFNXUWlPaklzSWxOc2FXUmxJV2xrY3lJNklqRXNNaXd6TERRc05TdzJMRGNzT1N3eE1pd3hOQ0lzSWxOc2FXUmxJVzVsZUhSSlpDSTZNVFVzSWtOdmJuUnliMndoYVdSeklqb2lNU3d5TERNaUxDSkRiMjUwY205c0lXNWxlSFJKWkNJNk5IMHNJazFUVUdGdVpXd3VVMlYwZEdsdVozTWlPbnNpTVNJNkludGNJbWxrWENJNlhDSXhYQ0lzWENKemJtRndjR2x1WjF3aU9uUnlkV1VzWENKdVlXMWxYQ0k2WENKVGJHbGtaWElnZDJsMGFDQkliM0pwZW05dWRHRnNJRlJvZFcxaWJtRnBiSE5jSWl4Y0luZHBaSFJvWENJNk9EQXdMRndpYUdWcFoyaDBYQ0k2TkRnd0xGd2lkM0poY0hCbGNsZHBaSFJvWENJNk9EQXdMRndpZDNKaGNIQmxjbGRwWkhSb1ZXNXBkRndpT2x3aWNIaGNJaXhjSW1GMWRHOURjbTl3WENJNlptRnNjMlVzWENKMGVYQmxYQ0k2WENKamRYTjBiMjFjSWl4Y0luTnNhV1JsY2tsa1hDSTZYQ0kxTWx3aUxGd2liR0Y1YjNWMFhDSTZYQ0ppYjNobFpGd2lMRndpWVhWMGIwaGxhV2RvZEZ3aU9tWmhiSE5sTEZ3aWRISldhV1YzWENJNlhDSmlZWE5wWTF3aUxGd2ljM0JsWldSY0lqb3lNQ3hjSW5Od1lXTmxYQ0k2TUN4Y0luTjBZWEowWENJNk1TeGNJbWR5WVdKRGRYSnpiM0pjSWpwMGNuVmxMRndpYzNkcGNHVmNJanAwY25WbExGd2liVzkxYzJWY0lqcDBjblZsTEZ3aWQyaGxaV3hjSWpwbVlXeHpaU3hjSW1GMWRHOXdiR0Y1WENJNlptRnNjMlVzWENKc2IyOXdYQ0k2Wm1Gc2MyVXNYQ0p6YUhWbVpteGxYQ0k2Wm1Gc2MyVXNYQ0p3Y21Wc2IyRmtYQ0k2WENJdE1Wd2lMRndpYjNabGNsQmhkWE5sWENJNmRISjFaU3hjSW1WdVpGQmhkWE5sWENJNlptRnNjMlVzWENKb2FXUmxUR0Y1WlhKelhDSTZabUZzYzJVc1hDSmthWEpjSWpwY0ltaGNJaXhjSW5CaGNtRnNiR0Y0VFc5a1pWd2lPbHdpYzNkcGNHVmNJaXhjSW1ObGJuUmxja052Ym5SeWIyeHpYQ0k2ZEhKMVpTeGNJbWx1YzNSaGJuUlRhRzkzVEdGNVpYSnpYQ0k2Wm1Gc2MyVXNYQ0ppWjBOdmJHOXlYQ0k2WENJak1EQXdNREF3WENJc1hDSnphMmx1WENJNlhDSnRjeTF6YTJsdUxXUmxabUYxYkhSY0lpeGNJbTF6VkdWdGNHeGhkR1ZjSWpwY0ltTjFjM1J2YlZ3aUxGd2liWE5VWlcxd2JHRjBaVU5zWVhOelhDSTZYQ0pjSWl4Y0luVnpaV1JHYjI1MGMxd2lPbHdpWENKOUluMHNJazFUVUdGdVpXd3VVMnhwWkdVaU9uc2lNU0k2SW50Y0ltbGtYQ0k2WENJeFhDSXNYQ0owYVcxbGJHbHVaVjlvWENJNk1qQXdMRndpWW1kVWFIVnRZbHdpT2x3aUx6SXdNVEl2TVRBdk1USXhMVEUxTUhneE5UQXVhbkJuWENJc1hDSnZjbVJsY2x3aU9qQXNYQ0ppWjF3aU9sd2lMekl3TVRJdk1UQXZNVEl4TG1wd1oxd2lMRndpWkhWeVlYUnBiMjVjSWpvekxGd2labWxzYkUxdlpHVmNJanBjSW1acGJHeGNJaXhjSW1KbmRsOW1hV3hzYlc5a1pWd2lPbHdpWm1sc2JGd2lMRndpWW1kMlgyeHZiM0JjSWpwMGNuVmxMRndpWW1kMlgyMTFkR1ZjSWpwMGNuVmxMRndpWW1kMlgyRjFkRzl3WVhWelpWd2lPbVpoYkhObExGd2liR0Y1WlhKZmFXUnpYQ0k2VzExOUlpd2lNaUk2SW50Y0ltbGtYQ0k2TWl4Y0luUnBiV1ZzYVc1bFgyaGNJam95TURBc1hDSmlaMVJvZFcxaVhDSTZYQ0l2TWpBeE1pOHhNQzh5TFRFMU1IZ3hOVEF1YW5CblhDSXNYQ0p2Y21SbGNsd2lPakVzWENKaVoxd2lPbHdpTHpJd01USXZNVEF2TWk1cWNHZGNJaXhjSW1SMWNtRjBhVzl1WENJNk15eGNJbVpwYkd4TmIyUmxYQ0k2WENKbWFXeHNYQ0lzWENKaVozWmZabWxzYkcxdlpHVmNJanBjSW1acGJHeGNJaXhjSW1KbmRsOXNiMjl3WENJNmRISjFaU3hjSW1KbmRsOXRkWFJsWENJNmRISjFaU3hjSW1KbmRsOWhkWFJ2Y0dGMWMyVmNJanBtWVd4elpTeGNJbXhoZVdWeVgybGtjMXdpT2x0ZGZTSXNJak1pT2lKN1hDSnBaRndpT2pNc1hDSjBhVzFsYkdsdVpWOW9YQ0k2TWpBd0xGd2lZbWRVYUhWdFlsd2lPbHdpTHpJd01USXZNVEF2TVRFdE1UVXdlREUxTUM1cWNHZGNJaXhjSW05eVpHVnlYQ0k2TWl4Y0ltSm5YQ0k2WENJdk1qQXhNaTh4TUM4eE1TNXFjR2RjSWl4Y0ltUjFjbUYwYVc5dVhDSTZNeXhjSW1acGJHeE5iMlJsWENJNlhDSm1hV3hzWENJc1hDSmlaM1pmWm1sc2JHMXZaR1ZjSWpwY0ltWnBiR3hjSWl4Y0ltSm5kbDlzYjI5d1hDSTZkSEoxWlN4Y0ltSm5kbDl0ZFhSbFhDSTZkSEoxWlN4Y0ltSm5kbDloZFhSdmNHRjFjMlZjSWpwbVlXeHpaU3hjSW14aGVXVnlYMmxrYzF3aU9sdGRmU0lzSWpRaU9pSjdYQ0pwWkZ3aU9qUXNYQ0owYVcxbGJHbHVaVjlvWENJNk1qQXdMRndpWW1kVWFIVnRZbHdpT2x3aUx6SXdNVEl2TVRBdk15MHhOVEI0TVRVd0xtcHdaMXdpTEZ3aWIzSmtaWEpjSWpvekxGd2lZbWRjSWpwY0lpOHlNREV5THpFd0x6TXVhbkJuWENJc1hDSmtkWEpoZEdsdmJsd2lPak1zWENKbWFXeHNUVzlrWlZ3aU9sd2labWxzYkZ3aUxGd2lZbWQyWDJacGJHeHRiMlJsWENJNlhDSm1hV3hzWENJc1hDSmlaM1pmYkc5dmNGd2lPblJ5ZFdVc1hDSmlaM1pmYlhWMFpWd2lPblJ5ZFdVc1hDSmlaM1pmWVhWMGIzQmhkWE5sWENJNlptRnNjMlVzWENKc1lYbGxjbDlwWkhOY0lqcGJYWDBpTENJMUlqb2llMXdpYVdSY0lqbzFMRndpZEdsdFpXeHBibVZmYUZ3aU9qSXdNQ3hjSW1KblZHaDFiV0pjSWpwY0lpOHlNREV5THpFd0x6a3RNVFV3ZURFMU1DNXFjR2RjSWl4Y0ltOXlaR1Z5WENJNk5DeGNJbUpuWENJNlhDSXZNakF4TWk4eE1DODVMbXB3WjF3aUxGd2laSFZ5WVhScGIyNWNJam96TEZ3aVptbHNiRTF2WkdWY0lqcGNJbVpwYkd4Y0lpeGNJbUpuZGw5bWFXeHNiVzlrWlZ3aU9sd2labWxzYkZ3aUxGd2lZbWQyWDJ4dmIzQmNJanAwY25WbExGd2lZbWQyWDIxMWRHVmNJanAwY25WbExGd2lZbWQyWDJGMWRHOXdZWFZ6WlZ3aU9tWmhiSE5sTEZ3aWJHRjVaWEpmYVdSelhDSTZXMTE5SWl3aU5pSTZJbnRjSW1sa1hDSTZOaXhjSW5ScGJXVnNhVzVsWDJoY0lqb3lNREFzWENKaVoxUm9kVzFpWENJNlhDSXZNakF4TWk4eE1DODRMVEUxTUhneE5UQXVhbkJuWENJc1hDSnZjbVJsY2x3aU9qVXNYQ0ppWjF3aU9sd2lMekl3TVRJdk1UQXZPQzVxY0dkY0lpeGNJbVIxY21GMGFXOXVYQ0k2TXl4Y0ltWnBiR3hOYjJSbFhDSTZYQ0ptYVd4c1hDSXNYQ0ppWjNaZlptbHNiRzF2WkdWY0lqcGNJbVpwYkd4Y0lpeGNJbUpuZGw5c2IyOXdYQ0k2ZEhKMVpTeGNJbUpuZGw5dGRYUmxYQ0k2ZEhKMVpTeGNJbUpuZGw5aGRYUnZjR0YxYzJWY0lqcG1ZV3h6WlN4Y0lteGhlV1Z5WDJsa2Mxd2lPbHRkZlNJc0lqY2lPaUo3WENKcFpGd2lPamNzWENKMGFXMWxiR2x1WlY5b1hDSTZNakF3TEZ3aVltZFVhSFZ0WWx3aU9sd2lMekl3TVRJdk1UQXZOQzB4TlRCNE1UVXdMbXB3WjF3aUxGd2liM0prWlhKY0lqbzJMRndpWW1kY0lqcGNJaTh5TURFeUx6RXdMelF1YW5CblhDSXNYQ0prZFhKaGRHbHZibHdpT2pNc1hDSm1hV3hzVFc5a1pWd2lPbHdpWm1sc2JGd2lMRndpWW1kMlgyWnBiR3h0YjJSbFhDSTZYQ0ptYVd4c1hDSXNYQ0ppWjNaZmJHOXZjRndpT25SeWRXVXNYQ0ppWjNaZmJYVjBaVndpT25SeWRXVXNYQ0ppWjNaZllYVjBiM0JoZFhObFhDSTZabUZzYzJVc1hDSnNZWGxsY2w5cFpITmNJanBiWFgwaUxDSTVJam9pZTF3aWFXUmNJam81TEZ3aWRHbHRaV3hwYm1WZmFGd2lPakl3TUN4Y0ltSm5WR2gxYldKY0lqcGNJaTh5TURFeUx6RXdMekV6TFRFMU1IZ3hOVEF1YW5CblhDSXNYQ0p2Y21SbGNsd2lPamNzWENKaVoxd2lPbHdpTHpJd01USXZNVEF2TVRNdWFuQm5YQ0lzWENKa2RYSmhkR2x2Ymx3aU9qTXNYQ0ptYVd4c1RXOWtaVndpT2x3aVptbHNiRndpTEZ3aVltZDJYMlpwYkd4dGIyUmxYQ0k2WENKbWFXeHNYQ0lzWENKaVozWmZiRzl2Y0Z3aU9uUnlkV1VzWENKaVozWmZiWFYwWlZ3aU9uUnlkV1VzWENKaVozWmZZWFYwYjNCaGRYTmxYQ0k2Wm1Gc2MyVXNYQ0pzWVhsbGNsOXBaSE5jSWpwYlhYMGlMQ0l4TWlJNkludGNJbWxrWENJNk1USXNYQ0owYVcxbGJHbHVaVjlvWENJNk1qQXdMRndpWW1kVWFIVnRZbHdpT2x3aUx6SXdNVEl2TVRBdk1UWXRNVFV3ZURFMU1DNXFjR2RjSWl4Y0ltOXlaR1Z5WENJNk9DeGNJbUpuWENJNlhDSXZNakF4TWk4eE1DOHhOaTVxY0dkY0lpeGNJbVIxY21GMGFXOXVYQ0k2TXl4Y0ltWnBiR3hOYjJSbFhDSTZYQ0ptYVd4c1hDSXNYQ0ppWjNaZlptbHNiRzF2WkdWY0lqcGNJbVpwYkd4Y0lpeGNJbUpuZGw5c2IyOXdYQ0k2ZEhKMVpTeGNJbUpuZGw5dGRYUmxYQ0k2ZEhKMVpTeGNJbUpuZGw5aGRYUnZjR0YxYzJWY0lqcG1ZV3h6WlN4Y0lteGhlV1Z5WDJsa2Mxd2lPbHRkZlNJc0lqRTBJam9pZTF3aWFXUmNJam94TkN4Y0luUnBiV1ZzYVc1bFgyaGNJam95TURBc1hDSmlaMVJvZFcxaVhDSTZYQ0l2TWpBeE1pOHhNQzh4TlRFdE1UVXdlREUxTUM1cWNHZGNJaXhjSW05eVpHVnlYQ0k2T1N4Y0ltSm5YQ0k2WENJdk1qQXhNaTh4TUM4eE5URXVhbkJuWENJc1hDSmtkWEpoZEdsdmJsd2lPak1zWENKbWFXeHNUVzlrWlZ3aU9sd2labWxzYkZ3aUxGd2lZbWQyWDJacGJHeHRiMlJsWENJNlhDSm1hV3hzWENJc1hDSmlaM1pmYkc5dmNGd2lPblJ5ZFdVc1hDSmlaM1pmYlhWMFpWd2lPblJ5ZFdVc1hDSmlaM1pmWVhWMGIzQmhkWE5sWENJNlptRnNjMlVzWENKc1lYbGxjbDlwWkhOY0lqcGJYWDBpZlN3aVRWTlFZVzVsYkM1RGIyNTBjbTlzSWpwN0lqRWlPaUo3WENKcFpGd2lPbHdpTVZ3aUxGd2liR0ZpWld4Y0lqcGNJa0Z5Y205M2Mxd2lMRndpYm1GdFpWd2lPbHdpWVhKeWIzZHpYQ0lzWENKaGRYUnZTR2xrWlZ3aU9tWmhiSE5sTEZ3aWIzWmxjbFpwWkdWdlhDSTZkSEoxWlN4Y0ltbHVjMlYwWENJNmRISjFaWDBpTENJeUlqb2llMXdpYVdSY0lqb3lMRndpYkdGaVpXeGNJanBjSWtKMWJHeGxkSE5jSWl4Y0ltNWhiV1ZjSWpwY0ltSjFiR3hsZEhOY0lpeGNJbUYxZEc5SWFXUmxYQ0k2Wm1Gc2MyVXNYQ0p2ZG1WeVZtbGtaVzljSWpwMGNuVmxMRndpYldGeVoybHVYQ0k2TVRBc1hDSmthWEpjSWpwY0ltaGNJaXhjSW1Gc2FXZHVYQ0k2WENKaWIzUjBiMjFjSWl4Y0ltbHVjMlYwWENJNmRISjFaWDBpTENJeklqb2llMXdpYVdSY0lqb3pMRndpYkdGaVpXeGNJanBjSWxSb2RXMWliR2x6ZEM5VVlXSnpYQ0lzWENKdVlXMWxYQ0k2WENKMGFIVnRZbXhwYzNSY0lpeGNJbUYxZEc5SWFXUmxYQ0k2Wm1Gc2MyVXNYQ0p2ZG1WeVZtbGtaVzljSWpwMGNuVmxMRndpYldGeVoybHVYQ0k2TlN4Y0luTndZV05sWENJNk5TeGNJbmRwWkhSb1hDSTZNVFF3TEZ3aWFHVnBaMmgwWENJNk9EQXNYQ0poYkdsbmJsd2lPbHdpWW05MGRHOXRYQ0lzWENKcGJuTmxkRndpT21aaGJITmxMRndpWm1sc2JFMXZaR1ZjSWpwY0ltWnBiR3hjSW4waWZYMD0iLCJ0eXBlIjoiY3VzdG9tIiwic2xpZGVzX251bSI6IjEwIn19LCJvcmlnaW5fdXBsb2Fkc191cmwiOiJodHRwOlwvXC9kZW1vLmF2ZXJ0YS5uZXRcL3RoZW1lc1wvbG90dXNcL2R1bW15LWFnZW5jeVwvd3AtY29udGVudFwvdXBsb2FkcyJ9',
47
- 'image_dir' => '',
48
- 'selected' => '',
49
- 'screenshot'=> MSWP_AVERTA_ADMIN_URL . '/assets/images/starters/slider-with-horizontal-thumbs.jpg'
50
- ),
51
- array(
52
- 'label' => __( 'Slider Without Thumbnails', MSWP_TEXT_DOMAIN ),
53
- 'id' => 'slider-without-thumbs-1',
54
- 'slidertype'=> 'custom',
55
- 'importdata'=> 'eyJzbGlkZXJzX2RhdGEiOnsiNTMiOnsidGl0bGUiOiJTbGlkZXIgV2l0aG91dCBUaHVtYm5haWxzIiwicGFyYW1zIjoiZXlKdFpYUmhJanA3SWxObGRIUnBibWR6SVdsa2N5STZJakVpTENKVFpYUjBhVzVuY3lGdVpYaDBTV1FpT2pJc0lsTnNhV1JsSVdsa2N5STZJakVzTWl3ekxEUXNOU3cyTERjc09Td3hNaXd4TkNJc0lsTnNhV1JsSVc1bGVIUkpaQ0k2TVRVc0lrTnZiblJ5YjJ3aGFXUnpJam9pTVNJc0lrTnZiblJ5YjJ3aGJtVjRkRWxrSWpvMGZTd2lUVk5RWVc1bGJDNVRaWFIwYVc1bmN5STZleUl4SWpvaWUxd2lhV1JjSWpwY0lqRmNJaXhjSW5OdVlYQndhVzVuWENJNmRISjFaU3hjSW01aGJXVmNJanBjSWxOc2FXUmxjaUJYYVhSb2IzVjBJRlJvZFcxaWJtRnBiSE5jSWl4Y0luZHBaSFJvWENJNk9EQXdMRndpYUdWcFoyaDBYQ0k2TkRnd0xGd2lkM0poY0hCbGNsZHBaSFJvWENJNk9EQXdMRndpZDNKaGNIQmxjbGRwWkhSb1ZXNXBkRndpT2x3aWNIaGNJaXhjSW1GMWRHOURjbTl3WENJNlptRnNjMlVzWENKMGVYQmxYQ0k2WENKamRYTjBiMjFjSWl4Y0luTnNhV1JsY2tsa1hDSTZYQ0kxTTF3aUxGd2liR0Y1YjNWMFhDSTZYQ0ppYjNobFpGd2lMRndpWVhWMGIwaGxhV2RvZEZ3aU9tWmhiSE5sTEZ3aWRISldhV1YzWENJNlhDSmlZWE5wWTF3aUxGd2ljM0JsWldSY0lqb3lNQ3hjSW5Od1lXTmxYQ0k2TUN4Y0luTjBZWEowWENJNk1TeGNJbWR5WVdKRGRYSnpiM0pjSWpwMGNuVmxMRndpYzNkcGNHVmNJanAwY25WbExGd2liVzkxYzJWY0lqcDBjblZsTEZ3aWQyaGxaV3hjSWpwbVlXeHpaU3hjSW1GMWRHOXdiR0Y1WENJNlptRnNjMlVzWENKc2IyOXdYQ0k2Wm1Gc2MyVXNYQ0p6YUhWbVpteGxYQ0k2Wm1Gc2MyVXNYQ0p3Y21Wc2IyRmtYQ0k2WENJdE1Wd2lMRndpYjNabGNsQmhkWE5sWENJNmRISjFaU3hjSW1WdVpGQmhkWE5sWENJNlptRnNjMlVzWENKb2FXUmxUR0Y1WlhKelhDSTZabUZzYzJVc1hDSmthWEpjSWpwY0ltaGNJaXhjSW5CaGNtRnNiR0Y0VFc5a1pWd2lPbHdpYzNkcGNHVmNJaXhjSW1ObGJuUmxja052Ym5SeWIyeHpYQ0k2ZEhKMVpTeGNJbWx1YzNSaGJuUlRhRzkzVEdGNVpYSnpYQ0k2Wm1Gc2MyVXNYQ0ppWjBOdmJHOXlYQ0k2WENJak1EQXdNREF3WENJc1hDSnphMmx1WENJNlhDSnRjeTF6YTJsdUxXUmxabUYxYkhSY0lpeGNJbTF6VkdWdGNHeGhkR1ZjSWpwY0ltTjFjM1J2YlZ3aUxGd2liWE5VWlcxd2JHRjBaVU5zWVhOelhDSTZYQ0pjSWl4Y0luVnpaV1JHYjI1MGMxd2lPbHdpWENKOUluMHNJazFUVUdGdVpXd3VVMnhwWkdVaU9uc2lNU0k2SW50Y0ltbGtYQ0k2WENJeFhDSXNYQ0owYVcxbGJHbHVaVjlvWENJNk1qQXdMRndpWW1kVWFIVnRZbHdpT2x3aUx6SXdNVEl2TVRBdk1USXhMVEUxTUhneE5UQXVhbkJuWENJc1hDSnZjbVJsY2x3aU9qUXNYQ0ppWjF3aU9sd2lMekl3TVRJdk1UQXZNVEl4TG1wd1oxd2lMRndpWkhWeVlYUnBiMjVjSWpvekxGd2labWxzYkUxdlpHVmNJanBjSW1acGJHeGNJaXhjSW1KbmRsOW1hV3hzYlc5a1pWd2lPbHdpWm1sc2JGd2lMRndpWW1kMlgyeHZiM0JjSWpwMGNuVmxMRndpWW1kMlgyMTFkR1ZjSWpwMGNuVmxMRndpWW1kMlgyRjFkRzl3WVhWelpWd2lPbVpoYkhObExGd2liR0Y1WlhKZmFXUnpYQ0k2VzExOUlpd2lNaUk2SW50Y0ltbGtYQ0k2TWl4Y0luUnBiV1ZzYVc1bFgyaGNJam95TURBc1hDSmlaMVJvZFcxaVhDSTZYQ0l2TWpBeE1pOHhNQzh5TFRFMU1IZ3hOVEF1YW5CblhDSXNYQ0p2Y21SbGNsd2lPaklzWENKaVoxd2lPbHdpTHpJd01USXZNVEF2TWk1cWNHZGNJaXhjSW1SMWNtRjBhVzl1WENJNk15eGNJbVpwYkd4TmIyUmxYQ0k2WENKbWFXeHNYQ0lzWENKaVozWmZabWxzYkcxdlpHVmNJanBjSW1acGJHeGNJaXhjSW1KbmRsOXNiMjl3WENJNmRISjFaU3hjSW1KbmRsOXRkWFJsWENJNmRISjFaU3hjSW1KbmRsOWhkWFJ2Y0dGMWMyVmNJanBtWVd4elpTeGNJbXhoZVdWeVgybGtjMXdpT2x0ZGZTSXNJak1pT2lKN1hDSnBaRndpT2pNc1hDSjBhVzFsYkdsdVpWOW9YQ0k2TWpBd0xGd2lZbWRVYUhWdFlsd2lPbHdpTHpJd01USXZNVEF2TVRFdE1UVXdlREUxTUM1cWNHZGNJaXhjSW05eVpHVnlYQ0k2TXl4Y0ltSm5YQ0k2WENJdk1qQXhNaTh4TUM4eE1TNXFjR2RjSWl4Y0ltUjFjbUYwYVc5dVhDSTZNeXhjSW1acGJHeE5iMlJsWENJNlhDSm1hV3hzWENJc1hDSmlaM1pmWm1sc2JHMXZaR1ZjSWpwY0ltWnBiR3hjSWl4Y0ltSm5kbDlzYjI5d1hDSTZkSEoxWlN4Y0ltSm5kbDl0ZFhSbFhDSTZkSEoxWlN4Y0ltSm5kbDloZFhSdmNHRjFjMlZjSWpwbVlXeHpaU3hjSW14aGVXVnlYMmxrYzF3aU9sdGRmU0lzSWpRaU9pSjdYQ0pwWkZ3aU9qUXNYQ0owYVcxbGJHbHVaVjlvWENJNk1qQXdMRndpWW1kVWFIVnRZbHdpT2x3aUx6SXdNVEl2TVRBdk15MHhOVEI0TVRVd0xtcHdaMXdpTEZ3aWIzSmtaWEpjSWpvMUxGd2lZbWRjSWpwY0lpOHlNREV5THpFd0x6TXVhbkJuWENJc1hDSmtkWEpoZEdsdmJsd2lPak1zWENKbWFXeHNUVzlrWlZ3aU9sd2labWxzYkZ3aUxGd2lZbWQyWDJacGJHeHRiMlJsWENJNlhDSm1hV3hzWENJc1hDSmlaM1pmYkc5dmNGd2lPblJ5ZFdVc1hDSmlaM1pmYlhWMFpWd2lPblJ5ZFdVc1hDSmlaM1pmWVhWMGIzQmhkWE5sWENJNlptRnNjMlVzWENKc1lYbGxjbDlwWkhOY0lqcGJYWDBpTENJMUlqb2llMXdpYVdSY0lqbzFMRndpZEdsdFpXeHBibVZmYUZ3aU9qSXdNQ3hjSW1KblZHaDFiV0pjSWpwY0lpOHlNREV5THpFd0x6a3RNVFV3ZURFMU1DNXFjR2RjSWl4Y0ltOXlaR1Z5WENJNk5peGNJbUpuWENJNlhDSXZNakF4TWk4eE1DODVMbXB3WjF3aUxGd2laSFZ5WVhScGIyNWNJam96TEZ3aVptbHNiRTF2WkdWY0lqcGNJbVpwYkd4Y0lpeGNJbUpuZGw5bWFXeHNiVzlrWlZ3aU9sd2labWxzYkZ3aUxGd2lZbWQyWDJ4dmIzQmNJanAwY25WbExGd2lZbWQyWDIxMWRHVmNJanAwY25WbExGd2lZbWQyWDJGMWRHOXdZWFZ6WlZ3aU9tWmhiSE5sTEZ3aWJHRjVaWEpmYVdSelhDSTZXMTE5SWl3aU5pSTZJbnRjSW1sa1hDSTZOaXhjSW5ScGJXVnNhVzVsWDJoY0lqb3lNREFzWENKaVoxUm9kVzFpWENJNlhDSXZNakF4TWk4eE1DODRMVEUxTUhneE5UQXVhbkJuWENJc1hDSnZjbVJsY2x3aU9qRXNYQ0ppWjF3aU9sd2lMekl3TVRJdk1UQXZPQzVxY0dkY0lpeGNJbVIxY21GMGFXOXVYQ0k2TXl4Y0ltWnBiR3hOYjJSbFhDSTZYQ0ptYVd4c1hDSXNYQ0ppWjNaZlptbHNiRzF2WkdWY0lqcGNJbVpwYkd4Y0lpeGNJbUpuZGw5c2IyOXdYQ0k2ZEhKMVpTeGNJbUpuZGw5dGRYUmxYQ0k2ZEhKMVpTeGNJbUpuZGw5aGRYUnZjR0YxYzJWY0lqcG1ZV3h6WlN4Y0lteGhlV1Z5WDJsa2Mxd2lPbHRkZlNJc0lqY2lPaUo3WENKcFpGd2lPamNzWENKMGFXMWxiR2x1WlY5b1hDSTZNakF3TEZ3aVltZFVhSFZ0WWx3aU9sd2lMekl3TVRJdk1UQXZOQzB4TlRCNE1UVXdMbXB3WjF3aUxGd2liM0prWlhKY0lqbzNMRndpWW1kY0lqcGNJaTh5TURFeUx6RXdMelF1YW5CblhDSXNYQ0prZFhKaGRHbHZibHdpT2pNc1hDSm1hV3hzVFc5a1pWd2lPbHdpWm1sc2JGd2lMRndpWW1kMlgyWnBiR3h0YjJSbFhDSTZYQ0ptYVd4c1hDSXNYQ0ppWjNaZmJHOXZjRndpT25SeWRXVXNYQ0ppWjNaZmJYVjBaVndpT25SeWRXVXNYQ0ppWjNaZllYVjBiM0JoZFhObFhDSTZabUZzYzJVc1hDSnNZWGxsY2w5cFpITmNJanBiWFgwaUxDSTVJam9pZTF3aWFXUmNJam81TEZ3aWRHbHRaV3hwYm1WZmFGd2lPakl3TUN4Y0ltSm5WR2gxYldKY0lqcGNJaTh5TURFeUx6RXdMekV6TFRFMU1IZ3hOVEF1YW5CblhDSXNYQ0p2Y21SbGNsd2lPakFzWENKaVoxd2lPbHdpTHpJd01USXZNVEF2TVRNdWFuQm5YQ0lzWENKa2RYSmhkR2x2Ymx3aU9qTXNYQ0ptYVd4c1RXOWtaVndpT2x3aVptbHNiRndpTEZ3aVltZDJYMlpwYkd4dGIyUmxYQ0k2WENKbWFXeHNYQ0lzWENKaVozWmZiRzl2Y0Z3aU9uUnlkV1VzWENKaVozWmZiWFYwWlZ3aU9uUnlkV1VzWENKaVozWmZZWFYwYjNCaGRYTmxYQ0k2Wm1Gc2MyVXNYQ0pzWVhsbGNsOXBaSE5jSWpwYlhYMGlMQ0l4TWlJNkludGNJbWxrWENJNk1USXNYQ0owYVcxbGJHbHVaVjlvWENJNk1qQXdMRndpWW1kVWFIVnRZbHdpT2x3aUx6SXdNVEl2TVRBdk1UWXRNVFV3ZURFMU1DNXFjR2RjSWl4Y0ltOXlaR1Z5WENJNk9DeGNJbUpuWENJNlhDSXZNakF4TWk4eE1DOHhOaTVxY0dkY0lpeGNJbVIxY21GMGFXOXVYQ0k2TXl4Y0ltWnBiR3hOYjJSbFhDSTZYQ0ptYVd4c1hDSXNYQ0ppWjNaZlptbHNiRzF2WkdWY0lqcGNJbVpwYkd4Y0lpeGNJbUpuZGw5c2IyOXdYQ0k2ZEhKMVpTeGNJbUpuZGw5dGRYUmxYQ0k2ZEhKMVpTeGNJbUpuZGw5aGRYUnZjR0YxYzJWY0lqcG1ZV3h6WlN4Y0lteGhlV1Z5WDJsa2Mxd2lPbHRkZlNJc0lqRTBJam9pZTF3aWFXUmNJam94TkN4Y0luUnBiV1ZzYVc1bFgyaGNJam95TURBc1hDSmlaMVJvZFcxaVhDSTZYQ0l2TWpBeE1pOHhNQzh4TlRFdE1UVXdlREUxTUM1cWNHZGNJaXhjSW05eVpHVnlYQ0k2T1N4Y0ltSm5YQ0k2WENJdk1qQXhNaTh4TUM4eE5URXVhbkJuWENJc1hDSmtkWEpoZEdsdmJsd2lPak1zWENKbWFXeHNUVzlrWlZ3aU9sd2labWxzYkZ3aUxGd2lZbWQyWDJacGJHeHRiMlJsWENJNlhDSm1hV3hzWENJc1hDSmlaM1pmYkc5dmNGd2lPblJ5ZFdVc1hDSmlaM1pmYlhWMFpWd2lPblJ5ZFdVc1hDSmlaM1pmWVhWMGIzQmhkWE5sWENJNlptRnNjMlVzWENKc1lYbGxjbDlwWkhOY0lqcGJYWDBpZlN3aVRWTlFZVzVsYkM1RGIyNTBjbTlzSWpwN0lqRWlPaUo3WENKcFpGd2lPbHdpTVZ3aUxGd2liR0ZpWld4Y0lqcGNJa0Z5Y205M2Mxd2lMRndpYm1GdFpWd2lPbHdpWVhKeWIzZHpYQ0lzWENKaGRYUnZTR2xrWlZ3aU9tWmhiSE5sTEZ3aWIzWmxjbFpwWkdWdlhDSTZkSEoxWlN4Y0ltbHVjMlYwWENJNmRISjFaWDBpZlgwPSIsInR5cGUiOiJjdXN0b20iLCJzbGlkZXNfbnVtIjoiMTAifX0sIm9yaWdpbl91cGxvYWRzX3VybCI6Imh0dHA6XC9cL2RlbW8uYXZlcnRhLm5ldFwvdGhlbWVzXC9sb3R1c1wvZHVtbXktYWdlbmN5XC93cC1jb250ZW50XC91cGxvYWRzIn0=',
56
- 'image_dir' => '',
57
- 'selected' => '',
58
- 'screenshot'=> MSWP_AVERTA_ADMIN_URL . '/assets/images/starters/simple-slider.jpg'
59
- ),
60
- array(
61
- 'label' => __( 'Slider with Vertical Thumbnails', MSWP_TEXT_DOMAIN ),
62
- 'id' => 'slider-with-thumbs-2',
63
- 'slidertype'=> 'custom',
64
- 'importdata'=> 'eyJzbGlkZXJzX2RhdGEiOnsiNTQiOnsidGl0bGUiOiJTbGlkZXIgd2l0aCBWZXJ0aWNhbCBUaHVtYm5haWxzIiwicGFyYW1zIjoiZXlKdFpYUmhJanA3SWxObGRIUnBibWR6SVdsa2N5STZJakVpTENKVFpYUjBhVzVuY3lGdVpYaDBTV1FpT2pJc0lsTnNhV1JsSVdsa2N5STZJakVzTWl3ekxEUXNOU3cyTERjc09Td3hNaXd4TkNJc0lsTnNhV1JsSVc1bGVIUkpaQ0k2TVRVc0lrTnZiblJ5YjJ3aGFXUnpJam9pTVN3eUxETWlMQ0pEYjI1MGNtOXNJVzVsZUhSSlpDSTZOSDBzSWsxVFVHRnVaV3d1VTJWMGRHbHVaM01pT25zaU1TSTZJbnRjSW1sa1hDSTZYQ0l4WENJc1hDSnpibUZ3Y0dsdVoxd2lPblJ5ZFdVc1hDSnVZVzFsWENJNlhDSlRiR2xrWlhJZ2QybDBhQ0JXWlhKMGFXTmhiQ0JVYUhWdFltNWhhV3h6WENJc1hDSjNhV1IwYUZ3aU9qZ3dNQ3hjSW1obGFXZG9kRndpT2pRNE1DeGNJbmR5WVhCd1pYSlhhV1IwYUZ3aU9qazBOU3hjSW5keVlYQndaWEpYYVdSMGFGVnVhWFJjSWpwY0luQjRYQ0lzWENKaGRYUnZRM0p2Y0Z3aU9tWmhiSE5sTEZ3aWRIbHdaVndpT2x3aVkzVnpkRzl0WENJc1hDSnpiR2xrWlhKSlpGd2lPbHdpTlRSY0lpeGNJbXhoZVc5MWRGd2lPbHdpWW05NFpXUmNJaXhjSW1GMWRHOUlaV2xuYUhSY0lqcG1ZV3h6WlN4Y0luUnlWbWxsZDF3aU9sd2lZbUZ6YVdOY0lpeGNJbk53WldWa1hDSTZNakFzWENKemNHRmpaVndpT2pBc1hDSnpkR0Z5ZEZ3aU9qRXNYQ0puY21GaVEzVnljMjl5WENJNmRISjFaU3hjSW5OM2FYQmxYQ0k2ZEhKMVpTeGNJbTF2ZFhObFhDSTZkSEoxWlN4Y0luZG9aV1ZzWENJNlptRnNjMlVzWENKaGRYUnZjR3hoZVZ3aU9tWmhiSE5sTEZ3aWJHOXZjRndpT25SeWRXVXNYQ0p6YUhWbVpteGxYQ0k2Wm1Gc2MyVXNYQ0p3Y21Wc2IyRmtYQ0k2WENJdE1Wd2lMRndpYjNabGNsQmhkWE5sWENJNmRISjFaU3hjSW1WdVpGQmhkWE5sWENJNlptRnNjMlVzWENKb2FXUmxUR0Y1WlhKelhDSTZabUZzYzJVc1hDSmthWEpjSWpwY0ltaGNJaXhjSW5CaGNtRnNiR0Y0VFc5a1pWd2lPbHdpYzNkcGNHVmNJaXhjSW1ObGJuUmxja052Ym5SeWIyeHpYQ0k2ZEhKMVpTeGNJbWx1YzNSaGJuUlRhRzkzVEdGNVpYSnpYQ0k2Wm1Gc2MyVXNYQ0ppWjBOdmJHOXlYQ0k2WENJak1EQXdNREF3WENJc1hDSnphMmx1WENJNlhDSnRjeTF6YTJsdUxXUmxabUYxYkhSY0lpeGNJbTF6VkdWdGNHeGhkR1ZjSWpwY0ltTjFjM1J2YlZ3aUxGd2liWE5VWlcxd2JHRjBaVU5zWVhOelhDSTZYQ0pjSWl4Y0luVnpaV1JHYjI1MGMxd2lPbHdpWENKOUluMHNJazFUVUdGdVpXd3VVMnhwWkdVaU9uc2lNU0k2SW50Y0ltbGtYQ0k2WENJeFhDSXNYQ0owYVcxbGJHbHVaVjlvWENJNk1qQXdMRndpWW1kVWFIVnRZbHdpT2x3aUx6SXdNVEl2TVRBdk1USXhMVEUxTUhneE5UQXVhbkJuWENJc1hDSnZjbVJsY2x3aU9qQXNYQ0ppWjF3aU9sd2lMekl3TVRJdk1UQXZNVEl4TG1wd1oxd2lMRndpWkhWeVlYUnBiMjVjSWpvekxGd2labWxzYkUxdlpHVmNJanBjSW1acGJHeGNJaXhjSW1KbmRsOW1hV3hzYlc5a1pWd2lPbHdpWm1sc2JGd2lMRndpWW1kMlgyeHZiM0JjSWpwMGNuVmxMRndpWW1kMlgyMTFkR1ZjSWpwMGNuVmxMRndpWW1kMlgyRjFkRzl3WVhWelpWd2lPbVpoYkhObExGd2liR0Y1WlhKZmFXUnpYQ0k2VzExOUlpd2lNaUk2SW50Y0ltbGtYQ0k2TWl4Y0luUnBiV1ZzYVc1bFgyaGNJam95TURBc1hDSmlaMVJvZFcxaVhDSTZYQ0l2TWpBeE1pOHhNQzh5TFRFMU1IZ3hOVEF1YW5CblhDSXNYQ0p2Y21SbGNsd2lPakVzWENKaVoxd2lPbHdpTHpJd01USXZNVEF2TWk1cWNHZGNJaXhjSW1SMWNtRjBhVzl1WENJNk15eGNJbVpwYkd4TmIyUmxYQ0k2WENKbWFXeHNYQ0lzWENKaVozWmZabWxzYkcxdlpHVmNJanBjSW1acGJHeGNJaXhjSW1KbmRsOXNiMjl3WENJNmRISjFaU3hjSW1KbmRsOXRkWFJsWENJNmRISjFaU3hjSW1KbmRsOWhkWFJ2Y0dGMWMyVmNJanBtWVd4elpTeGNJbXhoZVdWeVgybGtjMXdpT2x0ZGZTSXNJak1pT2lKN1hDSnBaRndpT2pNc1hDSjBhVzFsYkdsdVpWOW9YQ0k2TWpBd0xGd2lZbWRVYUhWdFlsd2lPbHdpTHpJd01USXZNVEF2TVRFdE1UVXdlREUxTUM1cWNHZGNJaXhjSW05eVpHVnlYQ0k2TWl4Y0ltSm5YQ0k2WENJdk1qQXhNaTh4TUM4eE1TNXFjR2RjSWl4Y0ltUjFjbUYwYVc5dVhDSTZNeXhjSW1acGJHeE5iMlJsWENJNlhDSm1hV3hzWENJc1hDSmlaM1pmWm1sc2JHMXZaR1ZjSWpwY0ltWnBiR3hjSWl4Y0ltSm5kbDlzYjI5d1hDSTZkSEoxWlN4Y0ltSm5kbDl0ZFhSbFhDSTZkSEoxWlN4Y0ltSm5kbDloZFhSdmNHRjFjMlZjSWpwbVlXeHpaU3hjSW14aGVXVnlYMmxrYzF3aU9sdGRmU0lzSWpRaU9pSjdYQ0pwWkZ3aU9qUXNYQ0owYVcxbGJHbHVaVjlvWENJNk1qQXdMRndpWW1kVWFIVnRZbHdpT2x3aUx6SXdNVEl2TVRBdk15MHhOVEI0TVRVd0xtcHdaMXdpTEZ3aWIzSmtaWEpjSWpvekxGd2lZbWRjSWpwY0lpOHlNREV5THpFd0x6TXVhbkJuWENJc1hDSmtkWEpoZEdsdmJsd2lPak1zWENKbWFXeHNUVzlrWlZ3aU9sd2labWxzYkZ3aUxGd2lZbWQyWDJacGJHeHRiMlJsWENJNlhDSm1hV3hzWENJc1hDSmlaM1pmYkc5dmNGd2lPblJ5ZFdVc1hDSmlaM1pmYlhWMFpWd2lPblJ5ZFdVc1hDSmlaM1pmWVhWMGIzQmhkWE5sWENJNlptRnNjMlVzWENKc1lYbGxjbDlwWkhOY0lqcGJYWDBpTENJMUlqb2llMXdpYVdSY0lqbzFMRndpZEdsdFpXeHBibVZmYUZ3aU9qSXdNQ3hjSW1KblZHaDFiV0pjSWpwY0lpOHlNREV5THpFd0x6a3RNVFV3ZURFMU1DNXFjR2RjSWl4Y0ltOXlaR1Z5WENJNk5DeGNJbUpuWENJNlhDSXZNakF4TWk4eE1DODVMbXB3WjF3aUxGd2laSFZ5WVhScGIyNWNJam96TEZ3aVptbHNiRTF2WkdWY0lqcGNJbVpwYkd4Y0lpeGNJbUpuZGw5bWFXeHNiVzlrWlZ3aU9sd2labWxzYkZ3aUxGd2lZbWQyWDJ4dmIzQmNJanAwY25WbExGd2lZbWQyWDIxMWRHVmNJanAwY25WbExGd2lZbWQyWDJGMWRHOXdZWFZ6WlZ3aU9tWmhiSE5sTEZ3aWJHRjVaWEpmYVdSelhDSTZXMTE5SWl3aU5pSTZJbnRjSW1sa1hDSTZOaXhjSW5ScGJXVnNhVzVsWDJoY0lqb3lNREFzWENKaVoxUm9kVzFpWENJNlhDSXZNakF4TWk4eE1DODRMVEUxTUhneE5UQXVhbkJuWENJc1hDSnZjbVJsY2x3aU9qVXNYQ0ppWjF3aU9sd2lMekl3TVRJdk1UQXZPQzVxY0dkY0lpeGNJbVIxY21GMGFXOXVYQ0k2TXl4Y0ltWnBiR3hOYjJSbFhDSTZYQ0ptYVd4c1hDSXNYQ0ppWjNaZlptbHNiRzF2WkdWY0lqcGNJbVpwYkd4Y0lpeGNJbUpuZGw5c2IyOXdYQ0k2ZEhKMVpTeGNJbUpuZGw5dGRYUmxYQ0k2ZEhKMVpTeGNJbUpuZGw5aGRYUnZjR0YxYzJWY0lqcG1ZV3h6WlN4Y0lteGhlV1Z5WDJsa2Mxd2lPbHRkZlNJc0lqY2lPaUo3WENKcFpGd2lPamNzWENKMGFXMWxiR2x1WlY5b1hDSTZNakF3TEZ3aVltZFVhSFZ0WWx3aU9sd2lMekl3TVRJdk1UQXZOQzB4TlRCNE1UVXdMbXB3WjF3aUxGd2liM0prWlhKY0lqbzJMRndpWW1kY0lqcGNJaTh5TURFeUx6RXdMelF1YW5CblhDSXNYQ0prZFhKaGRHbHZibHdpT2pNc1hDSm1hV3hzVFc5a1pWd2lPbHdpWm1sc2JGd2lMRndpWW1kMlgyWnBiR3h0YjJSbFhDSTZYQ0ptYVd4c1hDSXNYQ0ppWjNaZmJHOXZjRndpT25SeWRXVXNYQ0ppWjNaZmJYVjBaVndpT25SeWRXVXNYQ0ppWjNaZllYVjBiM0JoZFhObFhDSTZabUZzYzJVc1hDSnNZWGxsY2w5cFpITmNJanBiWFgwaUxDSTVJam9pZTF3aWFXUmNJam81TEZ3aWRHbHRaV3hwYm1WZmFGd2lPakl3TUN4Y0ltSm5WR2gxYldKY0lqcGNJaTh5TURFeUx6RXdMekV6TFRFMU1IZ3hOVEF1YW5CblhDSXNYQ0p2Y21SbGNsd2lPamNzWENKaVoxd2lPbHdpTHpJd01USXZNVEF2TVRNdWFuQm5YQ0lzWENKa2RYSmhkR2x2Ymx3aU9qTXNYQ0ptYVd4c1RXOWtaVndpT2x3aVptbHNiRndpTEZ3aVltZDJYMlpwYkd4dGIyUmxYQ0k2WENKbWFXeHNYQ0lzWENKaVozWmZiRzl2Y0Z3aU9uUnlkV1VzWENKaVozWmZiWFYwWlZ3aU9uUnlkV1VzWENKaVozWmZZWFYwYjNCaGRYTmxYQ0k2Wm1Gc2MyVXNYQ0pzWVhsbGNsOXBaSE5jSWpwYlhYMGlMQ0l4TWlJNkludGNJbWxrWENJNk1USXNYQ0owYVcxbGJHbHVaVjlvWENJNk1qQXdMRndpWW1kVWFIVnRZbHdpT2x3aUx6SXdNVEl2TVRBdk1UWXRNVFV3ZURFMU1DNXFjR2RjSWl4Y0ltOXlaR1Z5WENJNk9DeGNJbUpuWENJNlhDSXZNakF4TWk4eE1DOHhOaTVxY0dkY0lpeGNJbVIxY21GMGFXOXVYQ0k2TXl4Y0ltWnBiR3hOYjJSbFhDSTZYQ0ptYVd4c1hDSXNYQ0ppWjNaZlptbHNiRzF2WkdWY0lqcGNJbVpwYkd4Y0lpeGNJbUpuZGw5c2IyOXdYQ0k2ZEhKMVpTeGNJbUpuZGw5dGRYUmxYQ0k2ZEhKMVpTeGNJbUpuZGw5aGRYUnZjR0YxYzJWY0lqcG1ZV3h6WlN4Y0lteGhlV1Z5WDJsa2Mxd2lPbHRkZlNJc0lqRTBJam9pZTF3aWFXUmNJam94TkN4Y0luUnBiV1ZzYVc1bFgyaGNJam95TURBc1hDSmlaMVJvZFcxaVhDSTZYQ0l2TWpBeE1pOHhNQzh4TlRFdE1UVXdlREUxTUM1cWNHZGNJaXhjSW05eVpHVnlYQ0k2T1N4Y0ltSm5YQ0k2WENJdk1qQXhNaTh4TUM4eE5URXVhbkJuWENJc1hDSmtkWEpoZEdsdmJsd2lPak1zWENKbWFXeHNUVzlrWlZ3aU9sd2labWxzYkZ3aUxGd2lZbWQyWDJacGJHeHRiMlJsWENJNlhDSm1hV3hzWENJc1hDSmlaM1pmYkc5dmNGd2lPblJ5ZFdVc1hDSmlaM1pmYlhWMFpWd2lPblJ5ZFdVc1hDSmlaM1pmWVhWMGIzQmhkWE5sWENJNlptRnNjMlVzWENKc1lYbGxjbDlwWkhOY0lqcGJYWDBpZlN3aVRWTlFZVzVsYkM1RGIyNTBjbTlzSWpwN0lqRWlPaUo3WENKcFpGd2lPbHdpTVZ3aUxGd2liR0ZpWld4Y0lqcGNJa0Z5Y205M2Mxd2lMRndpYm1GdFpWd2lPbHdpWVhKeWIzZHpYQ0lzWENKaGRYUnZTR2xrWlZ3aU9tWmhiSE5sTEZ3aWIzWmxjbFpwWkdWdlhDSTZkSEoxWlN4Y0ltbHVjMlYwWENJNmRISjFaWDBpTENJeUlqb2llMXdpYVdSY0lqb3lMRndpYkdGaVpXeGNJanBjSWtKMWJHeGxkSE5jSWl4Y0ltNWhiV1ZjSWpwY0ltSjFiR3hsZEhOY0lpeGNJbUYxZEc5SWFXUmxYQ0k2Wm1Gc2MyVXNYQ0p2ZG1WeVZtbGtaVzljSWpwMGNuVmxMRndpYldGeVoybHVYQ0k2TVRBc1hDSmthWEpjSWpwY0ltaGNJaXhjSW1Gc2FXZHVYQ0k2WENKaWIzUjBiMjFjSWl4Y0ltbHVjMlYwWENJNmRISjFaWDBpTENJeklqb2llMXdpYVdSY0lqb3pMRndpYkdGaVpXeGNJanBjSWxSb2RXMWliR2x6ZEM5VVlXSnpYQ0lzWENKdVlXMWxYQ0k2WENKMGFIVnRZbXhwYzNSY0lpeGNJbUYxZEc5SWFXUmxYQ0k2Wm1Gc2MyVXNYQ0p2ZG1WeVZtbGtaVzljSWpwMGNuVmxMRndpYldGeVoybHVYQ0k2TlN4Y0luTndZV05sWENJNk5TeGNJbmRwWkhSb1hDSTZNVFF3TEZ3aWFHVnBaMmgwWENJNk9EQXNYQ0poYkdsbmJsd2lPbHdpY21sbmFIUmNJaXhjSW1sdWMyVjBYQ0k2Wm1Gc2MyVXNYQ0ptYVd4c1RXOWtaVndpT2x3aVptbHNiRndpZlNKOWZRPT0iLCJ0eXBlIjoiY3VzdG9tIiwic2xpZGVzX251bSI6IjEwIn19LCJvcmlnaW5fdXBsb2Fkc191cmwiOiJodHRwOlwvXC9kZW1vLmF2ZXJ0YS5uZXRcL3RoZW1lc1wvbG90dXNcL2R1bW15LWFnZW5jeVwvd3AtY29udGVudFwvdXBsb2FkcyJ9',
65
- 'image_dir' => '',
66
- 'selected' => '',
67
- 'screenshot'=> MSWP_AVERTA_ADMIN_URL . '/assets/images/starters/slider-with-vertical-thumbs.jpg'
68
- ),
69
- array(
70
- 'label' => __( 'Fullwidth Slider', MSWP_TEXT_DOMAIN ),
71
- 'id' => 'fullwith-without-thumbs-1',
72
- 'slidertype'=> 'custom',
73
- 'importdata'=> 'eyJzbGlkZXJzX2RhdGEiOnsiNTUiOnsidGl0bGUiOiJGdWxsd2lkdGggU2xpZGVyIiwicGFyYW1zIjoiZXlKdFpYUmhJanA3SWxObGRIUnBibWR6SVdsa2N5STZJakVpTENKVFpYUjBhVzVuY3lGdVpYaDBTV1FpT2pJc0lsTnNhV1JsSVdsa2N5STZJakVzTWl3ekxEUXNOU3cyTERjc09Td3hNaXd4TkNJc0lsTnNhV1JsSVc1bGVIUkpaQ0k2TVRVc0lrTnZiblJ5YjJ3aGFXUnpJam9pTVN3eUxEUWlMQ0pEYjI1MGNtOXNJVzVsZUhSSlpDSTZOWDBzSWsxVFVHRnVaV3d1VTJWMGRHbHVaM01pT25zaU1TSTZJbnRjSW1sa1hDSTZYQ0l4WENJc1hDSnpibUZ3Y0dsdVoxd2lPblJ5ZFdVc1hDSnVZVzFsWENJNlhDSkdkV3hzZDJsa2RHZ2dVMnhwWkdWeVhDSXNYQ0ozYVdSMGFGd2lPamd3TUN4Y0ltaGxhV2RvZEZ3aU9qUTRNQ3hjSW5keVlYQndaWEpYYVdSMGFGd2lPamswTlN4Y0luZHlZWEJ3WlhKWGFXUjBhRlZ1YVhSY0lqcGNJbkI0WENJc1hDSmhkWFJ2UTNKdmNGd2lPbVpoYkhObExGd2lkSGx3WlZ3aU9sd2lZM1Z6ZEc5dFhDSXNYQ0p6Ykdsa1pYSkpaRndpT2x3aU5UVmNJaXhjSW14aGVXOTFkRndpT2x3aVpuVnNiSGRwWkhSb1hDSXNYQ0poZFhSdlNHVnBaMmgwWENJNlptRnNjMlVzWENKMGNsWnBaWGRjSWpwY0ltSmhjMmxqWENJc1hDSnpjR1ZsWkZ3aU9qSXdMRndpYzNCaFkyVmNJam93TEZ3aWMzUmhjblJjSWpveExGd2laM0poWWtOMWNuTnZjbHdpT25SeWRXVXNYQ0p6ZDJsd1pWd2lPblJ5ZFdVc1hDSnRiM1Z6WlZ3aU9uUnlkV1VzWENKM2FHVmxiRndpT21aaGJITmxMRndpWVhWMGIzQnNZWGxjSWpwbVlXeHpaU3hjSW14dmIzQmNJanBtWVd4elpTeGNJbk5vZFdabWJHVmNJanBtWVd4elpTeGNJbkJ5Wld4dllXUmNJanBjSWkweFhDSXNYQ0p2ZG1WeVVHRjFjMlZjSWpwMGNuVmxMRndpWlc1a1VHRjFjMlZjSWpwbVlXeHpaU3hjSW1ocFpHVk1ZWGxsY25OY0lqcG1ZV3h6WlN4Y0ltUnBjbHdpT2x3aWFGd2lMRndpY0dGeVlXeHNZWGhOYjJSbFhDSTZYQ0p6ZDJsd1pWd2lMRndpWTJWdWRHVnlRMjl1ZEhKdmJITmNJanBtWVd4elpTeGNJbWx1YzNSaGJuUlRhRzkzVEdGNVpYSnpYQ0k2Wm1Gc2MyVXNYQ0ppWjBOdmJHOXlYQ0k2WENJak1EQXdNREF3WENJc1hDSnphMmx1WENJNlhDSnRjeTF6YTJsdUxXeHBaMmgwTFRZZ2NtOTFibVF0YzJ0cGJsd2lMRndpYlhOVVpXMXdiR0YwWlZ3aU9sd2lZM1Z6ZEc5dFhDSXNYQ0p0YzFSbGJYQnNZWFJsUTJ4aGMzTmNJanBjSWx3aUxGd2lkWE5sWkVadmJuUnpYQ0k2WENKY0luMGlmU3dpVFZOUVlXNWxiQzVUYkdsa1pTSTZleUl4SWpvaWUxd2lhV1JjSWpwY0lqRmNJaXhjSW5ScGJXVnNhVzVsWDJoY0lqb3lNREFzWENKaVoxUm9kVzFpWENJNlhDSXZNakF4TWk4eE1DOHhNakV0TVRVd2VERTFNQzVxY0dkY0lpeGNJbTl5WkdWeVhDSTZNU3hjSW1KblhDSTZYQ0l2TWpBeE1pOHhNQzh4TWpFdWFuQm5YQ0lzWENKa2RYSmhkR2x2Ymx3aU9qTXNYQ0ptYVd4c1RXOWtaVndpT2x3aVptbHNiRndpTEZ3aVltZDJYMlpwYkd4dGIyUmxYQ0k2WENKbWFXeHNYQ0lzWENKaVozWmZiRzl2Y0Z3aU9uUnlkV1VzWENKaVozWmZiWFYwWlZ3aU9uUnlkV1VzWENKaVozWmZZWFYwYjNCaGRYTmxYQ0k2Wm1Gc2MyVXNYQ0pzWVhsbGNsOXBaSE5jSWpwYlhYMGlMQ0l5SWpvaWUxd2lhV1JjSWpveUxGd2lkR2x0Wld4cGJtVmZhRndpT2pJd01DeGNJbUpuVkdoMWJXSmNJanBjSWk4eU1ERXlMekV3THpJdE1UVXdlREUxTUM1cWNHZGNJaXhjSW05eVpHVnlYQ0k2TUN4Y0ltSm5YQ0k2WENJdk1qQXhNaTh4TUM4eUxtcHdaMXdpTEZ3aVpIVnlZWFJwYjI1Y0lqb3pMRndpWm1sc2JFMXZaR1ZjSWpwY0ltWnBiR3hjSWl4Y0ltSm5kbDltYVd4c2JXOWtaVndpT2x3aVptbHNiRndpTEZ3aVltZDJYMnh2YjNCY0lqcDBjblZsTEZ3aVltZDJYMjExZEdWY0lqcDBjblZsTEZ3aVltZDJYMkYxZEc5d1lYVnpaVndpT21aaGJITmxMRndpYkdGNVpYSmZhV1J6WENJNlcxMTlJaXdpTXlJNkludGNJbWxrWENJNk15eGNJblJwYldWc2FXNWxYMmhjSWpveU1EQXNYQ0ppWjFSb2RXMWlYQ0k2WENJdk1qQXhNaTh4TUM4eE1TMHhOVEI0TVRVd0xtcHdaMXdpTEZ3aWIzSmtaWEpjSWpvekxGd2lZbWRjSWpwY0lpOHlNREV5THpFd0x6RXhMbXB3WjF3aUxGd2laSFZ5WVhScGIyNWNJam96TEZ3aVptbHNiRTF2WkdWY0lqcGNJbVpwYkd4Y0lpeGNJbUpuZGw5bWFXeHNiVzlrWlZ3aU9sd2labWxzYkZ3aUxGd2lZbWQyWDJ4dmIzQmNJanAwY25WbExGd2lZbWQyWDIxMWRHVmNJanAwY25WbExGd2lZbWQyWDJGMWRHOXdZWFZ6WlZ3aU9tWmhiSE5sTEZ3aWJHRjVaWEpmYVdSelhDSTZXMTE5SWl3aU5DSTZJbnRjSW1sa1hDSTZOQ3hjSW5ScGJXVnNhVzVsWDJoY0lqb3lNREFzWENKaVoxUm9kVzFpWENJNlhDSXZNakF4TWk4eE1DOHpMVEUxTUhneE5UQXVhbkJuWENJc1hDSnZjbVJsY2x3aU9qSXNYQ0ppWjF3aU9sd2lMekl3TVRJdk1UQXZNeTVxY0dkY0lpeGNJbVIxY21GMGFXOXVYQ0k2TXl4Y0ltWnBiR3hOYjJSbFhDSTZYQ0ptYVd4c1hDSXNYQ0ppWjNaZlptbHNiRzF2WkdWY0lqcGNJbVpwYkd4Y0lpeGNJbUpuZGw5c2IyOXdYQ0k2ZEhKMVpTeGNJbUpuZGw5dGRYUmxYQ0k2ZEhKMVpTeGNJbUpuZGw5aGRYUnZjR0YxYzJWY0lqcG1ZV3h6WlN4Y0lteGhlV1Z5WDJsa2Mxd2lPbHRkZlNJc0lqVWlPaUo3WENKcFpGd2lPalVzWENKMGFXMWxiR2x1WlY5b1hDSTZNakF3TEZ3aVltZFVhSFZ0WWx3aU9sd2lMekl3TVRJdk1UQXZPUzB4TlRCNE1UVXdMbXB3WjF3aUxGd2liM0prWlhKY0lqbzFMRndpWW1kY0lqcGNJaTh5TURFeUx6RXdMemt1YW5CblhDSXNYQ0prZFhKaGRHbHZibHdpT2pNc1hDSm1hV3hzVFc5a1pWd2lPbHdpWm1sc2JGd2lMRndpWW1kMlgyWnBiR3h0YjJSbFhDSTZYQ0ptYVd4c1hDSXNYQ0ppWjNaZmJHOXZjRndpT25SeWRXVXNYQ0ppWjNaZmJYVjBaVndpT25SeWRXVXNYQ0ppWjNaZllYVjBiM0JoZFhObFhDSTZabUZzYzJVc1hDSnNZWGxsY2w5cFpITmNJanBiWFgwaUxDSTJJam9pZTF3aWFXUmNJam8yTEZ3aWRHbHRaV3hwYm1WZmFGd2lPakl3TUN4Y0ltSm5WR2gxYldKY0lqcGNJaTh5TURFeUx6RXdMemd0TVRVd2VERTFNQzVxY0dkY0lpeGNJbTl5WkdWeVhDSTZOQ3hjSW1KblhDSTZYQ0l2TWpBeE1pOHhNQzg0TG1wd1oxd2lMRndpWkhWeVlYUnBiMjVjSWpvekxGd2labWxzYkUxdlpHVmNJanBjSW1acGJHeGNJaXhjSW1KbmRsOW1hV3hzYlc5a1pWd2lPbHdpWm1sc2JGd2lMRndpWW1kMlgyeHZiM0JjSWpwMGNuVmxMRndpWW1kMlgyMTFkR1ZjSWpwMGNuVmxMRndpWW1kMlgyRjFkRzl3WVhWelpWd2lPbVpoYkhObExGd2liR0Y1WlhKZmFXUnpYQ0k2VzExOUlpd2lOeUk2SW50Y0ltbGtYQ0k2Tnl4Y0luUnBiV1ZzYVc1bFgyaGNJam95TURBc1hDSmlaMVJvZFcxaVhDSTZYQ0l2TWpBeE1pOHhNQzgwTFRFMU1IZ3hOVEF1YW5CblhDSXNYQ0p2Y21SbGNsd2lPamNzWENKaVoxd2lPbHdpTHpJd01USXZNVEF2TkM1cWNHZGNJaXhjSW1SMWNtRjBhVzl1WENJNk15eGNJbVpwYkd4TmIyUmxYQ0k2WENKbWFXeHNYQ0lzWENKaVozWmZabWxzYkcxdlpHVmNJanBjSW1acGJHeGNJaXhjSW1KbmRsOXNiMjl3WENJNmRISjFaU3hjSW1KbmRsOXRkWFJsWENJNmRISjFaU3hjSW1KbmRsOWhkWFJ2Y0dGMWMyVmNJanBtWVd4elpTeGNJbXhoZVdWeVgybGtjMXdpT2x0ZGZTSXNJamtpT2lKN1hDSnBaRndpT2prc1hDSjBhVzFsYkdsdVpWOW9YQ0k2TWpBd0xGd2lZbWRVYUhWdFlsd2lPbHdpTHpJd01USXZNVEF2TVRNdE1UVXdlREUxTUM1cWNHZGNJaXhjSW05eVpHVnlYQ0k2T0N4Y0ltSm5YQ0k2WENJdk1qQXhNaTh4TUM4eE15NXFjR2RjSWl4Y0ltUjFjbUYwYVc5dVhDSTZNeXhjSW1acGJHeE5iMlJsWENJNlhDSm1hV3hzWENJc1hDSmlaM1pmWm1sc2JHMXZaR1ZjSWpwY0ltWnBiR3hjSWl4Y0ltSm5kbDlzYjI5d1hDSTZkSEoxWlN4Y0ltSm5kbDl0ZFhSbFhDSTZkSEoxWlN4Y0ltSm5kbDloZFhSdmNHRjFjMlZjSWpwbVlXeHpaU3hjSW14aGVXVnlYMmxrYzF3aU9sdGRmU0lzSWpFeUlqb2llMXdpYVdSY0lqb3hNaXhjSW5ScGJXVnNhVzVsWDJoY0lqb3lNREFzWENKaVoxUm9kVzFpWENJNlhDSXZNakF4TWk4eE1DOHhOaTB4TlRCNE1UVXdMbXB3WjF3aUxGd2liM0prWlhKY0lqbzVMRndpWW1kY0lqcGNJaTh5TURFeUx6RXdMekUyTG1wd1oxd2lMRndpWkhWeVlYUnBiMjVjSWpvekxGd2labWxzYkUxdlpHVmNJanBjSW1acGJHeGNJaXhjSW1KbmRsOW1hV3hzYlc5a1pWd2lPbHdpWm1sc2JGd2lMRndpWW1kMlgyeHZiM0JjSWpwMGNuVmxMRndpWW1kMlgyMTFkR1ZjSWpwMGNuVmxMRndpWW1kMlgyRjFkRzl3WVhWelpWd2lPbVpoYkhObExGd2liR0Y1WlhKZmFXUnpYQ0k2VzExOUlpd2lNVFFpT2lKN1hDSnBaRndpT2pFMExGd2lkR2x0Wld4cGJtVmZhRndpT2pJd01DeGNJbUpuVkdoMWJXSmNJanBjSWk4eU1ERXlMekV3THpFMU1TMHhOVEI0TVRVd0xtcHdaMXdpTEZ3aWIzSmtaWEpjSWpvMkxGd2lZbWRjSWpwY0lpOHlNREV5THpFd0x6RTFNUzVxY0dkY0lpeGNJbVIxY21GMGFXOXVYQ0k2TXl4Y0ltWnBiR3hOYjJSbFhDSTZYQ0ptYVd4c1hDSXNYQ0ppWjNaZlptbHNiRzF2WkdWY0lqcGNJbVpwYkd4Y0lpeGNJbUpuZGw5c2IyOXdYQ0k2ZEhKMVpTeGNJbUpuZGw5dGRYUmxYQ0k2ZEhKMVpTeGNJbUpuZGw5aGRYUnZjR0YxYzJWY0lqcG1ZV3h6WlN4Y0lteGhlV1Z5WDJsa2Mxd2lPbHRkZlNKOUxDSk5VMUJoYm1Wc0xrTnZiblJ5YjJ3aU9uc2lNU0k2SW50Y0ltbGtYQ0k2WENJeFhDSXNYQ0pzWVdKbGJGd2lPbHdpUVhKeWIzZHpYQ0lzWENKdVlXMWxYQ0k2WENKaGNuSnZkM05jSWl4Y0ltRjFkRzlJYVdSbFhDSTZabUZzYzJVc1hDSnZkbVZ5Vm1sa1pXOWNJanAwY25WbExGd2lhVzV6WlhSY0lqcDBjblZsZlNJc0lqSWlPaUo3WENKcFpGd2lPaklzWENKc1lXSmxiRndpT2x3aVFuVnNiR1YwYzF3aUxGd2libUZ0WlZ3aU9sd2lZblZzYkdWMGMxd2lMRndpWVhWMGIwaHBaR1ZjSWpwbVlXeHpaU3hjSW05MlpYSldhV1JsYjF3aU9uUnlkV1VzWENKdFlYSm5hVzVjSWpveE1DeGNJbVJwY2x3aU9sd2lhRndpTEZ3aVlXeHBaMjVjSWpwY0ltSnZkSFJ2YlZ3aUxGd2lhVzV6WlhSY0lqcDBjblZsZlNJc0lqUWlPaUo3WENKcFpGd2lPalFzWENKc1lXSmxiRndpT2x3aVUyTnliMnhzWW1GeVhDSXNYQ0p1WVcxbFhDSTZYQ0p6WTNKdmJHeGlZWEpjSWl4Y0ltRjFkRzlJYVdSbFhDSTZkSEoxWlN4Y0ltOTJaWEpXYVdSbGIxd2lPblJ5ZFdVc1hDSnRZWEpuYVc1Y0lqb3hNQ3hjSW1ScGNsd2lPbHdpYUZ3aUxGd2lZMjlzYjNKY0lqcGNJaU0wTURRd05EQmNJaXhjSW5kcFpIUm9YQ0k2TkN4Y0ltRnNhV2R1WENJNlhDSjBiM0JjSWl4Y0ltbHVjMlYwWENJNmRISjFaWDBpZlgwPSIsInR5cGUiOiJjdXN0b20iLCJzbGlkZXNfbnVtIjoiMTAifX0sIm9yaWdpbl91cGxvYWRzX3VybCI6Imh0dHA6XC9cL2RlbW8uYXZlcnRhLm5ldFwvdGhlbWVzXC9sb3R1c1wvZHVtbXktYWdlbmN5XC93cC1jb250ZW50XC91cGxvYWRzIn0=',
74
- 'image_dir' => '',
75
- 'selected' => '',
76
- 'screenshot'=> MSWP_AVERTA_ADMIN_URL . '/assets/images/starters/fullwidth-slider.jpg'
77
- ),
78
- array(
79
- 'label' => __( 'Simple Autoplay Slider', MSWP_TEXT_DOMAIN ),
80
- 'id' => 'slider-autoplay-1',
81
- 'slidertype'=> 'custom',
82
- 'importdata'=> 'eyJzbGlkZXJzX2RhdGEiOnsiNTYiOnsidGl0bGUiOiJTaW1wbGUgQXV0b3BsYXkgU2xpZGVyIiwicGFyYW1zIjoiZXlKdFpYUmhJanA3SWxObGRIUnBibWR6SVdsa2N5STZJakVpTENKVFpYUjBhVzVuY3lGdVpYaDBTV1FpT2pJc0lsTnNhV1JsSVdsa2N5STZJakVzTWl3ekxEUXNOU3cyTERjc09Td3hNaXd4TkNJc0lsTnNhV1JsSVc1bGVIUkpaQ0k2TVRVc0lrTnZiblJ5YjJ3aGFXUnpJam9pTVN3MExEVXNOaUlzSWtOdmJuUnliMndoYm1WNGRFbGtJam8zZlN3aVRWTlFZVzVsYkM1VFpYUjBhVzVuY3lJNmV5SXhJam9pZTF3aWFXUmNJanBjSWpGY0lpeGNJbk51WVhCd2FXNW5YQ0k2ZEhKMVpTeGNJbTVoYldWY0lqcGNJbE5wYlhCc1pTQkJkWFJ2Y0d4aGVTQlRiR2xrWlhKY0lpeGNJbmRwWkhSb1hDSTZPREF3TEZ3aWFHVnBaMmgwWENJNk5EZ3dMRndpZDNKaGNIQmxjbGRwWkhSb1hDSTZPREF3TEZ3aWQzSmhjSEJsY2xkcFpIUm9WVzVwZEZ3aU9sd2ljSGhjSWl4Y0ltRjFkRzlEY205d1hDSTZabUZzYzJVc1hDSjBlWEJsWENJNlhDSmpkWE4wYjIxY0lpeGNJbk5zYVdSbGNrbGtYQ0k2WENJMU5sd2lMRndpYkdGNWIzVjBYQ0k2WENKaWIzaGxaRndpTEZ3aVlYVjBiMGhsYVdkb2RGd2lPbVpoYkhObExGd2lkSEpXYVdWM1hDSTZYQ0ppWVhOcFkxd2lMRndpYzNCbFpXUmNJam95TUN4Y0luTndZV05sWENJNk1DeGNJbk4wWVhKMFhDSTZNU3hjSW1keVlXSkRkWEp6YjNKY0lqcDBjblZsTEZ3aWMzZHBjR1ZjSWpwMGNuVmxMRndpYlc5MWMyVmNJanAwY25WbExGd2lkMmhsWld4Y0lqcG1ZV3h6WlN4Y0ltRjFkRzl3YkdGNVhDSTZkSEoxWlN4Y0lteHZiM0JjSWpwMGNuVmxMRndpYzJoMVptWnNaVndpT21aaGJITmxMRndpY0hKbGJHOWhaRndpT2x3aUxURmNJaXhjSW05MlpYSlFZWFZ6WlZ3aU9uUnlkV1VzWENKbGJtUlFZWFZ6WlZ3aU9tWmhiSE5sTEZ3aWFHbGtaVXhoZVdWeWMxd2lPbVpoYkhObExGd2laR2x5WENJNlhDSm9YQ0lzWENKd1lYSmhiR3hoZUUxdlpHVmNJanBjSW5OM2FYQmxYQ0lzWENKalpXNTBaWEpEYjI1MGNtOXNjMXdpT25SeWRXVXNYQ0pwYm5OMFlXNTBVMmh2ZDB4aGVXVnljMXdpT21aaGJITmxMRndpWW1kRGIyeHZjbHdpT2x3aUl6QXdNREF3TUZ3aUxGd2ljMnRwYmx3aU9sd2liWE10YzJ0cGJpMXNhV2RvZEMwelhDSXNYQ0p0YzFSbGJYQnNZWFJsWENJNlhDSmpkWE4wYjIxY0lpeGNJbTF6VkdWdGNHeGhkR1ZEYkdGemMxd2lPbHdpWENJc1hDSjFjMlZrUm05dWRITmNJanBjSWx3aWZTSjlMQ0pOVTFCaGJtVnNMbE5zYVdSbElqcDdJakVpT2lKN1hDSnBaRndpT2x3aU1Wd2lMRndpZEdsdFpXeHBibVZmYUZ3aU9qSXdNQ3hjSW1KblZHaDFiV0pjSWpwY0lpOHlNREV5THpFd0x6RXlNUzB4TlRCNE1UVXdMbXB3WjF3aUxGd2liM0prWlhKY0lqbzBMRndpWW1kY0lqcGNJaTh5TURFeUx6RXdMekV5TVM1cWNHZGNJaXhjSW1SMWNtRjBhVzl1WENJNk15eGNJbVpwYkd4TmIyUmxYQ0k2WENKbWFXeHNYQ0lzWENKaVozWmZabWxzYkcxdlpHVmNJanBjSW1acGJHeGNJaXhjSW1KbmRsOXNiMjl3WENJNmRISjFaU3hjSW1KbmRsOXRkWFJsWENJNmRISjFaU3hjSW1KbmRsOWhkWFJ2Y0dGMWMyVmNJanBtWVd4elpTeGNJbXhoZVdWeVgybGtjMXdpT2x0ZGZTSXNJaklpT2lKN1hDSnBaRndpT2pJc1hDSjBhVzFsYkdsdVpWOW9YQ0k2TWpBd0xGd2lZbWRVYUhWdFlsd2lPbHdpTHpJd01USXZNVEF2TWkweE5UQjRNVFV3TG1wd1oxd2lMRndpYjNKa1pYSmNJam95TEZ3aVltZGNJanBjSWk4eU1ERXlMekV3THpJdWFuQm5YQ0lzWENKa2RYSmhkR2x2Ymx3aU9qTXNYQ0ptYVd4c1RXOWtaVndpT2x3aVptbHNiRndpTEZ3aVltZDJYMlpwYkd4dGIyUmxYQ0k2WENKbWFXeHNYQ0lzWENKaVozWmZiRzl2Y0Z3aU9uUnlkV1VzWENKaVozWmZiWFYwWlZ3aU9uUnlkV1VzWENKaVozWmZZWFYwYjNCaGRYTmxYQ0k2Wm1Gc2MyVXNYQ0pzWVhsbGNsOXBaSE5jSWpwYlhYMGlMQ0l6SWpvaWUxd2lhV1JjSWpvekxGd2lkR2x0Wld4cGJtVmZhRndpT2pJd01DeGNJbUpuVkdoMWJXSmNJanBjSWk4eU1ERXlMekV3THpFeExURTFNSGd4TlRBdWFuQm5YQ0lzWENKdmNtUmxjbHdpT2pNc1hDSmlaMXdpT2x3aUx6SXdNVEl2TVRBdk1URXVhbkJuWENJc1hDSmtkWEpoZEdsdmJsd2lPak1zWENKbWFXeHNUVzlrWlZ3aU9sd2labWxzYkZ3aUxGd2lZbWQyWDJacGJHeHRiMlJsWENJNlhDSm1hV3hzWENJc1hDSmlaM1pmYkc5dmNGd2lPblJ5ZFdVc1hDSmlaM1pmYlhWMFpWd2lPblJ5ZFdVc1hDSmlaM1pmWVhWMGIzQmhkWE5sWENJNlptRnNjMlVzWENKc1lYbGxjbDlwWkhOY0lqcGJYWDBpTENJMElqb2llMXdpYVdSY0lqbzBMRndpZEdsdFpXeHBibVZmYUZ3aU9qSXdNQ3hjSW1KblZHaDFiV0pjSWpwY0lpOHlNREV5THpFd0x6TXRNVFV3ZURFMU1DNXFjR2RjSWl4Y0ltOXlaR1Z5WENJNk5TeGNJbUpuWENJNlhDSXZNakF4TWk4eE1DOHpMbXB3WjF3aUxGd2laSFZ5WVhScGIyNWNJam96TEZ3aVptbHNiRTF2WkdWY0lqcGNJbVpwYkd4Y0lpeGNJbUpuZGw5bWFXeHNiVzlrWlZ3aU9sd2labWxzYkZ3aUxGd2lZbWQyWDJ4dmIzQmNJanAwY25WbExGd2lZbWQyWDIxMWRHVmNJanAwY25WbExGd2lZbWQyWDJGMWRHOXdZWFZ6WlZ3aU9tWmhiSE5sTEZ3aWJHRjVaWEpmYVdSelhDSTZXMTE5SWl3aU5TSTZJbnRjSW1sa1hDSTZOU3hjSW5ScGJXVnNhVzVsWDJoY0lqb3lNREFzWENKaVoxUm9kVzFpWENJNlhDSXZNakF4TWk4eE1DODVMVEUxTUhneE5UQXVhbkJuWENJc1hDSnZjbVJsY2x3aU9qWXNYQ0ppWjF3aU9sd2lMekl3TVRJdk1UQXZPUzVxY0dkY0lpeGNJbVIxY21GMGFXOXVYQ0k2TXl4Y0ltWnBiR3hOYjJSbFhDSTZYQ0ptYVd4c1hDSXNYQ0ppWjNaZlptbHNiRzF2WkdWY0lqcGNJbVpwYkd4Y0lpeGNJbUpuZGw5c2IyOXdYQ0k2ZEhKMVpTeGNJbUpuZGw5dGRYUmxYQ0k2ZEhKMVpTeGNJbUpuZGw5aGRYUnZjR0YxYzJWY0lqcG1ZV3h6WlN4Y0lteGhlV1Z5WDJsa2Mxd2lPbHRkZlNJc0lqWWlPaUo3WENKcFpGd2lPallzWENKMGFXMWxiR2x1WlY5b1hDSTZNakF3TEZ3aVltZFVhSFZ0WWx3aU9sd2lMekl3TVRJdk1UQXZPQzB4TlRCNE1UVXdMbXB3WjF3aUxGd2liM0prWlhKY0lqb3hMRndpWW1kY0lqcGNJaTh5TURFeUx6RXdMemd1YW5CblhDSXNYQ0prZFhKaGRHbHZibHdpT2pNc1hDSm1hV3hzVFc5a1pWd2lPbHdpWm1sc2JGd2lMRndpWW1kMlgyWnBiR3h0YjJSbFhDSTZYQ0ptYVd4c1hDSXNYQ0ppWjNaZmJHOXZjRndpT25SeWRXVXNYQ0ppWjNaZmJYVjBaVndpT25SeWRXVXNYQ0ppWjNaZllYVjBiM0JoZFhObFhDSTZabUZzYzJVc1hDSnNZWGxsY2w5cFpITmNJanBiWFgwaUxDSTNJam9pZTF3aWFXUmNJam8zTEZ3aWRHbHRaV3hwYm1WZmFGd2lPakl3TUN4Y0ltSm5WR2gxYldKY0lqcGNJaTh5TURFeUx6RXdMelF0TVRVd2VERTFNQzVxY0dkY0lpeGNJbTl5WkdWeVhDSTZOeXhjSW1KblhDSTZYQ0l2TWpBeE1pOHhNQzgwTG1wd1oxd2lMRndpWkhWeVlYUnBiMjVjSWpvekxGd2labWxzYkUxdlpHVmNJanBjSW1acGJHeGNJaXhjSW1KbmRsOW1hV3hzYlc5a1pWd2lPbHdpWm1sc2JGd2lMRndpWW1kMlgyeHZiM0JjSWpwMGNuVmxMRndpWW1kMlgyMTFkR1ZjSWpwMGNuVmxMRndpWW1kMlgyRjFkRzl3WVhWelpWd2lPbVpoYkhObExGd2liR0Y1WlhKZmFXUnpYQ0k2VzExOUlpd2lPU0k2SW50Y0ltbGtYQ0k2T1N4Y0luUnBiV1ZzYVc1bFgyaGNJam95TURBc1hDSmlaMVJvZFcxaVhDSTZYQ0l2TWpBeE1pOHhNQzh4TXkweE5UQjRNVFV3TG1wd1oxd2lMRndpYjNKa1pYSmNJam93TEZ3aVltZGNJanBjSWk4eU1ERXlMekV3THpFekxtcHdaMXdpTEZ3aVpIVnlZWFJwYjI1Y0lqb3pMRndpWm1sc2JFMXZaR1ZjSWpwY0ltWnBiR3hjSWl4Y0ltSm5kbDltYVd4c2JXOWtaVndpT2x3aVptbHNiRndpTEZ3aVltZDJYMnh2YjNCY0lqcDBjblZsTEZ3aVltZDJYMjExZEdWY0lqcDBjblZsTEZ3aVltZDJYMkYxZEc5d1lYVnpaVndpT21aaGJITmxMRndpYkdGNVpYSmZhV1J6WENJNlcxMTlJaXdpTVRJaU9pSjdYQ0pwWkZ3aU9qRXlMRndpZEdsdFpXeHBibVZmYUZ3aU9qSXdNQ3hjSW1KblZHaDFiV0pjSWpwY0lpOHlNREV5THpFd0x6RTJMVEUxTUhneE5UQXVhbkJuWENJc1hDSnZjbVJsY2x3aU9qZ3NYQ0ppWjF3aU9sd2lMekl3TVRJdk1UQXZNVFl1YW5CblhDSXNYQ0prZFhKaGRHbHZibHdpT2pNc1hDSm1hV3hzVFc5a1pWd2lPbHdpWm1sc2JGd2lMRndpWW1kMlgyWnBiR3h0YjJSbFhDSTZYQ0ptYVd4c1hDSXNYQ0ppWjNaZmJHOXZjRndpT25SeWRXVXNYQ0ppWjNaZmJYVjBaVndpT25SeWRXVXNYQ0ppWjNaZllYVjBiM0JoZFhObFhDSTZabUZzYzJVc1hDSnNZWGxsY2w5cFpITmNJanBiWFgwaUxDSXhOQ0k2SW50Y0ltbGtYQ0k2TVRRc1hDSjBhVzFsYkdsdVpWOW9YQ0k2TWpBd0xGd2lZbWRVYUhWdFlsd2lPbHdpTHpJd01USXZNVEF2TVRVeExURTFNSGd4TlRBdWFuQm5YQ0lzWENKdmNtUmxjbHdpT2prc1hDSmlaMXdpT2x3aUx6SXdNVEl2TVRBdk1UVXhMbXB3WjF3aUxGd2laSFZ5WVhScGIyNWNJam96TEZ3aVptbHNiRTF2WkdWY0lqcGNJbVpwYkd4Y0lpeGNJbUpuZGw5bWFXeHNiVzlrWlZ3aU9sd2labWxzYkZ3aUxGd2lZbWQyWDJ4dmIzQmNJanAwY25WbExGd2lZbWQyWDIxMWRHVmNJanAwY25WbExGd2lZbWQyWDJGMWRHOXdZWFZ6WlZ3aU9tWmhiSE5sTEZ3aWJHRjVaWEpmYVdSelhDSTZXMTE5SW4wc0lrMVRVR0Z1Wld3dVEyOXVkSEp2YkNJNmV5SXhJam9pZTF3aWFXUmNJanBjSWpGY0lpeGNJbXhoWW1Wc1hDSTZYQ0pCY25KdmQzTmNJaXhjSW01aGJXVmNJanBjSW1GeWNtOTNjMXdpTEZ3aVlYVjBiMGhwWkdWY0lqcG1ZV3h6WlN4Y0ltOTJaWEpXYVdSbGIxd2lPblJ5ZFdVc1hDSnBibk5sZEZ3aU9uUnlkV1Y5SWl3aU5DSTZJbnRjSW1sa1hDSTZOQ3hjSW14aFltVnNYQ0k2WENKRGFYSmpiR1VnVkdsdFpYSmNJaXhjSW01aGJXVmNJanBjSW1OcGNtTnNaWFJwYldWeVhDSXNYQ0poZFhSdlNHbGtaVndpT21aaGJITmxMRndpYjNabGNsWnBaR1Z2WENJNmRISjFaU3hjSW1OdmJHOXlYQ0k2WENJak5ETTBNelF6WENJc1hDSnlZV1JwZFhOY0lqb3hNQ3hjSW5OMGNtOXJaVndpT2pNc1hDSnBibk5sZEZ3aU9uUnlkV1Y5SWl3aU5TSTZJbnRjSW1sa1hDSTZOU3hjSW14aFltVnNYQ0k2WENKTWFXNWxJRlJwYldWeVhDSXNYQ0p1WVcxbFhDSTZYQ0owYVcxbFltRnlYQ0lzWENKaGRYUnZTR2xrWlZ3aU9tWmhiSE5sTEZ3aWIzWmxjbFpwWkdWdlhDSTZkSEoxWlN4Y0ltTnZiRzl5WENJNlhDSWpSa1pHUmtaR1hDSXNYQ0ozYVdSMGFGd2lPalFzWENKaGJHbG5ibHdpT2x3aVltOTBkRzl0WENJc1hDSnBibk5sZEZ3aU9uUnlkV1Y5SWl3aU5pSTZJbnRjSW1sa1hDSTZOaXhjSW14aFltVnNYQ0k2WENKQ2RXeHNaWFJ6WENJc1hDSnVZVzFsWENJNlhDSmlkV3hzWlhSelhDSXNYQ0poZFhSdlNHbGtaVndpT25SeWRXVXNYQ0p2ZG1WeVZtbGtaVzljSWpwMGNuVmxMRndpYldGeVoybHVYQ0k2TVRBc1hDSmthWEpjSWpwY0ltaGNJaXhjSW1Gc2FXZHVYQ0k2WENKaWIzUjBiMjFjSWl4Y0ltbHVjMlYwWENJNmRISjFaWDBpZlgwPSIsInR5cGUiOiJjdXN0b20iLCJzbGlkZXNfbnVtIjoiMTAifX0sIm9yaWdpbl91cGxvYWRzX3VybCI6Imh0dHA6XC9cL2RlbW8uYXZlcnRhLm5ldFwvdGhlbWVzXC9sb3R1c1wvZHVtbXktYWdlbmN5XC93cC1jb250ZW50XC91cGxvYWRzIn0=',
83
- 'image_dir' => '',
84
- 'selected' => '',
85
- 'screenshot'=> MSWP_AVERTA_ADMIN_URL . '/assets/images/starters/autoplay-slider.jpg'
86
- ),
87
- array(
88
- 'label' => __( 'Fullwidth Slider with Thumbnails', MSWP_TEXT_DOMAIN ),
89
- 'id' => 'fullwith-with-thumbs-1',
90
- 'slidertype'=> 'custom',
91
- 'importdata'=> 'eyJzbGlkZXJzX2RhdGEiOnsiNTciOnsidGl0bGUiOiJGdWxsd2lkdGggU2xpZGVyIHdpdGggVGh1bWJuYWlscyIsInBhcmFtcyI6ImV5SnRaWFJoSWpwN0lsTmxkSFJwYm1keklXbGtjeUk2SWpFaUxDSlRaWFIwYVc1bmN5RnVaWGgwU1dRaU9qSXNJbE5zYVdSbElXbGtjeUk2SWpFc01pd3pMRFFzTlN3MkxEY3NPU3d4TWl3eE5DSXNJbE5zYVdSbElXNWxlSFJKWkNJNk1UVXNJa052Ym5SeWIyd2hhV1J6SWpvaU1Td3lMRFFzTlNJc0lrTnZiblJ5YjJ3aGJtVjRkRWxrSWpvMmZTd2lUVk5RWVc1bGJDNVRaWFIwYVc1bmN5STZleUl4SWpvaWUxd2lhV1JjSWpwY0lqRmNJaXhjSW5OdVlYQndhVzVuWENJNmRISjFaU3hjSW01aGJXVmNJanBjSWtaMWJHeDNhV1IwYUNCVGJHbGtaWElnZDJsMGFDQlVhSFZ0WW01aGFXeHpYQ0lzWENKM2FXUjBhRndpT2pnd01DeGNJbWhsYVdkb2RGd2lPalE0TUN4Y0luZHlZWEJ3WlhKWGFXUjBhRndpT2prME5TeGNJbmR5WVhCd1pYSlhhV1IwYUZWdWFYUmNJanBjSW5CNFhDSXNYQ0poZFhSdlEzSnZjRndpT21aaGJITmxMRndpZEhsd1pWd2lPbHdpWTNWemRHOXRYQ0lzWENKemJHbGtaWEpKWkZ3aU9sd2lOVGRjSWl4Y0lteGhlVzkxZEZ3aU9sd2lablZzYkhkcFpIUm9YQ0lzWENKaGRYUnZTR1ZwWjJoMFhDSTZabUZzYzJVc1hDSjBjbFpwWlhkY0lqcGNJbUpoYzJsalhDSXNYQ0p6Y0dWbFpGd2lPakl3TEZ3aWMzQmhZMlZjSWpvd0xGd2ljM1JoY25SY0lqb3hMRndpWjNKaFlrTjFjbk52Y2x3aU9uUnlkV1VzWENKemQybHdaVndpT25SeWRXVXNYQ0p0YjNWelpWd2lPblJ5ZFdVc1hDSjNhR1ZsYkZ3aU9tWmhiSE5sTEZ3aVlYVjBiM0JzWVhsY0lqcG1ZV3h6WlN4Y0lteHZiM0JjSWpwbVlXeHpaU3hjSW5Ob2RXWm1iR1ZjSWpwbVlXeHpaU3hjSW5CeVpXeHZZV1JjSWpwY0lpMHhYQ0lzWENKdmRtVnlVR0YxYzJWY0lqcDBjblZsTEZ3aVpXNWtVR0YxYzJWY0lqcG1ZV3h6WlN4Y0ltaHBaR1ZNWVhsbGNuTmNJanBtWVd4elpTeGNJbVJwY2x3aU9sd2lhRndpTEZ3aWNHRnlZV3hzWVhoTmIyUmxYQ0k2WENKemQybHdaVndpTEZ3aVkyVnVkR1Z5UTI5dWRISnZiSE5jSWpwbVlXeHpaU3hjSW1sdWMzUmhiblJUYUc5M1RHRjVaWEp6WENJNlptRnNjMlVzWENKaVowTnZiRzl5WENJNlhDSWpNREF3TURBd1hDSXNYQ0p6YTJsdVhDSTZYQ0p0Y3kxemEybHVMV3hwWjJoMExUWWdjbTkxYm1RdGMydHBibHdpTEZ3aWJYTlVaVzF3YkdGMFpWd2lPbHdpWTNWemRHOXRYQ0lzWENKdGMxUmxiWEJzWVhSbFEyeGhjM05jSWpwY0lsd2lMRndpZFhObFpFWnZiblJ6WENJNlhDSmNJbjBpZlN3aVRWTlFZVzVsYkM1VGJHbGtaU0k2ZXlJeElqb2llMXdpYVdSY0lqcGNJakZjSWl4Y0luUnBiV1ZzYVc1bFgyaGNJam95TURBc1hDSmlaMVJvZFcxaVhDSTZYQ0l2TWpBeE1pOHhNQzh4TWpFdE1UVXdlREUxTUM1cWNHZGNJaXhjSW05eVpHVnlYQ0k2TWl4Y0ltSm5YQ0k2WENJdk1qQXhNaTh4TUM4eE1qRXVhbkJuWENJc1hDSmtkWEpoZEdsdmJsd2lPak1zWENKbWFXeHNUVzlrWlZ3aU9sd2labWxzYkZ3aUxGd2lZbWQyWDJacGJHeHRiMlJsWENJNlhDSm1hV3hzWENJc1hDSmlaM1pmYkc5dmNGd2lPblJ5ZFdVc1hDSmlaM1pmYlhWMFpWd2lPblJ5ZFdVc1hDSmlaM1pmWVhWMGIzQmhkWE5sWENJNlptRnNjMlVzWENKc1lYbGxjbDlwWkhOY0lqcGJYWDBpTENJeUlqb2llMXdpYVdSY0lqb3lMRndpZEdsdFpXeHBibVZmYUZ3aU9qSXdNQ3hjSW1KblZHaDFiV0pjSWpwY0lpOHlNREV5THpFd0x6SXRNVFV3ZURFMU1DNXFjR2RjSWl4Y0ltOXlaR1Z5WENJNk1TeGNJbUpuWENJNlhDSXZNakF4TWk4eE1DOHlMbXB3WjF3aUxGd2laSFZ5WVhScGIyNWNJam96TEZ3aVptbHNiRTF2WkdWY0lqcGNJbVpwYkd4Y0lpeGNJbUpuZGw5bWFXeHNiVzlrWlZ3aU9sd2labWxzYkZ3aUxGd2lZbWQyWDJ4dmIzQmNJanAwY25WbExGd2lZbWQyWDIxMWRHVmNJanAwY25WbExGd2lZbWQyWDJGMWRHOXdZWFZ6WlZ3aU9tWmhiSE5sTEZ3aWJHRjVaWEpmYVdSelhDSTZXMTE5SWl3aU15STZJbnRjSW1sa1hDSTZNeXhjSW5ScGJXVnNhVzVsWDJoY0lqb3lNREFzWENKaVoxUm9kVzFpWENJNlhDSXZNakF4TWk4eE1DOHhNUzB4TlRCNE1UVXdMbXB3WjF3aUxGd2liM0prWlhKY0lqbzBMRndpWW1kY0lqcGNJaTh5TURFeUx6RXdMekV4TG1wd1oxd2lMRndpWkhWeVlYUnBiMjVjSWpvekxGd2labWxzYkUxdlpHVmNJanBjSW1acGJHeGNJaXhjSW1KbmRsOW1hV3hzYlc5a1pWd2lPbHdpWm1sc2JGd2lMRndpWW1kMlgyeHZiM0JjSWpwMGNuVmxMRndpWW1kMlgyMTFkR1ZjSWpwMGNuVmxMRndpWW1kMlgyRjFkRzl3WVhWelpWd2lPbVpoYkhObExGd2liR0Y1WlhKZmFXUnpYQ0k2VzExOUlpd2lOQ0k2SW50Y0ltbGtYQ0k2TkN4Y0luUnBiV1ZzYVc1bFgyaGNJam95TURBc1hDSmlaMVJvZFcxaVhDSTZYQ0l2TWpBeE1pOHhNQzh6TFRFMU1IZ3hOVEF1YW5CblhDSXNYQ0p2Y21SbGNsd2lPak1zWENKaVoxd2lPbHdpTHpJd01USXZNVEF2TXk1cWNHZGNJaXhjSW1SMWNtRjBhVzl1WENJNk15eGNJbVpwYkd4TmIyUmxYQ0k2WENKbWFXeHNYQ0lzWENKaVozWmZabWxzYkcxdlpHVmNJanBjSW1acGJHeGNJaXhjSW1KbmRsOXNiMjl3WENJNmRISjFaU3hjSW1KbmRsOXRkWFJsWENJNmRISjFaU3hjSW1KbmRsOWhkWFJ2Y0dGMWMyVmNJanBtWVd4elpTeGNJbXhoZVdWeVgybGtjMXdpT2x0ZGZTSXNJalVpT2lKN1hDSnBaRndpT2pVc1hDSjBhVzFsYkdsdVpWOW9YQ0k2TWpBd0xGd2lZbWRVYUhWdFlsd2lPbHdpTHpJd01USXZNVEF2T1MweE5UQjRNVFV3TG1wd1oxd2lMRndpYjNKa1pYSmNJam8yTEZ3aVltZGNJanBjSWk4eU1ERXlMekV3THprdWFuQm5YQ0lzWENKa2RYSmhkR2x2Ymx3aU9qTXNYQ0ptYVd4c1RXOWtaVndpT2x3aVptbHNiRndpTEZ3aVltZDJYMlpwYkd4dGIyUmxYQ0k2WENKbWFXeHNYQ0lzWENKaVozWmZiRzl2Y0Z3aU9uUnlkV1VzWENKaVozWmZiWFYwWlZ3aU9uUnlkV1VzWENKaVozWmZZWFYwYjNCaGRYTmxYQ0k2Wm1Gc2MyVXNYQ0pzWVhsbGNsOXBaSE5jSWpwYlhYMGlMQ0kySWpvaWUxd2lhV1JjSWpvMkxGd2lkR2x0Wld4cGJtVmZhRndpT2pJd01DeGNJbUpuVkdoMWJXSmNJanBjSWk4eU1ERXlMekV3THpndE1UVXdlREUxTUM1cWNHZGNJaXhjSW05eVpHVnlYQ0k2TlN4Y0ltSm5YQ0k2WENJdk1qQXhNaTh4TUM4NExtcHdaMXdpTEZ3aVpIVnlZWFJwYjI1Y0lqb3pMRndpWm1sc2JFMXZaR1ZjSWpwY0ltWnBiR3hjSWl4Y0ltSm5kbDltYVd4c2JXOWtaVndpT2x3aVptbHNiRndpTEZ3aVltZDJYMnh2YjNCY0lqcDBjblZsTEZ3aVltZDJYMjExZEdWY0lqcDBjblZsTEZ3aVltZDJYMkYxZEc5d1lYVnpaVndpT21aaGJITmxMRndpYkdGNVpYSmZhV1J6WENJNlcxMTlJaXdpTnlJNkludGNJbWxrWENJNk55eGNJblJwYldWc2FXNWxYMmhjSWpveU1EQXNYQ0ppWjFSb2RXMWlYQ0k2WENJdk1qQXhNaTh4TUM4MExURTFNSGd4TlRBdWFuQm5YQ0lzWENKdmNtUmxjbHdpT2pBc1hDSmlaMXdpT2x3aUx6SXdNVEl2TVRBdk5DNXFjR2RjSWl4Y0ltUjFjbUYwYVc5dVhDSTZNeXhjSW1acGJHeE5iMlJsWENJNlhDSm1hV3hzWENJc1hDSmlaM1pmWm1sc2JHMXZaR1ZjSWpwY0ltWnBiR3hjSWl4Y0ltSm5kbDlzYjI5d1hDSTZkSEoxWlN4Y0ltSm5kbDl0ZFhSbFhDSTZkSEoxWlN4Y0ltSm5kbDloZFhSdmNHRjFjMlZjSWpwbVlXeHpaU3hjSW14aGVXVnlYMmxrYzF3aU9sdGRmU0lzSWpraU9pSjdYQ0pwWkZ3aU9qa3NYQ0owYVcxbGJHbHVaVjlvWENJNk1qQXdMRndpWW1kVWFIVnRZbHdpT2x3aUx6SXdNVEl2TVRBdk1UTXRNVFV3ZURFMU1DNXFjR2RjSWl4Y0ltOXlaR1Z5WENJNk9DeGNJbUpuWENJNlhDSXZNakF4TWk4eE1DOHhNeTVxY0dkY0lpeGNJbVIxY21GMGFXOXVYQ0k2TXl4Y0ltWnBiR3hOYjJSbFhDSTZYQ0ptYVd4c1hDSXNYQ0ppWjNaZlptbHNiRzF2WkdWY0lqcGNJbVpwYkd4Y0lpeGNJbUpuZGw5c2IyOXdYQ0k2ZEhKMVpTeGNJbUpuZGw5dGRYUmxYQ0k2ZEhKMVpTeGNJbUpuZGw5aGRYUnZjR0YxYzJWY0lqcG1ZV3h6WlN4Y0lteGhlV1Z5WDJsa2Mxd2lPbHRkZlNJc0lqRXlJam9pZTF3aWFXUmNJam94TWl4Y0luUnBiV1ZzYVc1bFgyaGNJam95TURBc1hDSmlaMVJvZFcxaVhDSTZYQ0l2TWpBeE1pOHhNQzh4TmkweE5UQjRNVFV3TG1wd1oxd2lMRndpYjNKa1pYSmNJam81TEZ3aVltZGNJanBjSWk4eU1ERXlMekV3THpFMkxtcHdaMXdpTEZ3aVpIVnlZWFJwYjI1Y0lqb3pMRndpWm1sc2JFMXZaR1ZjSWpwY0ltWnBiR3hjSWl4Y0ltSm5kbDltYVd4c2JXOWtaVndpT2x3aVptbHNiRndpTEZ3aVltZDJYMnh2YjNCY0lqcDBjblZsTEZ3aVltZDJYMjExZEdWY0lqcDBjblZsTEZ3aVltZDJYMkYxZEc5d1lYVnpaVndpT21aaGJITmxMRndpYkdGNVpYSmZhV1J6WENJNlcxMTlJaXdpTVRRaU9pSjdYQ0pwWkZ3aU9qRTBMRndpZEdsdFpXeHBibVZmYUZ3aU9qSXdNQ3hjSW1KblZHaDFiV0pjSWpwY0lpOHlNREV5THpFd0x6RTFNUzB4TlRCNE1UVXdMbXB3WjF3aUxGd2liM0prWlhKY0lqbzNMRndpWW1kY0lqcGNJaTh5TURFeUx6RXdMekUxTVM1cWNHZGNJaXhjSW1SMWNtRjBhVzl1WENJNk15eGNJbVpwYkd4TmIyUmxYQ0k2WENKbWFXeHNYQ0lzWENKaVozWmZabWxzYkcxdlpHVmNJanBjSW1acGJHeGNJaXhjSW1KbmRsOXNiMjl3WENJNmRISjFaU3hjSW1KbmRsOXRkWFJsWENJNmRISjFaU3hjSW1KbmRsOWhkWFJ2Y0dGMWMyVmNJanBtWVd4elpTeGNJbXhoZVdWeVgybGtjMXdpT2x0ZGZTSjlMQ0pOVTFCaGJtVnNMa052Ym5SeWIyd2lPbnNpTVNJNkludGNJbWxrWENJNlhDSXhYQ0lzWENKc1lXSmxiRndpT2x3aVFYSnliM2R6WENJc1hDSnVZVzFsWENJNlhDSmhjbkp2ZDNOY0lpeGNJbUYxZEc5SWFXUmxYQ0k2Wm1Gc2MyVXNYQ0p2ZG1WeVZtbGtaVzljSWpwMGNuVmxMRndpYVc1elpYUmNJanAwY25WbGZTSXNJaklpT2lKN1hDSnBaRndpT2pJc1hDSnNZV0psYkZ3aU9sd2lRblZzYkdWMGMxd2lMRndpYm1GdFpWd2lPbHdpWW5Wc2JHVjBjMXdpTEZ3aVlYVjBiMGhwWkdWY0lqcG1ZV3h6WlN4Y0ltOTJaWEpXYVdSbGIxd2lPblJ5ZFdVc1hDSnRZWEpuYVc1Y0lqb3hNQ3hjSW1ScGNsd2lPbHdpYUZ3aUxGd2lZV3hwWjI1Y0lqcGNJbUp2ZEhSdmJWd2lMRndpYVc1elpYUmNJanAwY25WbGZTSXNJalFpT2lKN1hDSnBaRndpT2pRc1hDSnNZV0psYkZ3aU9sd2lVMk55YjJ4c1ltRnlYQ0lzWENKdVlXMWxYQ0k2WENKelkzSnZiR3hpWVhKY0lpeGNJbUYxZEc5SWFXUmxYQ0k2ZEhKMVpTeGNJbTkyWlhKV2FXUmxiMXdpT25SeWRXVXNYQ0p0WVhKbmFXNWNJam94TUN4Y0ltUnBjbHdpT2x3aWFGd2lMRndpWTI5c2IzSmNJanBjSWlNME1EUXdOREJjSWl4Y0luZHBaSFJvWENJNk5DeGNJbUZzYVdkdVhDSTZYQ0owYjNCY0lpeGNJbWx1YzJWMFhDSTZkSEoxWlgwaUxDSTFJam9pZTF3aWFXUmNJam8xTEZ3aWJHRmlaV3hjSWpwY0lsUm9kVzFpYkdsemRDOVVZV0p6WENJc1hDSnVZVzFsWENJNlhDSjBhSFZ0WW14cGMzUmNJaXhjSW1GMWRHOUlhV1JsWENJNlptRnNjMlVzWENKdmRtVnlWbWxrWlc5Y0lqcDBjblZsTEZ3aWJXRnlaMmx1WENJNk1TeGNJbk53WVdObFhDSTZNU3hjSW5kcFpIUm9YQ0k2TVRBd0xGd2lhR1ZwWjJoMFhDSTZPREFzWENKaGJHbG5ibHdpT2x3aWNtbG5hSFJjSWl4Y0ltbHVjMlYwWENJNlptRnNjMlVzWENKbWFXeHNUVzlrWlZ3aU9sd2labWxzYkZ3aWZTSjlmUT09IiwidHlwZSI6ImN1c3RvbSIsInNsaWRlc19udW0iOiIxMCJ9fSwib3JpZ2luX3VwbG9hZHNfdXJsIjoiaHR0cDpcL1wvZGVtby5hdmVydGEubmV0XC90aGVtZXNcL2xvdHVzXC9kdW1teS1hZ2VuY3lcL3dwLWNvbnRlbnRcL3VwbG9hZHMifQ==',
92
- 'image_dir' => '',
93
- 'selected' => '',
94
- 'screenshot'=> MSWP_AVERTA_ADMIN_URL . '/assets/images/starters/fullwidth-slider-with-thumbs.jpg'
95
- ),
96
- array(
97
- 'label' => __( 'Slider with Slide Info', MSWP_TEXT_DOMAIN ),
98
- 'id' => 'slider-with-slideinfo-1',
99
- 'slidertype'=> 'custom',
100
- 'importdata'=> 'eyJzbGlkZXJzX2RhdGEiOnsiNTgiOnsidGl0bGUiOiJTaW1wbGUgU2xpZGVyIHdpdGggU2xpZGUgSW5mbyIsInBhcmFtcyI6ImV5SnRaWFJoSWpwN0lsTmxkSFJwYm1keklXbGtjeUk2SWpFaUxDSlRaWFIwYVc1bmN5RnVaWGgwU1dRaU9qSXNJbE5zYVdSbElXbGtjeUk2SWpFc01pd3pMRFFzTlN3MkxEY3NPU3d4TWl3eE5DSXNJbE5zYVdSbElXNWxlSFJKWkNJNk1UVXNJa052Ym5SeWIyd2hhV1J6SWpvaU1TdzBJaXdpUTI5dWRISnZiQ0Z1WlhoMFNXUWlPalY5TENKTlUxQmhibVZzTGxObGRIUnBibWR6SWpwN0lqRWlPaUo3WENKcFpGd2lPbHdpTVZ3aUxGd2ljMjVoY0hCcGJtZGNJanAwY25WbExGd2libUZ0WlZ3aU9sd2lVMmx0Y0d4bElGTnNhV1JsY2lCM2FYUm9JRk5zYVdSbElFbHVabTljSWl4Y0luZHBaSFJvWENJNk9EQXdMRndpYUdWcFoyaDBYQ0k2TkRnd0xGd2lkM0poY0hCbGNsZHBaSFJvWENJNk9EQXdMRndpZDNKaGNIQmxjbGRwWkhSb1ZXNXBkRndpT2x3aWNIaGNJaXhjSW1GMWRHOURjbTl3WENJNlptRnNjMlVzWENKMGVYQmxYQ0k2WENKamRYTjBiMjFjSWl4Y0luTnNhV1JsY2tsa1hDSTZYQ0kxT0Z3aUxGd2liR0Y1YjNWMFhDSTZYQ0ppYjNobFpGd2lMRndpWVhWMGIwaGxhV2RvZEZ3aU9tWmhiSE5sTEZ3aWRISldhV1YzWENJNlhDSmlZWE5wWTF3aUxGd2ljM0JsWldSY0lqb3lNQ3hjSW5Od1lXTmxYQ0k2TUN4Y0luTjBZWEowWENJNk1TeGNJbWR5WVdKRGRYSnpiM0pjSWpwMGNuVmxMRndpYzNkcGNHVmNJanAwY25WbExGd2liVzkxYzJWY0lqcDBjblZsTEZ3aWQyaGxaV3hjSWpwbVlXeHpaU3hjSW1GMWRHOXdiR0Y1WENJNlptRnNjMlVzWENKc2IyOXdYQ0k2Wm1Gc2MyVXNYQ0p6YUhWbVpteGxYQ0k2Wm1Gc2MyVXNYQ0p3Y21Wc2IyRmtYQ0k2WENJdE1Wd2lMRndpYjNabGNsQmhkWE5sWENJNmRISjFaU3hjSW1WdVpGQmhkWE5sWENJNlptRnNjMlVzWENKb2FXUmxUR0Y1WlhKelhDSTZabUZzYzJVc1hDSmthWEpjSWpwY0ltaGNJaXhjSW5CaGNtRnNiR0Y0VFc5a1pWd2lPbHdpYzNkcGNHVmNJaXhjSW1ObGJuUmxja052Ym5SeWIyeHpYQ0k2ZEhKMVpTeGNJbWx1YzNSaGJuUlRhRzkzVEdGNVpYSnpYQ0k2Wm1Gc2MyVXNYQ0ppWjBOdmJHOXlYQ0k2Ym5Wc2JDeGNJbk5yYVc1Y0lqcGNJbTF6TFhOcmFXNHRaR1ZtWVhWc2RGd2lMRndpYlhOVVpXMXdiR0YwWlZ3aU9sd2lZM1Z6ZEc5dFhDSXNYQ0p0YzFSbGJYQnNZWFJsUTJ4aGMzTmNJanBjSWx3aUxGd2lkWE5sWkVadmJuUnpYQ0k2WENKY0luMGlmU3dpVFZOUVlXNWxiQzVUYkdsa1pTSTZleUl4SWpvaWUxd2lhV1JjSWpwY0lqRmNJaXhjSW5ScGJXVnNhVzVsWDJoY0lqb3lNREFzWENKaVoxUm9kVzFpWENJNlhDSXZNakF4TWk4eE1DOHhNakV0TVRVd2VERTFNQzVxY0dkY0lpeGNJbTl5WkdWeVhDSTZOQ3hjSW1KblhDSTZYQ0l2TWpBeE1pOHhNQzh4TWpFdWFuQm5YQ0lzWENKa2RYSmhkR2x2Ymx3aU9qTXNYQ0ptYVd4c1RXOWtaVndpT2x3aVptbHNiRndpTEZ3aWFXNW1iMXdpT2x3aVBHZ3lJSE4wZVd4bFBWeGNYQ0owWlhoMExXRnNhV2R1T2lCalpXNTBaWEk3WEZ4Y0lqNVRZVzF3YkdVZ1ZHbDBiR1hDb0RVOEwyZ3lQanh3SUhOMGVXeGxQVnhjWENKMFpYaDBMV0ZzYVdkdU9pQmpaVzUwWlhJN1hGeGNJajVNYjNKbGJTQnBjSE4xYlNCa2IyeHZjaUJ6YVhRZ1lXMWxkQ3dnWTI5dWMyVmpkR1YwZFhJZ1lXUnBjR2x6YVdOcGJtY2daV3hwZEN3Z2MyVmtJR1J2SUdWcGRYTnRiMlFnZEdWdGNHOXlJR2x1WTJsa2FXUjFiblFnZFhRZ2JHRmliM0psSUdWMElHUnZiRzl5WlNCdFlXZHVZU0JoYkdseGRXRXVJRlYwSUdWdWFXMGdZV1FnYldsdWFXMGdkbVZ1YVdGdExDQnhkV2x6SUc1dmMzUnlkV1FnWlhobGNtTnBkR0YwYVc5dUlIVnNiR0Z0WTI4Z2JHRmliM0pwY3lCdWFYTnBJSFYwSUdGc2FYRjFhWEFnWlhnZ1pXRWdZMjl0Ylc5a2J5QmpiMjV6WlhGMVlYUXVJRVIxYVhNZ1lYVjBaU0JwY25WeVpTQmtiMnh2Y2lCcGJpQnlaWEJ5WldobGJtUmxjbWwwSUdsdUlIWnZiSFZ3ZEdGMFpTQjJaV3hwZENCbGMzTmxJR05wYkd4MWJTQmtiMnh2Y21VZ1pYVWdablZuYVdGMElHNTFiR3hoSUhCaGNtbGhkSFZ5TGlCRmVHTmxjSFJsZFhJZ2MybHVkQ0J2WTJOaFpXTmhkQ0JqZFhCcFpHRjBZWFFnYm05dUlIQnliMmxrWlc1MExDQnpkVzUwSUdsdUlHTjFiSEJoSUhGMWFTQnZabVpwWTJsaElHUmxjMlZ5ZFc1MElHMXZiR3hwZENCaGJtbHRJR2xrSUdWemRDQnNZV0p2Y25WdExqd3ZjRDVjSWl4Y0ltSm5kbDltYVd4c2JXOWtaVndpT2x3aVptbHNiRndpTEZ3aVltZDJYMnh2YjNCY0lqcDBjblZsTEZ3aVltZDJYMjExZEdWY0lqcDBjblZsTEZ3aVltZDJYMkYxZEc5d1lYVnpaVndpT21aaGJITmxMRndpYkdGNVpYSmZhV1J6WENJNlcxMTlJaXdpTWlJNkludGNJbWxrWENJNk1peGNJblJwYldWc2FXNWxYMmhjSWpveU1EQXNYQ0ppWjFSb2RXMWlYQ0k2WENJdk1qQXhNaTh4TUM4eUxURTFNSGd4TlRBdWFuQm5YQ0lzWENKdmNtUmxjbHdpT2pJc1hDSmlaMXdpT2x3aUx6SXdNVEl2TVRBdk1pNXFjR2RjSWl4Y0ltUjFjbUYwYVc5dVhDSTZNeXhjSW1acGJHeE5iMlJsWENJNlhDSm1hV3hzWENJc1hDSnBibVp2WENJNlhDSThhRElnYzNSNWJHVTlYRnhjSW5SbGVIUXRZV3hwWjI0NklHTmxiblJsY2p0Y1hGd2lQbE5oYlhCc1pTQlVhWFJzWmNLZ016d3ZhREkrUEhBZ2MzUjViR1U5WEZ4Y0luUmxlSFF0WVd4cFoyNDZJR05sYm5SbGNqdGNYRndpUGt4dmNtVnRJR2x3YzNWdElHUnZiRzl5SUhOcGRDQmhiV1YwTENCamIyNXpaV04wWlhSMWNpQmhaR2x3YVhOcFkybHVaeUJsYkdsMExDQnpaV1FnWkc4Z1pXbDFjMjF2WkNCMFpXMXdiM0lnYVc1amFXUnBaSFZ1ZENCMWRDQnNZV0p2Y21VZ1pYUWdaRzlzYjNKbElHMWhaMjVoSUdGc2FYRjFZUzRnVlhRZ1pXNXBiU0JoWkNCdGFXNXBiU0IyWlc1cFlXMHNJSEYxYVhNZ2JtOXpkSEoxWkNCbGVHVnlZMmwwWVhScGIyNGdkV3hzWVcxamJ5QnNZV0p2Y21seklHNXBjMmtnZFhRZ1lXeHBjWFZwY0NCbGVDQmxZU0JqYjIxdGIyUnZJR052Ym5ObGNYVmhkQzRnUkhWcGN5QmhkWFJsSUdseWRYSmxJR1J2Ykc5eUlHbHVJSEpsY0hKbGFHVnVaR1Z5YVhRZ2FXNGdkbTlzZFhCMFlYUmxJSFpsYkdsMElHVnpjMlVnWTJsc2JIVnRJR1J2Ykc5eVpTQmxkU0JtZFdkcFlYUWdiblZzYkdFZ2NHRnlhV0YwZFhJdUlFVjRZMlZ3ZEdWMWNpQnphVzUwSUc5alkyRmxZMkYwSUdOMWNHbGtZWFJoZENCdWIyNGdjSEp2YVdSbGJuUXNJSE4xYm5RZ2FXNGdZM1ZzY0dFZ2NYVnBJRzltWm1samFXRWdaR1Z6WlhKMWJuUWdiVzlzYkdsMElHRnVhVzBnYVdRZ1pYTjBJR3hoWW05eWRXMHVQQzl3UGx3aUxGd2lZbWQyWDJacGJHeHRiMlJsWENJNlhDSm1hV3hzWENJc1hDSmlaM1pmYkc5dmNGd2lPblJ5ZFdVc1hDSmlaM1pmYlhWMFpWd2lPblJ5ZFdVc1hDSmlaM1pmWVhWMGIzQmhkWE5sWENJNlptRnNjMlVzWENKc1lYbGxjbDlwWkhOY0lqcGJYWDBpTENJeklqb2llMXdpYVdSY0lqb3pMRndpZEdsdFpXeHBibVZmYUZ3aU9qSXdNQ3hjSW1KblZHaDFiV0pjSWpwY0lpOHlNREV5THpFd0x6RXhMVEUxTUhneE5UQXVhbkJuWENJc1hDSnZjbVJsY2x3aU9qTXNYQ0ppWjF3aU9sd2lMekl3TVRJdk1UQXZNVEV1YW5CblhDSXNYQ0prZFhKaGRHbHZibHdpT2pNc1hDSm1hV3hzVFc5a1pWd2lPbHdpWm1sc2JGd2lMRndpYVc1bWIxd2lPbHdpUEdneUlITjBlV3hsUFZ4Y1hDSjBaWGgwTFdGc2FXZHVPaUJqWlc1MFpYSTdYRnhjSWo1VFlXMXdiR1VnVkdsMGJHWENvRFE4TDJneVBqeHdJSE4wZVd4bFBWeGNYQ0owWlhoMExXRnNhV2R1T2lCalpXNTBaWEk3WEZ4Y0lqNU1iM0psYlNCcGNITjFiU0JrYjJ4dmNpQnphWFFnWVcxbGRDd2dZMjl1YzJWamRHVjBkWElnWVdScGNHbHphV05wYm1jZ1pXeHBkQ3dnYzJWa0lHUnZJR1ZwZFhOdGIyUWdkR1Z0Y0c5eUlHbHVZMmxrYVdSMWJuUWdkWFFnYkdGaWIzSmxJR1YwSUdSdmJHOXlaU0J0WVdkdVlTQmhiR2x4ZFdFdUlGVjBJR1Z1YVcwZ1lXUWdiV2x1YVcwZ2RtVnVhV0Z0TENCeGRXbHpJRzV2YzNSeWRXUWdaWGhsY21OcGRHRjBhVzl1SUhWc2JHRnRZMjhnYkdGaWIzSnBjeUJ1YVhOcElIVjBJR0ZzYVhGMWFYQWdaWGdnWldFZ1kyOXRiVzlrYnlCamIyNXpaWEYxWVhRdUlFUjFhWE1nWVhWMFpTQnBjblZ5WlNCa2IyeHZjaUJwYmlCeVpYQnlaV2hsYm1SbGNtbDBJR2x1SUhadmJIVndkR0YwWlNCMlpXeHBkQ0JsYzNObElHTnBiR3gxYlNCa2IyeHZjbVVnWlhVZ1puVm5hV0YwSUc1MWJHeGhJSEJoY21saGRIVnlMaUJGZUdObGNIUmxkWElnYzJsdWRDQnZZMk5oWldOaGRDQmpkWEJwWkdGMFlYUWdibTl1SUhCeWIybGtaVzUwTENCemRXNTBJR2x1SUdOMWJIQmhJSEYxYVNCdlptWnBZMmxoSUdSbGMyVnlkVzUwSUcxdmJHeHBkQ0JoYm1sdElHbGtJR1Z6ZENCc1lXSnZjblZ0TGp3dmNENWNJaXhjSW1KbmRsOW1hV3hzYlc5a1pWd2lPbHdpWm1sc2JGd2lMRndpWW1kMlgyeHZiM0JjSWpwMGNuVmxMRndpWW1kMlgyMTFkR1ZjSWpwMGNuVmxMRndpWW1kMlgyRjFkRzl3WVhWelpWd2lPbVpoYkhObExGd2liR0Y1WlhKZmFXUnpYQ0k2VzExOUlpd2lOQ0k2SW50Y0ltbGtYQ0k2TkN4Y0luUnBiV1ZzYVc1bFgyaGNJam95TURBc1hDSmlaMVJvZFcxaVhDSTZYQ0l2TWpBeE1pOHhNQzh6TFRFMU1IZ3hOVEF1YW5CblhDSXNYQ0p2Y21SbGNsd2lPalVzWENKaVoxd2lPbHdpTHpJd01USXZNVEF2TXk1cWNHZGNJaXhjSW1SMWNtRjBhVzl1WENJNk15eGNJbVpwYkd4TmIyUmxYQ0k2WENKbWFXeHNYQ0lzWENKcGJtWnZYQ0k2WENJOGFESWdjM1I1YkdVOVhGeGNJblJsZUhRdFlXeHBaMjQ2SUdObGJuUmxjanRjWEZ3aVBsTmhiWEJzWlNCVWFYUnNaY0tnTmp3dmFESStQSEFnYzNSNWJHVTlYRnhjSW5SbGVIUXRZV3hwWjI0NklHTmxiblJsY2p0Y1hGd2lQa3h2Y21WdElHbHdjM1Z0SUdSdmJHOXlJSE5wZENCaGJXVjBMQ0JqYjI1elpXTjBaWFIxY2lCaFpHbHdhWE5wWTJsdVp5QmxiR2wwTENCelpXUWdaRzhnWldsMWMyMXZaQ0IwWlcxd2IzSWdhVzVqYVdScFpIVnVkQ0IxZENCc1lXSnZjbVVnWlhRZ1pHOXNiM0psSUcxaFoyNWhJR0ZzYVhGMVlTNGdWWFFnWlc1cGJTQmhaQ0J0YVc1cGJTQjJaVzVwWVcwc0lIRjFhWE1nYm05emRISjFaQ0JsZUdWeVkybDBZWFJwYjI0Z2RXeHNZVzFqYnlCc1lXSnZjbWx6SUc1cGMya2dkWFFnWVd4cGNYVnBjQ0JsZUNCbFlTQmpiMjF0YjJSdklHTnZibk5sY1hWaGRDNGdSSFZwY3lCaGRYUmxJR2x5ZFhKbElHUnZiRzl5SUdsdUlISmxjSEpsYUdWdVpHVnlhWFFnYVc0Z2RtOXNkWEIwWVhSbElIWmxiR2wwSUdWemMyVWdZMmxzYkhWdElHUnZiRzl5WlNCbGRTQm1kV2RwWVhRZ2JuVnNiR0VnY0dGeWFXRjBkWEl1SUVWNFkyVndkR1YxY2lCemFXNTBJRzlqWTJGbFkyRjBJR04xY0dsa1lYUmhkQ0J1YjI0Z2NISnZhV1JsYm5Rc0lITjFiblFnYVc0Z1kzVnNjR0VnY1hWcElHOW1abWxqYVdFZ1pHVnpaWEoxYm5RZ2JXOXNiR2wwSUdGdWFXMGdhV1FnWlhOMElHeGhZbTl5ZFcwdVBDOXdQbHdpTEZ3aVltZDJYMlpwYkd4dGIyUmxYQ0k2WENKbWFXeHNYQ0lzWENKaVozWmZiRzl2Y0Z3aU9uUnlkV1VzWENKaVozWmZiWFYwWlZ3aU9uUnlkV1VzWENKaVozWmZZWFYwYjNCaGRYTmxYQ0k2Wm1Gc2MyVXNYQ0pzWVhsbGNsOXBaSE5jSWpwYlhYMGlMQ0kxSWpvaWUxd2lhV1JjSWpvMUxGd2lkR2x0Wld4cGJtVmZhRndpT2pJd01DeGNJbUpuVkdoMWJXSmNJanBjSWk4eU1ERXlMekV3THprdE1UVXdlREUxTUM1cWNHZGNJaXhjSW05eVpHVnlYQ0k2Tml4Y0ltSm5YQ0k2WENJdk1qQXhNaTh4TUM4NUxtcHdaMXdpTEZ3aVpIVnlZWFJwYjI1Y0lqb3pMRndpWm1sc2JFMXZaR1ZjSWpwY0ltWnBiR3hjSWl4Y0ltbHVabTljSWpwY0lqeG9NaUJ6ZEhsc1pUMWNYRndpZEdWNGRDMWhiR2xuYmpvZ1kyVnVkR1Z5TzF4Y1hDSStVMkZ0Y0d4bElGUnBkR3hsd3FBM1BDOW9NajQ4Y0NCemRIbHNaVDFjWEZ3aWRHVjRkQzFoYkdsbmJqb2dZMlZ1ZEdWeU8xeGNYQ0krVEc5eVpXMGdhWEJ6ZFcwZ1pHOXNiM0lnYzJsMElHRnRaWFFzSUdOdmJuTmxZM1JsZEhWeUlHRmthWEJwYzJsamFXNW5JR1ZzYVhRc0lITmxaQ0JrYnlCbGFYVnpiVzlrSUhSbGJYQnZjaUJwYm1OcFpHbGtkVzUwSUhWMElHeGhZbTl5WlNCbGRDQmtiMnh2Y21VZ2JXRm5ibUVnWVd4cGNYVmhMaUJWZENCbGJtbHRJR0ZrSUcxcGJtbHRJSFpsYm1saGJTd2djWFZwY3lCdWIzTjBjblZrSUdWNFpYSmphWFJoZEdsdmJpQjFiR3hoYldOdklHeGhZbTl5YVhNZ2JtbHphU0IxZENCaGJHbHhkV2x3SUdWNElHVmhJR052YlcxdlpHOGdZMjl1YzJWeGRXRjBMaUJFZFdseklHRjFkR1VnYVhKMWNtVWdaRzlzYjNJZ2FXNGdjbVZ3Y21Wb1pXNWtaWEpwZENCcGJpQjJiMngxY0hSaGRHVWdkbVZzYVhRZ1pYTnpaU0JqYVd4c2RXMGdaRzlzYjNKbElHVjFJR1oxWjJsaGRDQnVkV3hzWVNCd1lYSnBZWFIxY2k0Z1JYaGpaWEIwWlhWeUlITnBiblFnYjJOallXVmpZWFFnWTNWd2FXUmhkR0YwSUc1dmJpQndjbTlwWkdWdWRDd2djM1Z1ZENCcGJpQmpkV3h3WVNCeGRXa2diMlptYVdOcFlTQmtaWE5sY25WdWRDQnRiMnhzYVhRZ1lXNXBiU0JwWkNCbGMzUWdiR0ZpYjNKMWJTNDhMM0ErWENJc1hDSmlaM1pmWm1sc2JHMXZaR1ZjSWpwY0ltWnBiR3hjSWl4Y0ltSm5kbDlzYjI5d1hDSTZkSEoxWlN4Y0ltSm5kbDl0ZFhSbFhDSTZkSEoxWlN4Y0ltSm5kbDloZFhSdmNHRjFjMlZjSWpwbVlXeHpaU3hjSW14aGVXVnlYMmxrYzF3aU9sdGRmU0lzSWpZaU9pSjdYQ0pwWkZ3aU9qWXNYQ0owYVcxbGJHbHVaVjlvWENJNk1qQXdMRndpWW1kVWFIVnRZbHdpT2x3aUx6SXdNVEl2TVRBdk9DMHhOVEI0TVRVd0xtcHdaMXdpTEZ3aWIzSmtaWEpjSWpveExGd2lZbWRjSWpwY0lpOHlNREV5THpFd0x6Z3VhbkJuWENJc1hDSmtkWEpoZEdsdmJsd2lPak1zWENKbWFXeHNUVzlrWlZ3aU9sd2labWxzYkZ3aUxGd2lhVzVtYjF3aU9sd2lQR2d5SUhOMGVXeGxQVnhjWENKMFpYaDBMV0ZzYVdkdU9pQmpaVzUwWlhJN1hGeGNJajVUWVcxd2JHVWdWR2wwYkdYQ29ESThMMmd5UGp4d0lITjBlV3hsUFZ4Y1hDSjBaWGgwTFdGc2FXZHVPaUJqWlc1MFpYSTdYRnhjSWo1TWIzSmxiU0JwY0hOMWJTQmtiMnh2Y2lCemFYUWdZVzFsZEN3Z1kyOXVjMlZqZEdWMGRYSWdZV1JwY0dsemFXTnBibWNnWld4cGRDd2djMlZrSUdSdklHVnBkWE50YjJRZ2RHVnRjRzl5SUdsdVkybGthV1IxYm5RZ2RYUWdiR0ZpYjNKbElHVjBJR1J2Ykc5eVpTQnRZV2R1WVNCaGJHbHhkV0V1SUZWMElHVnVhVzBnWVdRZ2JXbHVhVzBnZG1WdWFXRnRMQ0J4ZFdseklHNXZjM1J5ZFdRZ1pYaGxjbU5wZEdGMGFXOXVJSFZzYkdGdFkyOGdiR0ZpYjNKcGN5QnVhWE5wSUhWMElHRnNhWEYxYVhBZ1pYZ2daV0VnWTI5dGJXOWtieUJqYjI1elpYRjFZWFF1SUVSMWFYTWdZWFYwWlNCcGNuVnlaU0JrYjJ4dmNpQnBiaUJ5WlhCeVpXaGxibVJsY21sMElHbHVJSFp2YkhWd2RHRjBaU0IyWld4cGRDQmxjM05sSUdOcGJHeDFiU0JrYjJ4dmNtVWdaWFVnWm5WbmFXRjBJRzUxYkd4aElIQmhjbWxoZEhWeUxpQkZlR05sY0hSbGRYSWdjMmx1ZENCdlkyTmhaV05oZENCamRYQnBaR0YwWVhRZ2JtOXVJSEJ5YjJsa1pXNTBMQ0J6ZFc1MElHbHVJR04xYkhCaElIRjFhU0J2Wm1acFkybGhJR1JsYzJWeWRXNTBJRzF2Ykd4cGRDQmhibWx0SUdsa0lHVnpkQ0JzWVdKdmNuVnRMand2Y0Q1Y0lpeGNJbUpuZGw5bWFXeHNiVzlrWlZ3aU9sd2labWxzYkZ3aUxGd2lZbWQyWDJ4dmIzQmNJanAwY25WbExGd2lZbWQyWDIxMWRHVmNJanAwY25WbExGd2lZbWQyWDJGMWRHOXdZWFZ6WlZ3aU9tWmhiSE5sTEZ3aWJHRjVaWEpmYVdSelhDSTZXMTE5SWl3aU55STZJbnRjSW1sa1hDSTZOeXhjSW5ScGJXVnNhVzVsWDJoY0lqb3lNREFzWENKaVoxUm9kVzFpWENJNlhDSXZNakF4TWk4eE1DODBMVEUxTUhneE5UQXVhbkJuWENJc1hDSnZjbVJsY2x3aU9qY3NYQ0ppWjF3aU9sd2lMekl3TVRJdk1UQXZOQzVxY0dkY0lpeGNJbVIxY21GMGFXOXVYQ0k2TXl4Y0ltWnBiR3hOYjJSbFhDSTZYQ0ptYVd4c1hDSXNYQ0pwYm1adlhDSTZYQ0k4YURJZ2MzUjViR1U5WEZ4Y0luUmxlSFF0WVd4cFoyNDZJR05sYm5SbGNqdGNYRndpUGxOaGJYQnNaU0JVYVhSc1pjS2dPRHd2YURJK1BIQWdjM1I1YkdVOVhGeGNJblJsZUhRdFlXeHBaMjQ2SUdObGJuUmxjanRjWEZ3aVBreHZjbVZ0SUdsd2MzVnRJR1J2Ykc5eUlITnBkQ0JoYldWMExDQmpiMjV6WldOMFpYUjFjaUJoWkdsd2FYTnBZMmx1WnlCbGJHbDBMQ0J6WldRZ1pHOGdaV2wxYzIxdlpDQjBaVzF3YjNJZ2FXNWphV1JwWkhWdWRDQjFkQ0JzWVdKdmNtVWdaWFFnWkc5c2IzSmxJRzFoWjI1aElHRnNhWEYxWVM0Z1ZYUWdaVzVwYlNCaFpDQnRhVzVwYlNCMlpXNXBZVzBzSUhGMWFYTWdibTl6ZEhKMVpDQmxlR1Z5WTJsMFlYUnBiMjRnZFd4c1lXMWpieUJzWVdKdmNtbHpJRzVwYzJrZ2RYUWdZV3hwY1hWcGNDQmxlQ0JsWVNCamIyMXRiMlJ2SUdOdmJuTmxjWFZoZEM0Z1JIVnBjeUJoZFhSbElHbHlkWEpsSUdSdmJHOXlJR2x1SUhKbGNISmxhR1Z1WkdWeWFYUWdhVzRnZG05c2RYQjBZWFJsSUhabGJHbDBJR1Z6YzJVZ1kybHNiSFZ0SUdSdmJHOXlaU0JsZFNCbWRXZHBZWFFnYm5Wc2JHRWdjR0Z5YVdGMGRYSXVJRVY0WTJWd2RHVjFjaUJ6YVc1MElHOWpZMkZsWTJGMElHTjFjR2xrWVhSaGRDQnViMjRnY0hKdmFXUmxiblFzSUhOMWJuUWdhVzRnWTNWc2NHRWdjWFZwSUc5bVptbGphV0VnWkdWelpYSjFiblFnYlc5c2JHbDBJR0Z1YVcwZ2FXUWdaWE4wSUd4aFltOXlkVzB1UEM5d1Bsd2lMRndpWW1kMlgyWnBiR3h0YjJSbFhDSTZYQ0ptYVd4c1hDSXNYQ0ppWjNaZmJHOXZjRndpT25SeWRXVXNYQ0ppWjNaZmJYVjBaVndpT25SeWRXVXNYQ0ppWjNaZllYVjBiM0JoZFhObFhDSTZabUZzYzJVc1hDSnNZWGxsY2w5cFpITmNJanBiWFgwaUxDSTVJam9pZTF3aWFXUmNJam81TEZ3aWRHbHRaV3hwYm1WZmFGd2lPakl3TUN4Y0ltSm5WR2gxYldKY0lqcGNJaTh5TURFeUx6RXdMekV6TFRFMU1IZ3hOVEF1YW5CblhDSXNYQ0p2Y21SbGNsd2lPakFzWENKaVoxd2lPbHdpTHpJd01USXZNVEF2TVRNdWFuQm5YQ0lzWENKa2RYSmhkR2x2Ymx3aU9qTXNYQ0ptYVd4c1RXOWtaVndpT2x3aVptbHNiRndpTEZ3aWFXNW1iMXdpT2x3aVBHZ3lJSE4wZVd4bFBWeGNYQ0owWlhoMExXRnNhV2R1T2lCalpXNTBaWEk3WEZ4Y0lqNVRZVzF3YkdVZ1ZHbDBiR1VnTVR3dmFESStQSEFnYzNSNWJHVTlYRnhjSW5SbGVIUXRZV3hwWjI0NklHTmxiblJsY2p0Y1hGd2lQa3h2Y21WdElHbHdjM1Z0SUdSdmJHOXlJSE5wZENCaGJXVjBMQ0JqYjI1elpXTjBaWFIxY2lCaFpHbHdhWE5wWTJsdVp5QmxiR2wwTENCelpXUWdaRzhnWldsMWMyMXZaQ0IwWlcxd2IzSWdhVzVqYVdScFpIVnVkQ0IxZENCc1lXSnZjbVVnWlhRZ1pHOXNiM0psSUcxaFoyNWhJR0ZzYVhGMVlTNGdWWFFnWlc1cGJTQmhaQ0J0YVc1cGJTQjJaVzVwWVcwc0lIRjFhWE1nYm05emRISjFaQ0JsZUdWeVkybDBZWFJwYjI0Z2RXeHNZVzFqYnlCc1lXSnZjbWx6SUc1cGMya2dkWFFnWVd4cGNYVnBjQ0JsZUNCbFlTQmpiMjF0YjJSdklHTnZibk5sY1hWaGRDNGdSSFZwY3lCaGRYUmxJR2x5ZFhKbElHUnZiRzl5SUdsdUlISmxjSEpsYUdWdVpHVnlhWFFnYVc0Z2RtOXNkWEIwWVhSbElIWmxiR2wwSUdWemMyVWdZMmxzYkhWdElHUnZiRzl5WlNCbGRTQm1kV2RwWVhRZ2JuVnNiR0VnY0dGeWFXRjBkWEl1SUVWNFkyVndkR1YxY2lCemFXNTBJRzlqWTJGbFkyRjBJR04xY0dsa1lYUmhkQ0J1YjI0Z2NISnZhV1JsYm5Rc0lITjFiblFnYVc0Z1kzVnNjR0VnY1hWcElHOW1abWxqYVdFZ1pHVnpaWEoxYm5RZ2JXOXNiR2wwSUdGdWFXMGdhV1FnWlhOMElHeGhZbTl5ZFcwdVBDOXdQbHdpTEZ3aVltZDJYMlpwYkd4dGIyUmxYQ0k2WENKbWFXeHNYQ0lzWENKaVozWmZiRzl2Y0Z3aU9uUnlkV1VzWENKaVozWmZiWFYwWlZ3aU9uUnlkV1VzWENKaVozWmZZWFYwYjNCaGRYTmxYQ0k2Wm1Gc2MyVXNYQ0pzWVhsbGNsOXBaSE5jSWpwYlhYMGlMQ0l4TWlJNkludGNJbWxrWENJNk1USXNYQ0owYVcxbGJHbHVaVjlvWENJNk1qQXdMRndpWW1kVWFIVnRZbHdpT2x3aUx6SXdNVEl2TVRBdk1UWXRNVFV3ZURFMU1DNXFjR2RjSWl4Y0ltOXlaR1Z5WENJNk9DeGNJbUpuWENJNlhDSXZNakF4TWk4eE1DOHhOaTVxY0dkY0lpeGNJbVIxY21GMGFXOXVYQ0k2TXl4Y0ltWnBiR3hOYjJSbFhDSTZYQ0ptYVd4c1hDSXNYQ0pwYm1adlhDSTZYQ0k4YURJZ2MzUjViR1U5WEZ4Y0luUmxlSFF0WVd4cFoyNDZJR05sYm5SbGNqdGNYRndpUGxOaGJYQnNaU0JVYVhSc1pjS2dPVHd2YURJK1BIQWdjM1I1YkdVOVhGeGNJblJsZUhRdFlXeHBaMjQ2SUdObGJuUmxjanRjWEZ3aVBreHZjbVZ0SUdsd2MzVnRJR1J2Ykc5eUlITnBkQ0JoYldWMExDQmpiMjV6WldOMFpYUjFjaUJoWkdsd2FYTnBZMmx1WnlCbGJHbDBMQ0J6WldRZ1pHOGdaV2wxYzIxdlpDQjBaVzF3YjNJZ2FXNWphV1JwWkhWdWRDQjFkQ0JzWVdKdmNtVWdaWFFnWkc5c2IzSmxJRzFoWjI1aElHRnNhWEYxWVM0Z1ZYUWdaVzVwYlNCaFpDQnRhVzVwYlNCMlpXNXBZVzBzSUhGMWFYTWdibTl6ZEhKMVpDQmxlR1Z5WTJsMFlYUnBiMjRnZFd4c1lXMWpieUJzWVdKdmNtbHpJRzVwYzJrZ2RYUWdZV3hwY1hWcGNDQmxlQ0JsWVNCamIyMXRiMlJ2SUdOdmJuTmxjWFZoZEM0Z1JIVnBjeUJoZFhSbElHbHlkWEpsSUdSdmJHOXlJR2x1SUhKbGNISmxhR1Z1WkdWeWFYUWdhVzRnZG05c2RYQjBZWFJsSUhabGJHbDBJR1Z6YzJVZ1kybHNiSFZ0SUdSdmJHOXlaU0JsZFNCbWRXZHBZWFFnYm5Wc2JHRWdjR0Z5YVdGMGRYSXVJRVY0WTJWd2RHVjFjaUJ6YVc1MElHOWpZMkZsWTJGMElHTjFjR2xrWVhSaGRDQnViMjRnY0hKdmFXUmxiblFzSUhOMWJuUWdhVzRnWTNWc2NHRWdjWFZwSUc5bVptbGphV0VnWkdWelpYSjFiblFnYlc5c2JHbDBJR0Z1YVcwZ2FXUWdaWE4wSUd4aFltOXlkVzB1UEM5d1Bsd2lMRndpWW1kMlgyWnBiR3h0YjJSbFhDSTZYQ0ptYVd4c1hDSXNYQ0ppWjNaZmJHOXZjRndpT25SeWRXVXNYQ0ppWjNaZmJYVjBaVndpT25SeWRXVXNYQ0ppWjNaZllYVjBiM0JoZFhObFhDSTZabUZzYzJVc1hDSnNZWGxsY2w5cFpITmNJanBiWFgwaUxDSXhOQ0k2SW50Y0ltbGtYQ0k2TVRRc1hDSjBhVzFsYkdsdVpWOW9YQ0k2TWpBd0xGd2lZbWRVYUhWdFlsd2lPbHdpTHpJd01USXZNVEF2TVRVeExURTFNSGd4TlRBdWFuQm5YQ0lzWENKdmNtUmxjbHdpT2prc1hDSmlaMXdpT2x3aUx6SXdNVEl2TVRBdk1UVXhMbXB3WjF3aUxGd2laSFZ5WVhScGIyNWNJam96TEZ3aVptbHNiRTF2WkdWY0lqcGNJbVpwYkd4Y0lpeGNJbWx1Wm05Y0lqcGNJanhvTWlCemRIbHNaVDFjWEZ3aWRHVjRkQzFoYkdsbmJqb2dZMlZ1ZEdWeU8xeGNYQ0krVTJGdGNHeGxJRlJwZEd4bHdxQXhNRHd2YURJK1BIQWdjM1I1YkdVOVhGeGNJblJsZUhRdFlXeHBaMjQ2SUdObGJuUmxjanRjWEZ3aVBreHZjbVZ0SUdsd2MzVnRJR1J2Ykc5eUlITnBkQ0JoYldWMExDQmpiMjV6WldOMFpYUjFjaUJoWkdsd2FYTnBZMmx1WnlCbGJHbDBMQ0J6WldRZ1pHOGdaV2wxYzIxdlpDQjBaVzF3YjNJZ2FXNWphV1JwWkhWdWRDQjFkQ0JzWVdKdmNtVWdaWFFnWkc5c2IzSmxJRzFoWjI1aElHRnNhWEYxWVM0Z1ZYUWdaVzVwYlNCaFpDQnRhVzVwYlNCMlpXNXBZVzBzSUhGMWFYTWdibTl6ZEhKMVpDQmxlR1Z5WTJsMFlYUnBiMjRnZFd4c1lXMWpieUJzWVdKdmNtbHpJRzVwYzJrZ2RYUWdZV3hwY1hWcGNDQmxlQ0JsWVNCamIyMXRiMlJ2SUdOdmJuTmxjWFZoZEM0Z1JIVnBjeUJoZFhSbElHbHlkWEpsSUdSdmJHOXlJR2x1SUhKbGNISmxhR1Z1WkdWeWFYUWdhVzRnZG05c2RYQjBZWFJsSUhabGJHbDBJR1Z6YzJVZ1kybHNiSFZ0SUdSdmJHOXlaU0JsZFNCbWRXZHBZWFFnYm5Wc2JHRWdjR0Z5YVdGMGRYSXVJRVY0WTJWd2RHVjFjaUJ6YVc1MElHOWpZMkZsWTJGMElHTjFjR2xrWVhSaGRDQnViMjRnY0hKdmFXUmxiblFzSUhOMWJuUWdhVzRnWTNWc2NHRWdjWFZwSUc5bVptbGphV0VnWkdWelpYSjFiblFnYlc5c2JHbDBJR0Z1YVcwZ2FXUWdaWE4wSUd4aFltOXlkVzB1UEM5d1Bsd2lMRndpWW1kMlgyWnBiR3h0YjJSbFhDSTZYQ0ptYVd4c1hDSXNYQ0ppWjNaZmJHOXZjRndpT25SeWRXVXNYQ0ppWjNaZmJYVjBaVndpT25SeWRXVXNYQ0ppWjNaZllYVjBiM0JoZFhObFhDSTZabUZzYzJVc1hDSnNZWGxsY2w5cFpITmNJanBiWFgwaWZTd2lUVk5RWVc1bGJDNURiMjUwY205c0lqcDdJakVpT2lKN1hDSnBaRndpT2x3aU1Wd2lMRndpYkdGaVpXeGNJanBjSWtGeWNtOTNjMXdpTEZ3aWJtRnRaVndpT2x3aVlYSnliM2R6WENJc1hDSmhkWFJ2U0dsa1pWd2lPbVpoYkhObExGd2liM1psY2xacFpHVnZYQ0k2ZEhKMVpTeGNJbWx1YzJWMFhDSTZkSEoxWlgwaUxDSTBJam9pZTF3aWFXUmNJam8wTEZ3aWJHRmlaV3hjSWpwY0lsTnNhV1JsSUVsdVptOWNJaXhjSW01aGJXVmNJanBjSW5Oc2FXUmxhVzVtYjF3aUxGd2lZWFYwYjBocFpHVmNJanBtWVd4elpTeGNJbTkyWlhKV2FXUmxiMXdpT25SeWRXVXNYQ0p0WVhKbmFXNWNJam94TUN4Y0ltRnNhV2R1WENJNlhDSmliM1IwYjIxY0lpeGNJbWx1YzJWMFhDSTZabUZzYzJWOUluMTkiLCJ0eXBlIjoiY3VzdG9tIiwic2xpZGVzX251bSI6IjEwIn19LCJvcmlnaW5fdXBsb2Fkc191cmwiOiJodHRwOlwvXC9kZW1vLmF2ZXJ0YS5uZXRcL3RoZW1lc1wvbG90dXNcL2R1bW15LWFnZW5jeVwvd3AtY29udGVudFwvdXBsb2FkcyJ9',
101
- 'image_dir' => '',
102
- 'selected' => '',
103
- 'screenshot'=> MSWP_AVERTA_ADMIN_URL . '/assets/images/starters/slider-with-slide-info.jpg'
104
- ),
105
- array(
106
- 'label' => __( 'Slider with Slide Info V2', MSWP_TEXT_DOMAIN ),
107
- 'id' => 'slider-with-slideinfo-2',
108
- 'slidertype'=> 'custom',
109
- 'importdata'=> 'eyJzbGlkZXJzX2RhdGEiOnsiNTkiOnsidGl0bGUiOiJTaW1wbGUgU2xpZGVyIHdpdGggU2xpZGUgSW5mbyBWMiIsInBhcmFtcyI6ImV5SnRaWFJoSWpwN0lsTmxkSFJwYm1keklXbGtjeUk2SWpFaUxDSlRaWFIwYVc1bmN5RnVaWGgwU1dRaU9qSXNJbE5zYVdSbElXbGtjeUk2SWpFc01pd3pMRFFzTlN3MkxEY3NPU3d4TWl3eE5DSXNJbE5zYVdSbElXNWxlSFJKWkNJNk1UWXNJa052Ym5SeWIyd2hhV1J6SWpvaU1TdzBMRFVzTmlJc0lrTnZiblJ5YjJ3aGJtVjRkRWxrSWpvM2ZTd2lUVk5RWVc1bGJDNVRaWFIwYVc1bmN5STZleUl4SWpvaWUxd2lhV1JjSWpwY0lqRmNJaXhjSW5OdVlYQndhVzVuWENJNmRISjFaU3hjSW01aGJXVmNJanBjSWxOcGJYQnNaU0JUYkdsa1pYSWdkMmwwYUNCVGJHbGtaU0JKYm1adklGWXlYQ0lzWENKM2FXUjBhRndpT2pnd01DeGNJbWhsYVdkb2RGd2lPalE0TUN4Y0luZHlZWEJ3WlhKWGFXUjBhRndpT2pFd05qQXNYQ0ozY21Gd2NHVnlWMmxrZEdoVmJtbDBYQ0k2WENKd2VGd2lMRndpWVhWMGIwTnliM0JjSWpwbVlXeHpaU3hjSW5SNWNHVmNJanBjSW1OMWMzUnZiVndpTEZ3aWMyeHBaR1Z5U1dSY0lqcGNJalU1WENJc1hDSnNZWGx2ZFhSY0lqcGNJbUp2ZUdWa1hDSXNYQ0poZFhSdlNHVnBaMmgwWENJNlptRnNjMlVzWENKMGNsWnBaWGRjSWpwY0ltSmhjMmxqWENJc1hDSnpjR1ZsWkZ3aU9qSXdMRndpYzNCaFkyVmNJam93TEZ3aWMzUmhjblJjSWpveExGd2laM0poWWtOMWNuTnZjbHdpT25SeWRXVXNYQ0p6ZDJsd1pWd2lPblJ5ZFdVc1hDSnRiM1Z6WlZ3aU9uUnlkV1VzWENKM2FHVmxiRndpT21aaGJITmxMRndpWVhWMGIzQnNZWGxjSWpwbVlXeHpaU3hjSW14dmIzQmNJanBtWVd4elpTeGNJbk5vZFdabWJHVmNJanBtWVd4elpTeGNJbkJ5Wld4dllXUmNJanBjSWkweFhDSXNYQ0p2ZG1WeVVHRjFjMlZjSWpwMGNuVmxMRndpWlc1a1VHRjFjMlZjSWpwbVlXeHpaU3hjSW1ocFpHVk1ZWGxsY25OY0lqcG1ZV3h6WlN4Y0ltUnBjbHdpT2x3aWFGd2lMRndpY0dGeVlXeHNZWGhOYjJSbFhDSTZYQ0p6ZDJsd1pWd2lMRndpWTJWdWRHVnlRMjl1ZEhKdmJITmNJanAwY25WbExGd2lhVzV6ZEdGdWRGTm9iM2RNWVhsbGNuTmNJanBtWVd4elpTeGNJbUpuUTI5c2IzSmNJanBjSWlNd01EQXdNREJjSWl4Y0luTnJhVzVjSWpwY0ltMXpMWE5yYVc0dGJHbG5hSFF0TWx3aUxGd2liWE5VWlcxd2JHRjBaVndpT2x3aVkzVnpkRzl0WENJc1hDSnRjMVJsYlhCc1lYUmxRMnhoYzNOY0lqcGNJbHdpTEZ3aWRYTmxaRVp2Ym5SelhDSTZYQ0pjSW4waWZTd2lUVk5RWVc1bGJDNVRiR2xrWlNJNmV5SXhJam9pZTF3aWFXUmNJanBjSWpGY0lpeGNJblJwYldWc2FXNWxYMmhjSWpveU1EQXNYQ0ppWjFSb2RXMWlYQ0k2WENJdk1qQXhNaTh4TUM4eE1qRXRNVFV3ZURFMU1DNXFjR2RjSWl4Y0ltOXlaR1Z5WENJNk5DeGNJbUpuWENJNlhDSXZNakF4TWk4eE1DOHhNakV1YW5CblhDSXNYQ0prZFhKaGRHbHZibHdpT2pNc1hDSm1hV3hzVFc5a1pWd2lPbHdpWm1sc2JGd2lMRndpYVc1bWIxd2lPbHdpUEdneUlITjBlV3hsUFZ4Y1hDSjBaWGgwTFdGc2FXZHVPaUJzWldaME8xeGNYQ0krVTJGdGNHeGxJRlJwZEd4bHdxQTFQQzlvTWo0OGNDQnpkSGxzWlQxY1hGd2lkR1Y0ZEMxaGJHbG5iam9nYkdWbWREdGNYRndpUGt4dmNtVnRJR2x3YzNWdElHUnZiRzl5SUhOcGRDQmhiV1YwTENCamIyNXpaV04wWlhSMWNpQmhaR2x3YVhOcFkybHVaeUJsYkdsMExDQnpaV1FnWkc4Z1pXbDFjMjF2WkNCMFpXMXdiM0lnYVc1amFXUnBaSFZ1ZENCMWRDQnNZV0p2Y21VZ1pYUWdaRzlzYjNKbElHMWhaMjVoSUdGc2FYRjFZUzRnVlhRZ1pXNXBiU0JoWkNCdGFXNXBiU0IyWlc1cFlXMHNJSEYxYVhNZ2JtOXpkSEoxWkNCbGVHVnlZMmwwWVhScGIyNGdkV3hzWVcxamJ5QnNZV0p2Y21seklHNXBjMmtnZFhRZ1lXeHBjWFZwY0NCbGVDQmxZU0JqYjIxdGIyUnZJR052Ym5ObGNYVmhkQzRnUkhWcGN5QmhkWFJsSUdseWRYSmxJR1J2Ykc5eUlHbHVJSEpsY0hKbGFHVnVaR1Z5YVhRZ2FXNGdkbTlzZFhCMFlYUmxJSFpsYkdsMElHVnpjMlVnWTJsc2JIVnRJR1J2Ykc5eVpTQmxkU0JtZFdkcFlYUWdiblZzYkdFZ2NHRnlhV0YwZFhJdUlFVjRZMlZ3ZEdWMWNpQnphVzUwSUc5alkyRmxZMkYwSUdOMWNHbGtZWFJoZENCdWIyNGdjSEp2YVdSbGJuUXNJSE4xYm5RZ2FXNGdZM1ZzY0dFZ2NYVnBJRzltWm1samFXRWdaR1Z6WlhKMWJuUWdiVzlzYkdsMElHRnVhVzBnYVdRZ1pYTjBJR3hoWW05eWRXMHVQQzl3UGx3aUxGd2lZbWQyWDJacGJHeHRiMlJsWENJNlhDSm1hV3hzWENJc1hDSmlaM1pmYkc5dmNGd2lPblJ5ZFdVc1hDSmlaM1pmYlhWMFpWd2lPblJ5ZFdVc1hDSmlaM1pmWVhWMGIzQmhkWE5sWENJNlptRnNjMlVzWENKc1lYbGxjbDlwWkhOY0lqcGJYWDBpTENJeUlqb2llMXdpYVdSY0lqb3lMRndpZEdsdFpXeHBibVZmYUZ3aU9qSXdNQ3hjSW1KblZHaDFiV0pjSWpwY0lpOHlNREV5THpFd0x6SXRNVFV3ZURFMU1DNXFjR2RjSWl4Y0ltOXlaR1Z5WENJNk1peGNJbUpuWENJNlhDSXZNakF4TWk4eE1DOHlMbXB3WjF3aUxGd2laSFZ5WVhScGIyNWNJam96TEZ3aVptbHNiRTF2WkdWY0lqcGNJbVpwYkd4Y0lpeGNJbWx1Wm05Y0lqcGNJanhvTWlCemRIbHNaVDFjWEZ3aWRHVjRkQzFoYkdsbmJqb2diR1ZtZER0Y1hGd2lQbE5oYlhCc1pTQlVhWFJzWmNLZ016d3ZhREkrUEhBZ2MzUjViR1U5WEZ4Y0luUmxlSFF0WVd4cFoyNDZJR3hsWm5RN1hGeGNJajVNYjNKbGJTQnBjSE4xYlNCa2IyeHZjaUJ6YVhRZ1lXMWxkQ3dnWTI5dWMyVmpkR1YwZFhJZ1lXUnBjR2x6YVdOcGJtY2daV3hwZEN3Z2MyVmtJR1J2SUdWcGRYTnRiMlFnZEdWdGNHOXlJR2x1WTJsa2FXUjFiblFnZFhRZ2JHRmliM0psSUdWMElHUnZiRzl5WlNCdFlXZHVZU0JoYkdseGRXRXVJRlYwSUdWdWFXMGdZV1FnYldsdWFXMGdkbVZ1YVdGdExDQnhkV2x6SUc1dmMzUnlkV1FnWlhobGNtTnBkR0YwYVc5dUlIVnNiR0Z0WTI4Z2JHRmliM0pwY3lCdWFYTnBJSFYwSUdGc2FYRjFhWEFnWlhnZ1pXRWdZMjl0Ylc5a2J5QmpiMjV6WlhGMVlYUXVJRVIxYVhNZ1lYVjBaU0JwY25WeVpTQmtiMnh2Y2lCcGJpQnlaWEJ5WldobGJtUmxjbWwwSUdsdUlIWnZiSFZ3ZEdGMFpTQjJaV3hwZENCbGMzTmxJR05wYkd4MWJTQmtiMnh2Y21VZ1pYVWdablZuYVdGMElHNTFiR3hoSUhCaGNtbGhkSFZ5TGlCRmVHTmxjSFJsZFhJZ2MybHVkQ0J2WTJOaFpXTmhkQ0JqZFhCcFpHRjBZWFFnYm05dUlIQnliMmxrWlc1MExDQnpkVzUwSUdsdUlHTjFiSEJoSUhGMWFTQnZabVpwWTJsaElHUmxjMlZ5ZFc1MElHMXZiR3hwZENCaGJtbHRJR2xrSUdWemRDQnNZV0p2Y25WdExqd3ZjRDVjSWl4Y0ltSm5kbDltYVd4c2JXOWtaVndpT2x3aVptbHNiRndpTEZ3aVltZDJYMnh2YjNCY0lqcDBjblZsTEZ3aVltZDJYMjExZEdWY0lqcDBjblZsTEZ3aVltZDJYMkYxZEc5d1lYVnpaVndpT21aaGJITmxMRndpYkdGNVpYSmZhV1J6WENJNlcxMTlJaXdpTXlJNkludGNJbWxrWENJNk15eGNJblJwYldWc2FXNWxYMmhjSWpveU1EQXNYQ0ppWjFSb2RXMWlYQ0k2WENJdk1qQXhNaTh4TUM4eE1TMHhOVEI0TVRVd0xtcHdaMXdpTEZ3aWIzSmtaWEpjSWpvekxGd2lZbWRjSWpwY0lpOHlNREV5THpFd0x6RXhMbXB3WjF3aUxGd2laSFZ5WVhScGIyNWNJam96TEZ3aVptbHNiRTF2WkdWY0lqcGNJbVpwYkd4Y0lpeGNJbWx1Wm05Y0lqcGNJanhvTWlCemRIbHNaVDFjWEZ3aWRHVjRkQzFoYkdsbmJqb2diR1ZtZER0Y1hGd2lQbE5oYlhCc1pTQlVhWFJzWmNLZ05Ed3ZhREkrUEhBZ2MzUjViR1U5WEZ4Y0luUmxlSFF0WVd4cFoyNDZJR3hsWm5RN1hGeGNJajVNYjNKbGJTQnBjSE4xYlNCa2IyeHZjaUJ6YVhRZ1lXMWxkQ3dnWTI5dWMyVmpkR1YwZFhJZ1lXUnBjR2x6YVdOcGJtY2daV3hwZEN3Z2MyVmtJR1J2SUdWcGRYTnRiMlFnZEdWdGNHOXlJR2x1WTJsa2FXUjFiblFnZFhRZ2JHRmliM0psSUdWMElHUnZiRzl5WlNCdFlXZHVZU0JoYkdseGRXRXVJRlYwSUdWdWFXMGdZV1FnYldsdWFXMGdkbVZ1YVdGdExDQnhkV2x6SUc1dmMzUnlkV1FnWlhobGNtTnBkR0YwYVc5dUlIVnNiR0Z0WTI4Z2JHRmliM0pwY3lCdWFYTnBJSFYwSUdGc2FYRjFhWEFnWlhnZ1pXRWdZMjl0Ylc5a2J5QmpiMjV6WlhGMVlYUXVJRVIxYVhNZ1lYVjBaU0JwY25WeVpTQmtiMnh2Y2lCcGJpQnlaWEJ5WldobGJtUmxjbWwwSUdsdUlIWnZiSFZ3ZEdGMFpTQjJaV3hwZENCbGMzTmxJR05wYkd4MWJTQmtiMnh2Y21VZ1pYVWdablZuYVdGMElHNTFiR3hoSUhCaGNtbGhkSFZ5TGlCRmVHTmxjSFJsZFhJZ2MybHVkQ0J2WTJOaFpXTmhkQ0JqZFhCcFpHRjBZWFFnYm05dUlIQnliMmxrWlc1MExDQnpkVzUwSUdsdUlHTjFiSEJoSUhGMWFTQnZabVpwWTJsaElHUmxjMlZ5ZFc1MElHMXZiR3hwZENCaGJtbHRJR2xrSUdWemRDQnNZV0p2Y25WdExqd3ZjRDVjSWl4Y0ltSm5kbDltYVd4c2JXOWtaVndpT2x3aVptbHNiRndpTEZ3aVltZDJYMnh2YjNCY0lqcDBjblZsTEZ3aVltZDJYMjExZEdWY0lqcDBjblZsTEZ3aVltZDJYMkYxZEc5d1lYVnpaVndpT21aaGJITmxMRndpYkdGNVpYSmZhV1J6WENJNlcxMTlJaXdpTkNJNkludGNJbWxrWENJNk5DeGNJblJwYldWc2FXNWxYMmhjSWpveU1EQXNYQ0ppWjFSb2RXMWlYQ0k2WENJdk1qQXhNaTh4TUM4ekxURTFNSGd4TlRBdWFuQm5YQ0lzWENKdmNtUmxjbHdpT2pVc1hDSmlaMXdpT2x3aUx6SXdNVEl2TVRBdk15NXFjR2RjSWl4Y0ltUjFjbUYwYVc5dVhDSTZNeXhjSW1acGJHeE5iMlJsWENJNlhDSm1hV3hzWENJc1hDSnBibVp2WENJNlhDSThhRElnYzNSNWJHVTlYRnhjSW5SbGVIUXRZV3hwWjI0NklHeGxablE3WEZ4Y0lqNVRZVzF3YkdVZ1ZHbDBiR1hDb0RZOEwyZ3lQanh3SUhOMGVXeGxQVnhjWENKMFpYaDBMV0ZzYVdkdU9pQnNaV1owTzF4Y1hDSStURzl5WlcwZ2FYQnpkVzBnWkc5c2IzSWdjMmwwSUdGdFpYUXNJR052Ym5ObFkzUmxkSFZ5SUdGa2FYQnBjMmxqYVc1bklHVnNhWFFzSUhObFpDQmtieUJsYVhWemJXOWtJSFJsYlhCdmNpQnBibU5wWkdsa2RXNTBJSFYwSUd4aFltOXlaU0JsZENCa2IyeHZjbVVnYldGbmJtRWdZV3hwY1hWaExpQlZkQ0JsYm1sdElHRmtJRzFwYm1sdElIWmxibWxoYlN3Z2NYVnBjeUJ1YjNOMGNuVmtJR1Y0WlhKamFYUmhkR2x2YmlCMWJHeGhiV052SUd4aFltOXlhWE1nYm1semFTQjFkQ0JoYkdseGRXbHdJR1Y0SUdWaElHTnZiVzF2Wkc4Z1kyOXVjMlZ4ZFdGMExpQkVkV2x6SUdGMWRHVWdhWEoxY21VZ1pHOXNiM0lnYVc0Z2NtVndjbVZvWlc1a1pYSnBkQ0JwYmlCMmIyeDFjSFJoZEdVZ2RtVnNhWFFnWlhOelpTQmphV3hzZFcwZ1pHOXNiM0psSUdWMUlHWjFaMmxoZENCdWRXeHNZU0J3WVhKcFlYUjFjaTRnUlhoalpYQjBaWFZ5SUhOcGJuUWdiMk5qWVdWallYUWdZM1Z3YVdSaGRHRjBJRzV2YmlCd2NtOXBaR1Z1ZEN3Z2MzVnVkQ0JwYmlCamRXeHdZU0J4ZFdrZ2IyWm1hV05wWVNCa1pYTmxjblZ1ZENCdGIyeHNhWFFnWVc1cGJTQnBaQ0JsYzNRZ2JHRmliM0oxYlM0OEwzQStYQ0lzWENKaVozWmZabWxzYkcxdlpHVmNJanBjSW1acGJHeGNJaXhjSW1KbmRsOXNiMjl3WENJNmRISjFaU3hjSW1KbmRsOXRkWFJsWENJNmRISjFaU3hjSW1KbmRsOWhkWFJ2Y0dGMWMyVmNJanBtWVd4elpTeGNJbXhoZVdWeVgybGtjMXdpT2x0ZGZTSXNJalVpT2lKN1hDSnBaRndpT2pVc1hDSjBhVzFsYkdsdVpWOW9YQ0k2TWpBd0xGd2lZbWRVYUhWdFlsd2lPbHdpTHpJd01USXZNVEF2T1MweE5UQjRNVFV3TG1wd1oxd2lMRndpYjNKa1pYSmNJam8yTEZ3aVltZGNJanBjSWk4eU1ERXlMekV3THprdWFuQm5YQ0lzWENKa2RYSmhkR2x2Ymx3aU9qTXNYQ0ptYVd4c1RXOWtaVndpT2x3aVptbHNiRndpTEZ3aWFXNW1iMXdpT2x3aVBHZ3lJSE4wZVd4bFBWeGNYQ0owWlhoMExXRnNhV2R1T2lCc1pXWjBPMXhjWENJK1UyRnRjR3hsSUZScGRHeGx3cUEzUEM5b01qNDhjQ0J6ZEhsc1pUMWNYRndpZEdWNGRDMWhiR2xuYmpvZ2JHVm1kRHRjWEZ3aVBreHZjbVZ0SUdsd2MzVnRJR1J2Ykc5eUlITnBkQ0JoYldWMExDQmpiMjV6WldOMFpYUjFjaUJoWkdsd2FYTnBZMmx1WnlCbGJHbDBMQ0J6WldRZ1pHOGdaV2wxYzIxdlpDQjBaVzF3YjNJZ2FXNWphV1JwWkhWdWRDQjFkQ0JzWVdKdmNtVWdaWFFnWkc5c2IzSmxJRzFoWjI1aElHRnNhWEYxWVM0Z1ZYUWdaVzVwYlNCaFpDQnRhVzVwYlNCMlpXNXBZVzBzSUhGMWFYTWdibTl6ZEhKMVpDQmxlR1Z5WTJsMFlYUnBiMjRnZFd4c1lXMWpieUJzWVdKdmNtbHpJRzVwYzJrZ2RYUWdZV3hwY1hWcGNDQmxlQ0JsWVNCamIyMXRiMlJ2SUdOdmJuTmxjWFZoZEM0Z1JIVnBjeUJoZFhSbElHbHlkWEpsSUdSdmJHOXlJR2x1SUhKbGNISmxhR1Z1WkdWeWFYUWdhVzRnZG05c2RYQjBZWFJsSUhabGJHbDBJR1Z6YzJVZ1kybHNiSFZ0SUdSdmJHOXlaU0JsZFNCbWRXZHBZWFFnYm5Wc2JHRWdjR0Z5YVdGMGRYSXVJRVY0WTJWd2RHVjFjaUJ6YVc1MElHOWpZMkZsWTJGMElHTjFjR2xrWVhSaGRDQnViMjRnY0hKdmFXUmxiblFzSUhOMWJuUWdhVzRnWTNWc2NHRWdjWFZwSUc5bVptbGphV0VnWkdWelpYSjFiblFnYlc5c2JHbDBJR0Z1YVcwZ2FXUWdaWE4wSUd4aFltOXlkVzB1UEM5d1Bsd2lMRndpWW1kMlgyWnBiR3h0YjJSbFhDSTZYQ0ptYVd4c1hDSXNYQ0ppWjNaZmJHOXZjRndpT25SeWRXVXNYQ0ppWjNaZmJYVjBaVndpT25SeWRXVXNYQ0ppWjNaZllYVjBiM0JoZFhObFhDSTZabUZzYzJVc1hDSnNZWGxsY2w5cFpITmNJanBiWFgwaUxDSTJJam9pZTF3aWFXUmNJam8yTEZ3aWRHbHRaV3hwYm1WZmFGd2lPakl3TUN4Y0ltSm5WR2gxYldKY0lqcGNJaTh5TURFeUx6RXdMemd0TVRVd2VERTFNQzVxY0dkY0lpeGNJbTl5WkdWeVhDSTZNU3hjSW1KblhDSTZYQ0l2TWpBeE1pOHhNQzg0TG1wd1oxd2lMRndpWkhWeVlYUnBiMjVjSWpvekxGd2labWxzYkUxdlpHVmNJanBjSW1acGJHeGNJaXhjSW1sdVptOWNJanBjSWp4b01pQnpkSGxzWlQxY1hGd2lkR1Y0ZEMxaGJHbG5iam9nYkdWbWREdGNYRndpUGxOaGJYQnNaU0JVYVhSc1pjS2dNand2YURJK1BIQWdjM1I1YkdVOVhGeGNJblJsZUhRdFlXeHBaMjQ2SUd4bFpuUTdYRnhjSWo1TWIzSmxiU0JwY0hOMWJTQmtiMnh2Y2lCemFYUWdZVzFsZEN3Z1kyOXVjMlZqZEdWMGRYSWdZV1JwY0dsemFXTnBibWNnWld4cGRDd2djMlZrSUdSdklHVnBkWE50YjJRZ2RHVnRjRzl5SUdsdVkybGthV1IxYm5RZ2RYUWdiR0ZpYjNKbElHVjBJR1J2Ykc5eVpTQnRZV2R1WVNCaGJHbHhkV0V1SUZWMElHVnVhVzBnWVdRZ2JXbHVhVzBnZG1WdWFXRnRMQ0J4ZFdseklHNXZjM1J5ZFdRZ1pYaGxjbU5wZEdGMGFXOXVJSFZzYkdGdFkyOGdiR0ZpYjNKcGN5QnVhWE5wSUhWMElHRnNhWEYxYVhBZ1pYZ2daV0VnWTI5dGJXOWtieUJqYjI1elpYRjFZWFF1SUVSMWFYTWdZWFYwWlNCcGNuVnlaU0JrYjJ4dmNpQnBiaUJ5WlhCeVpXaGxibVJsY21sMElHbHVJSFp2YkhWd2RHRjBaU0IyWld4cGRDQmxjM05sSUdOcGJHeDFiU0JrYjJ4dmNtVWdaWFVnWm5WbmFXRjBJRzUxYkd4aElIQmhjbWxoZEhWeUxpQkZlR05sY0hSbGRYSWdjMmx1ZENCdlkyTmhaV05oZENCamRYQnBaR0YwWVhRZ2JtOXVJSEJ5YjJsa1pXNTBMQ0J6ZFc1MElHbHVJR04xYkhCaElIRjFhU0J2Wm1acFkybGhJR1JsYzJWeWRXNTBJRzF2Ykd4cGRDQmhibWx0SUdsa0lHVnpkQ0JzWVdKdmNuVnRMand2Y0Q1Y0lpeGNJbUpuZGw5bWFXeHNiVzlrWlZ3aU9sd2labWxzYkZ3aUxGd2lZbWQyWDJ4dmIzQmNJanAwY25WbExGd2lZbWQyWDIxMWRHVmNJanAwY25WbExGd2lZbWQyWDJGMWRHOXdZWFZ6WlZ3aU9tWmhiSE5sTEZ3aWJHRjVaWEpmYVdSelhDSTZXMTE5SWl3aU55STZJbnRjSW1sa1hDSTZOeXhjSW5ScGJXVnNhVzVsWDJoY0lqb3lNREFzWENKaVoxUm9kVzFpWENJNlhDSXZNakF4TWk4eE1DODBMVEUxTUhneE5UQXVhbkJuWENJc1hDSnZjbVJsY2x3aU9qY3NYQ0ppWjF3aU9sd2lMekl3TVRJdk1UQXZOQzVxY0dkY0lpeGNJbVIxY21GMGFXOXVYQ0k2TXl4Y0ltWnBiR3hOYjJSbFhDSTZYQ0ptYVd4c1hDSXNYQ0pwYm1adlhDSTZYQ0k4YURJZ2MzUjViR1U5WEZ4Y0luUmxlSFF0WVd4cFoyNDZJR3hsWm5RN1hGeGNJajVUWVcxd2JHVWdWR2wwYkdYQ29EZzhMMmd5UGp4d0lITjBlV3hsUFZ4Y1hDSjBaWGgwTFdGc2FXZHVPaUJzWldaME8xeGNYQ0krVEc5eVpXMGdhWEJ6ZFcwZ1pHOXNiM0lnYzJsMElHRnRaWFFzSUdOdmJuTmxZM1JsZEhWeUlHRmthWEJwYzJsamFXNW5JR1ZzYVhRc0lITmxaQ0JrYnlCbGFYVnpiVzlrSUhSbGJYQnZjaUJwYm1OcFpHbGtkVzUwSUhWMElHeGhZbTl5WlNCbGRDQmtiMnh2Y21VZ2JXRm5ibUVnWVd4cGNYVmhMaUJWZENCbGJtbHRJR0ZrSUcxcGJtbHRJSFpsYm1saGJTd2djWFZwY3lCdWIzTjBjblZrSUdWNFpYSmphWFJoZEdsdmJpQjFiR3hoYldOdklHeGhZbTl5YVhNZ2JtbHphU0IxZENCaGJHbHhkV2x3SUdWNElHVmhJR052YlcxdlpHOGdZMjl1YzJWeGRXRjBMaUJFZFdseklHRjFkR1VnYVhKMWNtVWdaRzlzYjNJZ2FXNGdjbVZ3Y21Wb1pXNWtaWEpwZENCcGJpQjJiMngxY0hSaGRHVWdkbVZzYVhRZ1pYTnpaU0JqYVd4c2RXMGdaRzlzYjNKbElHVjFJR1oxWjJsaGRDQnVkV3hzWVNCd1lYSnBZWFIxY2k0Z1JYaGpaWEIwWlhWeUlITnBiblFnYjJOallXVmpZWFFnWTNWd2FXUmhkR0YwSUc1dmJpQndjbTlwWkdWdWRDd2djM1Z1ZENCcGJpQmpkV3h3WVNCeGRXa2diMlptYVdOcFlTQmtaWE5sY25WdWRDQnRiMnhzYVhRZ1lXNXBiU0JwWkNCbGMzUWdiR0ZpYjNKMWJTNDhMM0ErWENJc1hDSmlaM1pmWm1sc2JHMXZaR1ZjSWpwY0ltWnBiR3hjSWl4Y0ltSm5kbDlzYjI5d1hDSTZkSEoxWlN4Y0ltSm5kbDl0ZFhSbFhDSTZkSEoxWlN4Y0ltSm5kbDloZFhSdmNHRjFjMlZjSWpwbVlXeHpaU3hjSW14aGVXVnlYMmxrYzF3aU9sdGRmU0lzSWpraU9pSjdYQ0pwWkZ3aU9qa3NYQ0owYVcxbGJHbHVaVjlvWENJNk1qQXdMRndpWW1kVWFIVnRZbHdpT2x3aUx6SXdNVEl2TVRBdk1UTXRNVFV3ZURFMU1DNXFjR2RjSWl4Y0ltOXlaR1Z5WENJNk1DeGNJbUpuWENJNlhDSXZNakF4TWk4eE1DOHhNeTVxY0dkY0lpeGNJbVIxY21GMGFXOXVYQ0k2TXl4Y0ltWnBiR3hOYjJSbFhDSTZYQ0ptYVd4c1hDSXNYQ0pwYm1adlhDSTZYQ0k4YURJZ2MzUjViR1U5WEZ4Y0luUmxlSFF0WVd4cFoyNDZJR3hsWm5RN1hGeGNJajVUWVcxd2JHVWdWR2wwYkdVZ01Ud3ZhREkrUEhBZ2MzUjViR1U5WEZ4Y0luUmxlSFF0WVd4cFoyNDZJR3hsWm5RN1hGeGNJajVNYjNKbGJTQnBjSE4xYlNCa2IyeHZjaUJ6YVhRZ1lXMWxkQ3dnWTI5dWMyVmpkR1YwZFhJZ1lXUnBjR2x6YVdOcGJtY2daV3hwZEN3Z2MyVmtJR1J2SUdWcGRYTnRiMlFnZEdWdGNHOXlJR2x1WTJsa2FXUjFiblFnZFhRZ2JHRmliM0psSUdWMElHUnZiRzl5WlNCdFlXZHVZU0JoYkdseGRXRXVJRlYwSUdWdWFXMGdZV1FnYldsdWFXMGdkbVZ1YVdGdExDQnhkV2x6SUc1dmMzUnlkV1FnWlhobGNtTnBkR0YwYVc5dUlIVnNiR0Z0WTI4Z2JHRmliM0pwY3lCdWFYTnBJSFYwSUdGc2FYRjFhWEFnWlhnZ1pXRWdZMjl0Ylc5a2J5QmpiMjV6WlhGMVlYUXVJRVIxYVhNZ1lYVjBaU0JwY25WeVpTQmtiMnh2Y2lCcGJpQnlaWEJ5WldobGJtUmxjbWwwSUdsdUlIWnZiSFZ3ZEdGMFpTQjJaV3hwZENCbGMzTmxJR05wYkd4MWJTQmtiMnh2Y21VZ1pYVWdablZuYVdGMElHNTFiR3hoSUhCaGNtbGhkSFZ5TGlCRmVHTmxjSFJsZFhJZ2MybHVkQ0J2WTJOaFpXTmhkQ0JqZFhCcFpHRjBZWFFnYm05dUlIQnliMmxrWlc1MExDQnpkVzUwSUdsdUlHTjFiSEJoSUhGMWFTQnZabVpwWTJsaElHUmxjMlZ5ZFc1MElHMXZiR3hwZENCaGJtbHRJR2xrSUdWemRDQnNZV0p2Y25WdExqd3ZjRDVjSWl4Y0ltSm5kbDltYVd4c2JXOWtaVndpT2x3aVptbHNiRndpTEZ3aVltZDJYMnh2YjNCY0lqcDBjblZsTEZ3aVltZDJYMjExZEdWY0lqcDBjblZsTEZ3aVltZDJYMkYxZEc5d1lYVnpaVndpT21aaGJITmxMRndpYkdGNVpYSmZhV1J6WENJNlcxMTlJaXdpTVRJaU9pSjdYQ0pwWkZ3aU9qRXlMRndpZEdsdFpXeHBibVZmYUZ3aU9qSXdNQ3hjSW1KblZHaDFiV0pjSWpwY0lpOHlNREV5THpFd0x6RTJMVEUxTUhneE5UQXVhbkJuWENJc1hDSnZjbVJsY2x3aU9qZ3NYQ0ppWjF3aU9sd2lMekl3TVRJdk1UQXZNVFl1YW5CblhDSXNYQ0prZFhKaGRHbHZibHdpT2pNc1hDSm1hV3hzVFc5a1pWd2lPbHdpWm1sc2JGd2lMRndpYVc1bWIxd2lPbHdpUEdneUlITjBlV3hsUFZ4Y1hDSjBaWGgwTFdGc2FXZHVPaUJzWldaME8xeGNYQ0krVTJGdGNHeGxJRlJwZEd4bHdxQTVQQzlvTWo0OGNDQnpkSGxzWlQxY1hGd2lkR1Y0ZEMxaGJHbG5iam9nYkdWbWREdGNYRndpUGt4dmNtVnRJR2x3YzNWdElHUnZiRzl5SUhOcGRDQmhiV1YwTENCamIyNXpaV04wWlhSMWNpQmhaR2x3YVhOcFkybHVaeUJsYkdsMExDQnpaV1FnWkc4Z1pXbDFjMjF2WkNCMFpXMXdiM0lnYVc1amFXUnBaSFZ1ZENCMWRDQnNZV0p2Y21VZ1pYUWdaRzlzYjNKbElHMWhaMjVoSUdGc2FYRjFZUzRnVlhRZ1pXNXBiU0JoWkNCdGFXNXBiU0IyWlc1cFlXMHNJSEYxYVhNZ2JtOXpkSEoxWkNCbGVHVnlZMmwwWVhScGIyNGdkV3hzWVcxamJ5QnNZV0p2Y21seklHNXBjMmtnZFhRZ1lXeHBjWFZwY0NCbGVDQmxZU0JqYjIxdGIyUnZJR052Ym5ObGNYVmhkQzRnUkhWcGN5QmhkWFJsSUdseWRYSmxJR1J2Ykc5eUlHbHVJSEpsY0hKbGFHVnVaR1Z5YVhRZ2FXNGdkbTlzZFhCMFlYUmxJSFpsYkdsMElHVnpjMlVnWTJsc2JIVnRJR1J2Ykc5eVpTQmxkU0JtZFdkcFlYUWdiblZzYkdFZ2NHRnlhV0YwZFhJdUlFVjRZMlZ3ZEdWMWNpQnphVzUwSUc5alkyRmxZMkYwSUdOMWNHbGtZWFJoZENCdWIyNGdjSEp2YVdSbGJuUXNJSE4xYm5RZ2FXNGdZM1ZzY0dFZ2NYVnBJRzltWm1samFXRWdaR1Z6WlhKMWJuUWdiVzlzYkdsMElHRnVhVzBnYVdRZ1pYTjBJR3hoWW05eWRXMHVQQzl3UGx3aUxGd2lZbWQyWDJacGJHeHRiMlJsWENJNlhDSm1hV3hzWENJc1hDSmlaM1pmYkc5dmNGd2lPblJ5ZFdVc1hDSmlaM1pmYlhWMFpWd2lPblJ5ZFdVc1hDSmlaM1pmWVhWMGIzQmhkWE5sWENJNlptRnNjMlVzWENKc1lYbGxjbDlwWkhOY0lqcGJYWDBpTENJeE5DSTZJbnRjSW1sa1hDSTZNVFFzWENKMGFXMWxiR2x1WlY5b1hDSTZNakF3TEZ3aVltZFVhSFZ0WWx3aU9sd2lMekl3TVRJdk1UQXZNVFV4TFRFMU1IZ3hOVEF1YW5CblhDSXNYQ0p2Y21SbGNsd2lPamtzWENKaVoxd2lPbHdpTHpJd01USXZNVEF2TVRVeExtcHdaMXdpTEZ3aVpIVnlZWFJwYjI1Y0lqb3pMRndpWm1sc2JFMXZaR1ZjSWpwY0ltWnBiR3hjSWl4Y0ltbHVabTljSWpwY0lqeG9NaUJ6ZEhsc1pUMWNYRndpZEdWNGRDMWhiR2xuYmpvZ2JHVm1kRHRjWEZ3aVBsTmhiWEJzWlNCVWFYUnNaY0tnTVRBOEwyZ3lQanh3SUhOMGVXeGxQVnhjWENKMFpYaDBMV0ZzYVdkdU9pQnNaV1owTzF4Y1hDSStURzl5WlcwZ2FYQnpkVzBnWkc5c2IzSWdjMmwwSUdGdFpYUXNJR052Ym5ObFkzUmxkSFZ5SUdGa2FYQnBjMmxqYVc1bklHVnNhWFFzSUhObFpDQmtieUJsYVhWemJXOWtJSFJsYlhCdmNpQnBibU5wWkdsa2RXNTBJSFYwSUd4aFltOXlaU0JsZENCa2IyeHZjbVVnYldGbmJtRWdZV3hwY1hWaExpQlZkQ0JsYm1sdElHRmtJRzFwYm1sdElIWmxibWxoYlN3Z2NYVnBjeUJ1YjNOMGNuVmtJR1Y0WlhKamFYUmhkR2x2YmlCMWJHeGhiV052SUd4aFltOXlhWE1nYm1semFTQjFkQ0JoYkdseGRXbHdJR1Y0SUdWaElHTnZiVzF2Wkc4Z1kyOXVjMlZ4ZFdGMExpQkVkV2x6SUdGMWRHVWdhWEoxY21VZ1pHOXNiM0lnYVc0Z2NtVndjbVZvWlc1a1pYSnBkQ0JwYmlCMmIyeDFjSFJoZEdVZ2RtVnNhWFFnWlhOelpTQmphV3hzZFcwZ1pHOXNiM0psSUdWMUlHWjFaMmxoZENCdWRXeHNZU0J3WVhKcFlYUjFjaTRnUlhoalpYQjBaWFZ5SUhOcGJuUWdiMk5qWVdWallYUWdZM1Z3YVdSaGRHRjBJRzV2YmlCd2NtOXBaR1Z1ZEN3Z2MzVnVkQ0JwYmlCamRXeHdZU0J4ZFdrZ2IyWm1hV05wWVNCa1pYTmxjblZ1ZENCdGIyeHNhWFFnWVc1cGJTQnBaQ0JsYzNRZ2JHRmliM0oxYlM0OEwzQStYQ0lzWENKaVozWmZabWxzYkcxdlpHVmNJanBjSW1acGJHeGNJaXhjSW1KbmRsOXNiMjl3WENJNmRISjFaU3hjSW1KbmRsOXRkWFJsWENJNmRISjFaU3hjSW1KbmRsOWhkWFJ2Y0dGMWMyVmNJanBtWVd4elpTeGNJbXhoZVdWeVgybGtjMXdpT2x0ZGZTSjlMQ0pOVTFCaGJtVnNMa052Ym5SeWIyd2lPbnNpTVNJNkludGNJbWxrWENJNlhDSXhYQ0lzWENKc1lXSmxiRndpT2x3aVFYSnliM2R6WENJc1hDSnVZVzFsWENJNlhDSmhjbkp2ZDNOY0lpeGNJbUYxZEc5SWFXUmxYQ0k2Wm1Gc2MyVXNYQ0p2ZG1WeVZtbGtaVzljSWpwMGNuVmxMRndpYVc1elpYUmNJanAwY25WbGZTSXNJalFpT2lKN1hDSnBaRndpT2pRc1hDSnNZV0psYkZ3aU9sd2lVMnhwWkdVZ1NXNW1iMXdpTEZ3aWJtRnRaVndpT2x3aWMyeHBaR1ZwYm1adlhDSXNYQ0poZFhSdlNHbGtaVndpT21aaGJITmxMRndpYjNabGNsWnBaR1Z2WENJNmRISjFaU3hjSW0xaGNtZHBibHdpT2pFd0xGd2lkMmxrZEdoY0lqb3lOVEFzWENKaGJHbG5ibHdpT2x3aWNtbG5hSFJjSWl4Y0ltbHVjMlYwWENJNlptRnNjMlY5SWl3aU5TSTZJbnRjSW1sa1hDSTZOU3hjSW14aFltVnNYQ0k2WENKVFkzSnZiR3hpWVhKY0lpeGNJbTVoYldWY0lqcGNJbk5qY205c2JHSmhjbHdpTEZ3aVlYVjBiMGhwWkdWY0lqcG1ZV3h6WlN4Y0ltOTJaWEpXYVdSbGIxd2lPblJ5ZFdVc1hDSnRZWEpuYVc1Y0lqb3hNQ3hjSW1ScGNsd2lPbHdpYUZ3aUxGd2lZMjlzYjNKY0lqcGNJaU16UkRORU0wUmNJaXhjSW5kcFpIUm9YQ0k2TkN4Y0ltRnNhV2R1WENJNlhDSjBiM0JjSWl4Y0ltbHVjMlYwWENJNmRISjFaWDBpTENJMklqb2llMXdpYVdSY0lqbzJMRndpYkdGaVpXeGNJanBjSWtKMWJHeGxkSE5jSWl4Y0ltNWhiV1ZjSWpwY0ltSjFiR3hsZEhOY0lpeGNJbUYxZEc5SWFXUmxYQ0k2ZEhKMVpTeGNJbTkyWlhKV2FXUmxiMXdpT25SeWRXVXNYQ0p0WVhKbmFXNWNJam94TUN4Y0ltUnBjbHdpT2x3aWFGd2lMRndpWVd4cFoyNWNJanBjSW1KdmRIUnZiVndpTEZ3aWFXNXpaWFJjSWpwMGNuVmxmU0o5ZlE9PSIsInR5cGUiOiJjdXN0b20iLCJzbGlkZXNfbnVtIjoiMTAifX0sIm9yaWdpbl91cGxvYWRzX3VybCI6Imh0dHA6XC9cL2RlbW8uYXZlcnRhLm5ldFwvdGhlbWVzXC9sb3R1c1wvZHVtbXktYWdlbmN5XC93cC1jb250ZW50XC91cGxvYWRzIn0=',
110
- 'image_dir' => '',
111
- 'selected' => '',
112
- 'screenshot'=> MSWP_AVERTA_ADMIN_URL . '/assets/images/starters/slider-with-slide-info-v2.jpg'
113
- )
114
- );
115
-
116
-
117
- return apply_filters( 'masterslider_starter_fields', $starters );
118
  }
119
 
120
 
121
 
122
  function msp_get_slider_starter_field( $field_id ){
123
- $fields_in_sections = msp_get_slider_starter_fields();
124
 
125
- foreach ( $fields_in_sections as $fields_in_section ) {
126
- foreach ($fields_in_section as $the_field ) {
127
- if ( isset( $the_field['id'] ) && $the_field['id'] == $field_id ){
128
- return $the_field;
129
- }
130
- }
131
- }
132
 
133
- return null;
134
  }
4
 
5
  $sections = array(
6
  array(
7
+ 'id' => 'main_types',
8
+ 'title' => __( 'Slider Types', 'master-slider' ),
9
  'desc' => ''
10
  ),
11
  array(
12
+ 'id' => 'masterslider_samples_group1',
13
+ 'title' => __( 'Sample Sliders', 'master-slider' ),
14
  'desc' => ''
15
  )
16
  );
21
 
22
  function msp_get_slider_starter_fields () {
23
 
24
+ $starters = array();
25
+
26
+ $starters['main_types'] = array(
27
+
28
+ array(
29
+ 'label' => __( 'Custom Slider', 'master-slider' ),
30
+ 'id' => 'custom-slider',
31
+ 'slidertype'=> 'custom',
32
+ 'importdata'=> '',
33
+ 'image_dir' => '',
34
+ 'selected' => 'true',
35
+ 'screenshot'=> MSWP_AVERTA_ADMIN_URL . '/assets/images/slider-types/pt_custom.png'
36
+ )
37
+
38
+ );
39
+
40
+ $starters['masterslider_samples_group1'] = array(
41
+
42
+ array(
43
+ 'label' => __( 'Slider with Horizontal Thumbnails', 'master-slider' ),
44
+ 'id' => 'slider-with-thumbs-1',
45
+ 'slidertype'=> 'custom',
46
+ 'importdata'=> 'eyJzbGlkZXJzX2RhdGEiOnsiNTIiOnsidGl0bGUiOiJTbGlkZXIgd2l0aCBIb3Jpem9udGFsIFRodW1ibmFpbHMiLCJwYXJhbXMiOiJleUp0WlhSaElqcDdJbE5sZEhScGJtZHpJV2xrY3lJNklqRWlMQ0pUWlhSMGFXNW5jeUZ1WlhoMFNXUWlPaklzSWxOc2FXUmxJV2xrY3lJNklqRXNNaXd6TERRc05TdzJMRGNzT1N3eE1pd3hOQ0lzSWxOc2FXUmxJVzVsZUhSSlpDSTZNVFVzSWtOdmJuUnliMndoYVdSeklqb2lNU3d5TERNaUxDSkRiMjUwY205c0lXNWxlSFJKWkNJNk5IMHNJazFUVUdGdVpXd3VVMlYwZEdsdVozTWlPbnNpTVNJNkludGNJbWxrWENJNlhDSXhYQ0lzWENKemJtRndjR2x1WjF3aU9uUnlkV1VzWENKdVlXMWxYQ0k2WENKVGJHbGtaWElnZDJsMGFDQkliM0pwZW05dWRHRnNJRlJvZFcxaWJtRnBiSE5jSWl4Y0luZHBaSFJvWENJNk9EQXdMRndpYUdWcFoyaDBYQ0k2TkRnd0xGd2lkM0poY0hCbGNsZHBaSFJvWENJNk9EQXdMRndpZDNKaGNIQmxjbGRwWkhSb1ZXNXBkRndpT2x3aWNIaGNJaXhjSW1GMWRHOURjbTl3WENJNlptRnNjMlVzWENKMGVYQmxYQ0k2WENKamRYTjBiMjFjSWl4Y0luTnNhV1JsY2tsa1hDSTZYQ0kxTWx3aUxGd2liR0Y1YjNWMFhDSTZYQ0ppYjNobFpGd2lMRndpWVhWMGIwaGxhV2RvZEZ3aU9tWmhiSE5sTEZ3aWRISldhV1YzWENJNlhDSmlZWE5wWTF3aUxGd2ljM0JsWldSY0lqb3lNQ3hjSW5Od1lXTmxYQ0k2TUN4Y0luTjBZWEowWENJNk1TeGNJbWR5WVdKRGRYSnpiM0pjSWpwMGNuVmxMRndpYzNkcGNHVmNJanAwY25WbExGd2liVzkxYzJWY0lqcDBjblZsTEZ3aWQyaGxaV3hjSWpwbVlXeHpaU3hjSW1GMWRHOXdiR0Y1WENJNlptRnNjMlVzWENKc2IyOXdYQ0k2Wm1Gc2MyVXNYQ0p6YUhWbVpteGxYQ0k2Wm1Gc2MyVXNYQ0p3Y21Wc2IyRmtYQ0k2WENJdE1Wd2lMRndpYjNabGNsQmhkWE5sWENJNmRISjFaU3hjSW1WdVpGQmhkWE5sWENJNlptRnNjMlVzWENKb2FXUmxUR0Y1WlhKelhDSTZabUZzYzJVc1hDSmthWEpjSWpwY0ltaGNJaXhjSW5CaGNtRnNiR0Y0VFc5a1pWd2lPbHdpYzNkcGNHVmNJaXhjSW1ObGJuUmxja052Ym5SeWIyeHpYQ0k2ZEhKMVpTeGNJbWx1YzNSaGJuUlRhRzkzVEdGNVpYSnpYQ0k2Wm1Gc2MyVXNYQ0ppWjBOdmJHOXlYQ0k2WENJak1EQXdNREF3WENJc1hDSnphMmx1WENJNlhDSnRjeTF6YTJsdUxXUmxabUYxYkhSY0lpeGNJbTF6VkdWdGNHeGhkR1ZjSWpwY0ltTjFjM1J2YlZ3aUxGd2liWE5VWlcxd2JHRjBaVU5zWVhOelhDSTZYQ0pjSWl4Y0luVnpaV1JHYjI1MGMxd2lPbHdpWENKOUluMHNJazFUVUdGdVpXd3VVMnhwWkdVaU9uc2lNU0k2SW50Y0ltbGtYQ0k2WENJeFhDSXNYQ0owYVcxbGJHbHVaVjlvWENJNk1qQXdMRndpWW1kVWFIVnRZbHdpT2x3aUx6SXdNVEl2TVRBdk1USXhMVEUxTUhneE5UQXVhbkJuWENJc1hDSnZjbVJsY2x3aU9qQXNYQ0ppWjF3aU9sd2lMekl3TVRJdk1UQXZNVEl4TG1wd1oxd2lMRndpWkhWeVlYUnBiMjVjSWpvekxGd2labWxzYkUxdlpHVmNJanBjSW1acGJHeGNJaXhjSW1KbmRsOW1hV3hzYlc5a1pWd2lPbHdpWm1sc2JGd2lMRndpWW1kMlgyeHZiM0JjSWpwMGNuVmxMRndpWW1kMlgyMTFkR1ZjSWpwMGNuVmxMRndpWW1kMlgyRjFkRzl3WVhWelpWd2lPbVpoYkhObExGd2liR0Y1WlhKZmFXUnpYQ0k2VzExOUlpd2lNaUk2SW50Y0ltbGtYQ0k2TWl4Y0luUnBiV1ZzYVc1bFgyaGNJam95TURBc1hDSmlaMVJvZFcxaVhDSTZYQ0l2TWpBeE1pOHhNQzh5TFRFMU1IZ3hOVEF1YW5CblhDSXNYQ0p2Y21SbGNsd2lPakVzWENKaVoxd2lPbHdpTHpJd01USXZNVEF2TWk1cWNHZGNJaXhjSW1SMWNtRjBhVzl1WENJNk15eGNJbVpwYkd4TmIyUmxYQ0k2WENKbWFXeHNYQ0lzWENKaVozWmZabWxzYkcxdlpHVmNJanBjSW1acGJHeGNJaXhjSW1KbmRsOXNiMjl3WENJNmRISjFaU3hjSW1KbmRsOXRkWFJsWENJNmRISjFaU3hjSW1KbmRsOWhkWFJ2Y0dGMWMyVmNJanBtWVd4elpTeGNJbXhoZVdWeVgybGtjMXdpT2x0ZGZTSXNJak1pT2lKN1hDSnBaRndpT2pNc1hDSjBhVzFsYkdsdVpWOW9YQ0k2TWpBd0xGd2lZbWRVYUhWdFlsd2lPbHdpTHpJd01USXZNVEF2TVRFdE1UVXdlREUxTUM1cWNHZGNJaXhjSW05eVpHVnlYQ0k2TWl4Y0ltSm5YQ0k2WENJdk1qQXhNaTh4TUM4eE1TNXFjR2RjSWl4Y0ltUjFjbUYwYVc5dVhDSTZNeXhjSW1acGJHeE5iMlJsWENJNlhDSm1hV3hzWENJc1hDSmlaM1pmWm1sc2JHMXZaR1ZjSWpwY0ltWnBiR3hjSWl4Y0ltSm5kbDlzYjI5d1hDSTZkSEoxWlN4Y0ltSm5kbDl0ZFhSbFhDSTZkSEoxWlN4Y0ltSm5kbDloZFhSdmNHRjFjMlZjSWpwbVlXeHpaU3hjSW14aGVXVnlYMmxrYzF3aU9sdGRmU0lzSWpRaU9pSjdYQ0pwWkZ3aU9qUXNYQ0owYVcxbGJHbHVaVjlvWENJNk1qQXdMRndpWW1kVWFIVnRZbHdpT2x3aUx6SXdNVEl2TVRBdk15MHhOVEI0TVRVd0xtcHdaMXdpTEZ3aWIzSmtaWEpjSWpvekxGd2lZbWRjSWpwY0lpOHlNREV5THpFd0x6TXVhbkJuWENJc1hDSmtkWEpoZEdsdmJsd2lPak1zWENKbWFXeHNUVzlrWlZ3aU9sd2labWxzYkZ3aUxGd2lZbWQyWDJacGJHeHRiMlJsWENJNlhDSm1hV3hzWENJc1hDSmlaM1pmYkc5dmNGd2lPblJ5ZFdVc1hDSmlaM1pmYlhWMFpWd2lPblJ5ZFdVc1hDSmlaM1pmWVhWMGIzQmhkWE5sWENJNlptRnNjMlVzWENKc1lYbGxjbDlwWkhOY0lqcGJYWDBpTENJMUlqb2llMXdpYVdSY0lqbzFMRndpZEdsdFpXeHBibVZmYUZ3aU9qSXdNQ3hjSW1KblZHaDFiV0pjSWpwY0lpOHlNREV5THpFd0x6a3RNVFV3ZURFMU1DNXFjR2RjSWl4Y0ltOXlaR1Z5WENJNk5DeGNJbUpuWENJNlhDSXZNakF4TWk4eE1DODVMbXB3WjF3aUxGd2laSFZ5WVhScGIyNWNJam96TEZ3aVptbHNiRTF2WkdWY0lqcGNJbVpwYkd4Y0lpeGNJbUpuZGw5bWFXeHNiVzlrWlZ3aU9sd2labWxzYkZ3aUxGd2lZbWQyWDJ4dmIzQmNJanAwY25WbExGd2lZbWQyWDIxMWRHVmNJanAwY25WbExGd2lZbWQyWDJGMWRHOXdZWFZ6WlZ3aU9tWmhiSE5sTEZ3aWJHRjVaWEpmYVdSelhDSTZXMTE5SWl3aU5pSTZJbnRjSW1sa1hDSTZOaXhjSW5ScGJXVnNhVzVsWDJoY0lqb3lNREFzWENKaVoxUm9kVzFpWENJNlhDSXZNakF4TWk4eE1DODRMVEUxTUhneE5UQXVhbkJuWENJc1hDSnZjbVJsY2x3aU9qVXNYQ0ppWjF3aU9sd2lMekl3TVRJdk1UQXZPQzVxY0dkY0lpeGNJbVIxY21GMGFXOXVYQ0k2TXl4Y0ltWnBiR3hOYjJSbFhDSTZYQ0ptYVd4c1hDSXNYQ0ppWjNaZlptbHNiRzF2WkdWY0lqcGNJbVpwYkd4Y0lpeGNJbUpuZGw5c2IyOXdYQ0k2ZEhKMVpTeGNJbUpuZGw5dGRYUmxYQ0k2ZEhKMVpTeGNJbUpuZGw5aGRYUnZjR0YxYzJWY0lqcG1ZV3h6WlN4Y0lteGhlV1Z5WDJsa2Mxd2lPbHRkZlNJc0lqY2lPaUo3WENKcFpGd2lPamNzWENKMGFXMWxiR2x1WlY5b1hDSTZNakF3TEZ3aVltZFVhSFZ0WWx3aU9sd2lMekl3TVRJdk1UQXZOQzB4TlRCNE1UVXdMbXB3WjF3aUxGd2liM0prWlhKY0lqbzJMRndpWW1kY0lqcGNJaTh5TURFeUx6RXdMelF1YW5CblhDSXNYQ0prZFhKaGRHbHZibHdpT2pNc1hDSm1hV3hzVFc5a1pWd2lPbHdpWm1sc2JGd2lMRndpWW1kMlgyWnBiR3h0YjJSbFhDSTZYQ0ptYVd4c1hDSXNYQ0ppWjNaZmJHOXZjRndpT25SeWRXVXNYQ0ppWjNaZmJYVjBaVndpT25SeWRXVXNYQ0ppWjNaZllYVjBiM0JoZFhObFhDSTZabUZzYzJVc1hDSnNZWGxsY2w5cFpITmNJanBiWFgwaUxDSTVJam9pZTF3aWFXUmNJam81TEZ3aWRHbHRaV3hwYm1WZmFGd2lPakl3TUN4Y0ltSm5WR2gxYldKY0lqcGNJaTh5TURFeUx6RXdMekV6TFRFMU1IZ3hOVEF1YW5CblhDSXNYQ0p2Y21SbGNsd2lPamNzWENKaVoxd2lPbHdpTHpJd01USXZNVEF2TVRNdWFuQm5YQ0lzWENKa2RYSmhkR2x2Ymx3aU9qTXNYQ0ptYVd4c1RXOWtaVndpT2x3aVptbHNiRndpTEZ3aVltZDJYMlpwYkd4dGIyUmxYQ0k2WENKbWFXeHNYQ0lzWENKaVozWmZiRzl2Y0Z3aU9uUnlkV1VzWENKaVozWmZiWFYwWlZ3aU9uUnlkV1VzWENKaVozWmZZWFYwYjNCaGRYTmxYQ0k2Wm1Gc2MyVXNYQ0pzWVhsbGNsOXBaSE5jSWpwYlhYMGlMQ0l4TWlJNkludGNJbWxrWENJNk1USXNYQ0owYVcxbGJHbHVaVjlvWENJNk1qQXdMRndpWW1kVWFIVnRZbHdpT2x3aUx6SXdNVEl2TVRBdk1UWXRNVFV3ZURFMU1DNXFjR2RjSWl4Y0ltOXlaR1Z5WENJNk9DeGNJbUpuWENJNlhDSXZNakF4TWk4eE1DOHhOaTVxY0dkY0lpeGNJbVIxY21GMGFXOXVYQ0k2TXl4Y0ltWnBiR3hOYjJSbFhDSTZYQ0ptYVd4c1hDSXNYQ0ppWjNaZlptbHNiRzF2WkdWY0lqcGNJbVpwYkd4Y0lpeGNJbUpuZGw5c2IyOXdYQ0k2ZEhKMVpTeGNJbUpuZGw5dGRYUmxYQ0k2ZEhKMVpTeGNJbUpuZGw5aGRYUnZjR0YxYzJWY0lqcG1ZV3h6WlN4Y0lteGhlV1Z5WDJsa2Mxd2lPbHRkZlNJc0lqRTBJam9pZTF3aWFXUmNJam94TkN4Y0luUnBiV1ZzYVc1bFgyaGNJam95TURBc1hDSmlaMVJvZFcxaVhDSTZYQ0l2TWpBeE1pOHhNQzh4TlRFdE1UVXdlREUxTUM1cWNHZGNJaXhjSW05eVpHVnlYQ0k2T1N4Y0ltSm5YQ0k2WENJdk1qQXhNaTh4TUM4eE5URXVhbkJuWENJc1hDSmtkWEpoZEdsdmJsd2lPak1zWENKbWFXeHNUVzlrWlZ3aU9sd2labWxzYkZ3aUxGd2lZbWQyWDJacGJHeHRiMlJsWENJNlhDSm1hV3hzWENJc1hDSmlaM1pmYkc5dmNGd2lPblJ5ZFdVc1hDSmlaM1pmYlhWMFpWd2lPblJ5ZFdVc1hDSmlaM1pmWVhWMGIzQmhkWE5sWENJNlptRnNjMlVzWENKc1lYbGxjbDlwWkhOY0lqcGJYWDBpZlN3aVRWTlFZVzVsYkM1RGIyNTBjbTlzSWpwN0lqRWlPaUo3WENKcFpGd2lPbHdpTVZ3aUxGd2liR0ZpWld4Y0lqcGNJa0Z5Y205M2Mxd2lMRndpYm1GdFpWd2lPbHdpWVhKeWIzZHpYQ0lzWENKaGRYUnZTR2xrWlZ3aU9tWmhiSE5sTEZ3aWIzWmxjbFpwWkdWdlhDSTZkSEoxWlN4Y0ltbHVjMlYwWENJNmRISjFaWDBpTENJeUlqb2llMXdpYVdSY0lqb3lMRndpYkdGaVpXeGNJanBjSWtKMWJHeGxkSE5jSWl4Y0ltNWhiV1ZjSWpwY0ltSjFiR3hsZEhOY0lpeGNJbUYxZEc5SWFXUmxYQ0k2Wm1Gc2MyVXNYQ0p2ZG1WeVZtbGtaVzljSWpwMGNuVmxMRndpYldGeVoybHVYQ0k2TVRBc1hDSmthWEpjSWpwY0ltaGNJaXhjSW1Gc2FXZHVYQ0k2WENKaWIzUjBiMjFjSWl4Y0ltbHVjMlYwWENJNmRISjFaWDBpTENJeklqb2llMXdpYVdSY0lqb3pMRndpYkdGaVpXeGNJanBjSWxSb2RXMWliR2x6ZEM5VVlXSnpYQ0lzWENKdVlXMWxYQ0k2WENKMGFIVnRZbXhwYzNSY0lpeGNJbUYxZEc5SWFXUmxYQ0k2Wm1Gc2MyVXNYQ0p2ZG1WeVZtbGtaVzljSWpwMGNuVmxMRndpYldGeVoybHVYQ0k2TlN4Y0luTndZV05sWENJNk5TeGNJbmRwWkhSb1hDSTZNVFF3TEZ3aWFHVnBaMmgwWENJNk9EQXNYQ0poYkdsbmJsd2lPbHdpWW05MGRHOXRYQ0lzWENKcGJuTmxkRndpT21aaGJITmxMRndpWm1sc2JFMXZaR1ZjSWpwY0ltWnBiR3hjSW4waWZYMD0iLCJ0eXBlIjoiY3VzdG9tIiwic2xpZGVzX251bSI6IjEwIn19LCJvcmlnaW5fdXBsb2Fkc191cmwiOiJodHRwOlwvXC9kZW1vLmF2ZXJ0YS5uZXRcL3RoZW1lc1wvbG90dXNcL2R1bW15LWFnZW5jeVwvd3AtY29udGVudFwvdXBsb2FkcyJ9',
47
+ 'image_dir' => '',
48
+ 'selected' => '',
49
+ 'screenshot'=> MSWP_AVERTA_ADMIN_URL . '/assets/images/starters/slider-with-horizontal-thumbs.jpg'
50
+ ),
51
+ array(
52
+ 'label' => __( 'Slider Without Thumbnails', 'master-slider' ),
53
+ 'id' => 'slider-without-thumbs-1',
54
+ 'slidertype'=> 'custom',
55
+ 'importdata'=> 'eyJzbGlkZXJzX2RhdGEiOnsiNTMiOnsidGl0bGUiOiJTbGlkZXIgV2l0aG91dCBUaHVtYm5haWxzIiwicGFyYW1zIjoiZXlKdFpYUmhJanA3SWxObGRIUnBibWR6SVdsa2N5STZJakVpTENKVFpYUjBhVzVuY3lGdVpYaDBTV1FpT2pJc0lsTnNhV1JsSVdsa2N5STZJakVzTWl3ekxEUXNOU3cyTERjc09Td3hNaXd4TkNJc0lsTnNhV1JsSVc1bGVIUkpaQ0k2TVRVc0lrTnZiblJ5YjJ3aGFXUnpJam9pTVNJc0lrTnZiblJ5YjJ3aGJtVjRkRWxrSWpvMGZTd2lUVk5RWVc1bGJDNVRaWFIwYVc1bmN5STZleUl4SWpvaWUxd2lhV1JjSWpwY0lqRmNJaXhjSW5OdVlYQndhVzVuWENJNmRISjFaU3hjSW01aGJXVmNJanBjSWxOc2FXUmxjaUJYYVhSb2IzVjBJRlJvZFcxaWJtRnBiSE5jSWl4Y0luZHBaSFJvWENJNk9EQXdMRndpYUdWcFoyaDBYQ0k2TkRnd0xGd2lkM0poY0hCbGNsZHBaSFJvWENJNk9EQXdMRndpZDNKaGNIQmxjbGRwWkhSb1ZXNXBkRndpT2x3aWNIaGNJaXhjSW1GMWRHOURjbTl3WENJNlptRnNjMlVzWENKMGVYQmxYQ0k2WENKamRYTjBiMjFjSWl4Y0luTnNhV1JsY2tsa1hDSTZYQ0kxTTF3aUxGd2liR0Y1YjNWMFhDSTZYQ0ppYjNobFpGd2lMRndpWVhWMGIwaGxhV2RvZEZ3aU9tWmhiSE5sTEZ3aWRISldhV1YzWENJNlhDSmlZWE5wWTF3aUxGd2ljM0JsWldSY0lqb3lNQ3hjSW5Od1lXTmxYQ0k2TUN4Y0luTjBZWEowWENJNk1TeGNJbWR5WVdKRGRYSnpiM0pjSWpwMGNuVmxMRndpYzNkcGNHVmNJanAwY25WbExGd2liVzkxYzJWY0lqcDBjblZsTEZ3aWQyaGxaV3hjSWpwbVlXeHpaU3hjSW1GMWRHOXdiR0Y1WENJNlptRnNjMlVzWENKc2IyOXdYQ0k2Wm1Gc2MyVXNYQ0p6YUhWbVpteGxYQ0k2Wm1Gc2MyVXNYQ0p3Y21Wc2IyRmtYQ0k2WENJdE1Wd2lMRndpYjNabGNsQmhkWE5sWENJNmRISjFaU3hjSW1WdVpGQmhkWE5sWENJNlptRnNjMlVzWENKb2FXUmxUR0Y1WlhKelhDSTZabUZzYzJVc1hDSmthWEpjSWpwY0ltaGNJaXhjSW5CaGNtRnNiR0Y0VFc5a1pWd2lPbHdpYzNkcGNHVmNJaXhjSW1ObGJuUmxja052Ym5SeWIyeHpYQ0k2ZEhKMVpTeGNJbWx1YzNSaGJuUlRhRzkzVEdGNVpYSnpYQ0k2Wm1Gc2MyVXNYQ0ppWjBOdmJHOXlYQ0k2WENJak1EQXdNREF3WENJc1hDSnphMmx1WENJNlhDSnRjeTF6YTJsdUxXUmxabUYxYkhSY0lpeGNJbTF6VkdWdGNHeGhkR1ZjSWpwY0ltTjFjM1J2YlZ3aUxGd2liWE5VWlcxd2JHRjBaVU5zWVhOelhDSTZYQ0pjSWl4Y0luVnpaV1JHYjI1MGMxd2lPbHdpWENKOUluMHNJazFUVUdGdVpXd3VVMnhwWkdVaU9uc2lNU0k2SW50Y0ltbGtYQ0k2WENJeFhDSXNYQ0owYVcxbGJHbHVaVjlvWENJNk1qQXdMRndpWW1kVWFIVnRZbHdpT2x3aUx6SXdNVEl2TVRBdk1USXhMVEUxTUhneE5UQXVhbkJuWENJc1hDSnZjbVJsY2x3aU9qUXNYQ0ppWjF3aU9sd2lMekl3TVRJdk1UQXZNVEl4TG1wd1oxd2lMRndpWkhWeVlYUnBiMjVjSWpvekxGd2labWxzYkUxdlpHVmNJanBjSW1acGJHeGNJaXhjSW1KbmRsOW1hV3hzYlc5a1pWd2lPbHdpWm1sc2JGd2lMRndpWW1kMlgyeHZiM0JjSWpwMGNuVmxMRndpWW1kMlgyMTFkR1ZjSWpwMGNuVmxMRndpWW1kMlgyRjFkRzl3WVhWelpWd2lPbVpoYkhObExGd2liR0Y1WlhKZmFXUnpYQ0k2VzExOUlpd2lNaUk2SW50Y0ltbGtYQ0k2TWl4Y0luUnBiV1ZzYVc1bFgyaGNJam95TURBc1hDSmlaMVJvZFcxaVhDSTZYQ0l2TWpBeE1pOHhNQzh5TFRFMU1IZ3hOVEF1YW5CblhDSXNYQ0p2Y21SbGNsd2lPaklzWENKaVoxd2lPbHdpTHpJd01USXZNVEF2TWk1cWNHZGNJaXhjSW1SMWNtRjBhVzl1WENJNk15eGNJbVpwYkd4TmIyUmxYQ0k2WENKbWFXeHNYQ0lzWENKaVozWmZabWxzYkcxdlpHVmNJanBjSW1acGJHeGNJaXhjSW1KbmRsOXNiMjl3WENJNmRISjFaU3hjSW1KbmRsOXRkWFJsWENJNmRISjFaU3hjSW1KbmRsOWhkWFJ2Y0dGMWMyVmNJanBtWVd4elpTeGNJbXhoZVdWeVgybGtjMXdpT2x0ZGZTSXNJak1pT2lKN1hDSnBaRndpT2pNc1hDSjBhVzFsYkdsdVpWOW9YQ0k2TWpBd0xGd2lZbWRVYUhWdFlsd2lPbHdpTHpJd01USXZNVEF2TVRFdE1UVXdlREUxTUM1cWNHZGNJaXhjSW05eVpHVnlYQ0k2TXl4Y0ltSm5YQ0k2WENJdk1qQXhNaTh4TUM4eE1TNXFjR2RjSWl4Y0ltUjFjbUYwYVc5dVhDSTZNeXhjSW1acGJHeE5iMlJsWENJNlhDSm1hV3hzWENJc1hDSmlaM1pmWm1sc2JHMXZaR1ZjSWpwY0ltWnBiR3hjSWl4Y0ltSm5kbDlzYjI5d1hDSTZkSEoxWlN4Y0ltSm5kbDl0ZFhSbFhDSTZkSEoxWlN4Y0ltSm5kbDloZFhSdmNHRjFjMlZjSWpwbVlXeHpaU3hjSW14aGVXVnlYMmxrYzF3aU9sdGRmU0lzSWpRaU9pSjdYQ0pwWkZ3aU9qUXNYQ0owYVcxbGJHbHVaVjlvWENJNk1qQXdMRndpWW1kVWFIVnRZbHdpT2x3aUx6SXdNVEl2TVRBdk15MHhOVEI0TVRVd0xtcHdaMXdpTEZ3aWIzSmtaWEpjSWpvMUxGd2lZbWRjSWpwY0lpOHlNREV5THpFd0x6TXVhbkJuWENJc1hDSmtkWEpoZEdsdmJsd2lPak1zWENKbWFXeHNUVzlrWlZ3aU9sd2labWxzYkZ3aUxGd2lZbWQyWDJacGJHeHRiMlJsWENJNlhDSm1hV3hzWENJc1hDSmlaM1pmYkc5dmNGd2lPblJ5ZFdVc1hDSmlaM1pmYlhWMFpWd2lPblJ5ZFdVc1hDSmlaM1pmWVhWMGIzQmhkWE5sWENJNlptRnNjMlVzWENKc1lYbGxjbDlwWkhOY0lqcGJYWDBpTENJMUlqb2llMXdpYVdSY0lqbzFMRndpZEdsdFpXeHBibVZmYUZ3aU9qSXdNQ3hjSW1KblZHaDFiV0pjSWpwY0lpOHlNREV5THpFd0x6a3RNVFV3ZURFMU1DNXFjR2RjSWl4Y0ltOXlaR1Z5WENJNk5peGNJbUpuWENJNlhDSXZNakF4TWk4eE1DODVMbXB3WjF3aUxGd2laSFZ5WVhScGIyNWNJam96TEZ3aVptbHNiRTF2WkdWY0lqcGNJbVpwYkd4Y0lpeGNJbUpuZGw5bWFXeHNiVzlrWlZ3aU9sd2labWxzYkZ3aUxGd2lZbWQyWDJ4dmIzQmNJanAwY25WbExGd2lZbWQyWDIxMWRHVmNJanAwY25WbExGd2lZbWQyWDJGMWRHOXdZWFZ6WlZ3aU9tWmhiSE5sTEZ3aWJHRjVaWEpmYVdSelhDSTZXMTE5SWl3aU5pSTZJbnRjSW1sa1hDSTZOaXhjSW5ScGJXVnNhVzVsWDJoY0lqb3lNREFzWENKaVoxUm9kVzFpWENJNlhDSXZNakF4TWk4eE1DODRMVEUxTUhneE5UQXVhbkJuWENJc1hDSnZjbVJsY2x3aU9qRXNYQ0ppWjF3aU9sd2lMekl3TVRJdk1UQXZPQzVxY0dkY0lpeGNJbVIxY21GMGFXOXVYQ0k2TXl4Y0ltWnBiR3hOYjJSbFhDSTZYQ0ptYVd4c1hDSXNYQ0ppWjNaZlptbHNiRzF2WkdWY0lqcGNJbVpwYkd4Y0lpeGNJbUpuZGw5c2IyOXdYQ0k2ZEhKMVpTeGNJbUpuZGw5dGRYUmxYQ0k2ZEhKMVpTeGNJbUpuZGw5aGRYUnZjR0YxYzJWY0lqcG1ZV3h6WlN4Y0lteGhlV1Z5WDJsa2Mxd2lPbHRkZlNJc0lqY2lPaUo3WENKcFpGd2lPamNzWENKMGFXMWxiR2x1WlY5b1hDSTZNakF3TEZ3aVltZFVhSFZ0WWx3aU9sd2lMekl3TVRJdk1UQXZOQzB4TlRCNE1UVXdMbXB3WjF3aUxGd2liM0prWlhKY0lqbzNMRndpWW1kY0lqcGNJaTh5TURFeUx6RXdMelF1YW5CblhDSXNYQ0prZFhKaGRHbHZibHdpT2pNc1hDSm1hV3hzVFc5a1pWd2lPbHdpWm1sc2JGd2lMRndpWW1kMlgyWnBiR3h0YjJSbFhDSTZYQ0ptYVd4c1hDSXNYQ0ppWjNaZmJHOXZjRndpT25SeWRXVXNYQ0ppWjNaZmJYVjBaVndpT25SeWRXVXNYQ0ppWjNaZllYVjBiM0JoZFhObFhDSTZabUZzYzJVc1hDSnNZWGxsY2w5cFpITmNJanBiWFgwaUxDSTVJam9pZTF3aWFXUmNJam81TEZ3aWRHbHRaV3hwYm1WZmFGd2lPakl3TUN4Y0ltSm5WR2gxYldKY0lqcGNJaTh5TURFeUx6RXdMekV6TFRFMU1IZ3hOVEF1YW5CblhDSXNYQ0p2Y21SbGNsd2lPakFzWENKaVoxd2lPbHdpTHpJd01USXZNVEF2TVRNdWFuQm5YQ0lzWENKa2RYSmhkR2x2Ymx3aU9qTXNYQ0ptYVd4c1RXOWtaVndpT2x3aVptbHNiRndpTEZ3aVltZDJYMlpwYkd4dGIyUmxYQ0k2WENKbWFXeHNYQ0lzWENKaVozWmZiRzl2Y0Z3aU9uUnlkV1VzWENKaVozWmZiWFYwWlZ3aU9uUnlkV1VzWENKaVozWmZZWFYwYjNCaGRYTmxYQ0k2Wm1Gc2MyVXNYQ0pzWVhsbGNsOXBaSE5jSWpwYlhYMGlMQ0l4TWlJNkludGNJbWxrWENJNk1USXNYQ0owYVcxbGJHbHVaVjlvWENJNk1qQXdMRndpWW1kVWFIVnRZbHdpT2x3aUx6SXdNVEl2TVRBdk1UWXRNVFV3ZURFMU1DNXFjR2RjSWl4Y0ltOXlaR1Z5WENJNk9DeGNJbUpuWENJNlhDSXZNakF4TWk4eE1DOHhOaTVxY0dkY0lpeGNJbVIxY21GMGFXOXVYQ0k2TXl4Y0ltWnBiR3hOYjJSbFhDSTZYQ0ptYVd4c1hDSXNYQ0ppWjNaZlptbHNiRzF2WkdWY0lqcGNJbVpwYkd4Y0lpeGNJbUpuZGw5c2IyOXdYQ0k2ZEhKMVpTeGNJbUpuZGw5dGRYUmxYQ0k2ZEhKMVpTeGNJbUpuZGw5aGRYUnZjR0YxYzJWY0lqcG1ZV3h6WlN4Y0lteGhlV1Z5WDJsa2Mxd2lPbHRkZlNJc0lqRTBJam9pZTF3aWFXUmNJam94TkN4Y0luUnBiV1ZzYVc1bFgyaGNJam95TURBc1hDSmlaMVJvZFcxaVhDSTZYQ0l2TWpBeE1pOHhNQzh4TlRFdE1UVXdlREUxTUM1cWNHZGNJaXhjSW05eVpHVnlYQ0k2T1N4Y0ltSm5YQ0k2WENJdk1qQXhNaTh4TUM4eE5URXVhbkJuWENJc1hDSmtkWEpoZEdsdmJsd2lPak1zWENKbWFXeHNUVzlrWlZ3aU9sd2labWxzYkZ3aUxGd2lZbWQyWDJacGJHeHRiMlJsWENJNlhDSm1hV3hzWENJc1hDSmlaM1pmYkc5dmNGd2lPblJ5ZFdVc1hDSmlaM1pmYlhWMFpWd2lPblJ5ZFdVc1hDSmlaM1pmWVhWMGIzQmhkWE5sWENJNlptRnNjMlVzWENKc1lYbGxjbDlwWkhOY0lqcGJYWDBpZlN3aVRWTlFZVzVsYkM1RGIyNTBjbTlzSWpwN0lqRWlPaUo3WENKcFpGd2lPbHdpTVZ3aUxGd2liR0ZpWld4Y0lqcGNJa0Z5Y205M2Mxd2lMRndpYm1GdFpWd2lPbHdpWVhKeWIzZHpYQ0lzWENKaGRYUnZTR2xrWlZ3aU9tWmhiSE5sTEZ3aWIzWmxjbFpwWkdWdlhDSTZkSEoxWlN4Y0ltbHVjMlYwWENJNmRISjFaWDBpZlgwPSIsInR5cGUiOiJjdXN0b20iLCJzbGlkZXNfbnVtIjoiMTAifX0sIm9yaWdpbl91cGxvYWRzX3VybCI6Imh0dHA6XC9cL2RlbW8uYXZlcnRhLm5ldFwvdGhlbWVzXC9sb3R1c1wvZHVtbXktYWdlbmN5XC93cC1jb250ZW50XC91cGxvYWRzIn0=',
56
+ 'image_dir' => '',
57
+ 'selected' => '',
58
+ 'screenshot'=> MSWP_AVERTA_ADMIN_URL . '/assets/images/starters/simple-slider.jpg'
59
+ ),
60
+ array(
61
+ 'label' => __( 'Slider with Vertical Thumbnails', 'master-slider' ),
62
+ 'id' => 'slider-with-thumbs-2',
63
+ 'slidertype'=> 'custom',
64
+ 'importdata'=> 'eyJzbGlkZXJzX2RhdGEiOnsiNTQiOnsidGl0bGUiOiJTbGlkZXIgd2l0aCBWZXJ0aWNhbCBUaHVtYm5haWxzIiwicGFyYW1zIjoiZXlKdFpYUmhJanA3SWxObGRIUnBibWR6SVdsa2N5STZJakVpTENKVFpYUjBhVzVuY3lGdVpYaDBTV1FpT2pJc0lsTnNhV1JsSVdsa2N5STZJakVzTWl3ekxEUXNOU3cyTERjc09Td3hNaXd4TkNJc0lsTnNhV1JsSVc1bGVIUkpaQ0k2TVRVc0lrTnZiblJ5YjJ3aGFXUnpJam9pTVN3eUxETWlMQ0pEYjI1MGNtOXNJVzVsZUhSSlpDSTZOSDBzSWsxVFVHRnVaV3d1VTJWMGRHbHVaM01pT25zaU1TSTZJbnRjSW1sa1hDSTZYQ0l4WENJc1hDSnpibUZ3Y0dsdVoxd2lPblJ5ZFdVc1hDSnVZVzFsWENJNlhDSlRiR2xrWlhJZ2QybDBhQ0JXWlhKMGFXTmhiQ0JVYUhWdFltNWhhV3h6WENJc1hDSjNhV1IwYUZ3aU9qZ3dNQ3hjSW1obGFXZG9kRndpT2pRNE1DeGNJbmR5WVhCd1pYSlhhV1IwYUZ3aU9qazBOU3hjSW5keVlYQndaWEpYYVdSMGFGVnVhWFJjSWpwY0luQjRYQ0lzWENKaGRYUnZRM0p2Y0Z3aU9tWmhiSE5sTEZ3aWRIbHdaVndpT2x3aVkzVnpkRzl0WENJc1hDSnpiR2xrWlhKSlpGd2lPbHdpTlRSY0lpeGNJbXhoZVc5MWRGd2lPbHdpWW05NFpXUmNJaXhjSW1GMWRHOUlaV2xuYUhSY0lqcG1ZV3h6WlN4Y0luUnlWbWxsZDF3aU9sd2lZbUZ6YVdOY0lpeGNJbk53WldWa1hDSTZNakFzWENKemNHRmpaVndpT2pBc1hDSnpkR0Z5ZEZ3aU9qRXNYQ0puY21GaVEzVnljMjl5WENJNmRISjFaU3hjSW5OM2FYQmxYQ0k2ZEhKMVpTeGNJbTF2ZFhObFhDSTZkSEoxWlN4Y0luZG9aV1ZzWENJNlptRnNjMlVzWENKaGRYUnZjR3hoZVZ3aU9tWmhiSE5sTEZ3aWJHOXZjRndpT25SeWRXVXNYQ0p6YUhWbVpteGxYQ0k2Wm1Gc2MyVXNYQ0p3Y21Wc2IyRmtYQ0k2WENJdE1Wd2lMRndpYjNabGNsQmhkWE5sWENJNmRISjFaU3hjSW1WdVpGQmhkWE5sWENJNlptRnNjMlVzWENKb2FXUmxUR0Y1WlhKelhDSTZabUZzYzJVc1hDSmthWEpjSWpwY0ltaGNJaXhjSW5CaGNtRnNiR0Y0VFc5a1pWd2lPbHdpYzNkcGNHVmNJaXhjSW1ObGJuUmxja052Ym5SeWIyeHpYQ0k2ZEhKMVpTeGNJbWx1YzNSaGJuUlRhRzkzVEdGNVpYSnpYQ0k2Wm1Gc2MyVXNYQ0ppWjBOdmJHOXlYQ0k2WENJak1EQXdNREF3WENJc1hDSnphMmx1WENJNlhDSnRjeTF6YTJsdUxXUmxabUYxYkhSY0lpeGNJbTF6VkdWdGNHeGhkR1ZjSWpwY0ltTjFjM1J2YlZ3aUxGd2liWE5VWlcxd2JHRjBaVU5zWVhOelhDSTZYQ0pjSWl4Y0luVnpaV1JHYjI1MGMxd2lPbHdpWENKOUluMHNJazFUVUdGdVpXd3VVMnhwWkdVaU9uc2lNU0k2SW50Y0ltbGtYQ0k2WENJeFhDSXNYQ0owYVcxbGJHbHVaVjlvWENJNk1qQXdMRndpWW1kVWFIVnRZbHdpT2x3aUx6SXdNVEl2TVRBdk1USXhMVEUxTUhneE5UQXVhbkJuWENJc1hDSnZjbVJsY2x3aU9qQXNYQ0ppWjF3aU9sd2lMekl3TVRJdk1UQXZNVEl4TG1wd1oxd2lMRndpWkhWeVlYUnBiMjVjSWpvekxGd2labWxzYkUxdlpHVmNJanBjSW1acGJHeGNJaXhjSW1KbmRsOW1hV3hzYlc5a1pWd2lPbHdpWm1sc2JGd2lMRndpWW1kMlgyeHZiM0JjSWpwMGNuVmxMRndpWW1kMlgyMTFkR1ZjSWpwMGNuVmxMRndpWW1kMlgyRjFkRzl3WVhWelpWd2lPbVpoYkhObExGd2liR0Y1WlhKZmFXUnpYQ0k2VzExOUlpd2lNaUk2SW50Y0ltbGtYQ0k2TWl4Y0luUnBiV1ZzYVc1bFgyaGNJam95TURBc1hDSmlaMVJvZFcxaVhDSTZYQ0l2TWpBeE1pOHhNQzh5TFRFMU1IZ3hOVEF1YW5CblhDSXNYQ0p2Y21SbGNsd2lPakVzWENKaVoxd2lPbHdpTHpJd01USXZNVEF2TWk1cWNHZGNJaXhjSW1SMWNtRjBhVzl1WENJNk15eGNJbVpwYkd4TmIyUmxYQ0k2WENKbWFXeHNYQ0lzWENKaVozWmZabWxzYkcxdlpHVmNJanBjSW1acGJHeGNJaXhjSW1KbmRsOXNiMjl3WENJNmRISjFaU3hjSW1KbmRsOXRkWFJsWENJNmRISjFaU3hjSW1KbmRsOWhkWFJ2Y0dGMWMyVmNJanBtWVd4elpTeGNJbXhoZVdWeVgybGtjMXdpT2x0ZGZTSXNJak1pT2lKN1hDSnBaRndpT2pNc1hDSjBhVzFsYkdsdVpWOW9YQ0k2TWpBd0xGd2lZbWRVYUhWdFlsd2lPbHdpTHpJd01USXZNVEF2TVRFdE1UVXdlREUxTUM1cWNHZGNJaXhjSW05eVpHVnlYQ0k2TWl4Y0ltSm5YQ0k2WENJdk1qQXhNaTh4TUM4eE1TNXFjR2RjSWl4Y0ltUjFjbUYwYVc5dVhDSTZNeXhjSW1acGJHeE5iMlJsWENJNlhDSm1hV3hzWENJc1hDSmlaM1pmWm1sc2JHMXZaR1ZjSWpwY0ltWnBiR3hjSWl4Y0ltSm5kbDlzYjI5d1hDSTZkSEoxWlN4Y0ltSm5kbDl0ZFhSbFhDSTZkSEoxWlN4Y0ltSm5kbDloZFhSdmNHRjFjMlZjSWpwbVlXeHpaU3hjSW14aGVXVnlYMmxrYzF3aU9sdGRmU0lzSWpRaU9pSjdYQ0pwWkZ3aU9qUXNYQ0owYVcxbGJHbHVaVjlvWENJNk1qQXdMRndpWW1kVWFIVnRZbHdpT2x3aUx6SXdNVEl2TVRBdk15MHhOVEI0TVRVd0xtcHdaMXdpTEZ3aWIzSmtaWEpjSWpvekxGd2lZbWRjSWpwY0lpOHlNREV5THpFd0x6TXVhbkJuWENJc1hDSmtkWEpoZEdsdmJsd2lPak1zWENKbWFXeHNUVzlrWlZ3aU9sd2labWxzYkZ3aUxGd2lZbWQyWDJacGJHeHRiMlJsWENJNlhDSm1hV3hzWENJc1hDSmlaM1pmYkc5dmNGd2lPblJ5ZFdVc1hDSmlaM1pmYlhWMFpWd2lPblJ5ZFdVc1hDSmlaM1pmWVhWMGIzQmhkWE5sWENJNlptRnNjMlVzWENKc1lYbGxjbDlwWkhOY0lqcGJYWDBpTENJMUlqb2llMXdpYVdSY0lqbzFMRndpZEdsdFpXeHBibVZmYUZ3aU9qSXdNQ3hjSW1KblZHaDFiV0pjSWpwY0lpOHlNREV5THpFd0x6a3RNVFV3ZURFMU1DNXFjR2RjSWl4Y0ltOXlaR1Z5WENJNk5DeGNJbUpuWENJNlhDSXZNakF4TWk4eE1DODVMbXB3WjF3aUxGd2laSFZ5WVhScGIyNWNJam96TEZ3aVptbHNiRTF2WkdWY0lqcGNJbVpwYkd4Y0lpeGNJbUpuZGw5bWFXeHNiVzlrWlZ3aU9sd2labWxzYkZ3aUxGd2lZbWQyWDJ4dmIzQmNJanAwY25WbExGd2lZbWQyWDIxMWRHVmNJanAwY25WbExGd2lZbWQyWDJGMWRHOXdZWFZ6WlZ3aU9tWmhiSE5sTEZ3aWJHRjVaWEpmYVdSelhDSTZXMTE5SWl3aU5pSTZJbnRjSW1sa1hDSTZOaXhjSW5ScGJXVnNhVzVsWDJoY0lqb3lNREFzWENKaVoxUm9kVzFpWENJNlhDSXZNakF4TWk4eE1DODRMVEUxTUhneE5UQXVhbkJuWENJc1hDSnZjbVJsY2x3aU9qVXNYQ0ppWjF3aU9sd2lMekl3TVRJdk1UQXZPQzVxY0dkY0lpeGNJbVIxY21GMGFXOXVYQ0k2TXl4Y0ltWnBiR3hOYjJSbFhDSTZYQ0ptYVd4c1hDSXNYQ0ppWjNaZlptbHNiRzF2WkdWY0lqcGNJbVpwYkd4Y0lpeGNJbUpuZGw5c2IyOXdYQ0k2ZEhKMVpTeGNJbUpuZGw5dGRYUmxYQ0k2ZEhKMVpTeGNJbUpuZGw5aGRYUnZjR0YxYzJWY0lqcG1ZV3h6WlN4Y0lteGhlV1Z5WDJsa2Mxd2lPbHRkZlNJc0lqY2lPaUo3WENKcFpGd2lPamNzWENKMGFXMWxiR2x1WlY5b1hDSTZNakF3TEZ3aVltZFVhSFZ0WWx3aU9sd2lMekl3TVRJdk1UQXZOQzB4TlRCNE1UVXdMbXB3WjF3aUxGd2liM0prWlhKY0lqbzJMRndpWW1kY0lqcGNJaTh5TURFeUx6RXdMelF1YW5CblhDSXNYQ0prZFhKaGRHbHZibHdpT2pNc1hDSm1hV3hzVFc5a1pWd2lPbHdpWm1sc2JGd2lMRndpWW1kMlgyWnBiR3h0YjJSbFhDSTZYQ0ptYVd4c1hDSXNYQ0ppWjNaZmJHOXZjRndpT25SeWRXVXNYQ0ppWjNaZmJYVjBaVndpT25SeWRXVXNYQ0ppWjNaZllYVjBiM0JoZFhObFhDSTZabUZzYzJVc1hDSnNZWGxsY2w5cFpITmNJanBiWFgwaUxDSTVJam9pZTF3aWFXUmNJam81TEZ3aWRHbHRaV3hwYm1WZmFGd2lPakl3TUN4Y0ltSm5WR2gxYldKY0lqcGNJaTh5TURFeUx6RXdMekV6TFRFMU1IZ3hOVEF1YW5CblhDSXNYQ0p2Y21SbGNsd2lPamNzWENKaVoxd2lPbHdpTHpJd01USXZNVEF2TVRNdWFuQm5YQ0lzWENKa2RYSmhkR2x2Ymx3aU9qTXNYQ0ptYVd4c1RXOWtaVndpT2x3aVptbHNiRndpTEZ3aVltZDJYMlpwYkd4dGIyUmxYQ0k2WENKbWFXeHNYQ0lzWENKaVozWmZiRzl2Y0Z3aU9uUnlkV1VzWENKaVozWmZiWFYwWlZ3aU9uUnlkV1VzWENKaVozWmZZWFYwYjNCaGRYTmxYQ0k2Wm1Gc2MyVXNYQ0pzWVhsbGNsOXBaSE5jSWpwYlhYMGlMQ0l4TWlJNkludGNJbWxrWENJNk1USXNYQ0owYVcxbGJHbHVaVjlvWENJNk1qQXdMRndpWW1kVWFIVnRZbHdpT2x3aUx6SXdNVEl2TVRBdk1UWXRNVFV3ZURFMU1DNXFjR2RjSWl4Y0ltOXlaR1Z5WENJNk9DeGNJbUpuWENJNlhDSXZNakF4TWk4eE1DOHhOaTVxY0dkY0lpeGNJbVIxY21GMGFXOXVYQ0k2TXl4Y0ltWnBiR3hOYjJSbFhDSTZYQ0ptYVd4c1hDSXNYQ0ppWjNaZlptbHNiRzF2WkdWY0lqcGNJbVpwYkd4Y0lpeGNJbUpuZGw5c2IyOXdYQ0k2ZEhKMVpTeGNJbUpuZGw5dGRYUmxYQ0k2ZEhKMVpTeGNJbUpuZGw5aGRYUnZjR0YxYzJWY0lqcG1ZV3h6WlN4Y0lteGhlV1Z5WDJsa2Mxd2lPbHRkZlNJc0lqRTBJam9pZTF3aWFXUmNJam94TkN4Y0luUnBiV1ZzYVc1bFgyaGNJam95TURBc1hDSmlaMVJvZFcxaVhDSTZYQ0l2TWpBeE1pOHhNQzh4TlRFdE1UVXdlREUxTUM1cWNHZGNJaXhjSW05eVpHVnlYQ0k2T1N4Y0ltSm5YQ0k2WENJdk1qQXhNaTh4TUM4eE5URXVhbkJuWENJc1hDSmtkWEpoZEdsdmJsd2lPak1zWENKbWFXeHNUVzlrWlZ3aU9sd2labWxzYkZ3aUxGd2lZbWQyWDJacGJHeHRiMlJsWENJNlhDSm1hV3hzWENJc1hDSmlaM1pmYkc5dmNGd2lPblJ5ZFdVc1hDSmlaM1pmYlhWMFpWd2lPblJ5ZFdVc1hDSmlaM1pmWVhWMGIzQmhkWE5sWENJNlptRnNjMlVzWENKc1lYbGxjbDlwWkhOY0lqcGJYWDBpZlN3aVRWTlFZVzVsYkM1RGIyNTBjbTlzSWpwN0lqRWlPaUo3WENKcFpGd2lPbHdpTVZ3aUxGd2liR0ZpWld4Y0lqcGNJa0Z5Y205M2Mxd2lMRndpYm1GdFpWd2lPbHdpWVhKeWIzZHpYQ0lzWENKaGRYUnZTR2xrWlZ3aU9tWmhiSE5sTEZ3aWIzWmxjbFpwWkdWdlhDSTZkSEoxWlN4Y0ltbHVjMlYwWENJNmRISjFaWDBpTENJeUlqb2llMXdpYVdSY0lqb3lMRndpYkdGaVpXeGNJanBjSWtKMWJHeGxkSE5jSWl4Y0ltNWhiV1ZjSWpwY0ltSjFiR3hsZEhOY0lpeGNJbUYxZEc5SWFXUmxYQ0k2Wm1Gc2MyVXNYQ0p2ZG1WeVZtbGtaVzljSWpwMGNuVmxMRndpYldGeVoybHVYQ0k2TVRBc1hDSmthWEpjSWpwY0ltaGNJaXhjSW1Gc2FXZHVYQ0k2WENKaWIzUjBiMjFjSWl4Y0ltbHVjMlYwWENJNmRISjFaWDBpTENJeklqb2llMXdpYVdSY0lqb3pMRndpYkdGaVpXeGNJanBjSWxSb2RXMWliR2x6ZEM5VVlXSnpYQ0lzWENKdVlXMWxYQ0k2WENKMGFIVnRZbXhwYzNSY0lpeGNJbUYxZEc5SWFXUmxYQ0k2Wm1Gc2MyVXNYQ0p2ZG1WeVZtbGtaVzljSWpwMGNuVmxMRndpYldGeVoybHVYQ0k2TlN4Y0luTndZV05sWENJNk5TeGNJbmRwWkhSb1hDSTZNVFF3TEZ3aWFHVnBaMmgwWENJNk9EQXNYQ0poYkdsbmJsd2lPbHdpY21sbmFIUmNJaXhjSW1sdWMyVjBYQ0k2Wm1Gc2MyVXNYQ0ptYVd4c1RXOWtaVndpT2x3aVptbHNiRndpZlNKOWZRPT0iLCJ0eXBlIjoiY3VzdG9tIiwic2xpZGVzX251bSI6IjEwIn19LCJvcmlnaW5fdXBsb2Fkc191cmwiOiJodHRwOlwvXC9kZW1vLmF2ZXJ0YS5uZXRcL3RoZW1lc1wvbG90dXNcL2R1bW15LWFnZW5jeVwvd3AtY29udGVudFwvdXBsb2FkcyJ9',
65
+ 'image_dir' => '',
66
+ 'selected' => '',
67
+ 'screenshot'=> MSWP_AVERTA_ADMIN_URL . '/assets/images/starters/slider-with-vertical-thumbs.jpg'
68
+ ),
69
+ array(
70
+ 'label' => __( 'Fullwidth Slider', 'master-slider' ),
71
+ 'id' => 'fullwith-without-thumbs-1',
72
+ 'slidertype'=> 'custom',
73
+ 'importdata'=> 'eyJzbGlkZXJzX2RhdGEiOnsiNTUiOnsidGl0bGUiOiJGdWxsd2lkdGggU2xpZGVyIiwicGFyYW1zIjoiZXlKdFpYUmhJanA3SWxObGRIUnBibWR6SVdsa2N5STZJakVpTENKVFpYUjBhVzVuY3lGdVpYaDBTV1FpT2pJc0lsTnNhV1JsSVdsa2N5STZJakVzTWl3ekxEUXNOU3cyTERjc09Td3hNaXd4TkNJc0lsTnNhV1JsSVc1bGVIUkpaQ0k2TVRVc0lrTnZiblJ5YjJ3aGFXUnpJam9pTVN3eUxEUWlMQ0pEYjI1MGNtOXNJVzVsZUhSSlpDSTZOWDBzSWsxVFVHRnVaV3d1VTJWMGRHbHVaM01pT25zaU1TSTZJbnRjSW1sa1hDSTZYQ0l4WENJc1hDSnpibUZ3Y0dsdVoxd2lPblJ5ZFdVc1hDSnVZVzFsWENJNlhDSkdkV3hzZDJsa2RHZ2dVMnhwWkdWeVhDSXNYQ0ozYVdSMGFGd2lPamd3TUN4Y0ltaGxhV2RvZEZ3aU9qUTRNQ3hjSW5keVlYQndaWEpYYVdSMGFGd2lPamswTlN4Y0luZHlZWEJ3WlhKWGFXUjBhRlZ1YVhSY0lqcGNJbkI0WENJc1hDSmhkWFJ2UTNKdmNGd2lPbVpoYkhObExGd2lkSGx3WlZ3aU9sd2lZM1Z6ZEc5dFhDSXNYQ0p6Ykdsa1pYSkpaRndpT2x3aU5UVmNJaXhjSW14aGVXOTFkRndpT2x3aVpuVnNiSGRwWkhSb1hDSXNYQ0poZFhSdlNHVnBaMmgwWENJNlptRnNjMlVzWENKMGNsWnBaWGRjSWpwY0ltSmhjMmxqWENJc1hDSnpjR1ZsWkZ3aU9qSXdMRndpYzNCaFkyVmNJam93TEZ3aWMzUmhjblJjSWpveExGd2laM0poWWtOMWNuTnZjbHdpT25SeWRXVXNYQ0p6ZDJsd1pWd2lPblJ5ZFdVc1hDSnRiM1Z6WlZ3aU9uUnlkV1VzWENKM2FHVmxiRndpT21aaGJITmxMRndpWVhWMGIzQnNZWGxjSWpwbVlXeHpaU3hjSW14dmIzQmNJanBtWVd4elpTeGNJbk5vZFdabWJHVmNJanBtWVd4elpTeGNJbkJ5Wld4dllXUmNJanBjSWkweFhDSXNYQ0p2ZG1WeVVHRjFjMlZjSWpwMGNuVmxMRndpWlc1a1VHRjFjMlZjSWpwbVlXeHpaU3hjSW1ocFpHVk1ZWGxsY25OY0lqcG1ZV3h6WlN4Y0ltUnBjbHdpT2x3aWFGd2lMRndpY0dGeVlXeHNZWGhOYjJSbFhDSTZYQ0p6ZDJsd1pWd2lMRndpWTJWdWRHVnlRMjl1ZEhKdmJITmNJanBtWVd4elpTeGNJbWx1YzNSaGJuUlRhRzkzVEdGNVpYSnpYQ0k2Wm1Gc2MyVXNYQ0ppWjBOdmJHOXlYQ0k2WENJak1EQXdNREF3WENJc1hDSnphMmx1WENJNlhDSnRjeTF6YTJsdUxXeHBaMmgwTFRZZ2NtOTFibVF0YzJ0cGJsd2lMRndpYlhOVVpXMXdiR0YwWlZ3aU9sd2lZM1Z6ZEc5dFhDSXNYQ0p0YzFSbGJYQnNZWFJsUTJ4aGMzTmNJanBjSWx3aUxGd2lkWE5sWkVadmJuUnpYQ0k2WENKY0luMGlmU3dpVFZOUVlXNWxiQzVUYkdsa1pTSTZleUl4SWpvaWUxd2lhV1JjSWpwY0lqRmNJaXhjSW5ScGJXVnNhVzVsWDJoY0lqb3lNREFzWENKaVoxUm9kVzFpWENJNlhDSXZNakF4TWk4eE1DOHhNakV0TVRVd2VERTFNQzVxY0dkY0lpeGNJbTl5WkdWeVhDSTZNU3hjSW1KblhDSTZYQ0l2TWpBeE1pOHhNQzh4TWpFdWFuQm5YQ0lzWENKa2RYSmhkR2x2Ymx3aU9qTXNYQ0ptYVd4c1RXOWtaVndpT2x3aVptbHNiRndpTEZ3aVltZDJYMlpwYkd4dGIyUmxYQ0k2WENKbWFXeHNYQ0lzWENKaVozWmZiRzl2Y0Z3aU9uUnlkV1VzWENKaVozWmZiWFYwWlZ3aU9uUnlkV1VzWENKaVozWmZZWFYwYjNCaGRYTmxYQ0k2Wm1Gc2MyVXNYQ0pzWVhsbGNsOXBaSE5jSWpwYlhYMGlMQ0l5SWpvaWUxd2lhV1JjSWpveUxGd2lkR2x0Wld4cGJtVmZhRndpT2pJd01DeGNJbUpuVkdoMWJXSmNJanBjSWk4eU1ERXlMekV3THpJdE1UVXdlREUxTUM1cWNHZGNJaXhjSW05eVpHVnlYQ0k2TUN4Y0ltSm5YQ0k2WENJdk1qQXhNaTh4TUM4eUxtcHdaMXdpTEZ3aVpIVnlZWFJwYjI1Y0lqb3pMRndpWm1sc2JFMXZaR1ZjSWpwY0ltWnBiR3hjSWl4Y0ltSm5kbDltYVd4c2JXOWtaVndpT2x3aVptbHNiRndpTEZ3aVltZDJYMnh2YjNCY0lqcDBjblZsTEZ3aVltZDJYMjExZEdWY0lqcDBjblZsTEZ3aVltZDJYMkYxZEc5d1lYVnpaVndpT21aaGJITmxMRndpYkdGNVpYSmZhV1J6WENJNlcxMTlJaXdpTXlJNkludGNJbWxrWENJNk15eGNJblJwYldWc2FXNWxYMmhjSWpveU1EQXNYQ0ppWjFSb2RXMWlYQ0k2WENJdk1qQXhNaTh4TUM4eE1TMHhOVEI0TVRVd0xtcHdaMXdpTEZ3aWIzSmtaWEpjSWpvekxGd2lZbWRjSWpwY0lpOHlNREV5THpFd0x6RXhMbXB3WjF3aUxGd2laSFZ5WVhScGIyNWNJam96TEZ3aVptbHNiRTF2WkdWY0lqcGNJbVpwYkd4Y0lpeGNJbUpuZGw5bWFXeHNiVzlrWlZ3aU9sd2labWxzYkZ3aUxGd2lZbWQyWDJ4dmIzQmNJanAwY25WbExGd2lZbWQyWDIxMWRHVmNJanAwY25WbExGd2lZbWQyWDJGMWRHOXdZWFZ6WlZ3aU9tWmhiSE5sTEZ3aWJHRjVaWEpmYVdSelhDSTZXMTE5SWl3aU5DSTZJbnRjSW1sa1hDSTZOQ3hjSW5ScGJXVnNhVzVsWDJoY0lqb3lNREFzWENKaVoxUm9kVzFpWENJNlhDSXZNakF4TWk4eE1DOHpMVEUxTUhneE5UQXVhbkJuWENJc1hDSnZjbVJsY2x3aU9qSXNYQ0ppWjF3aU9sd2lMekl3TVRJdk1UQXZNeTVxY0dkY0lpeGNJbVIxY21GMGFXOXVYQ0k2TXl4Y0ltWnBiR3hOYjJSbFhDSTZYQ0ptYVd4c1hDSXNYQ0ppWjNaZlptbHNiRzF2WkdWY0lqcGNJbVpwYkd4Y0lpeGNJbUpuZGw5c2IyOXdYQ0k2ZEhKMVpTeGNJbUpuZGw5dGRYUmxYQ0k2ZEhKMVpTeGNJbUpuZGw5aGRYUnZjR0YxYzJWY0lqcG1ZV3h6WlN4Y0lteGhlV1Z5WDJsa2Mxd2lPbHRkZlNJc0lqVWlPaUo3WENKcFpGd2lPalVzWENKMGFXMWxiR2x1WlY5b1hDSTZNakF3TEZ3aVltZFVhSFZ0WWx3aU9sd2lMekl3TVRJdk1UQXZPUzB4TlRCNE1UVXdMbXB3WjF3aUxGd2liM0prWlhKY0lqbzFMRndpWW1kY0lqcGNJaTh5TURFeUx6RXdMemt1YW5CblhDSXNYQ0prZFhKaGRHbHZibHdpT2pNc1hDSm1hV3hzVFc5a1pWd2lPbHdpWm1sc2JGd2lMRndpWW1kMlgyWnBiR3h0YjJSbFhDSTZYQ0ptYVd4c1hDSXNYQ0ppWjNaZmJHOXZjRndpT25SeWRXVXNYQ0ppWjNaZmJYVjBaVndpT25SeWRXVXNYQ0ppWjNaZllYVjBiM0JoZFhObFhDSTZabUZzYzJVc1hDSnNZWGxsY2w5cFpITmNJanBiWFgwaUxDSTJJam9pZTF3aWFXUmNJam8yTEZ3aWRHbHRaV3hwYm1WZmFGd2lPakl3TUN4Y0ltSm5WR2gxYldKY0lqcGNJaTh5TURFeUx6RXdMemd0TVRVd2VERTFNQzVxY0dkY0lpeGNJbTl5WkdWeVhDSTZOQ3hjSW1KblhDSTZYQ0l2TWpBeE1pOHhNQzg0TG1wd1oxd2lMRndpWkhWeVlYUnBiMjVjSWpvekxGd2labWxzYkUxdlpHVmNJanBjSW1acGJHeGNJaXhjSW1KbmRsOW1hV3hzYlc5a1pWd2lPbHdpWm1sc2JGd2lMRndpWW1kMlgyeHZiM0JjSWpwMGNuVmxMRndpWW1kMlgyMTFkR1ZjSWpwMGNuVmxMRndpWW1kMlgyRjFkRzl3WVhWelpWd2lPbVpoYkhObExGd2liR0Y1WlhKZmFXUnpYQ0k2VzExOUlpd2lOeUk2SW50Y0ltbGtYQ0k2Tnl4Y0luUnBiV1ZzYVc1bFgyaGNJam95TURBc1hDSmlaMVJvZFcxaVhDSTZYQ0l2TWpBeE1pOHhNQzgwTFRFMU1IZ3hOVEF1YW5CblhDSXNYQ0p2Y21SbGNsd2lPamNzWENKaVoxd2lPbHdpTHpJd01USXZNVEF2TkM1cWNHZGNJaXhjSW1SMWNtRjBhVzl1WENJNk15eGNJbVpwYkd4TmIyUmxYQ0k2WENKbWFXeHNYQ0lzWENKaVozWmZabWxzYkcxdlpHVmNJanBjSW1acGJHeGNJaXhjSW1KbmRsOXNiMjl3WENJNmRISjFaU3hjSW1KbmRsOXRkWFJsWENJNmRISjFaU3hjSW1KbmRsOWhkWFJ2Y0dGMWMyVmNJanBtWVd4elpTeGNJbXhoZVdWeVgybGtjMXdpT2x0ZGZTSXNJamtpT2lKN1hDSnBaRndpT2prc1hDSjBhVzFsYkdsdVpWOW9YQ0k2TWpBd0xGd2lZbWRVYUhWdFlsd2lPbHdpTHpJd01USXZNVEF2TVRNdE1UVXdlREUxTUM1cWNHZGNJaXhjSW05eVpHVnlYQ0k2T0N4Y0ltSm5YQ0k2WENJdk1qQXhNaTh4TUM4eE15NXFjR2RjSWl4Y0ltUjFjbUYwYVc5dVhDSTZNeXhjSW1acGJHeE5iMlJsWENJNlhDSm1hV3hzWENJc1hDSmlaM1pmWm1sc2JHMXZaR1ZjSWpwY0ltWnBiR3hjSWl4Y0ltSm5kbDlzYjI5d1hDSTZkSEoxWlN4Y0ltSm5kbDl0ZFhSbFhDSTZkSEoxWlN4Y0ltSm5kbDloZFhSdmNHRjFjMlZjSWpwbVlXeHpaU3hjSW14aGVXVnlYMmxrYzF3aU9sdGRmU0lzSWpFeUlqb2llMXdpYVdSY0lqb3hNaXhjSW5ScGJXVnNhVzVsWDJoY0lqb3lNREFzWENKaVoxUm9kVzFpWENJNlhDSXZNakF4TWk4eE1DOHhOaTB4TlRCNE1UVXdMbXB3WjF3aUxGd2liM0prWlhKY0lqbzVMRndpWW1kY0lqcGNJaTh5TURFeUx6RXdMekUyTG1wd1oxd2lMRndpWkhWeVlYUnBiMjVjSWpvekxGd2labWxzYkUxdlpHVmNJanBjSW1acGJHeGNJaXhjSW1KbmRsOW1hV3hzYlc5a1pWd2lPbHdpWm1sc2JGd2lMRndpWW1kMlgyeHZiM0JjSWpwMGNuVmxMRndpWW1kMlgyMTFkR1ZjSWpwMGNuVmxMRndpWW1kMlgyRjFkRzl3WVhWelpWd2lPbVpoYkhObExGd2liR0Y1WlhKZmFXUnpYQ0k2VzExOUlpd2lNVFFpT2lKN1hDSnBaRndpT2pFMExGd2lkR2x0Wld4cGJtVmZhRndpT2pJd01DeGNJbUpuVkdoMWJXSmNJanBjSWk4eU1ERXlMekV3THpFMU1TMHhOVEI0TVRVd0xtcHdaMXdpTEZ3aWIzSmtaWEpjSWpvMkxGd2lZbWRjSWpwY0lpOHlNREV5THpFd0x6RTFNUzVxY0dkY0lpeGNJbVIxY21GMGFXOXVYQ0k2TXl4Y0ltWnBiR3hOYjJSbFhDSTZYQ0ptYVd4c1hDSXNYQ0ppWjNaZlptbHNiRzF2WkdWY0lqcGNJbVpwYkd4Y0lpeGNJbUpuZGw5c2IyOXdYQ0k2ZEhKMVpTeGNJbUpuZGw5dGRYUmxYQ0k2ZEhKMVpTeGNJbUpuZGw5aGRYUnZjR0YxYzJWY0lqcG1ZV3h6WlN4Y0lteGhlV1Z5WDJsa2Mxd2lPbHRkZlNKOUxDSk5VMUJoYm1Wc0xrTnZiblJ5YjJ3aU9uc2lNU0k2SW50Y0ltbGtYQ0k2WENJeFhDSXNYQ0pzWVdKbGJGd2lPbHdpUVhKeWIzZHpYQ0lzWENKdVlXMWxYQ0k2WENKaGNuSnZkM05jSWl4Y0ltRjFkRzlJYVdSbFhDSTZabUZzYzJVc1hDSnZkbVZ5Vm1sa1pXOWNJanAwY25WbExGd2lhVzV6WlhSY0lqcDBjblZsZlNJc0lqSWlPaUo3WENKcFpGd2lPaklzWENKc1lXSmxiRndpT2x3aVFuVnNiR1YwYzF3aUxGd2libUZ0WlZ3aU9sd2lZblZzYkdWMGMxd2lMRndpWVhWMGIwaHBaR1ZjSWpwbVlXeHpaU3hjSW05MlpYSldhV1JsYjF3aU9uUnlkV1VzWENKdFlYSm5hVzVjSWpveE1DeGNJbVJwY2x3aU9sd2lhRndpTEZ3aVlXeHBaMjVjSWpwY0ltSnZkSFJ2YlZ3aUxGd2lhVzV6WlhSY0lqcDBjblZsZlNJc0lqUWlPaUo3WENKcFpGd2lPalFzWENKc1lXSmxiRndpT2x3aVUyTnliMnhzWW1GeVhDSXNYQ0p1WVcxbFhDSTZYQ0p6WTNKdmJHeGlZWEpjSWl4Y0ltRjFkRzlJYVdSbFhDSTZkSEoxWlN4Y0ltOTJaWEpXYVdSbGIxd2lPblJ5ZFdVc1hDSnRZWEpuYVc1Y0lqb3hNQ3hjSW1ScGNsd2lPbHdpYUZ3aUxGd2lZMjlzYjNKY0lqcGNJaU0wTURRd05EQmNJaXhjSW5kcFpIUm9YQ0k2TkN4Y0ltRnNhV2R1WENJNlhDSjBiM0JjSWl4Y0ltbHVjMlYwWENJNmRISjFaWDBpZlgwPSIsInR5cGUiOiJjdXN0b20iLCJzbGlkZXNfbnVtIjoiMTAifX0sIm9yaWdpbl91cGxvYWRzX3VybCI6Imh0dHA6XC9cL2RlbW8uYXZlcnRhLm5ldFwvdGhlbWVzXC9sb3R1c1wvZHVtbXktYWdlbmN5XC93cC1jb250ZW50XC91cGxvYWRzIn0=',
74
+ 'image_dir' => '',
75
+ 'selected' => '',
76
+ 'screenshot'=> MSWP_AVERTA_ADMIN_URL . '/assets/images/starters/fullwidth-slider.jpg'
77
+ ),
78
+ array(
79
+ 'label' => __( 'Simple Autoplay Slider', 'master-slider' ),
80
+ 'id' => 'slider-autoplay-1',
81
+ 'slidertype'=> 'custom',
82
+ 'importdata'=> 'eyJzbGlkZXJzX2RhdGEiOnsiNTYiOnsidGl0bGUiOiJTaW1wbGUgQXV0b3BsYXkgU2xpZGVyIiwicGFyYW1zIjoiZXlKdFpYUmhJanA3SWxObGRIUnBibWR6SVdsa2N5STZJakVpTENKVFpYUjBhVzVuY3lGdVpYaDBTV1FpT2pJc0lsTnNhV1JsSVdsa2N5STZJakVzTWl3ekxEUXNOU3cyTERjc09Td3hNaXd4TkNJc0lsTnNhV1JsSVc1bGVIUkpaQ0k2TVRVc0lrTnZiblJ5YjJ3aGFXUnpJam9pTVN3MExEVXNOaUlzSWtOdmJuUnliMndoYm1WNGRFbGtJam8zZlN3aVRWTlFZVzVsYkM1VFpYUjBhVzVuY3lJNmV5SXhJam9pZTF3aWFXUmNJanBjSWpGY0lpeGNJbk51WVhCd2FXNW5YQ0k2ZEhKMVpTeGNJbTVoYldWY0lqcGNJbE5wYlhCc1pTQkJkWFJ2Y0d4aGVTQlRiR2xrWlhKY0lpeGNJbmRwWkhSb1hDSTZPREF3TEZ3aWFHVnBaMmgwWENJNk5EZ3dMRndpZDNKaGNIQmxjbGRwWkhSb1hDSTZPREF3TEZ3aWQzSmhjSEJsY2xkcFpIUm9WVzVwZEZ3aU9sd2ljSGhjSWl4Y0ltRjFkRzlEY205d1hDSTZabUZzYzJVc1hDSjBlWEJsWENJNlhDSmpkWE4wYjIxY0lpeGNJbk5zYVdSbGNrbGtYQ0k2WENJMU5sd2lMRndpYkdGNWIzVjBYQ0k2WENKaWIzaGxaRndpTEZ3aVlYVjBiMGhsYVdkb2RGd2lPbVpoYkhObExGd2lkSEpXYVdWM1hDSTZYQ0ppWVhOcFkxd2lMRndpYzNCbFpXUmNJam95TUN4Y0luTndZV05sWENJNk1DeGNJbk4wWVhKMFhDSTZNU3hjSW1keVlXSkRkWEp6YjNKY0lqcDBjblZsTEZ3aWMzZHBjR1ZjSWpwMGNuVmxMRndpYlc5MWMyVmNJanAwY25WbExGd2lkMmhsWld4Y0lqcG1ZV3h6WlN4Y0ltRjFkRzl3YkdGNVhDSTZkSEoxWlN4Y0lteHZiM0JjSWpwMGNuVmxMRndpYzJoMVptWnNaVndpT21aaGJITmxMRndpY0hKbGJHOWhaRndpT2x3aUxURmNJaXhjSW05MlpYSlFZWFZ6WlZ3aU9uUnlkV1VzWENKbGJtUlFZWFZ6WlZ3aU9tWmhiSE5sTEZ3aWFHbGtaVXhoZVdWeWMxd2lPbVpoYkhObExGd2laR2x5WENJNlhDSm9YQ0lzWENKd1lYSmhiR3hoZUUxdlpHVmNJanBjSW5OM2FYQmxYQ0lzWENKalpXNTBaWEpEYjI1MGNtOXNjMXdpT25SeWRXVXNYQ0pwYm5OMFlXNTBVMmh2ZDB4aGVXVnljMXdpT21aaGJITmxMRndpWW1kRGIyeHZjbHdpT2x3aUl6QXdNREF3TUZ3aUxGd2ljMnRwYmx3aU9sd2liWE10YzJ0cGJpMXNhV2RvZEMwelhDSXNYQ0p0YzFSbGJYQnNZWFJsWENJNlhDSmpkWE4wYjIxY0lpeGNJbTF6VkdWdGNHeGhkR1ZEYkdGemMxd2lPbHdpWENJc1hDSjFjMlZrUm05dWRITmNJanBjSWx3aWZTSjlMQ0pOVTFCaGJtVnNMbE5zYVdSbElqcDdJakVpT2lKN1hDSnBaRndpT2x3aU1Wd2lMRndpZEdsdFpXeHBibVZmYUZ3aU9qSXdNQ3hjSW1KblZHaDFiV0pjSWpwY0lpOHlNREV5THpFd0x6RXlNUzB4TlRCNE1UVXdMbXB3WjF3aUxGd2liM0prWlhKY0lqbzBMRndpWW1kY0lqcGNJaTh5TURFeUx6RXdMekV5TVM1cWNHZGNJaXhjSW1SMWNtRjBhVzl1WENJNk15eGNJbVpwYkd4TmIyUmxYQ0k2WENKbWFXeHNYQ0lzWENKaVozWmZabWxzYkcxdlpHVmNJanBjSW1acGJHeGNJaXhjSW1KbmRsOXNiMjl3WENJNmRISjFaU3hjSW1KbmRsOXRkWFJsWENJNmRISjFaU3hjSW1KbmRsOWhkWFJ2Y0dGMWMyVmNJanBtWVd4elpTeGNJbXhoZVdWeVgybGtjMXdpT2x0ZGZTSXNJaklpT2lKN1hDSnBaRndpT2pJc1hDSjBhVzFsYkdsdVpWOW9YQ0k2TWpBd0xGd2lZbWRVYUhWdFlsd2lPbHdpTHpJd01USXZNVEF2TWkweE5UQjRNVFV3TG1wd1oxd2lMRndpYjNKa1pYSmNJam95TEZ3aVltZGNJanBjSWk4eU1ERXlMekV3THpJdWFuQm5YQ0lzWENKa2RYSmhkR2x2Ymx3aU9qTXNYQ0ptYVd4c1RXOWtaVndpT2x3aVptbHNiRndpTEZ3aVltZDJYMlpwYkd4dGIyUmxYQ0k2WENKbWFXeHNYQ0lzWENKaVozWmZiRzl2Y0Z3aU9uUnlkV1VzWENKaVozWmZiWFYwWlZ3aU9uUnlkV1VzWENKaVozWmZZWFYwYjNCaGRYTmxYQ0k2Wm1Gc2MyVXNYQ0pzWVhsbGNsOXBaSE5jSWpwYlhYMGlMQ0l6SWpvaWUxd2lhV1JjSWpvekxGd2lkR2x0Wld4cGJtVmZhRndpT2pJd01DeGNJbUpuVkdoMWJXSmNJanBjSWk4eU1ERXlMekV3THpFeExURTFNSGd4TlRBdWFuQm5YQ0lzWENKdmNtUmxjbHdpT2pNc1hDSmlaMXdpT2x3aUx6SXdNVEl2TVRBdk1URXVhbkJuWENJc1hDSmtkWEpoZEdsdmJsd2lPak1zWENKbWFXeHNUVzlrWlZ3aU9sd2labWxzYkZ3aUxGd2lZbWQyWDJacGJHeHRiMlJsWENJNlhDSm1hV3hzWENJc1hDSmlaM1pmYkc5dmNGd2lPblJ5ZFdVc1hDSmlaM1pmYlhWMFpWd2lPblJ5ZFdVc1hDSmlaM1pmWVhWMGIzQmhkWE5sWENJNlptRnNjMlVzWENKc1lYbGxjbDlwWkhOY0lqcGJYWDBpTENJMElqb2llMXdpYVdSY0lqbzBMRndpZEdsdFpXeHBibVZmYUZ3aU9qSXdNQ3hjSW1KblZHaDFiV0pjSWpwY0lpOHlNREV5THpFd0x6TXRNVFV3ZURFMU1DNXFjR2RjSWl4Y0ltOXlaR1Z5WENJNk5TeGNJbUpuWENJNlhDSXZNakF4TWk4eE1DOHpMbXB3WjF3aUxGd2laSFZ5WVhScGIyNWNJam96TEZ3aVptbHNiRTF2WkdWY0lqcGNJbVpwYkd4Y0lpeGNJbUpuZGw5bWFXeHNiVzlrWlZ3aU9sd2labWxzYkZ3aUxGd2lZbWQyWDJ4dmIzQmNJanAwY25WbExGd2lZbWQyWDIxMWRHVmNJanAwY25WbExGd2lZbWQyWDJGMWRHOXdZWFZ6WlZ3aU9tWmhiSE5sTEZ3aWJHRjVaWEpmYVdSelhDSTZXMTE5SWl3aU5TSTZJbnRjSW1sa1hDSTZOU3hjSW5ScGJXVnNhVzVsWDJoY0lqb3lNREFzWENKaVoxUm9kVzFpWENJNlhDSXZNakF4TWk4eE1DODVMVEUxTUhneE5UQXVhbkJuWENJc1hDSnZjbVJsY2x3aU9qWXNYQ0ppWjF3aU9sd2lMekl3TVRJdk1UQXZPUzVxY0dkY0lpeGNJbVIxY21GMGFXOXVYQ0k2TXl4Y0ltWnBiR3hOYjJSbFhDSTZYQ0ptYVd4c1hDSXNYQ0ppWjNaZlptbHNiRzF2WkdWY0lqcGNJbVpwYkd4Y0lpeGNJbUpuZGw5c2IyOXdYQ0k2ZEhKMVpTeGNJbUpuZGw5dGRYUmxYQ0k2ZEhKMVpTeGNJbUpuZGw5aGRYUnZjR0YxYzJWY0lqcG1ZV3h6WlN4Y0lteGhlV1Z5WDJsa2Mxd2lPbHRkZlNJc0lqWWlPaUo3WENKcFpGd2lPallzWENKMGFXMWxiR2x1WlY5b1hDSTZNakF3TEZ3aVltZFVhSFZ0WWx3aU9sd2lMekl3TVRJdk1UQXZPQzB4TlRCNE1UVXdMbXB3WjF3aUxGd2liM0prWlhKY0lqb3hMRndpWW1kY0lqcGNJaTh5TURFeUx6RXdMemd1YW5CblhDSXNYQ0prZFhKaGRHbHZibHdpT2pNc1hDSm1hV3hzVFc5a1pWd2lPbHdpWm1sc2JGd2lMRndpWW1kMlgyWnBiR3h0YjJSbFhDSTZYQ0ptYVd4c1hDSXNYQ0ppWjNaZmJHOXZjRndpT25SeWRXVXNYQ0ppWjNaZmJYVjBaVndpT25SeWRXVXNYQ0ppWjNaZllYVjBiM0JoZFhObFhDSTZabUZzYzJVc1hDSnNZWGxsY2w5cFpITmNJanBiWFgwaUxDSTNJam9pZTF3aWFXUmNJam8zTEZ3aWRHbHRaV3hwYm1WZmFGd2lPakl3TUN4Y0ltSm5WR2gxYldKY0lqcGNJaTh5TURFeUx6RXdMelF0TVRVd2VERTFNQzVxY0dkY0lpeGNJbTl5WkdWeVhDSTZOeXhjSW1KblhDSTZYQ0l2TWpBeE1pOHhNQzgwTG1wd1oxd2lMRndpWkhWeVlYUnBiMjVjSWpvekxGd2labWxzYkUxdlpHVmNJanBjSW1acGJHeGNJaXhjSW1KbmRsOW1hV3hzYlc5a1pWd2lPbHdpWm1sc2JGd2lMRndpWW1kMlgyeHZiM0JjSWpwMGNuVmxMRndpWW1kMlgyMTFkR1ZjSWpwMGNuVmxMRndpWW1kMlgyRjFkRzl3WVhWelpWd2lPbVpoYkhObExGd2liR0Y1WlhKZmFXUnpYQ0k2VzExOUlpd2lPU0k2SW50Y0ltbGtYQ0k2T1N4Y0luUnBiV1ZzYVc1bFgyaGNJam95TURBc1hDSmlaMVJvZFcxaVhDSTZYQ0l2TWpBeE1pOHhNQzh4TXkweE5UQjRNVFV3TG1wd1oxd2lMRndpYjNKa1pYSmNJam93TEZ3aVltZGNJanBjSWk4eU1ERXlMekV3THpFekxtcHdaMXdpTEZ3aVpIVnlZWFJwYjI1Y0lqb3pMRndpWm1sc2JFMXZaR1ZjSWpwY0ltWnBiR3hjSWl4Y0ltSm5kbDltYVd4c2JXOWtaVndpT2x3aVptbHNiRndpTEZ3aVltZDJYMnh2YjNCY0lqcDBjblZsTEZ3aVltZDJYMjExZEdWY0lqcDBjblZsTEZ3aVltZDJYMkYxZEc5d1lYVnpaVndpT21aaGJITmxMRndpYkdGNVpYSmZhV1J6WENJNlcxMTlJaXdpTVRJaU9pSjdYQ0pwWkZ3aU9qRXlMRndpZEdsdFpXeHBibVZmYUZ3aU9qSXdNQ3hjSW1KblZHaDFiV0pjSWpwY0lpOHlNREV5THpFd0x6RTJMVEUxTUhneE5UQXVhbkJuWENJc1hDSnZjbVJsY2x3aU9qZ3NYQ0ppWjF3aU9sd2lMekl3TVRJdk1UQXZNVFl1YW5CblhDSXNYQ0prZFhKaGRHbHZibHdpT2pNc1hDSm1hV3hzVFc5a1pWd2lPbHdpWm1sc2JGd2lMRndpWW1kMlgyWnBiR3h0YjJSbFhDSTZYQ0ptYVd4c1hDSXNYQ0ppWjNaZmJHOXZjRndpT25SeWRXVXNYQ0ppWjNaZmJYVjBaVndpT25SeWRXVXNYQ0ppWjNaZllYVjBiM0JoZFhObFhDSTZabUZzYzJVc1hDSnNZWGxsY2w5cFpITmNJanBiWFgwaUxDSXhOQ0k2SW50Y0ltbGtYQ0k2TVRRc1hDSjBhVzFsYkdsdVpWOW9YQ0k2TWpBd0xGd2lZbWRVYUhWdFlsd2lPbHdpTHpJd01USXZNVEF2TVRVeExURTFNSGd4TlRBdWFuQm5YQ0lzWENKdmNtUmxjbHdpT2prc1hDSmlaMXdpT2x3aUx6SXdNVEl2TVRBdk1UVXhMbXB3WjF3aUxGd2laSFZ5WVhScGIyNWNJam96TEZ3aVptbHNiRTF2WkdWY0lqcGNJbVpwYkd4Y0lpeGNJbUpuZGw5bWFXeHNiVzlrWlZ3aU9sd2labWxzYkZ3aUxGd2lZbWQyWDJ4dmIzQmNJanAwY25WbExGd2lZbWQyWDIxMWRHVmNJanAwY25WbExGd2lZbWQyWDJGMWRHOXdZWFZ6WlZ3aU9tWmhiSE5sTEZ3aWJHRjVaWEpmYVdSelhDSTZXMTE5SW4wc0lrMVRVR0Z1Wld3dVEyOXVkSEp2YkNJNmV5SXhJam9pZTF3aWFXUmNJanBjSWpGY0lpeGNJbXhoWW1Wc1hDSTZYQ0pCY25KdmQzTmNJaXhjSW01aGJXVmNJanBjSW1GeWNtOTNjMXdpTEZ3aVlYVjBiMGhwWkdWY0lqcG1ZV3h6WlN4Y0ltOTJaWEpXYVdSbGIxd2lPblJ5ZFdVc1hDSnBibk5sZEZ3aU9uUnlkV1Y5SWl3aU5DSTZJbnRjSW1sa1hDSTZOQ3hjSW14aFltVnNYQ0k2WENKRGFYSmpiR1VnVkdsdFpYSmNJaXhjSW01aGJXVmNJanBjSW1OcGNtTnNaWFJwYldWeVhDSXNYQ0poZFhSdlNHbGtaVndpT21aaGJITmxMRndpYjNabGNsWnBaR1Z2WENJNmRISjFaU3hjSW1OdmJHOXlYQ0k2WENJak5ETTBNelF6WENJc1hDSnlZV1JwZFhOY0lqb3hNQ3hjSW5OMGNtOXJaVndpT2pNc1hDSnBibk5sZEZ3aU9uUnlkV1Y5SWl3aU5TSTZJbnRjSW1sa1hDSTZOU3hjSW14aFltVnNYQ0k2WENKTWFXNWxJRlJwYldWeVhDSXNYQ0p1WVcxbFhDSTZYQ0owYVcxbFltRnlYQ0lzWENKaGRYUnZTR2xrWlZ3aU9tWmhiSE5sTEZ3aWIzWmxjbFpwWkdWdlhDSTZkSEoxWlN4Y0ltTnZiRzl5WENJNlhDSWpSa1pHUmtaR1hDSXNYQ0ozYVdSMGFGd2lPalFzWENKaGJHbG5ibHdpT2x3aVltOTBkRzl0WENJc1hDSnBibk5sZEZ3aU9uUnlkV1Y5SWl3aU5pSTZJbnRjSW1sa1hDSTZOaXhjSW14aFltVnNYQ0k2WENKQ2RXeHNaWFJ6WENJc1hDSnVZVzFsWENJNlhDSmlkV3hzWlhSelhDSXNYQ0poZFhSdlNHbGtaVndpT25SeWRXVXNYQ0p2ZG1WeVZtbGtaVzljSWpwMGNuVmxMRndpYldGeVoybHVYQ0k2TVRBc1hDSmthWEpjSWpwY0ltaGNJaXhjSW1Gc2FXZHVYQ0k2WENKaWIzUjBiMjFjSWl4Y0ltbHVjMlYwWENJNmRISjFaWDBpZlgwPSIsInR5cGUiOiJjdXN0b20iLCJzbGlkZXNfbnVtIjoiMTAifX0sIm9yaWdpbl91cGxvYWRzX3VybCI6Imh0dHA6XC9cL2RlbW8uYXZlcnRhLm5ldFwvdGhlbWVzXC9sb3R1c1wvZHVtbXktYWdlbmN5XC93cC1jb250ZW50XC91cGxvYWRzIn0=',
83
+ 'image_dir' => '',
84
+ 'selected' => '',
85
+ 'screenshot'=> MSWP_AVERTA_ADMIN_URL . '/assets/images/starters/autoplay-slider.jpg'
86
+ ),
87
+ array(
88
+ 'label' => __( 'Fullwidth Slider with Thumbnails', 'master-slider' ),
89
+ 'id' => 'fullwith-with-thumbs-1',
90
+ 'slidertype'=> 'custom',
91
+ 'importdata'=> 'eyJzbGlkZXJzX2RhdGEiOnsiNTciOnsidGl0bGUiOiJGdWxsd2lkdGggU2xpZGVyIHdpdGggVGh1bWJuYWlscyIsInBhcmFtcyI6ImV5SnRaWFJoSWpwN0lsTmxkSFJwYm1keklXbGtjeUk2SWpFaUxDSlRaWFIwYVc1bmN5RnVaWGgwU1dRaU9qSXNJbE5zYVdSbElXbGtjeUk2SWpFc01pd3pMRFFzTlN3MkxEY3NPU3d4TWl3eE5DSXNJbE5zYVdSbElXNWxlSFJKWkNJNk1UVXNJa052Ym5SeWIyd2hhV1J6SWpvaU1Td3lMRFFzTlNJc0lrTnZiblJ5YjJ3aGJtVjRkRWxrSWpvMmZTd2lUVk5RWVc1bGJDNVRaWFIwYVc1bmN5STZleUl4SWpvaWUxd2lhV1JjSWpwY0lqRmNJaXhjSW5OdVlYQndhVzVuWENJNmRISjFaU3hjSW01aGJXVmNJanBjSWtaMWJHeDNhV1IwYUNCVGJHbGtaWElnZDJsMGFDQlVhSFZ0WW01aGFXeHpYQ0lzWENKM2FXUjBhRndpT2pnd01DeGNJbWhsYVdkb2RGd2lPalE0TUN4Y0luZHlZWEJ3WlhKWGFXUjBhRndpT2prME5TeGNJbmR5WVhCd1pYSlhhV1IwYUZWdWFYUmNJanBjSW5CNFhDSXNYQ0poZFhSdlEzSnZjRndpT21aaGJITmxMRndpZEhsd1pWd2lPbHdpWTNWemRHOXRYQ0lzWENKemJHbGtaWEpKWkZ3aU9sd2lOVGRjSWl4Y0lteGhlVzkxZEZ3aU9sd2lablZzYkhkcFpIUm9YQ0lzWENKaGRYUnZTR1ZwWjJoMFhDSTZabUZzYzJVc1hDSjBjbFpwWlhkY0lqcGNJbUpoYzJsalhDSXNYQ0p6Y0dWbFpGd2lPakl3TEZ3aWMzQmhZMlZjSWpvd0xGd2ljM1JoY25SY0lqb3hMRndpWjNKaFlrTjFjbk52Y2x3aU9uUnlkV1VzWENKemQybHdaVndpT25SeWRXVXNYQ0p0YjNWelpWd2lPblJ5ZFdVc1hDSjNhR1ZsYkZ3aU9tWmhiSE5sTEZ3aVlYVjBiM0JzWVhsY0lqcG1ZV3h6WlN4Y0lteHZiM0JjSWpwbVlXeHpaU3hjSW5Ob2RXWm1iR1ZjSWpwbVlXeHpaU3hjSW5CeVpXeHZZV1JjSWpwY0lpMHhYQ0lzWENKdmRtVnlVR0YxYzJWY0lqcDBjblZsTEZ3aVpXNWtVR0YxYzJWY0lqcG1ZV3h6WlN4Y0ltaHBaR1ZNWVhsbGNuTmNJanBtWVd4elpTeGNJbVJwY2x3aU9sd2lhRndpTEZ3aWNHRnlZV3hzWVhoTmIyUmxYQ0k2WENKemQybHdaVndpTEZ3aVkyVnVkR1Z5UTI5dWRISnZiSE5jSWpwbVlXeHpaU3hjSW1sdWMzUmhiblJUYUc5M1RHRjVaWEp6WENJNlptRnNjMlVzWENKaVowTnZiRzl5WENJNlhDSWpNREF3TURBd1hDSXNYQ0p6YTJsdVhDSTZYQ0p0Y3kxemEybHVMV3hwWjJoMExUWWdjbTkxYm1RdGMydHBibHdpTEZ3aWJYTlVaVzF3YkdGMFpWd2lPbHdpWTNWemRHOXRYQ0lzWENKdGMxUmxiWEJzWVhSbFEyeGhjM05jSWpwY0lsd2lMRndpZFhObFpFWnZiblJ6WENJNlhDSmNJbjBpZlN3aVRWTlFZVzVsYkM1VGJHbGtaU0k2ZXlJeElqb2llMXdpYVdSY0lqcGNJakZjSWl4Y0luUnBiV1ZzYVc1bFgyaGNJam95TURBc1hDSmlaMVJvZFcxaVhDSTZYQ0l2TWpBeE1pOHhNQzh4TWpFdE1UVXdlREUxTUM1cWNHZGNJaXhjSW05eVpHVnlYQ0k2TWl4Y0ltSm5YQ0k2WENJdk1qQXhNaTh4TUM4eE1qRXVhbkJuWENJc1hDSmtkWEpoZEdsdmJsd2lPak1zWENKbWFXeHNUVzlrWlZ3aU9sd2labWxzYkZ3aUxGd2lZbWQyWDJacGJHeHRiMlJsWENJNlhDSm1hV3hzWENJc1hDSmlaM1pmYkc5dmNGd2lPblJ5ZFdVc1hDSmlaM1pmYlhWMFpWd2lPblJ5ZFdVc1hDSmlaM1pmWVhWMGIzQmhkWE5sWENJNlptRnNjMlVzWENKc1lYbGxjbDlwWkhOY0lqcGJYWDBpTENJeUlqb2llMXdpYVdSY0lqb3lMRndpZEdsdFpXeHBibVZmYUZ3aU9qSXdNQ3hjSW1KblZHaDFiV0pjSWpwY0lpOHlNREV5THpFd0x6SXRNVFV3ZURFMU1DNXFjR2RjSWl4Y0ltOXlaR1Z5WENJNk1TeGNJbUpuWENJNlhDSXZNakF4TWk4eE1DOHlMbXB3WjF3aUxGd2laSFZ5WVhScGIyNWNJam96TEZ3aVptbHNiRTF2WkdWY0lqcGNJbVpwYkd4Y0lpeGNJbUpuZGw5bWFXeHNiVzlrWlZ3aU9sd2labWxzYkZ3aUxGd2lZbWQyWDJ4dmIzQmNJanAwY25WbExGd2lZbWQyWDIxMWRHVmNJanAwY25WbExGd2lZbWQyWDJGMWRHOXdZWFZ6WlZ3aU9tWmhiSE5sTEZ3aWJHRjVaWEpmYVdSelhDSTZXMTE5SWl3aU15STZJbnRjSW1sa1hDSTZNeXhjSW5ScGJXVnNhVzVsWDJoY0lqb3lNREFzWENKaVoxUm9kVzFpWENJNlhDSXZNakF4TWk4eE1DOHhNUzB4TlRCNE1UVXdMbXB3WjF3aUxGd2liM0prWlhKY0lqbzBMRndpWW1kY0lqcGNJaTh5TURFeUx6RXdMekV4TG1wd1oxd2lMRndpWkhWeVlYUnBiMjVjSWpvekxGd2labWxzYkUxdlpHVmNJanBjSW1acGJHeGNJaXhjSW1KbmRsOW1hV3hzYlc5a1pWd2lPbHdpWm1sc2JGd2lMRndpWW1kMlgyeHZiM0JjSWpwMGNuVmxMRndpWW1kMlgyMTFkR1ZjSWpwMGNuVmxMRndpWW1kMlgyRjFkRzl3WVhWelpWd2lPbVpoYkhObExGd2liR0Y1WlhKZmFXUnpYQ0k2VzExOUlpd2lOQ0k2SW50Y0ltbGtYQ0k2TkN4Y0luUnBiV1ZzYVc1bFgyaGNJam95TURBc1hDSmlaMVJvZFcxaVhDSTZYQ0l2TWpBeE1pOHhNQzh6TFRFMU1IZ3hOVEF1YW5CblhDSXNYQ0p2Y21SbGNsd2lPak1zWENKaVoxd2lPbHdpTHpJd01USXZNVEF2TXk1cWNHZGNJaXhjSW1SMWNtRjBhVzl1WENJNk15eGNJbVpwYkd4TmIyUmxYQ0k2WENKbWFXeHNYQ0lzWENKaVozWmZabWxzYkcxdlpHVmNJanBjSW1acGJHeGNJaXhjSW1KbmRsOXNiMjl3WENJNmRISjFaU3hjSW1KbmRsOXRkWFJsWENJNmRISjFaU3hjSW1KbmRsOWhkWFJ2Y0dGMWMyVmNJanBtWVd4elpTeGNJbXhoZVdWeVgybGtjMXdpT2x0ZGZTSXNJalVpT2lKN1hDSnBaRndpT2pVc1hDSjBhVzFsYkdsdVpWOW9YQ0k2TWpBd0xGd2lZbWRVYUhWdFlsd2lPbHdpTHpJd01USXZNVEF2T1MweE5UQjRNVFV3TG1wd1oxd2lMRndpYjNKa1pYSmNJam8yTEZ3aVltZGNJanBjSWk4eU1ERXlMekV3THprdWFuQm5YQ0lzWENKa2RYSmhkR2x2Ymx3aU9qTXNYQ0ptYVd4c1RXOWtaVndpT2x3aVptbHNiRndpTEZ3aVltZDJYMlpwYkd4dGIyUmxYQ0k2WENKbWFXeHNYQ0lzWENKaVozWmZiRzl2Y0Z3aU9uUnlkV1VzWENKaVozWmZiWFYwWlZ3aU9uUnlkV1VzWENKaVozWmZZWFYwYjNCaGRYTmxYQ0k2Wm1Gc2MyVXNYQ0pzWVhsbGNsOXBaSE5jSWpwYlhYMGlMQ0kySWpvaWUxd2lhV1JjSWpvMkxGd2lkR2x0Wld4cGJtVmZhRndpT2pJd01DeGNJbUpuVkdoMWJXSmNJanBjSWk4eU1ERXlMekV3THpndE1UVXdlREUxTUM1cWNHZGNJaXhjSW05eVpHVnlYQ0k2TlN4Y0ltSm5YQ0k2WENJdk1qQXhNaTh4TUM4NExtcHdaMXdpTEZ3aVpIVnlZWFJwYjI1Y0lqb3pMRndpWm1sc2JFMXZaR1ZjSWpwY0ltWnBiR3hjSWl4Y0ltSm5kbDltYVd4c2JXOWtaVndpT2x3aVptbHNiRndpTEZ3aVltZDJYMnh2YjNCY0lqcDBjblZsTEZ3aVltZDJYMjExZEdWY0lqcDBjblZsTEZ3aVltZDJYMkYxZEc5d1lYVnpaVndpT21aaGJITmxMRndpYkdGNVpYSmZhV1J6WENJNlcxMTlJaXdpTnlJNkludGNJbWxrWENJNk55eGNJblJwYldWc2FXNWxYMmhjSWpveU1EQXNYQ0ppWjFSb2RXMWlYQ0k2WENJdk1qQXhNaTh4TUM4MExURTFNSGd4TlRBdWFuQm5YQ0lzWENKdmNtUmxjbHdpT2pBc1hDSmlaMXdpT2x3aUx6SXdNVEl2TVRBdk5DNXFjR2RjSWl4Y0ltUjFjbUYwYVc5dVhDSTZNeXhjSW1acGJHeE5iMlJsWENJNlhDSm1hV3hzWENJc1hDSmlaM1pmWm1sc2JHMXZaR1ZjSWpwY0ltWnBiR3hjSWl4Y0ltSm5kbDlzYjI5d1hDSTZkSEoxWlN4Y0ltSm5kbDl0ZFhSbFhDSTZkSEoxWlN4Y0ltSm5kbDloZFhSdmNHRjFjMlZjSWpwbVlXeHpaU3hjSW14aGVXVnlYMmxrYzF3aU9sdGRmU0lzSWpraU9pSjdYQ0pwWkZ3aU9qa3NYQ0owYVcxbGJHbHVaVjlvWENJNk1qQXdMRndpWW1kVWFIVnRZbHdpT2x3aUx6SXdNVEl2TVRBdk1UTXRNVFV3ZURFMU1DNXFjR2RjSWl4Y0ltOXlaR1Z5WENJNk9DeGNJbUpuWENJNlhDSXZNakF4TWk4eE1DOHhNeTVxY0dkY0lpeGNJbVIxY21GMGFXOXVYQ0k2TXl4Y0ltWnBiR3hOYjJSbFhDSTZYQ0ptYVd4c1hDSXNYQ0ppWjNaZlptbHNiRzF2WkdWY0lqcGNJbVpwYkd4Y0lpeGNJbUpuZGw5c2IyOXdYQ0k2ZEhKMVpTeGNJbUpuZGw5dGRYUmxYQ0k2ZEhKMVpTeGNJbUpuZGw5aGRYUnZjR0YxYzJWY0lqcG1ZV3h6WlN4Y0lteGhlV1Z5WDJsa2Mxd2lPbHRkZlNJc0lqRXlJam9pZTF3aWFXUmNJam94TWl4Y0luUnBiV1ZzYVc1bFgyaGNJam95TURBc1hDSmlaMVJvZFcxaVhDSTZYQ0l2TWpBeE1pOHhNQzh4TmkweE5UQjRNVFV3TG1wd1oxd2lMRndpYjNKa1pYSmNJam81TEZ3aVltZGNJanBjSWk4eU1ERXlMekV3THpFMkxtcHdaMXdpTEZ3aVpIVnlZWFJwYjI1Y0lqb3pMRndpWm1sc2JFMXZaR1ZjSWpwY0ltWnBiR3hjSWl4Y0ltSm5kbDltYVd4c2JXOWtaVndpT2x3aVptbHNiRndpTEZ3aVltZDJYMnh2YjNCY0lqcDBjblZsTEZ3aVltZDJYMjExZEdWY0lqcDBjblZsTEZ3aVltZDJYMkYxZEc5d1lYVnpaVndpT21aaGJITmxMRndpYkdGNVpYSmZhV1J6WENJNlcxMTlJaXdpTVRRaU9pSjdYQ0pwWkZ3aU9qRTBMRndpZEdsdFpXeHBibVZmYUZ3aU9qSXdNQ3hjSW1KblZHaDFiV0pjSWpwY0lpOHlNREV5THpFd0x6RTFNUzB4TlRCNE1UVXdMbXB3WjF3aUxGd2liM0prWlhKY0lqbzNMRndpWW1kY0lqcGNJaTh5TURFeUx6RXdMekUxTVM1cWNHZGNJaXhjSW1SMWNtRjBhVzl1WENJNk15eGNJbVpwYkd4TmIyUmxYQ0k2WENKbWFXeHNYQ0lzWENKaVozWmZabWxzYkcxdlpHVmNJanBjSW1acGJHeGNJaXhjSW1KbmRsOXNiMjl3WENJNmRISjFaU3hjSW1KbmRsOXRkWFJsWENJNmRISjFaU3hjSW1KbmRsOWhkWFJ2Y0dGMWMyVmNJanBtWVd4elpTeGNJbXhoZVdWeVgybGtjMXdpT2x0ZGZTSjlMQ0pOVTFCaGJtVnNMa052Ym5SeWIyd2lPbnNpTVNJNkludGNJbWxrWENJNlhDSXhYQ0lzWENKc1lXSmxiRndpT2x3aVFYSnliM2R6WENJc1hDSnVZVzFsWENJNlhDSmhjbkp2ZDNOY0lpeGNJbUYxZEc5SWFXUmxYQ0k2Wm1Gc2MyVXNYQ0p2ZG1WeVZtbGtaVzljSWpwMGNuVmxMRndpYVc1elpYUmNJanAwY25WbGZTSXNJaklpT2lKN1hDSnBaRndpT2pJc1hDSnNZV0psYkZ3aU9sd2lRblZzYkdWMGMxd2lMRndpYm1GdFpWd2lPbHdpWW5Wc2JHVjBjMXdpTEZ3aVlYVjBiMGhwWkdWY0lqcG1ZV3h6WlN4Y0ltOTJaWEpXYVdSbGIxd2lPblJ5ZFdVc1hDSnRZWEpuYVc1Y0lqb3hNQ3hjSW1ScGNsd2lPbHdpYUZ3aUxGd2lZV3hwWjI1Y0lqcGNJbUp2ZEhSdmJWd2lMRndpYVc1elpYUmNJanAwY25WbGZTSXNJalFpT2lKN1hDSnBaRndpT2pRc1hDSnNZV0psYkZ3aU9sd2lVMk55YjJ4c1ltRnlYQ0lzWENKdVlXMWxYQ0k2WENKelkzSnZiR3hpWVhKY0lpeGNJbUYxZEc5SWFXUmxYQ0k2ZEhKMVpTeGNJbTkyWlhKV2FXUmxiMXdpT25SeWRXVXNYQ0p0WVhKbmFXNWNJam94TUN4Y0ltUnBjbHdpT2x3aWFGd2lMRndpWTI5c2IzSmNJanBjSWlNME1EUXdOREJjSWl4Y0luZHBaSFJvWENJNk5DeGNJbUZzYVdkdVhDSTZYQ0owYjNCY0lpeGNJbWx1YzJWMFhDSTZkSEoxWlgwaUxDSTFJam9pZTF3aWFXUmNJam8xTEZ3aWJHRmlaV3hjSWpwY0lsUm9kVzFpYkdsemRDOVVZV0p6WENJc1hDSnVZVzFsWENJNlhDSjBhSFZ0WW14cGMzUmNJaXhjSW1GMWRHOUlhV1JsWENJNlptRnNjMlVzWENKdmRtVnlWbWxrWlc5Y0lqcDBjblZsTEZ3aWJXRnlaMmx1WENJNk1TeGNJbk53WVdObFhDSTZNU3hjSW5kcFpIUm9YQ0k2TVRBd0xGd2lhR1ZwWjJoMFhDSTZPREFzWENKaGJHbG5ibHdpT2x3aWNtbG5hSFJjSWl4Y0ltbHVjMlYwWENJNlptRnNjMlVzWENKbWFXeHNUVzlrWlZ3aU9sd2labWxzYkZ3aWZTSjlmUT09IiwidHlwZSI6ImN1c3RvbSIsInNsaWRlc19udW0iOiIxMCJ9fSwib3JpZ2luX3VwbG9hZHNfdXJsIjoiaHR0cDpcL1wvZGVtby5hdmVydGEubmV0XC90aGVtZXNcL2xvdHVzXC9kdW1teS1hZ2VuY3lcL3dwLWNvbnRlbnRcL3VwbG9hZHMifQ==',
92
+ 'image_dir' => '',
93
+ 'selected' => '',
94
+ 'screenshot'=> MSWP_AVERTA_ADMIN_URL . '/assets/images/starters/fullwidth-slider-with-thumbs.jpg'
95
+ ),
96
+ array(
97
+ 'label' => __( 'Slider with Slide Info', 'master-slider' ),
98
+ 'id' => 'slider-with-slideinfo-1',
99
+ 'slidertype'=> 'custom',
100
+ 'importdata'=> 'eyJzbGlkZXJzX2RhdGEiOnsiNTgiOnsidGl0bGUiOiJTaW1wbGUgU2xpZGVyIHdpdGggU2xpZGUgSW5mbyIsInBhcmFtcyI6ImV5SnRaWFJoSWpwN0lsTmxkSFJwYm1keklXbGtjeUk2SWpFaUxDSlRaWFIwYVc1bmN5RnVaWGgwU1dRaU9qSXNJbE5zYVdSbElXbGtjeUk2SWpFc01pd3pMRFFzTlN3MkxEY3NPU3d4TWl3eE5DSXNJbE5zYVdSbElXNWxlSFJKWkNJNk1UVXNJa052Ym5SeWIyd2hhV1J6SWpvaU1TdzBJaXdpUTI5dWRISnZiQ0Z1WlhoMFNXUWlPalY5TENKTlUxQmhibVZzTGxObGRIUnBibWR6SWpwN0lqRWlPaUo3WENKcFpGd2lPbHdpTVZ3aUxGd2ljMjVoY0hCcGJtZGNJanAwY25WbExGd2libUZ0WlZ3aU9sd2lVMmx0Y0d4bElGTnNhV1JsY2lCM2FYUm9JRk5zYVdSbElFbHVabTljSWl4Y0luZHBaSFJvWENJNk9EQXdMRndpYUdWcFoyaDBYQ0k2TkRnd0xGd2lkM0poY0hCbGNsZHBaSFJvWENJNk9EQXdMRndpZDNKaGNIQmxjbGRwWkhSb1ZXNXBkRndpT2x3aWNIaGNJaXhjSW1GMWRHOURjbTl3WENJNlptRnNjMlVzWENKMGVYQmxYQ0k2WENKamRYTjBiMjFjSWl4Y0luTnNhV1JsY2tsa1hDSTZYQ0kxT0Z3aUxGd2liR0Y1YjNWMFhDSTZYQ0ppYjNobFpGd2lMRndpWVhWMGIwaGxhV2RvZEZ3aU9tWmhiSE5sTEZ3aWRISldhV1YzWENJNlhDSmlZWE5wWTF3aUxGd2ljM0JsWldSY0lqb3lNQ3hjSW5Od1lXTmxYQ0k2TUN4Y0luTjBZWEowWENJNk1TeGNJbWR5WVdKRGRYSnpiM0pjSWpwMGNuVmxMRndpYzNkcGNHVmNJanAwY25WbExGd2liVzkxYzJWY0lqcDBjblZsTEZ3aWQyaGxaV3hjSWpwbVlXeHpaU3hjSW1GMWRHOXdiR0Y1WENJNlptRnNjMlVzWENKc2IyOXdYQ0k2Wm1Gc2MyVXNYQ0p6YUhWbVpteGxYQ0k2Wm1Gc2MyVXNYQ0p3Y21Wc2IyRmtYQ0k2WENJdE1Wd2lMRndpYjNabGNsQmhkWE5sWENJNmRISjFaU3hjSW1WdVpGQmhkWE5sWENJNlptRnNjMlVzWENKb2FXUmxUR0Y1WlhKelhDSTZabUZzYzJVc1hDSmthWEpjSWpwY0ltaGNJaXhjSW5CaGNtRnNiR0Y0VFc5a1pWd2lPbHdpYzNkcGNHVmNJaXhjSW1ObGJuUmxja052Ym5SeWIyeHpYQ0k2ZEhKMVpTeGNJbWx1YzNSaGJuUlRhRzkzVEdGNVpYSnpYQ0k2Wm1Gc2MyVXNYQ0ppWjBOdmJHOXlYQ0k2Ym5Wc2JDeGNJbk5yYVc1Y0lqcGNJbTF6TFhOcmFXNHRaR1ZtWVhWc2RGd2lMRndpYlhOVVpXMXdiR0YwWlZ3aU9sd2lZM1Z6ZEc5dFhDSXNYQ0p0YzFSbGJYQnNZWFJsUTJ4aGMzTmNJanBjSWx3aUxGd2lkWE5sWkVadmJuUnpYQ0k2WENKY0luMGlmU3dpVFZOUVlXNWxiQzVUYkdsa1pTSTZleUl4SWpvaWUxd2lhV1JjSWpwY0lqRmNJaXhjSW5ScGJXVnNhVzVsWDJoY0lqb3lNREFzWENKaVoxUm9kVzFpWENJNlhDSXZNakF4TWk4eE1DOHhNakV0TVRVd2VERTFNQzVxY0dkY0lpeGNJbTl5WkdWeVhDSTZOQ3hjSW1KblhDSTZYQ0l2TWpBeE1pOHhNQzh4TWpFdWFuQm5YQ0lzWENKa2RYSmhkR2x2Ymx3aU9qTXNYQ0ptYVd4c1RXOWtaVndpT2x3aVptbHNiRndpTEZ3aWFXNW1iMXdpT2x3aVBHZ3lJSE4wZVd4bFBWeGNYQ0owWlhoMExXRnNhV2R1T2lCalpXNTBaWEk3WEZ4Y0lqNVRZVzF3YkdVZ1ZHbDBiR1hDb0RVOEwyZ3lQanh3SUhOMGVXeGxQVnhjWENKMFpYaDBMV0ZzYVdkdU9pQmpaVzUwWlhJN1hGeGNJajVNYjNKbGJTQnBjSE4xYlNCa2IyeHZjaUJ6YVhRZ1lXMWxkQ3dnWTI5dWMyVmpkR1YwZFhJZ1lXUnBjR2x6YVdOcGJtY2daV3hwZEN3Z2MyVmtJR1J2SUdWcGRYTnRiMlFnZEdWdGNHOXlJR2x1WTJsa2FXUjFiblFnZFhRZ2JHRmliM0psSUdWMElHUnZiRzl5WlNCdFlXZHVZU0JoYkdseGRXRXVJRlYwSUdWdWFXMGdZV1FnYldsdWFXMGdkbVZ1YVdGdExDQnhkV2x6SUc1dmMzUnlkV1FnWlhobGNtTnBkR0YwYVc5dUlIVnNiR0Z0WTI4Z2JHRmliM0pwY3lCdWFYTnBJSFYwSUdGc2FYRjFhWEFnWlhnZ1pXRWdZMjl0Ylc5a2J5QmpiMjV6WlhGMVlYUXVJRVIxYVhNZ1lYVjBaU0JwY25WeVpTQmtiMnh2Y2lCcGJpQnlaWEJ5WldobGJtUmxjbWwwSUdsdUlIWnZiSFZ3ZEdGMFpTQjJaV3hwZENCbGMzTmxJR05wYkd4MWJTQmtiMnh2Y21VZ1pYVWdablZuYVdGMElHNTFiR3hoSUhCaGNtbGhkSFZ5TGlCRmVHTmxjSFJsZFhJZ2MybHVkQ0J2WTJOaFpXTmhkQ0JqZFhCcFpHRjBZWFFnYm05dUlIQnliMmxrWlc1MExDQnpkVzUwSUdsdUlHTjFiSEJoSUhGMWFTQnZabVpwWTJsaElHUmxjMlZ5ZFc1MElHMXZiR3hwZENCaGJtbHRJR2xrSUdWemRDQnNZV0p2Y25WdExqd3ZjRDVjSWl4Y0ltSm5kbDltYVd4c2JXOWtaVndpT2x3aVptbHNiRndpTEZ3aVltZDJYMnh2YjNCY0lqcDBjblZsTEZ3aVltZDJYMjExZEdWY0lqcDBjblZsTEZ3aVltZDJYMkYxZEc5d1lYVnpaVndpT21aaGJITmxMRndpYkdGNVpYSmZhV1J6WENJNlcxMTlJaXdpTWlJNkludGNJbWxrWENJNk1peGNJblJwYldWc2FXNWxYMmhjSWpveU1EQXNYQ0ppWjFSb2RXMWlYQ0k2WENJdk1qQXhNaTh4TUM4eUxURTFNSGd4TlRBdWFuQm5YQ0lzWENKdmNtUmxjbHdpT2pJc1hDSmlaMXdpT2x3aUx6SXdNVEl2TVRBdk1pNXFjR2RjSWl4Y0ltUjFjbUYwYVc5dVhDSTZNeXhjSW1acGJHeE5iMlJsWENJNlhDSm1hV3hzWENJc1hDSnBibVp2WENJNlhDSThhRElnYzNSNWJHVTlYRnhjSW5SbGVIUXRZV3hwWjI0NklHTmxiblJsY2p0Y1hGd2lQbE5oYlhCc1pTQlVhWFJzWmNLZ016d3ZhREkrUEhBZ2MzUjViR1U5WEZ4Y0luUmxlSFF0WVd4cFoyNDZJR05sYm5SbGNqdGNYRndpUGt4dmNtVnRJR2x3YzNWdElHUnZiRzl5SUhOcGRDQmhiV1YwTENCamIyNXpaV04wWlhSMWNpQmhaR2x3YVhOcFkybHVaeUJsYkdsMExDQnpaV1FnWkc4Z1pXbDFjMjF2WkNCMFpXMXdiM0lnYVc1amFXUnBaSFZ1ZENCMWRDQnNZV0p2Y21VZ1pYUWdaRzlzYjNKbElHMWhaMjVoSUdGc2FYRjFZUzRnVlhRZ1pXNXBiU0JoWkNCdGFXNXBiU0IyWlc1cFlXMHNJSEYxYVhNZ2JtOXpkSEoxWkNCbGVHVnlZMmwwWVhScGIyNGdkV3hzWVcxamJ5QnNZV0p2Y21seklHNXBjMmtnZFhRZ1lXeHBjWFZwY0NCbGVDQmxZU0JqYjIxdGIyUnZJR052Ym5ObGNYVmhkQzRnUkhWcGN5QmhkWFJsSUdseWRYSmxJR1J2Ykc5eUlHbHVJSEpsY0hKbGFHVnVaR1Z5YVhRZ2FXNGdkbTlzZFhCMFlYUmxJSFpsYkdsMElHVnpjMlVnWTJsc2JIVnRJR1J2Ykc5eVpTQmxkU0JtZFdkcFlYUWdiblZzYkdFZ2NHRnlhV0YwZFhJdUlFVjRZMlZ3ZEdWMWNpQnphVzUwSUc5alkyRmxZMkYwSUdOMWNHbGtZWFJoZENCdWIyNGdjSEp2YVdSbGJuUXNJSE4xYm5RZ2FXNGdZM1ZzY0dFZ2NYVnBJRzltWm1samFXRWdaR1Z6WlhKMWJuUWdiVzlzYkdsMElHRnVhVzBnYVdRZ1pYTjBJR3hoWW05eWRXMHVQQzl3UGx3aUxGd2lZbWQyWDJacGJHeHRiMlJsWENJNlhDSm1hV3hzWENJc1hDSmlaM1pmYkc5dmNGd2lPblJ5ZFdVc1hDSmlaM1pmYlhWMFpWd2lPblJ5ZFdVc1hDSmlaM1pmWVhWMGIzQmhkWE5sWENJNlptRnNjMlVzWENKc1lYbGxjbDlwWkhOY0lqcGJYWDBpTENJeklqb2llMXdpYVdSY0lqb3pMRndpZEdsdFpXeHBibVZmYUZ3aU9qSXdNQ3hjSW1KblZHaDFiV0pjSWpwY0lpOHlNREV5THpFd0x6RXhMVEUxTUhneE5UQXVhbkJuWENJc1hDSnZjbVJsY2x3aU9qTXNYQ0ppWjF3aU9sd2lMekl3TVRJdk1UQXZNVEV1YW5CblhDSXNYQ0prZFhKaGRHbHZibHdpT2pNc1hDSm1hV3hzVFc5a1pWd2lPbHdpWm1sc2JGd2lMRndpYVc1bWIxd2lPbHdpUEdneUlITjBlV3hsUFZ4Y1hDSjBaWGgwTFdGc2FXZHVPaUJqWlc1MFpYSTdYRnhjSWo1VFlXMXdiR1VnVkdsMGJHWENvRFE4TDJneVBqeHdJSE4wZVd4bFBWeGNYQ0owWlhoMExXRnNhV2R1T2lCalpXNTBaWEk3WEZ4Y0lqNU1iM0psYlNCcGNITjFiU0JrYjJ4dmNpQnphWFFnWVcxbGRDd2dZMjl1YzJWamRHVjBkWElnWVdScGNHbHphV05wYm1jZ1pXeHBkQ3dnYzJWa0lHUnZJR1ZwZFhOdGIyUWdkR1Z0Y0c5eUlHbHVZMmxrYVdSMWJuUWdkWFFnYkdGaWIzSmxJR1YwSUdSdmJHOXlaU0J0WVdkdVlTQmhiR2x4ZFdFdUlGVjBJR1Z1YVcwZ1lXUWdiV2x1YVcwZ2RtVnVhV0Z0TENCeGRXbHpJRzV2YzNSeWRXUWdaWGhsY21OcGRHRjBhVzl1SUhWc2JHRnRZMjhnYkdGaWIzSnBjeUJ1YVhOcElIVjBJR0ZzYVhGMWFYQWdaWGdnWldFZ1kyOXRiVzlrYnlCamIyNXpaWEYxWVhRdUlFUjFhWE1nWVhWMFpTQnBjblZ5WlNCa2IyeHZjaUJwYmlCeVpYQnlaV2hsYm1SbGNtbDBJR2x1SUhadmJIVndkR0YwWlNCMlpXeHBkQ0JsYzNObElHTnBiR3gxYlNCa2IyeHZjbVVnWlhVZ1puVm5hV0YwSUc1MWJHeGhJSEJoY21saGRIVnlMaUJGZUdObGNIUmxkWElnYzJsdWRDQnZZMk5oWldOaGRDQmpkWEJwWkdGMFlYUWdibTl1SUhCeWIybGtaVzUwTENCemRXNTBJR2x1SUdOMWJIQmhJSEYxYVNCdlptWnBZMmxoSUdSbGMyVnlkVzUwSUcxdmJHeHBkQ0JoYm1sdElHbGtJR1Z6ZENCc1lXSnZjblZ0TGp3dmNENWNJaXhjSW1KbmRsOW1hV3hzYlc5a1pWd2lPbHdpWm1sc2JGd2lMRndpWW1kMlgyeHZiM0JjSWpwMGNuVmxMRndpWW1kMlgyMTFkR1ZjSWpwMGNuVmxMRndpWW1kMlgyRjFkRzl3WVhWelpWd2lPbVpoYkhObExGd2liR0Y1WlhKZmFXUnpYQ0k2VzExOUlpd2lOQ0k2SW50Y0ltbGtYQ0k2TkN4Y0luUnBiV1ZzYVc1bFgyaGNJam95TURBc1hDSmlaMVJvZFcxaVhDSTZYQ0l2TWpBeE1pOHhNQzh6TFRFMU1IZ3hOVEF1YW5CblhDSXNYQ0p2Y21SbGNsd2lPalVzWENKaVoxd2lPbHdpTHpJd01USXZNVEF2TXk1cWNHZGNJaXhjSW1SMWNtRjBhVzl1WENJNk15eGNJbVpwYkd4TmIyUmxYQ0k2WENKbWFXeHNYQ0lzWENKcGJtWnZYQ0k2WENJOGFESWdjM1I1YkdVOVhGeGNJblJsZUhRdFlXeHBaMjQ2SUdObGJuUmxjanRjWEZ3aVBsTmhiWEJzWlNCVWFYUnNaY0tnTmp3dmFESStQSEFnYzNSNWJHVTlYRnhjSW5SbGVIUXRZV3hwWjI0NklHTmxiblJsY2p0Y1hGd2lQa3h2Y21WdElHbHdjM1Z0SUdSdmJHOXlJSE5wZENCaGJXVjBMQ0JqYjI1elpXTjBaWFIxY2lCaFpHbHdhWE5wWTJsdVp5QmxiR2wwTENCelpXUWdaRzhnWldsMWMyMXZaQ0IwWlcxd2IzSWdhVzVqYVdScFpIVnVkQ0IxZENCc1lXSnZjbVVnWlhRZ1pHOXNiM0psSUcxaFoyNWhJR0ZzYVhGMVlTNGdWWFFnWlc1cGJTQmhaQ0J0YVc1cGJTQjJaVzVwWVcwc0lIRjFhWE1nYm05emRISjFaQ0JsZUdWeVkybDBZWFJwYjI0Z2RXeHNZVzFqYnlCc1lXSnZjbWx6SUc1cGMya2dkWFFnWVd4cGNYVnBjQ0JsZUNCbFlTQmpiMjF0YjJSdklHTnZibk5sY1hWaGRDNGdSSFZwY3lCaGRYUmxJR2x5ZFhKbElHUnZiRzl5SUdsdUlISmxjSEpsYUdWdVpHVnlhWFFnYVc0Z2RtOXNkWEIwWVhSbElIWmxiR2wwSUdWemMyVWdZMmxzYkhWdElHUnZiRzl5WlNCbGRTQm1kV2RwWVhRZ2JuVnNiR0VnY0dGeWFXRjBkWEl1SUVWNFkyVndkR1YxY2lCemFXNTBJRzlqWTJGbFkyRjBJR04xY0dsa1lYUmhkQ0J1YjI0Z2NISnZhV1JsYm5Rc0lITjFiblFnYVc0Z1kzVnNjR0VnY1hWcElHOW1abWxqYVdFZ1pHVnpaWEoxYm5RZ2JXOXNiR2wwSUdGdWFXMGdhV1FnWlhOMElHeGhZbTl5ZFcwdVBDOXdQbHdpTEZ3aVltZDJYMlpwYkd4dGIyUmxYQ0k2WENKbWFXeHNYQ0lzWENKaVozWmZiRzl2Y0Z3aU9uUnlkV1VzWENKaVozWmZiWFYwWlZ3aU9uUnlkV1VzWENKaVozWmZZWFYwYjNCaGRYTmxYQ0k2Wm1Gc2MyVXNYQ0pzWVhsbGNsOXBaSE5jSWpwYlhYMGlMQ0kxSWpvaWUxd2lhV1JjSWpvMUxGd2lkR2x0Wld4cGJtVmZhRndpT2pJd01DeGNJbUpuVkdoMWJXSmNJanBjSWk4eU1ERXlMekV3THprdE1UVXdlREUxTUM1cWNHZGNJaXhjSW05eVpHVnlYQ0k2Tml4Y0ltSm5YQ0k2WENJdk1qQXhNaTh4TUM4NUxtcHdaMXdpTEZ3aVpIVnlZWFJwYjI1Y0lqb3pMRndpWm1sc2JFMXZaR1ZjSWpwY0ltWnBiR3hjSWl4Y0ltbHVabTljSWpwY0lqeG9NaUJ6ZEhsc1pUMWNYRndpZEdWNGRDMWhiR2xuYmpvZ1kyVnVkR1Z5TzF4Y1hDSStVMkZ0Y0d4bElGUnBkR3hsd3FBM1BDOW9NajQ4Y0NCemRIbHNaVDFjWEZ3aWRHVjRkQzFoYkdsbmJqb2dZMlZ1ZEdWeU8xeGNYQ0krVEc5eVpXMGdhWEJ6ZFcwZ1pHOXNiM0lnYzJsMElHRnRaWFFzSUdOdmJuTmxZM1JsZEhWeUlHRmthWEJwYzJsamFXNW5JR1ZzYVhRc0lITmxaQ0JrYnlCbGFYVnpiVzlrSUhSbGJYQnZjaUJwYm1OcFpHbGtkVzUwSUhWMElHeGhZbTl5WlNCbGRDQmtiMnh2Y21VZ2JXRm5ibUVnWVd4cGNYVmhMaUJWZENCbGJtbHRJR0ZrSUcxcGJtbHRJSFpsYm1saGJTd2djWFZwY3lCdWIzTjBjblZrSUdWNFpYSmphWFJoZEdsdmJpQjFiR3hoYldOdklHeGhZbTl5YVhNZ2JtbHphU0IxZENCaGJHbHhkV2x3SUdWNElHVmhJR052YlcxdlpHOGdZMjl1YzJWeGRXRjBMaUJFZFdseklHRjFkR1VnYVhKMWNtVWdaRzlzYjNJZ2FXNGdjbVZ3Y21Wb1pXNWtaWEpwZENCcGJpQjJiMngxY0hSaGRHVWdkbVZzYVhRZ1pYTnpaU0JqYVd4c2RXMGdaRzlzYjNKbElHVjFJR1oxWjJsaGRDQnVkV3hzWVNCd1lYSnBZWFIxY2k0Z1JYaGpaWEIwWlhWeUlITnBiblFnYjJOallXVmpZWFFnWTNWd2FXUmhkR0YwSUc1dmJpQndjbTlwWkdWdWRDd2djM1Z1ZENCcGJpQmpkV3h3WVNCeGRXa2diMlptYVdOcFlTQmtaWE5sY25WdWRDQnRiMnhzYVhRZ1lXNXBiU0JwWkNCbGMzUWdiR0ZpYjNKMWJTNDhMM0ErWENJc1hDSmlaM1pmWm1sc2JHMXZaR1ZjSWpwY0ltWnBiR3hjSWl4Y0ltSm5kbDlzYjI5d1hDSTZkSEoxWlN4Y0ltSm5kbDl0ZFhSbFhDSTZkSEoxWlN4Y0ltSm5kbDloZFhSdmNHRjFjMlZjSWpwbVlXeHpaU3hjSW14aGVXVnlYMmxrYzF3aU9sdGRmU0lzSWpZaU9pSjdYQ0pwWkZ3aU9qWXNYQ0owYVcxbGJHbHVaVjlvWENJNk1qQXdMRndpWW1kVWFIVnRZbHdpT2x3aUx6SXdNVEl2TVRBdk9DMHhOVEI0TVRVd0xtcHdaMXdpTEZ3aWIzSmtaWEpjSWpveExGd2lZbWRjSWpwY0lpOHlNREV5THpFd0x6Z3VhbkJuWENJc1hDSmtkWEpoZEdsdmJsd2lPak1zWENKbWFXeHNUVzlrWlZ3aU9sd2labWxzYkZ3aUxGd2lhVzVtYjF3aU9sd2lQR2d5SUhOMGVXeGxQVnhjWENKMFpYaDBMV0ZzYVdkdU9pQmpaVzUwWlhJN1hGeGNJajVUWVcxd2JHVWdWR2wwYkdYQ29ESThMMmd5UGp4d0lITjBlV3hsUFZ4Y1hDSjBaWGgwTFdGc2FXZHVPaUJqWlc1MFpYSTdYRnhjSWo1TWIzSmxiU0JwY0hOMWJTQmtiMnh2Y2lCemFYUWdZVzFsZEN3Z1kyOXVjMlZqZEdWMGRYSWdZV1JwY0dsemFXTnBibWNnWld4cGRDd2djMlZrSUdSdklHVnBkWE50YjJRZ2RHVnRjRzl5SUdsdVkybGthV1IxYm5RZ2RYUWdiR0ZpYjNKbElHVjBJR1J2Ykc5eVpTQnRZV2R1WVNCaGJHbHhkV0V1SUZWMElHVnVhVzBnWVdRZ2JXbHVhVzBnZG1WdWFXRnRMQ0J4ZFdseklHNXZjM1J5ZFdRZ1pYaGxjbU5wZEdGMGFXOXVJSFZzYkdGdFkyOGdiR0ZpYjNKcGN5QnVhWE5wSUhWMElHRnNhWEYxYVhBZ1pYZ2daV0VnWTI5dGJXOWtieUJqYjI1elpYRjFZWFF1SUVSMWFYTWdZWFYwWlNCcGNuVnlaU0JrYjJ4dmNpQnBiaUJ5WlhCeVpXaGxibVJsY21sMElHbHVJSFp2YkhWd2RHRjBaU0IyWld4cGRDQmxjM05sSUdOcGJHeDFiU0JrYjJ4dmNtVWdaWFVnWm5WbmFXRjBJRzUxYkd4aElIQmhjbWxoZEhWeUxpQkZlR05sY0hSbGRYSWdjMmx1ZENCdlkyTmhaV05oZENCamRYQnBaR0YwWVhRZ2JtOXVJSEJ5YjJsa1pXNTBMQ0J6ZFc1MElHbHVJR04xYkhCaElIRjFhU0J2Wm1acFkybGhJR1JsYzJWeWRXNTBJRzF2Ykd4cGRDQmhibWx0SUdsa0lHVnpkQ0JzWVdKdmNuVnRMand2Y0Q1Y0lpeGNJbUpuZGw5bWFXeHNiVzlrWlZ3aU9sd2labWxzYkZ3aUxGd2lZbWQyWDJ4dmIzQmNJanAwY25WbExGd2lZbWQyWDIxMWRHVmNJanAwY25WbExGd2lZbWQyWDJGMWRHOXdZWFZ6WlZ3aU9tWmhiSE5sTEZ3aWJHRjVaWEpmYVdSelhDSTZXMTE5SWl3aU55STZJbnRjSW1sa1hDSTZOeXhjSW5ScGJXVnNhVzVsWDJoY0lqb3lNREFzWENKaVoxUm9kVzFpWENJNlhDSXZNakF4TWk4eE1DODBMVEUxTUhneE5UQXVhbkJuWENJc1hDSnZjbVJsY2x3aU9qY3NYQ0ppWjF3aU9sd2lMekl3TVRJdk1UQXZOQzVxY0dkY0lpeGNJbVIxY21GMGFXOXVYQ0k2TXl4Y0ltWnBiR3hOYjJSbFhDSTZYQ0ptYVd4c1hDSXNYQ0pwYm1adlhDSTZYQ0k4YURJZ2MzUjViR1U5WEZ4Y0luUmxlSFF0WVd4cFoyNDZJR05sYm5SbGNqdGNYRndpUGxOaGJYQnNaU0JVYVhSc1pjS2dPRHd2YURJK1BIQWdjM1I1YkdVOVhGeGNJblJsZUhRdFlXeHBaMjQ2SUdObGJuUmxjanRjWEZ3aVBreHZjbVZ0SUdsd2MzVnRJR1J2Ykc5eUlITnBkQ0JoYldWMExDQmpiMjV6WldOMFpYUjFjaUJoWkdsd2FYTnBZMmx1WnlCbGJHbDBMQ0J6WldRZ1pHOGdaV2wxYzIxdlpDQjBaVzF3YjNJZ2FXNWphV1JwWkhWdWRDQjFkQ0JzWVdKdmNtVWdaWFFnWkc5c2IzSmxJRzFoWjI1aElHRnNhWEYxWVM0Z1ZYUWdaVzVwYlNCaFpDQnRhVzVwYlNCMlpXNXBZVzBzSUhGMWFYTWdibTl6ZEhKMVpDQmxlR1Z5WTJsMFlYUnBiMjRnZFd4c1lXMWpieUJzWVdKdmNtbHpJRzVwYzJrZ2RYUWdZV3hwY1hWcGNDQmxlQ0JsWVNCamIyMXRiMlJ2SUdOdmJuTmxjWFZoZEM0Z1JIVnBjeUJoZFhSbElHbHlkWEpsSUdSdmJHOXlJR2x1SUhKbGNISmxhR1Z1WkdWeWFYUWdhVzRnZG05c2RYQjBZWFJsSUhabGJHbDBJR1Z6YzJVZ1kybHNiSFZ0SUdSdmJHOXlaU0JsZFNCbWRXZHBZWFFnYm5Wc2JHRWdjR0Z5YVdGMGRYSXVJRVY0WTJWd2RHVjFjaUJ6YVc1MElHOWpZMkZsWTJGMElHTjFjR2xrWVhSaGRDQnViMjRnY0hKdmFXUmxiblFzSUhOMWJuUWdhVzRnWTNWc2NHRWdjWFZwSUc5bVptbGphV0VnWkdWelpYSjFiblFnYlc5c2JHbDBJR0Z1YVcwZ2FXUWdaWE4wSUd4aFltOXlkVzB1UEM5d1Bsd2lMRndpWW1kMlgyWnBiR3h0YjJSbFhDSTZYQ0ptYVd4c1hDSXNYQ0ppWjNaZmJHOXZjRndpT25SeWRXVXNYQ0ppWjNaZmJYVjBaVndpT25SeWRXVXNYQ0ppWjNaZllYVjBiM0JoZFhObFhDSTZabUZzYzJVc1hDSnNZWGxsY2w5cFpITmNJanBiWFgwaUxDSTVJam9pZTF3aWFXUmNJam81TEZ3aWRHbHRaV3hwYm1WZmFGd2lPakl3TUN4Y0ltSm5WR2gxYldKY0lqcGNJaTh5TURFeUx6RXdMekV6TFRFMU1IZ3hOVEF1YW5CblhDSXNYQ0p2Y21SbGNsd2lPakFzWENKaVoxd2lPbHdpTHpJd01USXZNVEF2TVRNdWFuQm5YQ0lzWENKa2RYSmhkR2x2Ymx3aU9qTXNYQ0ptYVd4c1RXOWtaVndpT2x3aVptbHNiRndpTEZ3aWFXNW1iMXdpT2x3aVBHZ3lJSE4wZVd4bFBWeGNYQ0owWlhoMExXRnNhV2R1T2lCalpXNTBaWEk3WEZ4Y0lqNVRZVzF3YkdVZ1ZHbDBiR1VnTVR3dmFESStQSEFnYzNSNWJHVTlYRnhjSW5SbGVIUXRZV3hwWjI0NklHTmxiblJsY2p0Y1hGd2lQa3h2Y21WdElHbHdjM1Z0SUdSdmJHOXlJSE5wZENCaGJXVjBMQ0JqYjI1elpXTjBaWFIxY2lCaFpHbHdhWE5wWTJsdVp5QmxiR2wwTENCelpXUWdaRzhnWldsMWMyMXZaQ0IwWlcxd2IzSWdhVzVqYVdScFpIVnVkQ0IxZENCc1lXSnZjbVVnWlhRZ1pHOXNiM0psSUcxaFoyNWhJR0ZzYVhGMVlTNGdWWFFnWlc1cGJTQmhaQ0J0YVc1cGJTQjJaVzVwWVcwc0lIRjFhWE1nYm05emRISjFaQ0JsZUdWeVkybDBZWFJwYjI0Z2RXeHNZVzFqYnlCc1lXSnZjbWx6SUc1cGMya2dkWFFnWVd4cGNYVnBjQ0JsZUNCbFlTQmpiMjF0YjJSdklHTnZibk5sY1hWaGRDNGdSSFZwY3lCaGRYUmxJR2x5ZFhKbElHUnZiRzl5SUdsdUlISmxjSEpsYUdWdVpHVnlhWFFnYVc0Z2RtOXNkWEIwWVhSbElIWmxiR2wwSUdWemMyVWdZMmxzYkhWdElHUnZiRzl5WlNCbGRTQm1kV2RwWVhRZ2JuVnNiR0VnY0dGeWFXRjBkWEl1SUVWNFkyVndkR1YxY2lCemFXNTBJRzlqWTJGbFkyRjBJR04xY0dsa1lYUmhkQ0J1YjI0Z2NISnZhV1JsYm5Rc0lITjFiblFnYVc0Z1kzVnNjR0VnY1hWcElHOW1abWxqYVdFZ1pHVnpaWEoxYm5RZ2JXOXNiR2wwSUdGdWFXMGdhV1FnWlhOMElHeGhZbTl5ZFcwdVBDOXdQbHdpTEZ3aVltZDJYMlpwYkd4dGIyUmxYQ0k2WENKbWFXeHNYQ0lzWENKaVozWmZiRzl2Y0Z3aU9uUnlkV1VzWENKaVozWmZiWFYwWlZ3aU9uUnlkV1VzWENKaVozWmZZWFYwYjNCaGRYTmxYQ0k2Wm1Gc2MyVXNYQ0pzWVhsbGNsOXBaSE5jSWpwYlhYMGlMQ0l4TWlJNkludGNJbWxrWENJNk1USXNYQ0owYVcxbGJHbHVaVjlvWENJNk1qQXdMRndpWW1kVWFIVnRZbHdpT2x3aUx6SXdNVEl2TVRBdk1UWXRNVFV3ZURFMU1DNXFjR2RjSWl4Y0ltOXlaR1Z5WENJNk9DeGNJbUpuWENJNlhDSXZNakF4TWk4eE1DOHhOaTVxY0dkY0lpeGNJbVIxY21GMGFXOXVYQ0k2TXl4Y0ltWnBiR3hOYjJSbFhDSTZYQ0ptYVd4c1hDSXNYQ0pwYm1adlhDSTZYQ0k4YURJZ2MzUjViR1U5WEZ4Y0luUmxlSFF0WVd4cFoyNDZJR05sYm5SbGNqdGNYRndpUGxOaGJYQnNaU0JVYVhSc1pjS2dPVHd2YURJK1BIQWdjM1I1YkdVOVhGeGNJblJsZUhRdFlXeHBaMjQ2SUdObGJuUmxjanRjWEZ3aVBreHZjbVZ0SUdsd2MzVnRJR1J2Ykc5eUlITnBkQ0JoYldWMExDQmpiMjV6WldOMFpYUjFjaUJoWkdsd2FYTnBZMmx1WnlCbGJHbDBMQ0J6WldRZ1pHOGdaV2wxYzIxdlpDQjBaVzF3YjNJZ2FXNWphV1JwWkhWdWRDQjFkQ0JzWVdKdmNtVWdaWFFnWkc5c2IzSmxJRzFoWjI1aElHRnNhWEYxWVM0Z1ZYUWdaVzVwYlNCaFpDQnRhVzVwYlNCMlpXNXBZVzBzSUhGMWFYTWdibTl6ZEhKMVpDQmxlR1Z5WTJsMFlYUnBiMjRnZFd4c1lXMWpieUJzWVdKdmNtbHpJRzVwYzJrZ2RYUWdZV3hwY1hWcGNDQmxlQ0JsWVNCamIyMXRiMlJ2SUdOdmJuTmxjWFZoZEM0Z1JIVnBjeUJoZFhSbElHbHlkWEpsSUdSdmJHOXlJR2x1SUhKbGNISmxhR1Z1WkdWeWFYUWdhVzRnZG05c2RYQjBZWFJsSUhabGJHbDBJR1Z6YzJVZ1kybHNiSFZ0SUdSdmJHOXlaU0JsZFNCbWRXZHBZWFFnYm5Wc2JHRWdjR0Z5YVdGMGRYSXVJRVY0WTJWd2RHVjFjaUJ6YVc1MElHOWpZMkZsWTJGMElHTjFjR2xrWVhSaGRDQnViMjRnY0hKdmFXUmxiblFzSUhOMWJuUWdhVzRnWTNWc2NHRWdjWFZwSUc5bVptbGphV0VnWkdWelpYSjFiblFnYlc5c2JHbDBJR0Z1YVcwZ2FXUWdaWE4wSUd4aFltOXlkVzB1UEM5d1Bsd2lMRndpWW1kMlgyWnBiR3h0YjJSbFhDSTZYQ0ptYVd4c1hDSXNYQ0ppWjNaZmJHOXZjRndpT25SeWRXVXNYQ0ppWjNaZmJYVjBaVndpT25SeWRXVXNYQ0ppWjNaZllYVjBiM0JoZFhObFhDSTZabUZzYzJVc1hDSnNZWGxsY2w5cFpITmNJanBiWFgwaUxDSXhOQ0k2SW50Y0ltbGtYQ0k2TVRRc1hDSjBhVzFsYkdsdVpWOW9YQ0k2TWpBd0xGd2lZbWRVYUhWdFlsd2lPbHdpTHpJd01USXZNVEF2TVRVeExURTFNSGd4TlRBdWFuQm5YQ0lzWENKdmNtUmxjbHdpT2prc1hDSmlaMXdpT2x3aUx6SXdNVEl2TVRBdk1UVXhMbXB3WjF3aUxGd2laSFZ5WVhScGIyNWNJam96TEZ3aVptbHNiRTF2WkdWY0lqcGNJbVpwYkd4Y0lpeGNJbWx1Wm05Y0lqcGNJanhvTWlCemRIbHNaVDFjWEZ3aWRHVjRkQzFoYkdsbmJqb2dZMlZ1ZEdWeU8xeGNYQ0krVTJGdGNHeGxJRlJwZEd4bHdxQXhNRHd2YURJK1BIQWdjM1I1YkdVOVhGeGNJblJsZUhRdFlXeHBaMjQ2SUdObGJuUmxjanRjWEZ3aVBreHZjbVZ0SUdsd2MzVnRJR1J2Ykc5eUlITnBkQ0JoYldWMExDQmpiMjV6WldOMFpYUjFjaUJoWkdsd2FYTnBZMmx1WnlCbGJHbDBMQ0J6WldRZ1pHOGdaV2wxYzIxdlpDQjBaVzF3YjNJZ2FXNWphV1JwWkhWdWRDQjFkQ0JzWVdKdmNtVWdaWFFnWkc5c2IzSmxJRzFoWjI1aElHRnNhWEYxWVM0Z1ZYUWdaVzVwYlNCaFpDQnRhVzVwYlNCMlpXNXBZVzBzSUhGMWFYTWdibTl6ZEhKMVpDQmxlR1Z5WTJsMFlYUnBiMjRnZFd4c1lXMWpieUJzWVdKdmNtbHpJRzVwYzJrZ2RYUWdZV3hwY1hWcGNDQmxlQ0JsWVNCamIyMXRiMlJ2SUdOdmJuTmxjWFZoZEM0Z1JIVnBjeUJoZFhSbElHbHlkWEpsSUdSdmJHOXlJR2x1SUhKbGNISmxhR1Z1WkdWeWFYUWdhVzRnZG05c2RYQjBZWFJsSUhabGJHbDBJR1Z6YzJVZ1kybHNiSFZ0SUdSdmJHOXlaU0JsZFNCbWRXZHBZWFFnYm5Wc2JHRWdjR0Z5YVdGMGRYSXVJRVY0WTJWd2RHVjFjaUJ6YVc1MElHOWpZMkZsWTJGMElHTjFjR2xrWVhSaGRDQnViMjRnY0hKdmFXUmxiblFzSUhOMWJuUWdhVzRnWTNWc2NHRWdjWFZwSUc5bVptbGphV0VnWkdWelpYSjFiblFnYlc5c2JHbDBJR0Z1YVcwZ2FXUWdaWE4wSUd4aFltOXlkVzB1UEM5d1Bsd2lMRndpWW1kMlgyWnBiR3h0YjJSbFhDSTZYQ0ptYVd4c1hDSXNYQ0ppWjNaZmJHOXZjRndpT25SeWRXVXNYQ0ppWjNaZmJYVjBaVndpT25SeWRXVXNYQ0ppWjNaZllYVjBiM0JoZFhObFhDSTZabUZzYzJVc1hDSnNZWGxsY2w5cFpITmNJanBiWFgwaWZTd2lUVk5RWVc1bGJDNURiMjUwY205c0lqcDdJakVpT2lKN1hDSnBaRndpT2x3aU1Wd2lMRndpYkdGaVpXeGNJanBjSWtGeWNtOTNjMXdpTEZ3aWJtRnRaVndpT2x3aVlYSnliM2R6WENJc1hDSmhkWFJ2U0dsa1pWd2lPbVpoYkhObExGd2liM1psY2xacFpHVnZYQ0k2ZEhKMVpTeGNJbWx1YzJWMFhDSTZkSEoxWlgwaUxDSTBJam9pZTF3aWFXUmNJam8wTEZ3aWJHRmlaV3hjSWpwY0lsTnNhV1JsSUVsdVptOWNJaXhjSW01aGJXVmNJanBjSW5Oc2FXUmxhVzVtYjF3aUxGd2lZWFYwYjBocFpHVmNJanBtWVd4elpTeGNJbTkyWlhKV2FXUmxiMXdpT25SeWRXVXNYQ0p0WVhKbmFXNWNJam94TUN4Y0ltRnNhV2R1WENJNlhDSmliM1IwYjIxY0lpeGNJbWx1YzJWMFhDSTZabUZzYzJWOUluMTkiLCJ0eXBlIjoiY3VzdG9tIiwic2xpZGVzX251bSI6IjEwIn19LCJvcmlnaW5fdXBsb2Fkc191cmwiOiJodHRwOlwvXC9kZW1vLmF2ZXJ0YS5uZXRcL3RoZW1lc1wvbG90dXNcL2R1bW15LWFnZW5jeVwvd3AtY29udGVudFwvdXBsb2FkcyJ9',
101
+ 'image_dir' => '',
102
+ 'selected' => '',
103
+ 'screenshot'=> MSWP_AVERTA_ADMIN_URL . '/assets/images/starters/slider-with-slide-info.jpg'
104
+ ),
105
+ array(
106
+ 'label' => __( 'Slider with Slide Info V2', 'master-slider' ),
107
+ 'id' => 'slider-with-slideinfo-2',
108
+ 'slidertype'=> 'custom',
109
+ 'importdata'=> 'eyJzbGlkZXJzX2RhdGEiOnsiNTkiOnsidGl0bGUiOiJTaW1wbGUgU2xpZGVyIHdpdGggU2xpZGUgSW5mbyBWMiIsInBhcmFtcyI6ImV5SnRaWFJoSWpwN0lsTmxkSFJwYm1keklXbGtjeUk2SWpFaUxDSlRaWFIwYVc1bmN5RnVaWGgwU1dRaU9qSXNJbE5zYVdSbElXbGtjeUk2SWpFc01pd3pMRFFzTlN3MkxEY3NPU3d4TWl3eE5DSXNJbE5zYVdSbElXNWxlSFJKWkNJNk1UWXNJa052Ym5SeWIyd2hhV1J6SWpvaU1TdzBMRFVzTmlJc0lrTnZiblJ5YjJ3aGJtVjRkRWxrSWpvM2ZTd2lUVk5RWVc1bGJDNVRaWFIwYVc1bmN5STZleUl4SWpvaWUxd2lhV1JjSWpwY0lqRmNJaXhjSW5OdVlYQndhVzVuWENJNmRISjFaU3hjSW01aGJXVmNJanBjSWxOcGJYQnNaU0JUYkdsa1pYSWdkMmwwYUNCVGJHbGtaU0JKYm1adklGWXlYQ0lzWENKM2FXUjBhRndpT2pnd01DeGNJbWhsYVdkb2RGd2lPalE0TUN4Y0luZHlZWEJ3WlhKWGFXUjBhRndpT2pFd05qQXNYQ0ozY21Gd2NHVnlWMmxrZEdoVmJtbDBYQ0k2WENKd2VGd2lMRndpWVhWMGIwTnliM0JjSWpwbVlXeHpaU3hjSW5SNWNHVmNJanBjSW1OMWMzUnZiVndpTEZ3aWMyeHBaR1Z5U1dSY0lqcGNJalU1WENJc1hDSnNZWGx2ZFhSY0lqcGNJbUp2ZUdWa1hDSXNYQ0poZFhSdlNHVnBaMmgwWENJNlptRnNjMlVzWENKMGNsWnBaWGRjSWpwY0ltSmhjMmxqWENJc1hDSnpjR1ZsWkZ3aU9qSXdMRndpYzNCaFkyVmNJam93TEZ3aWMzUmhjblJjSWpveExGd2laM0poWWtOMWNuTnZjbHdpT25SeWRXVXNYQ0p6ZDJsd1pWd2lPblJ5ZFdVc1hDSnRiM1Z6WlZ3aU9uUnlkV1VzWENKM2FHVmxiRndpT21aaGJITmxMRndpWVhWMGIzQnNZWGxjSWpwbVlXeHpaU3hjSW14dmIzQmNJanBtWVd4elpTeGNJbk5vZFdabWJHVmNJanBtWVd4elpTeGNJbkJ5Wld4dllXUmNJanBjSWkweFhDSXNYQ0p2ZG1WeVVHRjFjMlZjSWpwMGNuVmxMRndpWlc1a1VHRjFjMlZjSWpwbVlXeHpaU3hjSW1ocFpHVk1ZWGxsY25OY0lqcG1ZV3h6WlN4Y0ltUnBjbHdpT2x3aWFGd2lMRndpY0dGeVlXeHNZWGhOYjJSbFhDSTZYQ0p6ZDJsd1pWd2lMRndpWTJWdWRHVnlRMjl1ZEhKdmJITmNJanAwY25WbExGd2lhVzV6ZEdGdWRGTm9iM2RNWVhsbGNuTmNJanBtWVd4elpTeGNJbUpuUTI5c2IzSmNJanBjSWlNd01EQXdNREJjSWl4Y0luTnJhVzVjSWpwY0ltMXpMWE5yYVc0dGJHbG5hSFF0TWx3aUxGd2liWE5VWlcxd2JHRjBaVndpT2x3aVkzVnpkRzl0WENJc1hDSnRjMVJsYlhCc1lYUmxRMnhoYzNOY0lqcGNJbHdpTEZ3aWRYTmxaRVp2Ym5SelhDSTZYQ0pjSW4waWZTd2lUVk5RWVc1bGJDNVRiR2xrWlNJNmV5SXhJam9pZTF3aWFXUmNJanBjSWpGY0lpeGNJblJwYldWc2FXNWxYMmhjSWpveU1EQXNYQ0ppWjFSb2RXMWlYQ0k2WENJdk1qQXhNaTh4TUM4eE1qRXRNVFV3ZURFMU1DNXFjR2RjSWl4Y0ltOXlaR1Z5WENJNk5DeGNJbUpuWENJNlhDSXZNakF4TWk4eE1DOHhNakV1YW5CblhDSXNYQ0prZFhKaGRHbHZibHdpT2pNc1hDSm1hV3hzVFc5a1pWd2lPbHdpWm1sc2JGd2lMRndpYVc1bWIxd2lPbHdpUEdneUlITjBlV3hsUFZ4Y1hDSjBaWGgwTFdGc2FXZHVPaUJzWldaME8xeGNYQ0krVTJGdGNHeGxJRlJwZEd4bHdxQTFQQzlvTWo0OGNDQnpkSGxzWlQxY1hGd2lkR1Y0ZEMxaGJHbG5iam9nYkdWbWREdGNYRndpUGt4dmNtVnRJR2x3YzNWdElHUnZiRzl5SUhOcGRDQmhiV1YwTENCamIyNXpaV04wWlhSMWNpQmhaR2x3YVhOcFkybHVaeUJsYkdsMExDQnpaV1FnWkc4Z1pXbDFjMjF2WkNCMFpXMXdiM0lnYVc1amFXUnBaSFZ1ZENCMWRDQnNZV0p2Y21VZ1pYUWdaRzlzYjNKbElHMWhaMjVoSUdGc2FYRjFZUzRnVlhRZ1pXNXBiU0JoWkNCdGFXNXBiU0IyWlc1cFlXMHNJSEYxYVhNZ2JtOXpkSEoxWkNCbGVHVnlZMmwwWVhScGIyNGdkV3hzWVcxamJ5QnNZV0p2Y21seklHNXBjMmtnZFhRZ1lXeHBjWFZwY0NCbGVDQmxZU0JqYjIxdGIyUnZJR052Ym5ObGNYVmhkQzRnUkhWcGN5QmhkWFJsSUdseWRYSmxJR1J2Ykc5eUlHbHVJSEpsY0hKbGFHVnVaR1Z5YVhRZ2FXNGdkbTlzZFhCMFlYUmxJSFpsYkdsMElHVnpjMlVnWTJsc2JIVnRJR1J2Ykc5eVpTQmxkU0JtZFdkcFlYUWdiblZzYkdFZ2NHRnlhV0YwZFhJdUlFVjRZMlZ3ZEdWMWNpQnphVzUwSUc5alkyRmxZMkYwSUdOMWNHbGtZWFJoZENCdWIyNGdjSEp2YVdSbGJuUXNJSE4xYm5RZ2FXNGdZM1ZzY0dFZ2NYVnBJRzltWm1samFXRWdaR1Z6WlhKMWJuUWdiVzlzYkdsMElHRnVhVzBnYVdRZ1pYTjBJR3hoWW05eWRXMHVQQzl3UGx3aUxGd2lZbWQyWDJacGJHeHRiMlJsWENJNlhDSm1hV3hzWENJc1hDSmlaM1pmYkc5dmNGd2lPblJ5ZFdVc1hDSmlaM1pmYlhWMFpWd2lPblJ5ZFdVc1hDSmlaM1pmWVhWMGIzQmhkWE5sWENJNlptRnNjMlVzWENKc1lYbGxjbDlwWkhOY0lqcGJYWDBpTENJeUlqb2llMXdpYVdSY0lqb3lMRndpZEdsdFpXeHBibVZmYUZ3aU9qSXdNQ3hjSW1KblZHaDFiV0pjSWpwY0lpOHlNREV5THpFd0x6SXRNVFV3ZURFMU1DNXFjR2RjSWl4Y0ltOXlaR1Z5WENJNk1peGNJbUpuWENJNlhDSXZNakF4TWk4eE1DOHlMbXB3WjF3aUxGd2laSFZ5WVhScGIyNWNJam96TEZ3aVptbHNiRTF2WkdWY0lqcGNJbVpwYkd4Y0lpeGNJbWx1Wm05Y0lqcGNJanhvTWlCemRIbHNaVDFjWEZ3aWRHVjRkQzFoYkdsbmJqb2diR1ZtZER0Y1hGd2lQbE5oYlhCc1pTQlVhWFJzWmNLZ016d3ZhREkrUEhBZ2MzUjViR1U5WEZ4Y0luUmxlSFF0WVd4cFoyNDZJR3hsWm5RN1hGeGNJajVNYjNKbGJTQnBjSE4xYlNCa2IyeHZjaUJ6YVhRZ1lXMWxkQ3dnWTI5dWMyVmpkR1YwZFhJZ1lXUnBjR2x6YVdOcGJtY2daV3hwZEN3Z2MyVmtJR1J2SUdWcGRYTnRiMlFnZEdWdGNHOXlJR2x1WTJsa2FXUjFiblFnZFhRZ2JHRmliM0psSUdWMElHUnZiRzl5WlNCdFlXZHVZU0JoYkdseGRXRXVJRlYwSUdWdWFXMGdZV1FnYldsdWFXMGdkbVZ1YVdGdExDQnhkV2x6SUc1dmMzUnlkV1FnWlhobGNtTnBkR0YwYVc5dUlIVnNiR0Z0WTI4Z2JHRmliM0pwY3lCdWFYTnBJSFYwSUdGc2FYRjFhWEFnWlhnZ1pXRWdZMjl0Ylc5a2J5QmpiMjV6WlhGMVlYUXVJRVIxYVhNZ1lYVjBaU0JwY25WeVpTQmtiMnh2Y2lCcGJpQnlaWEJ5WldobGJtUmxjbWwwSUdsdUlIWnZiSFZ3ZEdGMFpTQjJaV3hwZENCbGMzTmxJR05wYkd4MWJTQmtiMnh2Y21VZ1pYVWdablZuYVdGMElHNTFiR3hoSUhCaGNtbGhkSFZ5TGlCRmVHTmxjSFJsZFhJZ2MybHVkQ0J2WTJOaFpXTmhkQ0JqZFhCcFpHRjBZWFFnYm05dUlIQnliMmxrWlc1MExDQnpkVzUwSUdsdUlHTjFiSEJoSUhGMWFTQnZabVpwWTJsaElHUmxjMlZ5ZFc1MElHMXZiR3hwZENCaGJtbHRJR2xrSUdWemRDQnNZV0p2Y25WdExqd3ZjRDVjSWl4Y0ltSm5kbDltYVd4c2JXOWtaVndpT2x3aVptbHNiRndpTEZ3aVltZDJYMnh2YjNCY0lqcDBjblZsTEZ3aVltZDJYMjExZEdWY0lqcDBjblZsTEZ3aVltZDJYMkYxZEc5d1lYVnpaVndpT21aaGJITmxMRndpYkdGNVpYSmZhV1J6WENJNlcxMTlJaXdpTXlJNkludGNJbWxrWENJNk15eGNJblJwYldWc2FXNWxYMmhjSWpveU1EQXNYQ0ppWjFSb2RXMWlYQ0k2WENJdk1qQXhNaTh4TUM4eE1TMHhOVEI0TVRVd0xtcHdaMXdpTEZ3aWIzSmtaWEpjSWpvekxGd2lZbWRjSWpwY0lpOHlNREV5THpFd0x6RXhMbXB3WjF3aUxGd2laSFZ5WVhScGIyNWNJam96TEZ3aVptbHNiRTF2WkdWY0lqcGNJbVpwYkd4Y0lpeGNJbWx1Wm05Y0lqcGNJanhvTWlCemRIbHNaVDFjWEZ3aWRHVjRkQzFoYkdsbmJqb2diR1ZtZER0Y1hGd2lQbE5oYlhCc1pTQlVhWFJzWmNLZ05Ed3ZhREkrUEhBZ2MzUjViR1U5WEZ4Y0luUmxlSFF0WVd4cFoyNDZJR3hsWm5RN1hGeGNJajVNYjNKbGJTQnBjSE4xYlNCa2IyeHZjaUJ6YVhRZ1lXMWxkQ3dnWTI5dWMyVmpkR1YwZFhJZ1lXUnBjR2x6YVdOcGJtY2daV3hwZEN3Z2MyVmtJR1J2SUdWcGRYTnRiMlFnZEdWdGNHOXlJR2x1WTJsa2FXUjFiblFnZFhRZ2JHRmliM0psSUdWMElHUnZiRzl5WlNCdFlXZHVZU0JoYkdseGRXRXVJRlYwSUdWdWFXMGdZV1FnYldsdWFXMGdkbVZ1YVdGdExDQnhkV2x6SUc1dmMzUnlkV1FnWlhobGNtTnBkR0YwYVc5dUlIVnNiR0Z0WTI4Z2JHRmliM0pwY3lCdWFYTnBJSFYwSUdGc2FYRjFhWEFnWlhnZ1pXRWdZMjl0Ylc5a2J5QmpiMjV6WlhGMVlYUXVJRVIxYVhNZ1lYVjBaU0JwY25WeVpTQmtiMnh2Y2lCcGJpQnlaWEJ5WldobGJtUmxjbWwwSUdsdUlIWnZiSFZ3ZEdGMFpTQjJaV3hwZENCbGMzTmxJR05wYkd4MWJTQmtiMnh2Y21VZ1pYVWdablZuYVdGMElHNTFiR3hoSUhCaGNtbGhkSFZ5TGlCRmVHTmxjSFJsZFhJZ2MybHVkQ0J2WTJOaFpXTmhkQ0JqZFhCcFpHRjBZWFFnYm05dUlIQnliMmxrWlc1MExDQnpkVzUwSUdsdUlHTjFiSEJoSUhGMWFTQnZabVpwWTJsaElHUmxjMlZ5ZFc1MElHMXZiR3hwZENCaGJtbHRJR2xrSUdWemRDQnNZV0p2Y25WdExqd3ZjRDVjSWl4Y0ltSm5kbDltYVd4c2JXOWtaVndpT2x3aVptbHNiRndpTEZ3aVltZDJYMnh2YjNCY0lqcDBjblZsTEZ3aVltZDJYMjExZEdWY0lqcDBjblZsTEZ3aVltZDJYMkYxZEc5d1lYVnpaVndpT21aaGJITmxMRndpYkdGNVpYSmZhV1J6WENJNlcxMTlJaXdpTkNJNkludGNJbWxrWENJNk5DeGNJblJwYldWc2FXNWxYMmhjSWpveU1EQXNYQ0ppWjFSb2RXMWlYQ0k2WENJdk1qQXhNaTh4TUM4ekxURTFNSGd4TlRBdWFuQm5YQ0lzWENKdmNtUmxjbHdpT2pVc1hDSmlaMXdpT2x3aUx6SXdNVEl2TVRBdk15NXFjR2RjSWl4Y0ltUjFjbUYwYVc5dVhDSTZNeXhjSW1acGJHeE5iMlJsWENJNlhDSm1hV3hzWENJc1hDSnBibVp2WENJNlhDSThhRElnYzNSNWJHVTlYRnhjSW5SbGVIUXRZV3hwWjI0NklHeGxablE3WEZ4Y0lqNVRZVzF3YkdVZ1ZHbDBiR1hDb0RZOEwyZ3lQanh3SUhOMGVXeGxQVnhjWENKMFpYaDBMV0ZzYVdkdU9pQnNaV1owTzF4Y1hDSStURzl5WlcwZ2FYQnpkVzBnWkc5c2IzSWdjMmwwSUdGdFpYUXNJR052Ym5ObFkzUmxkSFZ5SUdGa2FYQnBjMmxqYVc1bklHVnNhWFFzSUhObFpDQmtieUJsYVhWemJXOWtJSFJsYlhCdmNpQnBibU5wWkdsa2RXNTBJSFYwSUd4aFltOXlaU0JsZENCa2IyeHZjbVVnYldGbmJtRWdZV3hwY1hWaExpQlZkQ0JsYm1sdElHRmtJRzFwYm1sdElIWmxibWxoYlN3Z2NYVnBjeUJ1YjNOMGNuVmtJR1Y0WlhKamFYUmhkR2x2YmlCMWJHeGhiV052SUd4aFltOXlhWE1nYm1semFTQjFkQ0JoYkdseGRXbHdJR1Y0SUdWaElHTnZiVzF2Wkc4Z1kyOXVjMlZ4ZFdGMExpQkVkV2x6SUdGMWRHVWdhWEoxY21VZ1pHOXNiM0lnYVc0Z2NtVndjbVZvWlc1a1pYSnBkQ0JwYmlCMmIyeDFjSFJoZEdVZ2RtVnNhWFFnWlhOelpTQmphV3hzZFcwZ1pHOXNiM0psSUdWMUlHWjFaMmxoZENCdWRXeHNZU0J3WVhKcFlYUjFjaTRnUlhoalpYQjBaWFZ5SUhOcGJuUWdiMk5qWVdWallYUWdZM1Z3YVdSaGRHRjBJRzV2YmlCd2NtOXBaR1Z1ZEN3Z2MzVnVkQ0JwYmlCamRXeHdZU0J4ZFdrZ2IyWm1hV05wWVNCa1pYTmxjblZ1ZENCdGIyeHNhWFFnWVc1cGJTQnBaQ0JsYzNRZ2JHRmliM0oxYlM0OEwzQStYQ0lzWENKaVozWmZabWxzYkcxdlpHVmNJanBjSW1acGJHeGNJaXhjSW1KbmRsOXNiMjl3WENJNmRISjFaU3hjSW1KbmRsOXRkWFJsWENJNmRISjFaU3hjSW1KbmRsOWhkWFJ2Y0dGMWMyVmNJanBtWVd4elpTeGNJbXhoZVdWeVgybGtjMXdpT2x0ZGZTSXNJalVpT2lKN1hDSnBaRndpT2pVc1hDSjBhVzFsYkdsdVpWOW9YQ0k2TWpBd0xGd2lZbWRVYUhWdFlsd2lPbHdpTHpJd01USXZNVEF2T1MweE5UQjRNVFV3TG1wd1oxd2lMRndpYjNKa1pYSmNJam8yTEZ3aVltZGNJanBjSWk4eU1ERXlMekV3THprdWFuQm5YQ0lzWENKa2RYSmhkR2x2Ymx3aU9qTXNYQ0ptYVd4c1RXOWtaVndpT2x3aVptbHNiRndpTEZ3aWFXNW1iMXdpT2x3aVBHZ3lJSE4wZVd4bFBWeGNYQ0owWlhoMExXRnNhV2R1T2lCc1pXWjBPMXhjWENJK1UyRnRjR3hsSUZScGRHeGx3cUEzUEM5b01qNDhjQ0J6ZEhsc1pUMWNYRndpZEdWNGRDMWhiR2xuYmpvZ2JHVm1kRHRjWEZ3aVBreHZjbVZ0SUdsd2MzVnRJR1J2Ykc5eUlITnBkQ0JoYldWMExDQmpiMjV6WldOMFpYUjFjaUJoWkdsd2FYTnBZMmx1WnlCbGJHbDBMQ0J6WldRZ1pHOGdaV2wxYzIxdlpDQjBaVzF3YjNJZ2FXNWphV1JwWkhWdWRDQjFkQ0JzWVdKdmNtVWdaWFFnWkc5c2IzSmxJRzFoWjI1aElHRnNhWEYxWVM0Z1ZYUWdaVzVwYlNCaFpDQnRhVzVwYlNCMlpXNXBZVzBzSUhGMWFYTWdibTl6ZEhKMVpDQmxlR1Z5WTJsMFlYUnBiMjRnZFd4c1lXMWpieUJzWVdKdmNtbHpJRzVwYzJrZ2RYUWdZV3hwY1hWcGNDQmxlQ0JsWVNCamIyMXRiMlJ2SUdOdmJuTmxjWFZoZEM0Z1JIVnBjeUJoZFhSbElHbHlkWEpsSUdSdmJHOXlJR2x1SUhKbGNISmxhR1Z1WkdWeWFYUWdhVzRnZG05c2RYQjBZWFJsSUhabGJHbDBJR1Z6YzJVZ1kybHNiSFZ0SUdSdmJHOXlaU0JsZFNCbWRXZHBZWFFnYm5Wc2JHRWdjR0Z5YVdGMGRYSXVJRVY0WTJWd2RHVjFjaUJ6YVc1MElHOWpZMkZsWTJGMElHTjFjR2xrWVhSaGRDQnViMjRnY0hKdmFXUmxiblFzSUhOMWJuUWdhVzRnWTNWc2NHRWdjWFZwSUc5bVptbGphV0VnWkdWelpYSjFiblFnYlc5c2JHbDBJR0Z1YVcwZ2FXUWdaWE4wSUd4aFltOXlkVzB1UEM5d1Bsd2lMRndpWW1kMlgyWnBiR3h0YjJSbFhDSTZYQ0ptYVd4c1hDSXNYQ0ppWjNaZmJHOXZjRndpT25SeWRXVXNYQ0ppWjNaZmJYVjBaVndpT25SeWRXVXNYQ0ppWjNaZllYVjBiM0JoZFhObFhDSTZabUZzYzJVc1hDSnNZWGxsY2w5cFpITmNJanBiWFgwaUxDSTJJam9pZTF3aWFXUmNJam8yTEZ3aWRHbHRaV3hwYm1WZmFGd2lPakl3TUN4Y0ltSm5WR2gxYldKY0lqcGNJaTh5TURFeUx6RXdMemd0TVRVd2VERTFNQzVxY0dkY0lpeGNJbTl5WkdWeVhDSTZNU3hjSW1KblhDSTZYQ0l2TWpBeE1pOHhNQzg0TG1wd1oxd2lMRndpWkhWeVlYUnBiMjVjSWpvekxGd2labWxzYkUxdlpHVmNJanBjSW1acGJHeGNJaXhjSW1sdVptOWNJanBjSWp4b01pQnpkSGxzWlQxY1hGd2lkR1Y0ZEMxaGJHbG5iam9nYkdWbWREdGNYRndpUGxOaGJYQnNaU0JVYVhSc1pjS2dNand2YURJK1BIQWdjM1I1YkdVOVhGeGNJblJsZUhRdFlXeHBaMjQ2SUd4bFpuUTdYRnhjSWo1TWIzSmxiU0JwY0hOMWJTQmtiMnh2Y2lCemFYUWdZVzFsZEN3Z1kyOXVjMlZqZEdWMGRYSWdZV1JwY0dsemFXTnBibWNnWld4cGRDd2djMlZrSUdSdklHVnBkWE50YjJRZ2RHVnRjRzl5SUdsdVkybGthV1IxYm5RZ2RYUWdiR0ZpYjNKbElHVjBJR1J2Ykc5eVpTQnRZV2R1WVNCaGJHbHhkV0V1SUZWMElHVnVhVzBnWVdRZ2JXbHVhVzBnZG1WdWFXRnRMQ0J4ZFdseklHNXZjM1J5ZFdRZ1pYaGxjbU5wZEdGMGFXOXVJSFZzYkdGdFkyOGdiR0ZpYjNKcGN5QnVhWE5wSUhWMElHRnNhWEYxYVhBZ1pYZ2daV0VnWTI5dGJXOWtieUJqYjI1elpYRjFZWFF1SUVSMWFYTWdZWFYwWlNCcGNuVnlaU0JrYjJ4dmNpQnBiaUJ5WlhCeVpXaGxibVJsY21sMElHbHVJSFp2YkhWd2RHRjBaU0IyWld4cGRDQmxjM05sSUdOcGJHeDFiU0JrYjJ4dmNtVWdaWFVnWm5WbmFXRjBJRzUxYkd4aElIQmhjbWxoZEhWeUxpQkZlR05sY0hSbGRYSWdjMmx1ZENCdlkyTmhaV05oZENCamRYQnBaR0YwWVhRZ2JtOXVJSEJ5YjJsa1pXNTBMQ0J6ZFc1MElHbHVJR04xYkhCaElIRjFhU0J2Wm1acFkybGhJR1JsYzJWeWRXNTBJRzF2Ykd4cGRDQmhibWx0SUdsa0lHVnpkQ0JzWVdKdmNuVnRMand2Y0Q1Y0lpeGNJbUpuZGw5bWFXeHNiVzlrWlZ3aU9sd2labWxzYkZ3aUxGd2lZbWQyWDJ4dmIzQmNJanAwY25WbExGd2lZbWQyWDIxMWRHVmNJanAwY25WbExGd2lZbWQyWDJGMWRHOXdZWFZ6WlZ3aU9tWmhiSE5sTEZ3aWJHRjVaWEpmYVdSelhDSTZXMTE5SWl3aU55STZJbnRjSW1sa1hDSTZOeXhjSW5ScGJXVnNhVzVsWDJoY0lqb3lNREFzWENKaVoxUm9kVzFpWENJNlhDSXZNakF4TWk4eE1DODBMVEUxTUhneE5UQXVhbkJuWENJc1hDSnZjbVJsY2x3aU9qY3NYQ0ppWjF3aU9sd2lMekl3TVRJdk1UQXZOQzVxY0dkY0lpeGNJbVIxY21GMGFXOXVYQ0k2TXl4Y0ltWnBiR3hOYjJSbFhDSTZYQ0ptYVd4c1hDSXNYQ0pwYm1adlhDSTZYQ0k4YURJZ2MzUjViR1U5WEZ4Y0luUmxlSFF0WVd4cFoyNDZJR3hsWm5RN1hGeGNJajVUWVcxd2JHVWdWR2wwYkdYQ29EZzhMMmd5UGp4d0lITjBlV3hsUFZ4Y1hDSjBaWGgwTFdGc2FXZHVPaUJzWldaME8xeGNYQ0krVEc5eVpXMGdhWEJ6ZFcwZ1pHOXNiM0lnYzJsMElHRnRaWFFzSUdOdmJuTmxZM1JsZEhWeUlHRmthWEJwYzJsamFXNW5JR1ZzYVhRc0lITmxaQ0JrYnlCbGFYVnpiVzlrSUhSbGJYQnZjaUJwYm1OcFpHbGtkVzUwSUhWMElHeGhZbTl5WlNCbGRDQmtiMnh2Y21VZ2JXRm5ibUVnWVd4cGNYVmhMaUJWZENCbGJtbHRJR0ZrSUcxcGJtbHRJSFpsYm1saGJTd2djWFZwY3lCdWIzTjBjblZrSUdWNFpYSmphWFJoZEdsdmJpQjFiR3hoYldOdklHeGhZbTl5YVhNZ2JtbHphU0IxZENCaGJHbHhkV2x3SUdWNElHVmhJR052YlcxdlpHOGdZMjl1YzJWeGRXRjBMaUJFZFdseklHRjFkR1VnYVhKMWNtVWdaRzlzYjNJZ2FXNGdjbVZ3Y21Wb1pXNWtaWEpwZENCcGJpQjJiMngxY0hSaGRHVWdkbVZzYVhRZ1pYTnpaU0JqYVd4c2RXMGdaRzlzYjNKbElHVjFJR1oxWjJsaGRDQnVkV3hzWVNCd1lYSnBZWFIxY2k0Z1JYaGpaWEIwWlhWeUlITnBiblFnYjJOallXVmpZWFFnWTNWd2FXUmhkR0YwSUc1dmJpQndjbTlwWkdWdWRDd2djM1Z1ZENCcGJpQmpkV3h3WVNCeGRXa2diMlptYVdOcFlTQmtaWE5sY25WdWRDQnRiMnhzYVhRZ1lXNXBiU0JwWkNCbGMzUWdiR0ZpYjNKMWJTNDhMM0ErWENJc1hDSmlaM1pmWm1sc2JHMXZaR1ZjSWpwY0ltWnBiR3hjSWl4Y0ltSm5kbDlzYjI5d1hDSTZkSEoxWlN4Y0ltSm5kbDl0ZFhSbFhDSTZkSEoxWlN4Y0ltSm5kbDloZFhSdmNHRjFjMlZjSWpwbVlXeHpaU3hjSW14aGVXVnlYMmxrYzF3aU9sdGRmU0lzSWpraU9pSjdYQ0pwWkZ3aU9qa3NYQ0owYVcxbGJHbHVaVjlvWENJNk1qQXdMRndpWW1kVWFIVnRZbHdpT2x3aUx6SXdNVEl2TVRBdk1UTXRNVFV3ZURFMU1DNXFjR2RjSWl4Y0ltOXlaR1Z5WENJNk1DeGNJbUpuWENJNlhDSXZNakF4TWk4eE1DOHhNeTVxY0dkY0lpeGNJbVIxY21GMGFXOXVYQ0k2TXl4Y0ltWnBiR3hOYjJSbFhDSTZYQ0ptYVd4c1hDSXNYQ0pwYm1adlhDSTZYQ0k4YURJZ2MzUjViR1U5WEZ4Y0luUmxlSFF0WVd4cFoyNDZJR3hsWm5RN1hGeGNJajVUWVcxd2JHVWdWR2wwYkdVZ01Ud3ZhREkrUEhBZ2MzUjViR1U5WEZ4Y0luUmxlSFF0WVd4cFoyNDZJR3hsWm5RN1hGeGNJajVNYjNKbGJTQnBjSE4xYlNCa2IyeHZjaUJ6YVhRZ1lXMWxkQ3dnWTI5dWMyVmpkR1YwZFhJZ1lXUnBjR2x6YVdOcGJtY2daV3hwZEN3Z2MyVmtJR1J2SUdWcGRYTnRiMlFnZEdWdGNHOXlJR2x1WTJsa2FXUjFiblFnZFhRZ2JHRmliM0psSUdWMElHUnZiRzl5WlNCdFlXZHVZU0JoYkdseGRXRXVJRlYwSUdWdWFXMGdZV1FnYldsdWFXMGdkbVZ1YVdGdExDQnhkV2x6SUc1dmMzUnlkV1FnWlhobGNtTnBkR0YwYVc5dUlIVnNiR0Z0WTI4Z2JHRmliM0pwY3lCdWFYTnBJSFYwSUdGc2FYRjFhWEFnWlhnZ1pXRWdZMjl0Ylc5a2J5QmpiMjV6WlhGMVlYUXVJRVIxYVhNZ1lYVjBaU0JwY25WeVpTQmtiMnh2Y2lCcGJpQnlaWEJ5WldobGJtUmxjbWwwSUdsdUlIWnZiSFZ3ZEdGMFpTQjJaV3hwZENCbGMzTmxJR05wYkd4MWJTQmtiMnh2Y21VZ1pYVWdablZuYVdGMElHNTFiR3hoSUhCaGNtbGhkSFZ5TGlCRmVHTmxjSFJsZFhJZ2MybHVkQ0J2WTJOaFpXTmhkQ0JqZFhCcFpHRjBZWFFnYm05dUlIQnliMmxrWlc1MExDQnpkVzUwSUdsdUlHTjFiSEJoSUhGMWFTQnZabVpwWTJsaElHUmxjMlZ5ZFc1MElHMXZiR3hwZENCaGJtbHRJR2xrSUdWemRDQnNZV0p2Y25WdExqd3ZjRDVjSWl4Y0ltSm5kbDltYVd4c2JXOWtaVndpT2x3aVptbHNiRndpTEZ3aVltZDJYMnh2YjNCY0lqcDBjblZsTEZ3aVltZDJYMjExZEdWY0lqcDBjblZsTEZ3aVltZDJYMkYxZEc5d1lYVnpaVndpT21aaGJITmxMRndpYkdGNVpYSmZhV1J6WENJNlcxMTlJaXdpTVRJaU9pSjdYQ0pwWkZ3aU9qRXlMRndpZEdsdFpXeHBibVZmYUZ3aU9qSXdNQ3hjSW1KblZHaDFiV0pjSWpwY0lpOHlNREV5THpFd0x6RTJMVEUxTUhneE5UQXVhbkJuWENJc1hDSnZjbVJsY2x3aU9qZ3NYQ0ppWjF3aU9sd2lMekl3TVRJdk1UQXZNVFl1YW5CblhDSXNYQ0prZFhKaGRHbHZibHdpT2pNc1hDSm1hV3hzVFc5a1pWd2lPbHdpWm1sc2JGd2lMRndpYVc1bWIxd2lPbHdpUEdneUlITjBlV3hsUFZ4Y1hDSjBaWGgwTFdGc2FXZHVPaUJzWldaME8xeGNYQ0krVTJGdGNHeGxJRlJwZEd4bHdxQTVQQzlvTWo0OGNDQnpkSGxzWlQxY1hGd2lkR1Y0ZEMxaGJHbG5iam9nYkdWbWREdGNYRndpUGt4dmNtVnRJR2x3YzNWdElHUnZiRzl5SUhOcGRDQmhiV1YwTENCamIyNXpaV04wWlhSMWNpQmhaR2x3YVhOcFkybHVaeUJsYkdsMExDQnpaV1FnWkc4Z1pXbDFjMjF2WkNCMFpXMXdiM0lnYVc1amFXUnBaSFZ1ZENCMWRDQnNZV0p2Y21VZ1pYUWdaRzlzYjNKbElHMWhaMjVoSUdGc2FYRjFZUzRnVlhRZ1pXNXBiU0JoWkNCdGFXNXBiU0IyWlc1cFlXMHNJSEYxYVhNZ2JtOXpkSEoxWkNCbGVHVnlZMmwwWVhScGIyNGdkV3hzWVcxamJ5QnNZV0p2Y21seklHNXBjMmtnZFhRZ1lXeHBjWFZwY0NCbGVDQmxZU0JqYjIxdGIyUnZJR052Ym5ObGNYVmhkQzRnUkhWcGN5QmhkWFJsSUdseWRYSmxJR1J2Ykc5eUlHbHVJSEpsY0hKbGFHVnVaR1Z5YVhRZ2FXNGdkbTlzZFhCMFlYUmxJSFpsYkdsMElHVnpjMlVnWTJsc2JIVnRJR1J2Ykc5eVpTQmxkU0JtZFdkcFlYUWdiblZzYkdFZ2NHRnlhV0YwZFhJdUlFVjRZMlZ3ZEdWMWNpQnphVzUwSUc5alkyRmxZMkYwSUdOMWNHbGtZWFJoZENCdWIyNGdjSEp2YVdSbGJuUXNJSE4xYm5RZ2FXNGdZM1ZzY0dFZ2NYVnBJRzltWm1samFXRWdaR1Z6WlhKMWJuUWdiVzlzYkdsMElHRnVhVzBnYVdRZ1pYTjBJR3hoWW05eWRXMHVQQzl3UGx3aUxGd2lZbWQyWDJacGJHeHRiMlJsWENJNlhDSm1hV3hzWENJc1hDSmlaM1pmYkc5dmNGd2lPblJ5ZFdVc1hDSmlaM1pmYlhWMFpWd2lPblJ5ZFdVc1hDSmlaM1pmWVhWMGIzQmhkWE5sWENJNlptRnNjMlVzWENKc1lYbGxjbDlwWkhOY0lqcGJYWDBpTENJeE5DSTZJbnRjSW1sa1hDSTZNVFFzWENKMGFXMWxiR2x1WlY5b1hDSTZNakF3TEZ3aVltZFVhSFZ0WWx3aU9sd2lMekl3TVRJdk1UQXZNVFV4TFRFMU1IZ3hOVEF1YW5CblhDSXNYQ0p2Y21SbGNsd2lPamtzWENKaVoxd2lPbHdpTHpJd01USXZNVEF2TVRVeExtcHdaMXdpTEZ3aVpIVnlZWFJwYjI1Y0lqb3pMRndpWm1sc2JFMXZaR1ZjSWpwY0ltWnBiR3hjSWl4Y0ltbHVabTljSWpwY0lqeG9NaUJ6ZEhsc1pUMWNYRndpZEdWNGRDMWhiR2xuYmpvZ2JHVm1kRHRjWEZ3aVBsTmhiWEJzWlNCVWFYUnNaY0tnTVRBOEwyZ3lQanh3SUhOMGVXeGxQVnhjWENKMFpYaDBMV0ZzYVdkdU9pQnNaV1owTzF4Y1hDSStURzl5WlcwZ2FYQnpkVzBnWkc5c2IzSWdjMmwwSUdGdFpYUXNJR052Ym5ObFkzUmxkSFZ5SUdGa2FYQnBjMmxqYVc1bklHVnNhWFFzSUhObFpDQmtieUJsYVhWemJXOWtJSFJsYlhCdmNpQnBibU5wWkdsa2RXNTBJSFYwSUd4aFltOXlaU0JsZENCa2IyeHZjbVVnYldGbmJtRWdZV3hwY1hWaExpQlZkQ0JsYm1sdElHRmtJRzFwYm1sdElIWmxibWxoYlN3Z2NYVnBjeUJ1YjNOMGNuVmtJR1Y0WlhKamFYUmhkR2x2YmlCMWJHeGhiV052SUd4aFltOXlhWE1nYm1semFTQjFkQ0JoYkdseGRXbHdJR1Y0SUdWaElHTnZiVzF2Wkc4Z1kyOXVjMlZ4ZFdGMExpQkVkV2x6SUdGMWRHVWdhWEoxY21VZ1pHOXNiM0lnYVc0Z2NtVndjbVZvWlc1a1pYSnBkQ0JwYmlCMmIyeDFjSFJoZEdVZ2RtVnNhWFFnWlhOelpTQmphV3hzZFcwZ1pHOXNiM0psSUdWMUlHWjFaMmxoZENCdWRXeHNZU0J3WVhKcFlYUjFjaTRnUlhoalpYQjBaWFZ5SUhOcGJuUWdiMk5qWVdWallYUWdZM1Z3YVdSaGRHRjBJRzV2YmlCd2NtOXBaR1Z1ZEN3Z2MzVnVkQ0JwYmlCamRXeHdZU0J4ZFdrZ2IyWm1hV05wWVNCa1pYTmxjblZ1ZENCdGIyeHNhWFFnWVc1cGJTQnBaQ0JsYzNRZ2JHRmliM0oxYlM0OEwzQStYQ0lzWENKaVozWmZabWxzYkcxdlpHVmNJanBjSW1acGJHeGNJaXhjSW1KbmRsOXNiMjl3WENJNmRISjFaU3hjSW1KbmRsOXRkWFJsWENJNmRISjFaU3hjSW1KbmRsOWhkWFJ2Y0dGMWMyVmNJanBtWVd4elpTeGNJbXhoZVdWeVgybGtjMXdpT2x0ZGZTSjlMQ0pOVTFCaGJtVnNMa052Ym5SeWIyd2lPbnNpTVNJNkludGNJbWxrWENJNlhDSXhYQ0lzWENKc1lXSmxiRndpT2x3aVFYSnliM2R6WENJc1hDSnVZVzFsWENJNlhDSmhjbkp2ZDNOY0lpeGNJbUYxZEc5SWFXUmxYQ0k2Wm1Gc2MyVXNYQ0p2ZG1WeVZtbGtaVzljSWpwMGNuVmxMRndpYVc1elpYUmNJanAwY25WbGZTSXNJalFpT2lKN1hDSnBaRndpT2pRc1hDSnNZV0psYkZ3aU9sd2lVMnhwWkdVZ1NXNW1iMXdpTEZ3aWJtRnRaVndpT2x3aWMyeHBaR1ZwYm1adlhDSXNYQ0poZFhSdlNHbGtaVndpT21aaGJITmxMRndpYjNabGNsWnBaR1Z2WENJNmRISjFaU3hjSW0xaGNtZHBibHdpT2pFd0xGd2lkMmxrZEdoY0lqb3lOVEFzWENKaGJHbG5ibHdpT2x3aWNtbG5hSFJjSWl4Y0ltbHVjMlYwWENJNlptRnNjMlY5SWl3aU5TSTZJbnRjSW1sa1hDSTZOU3hjSW14aFltVnNYQ0k2WENKVFkzSnZiR3hpWVhKY0lpeGNJbTVoYldWY0lqcGNJbk5qY205c2JHSmhjbHdpTEZ3aVlYVjBiMGhwWkdWY0lqcG1ZV3h6WlN4Y0ltOTJaWEpXYVdSbGIxd2lPblJ5ZFdVc1hDSnRZWEpuYVc1Y0lqb3hNQ3hjSW1ScGNsd2lPbHdpYUZ3aUxGd2lZMjlzYjNKY0lqcGNJaU16UkRORU0wUmNJaXhjSW5kcFpIUm9YQ0k2TkN4Y0ltRnNhV2R1WENJNlhDSjBiM0JjSWl4Y0ltbHVjMlYwWENJNmRISjFaWDBpTENJMklqb2llMXdpYVdSY0lqbzJMRndpYkdGaVpXeGNJanBjSWtKMWJHeGxkSE5jSWl4Y0ltNWhiV1ZjSWpwY0ltSjFiR3hsZEhOY0lpeGNJbUYxZEc5SWFXUmxYQ0k2ZEhKMVpTeGNJbTkyWlhKV2FXUmxiMXdpT25SeWRXVXNYQ0p0WVhKbmFXNWNJam94TUN4Y0ltUnBjbHdpT2x3aWFGd2lMRndpWVd4cFoyNWNJanBjSW1KdmRIUnZiVndpTEZ3aWFXNXpaWFJjSWpwMGNuVmxmU0o5ZlE9PSIsInR5cGUiOiJjdXN0b20iLCJzbGlkZXNfbnVtIjoiMTAifX0sIm9yaWdpbl91cGxvYWRzX3VybCI6Imh0dHA6XC9cL2RlbW8uYXZlcnRhLm5ldFwvdGhlbWVzXC9sb3R1c1wvZHVtbXktYWdlbmN5XC93cC1jb250ZW50XC91cGxvYWRzIn0=',
110
+ 'image_dir' => '',
111
+ 'selected' => '',
112
+ 'screenshot'=> MSWP_AVERTA_ADMIN_URL . '/assets/images/starters/slider-with-slide-info-v2.jpg'
113
+ )
114
+ );
115
+
116
+
117
+ return apply_filters( 'masterslider_starter_fields', $starters );
118
  }
119
 
120
 
121
 
122
  function msp_get_slider_starter_field( $field_id ){
123
+ $fields_in_sections = msp_get_slider_starter_fields();
124
 
125
+ foreach ( $fields_in_sections as $fields_in_section ) {
126
+ foreach ($fields_in_section as $the_field ) {
127
+ if ( isset( $the_field['id'] ) && $the_field['id'] == $field_id ){
128
+ return $the_field;
129
+ }
130
+ }
131
+ }
132
 
133
+ return null;
134
  }
admin/views/index.php CHANGED
@@ -10,16 +10,16 @@
10
  */
11
 
12
  $msp_nonce = wp_create_nonce( 'msp_panel' );
13
- $action = isset( $_REQUEST['action'] ) ? $_REQUEST['action'] : '';
14
  $slider_id = isset( $_REQUEST['slider_id'] ) ? $_REQUEST['slider_id'] : '';
15
- $do = isset( $_REQUEST['action'] ) ? $_REQUEST['action'] : '';
16
 
17
 
18
  function msp_thankyou_footer() {
19
- $text = sprintf( __( 'Thank you for creating with <a href="%s">WordPress</a>.' ), __( 'https://wordpress.org/' ) );
20
- $text .= sprintf( __(' and using <a href="%s">Master Slider</a> %s', MSWP_TEXT_DOMAIN ), 'http://masterslider.com/?msl', MSWP_AVERTA_VERSION );
21
 
22
- return '<span id="footer-thankyou">' . $text . '</span>';
23
  }
24
  add_filter( 'admin_footer_text', 'msp_thankyou_footer' );
25
 
@@ -29,27 +29,27 @@ add_filter( 'admin_footer_text', 'msp_thankyou_footer' );
29
  <div id="msp-main-wrapper" class="wrap" data-nonce="<?php echo $msp_nonce; ?>" >
30
 
31
  <?php
32
-
33
- // process slider data and generate required thumbnails for slider panel
34
- // if( ! empty( $slider_id ) && isset( $_REQUEST['fr'] ) )
35
- // msp_get_ms_slider_shortcode_by_slider_id( $slider_id );
36
 
37
- // If the requested page is edit page
38
- if( in_array( $action, array( 'add', 'edit' ) ) ){
39
 
40
- include( 'slider-panel/index.php' );
41
 
42
- // If the requested page is preview page
43
- } elseif( 'preview' == $action ) {
44
 
45
- include( 'slider-dashboard/preview.php' );
46
 
47
- // Otherwise display sliders list
48
- } else {
49
 
50
- include( 'slider-dashboard/list-sliders.php' );
51
 
52
- }
53
 
54
  ?>
55
 
10
  */
11
 
12
  $msp_nonce = wp_create_nonce( 'msp_panel' );
13
+ $action = isset( $_REQUEST['action'] ) ? $_REQUEST['action'] : '';
14
  $slider_id = isset( $_REQUEST['slider_id'] ) ? $_REQUEST['slider_id'] : '';
15
+ $do = isset( $_REQUEST['action'] ) ? $_REQUEST['action'] : '';
16
 
17
 
18
  function msp_thankyou_footer() {
19
+ $text = sprintf( __( 'Thank you for creating with <a href="%s">WordPress</a>.' ), __( 'https://wordpress.org/' ) );
20
+ $text .= sprintf( __(' and using <a href="%s">Master Slider</a> %s', 'master-slider' ), 'http://masterslider.com/?msl', MSWP_AVERTA_VERSION );
21
 
22
+ return '<span id="footer-thankyou">' . $text . '</span>';
23
  }
24
  add_filter( 'admin_footer_text', 'msp_thankyou_footer' );
25
 
29
  <div id="msp-main-wrapper" class="wrap" data-nonce="<?php echo $msp_nonce; ?>" >
30
 
31
  <?php
32
+
33
+ // process slider data and generate required thumbnails for slider panel
34
+ // if( ! empty( $slider_id ) && isset( $_REQUEST['fr'] ) )
35
+ // msp_get_ms_slider_shortcode_by_slider_id( $slider_id );
36
 
37
+ // If the requested page is edit page
38
+ if( in_array( $action, array( 'add', 'edit' ) ) ){
39
 
40
+ include( 'slider-panel/index.php' );
41
 
42
+ // If the requested page is preview page
43
+ } elseif( 'preview' == $action ) {
44
 
45
+ include( 'slider-dashboard/preview.php' );
46
 
47
+ // Otherwise display sliders list
48
+ } else {
49
 
50
+ include( 'slider-dashboard/list-sliders.php' );
51
 
52
+ }
53
 
54
  ?>
55
 
admin/views/setting/class-msp-settings.php CHANGED
@@ -54,8 +54,8 @@ class MSP_Settings {
54
  if( isset( $section['id'] ) && 'msp_envato_license' == $section['id'] ){
55
  $is_license_actived = get_option( MSWP_SLUG . '_is_license_actived', 0 );
56
  return sprintf( '<a id="validate_envato_license" class="button button-primary button-large" data-activate="%1$s" data-isactive="%3$d" data-deactivate="%2$s" data-validation="%4$s" >%1$s</a>%5$s',
57
- __( 'Activate License', MSWP_TEXT_DOMAIN ), __( 'Deactivate License', MSWP_TEXT_DOMAIN ), (int)$is_license_actived,
58
- __( 'Validating ..', MSWP_TEXT_DOMAIN ), '<div class="msp-msg-nag">is not actived</div>' );
59
  }
60
  return $button_markup;
61
  }
@@ -65,8 +65,8 @@ class MSP_Settings {
65
 
66
  add_submenu_page(
67
  MSWP_SLUG,
68
- __( 'Settings' , MSWP_TEXT_DOMAIN ),
69
- __( 'Settings' , MSWP_TEXT_DOMAIN ),
70
  apply_filters( 'masterslider_setting_capability', 'manage_options' ),
71
  MSWP_SLUG . '-setting',
72
  array( $this, 'render_setting_page' )
@@ -78,18 +78,18 @@ class MSP_Settings {
78
 
79
  array(
80
  'id' => 'msp_general_setting',
81
- 'title' => __( 'General Settings', MSWP_TEXT_DOMAIN )
82
  )
83
  );
84
 
85
  $sections[] = array(
86
  'id' => 'msp_advanced',
87
- 'title' => __( 'Advanced Setting', MSWP_TEXT_DOMAIN )
88
  );
89
 
90
  $sections[] = array(
91
  'id' => 'upgrade_to_pro',
92
- 'title' => __( 'Upgrade to Pro version', MSWP_TEXT_DOMAIN )
93
  );
94
 
95
  return $sections;
@@ -107,20 +107,20 @@ class MSP_Settings {
107
  $settings_fields['msp_general_setting'] = array(
108
  array(
109
  'name' => 'hide_info_table',
110
- 'label' => __( 'Hide info table', MSWP_TEXT_DOMAIN ),
111
- 'desc' => __( 'If you want to hide "Latest video tutorials" table on master slider admin panel check this field.', MSWP_TEXT_DOMAIN ),
112
  'type' => 'checkbox'
113
  ),
114
  array(
115
  'name' => '_enable_cache',
116
- 'label' => __( 'Enable cache?', MSWP_TEXT_DOMAIN ),
117
- 'desc' => __( 'Enable cache to make Masterslider even more faster!', MSWP_TEXT_DOMAIN ),
118
  'type' => 'checkbox'
119
  ),
120
  array(
121
  'name' => '_cache_period',
122
- 'label' => __( 'Cache period time', MSWP_TEXT_DOMAIN ),
123
- 'desc' => __( 'The cache refresh time in hours. Cache is also cleared when you click on "Save Changes" in slider panel.', MSWP_TEXT_DOMAIN ),
124
  'type' => 'text',
125
  'default' => '12',
126
  'sanitize_callback' => 'floatval'
@@ -130,8 +130,8 @@ class MSP_Settings {
130
  $settings_fields['msp_advanced'] = array(
131
  array(
132
  'name' => 'allways_load_ms_assets',
133
- 'label' => __( 'Load assets on all pages?', MSWP_TEXT_DOMAIN ),
134
- 'desc' => __( 'By default, Master Slider will load corresponding JavaScript files on demand. but if you need to load assets on all pages, check this option. ( For example, if you plan to load Master Slider via Ajax, you need to check this option ) ', MSWP_TEXT_DOMAIN ),
135
  'type' => 'checkbox'
136
  )
137
  );
@@ -139,9 +139,9 @@ class MSP_Settings {
139
  $settings_fields['upgrade_to_pro'] = array(
140
  array(
141
  'name' => 'upgrade_text',
142
- 'desc' => __( 'Upgrade to Pro version to unlock more features!', MSWP_TEXT_DOMAIN ) . sprintf( ' <a href="http://avt.li/mslset" target="_blank">%s</a>', __( 'Checkout the list of features ..', MSWP_TEXT_DOMAIN ) ),
143
  'type' => 'plain_text',
144
- 'label'=> __( 'Need more features?', MSWP_TEXT_DOMAIN )
145
  )
146
  );
147
 
54
  if( isset( $section['id'] ) && 'msp_envato_license' == $section['id'] ){
55
  $is_license_actived = get_option( MSWP_SLUG . '_is_license_actived', 0 );
56
  return sprintf( '<a id="validate_envato_license" class="button button-primary button-large" data-activate="%1$s" data-isactive="%3$d" data-deactivate="%2$s" data-validation="%4$s" >%1$s</a>%5$s',
57
+ __( 'Activate License', 'master-slider' ), __( 'Deactivate License', 'master-slider' ), (int)$is_license_actived,
58
+ __( 'Validating ..', 'master-slider' ), '<div class="msp-msg-nag">is not actived</div>' );
59
  }
60
  return $button_markup;
61
  }
65
 
66
  add_submenu_page(
67
  MSWP_SLUG,
68
+ __( 'Settings' , 'master-slider' ),
69
+ __( 'Settings' , 'master-slider' ),
70
  apply_filters( 'masterslider_setting_capability', 'manage_options' ),
71
  MSWP_SLUG . '-setting',
72
  array( $this, 'render_setting_page' )
78
 
79
  array(
80
  'id' => 'msp_general_setting',
81
+ 'title' => __( 'General Settings', 'master-slider' )
82
  )
83
  );
84
 
85
  $sections[] = array(
86
  'id' => 'msp_advanced',
87
+ 'title' => __( 'Advanced Setting', 'master-slider' )
88
  );
89
 
90
  $sections[] = array(
91
  'id' => 'upgrade_to_pro',
92
+ 'title' => __( 'Upgrade to Pro version', 'master-slider' )
93
  );
94
 
95
  return $sections;
107
  $settings_fields['msp_general_setting'] = array(
108
  array(
109
  'name' => 'hide_info_table',
110
+ 'label' => __( 'Hide info table', 'master-slider' ),
111
+ 'desc' => __( 'If you want to hide "Latest video tutorials" table on master slider admin panel check this field.', 'master-slider' ),
112
  'type' => 'checkbox'
113
  ),
114
  array(
115
  'name' => '_enable_cache',
116
+ 'label' => __( 'Enable cache?', 'master-slider' ),
117
+ 'desc' => __( 'Enable cache to make Masterslider even more faster!', 'master-slider' ),
118
  'type' => 'checkbox'
119
  ),
120
  array(
121
  'name' => '_cache_period',
122
+ 'label' => __( 'Cache period time', 'master-slider' ),
123
+ 'desc' => __( 'The cache refresh time in hours. Cache is also cleared when you click on "Save Changes" in slider panel.', 'master-slider' ),
124
  'type' => 'text',
125
  'default' => '12',
126
  'sanitize_callback' => 'floatval'
130
  $settings_fields['msp_advanced'] = array(
131
  array(
132
  'name' => 'allways_load_ms_assets',
133
+ 'label' => __( 'Load assets on all pages?', 'master-slider' ),
134
+ 'desc' => __( 'By default, Master Slider will load corresponding JavaScript files on demand. but if you need to load assets on all pages, check this option. ( For example, if you plan to load Master Slider via Ajax, you need to check this option ) ', 'master-slider' ),
135
  'type' => 'checkbox'
136
  )
137
  );
139
  $settings_fields['upgrade_to_pro'] = array(
140
  array(
141
  'name' => 'upgrade_text',
142
+ 'desc' => __( 'Upgrade to Pro version to unlock more features!', 'master-slider' ) . sprintf( ' <a href="http://avt.li/mslset" target="_blank">%s</a>', __( 'Checkout the list of features ..', 'master-slider' ) ),
143
  'type' => 'plain_text',
144
+ 'label'=> __( 'Need more features?', 'master-slider' )
145
  )
146
  );
147
 
admin/views/slider-dashboard/list-sliders.php CHANGED
@@ -2,74 +2,74 @@
2
  msp_get_panel_header();
3
 
4
  // Display sliders list
5
- $slider_table_list = new MSP_List_Table();
6
- $slider_table_list->prepare_items();
7
- $slider_table_list->display();
8
-
9
-
10
- // Display action buttons
11
- echo '<div class="action-btns-list">';
12
-
13
- if( current_user_can( 'create_masterslider' ) )
14
- printf( '<a id="msp-add-slider" class="action-add-new msp-ac-btn msp-btn-blue msp-iconic-big" href="%s"><span></span>%s</a>', admin_url( 'admin.php?page='.MSWP_SLUG.'&action=add' ), __( 'Create New Slider', MSWP_TEXT_DOMAIN ) );
15
-
16
- if( current_user_can( 'export_masterslider' ) || apply_filters( 'masterslider_admin_display_export_import', 0 ) )
17
- printf( '<a class="action-import-export msp-ac-btn" href="%s" onClick="lunchMastersliderImportExport(); return false;">%s</a>', admin_url( 'admin.php?page='.MSWP_SLUG ), __( 'Import & Export', MSWP_TEXT_DOMAIN ) );
18
-
19
- echo '</div>';
20
-
21
-
22
-
23
- if( current_user_can( 'create_masterslider' ) ) { ?>
24
-
25
- <div id="msp-slider-type-select" >
26
-
27
- <div class="msp-templates-list">
28
-
29
- <?php
30
- sanitize_title( '' );
31
- $starter_sections = msp_get_slider_starter_sections();
32
- $starter_fields = msp_get_slider_starter_fields();
33
-
34
- foreach ( $starter_sections as $starter_section ) {
35
- ?>
36
- <div class="msp-dialog-inner-title ui-helper-clearfix">
37
- <span><?php echo $starter_section['title']; ?></span>
38
- </div>
39
- <?php
40
-
41
- $section_id = $starter_section['id'];
42
- $section_fields = isset( $starter_fields[ $section_id ] ) ? $starter_fields[ $starter_section['id'] ] : array();
43
-
44
- foreach ( $section_fields as $starter_data ) {
45
-
46
- $selected_attr = ( 'true' == $starter_data['selected'] ) ? 'selected' : '';
47
- $is_unavailable = isset( $starter_data['disable'] ) && 'true' == $starter_data['disable'] ? ' is-unavailable' : '';
48
- $disabled_msg = isset( $starter_data['disabled_msg'] ) && ! empty( $starter_data['disabled_msg'] ) ? $starter_data['disabled_msg'] : '';
49
-
50
- ?>
51
- <div class="msp-template-figure <?php echo $selected_attr . $is_unavailable; ?>" data-slider-type="<?php echo $starter_data['slidertype']; ?>"
52
- data-starter-uid="<?php echo $starter_data['id']; ?>" data-starter-section="<?php echo $section_id; ?>" data-disabled-msg="<?php echo $disabled_msg; ?>" >
53
- <div class="msp-templte-selected"></div>
54
- <img src="<?php echo $starter_data['screenshot']; ?>" />
55
- <div class="msp-template-caption"><?php echo $starter_data['label']; ?><span></span></div>
56
- </div>
57
- <?php
58
-
59
- }
60
-
61
- ?>
62
- <div class="section-divider"></div>
63
- <?php
64
- }
65
-
66
- ?>
67
- </div>
68
-
69
- <div class="msp-templates-bottom">
70
- <button id="msp-slider-type-create" class="msp-blue-btn msp-applyeffect"><?php _e( 'Create', MSWP_TEXT_DOMAIN ); ?></button>
71
- </div>
72
- </div>
73
 
74
  <?php } ?>
75
 
@@ -77,88 +77,88 @@
77
 
78
  <?php if( current_user_can( 'export_masterslider' ) || apply_filters( 'masterslider_admin_display_export_import', 0 ) ) { ?>
79
 
80
- <div class="msp-import-export-wrapper" >
81
-
82
- <?php do_action( 'masterslider_before_import_dialog_content' ); ?>
83
-
84
- <div class="msp-import-wrapper">
85
-
86
- <form action="<?php echo admin_url( 'admin.php?import=masterslider-importer&step=2' ); ?>" method="post" enctype="multipart/form-data" class="msp-import-form msp-dialog-inner-section">
87
-
88
- <fieldset>
89
- <?php wp_nonce_field('import-msp-sliders'); ?>
90
-
91
- <input type="hidden" name="msp-import" value="1">
92
-
93
- <input type="file" name="msp-import-file" class="msp-select-file">
94
-
95
- <button class="button msp-ac-btn msp-btn-blue"><?php _e('Import', MSWP_TEXT_DOMAIN ) ?></button>
96
- </fieldset>
97
-
98
- <span class="msp-dialog-section-desc"><?php _e( 'To import sliders select Masterslider Export file that you downloaded before then click import button.', MSWP_TEXT_DOMAIN ) ?></span>
99
-
100
- </form>
101
-
102
- </div>
103
-
104
- <div class="msp-export-wrapper">
105
- <h4 class="msp-dialog-inner-split-header"><?php _e('Export', MSWP_TEXT_DOMAIN ) ?></h4>
106
-
107
- <form action="<?php echo $_SERVER['REQUEST_URI'] ?>" method="post" class="msp-export-form msp-dialog-inner-section">
108
-
109
- <div class="msp-export-table-container">
110
-
111
- <table class="msp-export-table widefat fixed msp-export-sliders-table">
112
-
113
- <thead>
114
- <tr>
115
- <th class="export-column export-field-cb" >
116
- <input type="checkbox" name="export-check-all" class="export-check-all" />
117
- </th>
118
- <th class="export-column export-field-ID" >ID</th>
119
- <th class="export-column export-field-title" >Name</th>
120
- <th class="export-column export-field-type" >Type</th>
121
- <th class="export-column export-field-lastmodify" >Last Modify</th>
122
- </tr>
123
- </thead>
124
-
125
- <tbody>
126
- <?php
127
- global $mspdb;
128
- $sliders = $mspdb->get_sliders_list();
129
- foreach ( $sliders as $slider ) {
130
- $orig_time = isset( $slider['date_modified'] ) ? strtotime($slider['date_modified']) : '';
131
- $time = date_i18n( 'Y/m/d @ g:i:s A', $orig_time );
132
- $human_time = human_time_diff( $orig_time );
133
- ?>
134
- <tr>
135
- <th class="export-column export-field-cb" ><input type="checkbox" name="msp-export-sliders[]" class="export-slider-cb" value="<?php echo $slider['ID']; ?>" /></th>
136
- <th class="export-column export-field-ID" ><?php echo $slider['ID']; ?></th>
137
- <th class="export-column export-field-title" ><?php echo $slider['title']; ?></th>
138
- <th class="export-column export-field-type" ><?php echo $slider['type']; ?></th>
139
- <th class="export-column export-field-lastmodify" ><abbr title="<?php echo $time; ?>"><?php echo $human_time; ?></abbr></th>
140
- </tr>
141
- <?php } ?>
142
- </tbody>
143
-
144
- </table>
145
-
146
- </div>
147
-
148
- <fieldset>
149
- <?php wp_nonce_field('export-msp-sliders'); ?>
150
-
151
- <input type="hidden" name="msp-export" value="1">
152
-
153
- <button id="msp-export-btn" class="button msp-ac-btn msp-btn-blue"><?php _e('Export', MSWP_TEXT_DOMAIN ) ?></button>
154
- </fieldset>
155
-
156
- <span class="msp-dialog-section-desc"><?php _e( 'Downloads an export file that contains your selected sliders to import on your new site.', MSWP_TEXT_DOMAIN ); ?></span>
157
-
158
- </form>
159
-
160
- </div>
161
- </div>
162
 
163
  <?php } ?>
164
 
2
  msp_get_panel_header();
3
 
4
  // Display sliders list
5
+ $slider_table_list = new MSP_List_Table();
6
+ $slider_table_list->prepare_items();
7
+ $slider_table_list->display();
8
+
9
+
10
+ // Display action buttons
11
+ echo '<div class="action-btns-list">';
12
+
13
+ if( current_user_can( 'create_masterslider' ) )
14
+ printf( '<a id="msp-add-slider" class="action-add-new msp-ac-btn msp-btn-blue msp-iconic-big" href="%s"><span></span>%s</a>', admin_url( 'admin.php?page='.MSWP_SLUG.'&action=add' ), __( 'Create New Slider', 'master-slider' ) );
15
+
16
+ if( current_user_can( 'export_masterslider' ) || apply_filters( 'masterslider_admin_display_export_import', 0 ) )
17
+ printf( '<a class="action-import-export msp-ac-btn" href="%s" onClick="lunchMastersliderImportExport(); return false;">%s</a>', admin_url( 'admin.php?page='.MSWP_SLUG ), __( 'Import & Export', 'master-slider' ) );
18
+
19
+ echo '</div>';
20
+
21
+
22
+
23
+ if( current_user_can( 'create_masterslider' ) ) { ?>
24
+
25
+ <div id="msp-slider-type-select" >
26
+
27
+ <div class="msp-templates-list">
28
+
29
+ <?php
30
+ sanitize_title( '' );
31
+ $starter_sections = msp_get_slider_starter_sections();
32
+ $starter_fields = msp_get_slider_starter_fields();
33
+
34
+ foreach ( $starter_sections as $starter_section ) {
35
+ ?>
36
+ <div class="msp-dialog-inner-title ui-helper-clearfix">
37
+ <span><?php echo $starter_section['title']; ?></span>
38
+ </div>
39
+ <?php
40
+
41
+ $section_id = $starter_section['id'];
42
+ $section_fields = isset( $starter_fields[ $section_id ] ) ? $starter_fields[ $starter_section['id'] ] : array();
43
+
44
+ foreach ( $section_fields as $starter_data ) {
45
+
46
+ $selected_attr = ( 'true' == $starter_data['selected'] ) ? 'selected' : '';
47
+ $is_unavailable = isset( $starter_data['disable'] ) && 'true' == $starter_data['disable'] ? ' is-unavailable' : '';
48
+ $disabled_msg = isset( $starter_data['disabled_msg'] ) && ! empty( $starter_data['disabled_msg'] ) ? $starter_data['disabled_msg'] : '';
49
+
50
+ ?>
51
+ <div class="msp-template-figure <?php echo $selected_attr . $is_unavailable; ?>" data-slider-type="<?php echo $starter_data['slidertype']; ?>"
52
+ data-starter-uid="<?php echo $starter_data['id']; ?>" data-starter-section="<?php echo $section_id; ?>" data-disabled-msg="<?php echo $disabled_msg; ?>" >
53
+ <div class="msp-templte-selected"></div>
54
+ <img src="<?php echo $starter_data['screenshot']; ?>" />
55
+ <div class="msp-template-caption"><?php echo $starter_data['label']; ?><span></span></div>
56
+ </div>
57
+ <?php
58
+
59
+ }
60
+
61
+ ?>
62
+ <div class="section-divider"></div>
63
+ <?php
64
+ }
65
+
66
+ ?>
67
+ </div>
68
+
69
+ <div class="msp-templates-bottom">
70
+ <button id="msp-slider-type-create" class="msp-blue-btn msp-applyeffect"><?php _e( 'Create', 'master-slider' ); ?></button>
71
+ </div>
72
+ </div>
73
 
74
  <?php } ?>
75
 
77
 
78
  <?php if( current_user_can( 'export_masterslider' ) || apply_filters( 'masterslider_admin_display_export_import', 0 ) ) { ?>
79
 
80
+ <div class="msp-import-export-wrapper" >
81
+
82
+ <?php do_action( 'masterslider_before_import_dialog_content' ); ?>
83
+
84
+ <div class="msp-import-wrapper">
85
+
86
+ <form action="<?php echo admin_url( 'admin.php?import=masterslider-importer&step=2' ); ?>" method="post" enctype="multipart/form-data" class="msp-import-form msp-dialog-inner-section">
87
+
88
+ <fieldset>
89
+ <?php wp_nonce_field('import-msp-sliders'); ?>
90
+
91
+ <input type="hidden" name="msp-import" value="1">
92
+
93
+ <input type="file" name="msp-import-file" class="msp-select-file">
94
+
95
+ <button class="button msp-ac-btn msp-btn-blue"><?php _e('Import', 'master-slider' ) ?></button>
96
+ </fieldset>
97
+
98
+ <span class="msp-dialog-section-desc"><?php _e( 'To import sliders select Masterslider Export file that you downloaded before then click import button.', 'master-slider' ) ?></span>
99
+
100
+ </form>
101
+
102
+ </div>
103
+
104
+ <div class="msp-export-wrapper">
105
+ <h4 class="msp-dialog-inner-split-header"><?php _e('Export', 'master-slider' ) ?></h4>
106
+
107
+ <form action="<?php echo $_SERVER['REQUEST_URI'] ?>" method="post" class="msp-export-form msp-dialog-inner-section">
108
+
109
+ <div class="msp-export-table-container">
110
+
111
+ <table class="msp-export-table widefat fixed msp-export-sliders-table">
112
+
113
+ <thead>
114
+ <tr>
115
+ <th class="export-column export-field-cb" >
116
+ <input type="checkbox" name="export-check-all" class="export-check-all" />
117
+ </th>
118
+ <th class="export-column export-field-ID" >ID</th>
119
+ <th class="export-column export-field-title" >Name</th>
120
+ <th class="export-column export-field-type" >Type</th>
121
+ <th class="export-column export-field-lastmodify" >Last Modify</th>
122
+ </tr>
123
+ </thead>
124
+
125
+ <tbody>
126
+ <?php
127
+ global $mspdb;
128
+ $sliders = $mspdb->get_sliders_list();
129
+ foreach ( $sliders as $slider ) {
130
+ $orig_time = isset( $slider['date_modified'] ) ? strtotime($slider['date_modified']) : '';
131
+ $time = date_i18n( 'Y/m/d @ g:i:s A', $orig_time );
132
+ $human_time = human_time_diff( $orig_time );
133
+ ?>
134
+ <tr>
135
+ <th class="export-column export-field-cb" ><input type="checkbox" name="msp-export-sliders[]" class="export-slider-cb" value="<?php echo $slider['ID']; ?>" /></th>
136
+ <th class="export-column export-field-ID" ><?php echo $slider['ID']; ?></th>
137
+ <th class="export-column export-field-title" ><?php echo $slider['title']; ?></th>
138
+ <th class="export-column export-field-type" ><?php echo $slider['type']; ?></th>
139
+ <th class="export-column export-field-lastmodify" ><abbr title="<?php echo $time; ?>"><?php echo $human_time; ?></abbr></th>
140
+ </tr>
141
+ <?php } ?>
142
+ </tbody>
143
+
144
+ </table>
145
+
146
+ </div>
147
+
148
+ <fieldset>
149
+ <?php wp_nonce_field('export-msp-sliders'); ?>
150
+
151
+ <input type="hidden" name="msp-export" value="1">
152
+
153
+ <button id="msp-export-btn" class="button msp-ac-btn msp-btn-blue"><?php _e('Export', 'master-slider' ) ?></button>
154
+ </fieldset>
155
+
156
+ <span class="msp-dialog-section-desc"><?php _e( 'Downloads an export file that contains your selected sliders to import on your new site.', 'master-slider' ); ?></span>
157
+
158
+ </form>
159
+
160
+ </div>
161
+ </div>
162
 
163
  <?php } ?>
164
 
admin/views/slider-dashboard/preview.php CHANGED
@@ -7,25 +7,25 @@ echo '<div id="ms-preview-wrapper">';
7
 
8
  if( isset( $_REQUEST['slider_params'] ) && ! empty( $_REQUEST['slider_params'] ) ) {
9
 
10
- $slider_params = $_REQUEST['slider_params'];
11
- $slider_shortcodes = msp_panel_data_2_ms_slider_shortcode( $slider_params );
12
- echo do_shortcode( $slider_shortcodes );
13
 
14
- // print slider custom css inline in live preview
15
- $parser = msp_get_parser();
16
  $parser->set_data( $slider_params );
17
  $slider_custom_css = $parser->get_styles();
18
  printf( "<!-- Custom slider styles -->\n<style>%s</style>", $slider_custom_css );
19
 
20
  } elseif ( isset( $_REQUEST['slider_id'] ) && ! empty( $_REQUEST['slider_id'] ) ) {
21
- $slider_id = $_REQUEST['slider_id'];
22
- $slider_shortcodes = msp_get_ms_slider_shortcode_by_slider_id( $slider_id );
23
- echo do_shortcode( $slider_shortcodes );
24
- // print slider custom css inline in live preview
25
- printf( "<!-- Custom slider styles -->\n<style>%s</style>", msp_get_slider_custom_css( $slider_id ) );
26
 
27
  } else {
28
- _e( 'Not found.', MSWP_TEXT_DOMAIN );
29
  }
30
 
31
 
@@ -48,26 +48,26 @@ if ( isset( $_REQUEST['strip_wp'] ) ) {
48
  #querylist,
49
  #wpfooter,
50
  #wpbody-content > * {
51
- display:none;
52
  }
53
  #wpbody-content {
54
- padding-bottom: 0;
55
  }
56
 
57
  #wpcontent {
58
- margin-left:0;
59
  }
60
  html.wp-toolbar {
61
- padding-top:0;
62
  }
63
  #msp-main-wrapper {
64
- margin:0;
65
- display:block;
66
  }
67
  #ms-preview-wrapper{
68
- width:100%;
69
- max-width:100%;
70
- min-height: 400px;
71
  }
72
  #wpcontent {
73
  padding-left: 0;
7
 
8
  if( isset( $_REQUEST['slider_params'] ) && ! empty( $_REQUEST['slider_params'] ) ) {
9
 
10
+ $slider_params = $_REQUEST['slider_params'];
11
+ $slider_shortcodes = msp_panel_data_2_ms_slider_shortcode( $slider_params );
12
+ echo do_shortcode( $slider_shortcodes );
13
 
14
+ // print slider custom css inline in live preview
15
+ $parser = msp_get_parser();
16
  $parser->set_data( $slider_params );
17
  $slider_custom_css = $parser->get_styles();
18
  printf( "<!-- Custom slider styles -->\n<style>%s</style>", $slider_custom_css );
19
 
20
  } elseif ( isset( $_REQUEST['slider_id'] ) && ! empty( $_REQUEST['slider_id'] ) ) {
21
+ $slider_id = $_REQUEST['slider_id'];
22
+ $slider_shortcodes = msp_get_ms_slider_shortcode_by_slider_id( $slider_id );
23
+ echo do_shortcode( $slider_shortcodes );
24
+ // print slider custom css inline in live preview
25
+ printf( "<!-- Custom slider styles -->\n<style>%s</style>", msp_get_slider_custom_css( $slider_id ) );
26
 
27
  } else {
28
+ _e( 'Not found.', 'master-slider' );
29
  }
30
 
31
 
48
  #querylist,
49
  #wpfooter,
50
  #wpbody-content > * {
51
+ display:none;
52
  }
53
  #wpbody-content {
54
+ padding-bottom: 0;
55
  }
56
 
57
  #wpcontent {
58
+ margin-left:0;
59
  }
60
  html.wp-toolbar {
61
+ padding-top:0;
62
  }
63
  #msp-main-wrapper {
64
+ margin:0;
65
+ display:block;
66
  }
67
  #ms-preview-wrapper{
68
+ width:100%;
69
+ max-width:100%;
70
+ min-height: 400px;
71
  }
72
  #wpcontent {
73
  padding-left: 0;
admin/views/slider-panel/index.php CHANGED
@@ -17,7 +17,7 @@
17
  </div>
18
  <div id="panelLoading" class="msp-loading">
19
  <img src="<?php echo MSWP_AVERTA_ADMIN_URL . '/views/slider-panel'; ?>/images/loading.gif">
20
- <?php _e('Loading data...', MSWP_TEXT_DOMAIN); ?>
21
  </div>
22
  <div id="msp-root" class="msp-container"> </div>
23
  <div id="mspHiddenEditor" style="display:none">
@@ -34,171 +34,171 @@
34
  {{else}}
35
  <nav class="msp-main-nav">
36
  <ul>
37
- <li>{{#link-to 'settings'}} <?php _e('Slider Settings', MSWP_TEXT_DOMAIN); ?> <span class="msp-ico msp-ico-settings"></span>{{/link-to}}</li>
38
- {{#if isFlickr }}<li>{{#link-to 'flickr'}} <?php _e('Flickr Settings', MSWP_TEXT_DOMAIN); ?> <span class="msp-ico msp-ico-flickr"></span>{{/link-to}}</li>{{/if}}
39
- {{#if isFacebook }}<li>{{#link-to 'facebook'}} <?php _e('Facebook Settings', MSWP_TEXT_DOMAIN); ?> <span class="msp-ico msp-ico-facebook"></span>{{/link-to}}</li>{{/if}}
40
- {{#if isPost }}<li>{{#link-to 'post'}} <?php _e('Posts Settings', MSWP_TEXT_DOMAIN); ?> <span class="msp-ico msp-ico-posts"></span>{{/link-to}}</li>{{/if}}
41
- {{#if isWcproduct }}<li>{{#link-to 'wcproduct'}} <?php _e('Product Slider Settings', MSWP_TEXT_DOMAIN); ?> <span class="msp-ico msp-ico-wooc"></span>{{/link-to}}</li>{{/if}}
42
- <li>{{#link-to 'slides'}} <?php _e('Slides', MSWP_TEXT_DOMAIN); ?> <span class="msp-ico msp-ico-slides"></span>{{/link-to}}</li>
43
- <li>{{#link-to 'controls'}} <?php _e('Slider Controls', MSWP_TEXT_DOMAIN); ?> <span class="msp-ico msp-ico-controls"></span>{{/link-to}}</li>
44
- <li>{{#link-to 'callbacks'}} <?php _e('Slider Callbacks', MSWP_TEXT_DOMAIN); ?> <span class="msp-ico msp-ico-api"></span>{{/link-to}}</li>
45
  <li class="msp-upgrade-btn"> {{#link-to 'pro-features'}}Upgrade to PRO <span class="msp-ico msp-ico-pro"></span>{{/link-to}}</li>
46
  </ul>
47
  </nav>
48
  <div class="clear"></div>
49
  {{outlet}}
50
  <div class="msp-shortcode-cont">
51
- <span><?php _e('Shortcode :', MSWP_TEXT_DOMAIN); ?> </span> {{view MSPanel.SimpleCodeBlock value=shortCode width=120}}
52
- <span><?php _e('PHP function :', MSWP_TEXT_DOMAIN); ?> </span> {{view MSPanel.SimpleCodeBlock value=phpFunction width=160}}
53
  </div>
54
  <div class="msp-save-bar-placeholder" id="saveBarPlaceHolder"></div>
55
  <div class="msp-save-bar" id="saveBar">
56
- <button id="msp-preview-btn" {{action showPreview}} class="msp-blue-btn msp-save-changes"> <?php _e('Preview', MSWP_TEXT_DOMAIN); ?></button>
57
  {{#if isSending}}
58
- <button class="msp-blue-btn msp-save-changes disabled"> <?php _e('Saving...', MSWP_TEXT_DOMAIN); ?></button>
59
  {{else}}
60
- <button class="msp-blue-btn msp-save-changes" {{action "saveAll"}}> <?php _e('Save Changes', MSWP_TEXT_DOMAIN); ?></button>
61
  {{/if}}
62
  <div class="msp-saving-msg-cont">
63
  <span {{bind-attr class=":msp-save-status savingStatus"}}>{{statusMsg}}</span>
64
- <div {{bind-attr class=":msp-time-ago savingStatus"}}><?php _e('Saved', MSWP_TEXT_DOMAIN); ?> <span id="timeAgo"></span>.</div>
65
  </div>
66
  </div>
67
  {{/if}}
68
  </script>
69
 
70
  <script type="text/x-handlebars" id="pro-features">
71
- {{#meta-box title="Upgrade Master Slider to PRO"}}
72
- <div class="msp-metabox-row msp-pro-tab">
73
- <div class="msp-pro-featurs">
74
- <h2>Add Features to Master Slider</h2>
75
- <p>Take your WordPress site to the next level with Master Slider PRO. This plugin crunches all type of content, making it a dead-simple way to display dynamic slides in the exact the way YOU want them to look.
76
- Best of all, Master Slider PRO works perfectly with any existing WordPress theme and doesn’t affect overall site performance. Which means, less bloat and more control!</p>
77
- <div class="msp-pf-figure">
78
- <img src="<?php echo MSWP_AVERTA_ADMIN_URL . '/views/slider-panel'; ?>/images/pro-features/layers.jpg" alt="Animated layers">
79
- <h6>Animated Layers</h6>
80
- </div>
81
- <div class="msp-pf-figure">
82
- <img src="<?php echo MSWP_AVERTA_ADMIN_URL . '/views/slider-panel'; ?>/images/pro-features/videos.jpg" alt="Videos">
83
- <h6>Videos</h6>
84
- </div>
85
- <div class="msp-pf-figure">
86
- <img src="<?php echo MSWP_AVERTA_ADMIN_URL . '/views/slider-panel'; ?>/images/pro-features/sample-sliders.jpg" alt="Sample sliders">
87
- <h6>Sample Sliders</h6>
88
- </div>
89
- <div class="msp-pf-figure">
90
- <img src="<?php echo MSWP_AVERTA_ADMIN_URL . '/views/slider-panel'; ?>/images/pro-features/dynamic-sources.jpg" alt="Dynamic sources">
91
- <h6>Dynamic Sources</h6>
92
- </div>
93
- <div class="msp-pf-figure">
94
- <img src="<?php echo MSWP_AVERTA_ADMIN_URL . '/views/slider-panel'; ?>/images/pro-features/parallax.jpg" alt="Prallax effect">
95
- <h6>Parallax Effect</h6>
96
- </div>
97
- <div class="msp-pf-figure">
98
- <img src="<?php echo MSWP_AVERTA_ADMIN_URL . '/views/slider-panel'; ?>/images/pro-features/dedicated-support.jpg" alt="Dedicated support">
99
- <h6>Dedicated Support</h6>
100
- </div>
101
- </div>
102
- <div class="clear"></div>
103
- </div>
104
- <div class="msp-metabox-row msp-pro-tab msp-pf-admin-section">
105
- <div class="msp-pf-admin-ss">
106
- <div class="msp-pf-figure">
107
- <a data-featherlight="image" href="<?php echo MSWP_AVERTA_ADMIN_URL . '/views/slider-panel'; ?>/images/pro-features/admin-area/layers.jpg">
108
- <img src="<?php echo MSWP_AVERTA_ADMIN_URL . '/views/slider-panel'; ?>/images/pro-features/admin-area/thumbs/layers.jpg" alt="layers">
109
- <div class="msp-pf-thumb-ol"><img src="<?php echo MSWP_AVERTA_ADMIN_URL . '/views/slider-panel'; ?>/images/pro-features/admin-area/zoom.png" alt="zoom-ico"></div>
110
- </a>
111
- </div>
112
- <div class="msp-pf-figure">
113
- <a data-featherlight="image" href="<?php echo MSWP_AVERTA_ADMIN_URL . '/views/slider-panel'; ?>/images/pro-features/admin-area/sample-sliders.jpg">
114
- <img src="<?php echo MSWP_AVERTA_ADMIN_URL . '/views/slider-panel'; ?>/images/pro-features/admin-area/thumbs/sample-sliders.jpg" alt="sample sliders">
115
- <div class="msp-pf-thumb-ol"><img src="<?php echo MSWP_AVERTA_ADMIN_URL . '/views/slider-panel'; ?>/images/pro-features/admin-area/zoom.png" alt="zoom-ico"></div>
116
- </a>
117
- </div>
118
- <div class="msp-pf-figure">
119
- <a data-featherlight="image" href="<?php echo MSWP_AVERTA_ADMIN_URL . '/views/slider-panel'; ?>/images/pro-features/admin-area/templates.jpg">
120
- <img src="<?php echo MSWP_AVERTA_ADMIN_URL . '/views/slider-panel'; ?>/images/pro-features/admin-area/thumbs/templates.jpg" alt="slider templates">
121
- <div class="msp-pf-thumb-ol"><img src="<?php echo MSWP_AVERTA_ADMIN_URL . '/views/slider-panel'; ?>/images/pro-features/admin-area/zoom.png" alt="zoom-ico"></div>
122
- </a>
123
- </div>
124
- <div class="msp-pf-figure">
125
- <a data-featherlight="image" href="<?php echo MSWP_AVERTA_ADMIN_URL . '/views/slider-panel'; ?>/images/pro-features/admin-area/transition-editor.jpg">
126
- <img src="<?php echo MSWP_AVERTA_ADMIN_URL . '/views/slider-panel'; ?>/images/pro-features/admin-area/thumbs/transition-editor.jpg" alt="transition editor">
127
- <div class="msp-pf-thumb-ol"><img src="<?php echo MSWP_AVERTA_ADMIN_URL . '/views/slider-panel'; ?>/images/pro-features/admin-area/zoom.png" alt="zoom-ico"></div>
128
- </a>
129
- </div>
130
- <div class="msp-pf-figure">
131
- <a data-featherlight="image" href="<?php echo MSWP_AVERTA_ADMIN_URL . '/views/slider-panel'; ?>/images/pro-features/admin-area/style-editor.jpg">
132
- <img src="<?php echo MSWP_AVERTA_ADMIN_URL . '/views/slider-panel'; ?>/images/pro-features/admin-area/thumbs/style-editor.jpg" alt="style editor">
133
- <div class="msp-pf-thumb-ol"><img src="<?php echo MSWP_AVERTA_ADMIN_URL . '/views/slider-panel'; ?>/images/pro-features/admin-area/zoom.png" alt="zoom-ico"></div>
134
- </a>
135
- </div>
136
- <div class="msp-pf-figure">
137
- <a data-featherlight="image" href="<?php echo MSWP_AVERTA_ADMIN_URL . '/views/slider-panel'; ?>/images/pro-features/admin-area/button-editor.jpg">
138
- <img src="<?php echo MSWP_AVERTA_ADMIN_URL . '/views/slider-panel'; ?>/images/pro-features/admin-area/thumbs/button-editor.jpg" alt="style editor">
139
- <div class="msp-pf-thumb-ol"><img src="<?php echo MSWP_AVERTA_ADMIN_URL . '/views/slider-panel'; ?>/images/pro-features/admin-area/zoom.png" alt="zoom-ico"></div>
140
- </a>
141
- </div>
142
-
143
- <div class="clear"></div>
144
- <h3>See It In Action</h3>
145
- <p>Want to give it a shot right away? Just give it a test drive and create your own slider, or try some of our ready-made samples!</p>
146
- <a class="msp-blue-btn msp-pf-testdrive" href="http://avt.li/msptd" target="_blank"> <span class="msp-ico msp-ico-testdrive"></span> Test Drive Now</a>
147
- </div>
148
- <div class="clear"></div>
149
- </div>
150
- <div class="msp-metabox-row msp-pro-tab msp-pf-join-section">
151
- <img src="<?php echo MSWP_AVERTA_ADMIN_URL . '/views/slider-panel'; ?>/images/pro-features/join.png" alt="Join the PRO version" class="msp-join-ico">
152
- <h3>Join 4600+ PRO Users</h3>
153
- <p>Ready to take advantage of all of the amazing features packed into MasterSlider PRO? We hope so!</p>
154
- <a class="msp-pf-btn msp-pf-upgrade-btn" href="http://avt.li/mspup" target="_blank">Upgrade Now</a>
155
- <a class="msp-pf-btn msp-pf-more-btn" href="http://avt.li/mspt" target="_blank">See All Features</a>
156
- <div class="clear"></div>
157
- </div>
158
- {{/meta-box}}
159
  </script>
160
  <!-- Slider Settings Page -->
161
  <script type="text/x-handlebars" id="settings">
162
 
163
- {{#meta-box title="<?php _e('General Settings', MSWP_TEXT_DOMAIN); ?>"}}
164
 
165
  <div class="msp-metabox-row">
166
 
167
- <h4><?php _e('Slider name and dimentions', MSWP_TEXT_DOMAIN); ?></h4>
168
 
169
  <div class="msp-metabox-indented">
170
- <label><?php _e('Slider name :', MSWP_TEXT_DOMAIN); ?> </label> {{input value=name size="40"}}
171
  </div>
172
  <div class="msp-metabox-indented">
173
- <label><?php _e('Slider width :', MSWP_TEXT_DOMAIN); ?> </label> {{number-input value=width}} px
174
  <span class="msp-form-space"></span>
175
- <label><?php _e('Slider height :', MSWP_TEXT_DOMAIN); ?> </label> {{number-input value=height}} px
176
  </div>
177
 
178
  <div class="msp-metabox-indented">
179
- {{switch-box value=autoCrop}}<label><?php _e('Automatically crop and resize slider images based on above size.', MSWP_TEXT_DOMAIN); ?></label>
180
  </div>
181
 
182
- <h4><?php _e('Slider sizing method', MSWP_TEXT_DOMAIN); ?></h4>
183
 
184
  <div class="msp-metabox-indented">
185
  {{#view MSPanel.Select value=layout width="400" }}
186
- <option value="boxed"><?php _e('Boxed layout', MSWP_TEXT_DOMAIN); ?></option>
187
- <option value="fullwidth"><?php _e('Full-width', MSWP_TEXT_DOMAIN); ?></option>
188
  {{/view}}
189
  {{#if showAutoHeight}}
190
  <span class="msp-form-space"></span>
191
- {{switch-box value=autoHeight}}<label><?php _e('Auto-height slider', MSWP_TEXT_DOMAIN); ?></label>
192
  {{/if}}
193
  </div>
194
  {{#if showMinHeight}}
195
  <div class="msp-metabox-indented">
196
- <label><?php _e('Minimum height amount :', MSWP_TEXT_DOMAIN); ?> </label>{{number-input value=minHeight}} px
197
  </div>
198
  {{/if}}
199
  {{#if showWrapperWidth}}
200
  <div class="msp-metabox-indented">
201
- <label><?php _e('Slider wrapper width :', MSWP_TEXT_DOMAIN); ?> </label>{{number-input value=wrapperWidth}}
202
  {{#view MSPanel.Select value=wrapperWidthUnit width="40" }}
203
  <option value="px">px</option>
204
  <option value="%">%</option>
@@ -210,126 +210,126 @@
210
 
211
  {{/meta-box}}
212
 
213
- {{#meta-box title="<?php _e('Slider Transition', MSWP_TEXT_DOMAIN); ?>"}}
214
  <div class="msp-metabox-row">
215
- <h4><?php _e('Change slider transition, transition speed and space between slides', MSWP_TEXT_DOMAIN); ?></h4>
216
 
217
  <div class="msp-metabox-indented">
218
- <label><?php _e('Transition :', MSWP_TEXT_DOMAIN); ?> </label>
219
  {{#view MSPanel.Select value=trView width=150}}
220
  <option value="basic">Normal</option>
221
  <option value="fade">Fade</option>
222
  {{/view}}
223
  <span class="msp-form-space"></span>
224
- <label><?php _e('Transition speed :', MSWP_TEXT_DOMAIN); ?> </label> {{number-input value=speed}}
225
  </div>
226
  <div class="msp-metabox-indented">
227
- <label><?php _e('Direction :', MSWP_TEXT_DOMAIN); ?> </label>
228
  {{#view MSPanel.Select value=dir width="120"}}
229
- <option value="h"><?php _e('Horizontal', MSWP_TEXT_DOMAIN); ?></option>
230
- <option value="v"><?php _e('Vertical', MSWP_TEXT_DOMAIN); ?></option>
231
  {{/view}}
232
  <span class="msp-form-space"></span>
233
- <label><?php _e('Slide space :', MSWP_TEXT_DOMAIN); ?> </label> {{number-input value=space}} px
234
  </div>
235
  </div>
236
  {{/meta-box}}
237
 
238
 
239
- {{#meta-box title="<?php _e('Navigation', MSWP_TEXT_DOMAIN); ?>"}}
240
 
241
  <div class="msp-metabox-row">
242
- <h4><?php _e('Slideshow behavior and sorting slides', MSWP_TEXT_DOMAIN); ?></h4>
243
  <div class="msp-metabox-indented">
244
- {{switch-box value=autoplay}}<label><?php _e('Autoplay (Slideshow)', MSWP_TEXT_DOMAIN); ?></label>
245
  <span class="msp-form-space"></span>
246
- {{switch-box value=loop}}<label><?php _e('Loop navigation', MSWP_TEXT_DOMAIN); ?> </label>
247
  <span class="msp-form-space"></span>
248
- {{switch-box value=endPause}}<label><?php _e('Pause at end slide', MSWP_TEXT_DOMAIN); ?></label>
249
  </div>
250
  <div class="msp-metabox-indented">
251
- {{switch-box value=overPause}}<label><?php _e('Pause on hover', MSWP_TEXT_DOMAIN); ?></label>
252
  <span class="msp-form-space"></span>
253
- {{switch-box value=shuffle}}<label><?php _e('Random order', MSWP_TEXT_DOMAIN); ?></label>
254
  </div>
255
  <div class="msp-metabox-indented">
256
- <label><?php _e('Start with slide :', MSWP_TEXT_DOMAIN); ?> </label> {{number-input value=start min=1}}
257
  </div>
258
- <h4><?php _e('Slider navigation methods', MSWP_TEXT_DOMAIN); ?></h4>
259
  <div class="msp-metabox-indented">
260
- {{switch-box value=swipe}}<label><?php _e('Touch swipe navigation', MSWP_TEXT_DOMAIN); ?></label>
261
  <span class="msp-form-space"></span>
262
- {{switch-box value=mouse}}<label><?php _e('Mouse swipe navigation', MSWP_TEXT_DOMAIN); ?></label>
263
  <span class="msp-form-space"></span>
264
- {{switch-box value=grabCursor}}<label><?php _e('Use grab mouse cursor', MSWP_TEXT_DOMAIN); ?></label>
265
  </div>
266
  <div class="msp-metabox-indented">
267
- {{switch-box value=wheel}}<label><?php _e('Mouse wheel navigation', MSWP_TEXT_DOMAIN); ?></label>
268
  </div>
269
  <div class="msp-metabox-indented">
270
- {{switch-box value=startOnAppear}}<label><?php _e('Start slider when appears in browser window.', MSWP_TEXT_DOMAIN); ?></label>
271
  </div>
272
- <h4><?php _e('Slide preloading', MSWP_TEXT_DOMAIN); ?></h4>
273
  <div class="msp-metabox-indented">
274
  {{#view MSPanel.Select value=preloadMethod width="200" }}
275
- <option value="nearby"><?php _e('Load nearby slides', MSWP_TEXT_DOMAIN); ?></option>
276
- <option value="-1"><?php _e('Load slides in sequence', MSWP_TEXT_DOMAIN); ?></option>
277
- <option value="all"><?php _e('Load all slides before init', MSWP_TEXT_DOMAIN); ?></option>
278
  {{/view}}
279
  {{#if showNearbyNum}}
280
  <span class="msp-form-space"></span>
281
- <?php _e('Number of slides :', MSWP_TEXT_DOMAIN); ?> {{number-input value=preload }}
282
  {{/if}}
283
  </div>
284
  </div>
285
 
286
  {{/meta-box}}
287
 
288
- {{#meta-box title="<?php _e('Appearance', MSWP_TEXT_DOMAIN); ?>"}}
289
 
290
  <div class="msp-metabox-row">
291
- <h4><?php _e('Slider Skin', MSWP_TEXT_DOMAIN); ?></h4>
292
  <div class="msp-metabox-indented">
293
- <label><?php _e('Skin :', MSWP_TEXT_DOMAIN); ?> </label>
294
  {{#dropdwon-List value=skin width=180}}
295
  {{#each skin in sliderSkins}}
296
  <option {{bind-attr value=skin.class}}>{{skin.label}}</option>
297
  {{/each}}
298
 
299
  {{!--
300
- <option value="ms-skin-default"><?php _e('Default', MSWP_TEXT_DOMAIN); ?></option>
301
- <option value="ms-skin-light-2"><?php _e('Light 2', MSWP_TEXT_DOMAIN); ?></option>
302
- <option value="ms-skin-light-3"><?php _e('Light 3', MSWP_TEXT_DOMAIN); ?></option>
303
- <option value="ms-skin-light-4"><?php _e('Light 4', MSWP_TEXT_DOMAIN); ?></option>
304
- <option value="ms-skin-light-5"><?php _e('Light 5', MSWP_TEXT_DOMAIN); ?></option>
305
- <option value="ms-skin-light-6"><?php _e('Light 6', MSWP_TEXT_DOMAIN); ?></option>
306
- <option value="ms-skin-light-6 round-skin"><?php _e('Light 6 Round', MSWP_TEXT_DOMAIN); ?></option>
307
- <option value="ms-skin-contrast"><?php _e('Contrast', MSWP_TEXT_DOMAIN); ?></option>
308
- <option value="ms-skin-black-1"><?php _e('Black 1', MSWP_TEXT_DOMAIN); ?></option>
309
- <option value="ms-skin-black-2"><?php _e('Black 2', MSWP_TEXT_DOMAIN); ?></option>
310
- <option value="ms-skin-black-2 round-skin"><?php _e('Black 2 Round', MSWP_TEXT_DOMAIN); ?></option>
311
- <option value="ms-skin-metro"><?php _e('Metro', MSWP_TEXT_DOMAIN); ?></option>
312
  --}}
313
  {{/dropdwon-List}}
314
  </div>
315
  <div class="msp-metabox-indented">
316
- <label><?php _e('Align center slider controls :', MSWP_TEXT_DOMAIN); ?> </label> {{switch-box value=centerControls}}
317
  </div>
318
- <h4><?php _e('Slider background settings', MSWP_TEXT_DOMAIN); ?></h4>
319
  <div class="msp-metabox-indented">
320
- <label><?php _e('Background image :', MSWP_TEXT_DOMAIN); ?> </label> {{view MSPanel.ImgSelect value=bgImage thumb=bgImageThumb}}
321
  <span class="msp-form-space"></span>
322
- <label><?php _e('Background color :', MSWP_TEXT_DOMAIN); ?> </label> {{color-picker value=bgColor}}
323
  </div>
324
- <h4><?php _e('Slider custom class name and style', MSWP_TEXT_DOMAIN); ?></h4>
325
  <div class="msp-metabox-indented">
326
- <label><?php _e('Class name :', MSWP_TEXT_DOMAIN); ?> </label> {{input value=className}}
327
  </div>
328
  {{!--<div class="msp-metabox-indented">
329
- <label><?php _e('Inline style :', MSWP_TEXT_DOMAIN); ?> </label> {{input value=inlineStyle size="50"}}
330
  </div>--}}
331
  <div class="msp-metabox-indented">
332
- <label><?php _e('Slider custom styles :', MSWP_TEXT_DOMAIN); ?> </label>
333
  </div>
334
  <div class="msp-metabox-indented">
335
  {{#code-mirror width="880" height="250" mode="css" value=customStyle}}{{/code-mirror}}
@@ -343,7 +343,7 @@
343
  <script type="text/x-handlebars" id="slides">
344
  {{#if customSlider}}
345
  <!-- Slides List -->
346
- {{#meta-box title="<?php _e('Slides', MSWP_TEXT_DOMAIN); ?>"}}
347
  <div class="msp-metabox-row">
348
  {{view MSPanel.SlideList}}
349
  </div>
@@ -360,10 +360,10 @@
360
  <div class="msp-metabox-handle">
361
 
362
  <ul class="tabs">
363
- <li class="active"><a href="#sl-bg"><?php _e('Background', MSWP_TEXT_DOMAIN); ?></a></li>
364
- <li><a href="#sl-val"><?php _e('Video and Link', MSWP_TEXT_DOMAIN); ?></a></li>
365
- <li><a href="#sl-inf"><?php _e('Slide Info', MSWP_TEXT_DOMAIN); ?></a></li>
366
- <li><a href="#sl-misc"><?php _e('Misc', MSWP_TEXT_DOMAIN); ?></a></li>
367
  </ul>
368
 
369
  <div class="msp-metabox-toggle"></div>
@@ -381,7 +381,7 @@
381
  {{#meta-box title="Slide"}}
382
  <div class="msp-metabox-row">
383
  <div class="msp-metabox-indented">
384
- <label><?php _e('Slide duration :', MSWP_TEXT_DOMAIN); ?> </label> {{number-input class="msp-number-input" min=0 max=300 step="0.1" value=currentSlide.duration}} s
385
  </div>
386
  </div>
387
  <hr class="msp-metabox-hr">
@@ -392,42 +392,42 @@
392
  <!-- Slide Background Settings Partial -->
393
  <script type="text/x-handlebars" id="slide-background">
394
  <div class="msp-metabox-row">
395
- <h4><?php _e('Choose slide background and thumbnail', MSWP_TEXT_DOMAIN); ?></h4>
396
  <div class="msp-metabox-indented">
397
- <label><?php _e('Background :', MSWP_TEXT_DOMAIN); ?> </label> {{view MSPanel.ImgSelect value=currentSlide.bg thumb=currentSlide.bgThumb }}
398
  <span class="msp-form-space"></span>
399
- <label><?php _e('Fillmode :', MSWP_TEXT_DOMAIN); ?> </label> {{view MSPanel.Fillmode value=currentSlide.fillMode}}
400
  <span class="msp-form-space"></span>
401
- <label><?php _e('Thumbnail :', MSWP_TEXT_DOMAIN); ?> </label> {{view MSPanel.ImgSelect value=currentSlide.thumbOrginal thumb=currentSlide.thumb}}
402
  </div>
403
  </div>
404
  </script>
405
  <!-- Slide Embeded Video and Link -->
406
  <script type="text/x-handlebars" id="slide-video-and-link">
407
  <div class="msp-metabox-row">
408
- <h4><?php _e('Link this slide', MSWP_TEXT_DOMAIN); ?> </h4>
409
  <div class="msp-metabox-indented">
410
- <label><?php _e('URL :', MSWP_TEXT_DOMAIN); ?> </label> {{input class="msp-path-input" value=currentSlide.link}}
411
  {{view MSPanel.URLTarget value=currentSlide.linkTarget }}
412
  </div>
413
  <div class="msp-metabox-indented">
414
- <label><?php _e('Link id :', MSWP_TEXT_DOMAIN); ?> </label> {{input size=20 value=currentSlide.linkId}}
415
  <span class="msp-form-space"></span>
416
- <label><?php _e('Link class :', MSWP_TEXT_DOMAIN); ?> </label> {{input size=20 value=currentSlide.linkClass}}
417
  </div>
418
  <div class="msp-metabox-indented">
419
- <label><?php _e('Link rel :', MSWP_TEXT_DOMAIN); ?> </label> {{input size=20 value=currentSlide.linkRel}}
420
  <span class="msp-form-space"></span>
421
- <label><?php _e('Link title :', MSWP_TEXT_DOMAIN); ?> </label> {{input size=20 value=currentSlide.linkTitle}}
422
  </div>
423
- <h4><?php _e('Youtube or Vimeo video as slide', MSWP_TEXT_DOMAIN); ?></h4>
424
  <div class="msp-metabox-indented">
425
- <label><?php _e('Video embed src :', MSWP_TEXT_DOMAIN); ?> </label> {{input size=60 value=currentSlide.video}}
426
  <span class="msp-form-space"></span>
427
- <label><?php _e('Autoplay video :', MSWP_TEXT_DOMAIN); ?> </label> {{switch-box value=currentSlide.autoplayVideo}}
428
  </div>
429
  <div class="msp-metabox-indented">
430
- <a href="http://masterslider.com/doc/wp/#embed-url" target="_blank"><?php _e('Where to find the Youtube/Vimeo embed URL.', MSWP_TEXT_DOMAIN); ?></a>
431
  </div>
432
  </div>
433
  </script>
@@ -436,12 +436,12 @@
436
  <script type="text/x-handlebars" id="slide-info">
437
  <div class="msp-metabox-row">
438
  <div class="msp-metabox-indented">
439
- <label><?php _e('This info will show beside of slider when slider reaches the slide or it can represent as tab in a tabs control. It is relative to selected slider template.', MSWP_TEXT_DOMAIN); ?></label>
440
  </div>
441
 
442
  {{#if MSPanel.dynamicTags}}
443
  <div class="msp-metabox-indented">
444
- <label><?php _e('Insert dynamic content : ', MSWP_TEXT_DOMAIN); ?></label>
445
  {{view MSPanel.AddDynamicTag editorId=infoEditor}}
446
  </div>
447
  {{/if}}
@@ -455,23 +455,23 @@
455
  <!-- Slide Misc -->
456
  <script type="text/x-handlebars" id="slide-misc">
457
  <div class="msp-metabox-row">
458
- <h4><?php _e('Custom class name and id for slide element', MSWP_TEXT_DOMAIN); ?> </h4>
459
  <div class="msp-metabox-indented">
460
- <label><?php _e('Class name :', MSWP_TEXT_DOMAIN); ?> </label> {{input size=30 value=currentSlide.cssClass}}
461
  <span class="msp-form-space"></span>
462
- <label><?php _e('CSS id :', MSWP_TEXT_DOMAIN); ?> </label> {{input size=30 value=currentSlide.cssId}}
463
  </div>
464
- <h4><?php _e('Background color and slide background alt text ', MSWP_TEXT_DOMAIN); ?></h4>
465
  <div class="msp-metabox-indented">
466
- <label><?php _e('Background color :', MSWP_TEXT_DOMAIN); ?> </label> {{color-picker value=currentSlide.bgColor}}
467
  <span class="msp-form-space"></span>
468
- <label><?php _e('Alt text :', MSWP_TEXT_DOMAIN); ?> </label> {{input size=30 value=currentSlide.bgAlt}}
469
  </div>
470
- <h4><?php _e('Slide color and pattern overlay ', MSWP_TEXT_DOMAIN); ?></h4>
471
  <div class="msp-metabox-indented">
472
- <label><?php _e('Color overlay :', MSWP_TEXT_DOMAIN); ?> </label> {{color-picker value=currentSlide.colorOverlay}}
473
  <div class="msp-form-space-med"></div>
474
- <label><?php _e('Pattern overlay :', MSWP_TEXT_DOMAIN); ?> </label> {{pattern-picker value=currentSlide.pattern}}
475
  </div>
476
  </div>
477
  </script>
@@ -481,7 +481,7 @@
481
  {{#meta-box title="Slider Controls"}}
482
  <div class="msp-metabox-row">
483
  <div class="msp-metabox-indented">
484
- <?php _e('The selected tempalte for slider does not support custom controls.', MSWP_TEXT_DOMAIN); ?>
485
  </div>
486
  </div>
487
  {{/meta-box}}
@@ -489,10 +489,10 @@
489
  {{#meta-box title="Slider Controls"}}
490
  <div class="msp-metabox-row">
491
 
492
- <h4><?php _e('Here you can add or remove controls to slider', MSWP_TEXT_DOMAIN); ?></h4>
493
 
494
  <div class="msp-metabox-indented">
495
- <label><?php _e('Add new control', MSWP_TEXT_DOMAIN); ?></label>
496
  {{#if noMore}}
497
  <button class="msp-add-btn disabled"><span class="msp-ico msp-ico-whiteadd"></span></button>
498
  {{else}}
@@ -503,14 +503,14 @@
503
  {{#each control in availableControls}}
504
  <option {{bind-attr value=control.value}}>{{control.label}}</option>
505
  {{else}}
506
- <option><?php _e('-- All controls are used --', MSWP_TEXT_DOMAIN); ?></option>
507
  {{/each}}
508
  {{/dropdwon-List}}
509
  </div>
510
  </div>
511
  <hr class="msp-metabox-hr">
512
  <div class="msp-metabox-row">
513
- <h4><?php _e('Used controls:', MSWP_TEXT_DOMAIN); ?></h4>
514
  <div class="msp-metabox-indented">
515
  {{#each control in controller}}
516
  {{view MSPanel.ControlBtn control=control}}
@@ -527,19 +527,19 @@
527
  {{#meta-box title="Arrows Control Options"}}
528
  <div class="msp-metabox-row">
529
  <div class="msp-metabox-indented">
530
- {{switch-box value=currentControl.autoHide}} <label><?php _e('Hide arrows when mouse leaves slider', MSWP_TEXT_DOMAIN); ?></label>
531
  <div class="msp-form-space-med"></div>
532
- {{switch-box value=currentControl.overVideo}} <label><?php _e('Show arrows over Youtube/Vimeo video player', MSWP_TEXT_DOMAIN); ?></label>
533
  </div>
534
  <div class="msp-metabox-indented">
535
- <label><?php _e('Hide arrows under this window width :', MSWP_TEXT_DOMAIN); ?> </label> {{number-input value=currentControl.hideUnder}} px
536
  </div>
537
 
538
  {{!--<div class="msp-metabox-indented">
539
- {{switch-box value=currentControl.inset}} <label><?php _e('Insert arrows inside slider', MSWP_TEXT_DOMAIN); ?></label>
540
  </div>
541
  <div class="msp-metabox-indented">
542
- <label><?php _e('Arrows margin :', MSWP_TEXT_DOMAIN); ?> </label> {{number-input value=currentControl.margin min=null}} px
543
  </div>--}}
544
  </div>
545
  {{/meta-box}}
@@ -549,23 +549,23 @@
549
  {{#meta-box title="Line Timer Control Options"}}
550
  <div class="msp-metabox-row">
551
  <div class="msp-metabox-indented">
552
- {{switch-box value=currentControl.autoHide}} <label><?php _e('Hide line timer when mouse leaves slider', MSWP_TEXT_DOMAIN); ?></label>
553
  <div class="msp-form-space-med"></div>
554
- {{switch-box value=currentControl.overVideo}} <label><?php _e('Show line timer over Youtube/Vimeo video player', MSWP_TEXT_DOMAIN); ?></label>
555
  </div>
556
  <div class="msp-metabox-indented">
557
- <?php _e('Align control :', MSWP_TEXT_DOMAIN); ?>
558
  {{#dropdwon-List value=currentControl.align width=100}}
559
- <option value="top"><?php _e('Top', MSWP_TEXT_DOMAIN); ?></option>
560
- <option value="bottom"><?php _e('Bottom', MSWP_TEXT_DOMAIN); ?></option>
561
  {{/dropdwon-List}}
562
  <div class="msp-form-space-med"></div>
563
- <label><?php _e('Hide line timer under this window width :', MSWP_TEXT_DOMAIN); ?> </label> {{number-input value=currentControl.hideUnder}} px
564
  </div>
565
  <div class="msp-metabox-indented">
566
- <label><?php _e('Line timer color :', MSWP_TEXT_DOMAIN); ?> </label> {{color-picker value=currentControl.color}}
567
  <div class="msp-form-space-med"></div>
568
- <label><?php _e('Line timer width :', MSWP_TEXT_DOMAIN); ?> </label> {{number-input value=currentControl.width}} px
569
  </div>
570
  </div>
571
  {{/meta-box}}
@@ -575,28 +575,28 @@
575
  {{#meta-box title="Bullets Control Options"}}
576
  <div class="msp-metabox-row">
577
  <div class="msp-metabox-indented">
578
- {{switch-box value=currentControl.autoHide}} <label><?php _e('Hide bullets when mouse leaves slider', MSWP_TEXT_DOMAIN); ?></label>
579
  <div class="msp-form-space-med"></div>
580
- {{switch-box value=currentControl.overVideo}} <label><?php _e('Show bullets over Youtube/Vimeo video player', MSWP_TEXT_DOMAIN); ?></label>
581
  </div>
582
  {{!-- <div class="msp-metabox-indented">
583
- {{switch-box value=currentControl.inset}} <label><?php _e('Insert bullets inside slider', MSWP_TEXT_DOMAIN); ?></label>
584
  </div> --}}
585
  <div class="msp-metabox-indented">
586
- <?php _e('Align control :', MSWP_TEXT_DOMAIN); ?>
587
  {{#dropdwon-List value=currentControl.align width=100}}
588
- <option value="top"><?php _e('Top', MSWP_TEXT_DOMAIN); ?></option>
589
- <option value="right"><?php _e('Right', MSWP_TEXT_DOMAIN); ?></option>
590
- <option value="left"><?php _e('Left', MSWP_TEXT_DOMAIN); ?></option>
591
- <option value="bottom"><?php _e('Bottom', MSWP_TEXT_DOMAIN); ?></option>
592
  {{/dropdwon-List}}
593
  <div class="msp-form-space-med"></div>
594
- <label><?php _e('Bullets margin :', MSWP_TEXT_DOMAIN); ?> </label> {{number-input value=currentControl.margin min=null}} px
595
  <div class="msp-form-space-med"></div>
596
- <label><?php _e('Space between bullets :', MSWP_TEXT_DOMAIN); ?> </label> {{number-input value=currentControl.space min=null}} px
597
  </div>
598
  <div class="msp-metabox-indented">
599
- <label><?php _e('Hide bullets under this window width :', MSWP_TEXT_DOMAIN); ?> </label> {{number-input value=currentControl.hideUnder}} px
600
  </div>
601
  </div>
602
  {{/meta-box}}
@@ -606,40 +606,40 @@
606
  {{#meta-box title="Scrollbar Control Options"}}
607
  <div class="msp-metabox-row">
608
  <div class="msp-metabox-indented">
609
- {{switch-box value=currentControl.autoHide}} <label><?php _e('Hide scrollbar when mouse leaves slider', MSWP_TEXT_DOMAIN); ?></label>
610
  <div class="msp-form-space-med"></div>
611
- {{switch-box value=currentControl.overVideo}} <label><?php _e('Show scrollbar over Youtube/Vimeo video player', MSWP_TEXT_DOMAIN); ?></label>
612
  </div>
613
  <div class="msp-metabox-indented">
614
- {{switch-box value=currentControl.inset}} <label><?php _e('Insert scrollbar inside slider', MSWP_TEXT_DOMAIN); ?></label>
615
  </div>
616
 
617
  {{!--<div class="msp-metabox-indented">
618
- <label><?php _e('Scrollbar direction :', MSWP_TEXT_DOMAIN); ?> </label>
619
  {{#dropdwon-List value=currentControl.dir width=100}}
620
- <option value="h"><?php _e('Horizontal', MSWP_TEXT_DOMAIN); ?></option>
621
- <option value="v"><?php _e('Vertical', MSWP_TEXT_DOMAIN); ?></option>
622
  {{/dropdwon-List}}
623
  <div class="msp-form-space-med"></div>
624
  </div>--}}
625
 
626
  <div class="msp-metabox-indented">
627
- <label><?php _e('Scrollbar handle color :', MSWP_TEXT_DOMAIN); ?> </label> {{color-picker value=currentControl.color}}
628
  <div class="msp-form-space-med"></div>
629
- <label><?php _e('Hide scrollbar under this window width :', MSWP_TEXT_DOMAIN); ?> </label> {{number-input value=currentControl.hideUnder}} px
630
  </div>
631
  <div class="msp-metabox-indented">
632
- <?php _e('Align control :', MSWP_TEXT_DOMAIN); ?>
633
  {{#dropdwon-List value=currentControl.align width=100}}
634
- <option value="top"><?php _e('Top', MSWP_TEXT_DOMAIN); ?></option>
635
- <option value="right"><?php _e('Right', MSWP_TEXT_DOMAIN); ?></option>
636
- <option value="left"><?php _e('Left', MSWP_TEXT_DOMAIN); ?></option>
637
- <option value="bottom"><?php _e('Bottom', MSWP_TEXT_DOMAIN); ?></option>
638
  {{/dropdwon-List}}
639
  <div class="msp-form-space-med"></div>
640
- <label><?php _e('Scrollbar width :', MSWP_TEXT_DOMAIN); ?> </label> {{number-input value=currentControl.width}} px
641
  <div class="msp-form-space-med"></div>
642
- <label><?php _e('Scrollbar margin :', MSWP_TEXT_DOMAIN); ?> </label> {{number-input value=currentControl.margin min=null}} px
643
  </div>
644
  </div>
645
  {{/meta-box}}
@@ -649,30 +649,30 @@
649
  {{#meta-box title="Circle Timer Control Options"}}
650
  <div class="msp-metabox-row">
651
  <div class="msp-metabox-indented">
652
- {{switch-box value=currentControl.autoHide}} <label><?php _e('Hide cricle timer when mouse leaves slider', MSWP_TEXT_DOMAIN); ?></label>
653
  <div class="msp-form-space-med"></div>
654
- {{switch-box value=currentControl.overVideo}} <label><?php _e('Show circle timer over Youtube/Vimeo video player', MSWP_TEXT_DOMAIN); ?></label>
655
  </div>
656
  {{!--<div class="msp-metabox-indented">
657
- <?php _e('Align control :', MSWP_TEXT_DOMAIN); ?>
658
  {{#dropdwon-List value=currentControl.align width=100}}
659
- <option value="tl"><?php _e('Top Left', MSWP_TEXT_DOMAIN); ?></option>
660
- <option value="tr"><?php _e('Top Right', MSWP_TEXT_DOMAIN); ?></option>
661
- <option value="bl"><?php _e('Bottom Left', MSWP_TEXT_DOMAIN); ?></option>
662
- <option value="br"><?php _e('Bottom Right', MSWP_TEXT_DOMAIN); ?></option>
663
  {{/dropdwon-List}}
664
  </div>--}}
665
  <div class="msp-metabox-indented">
666
- <label><?php _e('Hide circle timer under this window width :', MSWP_TEXT_DOMAIN); ?> </label> {{number-input value=currentControl.hideUnder}} px
667
  </div>
668
  <div class="msp-metabox-indented">
669
- {{!--<label><?php _e('Circle timer margin :', MSWP_TEXT_DOMAIN); ?> </label> {{number-input value=currentControl.margin min=null}} px
670
  <div class="msp-form-space-med"></div>--}}
671
- <label><?php _e('Circle stroke :', MSWP_TEXT_DOMAIN); ?> </label> {{number-input value=currentControl.stroke}} px
672
  <div class="msp-form-space-med"></div>
673
- <label><?php _e('Circle radius :', MSWP_TEXT_DOMAIN); ?> </label> {{number-input value=currentControl.radius}} px
674
  <div class="msp-form-space-med"></div>
675
- <label><?php _e('Circle color :', MSWP_TEXT_DOMAIN); ?> </label> {{color-picker value=currentControl.color}}
676
  </div>
677
  </div>
678
  {{/meta-box}}
@@ -682,32 +682,32 @@
682
  {{#meta-box title="Slide Info Control Options"}}
683
  <div class="msp-metabox-row">
684
  <div class="msp-metabox-indented">
685
- {{switch-box value=currentControl.autoHide}} <label><?php _e('Hide slide info when mouse leaves slider', MSWP_TEXT_DOMAIN); ?></label>
686
  <div class="msp-form-space-med"></div>
687
- {{switch-box value=currentControl.overVideo}} <label><?php _e('Show slide info over Youtube/Vimeo video player', MSWP_TEXT_DOMAIN); ?></label>
688
  </div>
689
  <div class="msp-metabox-indented">
690
- {{switch-box value=currentControl.inset}} <label><?php _e('Insert slide info inside slider', MSWP_TEXT_DOMAIN); ?></label>
691
  </div>
692
  <div class="msp-metabox-indented">
693
- <?php _e('Align control :', MSWP_TEXT_DOMAIN); ?>
694
  {{#dropdwon-List value=currentControl.align width=100}}
695
- <option value="top"><?php _e('Top', MSWP_TEXT_DOMAIN); ?></option>
696
- <option value="right"><?php _e('Right', MSWP_TEXT_DOMAIN); ?></option>
697
- <option value="left"><?php _e('Left', MSWP_TEXT_DOMAIN); ?></option>
698
- <option value="bottom"><?php _e('Bottom', MSWP_TEXT_DOMAIN); ?></option>
699
  {{/dropdwon-List}}
700
  <div class="msp-form-space-med"></div>
701
- <label><?php _e('Slide info margin :', MSWP_TEXT_DOMAIN); ?> </label> {{number-input value=currentControl.margin min=null}} px
702
  </div>
703
  <div class="msp-metabox-indented">
704
- <label><?php _e('Slide info width :', MSWP_TEXT_DOMAIN); ?> </label> {{number-input value=currentControl.width}} px
705
  <div class="msp-form-space-med"></div>
706
- <label><?php _e('Slide info height :', MSWP_TEXT_DOMAIN); ?> </label> {{number-input value=currentControl.height}} px
707
  </div>
708
  </div>
709
  <div class="msp-metabox-indented">
710
- <label><?php _e('Hide slide info under this window width :', MSWP_TEXT_DOMAIN); ?> </label> {{number-input value=currentControl.hideUnder}} px
711
  </div>
712
  </div>
713
  {{/meta-box}}
@@ -717,64 +717,64 @@
717
  {{#meta-box title="Thumblist/Tabs Control Options"}}
718
  <div class="msp-metabox-row">
719
  <div class="msp-metabox-indented">
720
- {{switch-box value=currentControl.autoHide}} <label><?php _e('Hide thumblist/tabs when mouse leaves slider', MSWP_TEXT_DOMAIN); ?></label>
721
  <div class="msp-form-space-med"></div>
722
- {{switch-box value=currentControl.overVideo}} <label><?php _e('Show thumblist/tabs over Youtube/Vimeo video player', MSWP_TEXT_DOMAIN); ?></label>
723
  </div>
724
  <div class="msp-metabox-indented">
725
- {{switch-box value=currentControl.inset}} <label><?php _e('Insert thumblist/tabs inside slider', MSWP_TEXT_DOMAIN); ?></label>
726
  <div class="msp-form-space-med"></div>
727
- {{switch-box value=currentControl.arrows}} <label><?php _e('Insert navigation arrows', MSWP_TEXT_DOMAIN); ?></label>
728
  </div>
729
  <div class="msp-metabox-indented">
730
- {{switch-box value=currentControl.hoverChange}} <label><?php _e('Change slides on hovering over thumbs/tabs.', MSWP_TEXT_DOMAIN); ?></label>
731
  </div>
732
  <div class="msp-metabox-indented">
733
- <?php _e('Align control :', MSWP_TEXT_DOMAIN); ?>
734
  {{#dropdwon-List value=currentControl.align width=100}}
735
- <option value="top"><?php _e('Top', MSWP_TEXT_DOMAIN); ?></option>
736
- <option value="right"><?php _e('Right', MSWP_TEXT_DOMAIN); ?></option>
737
- <option value="left"><?php _e('Left', MSWP_TEXT_DOMAIN); ?></option>
738
- <option value="bottom"><?php _e('Bottom', MSWP_TEXT_DOMAIN); ?></option>
739
  {{/dropdwon-List}}
740
  <div class="msp-form-space-med"></div>
741
- <label><?php _e('Thumblist/Tabs margin :', MSWP_TEXT_DOMAIN); ?> </label> {{number-input value=currentControl.margin min=null}} px
742
  </div>
743
  <div class="msp-metabox-indented">
744
- <?php _e('Appearance :', MSWP_TEXT_DOMAIN); ?>
745
  {{#dropdwon-List value=currentControl.type width=100}}
746
- <option value="thumbs"><?php _e('Thumblist', MSWP_TEXT_DOMAIN); ?></option>
747
- <option value="tabs"><?php _e('Tabs', MSWP_TEXT_DOMAIN); ?></option>
748
  {{/dropdwon-List}}
749
  <div class="msp-form-space-med"></div>
750
- <label><?php _e('Hide thumblist/tabs under this window width :', MSWP_TEXT_DOMAIN); ?> </label> {{number-input value=currentControl.hideUnder}} px
751
  </div>
752
 
753
  {{!--<div class="msp-metabox-indented">
754
- <label><?php _e('Thumblist/Tabs direction :', MSWP_TEXT_DOMAIN); ?> </label>
755
  {{#dropdwon-List value=currentControl.dir width=100}}
756
- <option value="h"><?php _e('Horizontal', MSWP_TEXT_DOMAIN); ?></option>
757
- <option value="v"><?php _e('Vertical', MSWP_TEXT_DOMAIN); ?></option>
758
  {{/dropdwon-List}}
759
  </div>--}}
760
 
761
  {{#if isTab}}
762
  <div class="msp-metabox-indented">
763
- {{switch-box value=currentControl.insertThumb}} <?php _e('Insert thumbnail inside tabs', MSWP_TEXT_DOMAIN); ?>
764
  </div>
765
  {{else}}
766
  <div class="msp-metabox-indented">
767
- <?php _e('Thumb background fill mode :', MSWP_TEXT_DOMAIN); ?>
768
  {{view MSPanel.Fillmode value=currentControl.fillMode}}
769
  </div>
770
  {{/if}}
771
 
772
  <div class="msp-metabox-indented">
773
- <label><?php _e('Thumb/Tab width :', MSWP_TEXT_DOMAIN); ?> </label> {{number-input value=currentControl.width}} px
774
  <div class="msp-form-space-med"></div>
775
- <label><?php _e('Thumb/Tab height :', MSWP_TEXT_DOMAIN); ?> </label> {{number-input value=currentControl.height}} px
776
  <div class="msp-form-space-med"></div>
777
- <label><?php _e('Space between thumbs/tabs :', MSWP_TEXT_DOMAIN); ?> </label> {{number-input value=currentControl.space}} px
778
  </div>
779
 
780
  </div>
@@ -786,10 +786,10 @@
786
  {{#meta-box title="Slider Callbacks"}}
787
  <div class="msp-metabox-row">
788
 
789
- <h4><?php _e('Here you can add or remove callbacks to slider', MSWP_TEXT_DOMAIN); ?></h4>
790
 
791
  <div class="msp-metabox-indented">
792
- <label><?php _e('Add new callback', MSWP_TEXT_DOMAIN); ?></label>
793
  {{#if noMore}}
794
  <button class="msp-add-btn disabled"><span class="msp-ico msp-ico-whiteadd"></span></button>
795
  {{else}}
@@ -800,7 +800,7 @@
800
  {{#each callback in availableCallbacks}}
801
  <option {{bind-attr value=callback.value}}>{{callback.label}}</option>
802
  {{else}}
803
- <option><?php _e('-- All callbacks are added --', MSWP_TEXT_DOMAIN); ?></option>
804
  {{/each}}
805
  {{/dropdwon-List}}
806
  </div>
@@ -813,7 +813,7 @@
813
  {{#code-mirror width="100%" height="auto" mode="javascript" value=callback.content}}{{/code-mirror}}
814
  </div>
815
  <div class="msp-metabox-indented">
816
- <button {{action "removeCallback" callback}} class="msp-blue-btn msp-remove-btn-med"><?php _e('Remove', MSWP_TEXT_DOMAIN); ?></button>
817
  </div>
818
  </div>
819
  {{/each}}
17
  </div>
18
  <div id="panelLoading" class="msp-loading">
19
  <img src="<?php echo MSWP_AVERTA_ADMIN_URL . '/views/slider-panel'; ?>/images/loading.gif">
20
+ <?php _e('Loading data...', 'master-slider'); ?>
21
  </div>
22
  <div id="msp-root" class="msp-container"> </div>
23
  <div id="mspHiddenEditor" style="display:none">
34
  {{else}}
35
  <nav class="msp-main-nav">
36
  <ul>
37
+ <li>{{#link-to 'settings'}} <?php _e('Slider Settings', 'master-slider'); ?> <span class="msp-ico msp-ico-settings"></span>{{/link-to}}</li>
38
+ {{#if isFlickr }}<li>{{#link-to 'flickr'}} <?php _e('Flickr Settings', 'master-slider'); ?> <span class="msp-ico msp-ico-flickr"></span>{{/link-to}}</li>{{/if}}
39
+ {{#if isFacebook }}<li>{{#link-to 'facebook'}} <?php _e('Facebook Settings', 'master-slider'); ?> <span class="msp-ico msp-ico-facebook"></span>{{/link-to}}</li>{{/if}}
40
+ {{#if isPost }}<li>{{#link-to 'post'}} <?php _e('Posts Settings', 'master-slider'); ?> <span class="msp-ico msp-ico-posts"></span>{{/link-to}}</li>{{/if}}
41
+ {{#if isWcproduct }}<li>{{#link-to 'wcproduct'}} <?php _e('Product Slider Settings', 'master-slider'); ?> <span class="msp-ico msp-ico-wooc"></span>{{/link-to}}</li>{{/if}}
42
+ <li>{{#link-to 'slides'}} <?php _e('Slides', 'master-slider'); ?> <span class="msp-ico msp-ico-slides"></span>{{/link-to}}</li>
43
+ <li>{{#link-to 'controls'}} <?php _e('Slider Controls', 'master-slider'); ?> <span class="msp-ico msp-ico-controls"></span>{{/link-to}}</li>
44
+ <li>{{#link-to 'callbacks'}} <?php _e('Slider Callbacks', 'master-slider'); ?> <span class="msp-ico msp-ico-api"></span>{{/link-to}}</li>
45
  <li class="msp-upgrade-btn"> {{#link-to 'pro-features'}}Upgrade to PRO <span class="msp-ico msp-ico-pro"></span>{{/link-to}}</li>
46
  </ul>
47
  </nav>
48
  <div class="clear"></div>
49
  {{outlet}}
50
  <div class="msp-shortcode-cont">
51
+ <span><?php _e('Shortcode :', 'master-slider'); ?> </span> {{view MSPanel.SimpleCodeBlock value=shortCode width=120}}
52
+ <span><?php _e('PHP function :', 'master-slider'); ?> </span> {{view MSPanel.SimpleCodeBlock value=phpFunction width=160}}
53
  </div>
54
  <div class="msp-save-bar-placeholder" id="saveBarPlaceHolder"></div>
55
  <div class="msp-save-bar" id="saveBar">
56
+ <button id="msp-preview-btn" {{action showPreview}} class="msp-blue-btn msp-save-changes"> <?php _e('Preview', 'master-slider'); ?></button>
57
  {{#if isSending}}
58
+ <button class="msp-blue-btn msp-save-changes disabled"> <?php _e('Saving...', 'master-slider'); ?></button>
59
  {{else}}
60
+ <button class="msp-blue-btn msp-save-changes" {{action "saveAll"}}> <?php _e('Save Changes', 'master-slider'); ?></button>
61
  {{/if}}
62
  <div class="msp-saving-msg-cont">
63
  <span {{bind-attr class=":msp-save-status savingStatus"}}>{{statusMsg}}</span>
64
+ <div {{bind-attr class=":msp-time-ago savingStatus"}}><?php _e('Saved', 'master-slider'); ?> <span id="timeAgo"></span>.</div>
65
  </div>
66
  </div>
67
  {{/if}}
68
  </script>
69
 
70
  <script type="text/x-handlebars" id="pro-features">
71
+ {{#meta-box title="Upgrade Master Slider to PRO"}}
72
+ <div class="msp-metabox-row msp-pro-tab">
73
+ <div class="msp-pro-featurs">
74
+ <h2>Add Features to Master Slider</h2>
75
+ <p>Take your WordPress site to the next level with Master Slider PRO. This plugin crunches all type of content, making it a dead-simple way to display dynamic slides in the exact the way YOU want them to look.
76
+ Best of all, Master Slider PRO works perfectly with any existing WordPress theme and doesn’t affect overall site performance. Which means, less bloat and more control!</p>
77
+ <div class="msp-pf-figure">
78
+ <img src="<?php echo MSWP_AVERTA_ADMIN_URL . '/views/slider-panel'; ?>/images/pro-features/layers.jpg" alt="Animated layers">
79
+ <h6>Animated Layers</h6>
80
+ </div>
81
+ <div class="msp-pf-figure">
82
+ <img src="<?php echo MSWP_AVERTA_ADMIN_URL . '/views/slider-panel'; ?>/images/pro-features/videos.jpg" alt="Videos">
83
+ <h6>Videos</h6>
84
+ </div>
85
+ <div class="msp-pf-figure">
86
+ <img src="<?php echo MSWP_AVERTA_ADMIN_URL . '/views/slider-panel'; ?>/images/pro-features/sample-sliders.jpg" alt="Sample sliders">
87
+ <h6>Sample Sliders</h6>
88
+ </div>
89
+ <div class="msp-pf-figure">
90
+ <img src="<?php echo MSWP_AVERTA_ADMIN_URL . '/views/slider-panel'; ?>/images/pro-features/dynamic-sources.jpg" alt="Dynamic sources">
91
+ <h6>Dynamic Sources</h6>
92
+ </div>
93
+ <div class="msp-pf-figure">
94
+ <img src="<?php echo MSWP_AVERTA_ADMIN_URL . '/views/slider-panel'; ?>/images/pro-features/parallax.jpg" alt="Prallax effect">
95
+ <h6>Parallax Effect</h6>
96
+ </div>
97
+ <div class="msp-pf-figure">
98
+ <img src="<?php echo MSWP_AVERTA_ADMIN_URL . '/views/slider-panel'; ?>/images/pro-features/dedicated-support.jpg" alt="Dedicated support">
99
+ <h6>Dedicated Support</h6>
100
+ </div>
101
+ </div>
102
+ <div class="clear"></div>
103
+ </div>
104
+ <div class="msp-metabox-row msp-pro-tab msp-pf-admin-section">
105
+ <div class="msp-pf-admin-ss">
106
+ <div class="msp-pf-figure">
107
+ <a data-featherlight="image" href="<?php echo MSWP_AVERTA_ADMIN_URL . '/views/slider-panel'; ?>/images/pro-features/admin-area/layers.jpg">
108
+ <img src="<?php echo MSWP_AVERTA_ADMIN_URL . '/views/slider-panel'; ?>/images/pro-features/admin-area/thumbs/layers.jpg" alt="layers">
109
+ <div class="msp-pf-thumb-ol"><img src="<?php echo MSWP_AVERTA_ADMIN_URL . '/views/slider-panel'; ?>/images/pro-features/admin-area/zoom.png" alt="zoom-ico"></div>
110
+ </a>
111
+ </div>
112
+ <div class="msp-pf-figure">
113
+ <a data-featherlight="image" href="<?php echo MSWP_AVERTA_ADMIN_URL . '/views/slider-panel'; ?>/images/pro-features/admin-area/sample-sliders.jpg">
114
+ <img src="<?php echo MSWP_AVERTA_ADMIN_URL . '/views/slider-panel'; ?>/images/pro-features/admin-area/thumbs/sample-sliders.jpg" alt="sample sliders">
115
+ <div class="msp-pf-thumb-ol"><img src="<?php echo MSWP_AVERTA_ADMIN_URL . '/views/slider-panel'; ?>/images/pro-features/admin-area/zoom.png" alt="zoom-ico"></div>
116
+ </a>
117
+ </div>
118
+ <div class="msp-pf-figure">
119
+ <a data-featherlight="image" href="<?php echo MSWP_AVERTA_ADMIN_URL . '/views/slider-panel'; ?>/images/pro-features/admin-area/templates.jpg">
120
+ <img src="<?php echo MSWP_AVERTA_ADMIN_URL . '/views/slider-panel'; ?>/images/pro-features/admin-area/thumbs/templates.jpg" alt="slider templates">
121
+ <div class="msp-pf-thumb-ol"><img src="<?php echo MSWP_AVERTA_ADMIN_URL . '/views/slider-panel'; ?>/images/pro-features/admin-area/zoom.png" alt="zoom-ico"></div>
122
+ </a>
123
+ </div>
124
+ <div class="msp-pf-figure">
125
+ <a data-featherlight="image" href="<?php echo MSWP_AVERTA_ADMIN_URL . '/views/slider-panel'; ?>/images/pro-features/admin-area/transition-editor.jpg">
126
+ <img src="<?php echo MSWP_AVERTA_ADMIN_URL . '/views/slider-panel'; ?>/images/pro-features/admin-area/thumbs/transition-editor.jpg" alt="transition editor">
127
+ <div class="msp-pf-thumb-ol"><img src="<?php echo MSWP_AVERTA_ADMIN_URL . '/views/slider-panel'; ?>/images/pro-features/admin-area/zoom.png" alt="zoom-ico"></div>
128
+ </a>
129
+ </div>
130
+ <div class="msp-pf-figure">
131
+ <a data-featherlight="image" href="<?php echo MSWP_AVERTA_ADMIN_URL . '/views/slider-panel'; ?>/images/pro-features/admin-area/style-editor.jpg">
132
+ <img src="<?php echo MSWP_AVERTA_ADMIN_URL . '/views/slider-panel'; ?>/images/pro-features/admin-area/thumbs/style-editor.jpg" alt="style editor">
133
+ <div class="msp-pf-thumb-ol"><img src="<?php echo MSWP_AVERTA_ADMIN_URL . '/views/slider-panel'; ?>/images/pro-features/admin-area/zoom.png" alt="zoom-ico"></div>
134
+ </a>
135
+ </div>
136
+ <div class="msp-pf-figure">
137
+ <a data-featherlight="image" href="<?php echo MSWP_AVERTA_ADMIN_URL . '/views/slider-panel'; ?>/images/pro-features/admin-area/button-editor.jpg">
138
+ <img src="<?php echo MSWP_AVERTA_ADMIN_URL . '/views/slider-panel'; ?>/images/pro-features/admin-area/thumbs/button-editor.jpg" alt="style editor">
139
+ <div class="msp-pf-thumb-ol"><img src="<?php echo MSWP_AVERTA_ADMIN_URL . '/views/slider-panel'; ?>/images/pro-features/admin-area/zoom.png" alt="zoom-ico"></div>
140
+ </a>
141
+ </div>
142
+
143
+ <div class="clear"></div>
144
+ <h3>See It In Action</h3>
145
+ <p>Want to give it a shot right away? Just give it a test drive and create your own slider, or try some of our ready-made samples!</p>
146
+ <a class="msp-blue-btn msp-pf-testdrive" href="http://avt.li/msptd" target="_blank"> <span class="msp-ico msp-ico-testdrive"></span> Test Drive Now</a>
147
+ </div>
148
+ <div class="clear"></div>
149
+ </div>
150
+ <div class="msp-metabox-row msp-pro-tab msp-pf-join-section">
151
+ <img src="<?php echo MSWP_AVERTA_ADMIN_URL . '/views/slider-panel'; ?>/images/pro-features/join.png" alt="Join the PRO version" class="msp-join-ico">
152
+ <h3>Join 4600+ PRO Users</h3>
153
+ <p>Ready to take advantage of all of the amazing features packed into MasterSlider PRO? We hope so!</p>
154
+ <a class="msp-pf-btn msp-pf-upgrade-btn" href="http://avt.li/mspup" target="_blank">Upgrade Now</a>
155
+ <a class="msp-pf-btn msp-pf-more-btn" href="http://avt.li/mspt" target="_blank">See All Features</a>
156
+ <div class="clear"></div>
157
+ </div>
158
+ {{/meta-box}}
159
  </script>
160
  <!-- Slider Settings Page -->
161
  <script type="text/x-handlebars" id="settings">
162
 
163
+ {{#meta-box title="<?php _e('General Settings', 'master-slider'); ?>"}}
164
 
165
  <div class="msp-metabox-row">
166
 
167
+ <h4><?php _e('Slider name and dimentions', 'master-slider'); ?></h4>
168
 
169
  <div class="msp-metabox-indented">
170
+ <label><?php _e('Slider name :', 'master-slider'); ?> </label> {{input value=name size="40"}}
171
  </div>
172
  <div class="msp-metabox-indented">
173
+ <label><?php _e('Slider width :', 'master-slider'); ?> </label> {{number-input value=width}} px
174
  <span class="msp-form-space"></span>
175
+ <label><?php _e('Slider height :', 'master-slider'); ?> </label> {{number-input value=height}} px
176
  </div>
177
 
178
  <div class="msp-metabox-indented">
179
+ {{switch-box value=autoCrop}}<label><?php _e('Automatically crop and resize slider images based on above size.', 'master-slider'); ?></label>
180
  </div>
181
 
182
+ <h4><?php _e('Slider sizing method', 'master-slider'); ?></h4>
183
 
184
  <div class="msp-metabox-indented">
185
  {{#view MSPanel.Select value=layout width="400" }}
186
+ <option value="boxed"><?php _e('Boxed layout', 'master-slider'); ?></option>
187
+ <option value="fullwidth"><?php _e('Full-width', 'master-slider'); ?></option>
188
  {{/view}}
189
  {{#if showAutoHeight}}
190
  <span class="msp-form-space"></span>
191
+ {{switch-box value=autoHeight}}<label><?php _e('Auto-height slider', 'master-slider'); ?></label>
192
  {{/if}}
193
  </div>
194
  {{#if showMinHeight}}
195
  <div class="msp-metabox-indented">
196
+ <label><?php _e('Minimum height amount :', 'master-slider'); ?> </label>{{number-input value=minHeight}} px
197
  </div>
198
  {{/if}}
199
  {{#if showWrapperWidth}}
200
  <div class="msp-metabox-indented">
201
+ <label><?php _e('Slider wrapper width :', 'master-slider'); ?> </label>{{number-input value=wrapperWidth}}
202
  {{#view MSPanel.Select value=wrapperWidthUnit width="40" }}
203
  <option value="px">px</option>
204
  <option value="%">%</option>
210
 
211
  {{/meta-box}}
212
 
213
+ {{#meta-box title="<?php _e('Slider Transition', 'master-slider'); ?>"}}
214
  <div class="msp-metabox-row">
215
+ <h4><?php _e('Change slider transition, transition speed and space between slides', 'master-slider'); ?></h4>
216
 
217
  <div class="msp-metabox-indented">
218
+ <label><?php _e('Transition :', 'master-slider'); ?> </label>
219
  {{#view MSPanel.Select value=trView width=150}}
220
  <option value="basic">Normal</option>
221
  <option value="fade">Fade</option>
222
  {{/view}}
223
  <span class="msp-form-space"></span>
224
+ <label><?php _e('Transition speed :', 'master-slider'); ?> </label> {{number-input value=speed}}
225
  </div>
226
  <div class="msp-metabox-indented">
227
+ <label><?php _e('Direction :', 'master-slider'); ?> </label>
228
  {{#view MSPanel.Select value=dir width="120"}}
229
+ <option value="h"><?php _e('Horizontal', 'master-slider'); ?></option>
230
+ <option value="v"><?php _e('Vertical', 'master-slider'); ?></option>
231
  {{/view}}
232
  <span class="msp-form-space"></span>
233
+ <label><?php _e('Slide space :', 'master-slider'); ?> </label> {{number-input value=space}} px
234
  </div>
235
  </div>
236
  {{/meta-box}}
237
 
238
 
239
+ {{#meta-box title="<?php _e('Navigation', 'master-slider'); ?>"}}
240
 
241
  <div class="msp-metabox-row">
242
+ <h4><?php _e('Slideshow behavior and sorting slides', 'master-slider'); ?></h4>
243
  <div class="msp-metabox-indented">
244
+ {{switch-box value=autoplay}}<label><?php _e('Autoplay (Slideshow)', 'master-slider'); ?></label>
245
  <span class="msp-form-space"></span>
246
+ {{switch-box value=loop}}<label><?php _e('Loop navigation', 'master-slider'); ?> </label>
247
  <span class="msp-form-space"></span>
248
+ {{switch-box value=endPause}}<label><?php _e('Pause at end slide', 'master-slider'); ?></label>
249
  </div>
250
  <div class="msp-metabox-indented">
251
+ {{switch-box value=overPause}}<label><?php _e('Pause on hover', 'master-slider'); ?></label>
252
  <span class="msp-form-space"></span>
253
+ {{switch-box value=shuffle}}<label><?php _e('Random order', 'master-slider'); ?></label>
254
  </div>
255
  <div class="msp-metabox-indented">
256
+ <label><?php _e('Start with slide :', 'master-slider'); ?> </label> {{number-input value=start min=1}}
257
  </div>
258
+ <h4><?php _e('Slider navigation methods', 'master-slider'); ?></h4>
259
  <div class="msp-metabox-indented">
260
+ {{switch-box value=swipe}}<label><?php _e('Touch swipe navigation', 'master-slider'); ?></label>
261
  <span class="msp-form-space"></span>
262
+ {{switch-box value=mouse}}<label><?php _e('Mouse swipe navigation', 'master-slider'); ?></label>
263
  <span class="msp-form-space"></span>
264
+ {{switch-box value=grabCursor}}<label><?php _e('Use grab mouse cursor', 'master-slider'); ?></label>
265
  </div>
266
  <div class="msp-metabox-indented">
267
+ {{switch-box value=wheel}}<label><?php _e('Mouse wheel navigation', 'master-slider'); ?></label>
268
  </div>
269
  <div class="msp-metabox-indented">
270
+ {{switch-box value=startOnAppear}}<label><?php _e('Start slider when appears in browser window.', 'master-slider'); ?></label>
271
  </div>
272
+ <h4><?php _e('Slide preloading', 'master-slider'); ?></h4>
273
  <div class="msp-metabox-indented">
274
  {{#view MSPanel.Select value=preloadMethod width="200" }}
275
+ <option value="nearby"><?php _e('Load nearby slides', 'master-slider'); ?></option>
276
+ <option value="-1"><?php _e('Load slides in sequence', 'master-slider'); ?></option>
277
+ <option value="all"><?php _e('Load all slides before init', 'master-slider'); ?></option>
278
  {{/view}}
279
  {{#if showNearbyNum}}
280
  <span class="msp-form-space"></span>
281
+ <?php _e('Number of slides :', 'master-slider'); ?> {{number-input value=preload }}
282
  {{/if}}
283
  </div>
284
  </div>
285
 
286
  {{/meta-box}}
287
 
288
+ {{#meta-box title="<?php _e('Appearance', 'master-slider'); ?>"}}
289
 
290
  <div class="msp-metabox-row">
291
+ <h4><?php _e('Slider Skin', 'master-slider'); ?></h4>
292
  <div class="msp-metabox-indented">
293
+ <label><?php _e('Skin :', 'master-slider'); ?> </label>
294
  {{#dropdwon-List value=skin width=180}}
295
  {{#each skin in sliderSkins}}
296
  <option {{bind-attr value=skin.class}}>{{skin.label}}</option>
297
  {{/each}}
298
 
299
  {{!--
300
+ <option value="ms-skin-default"><?php _e('Default', 'master-slider'); ?></option>
301
+ <option value="ms-skin-light-2"><?php _e('Light 2', 'master-slider'); ?></option>
302
+ <option value="ms-skin-light-3"><?php _e('Light 3', 'master-slider'); ?></option>
303
+ <option value="ms-skin-light-4"><?php _e('Light 4', 'master-slider'); ?></option>
304
+ <option value="ms-skin-light-5"><?php _e('Light 5', 'master-slider'); ?></option>
305
+ <option value="ms-skin-light-6"><?php _e('Light 6', 'master-slider'); ?></option>
306
+ <option value="ms-skin-light-6 round-skin"><?php _e('Light 6 Round', 'master-slider'); ?></option>
307
+ <option value="ms-skin-contrast"><?php _e('Contrast', 'master-slider'); ?></option>
308
+ <option value="ms-skin-black-1"><?php _e('Black 1', 'master-slider'); ?></option>
309
+ <option value="ms-skin-black-2"><?php _e('Black 2', 'master-slider'); ?></option>
310
+ <option value="ms-skin-black-2 round-skin"><?php _e('Black 2 Round', 'master-slider'); ?></option>
311
+ <option value="ms-skin-metro"><?php _e('Metro', 'master-slider'); ?></option>
312
  --}}
313
  {{/dropdwon-List}}
314
  </div>
315
  <div class="msp-metabox-indented">
316
+ <label><?php _e('Align center slider controls :', 'master-slider'); ?> </label> {{switch-box value=centerControls}}
317
  </div>
318
+ <h4><?php _e('Slider background settings', 'master-slider'); ?></h4>
319
  <div class="msp-metabox-indented">
320
+ <label><?php _e('Background image :', 'master-slider'); ?> </label> {{view MSPanel.ImgSelect value=bgImage thumb=bgImageThumb}}
321
  <span class="msp-form-space"></span>
322
+ <label><?php _e('Background color :', 'master-slider'); ?> </label> {{color-picker value=bgColor}}
323
  </div>
324
+ <h4><?php _e('Slider custom class name and style', 'master-slider'); ?></h4>
325
  <div class="msp-metabox-indented">
326
+ <label><?php _e('Class name :', 'master-slider'); ?> </label> {{input value=className}}
327
  </div>
328
  {{!--<div class="msp-metabox-indented">
329
+ <label><?php _e('Inline style :', 'master-slider'); ?> </label> {{input value=inlineStyle size="50"}}
330
  </div>--}}
331
  <div class="msp-metabox-indented">
332
+ <label><?php _e('Slider custom styles :', 'master-slider'); ?> </label>
333
  </div>
334
  <div class="msp-metabox-indented">
335
  {{#code-mirror width="880" height="250" mode="css" value=customStyle}}{{/code-mirror}}
343
  <script type="text/x-handlebars" id="slides">
344
  {{#if customSlider}}
345
  <!-- Slides List -->
346
+ {{#meta-box title="<?php _e('Slides', 'master-slider'); ?>"}}
347
  <div class="msp-metabox-row">
348
  {{view MSPanel.SlideList}}
349
  </div>
360
  <div class="msp-metabox-handle">
361
 
362
  <ul class="tabs">
363
+ <li class="active"><a href="#sl-bg"><?php _e('Background', 'master-slider'); ?></a></li>
364
+ <li><a href="#sl-val"><?php _e('Video and Link', 'master-slider'); ?></a></li>
365
+ <li><a href="#sl-inf"><?php _e('Slide Info', 'master-slider'); ?></a></li>
366
+ <li><a href="#sl-misc"><?php _e('Misc', 'master-slider'); ?></a></li>
367
  </ul>
368
 
369
  <div class="msp-metabox-toggle"></div>
381
  {{#meta-box title="Slide"}}
382
  <div class="msp-metabox-row">
383
  <div class="msp-metabox-indented">
384
+ <label><?php _e('Slide duration :', 'master-slider'); ?> </label> {{number-input class="msp-number-input" min=0 max=300 step="0.1" value=currentSlide.duration}} s
385
  </div>
386
  </div>
387
  <hr class="msp-metabox-hr">
392
  <!-- Slide Background Settings Partial -->
393
  <script type="text/x-handlebars" id="slide-background">
394
  <div class="msp-metabox-row">
395
+ <h4><?php _e('Choose slide background and thumbnail', 'master-slider'); ?></h4>
396
  <div class="msp-metabox-indented">
397
+ <label><?php _e('Background :', 'master-slider'); ?> </label> {{view MSPanel.ImgSelect value=currentSlide.bg thumb=currentSlide.bgThumb }}
398
  <span class="msp-form-space"></span>
399
+ <label><?php _e('Fillmode :', 'master-slider'); ?> </label> {{view MSPanel.Fillmode value=currentSlide.fillMode}}
400
  <span class="msp-form-space"></span>
401
+ <label><?php _e('Thumbnail :', 'master-slider'); ?> </label> {{view MSPanel.ImgSelect value=currentSlide.thumbOrginal thumb=currentSlide.thumb}}
402
  </div>
403
  </div>
404
  </script>
405
  <!-- Slide Embeded Video and Link -->
406
  <script type="text/x-handlebars" id="slide-video-and-link">
407
  <div class="msp-metabox-row">
408
+ <h4><?php _e('Link this slide', 'master-slider'); ?> </h4>
409
  <div class="msp-metabox-indented">
410
+ <label><?php _e('URL :', 'master-slider'); ?> </label> {{input class="msp-path-input" value=currentSlide.link}}
411
  {{view MSPanel.URLTarget value=currentSlide.linkTarget }}
412
  </div>
413
  <div class="msp-metabox-indented">
414
+ <label><?php _e('Link id :', 'master-slider'); ?> </label> {{input size=20 value=currentSlide.linkId}}
415
  <span class="msp-form-space"></span>
416
+ <label><?php _e('Link class :', 'master-slider'); ?> </label> {{input size=20 value=currentSlide.linkClass}}
417
  </div>
418
  <div class="msp-metabox-indented">
419
+ <label><?php _e('Link rel :', 'master-slider'); ?> </label> {{input size=20 value=currentSlide.linkRel}}
420
  <span class="msp-form-space"></span>
421
+ <label><?php _e('Link title :', 'master-slider'); ?> </label> {{input size=20 value=currentSlide.linkTitle}}
422
  </div>
423
+ <h4><?php _e('Youtube or Vimeo video as slide', 'master-slider'); ?></h4>
424
  <div class="msp-metabox-indented">
425
+ <label><?php _e('Video embed src :', 'master-slider'); ?> </label> {{input size=60 value=currentSlide.video}}
426
  <span class="msp-form-space"></span>
427
+ <label><?php _e('Autoplay video :', 'master-slider'); ?> </label> {{switch-box value=currentSlide.autoplayVideo}}
428
  </div>
429
  <div class="msp-metabox-indented">
430
+ <a href="http://masterslider.com/doc/wp/#embed-url" target="_blank"><?php _e('Where to find the Youtube/Vimeo embed URL.', 'master-slider'); ?></a>
431
  </div>
432
  </div>
433
  </script>
436
  <script type="text/x-handlebars" id="slide-info">
437
  <div class="msp-metabox-row">
438
  <div class="msp-metabox-indented">
439
+ <label><?php _e('This info will show beside of slider when slider reaches the slide or it can represent as tab in a tabs control. It is relative to selected slider template.', 'master-slider'); ?></label>
440
  </div>
441
 
442
  {{#if MSPanel.dynamicTags}}
443
  <div class="msp-metabox-indented">
444
+ <label><?php _e('Insert dynamic content : ', 'master-slider'); ?></label>
445
  {{view MSPanel.AddDynamicTag editorId=infoEditor}}
446
  </div>
447
  {{/if}}
455
  <!-- Slide Misc -->
456
  <script type="text/x-handlebars" id="slide-misc">
457
  <div class="msp-metabox-row">
458
+ <h4><?php _e('Custom class name and id for slide element', 'master-slider'); ?> </h4>
459
  <div class="msp-metabox-indented">
460
+ <label><?php _e('Class name :', 'master-slider'); ?> </label> {{input size=30 value=currentSlide.cssClass}}
461
  <span class="msp-form-space"></span>
462
+ <label><?php _e('CSS id :', 'master-slider'); ?> </label> {{input size=30 value=currentSlide.cssId}}
463
  </div>
464
+ <h4><?php _e('Background color and slide background alt text ', 'master-slider'); ?></h4>
465
  <div class="msp-metabox-indented">
466
+ <label><?php _e('Background color :', 'master-slider'); ?> </label> {{color-picker value=currentSlide.bgColor}}
467
  <span class="msp-form-space"></span>
468
+ <label><?php _e('Alt text :', 'master-slider'); ?> </label> {{input size=30 value=currentSlide.bgAlt}}
469
  </div>
470
+ <h4><?php _e('Slide color and pattern overlay ', 'master-slider'); ?></h4>
471
  <div class="msp-metabox-indented">
472
+ <label><?php _e('Color overlay :', 'master-slider'); ?> </label> {{color-picker value=currentSlide.colorOverlay}}
473
  <div class="msp-form-space-med"></div>
474
+ <label><?php _e('Pattern overlay :', 'master-slider'); ?> </label> {{pattern-picker value=currentSlide.pattern}}
475
  </div>
476
  </div>
477
  </script>
481
  {{#meta-box title="Slider Controls"}}
482
  <div class="msp-metabox-row">
483
  <div class="msp-metabox-indented">
484
+ <?php _e('The selected tempalte for slider does not support custom controls.', 'master-slider'); ?>
485
  </div>
486
  </div>
487
  {{/meta-box}}
489
  {{#meta-box title="Slider Controls"}}
490
  <div class="msp-metabox-row">
491
 
492
+ <h4><?php _e('Here you can add or remove controls to slider', 'master-slider'); ?></h4>
493
 
494
  <div class="msp-metabox-indented">
495
+ <label><?php _e('Add new control', 'master-slider'); ?></label>
496
  {{#if noMore}}
497
  <button class="msp-add-btn disabled"><span class="msp-ico msp-ico-whiteadd"></span></button>
498
  {{else}}
503
  {{#each control in availableControls}}
504
  <option {{bind-attr value=control.value}}>{{control.label}}</option>
505
  {{else}}
506
+ <option><?php _e('-- All controls are used --', 'master-slider'); ?></option>
507
  {{/each}}
508
  {{/dropdwon-List}}
509
  </div>
510
  </div>
511
  <hr class="msp-metabox-hr">
512
  <div class="msp-metabox-row">
513
+ <h4><?php _e('Used controls:', 'master-slider'); ?></h4>
514
  <div class="msp-metabox-indented">
515
  {{#each control in controller}}
516
  {{view MSPanel.ControlBtn control=control}}
527
  {{#meta-box title="Arrows Control Options"}}
528
  <div class="msp-metabox-row">
529
  <div class="msp-metabox-indented">
530
+ {{switch-box value=currentControl.autoHide}} <label><?php _e('Hide arrows when mouse leaves slider', 'master-slider'); ?></label>
531
  <div class="msp-form-space-med"></div>
532
+ {{switch-box value=currentControl.overVideo}} <label><?php _e('Show arrows over Youtube/Vimeo video player', 'master-slider'); ?></label>
533
  </div>
534
  <div class="msp-metabox-indented">
535
+ <label><?php _e('Hide arrows under this window width :', 'master-slider'); ?> </label> {{number-input value=currentControl.hideUnder}} px
536
  </div>
537
 
538
  {{!--<div class="msp-metabox-indented">
539
+ {{switch-box value=currentControl.inset}} <label><?php _e('Insert arrows inside slider', 'master-slider'); ?></label>
540
  </div>
541
  <div class="msp-metabox-indented">
542
+ <label><?php _e('Arrows margin :', 'master-slider'); ?> </label> {{number-input value=currentControl.margin min=null}} px
543
  </div>--}}
544
  </div>
545
  {{/meta-box}}
549
  {{#meta-box title="Line Timer Control Options"}}
550
  <div class="msp-metabox-row">
551
  <div class="msp-metabox-indented">
552
+ {{switch-box value=currentControl.autoHide}} <label><?php _e('Hide line timer when mouse leaves slider', 'master-slider'); ?></label>
553
  <div class="msp-form-space-med"></div>
554
+ {{switch-box value=currentControl.overVideo}} <label><?php _e('Show line timer over Youtube/Vimeo video player', 'master-slider'); ?></label>
555
  </div>
556
  <div class="msp-metabox-indented">
557
+ <?php _e('Align control :', 'master-slider'); ?>
558
  {{#dropdwon-List value=currentControl.align width=100}}
559
+ <option value="top"><?php _e('Top', 'master-slider'); ?></option>
560
+ <option value="bottom"><?php _e('Bottom', 'master-slider'); ?></option>
561
  {{/dropdwon-List}}
562
  <div class="msp-form-space-med"></div>
563
+ <label><?php _e('Hide line timer under this window width :', 'master-slider'); ?> </label> {{number-input value=currentControl.hideUnder}} px
564
  </div>
565
  <div class="msp-metabox-indented">
566
+ <label><?php _e('Line timer color :', 'master-slider'); ?> </label> {{color-picker value=currentControl.color}}
567
  <div class="msp-form-space-med"></div>
568
+ <label><?php _e('Line timer width :', 'master-slider'); ?> </label> {{number-input value=currentControl.width}} px
569
  </div>
570
  </div>
571
  {{/meta-box}}
575
  {{#meta-box title="Bullets Control Options"}}
576
  <div class="msp-metabox-row">
577
  <div class="msp-metabox-indented">
578
+ {{switch-box value=currentControl.autoHide}} <label><?php _e('Hide bullets when mouse leaves slider', 'master-slider'); ?></label>
579
  <div class="msp-form-space-med"></div>
580
+ {{switch-box value=currentControl.overVideo}} <label><?php _e('Show bullets over Youtube/Vimeo video player', 'master-slider'); ?></label>
581
  </div>
582
  {{!-- <div class="msp-metabox-indented">
583
+ {{switch-box value=currentControl.inset}} <label><?php _e('Insert bullets inside slider', 'master-slider'); ?></label>
584
  </div> --}}
585
  <div class="msp-metabox-indented">
586
+ <?php _e('Align control :', 'master-slider'); ?>
587
  {{#dropdwon-List value=currentControl.align width=100}}
588
+ <option value="top"><?php _e('Top', 'master-slider'); ?></option>
589
+ <option value="right"><?php _e('Right', 'master-slider'); ?></option>
590
+ <option value="left"><?php _e('Left', 'master-slider'); ?></option>
591
+ <option value="bottom"><?php _e('Bottom', 'master-slider'); ?></option>
592
  {{/dropdwon-List}}
593
  <div class="msp-form-space-med"></div>
594
+ <label><?php _e('Bullets margin :', 'master-slider'); ?> </label> {{number-input value=currentControl.margin min=null}} px
595
  <div class="msp-form-space-med"></div>
596
+ <label><?php _e('Space between bullets :', 'master-slider'); ?> </label> {{number-input value=currentControl.space min=null}} px
597
  </div>
598
  <div class="msp-metabox-indented">
599
+ <label><?php _e('Hide bullets under this window width :', 'master-slider'); ?> </label> {{number-input value=currentControl.hideUnder}} px
600
  </div>
601
  </div>
602
  {{/meta-box}}
606
  {{#meta-box title="Scrollbar Control Options"}}
607
  <div class="msp-metabox-row">
608
  <div class="msp-metabox-indented">
609
+ {{switch-box value=currentControl.autoHide}} <label><?php _e('Hide scrollbar when mouse leaves slider', 'master-slider'); ?></label>
610
  <div class="msp-form-space-med"></div>
611
+ {{switch-box value=currentControl.overVideo}} <label><?php _e('Show scrollbar over Youtube/Vimeo video player', 'master-slider'); ?></label>
612
  </div>
613
  <div class="msp-metabox-indented">
614
+ {{switch-box value=currentControl.inset}} <label><?php _e('Insert scrollbar inside slider', 'master-slider'); ?></label>
615
  </div>
616
 
617
  {{!--<div class="msp-metabox-indented">
618
+ <label><?php _e('Scrollbar direction :', 'master-slider'); ?> </label>
619
  {{#dropdwon-List value=currentControl.dir width=100}}
620
+ <option value="h"><?php _e('Horizontal', 'master-slider'); ?></option>
621
+ <option value="v"><?php _e('Vertical', 'master-slider'); ?></option>
622
  {{/dropdwon-List}}
623
  <div class="msp-form-space-med"></div>
624
  </div>--}}
625
 
626
  <div class="msp-metabox-indented">
627
+ <label><?php _e('Scrollbar handle color :', 'master-slider'); ?> </label> {{color-picker value=currentControl.color}}
628
  <div class="msp-form-space-med"></div>
629
+ <label><?php _e('Hide scrollbar under this window width :', 'master-slider'); ?> </label> {{number-input value=currentControl.hideUnder}} px
630
  </div>
631
  <div class="msp-metabox-indented">
632
+ <?php _e('Align control :', 'master-slider'); ?>
633
  {{#dropdwon-List value=currentControl.align width=100}}
634
+ <option value="top"><?php _e('Top', 'master-slider'); ?></option>
635
+ <option value="right"><?php _e('Right', 'master-slider'); ?></option>
636
+ <option value="left"><?php _e('Left', 'master-slider'); ?></option>
637
+ <option value="bottom"><?php _e('Bottom', 'master-slider'); ?></option>
638
  {{/dropdwon-List}}
639
  <div class="msp-form-space-med"></div>
640
+ <label><?php _e('Scrollbar width :', 'master-slider'); ?> </label> {{number-input value=currentControl.width}} px
641
  <div class="msp-form-space-med"></div>
642
+ <label><?php _e('Scrollbar margin :', 'master-slider'); ?> </label> {{number-input value=currentControl.margin min=null}} px
643
  </div>
644
  </div>
645
  {{/meta-box}}
649
  {{#meta-box title="Circle Timer Control Options"}}
650
  <div class="msp-metabox-row">
651
  <div class="msp-metabox-indented">
652
+ {{switch-box value=currentControl.autoHide}} <label><?php _e('Hide cricle timer when mouse leaves slider', 'master-slider'); ?></label>
653
  <div class="msp-form-space-med"></div>
654
+ {{switch-box value=currentControl.overVideo}} <label><?php _e('Show circle timer over Youtube/Vimeo video player', 'master-slider'); ?></label>
655
  </div>
656
  {{!--<div class="msp-metabox-indented">
657
+ <?php _e('Align control :', 'master-slider'); ?>
658
  {{#dropdwon-List value=currentControl.align width=100}}
659
+ <option value="tl"><?php _e('Top Left', 'master-slider'); ?></option>
660
+ <option value="tr"><?php _e('Top Right', 'master-slider'); ?></option>
661
+ <option value="bl"><?php _e('Bottom Left', 'master-slider'); ?></option>
662
+ <option value="br"><?php _e('Bottom Right', 'master-slider'); ?></option>
663
  {{/dropdwon-List}}
664
  </div>--}}
665
  <div class="msp-metabox-indented">
666
+ <label><?php _e('Hide circle timer under this window width :', 'master-slider'); ?> </label> {{number-input value=currentControl.hideUnder}} px
667
  </div>
668
  <div class="msp-metabox-indented">
669
+ {{!--<label><?php _e('Circle timer margin :', 'master-slider'); ?> </label> {{number-input value=currentControl.margin min=null}} px
670
  <div class="msp-form-space-med"></div>--}}
671
+ <label><?php _e('Circle stroke :', 'master-slider'); ?> </label> {{number-input value=currentControl.stroke}} px
672
  <div class="msp-form-space-med"></div>
673
+ <label><?php _e('Circle radius :', 'master-slider'); ?> </label> {{number-input value=currentControl.radius}} px
674
  <div class="msp-form-space-med"></div>
675
+ <label><?php _e('Circle color :', 'master-slider'); ?> </label> {{color-picker value=currentControl.color}}
676
  </div>
677
  </div>
678
  {{/meta-box}}
682
  {{#meta-box title="Slide Info Control Options"}}
683
  <div class="msp-metabox-row">
684
  <div class="msp-metabox-indented">
685
+ {{switch-box value=currentControl.autoHide}} <label><?php _e('Hide slide info when mouse leaves slider', 'master-slider'); ?></label>
686
  <div class="msp-form-space-med"></div>
687
+ {{switch-box value=currentControl.overVideo}} <label><?php _e('Show slide info over Youtube/Vimeo video player', 'master-slider'); ?></label>
688
  </div>
689
  <div class="msp-metabox-indented">
690
+ {{switch-box value=currentControl.inset}} <label><?php _e('Insert slide info inside slider', 'master-slider'); ?></label>
691
  </div>
692
  <div class="msp-metabox-indented">
693
+ <?php _e('Align control :', 'master-slider'); ?>
694
  {{#dropdwon-List value=currentControl.align width=100}}
695
+ <option value="top"><?php _e('Top', 'master-slider'); ?></option>
696
+ <option value="right"><?php _e('Right', 'master-slider'); ?></option>
697
+ <option value="left"><?php _e('Left', 'master-slider'); ?></option>
698
+ <option value="bottom"><?php _e('Bottom', 'master-slider'); ?></option>
699
  {{/dropdwon-List}}
700
  <div class="msp-form-space-med"></div>
701
+ <label><?php _e('Slide info margin :', 'master-slider'); ?> </label> {{number-input value=currentControl.margin min=null}} px
702
  </div>
703
  <div class="msp-metabox-indented">
704
+ <label><?php _e('Slide info width :', 'master-slider'); ?> </label> {{number-input value=currentControl.width}} px
705
  <div class="msp-form-space-med"></div>
706
+ <label><?php _e('Slide info height :', 'master-slider'); ?> </label> {{number-input value=currentControl.height}} px
707
  </div>
708
  </div>
709
  <div class="msp-metabox-indented">
710
+ <label><?php _e('Hide slide info under this window width :', 'master-slider'); ?> </label> {{number-input value=currentControl.hideUnder}} px
711
  </div>
712
  </div>
713
  {{/meta-box}}
717
  {{#meta-box title="Thumblist/Tabs Control Options"}}
718
  <div class="msp-metabox-row">
719
  <div class="msp-metabox-indented">
720
+ {{switch-box value=currentControl.autoHide}} <label><?php _e('Hide thumblist/tabs when mouse leaves slider', 'master-slider'); ?></label>
721
  <div class="msp-form-space-med"></div>
722
+ {{switch-box value=currentControl.overVideo}} <label><?php _e('Show thumblist/tabs over Youtube/Vimeo video player', 'master-slider'); ?></label>
723
  </div>
724
  <div class="msp-metabox-indented">
725
+ {{switch-box value=currentControl.inset}} <label><?php _e('Insert thumblist/tabs inside slider', 'master-slider'); ?></label>
726
  <div class="msp-form-space-med"></div>
727
+ {{switch-box value=currentControl.arrows}} <label><?php _e('Insert navigation arrows', 'master-slider'); ?></label>
728
  </div>
729
  <div class="msp-metabox-indented">
730
+ {{switch-box value=currentControl.hoverChange}} <label><?php _e('Change slides on hovering over thumbs/tabs.', 'master-slider'); ?></label>
731
  </div>
732
  <div class="msp-metabox-indented">
733
+ <?php _e('Align control :', 'master-slider'); ?>
734
  {{#dropdwon-List value=currentControl.align width=100}}
735
+ <option value="top"><?php _e('Top', 'master-slider'); ?></option>
736
+ <option value="right"><?php _e('Right', 'master-slider'); ?></option>
737
+ <option value="left"><?php _e('Left', 'master-slider'); ?></option>
738
+ <option value="bottom"><?php _e('Bottom', 'master-slider'); ?></option>
739
  {{/dropdwon-List}}
740
  <div class="msp-form-space-med"></div>
741
+ <label><?php _e('Thumblist/Tabs margin :', 'master-slider'); ?> </label> {{number-input value=currentControl.margin min=null}} px
742
  </div>
743
  <div class="msp-metabox-indented">
744
+ <?php _e('Appearance :', 'master-slider'); ?>
745
  {{#dropdwon-List value=currentControl.type width=100}}
746
+ <option value="thumbs"><?php _e('Thumblist', 'master-slider'); ?></option>
747
+ <option value="tabs"><?php _e('Tabs', 'master-slider'); ?></option>
748
  {{/dropdwon-List}}
749
  <div class="msp-form-space-med"></div>
750
+ <label><?php _e('Hide thumblist/tabs under this window width :', 'master-slider'); ?> </label> {{number-input value=currentControl.hideUnder}} px
751
  </div>
752
 
753
  {{!--<div class="msp-metabox-indented">
754
+ <label><?php _e('Thumblist/Tabs direction :', 'master-slider'); ?> </label>
755
  {{#dropdwon-List value=currentControl.dir width=100}}
756
+ <option value="h"><?php _e('Horizontal', 'master-slider'); ?></option>
757
+ <option value="v"><?php _e('Vertical', 'master-slider'); ?></option>
758
  {{/dropdwon-List}}
759
  </div>--}}
760
 
761
  {{#if isTab}}
762
  <div class="msp-metabox-indented">
763
+ {{switch-box value=currentControl.insertThumb}} <?php _e('Insert thumbnail inside tabs', 'master-slider'); ?>
764
  </div>
765
  {{else}}
766
  <div class="msp-metabox-indented">
767
+ <?php _e('Thumb background fill mode :', 'master-slider'); ?>
768
  {{view MSPanel.Fillmode value=currentControl.fillMode}}
769
  </div>
770
  {{/if}}
771
 
772
  <div class="msp-metabox-indented">
773
+ <label><?php _e('Thumb/Tab width :', 'master-slider'); ?> </label> {{number-input value=currentControl.width}} px
774
  <div class="msp-form-space-med"></div>
775
+ <label><?php _e('Thumb/Tab height :', 'master-slider'); ?> </label> {{number-input value=currentControl.height}} px
776
  <div class="msp-form-space-med"></div>
777
+ <label><?php _e('Space between thumbs/tabs :', 'master-slider'); ?> </label> {{number-input value=currentControl.space}} px
778
  </div>
779
 
780
  </div>
786
  {{#meta-box title="Slider Callbacks"}}
787
  <div class="msp-metabox-row">
788
 
789
+ <h4><?php _e('Here you can add or remove callbacks to slider', 'master-slider'); ?></h4>
790
 
791
  <div class="msp-metabox-indented">
792
+ <label><?php _e('Add new callback', 'master-slider'); ?></label>
793
  {{#if noMore}}
794
  <button class="msp-add-btn disabled"><span class="msp-ico msp-ico-whiteadd"></span></button>
795
  {{else}}
800
  {{#each callback in availableCallbacks}}
801
  <option {{bind-attr value=callback.value}}>{{callback.label}}</option>
802
  {{else}}
803
+ <option><?php _e('-- All callbacks are added --', 'master-slider'); ?></option>
804
  {{/each}}
805
  {{/dropdwon-List}}
806
  </div>
813
  {{#code-mirror width="100%" height="auto" mode="javascript" value=callback.content}}{{/code-mirror}}
814
  </div>
815
  <div class="msp-metabox-indented">
816
+ <button {{action "removeCallback" callback}} class="msp-blue-btn msp-remove-btn-med"><?php _e('Remove', 'master-slider'); ?></button>
817
  </div>
818
  </div>
819
  {{/each}}
includes/classes/class-msp-core-widget.php CHANGED
@@ -116,7 +116,7 @@ class MSP_Widget extends WP_Widget {
116
 
117
  case 'select':
118
  echo '<p>',
119
- '<label for="'.$this->get_field_id($id).'" >'. __( $field['name'], MSWP_TEXT_DOMAIN ). '</label>',
120
  '<select name="'.$this->get_field_name($id).'" id="'.$this->get_field_id($id).'" value="'.$instance[$id].'" style="width:100%;max-width:100%;" >';
121
  foreach ($field['options'] as $key => $value) {
122
  echo '<option value="'.$key.'" '.(($instance[$id] == $key)?'selected="selected"':'' ).' >'. __($value, "default"). '</option>';
116
 
117
  case 'select':
118
  echo '<p>',
119
+ '<label for="'.$this->get_field_id($id).'" >'. __( $field['name'], 'master-slider' ). '</label>',
120
  '<select name="'.$this->get_field_name($id).'" id="'.$this->get_field_id($id).'" value="'.$instance[$id].'" style="width:100%;max-width:100%;" >';
121
  foreach ($field['options'] as $key => $value) {
122
  echo '<option value="'.$key.'" '.(($instance[$id] == $key)?'selected="selected"':'' ).' >'. __($value, "default"). '</option>';
includes/classes/class-msp-db.php CHANGED
@@ -20,561 +20,561 @@ if ( ! defined('ABSPATH') ) {
20
  */
21
  class MSP_DB {
22
 
23
- /**
24
- * Current database version
25
- */
26
- const DB_VERSION = 1.03;
27
-
28
-
29
- /**
30
- * Count of rows returned by previous query
31
- *
32
- * @since 1.0
33
- * @access private
34
- * @var int
35
- */
36
- var $num_rows = 0;
37
-
38
-
39
- /**
40
- * Last query made
41
- *
42
- * @since 1.0
43
- * @access private
44
- * @var array
45
- */
46
- var $last_query;
47
-
48
-
49
- /**
50
- * Results of the last query made
51
- *
52
- * @since 1.0
53
- * @access private
54
- * @var array|null
55
- */
56
- var $last_result;
57
-
58
-
59
- /**
60
- * Master table prefix
61
- *
62
- * @since 1.0
63
- * @access private
64
- * @var string
65
- */
66
- var $prefix = '';
67
-
68
-
69
- /**
70
- * Master table tabes
71
- *
72
- * @since 1.0
73
- * @access private
74
- * @var string
75
- */
76
- var $tabel_names = array( 'sliders', 'options' );
77
-
78
-
79
- /**
80
- * The database character collate.
81
- *
82
- * @since 1.0
83
- * @access private
84
- * @var string
85
- */
86
- var $charset_collate = '';
87
-
88
-
89
-
90
- /**
91
- *
92
- */
93
- public function __construct() {
94
-
95
- if( is_admin() ) {
96
-
97
- $this->update_tables();
98
- add_filter( 'wpmu_drop_tables', array( $this, 'wpmu_drop_tables' ), 11, 2 );
99
- }
100
-
101
- }
102
-
103
- /**
104
- * Get known properties
105
- *
106
- * @param string property name
107
- * @return string property value
108
- */
109
- public function __get( $name ){
110
-
111
- if( in_array( $name, $this->tabel_names ) ){
112
- global $wpdb;
113
- return $wpdb->prefix . 'masterslider_' . $name;
114
-
115
- // Get list of Masterslider table names
116
- } elseif( 'tables' == $name ){
117
- global $wpdb;
118
- $tables = array();
119
-
120
- foreach ( $this->tabel_names as $table_name )
121
- $tables[ $table_name ] = $wpdb->prefix . 'masterslider_' . $table_name;
122
-
123
- return $tables;
124
-
125
- } else {
126
- return NULL;
127
- }
128
- }
129
-
130
- /**
131
- * Create master slider sliders table
132
- *
133
- * @since 1.0
134
- * @return null
135
- */
136
- private function create_table_sliders() {
137
-
138
- $sql_create_table = "CREATE TABLE IF NOT EXISTS {$this->sliders} (
139
  ID mediumint unsigned NOT NULL AUTO_INCREMENT,
140
  title varchar(100) NOT NULL,
141
- type varchar(64) NOT NULL,
142
- slides_num smallint unsigned NOT NULL,
143
- date_created datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
144
- date_modified datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
145
- params mediumtext NOT NULL,
146
- custom_styles text NOT NULL DEFAULT '',
147
- custom_fonts text NOT NULL DEFAULT '',
148
- status varchar(10) NOT NULL DEFAULT 'draft',
149
- PRIMARY KEY (ID),
150
- KEY date_created (date_created)
151
  ) {$this->charset_collate};";
152
 
153
- require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
154
- dbDelta( $sql_create_table );
155
- }
156
 
157
 
158
- /**
159
- * Create master slider options table
160
- *
161
- * @since 1.0
162
- * @return null
163
- */
164
- private function create_table_options() {
165
 
166
- $sql_create_table = "CREATE TABLE IF NOT EXISTS {$this->options} (
167
  ID smallint unsigned NOT NULL AUTO_INCREMENT,
168
  option_name varchar(120) NOT NULL,
169
- option_value text NOT NULL DEFAULT '',
170
- PRIMARY KEY (ID),
171
- UNIQUE KEY option_name (option_name)
172
  ) $this->charset_collate; ";
173
 
174
- require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
175
- dbDelta( $sql_create_table );
176
- }
177
-
178
-
179
- /**
180
- * Create master slider tables
181
- *
182
- * Should be invoked on plugin activation
183
- *
184
- * @since 1.0
185
- * @return null
186
- */
187
- public function create_tables() {
188
- global $wpdb, $charset_collate;
189
-
190
- // set database character collate
191
- if (!empty ($wpdb->charset))
192
- $this->charset_collate = "DEFAULT CHARACTER SET {$wpdb->charset}";
193
- if (!empty ($wpdb->collate))
194
- $this->charset_collate .= " COLLATE {$wpdb->collate}";
195
-
196
- if ( $wpdb->get_var( "SHOW TABLES LIKE '{$this->sliders}'" ) != $this->sliders )
197
- $this->create_table_sliders();
198
-
199
- if ( $wpdb->get_var( "SHOW TABLES LIKE '{$this->options}'" ) != $this->options )
200
- $this->create_table_options();
201
-
202
- // update tables version to current version
203
- update_option( "masterslider_db_version", self::DB_VERSION );
204
-
205
- do_action( 'masterslider_tables_created', $this->tables );
206
- }
207
-
208
-
209
-
210
- /**
211
- * Updates masterslider tables if update is required
212
- *
213
- * @since 1.0
214
- * @return bool is any update required for tabels?
215
- */
216
- public function update_tables(){
217
- // check if the tables need update
218
- if( get_option( 'masterslider_db_version', '0' ) == self::DB_VERSION )
219
- return false;
220
-
221
- $this->create_tables();
222
-
223
- do_action( 'masterslider_tables_updated', $this->tables );
224
- return true;
225
- }
226
-
227
-
228
- /**
229
- * Drop all master slider tables
230
- *
231
- * @since 1.0
232
- * @return null
233
- */
234
- public function delete_tables() {
235
- global $wpdb;
236
-
237
- foreach ( $this->tables as $table_id => $table_name) {
238
- $wpdb->query("DROP TABLE IF EXISTS $table_name");
239
- }
240
- }
241
-
242
-
243
- /**
244
- * Filter Masterslider tables to drop when the blog is deleted
245
- *
246
- * @since 1.8
247
- * @return null
248
- */
249
- public function wpmu_drop_tables( $tables, $blog_id ){
250
- global $wpdb;
251
- $tables[] = $wpdb->base_prefix . $blog_id . '_masterslider_sliders';
252
- $tables[] = $wpdb->base_prefix . $blog_id . '_masterslider_options';
253
- return $tables;
254
- }
255
-
256
-
257
-
258
 
259
 
260
- /**
261
- * Adds new slider in sliders table
262
- *
263
- * @param array $fields array of fields for sliders table
264
- * @example array( 'title' => '', 'type' => '', 'skin' => '', 'template' => '',
265
- * 'common_params' => array(), 'special_params' => array(),
266
- * 'panel_data' => '', 'is_active' => 1 );
267
- *
268
- * @return int|false ID number for new inserted row or false if the row could not be inserted.
269
- */
270
- public function add_slider($fields = array() ) {
271
- global $wpdb;
272
-
273
- // default fields in sliders table
274
- $defaults = array(
275
- 'title' => 'Untitled Slider',
276
- 'type' => '', // custom, flickr, instagram, facebook, post
277
- 'slides_num' => 0,
278
- 'date_created' => '',
279
- 'date_modified' => '',
280
- 'params' => array(),
281
- 'custom_styles' => '',
282
- 'custom_fonts' => '',
283
- 'status' => 'published'
284
- );
285
-
286
- // merge input $fields with defaults
287
- $data = wp_parse_args($fields, $defaults);
288
-
289
- // set current time as date if date is not specified
290
- if ( empty($data['date_created']) || '0000-00-00 00:00:00' == $data['date_created'] )
291
- $data['date_created'] = current_time('mysql');
292
-
293
-
294
- if ( empty($data['date_modified']) || '0000-00-00 00:00:00' == $data['date_modified'] )
295
- $data['date_modified'] = current_time('mysql');
296
-
297
- if( isset($data['ID']) )
298
- unset($data['ID']);
299
-
300
- // map through some fields and serialize values if data type is array
301
- $data = $this->maybe_serialize_fields($data);
302
-
303
- // An array of formats to be mapped to each of the value in $data
304
- $format = array('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s');
305
-
306
- // Insert a row into the table. returns false if the row could not be inserted.
307
- $status = $wpdb->insert( $this->sliders, $data, $format );
308
-
309
- return (false === $status)? $status: $wpdb->insert_id;
310
- }
311
-
312
-
313
- /**
314
- * Updates a slider data in sliders table
315
- *
316
- * @param int $slider_id the slider id that is going to be updated
317
- * @param array $fields array of fields in sliders table that needs to be updated
318
- * @param array|string (optional) An array of formats to be mapped to each of the values in $fields
319
- * @example array( 'title' => '', 'type' => '', 'custom_styles' => array(), 'custom_fonts' => array(),
320
- * 'params' => '', 'status' => 'published' );
321
- *
322
- * @return int|false The number of rows updated, or false on error.
323
- */
324
- public function update_slider($slider_id, $fields, $format = null ) {
325
- global $wpdb;
326
-
327
- if ( ! isset($slider_id) || ! is_numeric($slider_id) ) {
328
- return false;
329
- }
330
-
331
- if( ! isset($fields) || empty($fields) ){
332
- return;
333
- }
334
-
335
- // default required field while updating
336
- $defaults = array(
337
- 'date_modified' => ''
338
- );
339
 
340
- // merge input $fields with defaults
341
- $data = wp_parse_args($fields, $defaults);
342
-
343
- // set modified date to current time
344
- if( empty( $data['date_modified'] ) )
345
- $data['date_modified'] = current_time('mysql');
346
-
347
-
348
- $data = $this->maybe_serialize_fields($data);
349
-
350
- // slider id as WHERE clause
351
- $where = array( 'ID' => $slider_id );
352
 
353
- // An array of formats to be mapped to each of the values in $where
354
- $where_format = array( '%d' );
355
 
356
- // Insert a row into the table
357
- return $wpdb->update( $this->sliders, $data, $where, $format, $where_format);
358
- }
359
 
360
 
361
- /**
362
- * Remove a specific slider data from sliders table
363
- *
364
- * @param int $slider_id The ID of the slider you'd like to be removed
365
- * @return bool returns true on success or false on error
366
- */
367
- public function delete_slider($slider_id) {
368
- global $wpdb;
369
-
370
- if ( ! isset($slider_id) || ! is_numeric($slider_id) ) {
371
- return false;
372
- }
373
-
374
- return $wpdb->delete(
375
- $this->sliders,
376
- array( 'ID' => (int)$slider_id ),
377
- array( '%d' )
378
- );
379
- }
380
 
381
 
382
- /**
383
- * Get slider data by slider id from slider table (for single )
384
- *
385
- * @param int $slider_id The ID of the slider you'd like to get the content
386
- * @return array|null slider data in array or null if no result found
387
- */
388
- public function get_slider( $slider_id ) {
389
- global $wpdb;
390
 
391
- if ( ! isset($slider_id) || ! is_numeric($slider_id) ) {
392
- return null;
393
- }
394
 
395
- $sql = $wpdb->prepare( "SELECT * FROM {$this->sliders} WHERE ID = %d", (int)$slider_id );
396
- $result = $wpdb->get_row( $sql, ARRAY_A );
397
 
398
- return $this->maybe_unserialize_fields($result);
399
- }
400
 
401
 
402
- /**
403
- * Duplicate a slider in new row
404
- *
405
- * @param int $slider_id The ID of the slider you'd like to duplicate
406
- * @return bool true on success and false on failure
407
- */
408
- public function duplicate_slider( $slider_id ) {
409
 
410
- if( ! $fields = $this->get_slider($slider_id) )
411
- return false;
412
 
413
- $fields['title'] = $this->duplicate_title( $fields['title'] );
414
 
415
- return (bool) $this->add_slider($fields);
416
- }
417
 
418
 
419
- /**
420
- * Add new slider with preset data
421
- *
422
- * @param string $slider_params The slider panel data
423
- * @param string $slider_title The slider title
424
- * @return int|false ID number for new inserted row or false if the row could not be inserted.
425
- */
426
- public function import_slider( $fields = array() ) {
427
 
428
- if( ! isset( $fields['title'] ) || empty( $fields['title'] ) )
429
- $fields['title'] = 'Untitled Slider';
430
 
431
- $fields['title'] = $this->duplicate_title( $fields['title'] );
432
 
433
- return $this->add_slider( $fields );
434
- }
435
 
436
 
437
- /**
438
- * Get the value of a single field for a spesific slider
439
- *
440
- * @param int $slider_id The ID of the slider you'd like to get value of its field
441
- * @param string $field_name The field name in slider table to get value from
442
- * @return string|null field value or null if no result found
443
- */
444
- public function get_slider_field_val( $slider_id, $field_name ) {
445
- global $wpdb;
446
 
447
- if ( ! isset( $slider_id ) || ! is_numeric( $slider_id ) ) {
448
- return '';
449
- }
450
 
451
- $result = $this->get_slider($slider_id);
452
 
453
- return ( $result && isset( $result[$field_name] ) ) ? maybe_unserialize( $result[$field_name] ) : NULL;
454
- }
455
 
456
 
457
 
458
- /**
459
- * Get an array containing row results (serialized) from sliders table
460
- *
461
- * @param int $args The query args
462
- * @return array|null Sliders data in an array or null if no result found
463
- */
464
- public function ms_query( $args = array() ) {
465
- global $wpdb;
466
 
467
- $default_args = array(
468
- 'perpage' => 0,
469
- 'offset' => 0,
470
- 'orderby' => 'ID',
471
- 'order' => 'DESC',
472
- 'where' => "status='published'",
473
- 'like' => ''
474
- );
475
 
476
- $args = wp_parse_args( $args, $default_args );
477
 
478
 
479
- // convert perpage type to number
480
- $limit_num = (int) $args['perpage'];
481
 
482
- // convert offset type to number
483
- $offset_num = (int) $args['offset'];
484
 
485
- // remove limit if limit number is set to 0
486
- $limit = ( 1 > $limit_num ) ? '' : 'LIMIT '. $limit_num;
487
 
488
- // remove offect if offset number is set to 0
489
- $offset = ( 0 == $offset_num )? '' : 'OFFSET '. $offset_num;
490
 
491
- // add LIKE if defined
492
- $like = empty( $args['like'] ) ? '' : 'LIKE '. $args['like'];
493
 
494
- $where = empty( $args['where'] ) ? '' : 'WHERE '. $args['where'];
495
 
496
- // sanitize sort type
497
- $order = strtolower( $args['order'] ) === 'desc' ? 'DESC' : 'ASC';
498
- $orderby_clause = $args['orderby'] .' '. $order;
499
 
500
  $orderby_clause = sanitize_sql_orderby( $orderby_clause );
501
 
502
- $sql = "
503
- SELECT *
504
- FROM {$this->sliders}
505
- $where
506
- ORDER BY $orderby_clause
507
- $limit
508
- $offset
509
- ";
510
 
511
- return $wpdb->get_results( $sql, ARRAY_A );
512
- }
513
 
514
 
515
- /**
516
- * Get an array containing row results (serialized) from sliders table
517
- *
518
- * @param int $perpage Maximum number of rows to return - 0 means no limit
519
  * @param int $offset The offset of the first row to return
520
  * @param string $orderby The field name to order results by
521
  * @param string $order The sort type. 'DESC' or 'ASC'
522
  * @param string $where The sql filter to get results by
523
- * @return array|null Sliders data in an array or null if no result found
524
- */
525
- public function get_sliders_list( $perpage = 0, $offset = 0, $orderby = 'ID', $order = 'DESC', $where = "status='published'" ) {
526
- global $wpdb;
527
 
528
- $args = array(
529
- 'perpage' => $perpage,
530
- 'offset' => $offset,
531
- 'orderby' => $orderby,
532
- 'order' => $order,
533
- 'where' => $where
534
- );
535
 
536
- return $this->ms_query( $args );
537
- }
538
 
539
 
540
 
541
- /**
542
- * Get an array containing row results (unserialized) from sliders table (with all slider table fields)
543
- *
544
- * @param int $perpage Maximum number of rows to return
545
  * @param int $offset The offset of the first row to return
546
  * @param string $orderby The field name to order results by
547
  * @param string $sort The sort type. 'DESC' or 'ASC'
548
  * @param string $where The sql filter to get results by
549
- * @return array|null Slider data in array or null if no result found
550
- */
551
- public function get_sliders( $perpage = 0, $offset = 0, $orderby = 'ID', $sort = 'DESC', $where = "status='published'" ) {
552
 
553
- // pull mulitple row results from sliders table
554
- if( ! $results = $this->get_sliders_list( $perpage, $offset, $orderby, $sort, $where ) ){
555
- return;
556
- }
557
 
558
- // map through some fields and unserialize values if some data fields are serialized
559
- foreach ($results as $row_index => $row) {
560
- $results[$row_index] = $this->maybe_unserialize_fields($row);
561
- }
562
 
563
- return $results;
564
- }
565
 
566
 
567
- /**
568
- * Get total number of sliders from sliders table
569
- *
570
- * @return int|null total number of sliders or null on failure
571
- */
572
- public function get_total_sliders_count( $where = "status='published'" ) {
573
- global $wpdb;
574
 
575
- $result = $wpdb->get_results( "SELECT count(ID) AS total FROM {$this->sliders} WHERE {$where} ", ARRAY_A );
576
- return $result ? (int)$result[0]['total'] : null;
577
- }
578
 
579
 
580
 
@@ -582,158 +582,158 @@ class MSP_DB {
582
 
583
 
584
 
585
- /**
586
- * Insert option data in new record in options table
587
- *
588
- * @param string $option_name a unique name for option
589
- * @param string $option_value the option value
590
- *
591
- * @return bool False if option was not added and true if option was added.
592
- */
593
- public function add_option( $option_name, $option_value = '' ) {
594
- global $wpdb;
595
 
596
- $option_name = trim( $option_name );
597
- if( empty( $option_name ) ) {
598
- return false;
599
- }
600
 
601
- if ( is_object($option_value) )
602
- $option_value = clone $option_value;
603
 
604
 
605
- // serialize the option value
606
- $option_value = maybe_serialize( $option_value );
607
 
608
- $fields = array(
609
- 'option_name' => $option_name,
610
- 'option_value' => $option_value
611
- );
612
 
613
- // check if key already exist in master slider options table
614
- $sql = $wpdb->prepare( "SELECT * FROM {$this->options} WHERE option_name = %s", $option_name );
615
- // skip adding option if option added to options table before
616
- if( $result = $wpdb->get_row( $sql, ARRAY_A ) )
617
- return false;
618
 
619
- // An array of formats to be mapped to each of the value in $data
620
- $format = array('%s', '%s');
621
 
622
- // Insert a row into the table. returns false if the row could not be inserted.
623
- $result = $wpdb->insert( $this->options, $fields, $format );
624
 
625
- if(false === $result)
626
- return false;
627
 
628
- wp_cache_set( $option_name, $option_value, 'masterslider' );
629
 
630
- do_action( 'masterslider_added_option', $option_name, $option_value );
631
- return true;
632
- }
633
 
634
 
635
- /**
636
- * Get option value
637
- *
638
- * @param string $option_name a unique name for option
639
- * @param string $default_value a value to return by function if option_value not found
640
- * @return string option_value or default_value
641
- */
642
- public function get_option( $option_name, $default_value = '' ) {
643
- global $wpdb;
644
 
645
- $option_name = trim( $option_name );
646
- if( empty( $option_name ) ) {
647
- return $default_value;
648
- }
649
 
650
- $value = wp_cache_get( $option_name, 'masterslider' );
651
 
652
- // query the value if value is not available in cache
653
- if( false === $value ) {
654
 
655
- $sql = $wpdb->prepare( "SELECT * FROM {$this->options} WHERE option_name = %s", $option_name );
656
- $result = $wpdb->get_row( $sql, ARRAY_A );
657
 
658
- $value = $result && isset( $result['option_value'] ) ? $result['option_value'] : $default_value;
659
 
660
- // serialize and cache this option for next request
661
- $serialized_value = maybe_serialize( $value );
662
- wp_cache_set( $option_name, $serialized_value, 'masterslider' );
663
- }
664
 
665
- return maybe_unserialize( $value );
666
- }
667
 
668
 
669
 
670
- /**
671
- * Update option value in options table, if option_name does not exist then insert new option
672
- *
673
- * @param string $option_name a unique name for option
674
- * @param string $option_value the option value
675
- *
676
- * @return int|false ID number for new inserted row or false if the option can not be updated.
677
- */
678
- public function update_option( $option_name, $option_value = '' ) {
679
- global $wpdb;
680
 
681
- $option_name = trim( $option_name );
682
- if( empty( $option_name ) ) {
683
- return false;
684
- }
685
 
686
- if ( is_object($option_value) )
687
- $option_value = clone $option_value;
688
 
689
- // get current option value
690
- $old_value = $this->get_option( $option_name );
691
 
692
- $option_value = apply_filters( 'msp_pre_update_option_' . $option_name, $option_value, $old_value );
693
 
694
- // If the new and old values are the same, no need to update.
695
- if ( $option_value === $old_value )
696
- return false; // 'has same value';
697
 
698
- $option_value = maybe_serialize( $option_value );
699
 
700
 
701
- $result = $wpdb->update( $this->options, array( 'option_value' => $option_value ), array( 'option_name' => $option_name ) );
702
 
703
- if ( ! $result ) {
704
- return $this->add_option( $option_name, $option_value);
705
- } else {
706
- wp_cache_set( $option_name, $option_value, 'masterslider' );
707
- }
708
 
709
- return true;
710
- }
711
 
712
 
713
- /**
714
- * Remove a specific option name from options table
715
- *
716
- * @param string $option_name a unique name for option
717
- * @return bool True, if option is successfully deleted. False on failure.
718
- */
719
- public function delete_option( $option_name ) {
720
- global $wpdb;
721
 
722
- $option_name = trim( $option_name );
723
- if( empty( $option_name ) ) {
724
- return false;
725
- }
726
 
727
- $result = $wpdb->delete(
728
- $this->options,
729
- array( 'option_name' => $option_name ),
730
- array( '%s' )
731
- );
732
 
733
- wp_cache_delete( $option_name, 'masterslider' );
734
 
735
- return (bool) $result;
736
- }
737
 
738
 
739
 
@@ -741,81 +741,81 @@ class MSP_DB {
741
 
742
 
743
 
744
- // map through some fields and unserialize values if data field is serialized
745
- protected function maybe_unserialize_fields($row_fields){
746
- if ( empty($row_fields) ) {
747
- return $row_fields;
748
- }
749
 
750
- foreach ( $row_fields as $key => $value) {
751
- $row_fields[$key] = maybe_unserialize( $value );
752
- }
753
- return $row_fields;
754
- }
755
 
756
 
757
 
758
- // map through some fields and serialize values if data type is array
759
- protected function maybe_serialize_fields($row_fields){
760
- if ( empty($row_fields) ) {
761
- return $row_fields;
762
- }
763
 
764
- foreach ( $row_fields as $key => $value) {
765
- $row_fields[$key] = maybe_serialize( $value );
766
- }
767
- return $row_fields;
768
- }
769
 
770
 
771
- /**
772
- * Insert a row into a table.
773
- * @param array $fields array of fields and values to insert
774
- * @param array $defaults array of default fields value to insert if field value is not set
775
- *
776
- * @return int|false ID number for new inserted row or false if the row could not be inserted.
777
- */
778
- public function insert( $table_name, $fields = array(), $defaults = array(), $format = NULL ) {
779
- global $wpdb;
780
 
781
- if( empty( $fields ) ) {
782
- return false;
783
- }
784
 
785
- // merge input $fields with defaults
786
- $data = wp_parse_args($fields, $defaults);
787
 
788
- // map through some fields and serialize values if data type is array or object
789
- $data = $this->maybe_serialize_fields( $data );
790
 
791
- // Insert a row into the table. returns false if the row could not be inserted.
792
- $result = $wpdb->insert( $table_name, $data, $format );
793
 
794
- return (false === $result)? $result : $wpdb->insert_id;
795
- }
796
 
797
 
798
- public function duplicate_title($title, $suffix = '' ){
799
- $title = trim($title);
800
- if( empty($suffix) ){
801
- $suffix = __('copy', MSWP_TEXT_DOMAIN);
802
- }
803
 
804
- $suffix_num = substr($title, -2);
805
 
806
- if (strpos($title, ' '.$suffix) !== false) {
807
- $suffix_num = substr($title, -2);
808
- if( is_numeric($suffix_num) ){
809
- $suffix_num = (int)$suffix_num + 1;
810
- $title = trim(substr($title, 0, -2)) . ' ' . $suffix_num;
811
- } else {
812
- $title = trim($title) . ' 1';
813
- }
814
- } else {
815
- $title .= ' '.$suffix;
816
- }
817
- return $title;
818
- }
819
 
820
  }
821
 
20
  */
21
  class MSP_DB {
22
 
23
+ /**
24
+ * Current database version
25
+ */
26
+ const DB_VERSION = 1.03;
27
+
28
+
29
+ /**
30
+ * Count of rows returned by previous query
31
+ *
32
+ * @since 1.0
33
+ * @access private
34
+ * @var int
35
+ */
36
+ var $num_rows = 0;
37
+
38
+
39
+ /**
40
+ * Last query made
41
+ *
42
+ * @since 1.0
43
+ * @access private
44
+ * @var array
45
+ */
46
+ var $last_query;
47
+
48
+
49
+ /**
50
+ * Results of the last query made
51
+ *
52
+ * @since 1.0
53
+ * @access private
54
+ * @var array|null
55
+ */
56
+ var $last_result;
57
+
58
+
59
+ /**
60
+ * Master table prefix
61
+ *
62
+ * @since 1.0
63
+ * @access private
64
+ * @var string
65
+ */
66
+ var $prefix = '';
67
+
68
+
69
+ /**
70
+ * Master table tabes
71
+ *
72
+ * @since 1.0
73
+ * @access private
74
+ * @var string
75
+ */
76
+ var $tabel_names = array( 'sliders', 'options' );
77
+
78
+
79
+ /**
80
+ * The database character collate.
81
+ *
82
+ * @since 1.0
83
+ * @access private
84
+ * @var string
85
+ */
86
+ var $charset_collate = '';
87
+
88
+
89
+
90
+ /**
91
+ *
92
+ */
93
+ public function __construct() {
94
+
95
+ if( is_admin() ) {
96
+
97
+ $this->update_tables();
98
+ add_filter( 'wpmu_drop_tables', array( $this, 'wpmu_drop_tables' ), 11, 2 );
99
+ }
100
+
101
+ }
102
+
103
+ /**
104
+ * Get known properties
105
+ *
106
+ * @param string property name
107
+ * @return string property value
108
+ */
109
+ public function __get( $name ){
110
+
111
+ if( in_array( $name, $this->tabel_names ) ){
112
+ global $wpdb;
113
+ return $wpdb->prefix . 'masterslider_' . $name;
114
+
115
+ // Get list of Masterslider table names
116
+ } elseif( 'tables' == $name ){
117
+ global $wpdb;
118
+ $tables = array();
119
+
120
+ foreach ( $this->tabel_names as $table_name )
121
+ $tables[ $table_name ] = $wpdb->prefix . 'masterslider_' . $table_name;
122
+
123
+ return $tables;
124
+
125
+ } else {
126
+ return NULL;
127
+ }
128
+ }
129
+
130
+ /**
131
+ * Create master slider sliders table
132
+ *
133
+ * @since 1.0
134
+ * @return null
135
+ */
136
+ private function create_table_sliders() {
137
+
138
+ $sql_create_table = "CREATE TABLE IF NOT EXISTS {$this->sliders} (
139
  ID mediumint unsigned NOT NULL AUTO_INCREMENT,
140
  title varchar(100) NOT NULL,
141
+ type varchar(64) NOT NULL,
142
+ slides_num smallint unsigned NOT NULL,
143
+ date_created datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
144
+ date_modified datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
145
+ params mediumtext NOT NULL,
146
+ custom_styles text NOT NULL DEFAULT '',
147
+ custom_fonts text NOT NULL DEFAULT '',
148
+ status varchar(10) NOT NULL DEFAULT 'draft',
149
+ PRIMARY KEY (ID),
150
+ KEY date_created (date_created)
151
  ) {$this->charset_collate};";
152
 
153
+ require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
154
+ dbDelta( $sql_create_table );
155
+ }
156
 
157
 
158
+ /**
159
+ * Create master slider options table
160
+ *
161
+ * @since 1.0
162
+ * @return null
163
+ */
164
+ private function create_table_options() {
165
 
166
+ $sql_create_table = "CREATE TABLE IF NOT EXISTS {$this->options} (
167
  ID smallint unsigned NOT NULL AUTO_INCREMENT,
168
  option_name varchar(120) NOT NULL,
169
+ option_value text NOT NULL DEFAULT '',
170
+ PRIMARY KEY (ID),
171
+ UNIQUE KEY option_name (option_name)
172
  ) $this->charset_collate; ";
173
 
174
+ require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
175
+ dbDelta( $sql_create_table );
176
+ }
177
+
178
+
179
+ /**
180
+ * Create master slider tables
181
+ *
182
+ * Should be invoked on plugin activation
183
+ *
184
+ * @since 1.0
185
+ * @return null
186
+ */
187
+ public function create_tables() {
188
+ global $wpdb, $charset_collate;
189
+
190
+ // set database character collate
191
+ if (!empty ($wpdb->charset))
192
+ $this->charset_collate = "DEFAULT CHARACTER SET {$wpdb->charset}";
193
+ if (!empty ($wpdb->collate))
194
+ $this->charset_collate .= " COLLATE {$wpdb->collate}";
195
+
196
+ if ( $wpdb->get_var( "SHOW TABLES LIKE '{$this->sliders}'" ) != $this->sliders )
197
+ $this->create_table_sliders();
198
+
199
+ if ( $wpdb->get_var( "SHOW TABLES LIKE '{$this->options}'" ) != $this->options )
200
+ $this->create_table_options();
201
+
202
+ // update tables version to current version
203
+ update_option( "masterslider_db_version", self::DB_VERSION );
204
+
205
+ do_action( 'masterslider_tables_created', $this->tables );
206
+ }
207
+
208
+
209
+
210
+ /**
211
+ * Updates masterslider tables if update is required
212
+ *
213
+ * @since 1.0
214
+ * @return bool is any update required for tabels?
215
+ */
216
+ public function update_tables(){
217
+ // check if the tables need update
218
+ if( get_option( 'masterslider_db_version', '0' ) == self::DB_VERSION )
219
+ return false;
220
+
221
+ $this->create_tables();
222
+
223
+ do_action( 'masterslider_tables_updated', $this->tables );
224
+ return true;
225
+ }
226
+
227
+
228
+ /**
229
+ * Drop all master slider tables
230
+ *
231
+ * @since 1.0
232
+ * @return null
233
+ */
234
+ public function delete_tables() {
235
+ global $wpdb;
236
+
237
+ foreach ( $this->tables as $table_id => $table_name) {
238
+ $wpdb->query("DROP TABLE IF EXISTS $table_name");
239
+ }
240
+ }
241
+
242
+
243
+ /**
244
+ * Filter Masterslider tables to drop when the blog is deleted
245
+ *
246
+ * @since 1.8
247
+ * @return null
248
+ */
249
+ public function wpmu_drop_tables( $tables, $blog_id ){
250
+ global $wpdb;
251
+ $tables[] = $wpdb->base_prefix . $blog_id . '_masterslider_sliders';
252
+ $tables[] = $wpdb->base_prefix . $blog_id . '_masterslider_options';
253
+ return $tables;
254
+ }
255
+
256
+
257
+
258
 
259
 
260
+ /**
261
+ * Adds new slider in sliders table
262
+ *
263
+ * @param array $fields array of fields for sliders table
264
+ * @example array( 'title' => '', 'type' => '', 'skin' => '', 'template' => '',
265
+ * 'common_params' => array(), 'special_params' => array(),
266
+ * 'panel_data' => '', 'is_active' => 1 );
267
+ *
268
+ * @return int|false ID number for new inserted row or false if the row could not be inserted.
269
+ */
270
+ public function add_slider($fields = array() ) {
271
+ global $wpdb;
272
+
273
+ // default fields in sliders table
274
+ $defaults = array(
275
+ 'title' => 'Untitled Slider',
276
+ 'type' => '', // custom, flickr, instagram, facebook, post
277
+ 'slides_num' => 0,
278
+ 'date_created' => '',
279
+ 'date_modified' => '',
280
+ 'params' => array(),
281
+ 'custom_styles' => '',
282
+ 'custom_fonts' => '',
283
+ 'status' => 'published'
284
+ );
285
+
286
+ // merge input $fields with defaults
287
+ $data = wp_parse_args($fields, $defaults);
288
+
289
+ // set current time as date if date is not specified
290
+ if ( empty($data['date_created']) || '0000-00-00 00:00:00' == $data['date_created'] )
291
+ $data['date_created'] = current_time('mysql');
292
+
293
+
294
+ if ( empty($data['date_modified']) || '0000-00-00 00:00:00' == $data['date_modified'] )
295
+ $data['date_modified'] = current_time('mysql');
296
+
297
+ if( isset($data['ID']) )
298
+ unset($data['ID']);
299
+
300
+ // map through some fields and serialize values if data type is array
301
+ $data = $this->maybe_serialize_fields($data);
302
+
303
+ // An array of formats to be mapped to each of the value in $data
304
+ $format = array('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s');
305
+
306
+ // Insert a row into the table. returns false if the row could not be inserted.
307
+ $status = $wpdb->insert( $this->sliders, $data, $format );
308
+
309
+ return (false === $status)? $status: $wpdb->insert_id;
310
+ }
311
+
312
+
313
+ /**
314
+ * Updates a slider data in sliders table
315
+ *
316
+ * @param int $slider_id the slider id that is going to be updated
317
+ * @param array $fields array of fields in sliders table that needs to be updated
318
+ * @param array|string (optional) An array of formats to be mapped to each of the values in $fields
319
+ * @example array( 'title' => '', 'type' => '', 'custom_styles' => array(), 'custom_fonts' => array(),
320
+ * 'params' => '', 'status' => 'published' );
321
+ *
322
+ * @return int|false The number of rows updated, or false on error.
323
+ */
324
+ public function update_slider($slider_id, $fields, $format = null ) {
325
+ global $wpdb;
326
+
327
+ if ( ! isset($slider_id) || ! is_numeric($slider_id) ) {
328
+ return false;
329
+ }
330
+
331
+ if( ! isset($fields) || empty($fields) ){
332
+ return;
333
+ }
334
+
335
+ // default required field while updating
336
+ $defaults = array(
337
+ 'date_modified' => ''
338
+ );
339
 
340
+ // merge input $fields with defaults
341
+ $data = wp_parse_args($fields, $defaults);
342
+
343
+ // set modified date to current time
344
+ if( empty( $data['date_modified'] ) )
345
+ $data['date_modified'] = current_time('mysql');
346
+
347
+
348
+ $data = $this->maybe_serialize_fields($data);
349
+
350
+ // slider id as WHERE clause
351
+ $where = array( 'ID' => $slider_id );
352
 
353
+ // An array of formats to be mapped to each of the values in $where
354
+ $where_format = array( '%d' );
355
 
356
+ // Insert a row into the table
357
+ return $wpdb->update( $this->sliders, $data, $where, $format, $where_format);
358
+ }
359
 
360
 
361
+ /**
362
+ * Remove a specific slider data from sliders table
363
+ *
364
+ * @param int $slider_id The ID of the slider you'd like to be removed
365
+ * @return bool returns true on success or false on error
366
+ */
367
+ public function delete_slider($slider_id) {
368
+ global $wpdb;
369
+
370
+ if ( ! isset($slider_id) || ! is_numeric($slider_id) ) {
371
+ return false;
372
+ }
373
+
374
+ return $wpdb->delete(
375
+ $this->sliders,
376
+ array( 'ID' => (int)$slider_id ),
377
+ array( '%d' )
378
+ );
379
+ }
380
 
381
 
382
+ /**
383
+ * Get slider data by slider id from slider table (for single )
384
+ *
385
+ * @param int $slider_id The ID of the slider you'd like to get the content
386
+ * @return array|null slider data in array or null if no result found
387
+ */
388
+ public function get_slider( $slider_id ) {
389
+ global $wpdb;
390
 
391
+ if ( ! isset($slider_id) || ! is_numeric($slider_id) ) {
392
+ return null;
393
+ }
394
 
395
+ $sql = $wpdb->prepare( "SELECT * FROM {$this->sliders} WHERE ID = %d", (int)$slider_id );
396
+ $result = $wpdb->get_row( $sql, ARRAY_A );
397
 
398
+ return $this->maybe_unserialize_fields($result);
399
+ }
400
 
401
 
402
+ /**
403
+ * Duplicate a slider in new row
404
+ *
405
+ * @param int $slider_id The ID of the slider you'd like to duplicate
406
+ * @return bool true on success and false on failure
407
+ */
408
+ public function duplicate_slider( $slider_id ) {
409
 
410
+ if( ! $fields = $this->get_slider($slider_id) )
411
+ return false;
412
 
413
+ $fields['title'] = $this->duplicate_title( $fields['title'] );
414
 
415
+ return (bool) $this->add_slider($fields);
416
+ }
417
 
418
 
419
+ /**
420
+ * Add new slider with preset data
421
+ *
422
+ * @param string $slider_params The slider panel data
423
+ * @param string $slider_title The slider title
424
+ * @return int|false ID number for new inserted row or false if the row could not be inserted.
425
+ */
426
+ public function import_slider( $fields = array() ) {
427
 
428
+ if( ! isset( $fields['title'] ) || empty( $fields['title'] ) )
429
+ $fields['title'] = 'Untitled Slider';
430
 
431
+ $fields['title'] = $this->duplicate_title( $fields['title'] );
432
 
433
+ return $this->add_slider( $fields );
434
+ }
435
 
436
 
437
+ /**
438
+ * Get the value of a single field for a spesific slider
439
+ *
440
+ * @param int $slider_id The ID of the slider you'd like to get value of its field
441
+ * @param string $field_name The field name in slider table to get value from
442
+ * @return string|null field value or null if no result found
443
+ */
444
+ public function get_slider_field_val( $slider_id, $field_name ) {
445
+ global $wpdb;
446
 
447
+ if ( ! isset( $slider_id ) || ! is_numeric( $slider_id ) ) {
448
+ return '';
449
+ }
450
 
451
+ $result = $this->get_slider($slider_id);
452
 
453
+ return ( $result && isset( $result[$field_name] ) ) ? maybe_unserialize( $result[$field_name] ) : NULL;
454
+ }
455
 
456
 
457
 
458
+ /**
459
+ * Get an array containing row results (serialized) from sliders table
460
+ *
461
+ * @param int $args The query args
462
+ * @return array|null Sliders data in an array or null if no result found
463
+ */
464
+ public function ms_query( $args = array() ) {
465
+ global $wpdb;
466
 
467
+ $default_args = array(
468
+ 'perpage' => 0,
469
+ 'offset' => 0,
470
+ 'orderby' => 'ID',
471
+ 'order' => 'DESC',
472
+ 'where' => "status='published'",
473
+ 'like' => ''
474
+ );
475
 
476
+ $args = wp_parse_args( $args, $default_args );
477
 
478
 
479
+ // convert perpage type to number
480
+ $limit_num = (int) $args['perpage'];
481
 
482
+ // convert offset type to number
483
+ $offset_num = (int) $args['offset'];
484
 
485
+ // remove limit if limit number is set to 0
486
+ $limit = ( 1 > $limit_num ) ? '' : 'LIMIT '. $limit_num;
487
 
488
+ // remove offect if offset number is set to 0
489
+ $offset = ( 0 == $offset_num )? '' : 'OFFSET '. $offset_num;
490
 
491
+ // add LIKE if defined
492
+ $like = empty( $args['like'] ) ? '' : 'LIKE '. $args['like'];
493
 
494
+ $where = empty( $args['where'] ) ? '' : 'WHERE '. $args['where'];
495
 
496
+ // sanitize sort type
497
+ $order = strtolower( $args['order'] ) === 'desc' ? 'DESC' : 'ASC';
498
+ $orderby_clause = $args['orderby'] .' '. $order;
499
 
500
  $orderby_clause = sanitize_sql_orderby( $orderby_clause );
501
 
502
+ $sql = "
503
+ SELECT *
504
+ FROM {$this->sliders}
505
+ $where
506
+ ORDER BY $orderby_clause
507
+ $limit
508
+ $offset
509
+ ";
510
 
511
+ return $wpdb->get_results( $sql, ARRAY_A );
512
+ }
513
 
514
 
515
+ /**
516
+ * Get an array containing row results (serialized) from sliders table
517
+ *
518
+ * @param int $perpage Maximum number of rows to return - 0 means no limit
519
  * @param int $offset The offset of the first row to return
520
  * @param string $orderby The field name to order results by
521
  * @param string $order The sort type. 'DESC' or 'ASC'
522
  * @param string $where The sql filter to get results by
523
+ * @return array|null Sliders data in an array or null if no result found
524
+ */
525
+ public function get_sliders_list( $perpage = 0, $offset = 0, $orderby = 'ID', $order = 'DESC', $where = "status='published'" ) {
526
+ global $wpdb;
527
 
528
+ $args = array(
529
+ 'perpage' => $perpage,
530
+ 'offset' => $offset,
531
+ 'orderby' => $orderby,
532
+ 'order' => $order,
533
+ 'where' => $where
534
+ );
535
 
536
+ return $this->ms_query( $args );
537
+ }
538
 
539
 
540
 
541
+ /**
542
+ * Get an array containing row results (unserialized) from sliders table (with all slider table fields)
543
+ *
544
+ * @param int $perpage Maximum number of rows to return
545
  * @param int $offset The offset of the first row to return
546
  * @param string $orderby The field name to order results by
547
  * @param string $sort The sort type. 'DESC' or 'ASC'
548
  * @param string $where The sql filter to get results by
549
+ * @return array|null Slider data in array or null if no result found
550
+ */
551
+ public function get_sliders( $perpage = 0, $offset = 0, $orderby = 'ID', $sort = 'DESC', $where = "status='published'" ) {
552
 
553
+ // pull mulitple row results from sliders table
554
+ if( ! $results = $this->get_sliders_list( $perpage, $offset, $orderby, $sort, $where ) ){
555
+ return;
556
+ }
557
 
558
+ // map through some fields and unserialize values if some data fields are serialized
559
+ foreach ($results as $row_index => $row) {
560
+ $results[$row_index] = $this->maybe_unserialize_fields($row);
561
+ }
562
 
563
+ return $results;
564
+ }
565
 
566
 
567
+ /**
568
+ * Get total number of sliders from sliders table
569
+ *
570
+ * @return int|null total number of sliders or null on failure
571
+ */
572
+ public function get_total_sliders_count( $where = "status='published'" ) {
573
+ global $wpdb;
574
 
575
+ $result = $wpdb->get_results( "SELECT count(ID) AS total FROM {$this->sliders} WHERE {$where} ", ARRAY_A );
576
+ return $result ? (int)$result[0]['total'] : null;
577
+ }
578
 
579
 
580
 
582
 
583
 
584
 
585
+ /**
586
+ * Insert option data in new record in options table
587
+ *
588
+ * @param string $option_name a unique name for option
589
+ * @param string $option_value the option value
590
+ *
591
+ * @return bool False if option was not added and true if option was added.
592
+ */
593
+ public function add_option( $option_name, $option_value = '' ) {
594
+ global $wpdb;
595
 
596
+ $option_name = trim( $option_name );
597
+ if( empty( $option_name ) ) {
598
+ return false;
599
+ }
600
 
601
+ if ( is_object($option_value) )
602
+ $option_value = clone $option_value;
603
 
604
 
605
+ // serialize the option value
606
+ $option_value = maybe_serialize( $option_value );
607
 
608
+ $fields = array(
609
+ 'option_name' => $option_name,
610
+ 'option_value' => $option_value
611
+ );
612
 
613
+ // check if key already exist in master slider options table
614
+ $sql = $wpdb->prepare( "SELECT * FROM {$this->options} WHERE option_name = %s", $option_name );
615
+ // skip adding option if option added to options table before
616
+ if( $result = $wpdb->get_row( $sql, ARRAY_A ) )
617
+ return false;
618
 
619
+ // An array of formats to be mapped to each of the value in $data
620
+ $format = array('%s', '%s');
621
 
622
+ // Insert a row into the table. returns false if the row could not be inserted.
623
+ $result = $wpdb->insert( $this->options, $fields, $format );
624
 
625
+ if(false === $result)
626
+ return false;
627
 
628
+ wp_cache_set( $option_name, $option_value, 'masterslider' );
629
 
630
+ do_action( 'masterslider_added_option', $option_name, $option_value );
631
+ return true;
632
+ }
633
 
634
 
635
+ /**
636
+ * Get option value
637
+ *
638
+ * @param string $option_name a unique name for option
639
+ * @param string $default_value a value to return by function if option_value not found
640
+ * @return string option_value or default_value
641
+ */
642
+ public function get_option( $option_name, $default_value = '' ) {
643
+ global $wpdb;
644
 
645
+ $option_name = trim( $option_name );
646
+ if( empty( $option_name ) ) {
647
+ return $default_value;
648
+ }
649
 
650
+ $value = wp_cache_get( $option_name, 'masterslider' );
651
 
652
+ // query the value if value is not available in cache
653
+ if( false === $value ) {
654
 
655
+ $sql = $wpdb->prepare( "SELECT * FROM {$this->options} WHERE option_name = %s", $option_name );
656
+ $result = $wpdb->get_row( $sql, ARRAY_A );
657
 
658
+ $value = $result && isset( $result['option_value'] ) ? $result['option_value'] : $default_value;
659
 
660
+ // serialize and cache this option for next request
661
+ $serialized_value = maybe_serialize( $value );
662
+ wp_cache_set( $option_name, $serialized_value, 'masterslider' );
663
+ }
664
 
665
+ return maybe_unserialize( $value );
666
+ }
667
 
668
 
669
 
670
+ /**
671
+ * Update option value in options table, if option_name does not exist then insert new option
672
+ *
673
+ * @param string $option_name a unique name for option
674
+ * @param string $option_value the option value
675
+ *
676
+ * @return int|false ID number for new inserted row or false if the option can not be updated.
677
+ */
678
+ public function update_option( $option_name, $option_value = '' ) {
679
+ global $wpdb;
680
 
681
+ $option_name = trim( $option_name );
682
+ if( empty( $option_name ) ) {
683
+ return false;
684
+ }
685
 
686
+ if ( is_object($option_value) )
687
+ $option_value = clone $option_value;
688
 
689
+ // get current option value
690
+ $old_value = $this->get_option( $option_name );
691
 
692
+ $option_value = apply_filters( 'msp_pre_update_option_' . $option_name, $option_value, $old_value );
693
 
694
+ // If the new and old values are the same, no need to update.
695
+ if ( $option_value === $old_value )
696
+ return false; // 'has same value';
697
 
698
+ $option_value = maybe_serialize( $option_value );
699
 
700
 
701
+ $result = $wpdb->update( $this->options, array( 'option_value' => $option_value ), array( 'option_name' => $option_name ) );
702
 
703
+ if ( ! $result ) {
704
+ return $this->add_option( $option_name, $option_value);
705
+ } else {
706
+ wp_cache_set( $option_name, $option_value, 'masterslider' );
707
+ }
708
 
709
+ return true;
710
+ }
711
 
712
 
713
+ /**
714
+ * Remove a specific option name from options table
715
+ *
716
+ * @param string $option_name a unique name for option
717
+ * @return bool True, if option is successfully deleted. False on failure.
718
+ */
719
+ public function delete_option( $option_name ) {
720
+ global $wpdb;
721
 
722
+ $option_name = trim( $option_name );
723
+ if( empty( $option_name ) ) {
724
+ return false;
725
+ }
726
 
727
+ $result = $wpdb->delete(
728
+ $this->options,
729
+ array( 'option_name' => $option_name ),
730
+ array( '%s' )
731
+ );
732
 
733
+ wp_cache_delete( $option_name, 'masterslider' );
734
 
735
+ return (bool) $result;
736
+ }
737
 
738
 
739
 
741
 
742
 
743
 
744
+ // map through some fields and unserialize values if data field is serialized
745
+ protected function maybe_unserialize_fields($row_fields){
746
+ if ( empty($row_fields) ) {
747
+ return $row_fields;
748
+ }
749
 
750
+ foreach ( $row_fields as $key => $value) {
751
+ $row_fields[$key] = maybe_unserialize( $value );
752
+ }
753
+ return $row_fields;
754
+ }
755
 
756
 
757
 
758
+ // map through some fields and serialize values if data type is array
759
+ protected function maybe_serialize_fields($row_fields){
760
+ if ( empty($row_fields) ) {
761
+ return $row_fields;
762
+ }
763
 
764
+ foreach ( $row_fields as $key => $value) {
765
+ $row_fields[$key] = maybe_serialize( $value );
766
+ }
767
+ return $row_fields;
768
+ }
769
 
770
 
771
+ /**
772
+ * Insert a row into a table.
773
+ * @param array $fields array of fields and values to insert
774
+ * @param array $defaults array of default fields value to insert if field value is not set
775
+ *
776
+ * @return int|false ID number for new inserted row or false if the row could not be inserted.
777
+ */
778
+ public function insert( $table_name, $fields = array(), $defaults = array(), $format = NULL ) {
779
+ global $wpdb;
780
 
781
+ if( empty( $fields ) ) {
782
+ return false;
783
+ }
784
 
785
+ // merge input $fields with defaults
786
+ $data = wp_parse_args($fields, $defaults);
787
 
788
+ // map through some fields and serialize values if data type is array or object
789
+ $data = $this->maybe_serialize_fields( $data );
790
 
791
+ // Insert a row into the table. returns false if the row could not be inserted.
792
+ $result = $wpdb->insert( $table_name, $data, $format );
793
 
794
+ return (false === $result)? $result : $wpdb->insert_id;
795
+ }
796
 
797
 
798
+ public function duplicate_title($title, $suffix = '' ){
799
+ $title = trim($title);
800
+ if( empty($suffix) ){
801
+ $suffix = __('copy', 'master-slider');
802
+ }
803
 
804
+ $suffix_num = substr($title, -2);
805
 
806
+ if (strpos($title, ' '.$suffix) !== false) {
807
+ $suffix_num = substr($title, -2);
808
+ if( is_numeric($suffix_num) ){
809
+ $suffix_num = (int)$suffix_num + 1;
810
+ $title = trim(substr($title, 0, -2)) . ' ' . $suffix_num;
811
+ } else {
812
+ $title = trim($title) . ' 1';
813
+ }
814
+ } else {
815
+ $title .= ' '.$suffix;
816
+ }
817
+ return $title;
818
+ }
819
 
820
  }
821
 
includes/classes/class-msp-main-widget.php CHANGED
@@ -20,7 +20,7 @@ if ( ! class_exists( 'MSP_Main_Widget' ) ) :
20
  class MSP_Main_Widget extends MSP_Widget {
21
 
22
  public $fields = array(
23
-
24
  array(
25
  'name' => 'Title',
26
  'id' => 'title',
@@ -34,7 +34,7 @@ class MSP_Main_Widget extends MSP_Widget {
34
  'value' => '-1',
35
  'options' => array()
36
  )
37
-
38
  );
39
 
40
  /*--------------------------------------------------*/
@@ -50,10 +50,10 @@ class MSP_Main_Widget extends MSP_Widget {
50
 
51
  parent::__construct(
52
  'master-slider-main-widget',
53
- __( 'Master Slider Widget', MSWP_TEXT_DOMAIN ),
54
  array(
55
  'classname' => 'master-slider-main-widget',
56
- 'description' => __( 'Display a Master Slider', MSWP_TEXT_DOMAIN )
57
  )
58
  );
59
 
@@ -80,7 +80,7 @@ class MSP_Main_Widget extends MSP_Widget {
80
  if ( ! empty( $title ) ) { echo $before_title . $title . $after_title; }
81
 
82
  echo get_masterslider( $instance['id'] );
83
-
84
  echo $after_widget;
85
  } // end widget
86
 
@@ -92,4 +92,4 @@ endif;
92
 
93
 
94
  // init the widget
95
- add_action( 'widgets_init', create_function( '', 'register_widget("MSP_Main_Widget");' ) );
20
  class MSP_Main_Widget extends MSP_Widget {
21
 
22
  public $fields = array(
23
+
24
  array(
25
  'name' => 'Title',
26
  'id' => 'title',
34
  'value' => '-1',
35
  'options' => array()
36
  )
37
+
38
  );
39
 
40
  /*--------------------------------------------------*/
50
 
51
  parent::__construct(
52
  'master-slider-main-widget',
53
+ __( 'Master Slider Widget', 'master-slider' ),
54
  array(
55
  'classname' => 'master-slider-main-widget',
56
+ 'description' => __( 'Display a Master Slider', 'master-slider' )
57
  )
58
  );
59
 
80
  if ( ! empty( $title ) ) { echo $before_title . $title . $after_title; }
81
 
82
  echo get_masterslider( $instance['id'] );
83
+
84
  echo $after_widget;
85
  } // end widget
86
 
92
 
93
 
94
  // init the widget
95
+ add_action( 'widgets_init', create_function( '', 'register_widget("MSP_Main_Widget");' ) );
includes/init/define.php CHANGED
@@ -5,7 +5,7 @@ if ( ! defined('ABSPATH') ) {
5
  die();
6
  }
7
 
8
- define( 'MSWP_AVERTA_VERSION' , '2.6.4' );
9
 
10
  define( 'MSWP_SLUG' , 'master-slider' );
11
  define( 'MSWP_TEXT_DOMAIN' , 'masterslider' );
5
  die();
6
  }
7
 
8
+ define( 'MSWP_AVERTA_VERSION' , '2.7.0' );
9
 
10
  define( 'MSWP_SLUG' , 'master-slider' );
11
  define( 'MSWP_TEXT_DOMAIN' , 'masterslider' );
includes/lib/vcomposer.php CHANGED
@@ -6,37 +6,37 @@
6
 
7
  if ( defined('WPB_VC_VERSION') ) {
8
 
9
- wpb_map(
10
  array(
11
- 'name' => __( 'Master Slider', MSWP_TEXT_DOMAIN ),
12
  'base' => 'masterslider_pb',
13
  'class' => '',
14
  'controls' => 'full',
15
  'icon' => 'icon-vc-msslider-el',
16
- 'category' => __( 'Content', MSWP_TEXT_DOMAIN ),
17
- 'description' => __( 'Add Master Slider', MSWP_TEXT_DOMAIN ),
18
-
19
  'params' => array(
20
  array(
21
  'type' => 'textfield',
22
- 'heading' => __( 'Title ', MSWP_TEXT_DOMAIN ),
23
  'param_name' => 'title',
24
  'value' => '',
25
- 'description' => __( 'What text use as slider title. Leave blank if no title is needed', MSWP_TEXT_DOMAIN )
26
  ),
27
  array(
28
  'type' => 'dropdown',
29
- 'heading' => __('Master Slider', MSWP_TEXT_DOMAIN ),
30
  'param_name' => 'id',
31
  'value' => get_masterslider_names( false ),
32
- 'description' => __( 'Select slider from list', MSWP_TEXT_DOMAIN )
33
  ),
34
  array(
35
  'type' => 'textfield',
36
- 'heading' => __( 'Extra CSS Class Name', MSWP_TEXT_DOMAIN ),
37
  'param_name' => 'class',
38
  'value' => '',
39
- 'description' => __( 'If you wish to style particular element differently, then use this field to add a class name and then refer to it in your css file.', MSWP_TEXT_DOMAIN )
40
  )
41
  )
42
  )
@@ -44,4 +44,4 @@ if ( defined('WPB_VC_VERSION') ) {
44
 
45
  }
46
 
47
- /*----------------------------------------------------------------------------*/
6
 
7
  if ( defined('WPB_VC_VERSION') ) {
8
 
9
+ wpb_map(
10
  array(
11
+ 'name' => __( 'Master Slider', 'master-slider' ),
12
  'base' => 'masterslider_pb',
13
  'class' => '',
14
  'controls' => 'full',
15
  'icon' => 'icon-vc-msslider-el',
16
+ 'category' => __( 'Content', 'master-slider' ),
17
+ 'description' => __( 'Add Master Slider', 'master-slider' ),
18
+
19
  'params' => array(
20
  array(
21
  'type' => 'textfield',
22
+ 'heading' => __( 'Title ', 'master-slider' ),
23
  'param_name' => 'title',
24
  'value' => '',
25
+ 'description' => __( 'What text use as slider title. Leave blank if no title is needed', 'master-slider' )
26
  ),
27
  array(
28
  'type' => 'dropdown',
29
+ 'heading' => __('Master Slider', 'master-slider' ),
30
  'param_name' => 'id',
31
  'value' => get_masterslider_names( false ),
32
+ 'description' => __( 'Select slider from list', 'master-slider' )
33
  ),
34
  array(
35
  'type' => 'textfield',
36
+ 'heading' => __( 'Extra CSS Class Name', 'master-slider' ),
37
  'param_name' => 'class',
38
  'value' => '',
39
+ 'description' => __( 'If you wish to style particular element differently, then use this field to add a class name and then refer to it in your css file.', 'master-slider' )
40
  )
41
  )
42
  )
44
 
45
  }
46
 
47
+ /*----------------------------------------------------------------------------*/
includes/msp-functions.php CHANGED
@@ -38,7 +38,7 @@ if( ! function_exists( 'get_masterslider' ) ) {
38
 
39
  // through an error if slider id is not valid number
40
  if( ! is_numeric( $slider_id ) )
41
- return __( 'Invalid slider id. Master Slider ID must be a valid number.', MSWP_TEXT_DOMAIN );
42
 
43
  // load masterslider script
44
  wp_enqueue_style ( 'masterslider-main');
@@ -534,22 +534,22 @@ function msp_the_post_thumbnail( $post_id = null, $width = null , $height = null
534
 
535
  if( ! isset( $post ) ) return '';
536
 
537
- if ( 'auto' == $image_from ) {
538
- $img_src = has_post_thumbnail( $post->ID ) ? msp_get_the_post_thumbnail_full_src( $post->ID ) : '';
539
 
540
- if( empty( $img_src ) ) {
541
- $content = get_the_content();
542
- $img_src = msp_get_first_image_src_from_string( $content );
543
- }
544
 
545
- } elseif( 'featured' == $image_from ) {
546
- $img_src = has_post_thumbnail( $post->ID ) ? msp_get_the_post_thumbnail_full_src( $post->ID ) : '';
547
 
548
- } elseif ( 'first' == $image_from ) {
549
 
550
- $content = get_the_content();
551
- $img_src = msp_get_first_image_src_from_string( $content );
552
- }
553
 
554
  return $img_src;
555
  }
@@ -807,8 +807,8 @@ function msp_exclude_strip_shortcode_tags(){
807
  * @return array List of all custom post types
808
  */
809
  function msp_get_custom_post_types(){
810
- $custom_post_types = get_post_types( array( '_builtin' => false ), 'objects' );
811
- return apply_filters( 'masterslider_get_custom_post_types', $custom_post_types );
812
  }
813
 
814
 
@@ -824,38 +824,38 @@ function msp_is_plugin_active( $plugin_basename ){
824
 
825
 
826
  function msp_get_template_tag_value( $tag_name, $post = null, $args = null ){
827
- $post = get_post( $post );
828
- $value = '{{' . $tag_name . '}}';
829
-
830
- switch ( $tag_name ) {
831
-
832
- case 'title':
833
- $value = $post->post_title;
834
- break;
835
-
836
- case 'content':
837
- $value = $post->post_content;
838
- break;
839
-
840
- case 'excerpt':
841
- $value = $post->post_excerpt;
842
- if ( empty( $value ) ) {
843
- $excerpt_length = isset( $args['excerpt_length'] ) ? (int)$args['excerpt_length'] : 80;
844
- $value = msp_get_the_trim_excerpt( $value, $excerpt_length );
845
- }
846
- break;
847
-
848
- case 'permalink':
849
- $value = $post->guid;
850
- break;
851
-
852
- case 'author':
853
- $value = get_the_author_meta( 'display_name', (int)$post->post_author );
854
- break;
855
-
856
- case 'post_id':
857
- $value = $post->ID;
858
- break;
859
 
860
  case 'categories':
861
  $taxonomy_objects = get_object_taxonomies( $post, 'objects' );
@@ -881,132 +881,132 @@ function msp_get_template_tag_value( $tag_name, $post = null, $args = null ){
881
  $value = rtrim( $value, ' / ' );
882
  break;
883
 
884
- case 'image':
885
- $value = msp_get_auto_post_thumbnail_src( $post, 'featured' );
886
 
887
- if( ! empty( $value ) )
888
- $value = sprintf( '<img src="%s" alt="%s" />', $value, $post->post_title );
889
- break;
890
 
891
- case 'image-url':
892
  case 'slide-image-url':
893
  $value = msp_get_auto_post_thumbnail_src( $post, 'auto' );
894
  break;
895
 
896
- case 'year':
897
- $value = strtotime( $post->post_date );
898
- $value = date_i18n( 'Y', $value );
899
- break;
900
-
901
- case 'daynum':
902
- $value = strtotime( $post->post_date );
903
- $value = date_i18n( 'j', $value );
904
- break;
905
-
906
- case 'day':
907
- $value = strtotime( $post->post_date );
908
- $value = date_i18n( 'l', $value );
909
- break;
910
-
911
- case 'monthnum':
912
- $value = strtotime( $post->post_date );
913
- $value = date_i18n( 'm', $value );
914
- break;
915
-
916
- case 'month':
917
- $value = strtotime( $post->post_date );
918
- $value = date_i18n( 'F', $value );
919
- break;
920
-
921
- case 'time':
922
- $value = strtotime( $post->post_date );
923
- $value = date_i18n( 'g:i A', $value );
924
- break;
925
-
926
- case 'date-published':
927
- $value = $post->post_date;
928
- break;
929
-
930
- case 'date-modified':
931
- $value = $post->post_modified;
932
- break;
933
-
934
- case 'commentnum':
935
- $value = $post->comment_count;
936
- break;
937
-
938
- case 'wc_price':
939
- if ( ! msp_is_plugin_active( 'woocommerce/woocommerce.php' ) ) break;
940
- $product = get_product( $post );
941
- $value = wc_format_decimal( $product->get_price(), 2 );
942
- break;
943
-
944
- case 'wc_regular_price':
945
- if ( ! msp_is_plugin_active( 'woocommerce/woocommerce.php' ) ) break;
946
- $product = get_product( $post );
947
- $value = wc_format_decimal( $product->get_regular_price(), 2 );
948
- break;
949
-
950
- case 'wc_sale_price':
951
- if ( ! msp_is_plugin_active( 'woocommerce/woocommerce.php' ) ) break;
952
- $product = get_product( $post );
953
- $value = $product->get_sale_price() ? wc_format_decimal( $product->get_sale_price(), 2 ) : '';
954
- break;
955
-
956
- case 'wc_stock_status':
957
- if ( ! msp_is_plugin_active( 'woocommerce/woocommerce.php' ) ) break;
958
- $product = get_product( $post );
959
- $value = $product->is_in_stock() ? __( 'In Stock', MSWP_TEXT_DOMAIN ) : __( 'Out of Stock', MSWP_TEXT_DOMAIN );
960
- break;
961
-
962
- case 'wc_stock_quantity':
963
- if ( ! msp_is_plugin_active( 'woocommerce/woocommerce.php' ) ) break;
964
- $product = get_product( $post );
965
- $value = (int) $product->get_stock_quantity();
966
- break;
967
-
968
- case 'wc_weight':
969
- if ( ! msp_is_plugin_active( 'woocommerce/woocommerce.php' ) ) break;
970
- $product = get_product( $post );
971
- $value = $product->get_weight() ? wc_format_decimal( $product->get_weight(), 2 ) : '';
972
- break;
973
-
974
- case 'wc_product_cats':
975
- if ( ! msp_is_plugin_active( 'woocommerce/woocommerce.php' ) ) break;
976
- $product = get_product( $post );
977
- $value = wp_get_post_terms( $product->id, 'product_cat', array( 'fields' => 'names' ) );
978
- break;
979
-
980
- case 'wc_product_tags':
981
- if ( ! msp_is_plugin_active( 'woocommerce/woocommerce.php' ) ) break;
982
- $product = get_product( $post );
983
- $value = wp_get_post_terms( $product->id, 'product_tag', array( 'fields' => 'names' ) );
984
- break;
985
-
986
- case 'wc_total_sales':
987
- if ( ! msp_is_plugin_active( 'woocommerce/woocommerce.php' ) ) break;
988
- $product = get_product( $post );
989
- $value = metadata_exists( 'post', $product->id, 'total_sales' ) ? (int) get_post_meta( $product->id, 'total_sales', true ) : 0;
990
- break;
991
-
992
- case 'wc_average_rating':
993
- if ( ! msp_is_plugin_active( 'woocommerce/woocommerce.php' ) ) break;
994
- $product = get_product( $post );
995
- $value = wc_format_decimal( $product->get_average_rating(), 2 );
996
- break;
997
-
998
- case 'wc_rating_count':
999
- if ( ! msp_is_plugin_active( 'woocommerce/woocommerce.php' ) ) break;
1000
- $product = get_product( $post );
1001
- $value = (int) $product->get_rating_count();
1002
- break;
1003
-
1004
- default:
1005
  $value = get_post_meta( $post->ID, $tag_name, true );
1006
- break;
1007
- }
1008
 
1009
- return apply_filters( 'masterslider_get_template_tag_value', $value, $tag_name, $post, $args );
1010
  }
1011
 
1012
 
@@ -1028,12 +1028,12 @@ function msp_escape_tag( $tag_name ){
1028
 
1029
 
1030
  function msp_is_true($value) {
1031
- return strtolower( $value ) === 'true' ? 'true' : 'false';
1032
  }
1033
 
1034
 
1035
  function msp_is_true_e( $value ) {
1036
- echo msp_is_true( $value );
1037
  }
1038
 
1039
 
38
 
39
  // through an error if slider id is not valid number
40
  if( ! is_numeric( $slider_id ) )
41
+ return __( 'Invalid slider id. Master Slider ID must be a valid number.', 'master-slider' );
42
 
43
  // load masterslider script
44
  wp_enqueue_style ( 'masterslider-main');
534
 
535
  if( ! isset( $post ) ) return '';
536
 
537
+ if ( 'auto' == $image_from ) {
538
+ $img_src = has_post_thumbnail( $post->ID ) ? msp_get_the_post_thumbnail_full_src( $post->ID ) : '';
539
 
540
+ if( empty( $img_src ) ) {
541
+ $content = get_the_content();
542
+ $img_src = msp_get_first_image_src_from_string( $content );
543
+ }
544
 
545
+ } elseif( 'featured' == $image_from ) {
546
+ $img_src = has_post_thumbnail( $post->ID ) ? msp_get_the_post_thumbnail_full_src( $post->ID ) : '';
547
 
548
+ } elseif ( 'first' == $image_from ) {
549
 
550
+ $content = get_the_content();
551
+ $img_src = msp_get_first_image_src_from_string( $content );
552
+ }
553
 
554
  return $img_src;
555
  }
807
  * @return array List of all custom post types
808
  */
809
  function msp_get_custom_post_types(){
810
+ $custom_post_types = get_post_types( array( '_builtin' => false ), 'objects' );
811
+ return apply_filters( 'masterslider_get_custom_post_types', $custom_post_types );
812
  }
813
 
814
 
824
 
825
 
826
  function msp_get_template_tag_value( $tag_name, $post = null, $args = null ){
827
+ $post = get_post( $post );
828
+ $value = '{{' . $tag_name . '}}';
829
+
830
+ switch ( $tag_name ) {
831
+
832
+ case 'title':
833
+ $value = $post->post_title;
834
+ break;
835
+
836
+ case 'content':
837
+ $value = $post->post_content;
838
+ break;
839
+
840
+ case 'excerpt':
841
+ $value = $post->post_excerpt;
842
+ if ( empty( $value ) ) {
843
+ $excerpt_length = isset( $args['excerpt_length'] ) ? (int)$args['excerpt_length'] : 80;
844
+ $value = msp_get_the_trim_excerpt( $value, $excerpt_length );
845
+ }
846
+ break;
847
+
848
+ case 'permalink':
849
+ $value = $post->guid;
850
+ break;
851
+
852
+ case 'author':
853
+ $value = get_the_author_meta( 'display_name', (int)$post->post_author );
854
+ break;
855
+
856
+ case 'post_id':
857
+ $value = $post->ID;
858
+ break;
859
 
860
  case 'categories':
861
  $taxonomy_objects = get_object_taxonomies( $post, 'objects' );
881
  $value = rtrim( $value, ' / ' );
882
  break;
883
 
884
+ case 'image':
885
+ $value = msp_get_auto_post_thumbnail_src( $post, 'featured' );
886
 
887
+ if( ! empty( $value ) )
888
+ $value = sprintf( '<img src="%s" alt="%s" />', $value, $post->post_title );
889
+ break;
890
 
891
+ case 'image-url':
892
  case 'slide-image-url':
893
  $value = msp_get_auto_post_thumbnail_src( $post, 'auto' );
894
  break;
895
 
896
+ case 'year':
897
+ $value = strtotime( $post->post_date );
898
+ $value = date_i18n( 'Y', $value );
899
+ break;
900
+
901
+ case 'daynum':
902
+ $value = strtotime( $post->post_date );
903
+ $value = date_i18n( 'j', $value );
904
+ break;
905
+
906
+ case 'day':
907
+ $value = strtotime( $post->post_date );
908
+ $value = date_i18n( 'l', $value );
909
+ break;
910
+
911
+ case 'monthnum':
912
+ $value = strtotime( $post->post_date );
913
+ $value = date_i18n( 'm', $value );
914
+ break;
915
+
916
+ case 'month':
917
+ $value = strtotime( $post->post_date );
918
+ $value = date_i18n( 'F', $value );
919
+ break;
920
+
921
+ case 'time':
922
+ $value = strtotime( $post->post_date );
923
+ $value = date_i18n( 'g:i A', $value );
924
+ break;
925
+
926
+ case 'date-published':
927
+ $value = $post->post_date;
928
+ break;
929
+
930
+ case 'date-modified':
931
+ $value = $post->post_modified;
932
+ break;
933
+
934
+ case 'commentnum':
935
+ $value = $post->comment_count;
936
+ break;
937
+
938
+ case 'wc_price':
939
+ if ( ! msp_is_plugin_active( 'woocommerce/woocommerce.php' ) ) break;
940
+ $product = get_product( $post );
941
+ $value = wc_format_decimal( $product->get_price(), 2 );
942
+ break;
943
+
944
+ case 'wc_regular_price':
945
+ if ( ! msp_is_plugin_active( 'woocommerce/woocommerce.php' ) ) break;
946
+ $product = get_product( $post );
947
+ $value = wc_format_decimal( $product->get_regular_price(), 2 );
948
+ break;
949
+
950
+ case 'wc_sale_price':
951
+ if ( ! msp_is_plugin_active( 'woocommerce/woocommerce.php' ) ) break;
952
+ $product = get_product( $post );
953
+ $value = $product->get_sale_price() ? wc_format_decimal( $product->get_sale_price(), 2 ) : '';
954
+ break;
955
+
956
+ case 'wc_stock_status':
957
+ if ( ! msp_is_plugin_active( 'woocommerce/woocommerce.php' ) ) break;
958
+ $product = get_product( $post );
959
+ $value = $product->is_in_stock() ? __( 'In Stock', 'master-slider' ) : __( 'Out of Stock', 'master-slider' );
960
+ break;
961
+
962
+ case 'wc_stock_quantity':
963
+ if ( ! msp_is_plugin_active( 'woocommerce/woocommerce.php' ) ) break;
964
+ $product = get_product( $post );
965
+ $value = (int) $product->get_stock_quantity();
966
+ break;
967
+
968
+ case 'wc_weight':
969
+ if ( ! msp_is_plugin_active( 'woocommerce/woocommerce.php' ) ) break;
970
+ $product = get_product( $post );
971
+ $value = $product->get_weight() ? wc_format_decimal( $product->get_weight(), 2 ) : '';
972
+ break;
973
+
974
+ case 'wc_product_cats':
975
+ if ( ! msp_is_plugin_active( 'woocommerce/woocommerce.php' ) ) break;
976
+ $product = get_product( $post );
977
+ $value = wp_get_post_terms( $product->id, 'product_cat', array( 'fields' => 'names' ) );
978
+ break;
979
+
980
+ case 'wc_product_tags':
981
+ if ( ! msp_is_plugin_active( 'woocommerce/woocommerce.php' ) ) break;
982
+ $product = get_product( $post );
983
+ $value = wp_get_post_terms( $product->id, 'product_tag', array( 'fields' => 'names' ) );
984
+ break;
985
+
986
+ case 'wc_total_sales':
987
+ if ( ! msp_is_plugin_active( 'woocommerce/woocommerce.php' ) ) break;
988
+ $product = get_product( $post );
989
+ $value = metadata_exists( 'post', $product->id, 'total_sales' ) ? (int) get_post_meta( $product->id, 'total_sales', true ) : 0;
990
+ break;
991
+
992
+ case 'wc_average_rating':
993
+ if ( ! msp_is_plugin_active( 'woocommerce/woocommerce.php' ) ) break;
994
+ $product = get_product( $post );
995
+ $value = wc_format_decimal( $product->get_average_rating(), 2 );
996
+ break;
997
+
998
+ case 'wc_rating_count':
999
+ if ( ! msp_is_plugin_active( 'woocommerce/woocommerce.php' ) ) break;
1000
+ $product = get_product( $post );
1001
+ $value = (int) $product->get_rating_count();
1002
+ break;
1003
+
1004
+ default:
1005
  $value = get_post_meta( $post->ID, $tag_name, true );
1006
+ break;
1007
+ }
1008
 
1009
+ return apply_filters( 'masterslider_get_template_tag_value', $value, $tag_name, $post, $args );
1010
  }
1011
 
1012
 
1028
 
1029
 
1030
  function msp_is_true($value) {
1031
+ return strtolower( $value ) === 'true' ? 'true' : 'false';
1032
  }
1033
 
1034
 
1035
  function msp_is_true_e( $value ) {
1036
+ echo msp_is_true( $value );
1037
  }
1038
 
1039
 
includes/msp-shortcodes.php CHANGED
@@ -9,11 +9,11 @@ add_shortcode( 'master_slider' , 'msp_masterslider_shortcode' );
9
 
10
 
11
  function msp_masterslider_shortcode( $atts, $content = null ) {
12
- extract( shortcode_atts(
13
  array( 'id' => ''),
14
- $atts,
15
  'masterslider'
16
- )
17
  );
18
 
19
  return get_masterslider( $id );
@@ -26,13 +26,13 @@ function msp_masterslider_shortcode( $atts, $content = null ) {
26
  add_shortcode( 'masterslider_pb', 'msp_masterslider_pb_shortcode' );
27
 
28
  function msp_masterslider_pb_shortcode( $atts, $content = null ) {
29
- $mixed = shortcode_atts(
30
- array(
31
- 'id' => '',
32
  'title' => '',
33
  'class' => ''
34
  ),
35
- $atts,
36
  'masterslider_pb'
37
  );
38
 
@@ -56,13 +56,13 @@ add_shortcode( 'ms_slider', 'msp_masterslider_wrapper_shortcode' );
56
 
57
  function msp_masterslider_wrapper_shortcode( $atts, $content = null ) {
58
 
59
- $mixed = shortcode_atts(
60
 
61
  array(
62
  'id' => '1', // slider id
63
- 'uid' => '', // an unique and temporary id
64
  'class' => '', // a class that adds to slider wrapper
65
- 'margin' => 0,
66
 
67
  'inline_style' => '',
68
  'bg_color' => '',
@@ -86,7 +86,7 @@ function msp_masterslider_wrapper_shortcode( $atts, $content = null ) {
86
  'crop' => 'false', // Automatically crop slide images?
87
 
88
  'autoplay' => 'false', // Enables the autoplay slideshow
89
- 'loop' => 'false', //
90
  'shuffle' => 'false', // Enables the shuffle slide order
91
  'preload' => 0,
92
 
@@ -104,7 +104,7 @@ function msp_masterslider_wrapper_shortcode( $atts, $content = null ) {
104
  'height_limit' => 'false', // It force the slide to use max height value as its base specified height value.
105
  'auto_height' => 'false',
106
  'smooth_height' => 'true',
107
-
108
  'end_pause' => 'false',
109
  'over_pause' => 'false',
110
 
@@ -137,7 +137,7 @@ function msp_masterslider_wrapper_shortcode( $atts, $content = null ) {
137
  'flickr_size' => 'c',
138
  'flickr_thumb_size' => 'q',
139
 
140
-
141
  'facebook_username' => '',
142
  'facebook_albumid' => '',
143
  'facebook_count' => 10,
@@ -171,7 +171,7 @@ function msp_masterslider_wrapper_shortcode( $atts, $content = null ) {
171
  'bullets_align' => 'bottom',
172
  'bullets_margin' => '',
173
  'bullets_hideunder'=> '',
174
-
175
  'thumbs' => 'false', // display thumbnails?
176
  'thumbs_autohide' => 'true', // auto hide thumbs?
177
  'thumbs_overvideo' => 'true', // visible over slide video while playing?
@@ -217,7 +217,7 @@ function msp_masterslider_wrapper_shortcode( $atts, $content = null ) {
217
  'timebar_color' => '#FFFFFF',
218
  'timebar_hideunder'=> '',
219
  'timebar_width' => '',
220
-
221
 
222
  'slideinfo' => 'false', // display timebar?
223
  'slideinfo_autohide' => 'true', // auto hide timebar?
@@ -249,16 +249,16 @@ function msp_masterslider_wrapper_shortcode( $atts, $content = null ) {
249
  wp_enqueue_style ( 'masterslider-main');
250
  wp_enqueue_script( 'masterslider-core');
251
  wp_enqueue_script( 'prettyPhoto' );
252
-
253
  // create an unique id for slider
254
  $uid = empty($uid ) ? uniqid("MS") : $uid;
255
  // unique id for parant wrapper
256
  $puid = 'P_' . $uid;
257
 
258
-
259
  // class name for slider template
260
  $template_class = empty( $template_class ) ? '' : esc_attr( $template_class );
261
-
262
  $preload = is_numeric($preload) ? ( (int)$preload + 1 ) : "'$preload'";
263
 
264
 
@@ -267,11 +267,11 @@ function msp_masterslider_wrapper_shortcode( $atts, $content = null ) {
267
  // validate wrapper_width_unit
268
  $wrapper_width_unit = in_array( $wrapper_width_unit, array( 'px', '%', 'em' ) ) ? $wrapper_width_unit : 'px';
269
  $inline_style .= sprintf( 'max-width:%s%s;', $wrapper_width, $wrapper_width_unit );
270
-
271
  // if wrapper_width is not set use slider width as default
272
  } elseif ( 'boxed' == $layout ) {
273
  $inline_style .= sprintf( 'max-width:%spx;', $width );
274
-
275
  // if wrapper_width is not set the value to 100%
276
  } elseif ( 'partialview' == $layout ) {
277
  $inline_style .= 'max-width:100%;';
@@ -326,7 +326,7 @@ function msp_masterslider_wrapper_shortcode( $atts, $content = null ) {
326
  } else {
327
  $slideinfo_size = sprintf( ', size:%s', $slideinfo_width );
328
  }
329
-
330
  $instance_suffix = substr($uid, -4);
331
  // slider javascript instance name
332
  $instance_name = "masterslider_".$instance_suffix;
@@ -339,11 +339,11 @@ function msp_masterslider_wrapper_shortcode( $atts, $content = null ) {
339
  if( 'laptop' == $template ){
340
  $inner_template_container_open_tags = sprintf( '<div class="ms-laptop-cont"><img src="%s" class="ms-laptop-bg" /><div class="ms-lt-slider-cont">', MSWP_AVERTA_PUB_URL.'/assets/css/templates/laptop.png' );
341
  $inner_template_container_close_tags = '</div></div>';
342
-
343
  } elseif( 'display' == $template ){
344
  $inner_template_container_open_tags = sprintf( '<div class="ms-display-cont"><img src="%s" class="ms-display-bg" /><div class="ms-dis-slider-cont">', MSWP_AVERTA_PUB_URL.'/assets/css/templates/display.png' );
345
  $inner_template_container_close_tags = '</div></div>';
346
-
347
  } elseif( 'flat-laptop' == $template ){
348
  $inner_template_container_open_tags = sprintf( '<div class="ms-laptop-cont"><img src="%s" class="ms-laptop-bg" /><div class="ms-lt-slider-cont">', MSWP_AVERTA_PUB_URL.'/assets/css/templates/flat-laptop.png' );
349
  $inner_template_container_close_tags = '</div></div>';
@@ -351,35 +351,35 @@ function msp_masterslider_wrapper_shortcode( $atts, $content = null ) {
351
  } elseif( 'flat-display' == $template ){
352
  $inner_template_container_open_tags = sprintf( '<div class="ms-display-cont"><img src="%s" class="ms-display-bg" /><div class="ms-dis-slider-cont">', MSWP_AVERTA_PUB_URL.'/assets/css/templates/flat-display.png' );
353
  $inner_template_container_close_tags = '</div></div>';
354
-
355
  } elseif( 'tablet' == $template ){
356
  $inner_template_container_open_tags = sprintf( '<div class="ms-tablet-cont"><img src="%s" class="ms-tablet-bg" /><div class="ms-lt-slider-cont">', MSWP_AVERTA_PUB_URL.'/assets/css/templates/tablet.png' );
357
  $inner_template_container_close_tags = '</div></div>';
358
-
359
  } elseif( 'flat-tablet' == $template ){
360
  $inner_template_container_open_tags = sprintf( '<div class="ms-tablet-cont"><img src="%s" class="ms-tablet-bg" /><div class="ms-lt-slider-cont">', MSWP_AVERTA_PUB_URL.'/assets/css/templates/flat-tablet.png' );
361
  $inner_template_container_close_tags = '</div></div>';
362
-
363
  } elseif( 'tablet-land' == $template ){
364
  $inner_template_container_open_tags = sprintf( '<div class="ms-tablet-cont"><img src="%s" class="ms-tablet-bg" /><div class="ms-lt-slider-cont">', MSWP_AVERTA_PUB_URL.'/assets/css/templates/tablet-land.png' );
365
  $inner_template_container_close_tags = '</div></div>';
366
-
367
  } elseif( 'flat-tablet-land' == $template ){
368
  $inner_template_container_open_tags = sprintf( '<div class="ms-tablet-cont"><img src="%s" class="ms-tablet-bg" /><div class="ms-lt-slider-cont">', MSWP_AVERTA_PUB_URL.'/assets/css/templates/flat-tablet-land.png' );
369
  $inner_template_container_close_tags = '</div></div>';
370
-
371
  } elseif( 'phone' == $template ){
372
  $inner_template_container_open_tags = sprintf( '<div class="ms-phone-cont"><img src="%s" class="ms-phone-bg" /><div class="ms-lt-slider-cont">', MSWP_AVERTA_PUB_URL.'/assets/css/templates/phone.png' );
373
  $inner_template_container_close_tags = '</div></div>';
374
-
375
  } elseif( 'flat-phone' == $template ){
376
  $inner_template_container_open_tags = sprintf( '<div class="ms-phone-cont"><img src="%s" class="ms-phone-bg" /><div class="ms-lt-slider-cont">', MSWP_AVERTA_PUB_URL.'/assets/css/templates/flat-phone.png' );
377
  $inner_template_container_close_tags = '</div></div>';
378
-
379
  } elseif( 'phone-land' == $template ){
380
  $inner_template_container_open_tags = sprintf( '<div class="ms-phone-cont"><img src="%s" class="ms-phone-bg" /><div class="ms-lt-slider-cont">', MSWP_AVERTA_PUB_URL.'/assets/css/templates/phone-land.png' );
381
  $inner_template_container_close_tags = '</div></div>';
382
-
383
  } elseif( 'flat-phone-land' == $template ){
384
  $inner_template_container_open_tags = sprintf( '<div class="ms-phone-cont"><img src="%s" class="ms-phone-bg" /><div class="ms-lt-slider-cont">', MSWP_AVERTA_PUB_URL.'/assets/css/templates/flat-phone-land.png' );
385
  $inner_template_container_close_tags = '</div></div>';
@@ -397,7 +397,7 @@ function msp_masterslider_wrapper_shortcode( $atts, $content = null ) {
397
 
398
  <!-- MasterSlider -->
399
  <div id="<?php echo $puid; ?>" class="master-slider-parent msl <?php echo trim( $wrapper_classes ); ?>" <?php echo $inline_style; ?> >
400
-
401
  <?php echo $inner_template_container_open_tags; ?>
402
 
403
  <!-- MasterSlider Main -->
@@ -411,8 +411,8 @@ function msp_masterslider_wrapper_shortcode( $atts, $content = null ) {
411
  <?php echo $inner_template_container_close_tags; ?>
412
 
413
  </div>
414
- <!-- END MasterSlider -->
415
-
416
  <script>
417
  (function ( $ ) {
418
  "use strict";
@@ -421,18 +421,18 @@ function msp_masterslider_wrapper_shortcode( $atts, $content = null ) {
421
  var <?php echo $instance_name; ?> = new MasterSlider();
422
 
423
  // slider controls
424
- <?php if($arrows == 'true' || 'image-gallery' == $template ){
425
  printf( "\t\t\t\t$instance_name.control('%s' ,{ autohide:%s, overVideo:%s %s });",
426
- 'arrows',
427
- msp_is_true($arrows_autohide ),
428
  msp_is_true($arrows_overvideo ),
429
  $arrows_hideunder
430
  );
431
- } ?>
432
- <?php if($bullets == 'true'){
433
  printf( "\t\t\t\t$instance_name.control('%s' ,{ autohide:%s, overVideo:%s, dir:'%s', align:'%s' %s %s });\n",
434
- 'bullets' ,
435
- msp_is_true($bullets_autohide ),
436
  msp_is_true($bullets_overvideo ),
437
  $bullets_direction,
438
  $bullets_align,
@@ -441,7 +441,7 @@ function msp_masterslider_wrapper_shortcode( $atts, $content = null ) {
441
  );
442
  } ?>
443
 
444
- <?php if($thumbs == 'true'){
445
  $thumbs_custom_class = 'true' == $thumbs_in_tab ? 'ms-has-thumb' : '';
446
  printf( "\t\t\t\t$instance_name.control('%s' ,{ autohide:%s, overVideo:%s, dir:'%s', speed:%d, inset:%s, arrows:%s, hover:%s, customClass:'%s', align:'%s',type:'%s', margin:%d, width:%d, height:%d, space:%d, fillMode:'%s' %s });\n",
447
  'thumblist',
@@ -465,10 +465,10 @@ function msp_masterslider_wrapper_shortcode( $atts, $content = null ) {
465
 
466
 
467
  } ?>
468
- <?php if($scroll == 'true'){
469
  printf( "\t\t\t\t$instance_name.control('%s' ,{ autohide:%s, overVideo:%s, dir:'%s', inset:%s, align:'%s', color:'%s' %s %s %s });\n",
470
- 'scrollbar',
471
- msp_is_true($scroll_autohide ),
472
  msp_is_true($scroll_overvideo ),
473
  $scroll_direction,
474
  msp_is_true($scroll_inset ),
@@ -479,10 +479,10 @@ function msp_masterslider_wrapper_shortcode( $atts, $content = null ) {
479
  $scroll_width
480
  );
481
  } ?>
482
- <?php if($circletimer == 'true'){
483
  printf( "\t\t\t\t$instance_name.control('%s',{ autohide:%s, overVideo:%s, color:'%s', radius:%d, stroke:%d %s %s });\n",
484
- "circletimer",
485
- msp_is_true($circletimer_autohide ),
486
  msp_is_true($circletimer_overvideo ),
487
  $circletimer_color,
488
  $circletimer_radius,
@@ -491,10 +491,10 @@ function msp_masterslider_wrapper_shortcode( $atts, $content = null ) {
491
  $circletimer_hideunder
492
  );
493
  } ?>
494
- <?php if($timebar == 'true'){
495
  printf( "\t\t\t\t$instance_name.control('%s' ,{ autohide:%s, overVideo:%s, align:'%s', color:'%s' %s %s });\n",
496
- "timebar",
497
- msp_is_true($timebar_autohide ),
498
  msp_is_true($timebar_overvideo ),
499
  $timebar_align,
500
  $timebar_color,
@@ -502,10 +502,10 @@ function msp_masterslider_wrapper_shortcode( $atts, $content = null ) {
502
  $timebar_width
503
  );
504
  } ?>
505
- <?php if($slideinfo == 'true'){
506
  printf( "\t\t\t\t$instance_name.control('%s' ,{ autohide:%s, overVideo:%s, dir:'%s', align:'%s',inset:%s %s %s %s });\n",
507
- "slideinfo",
508
- msp_is_true($slideinfo_autohide ),
509
  msp_is_true($slideinfo_overvideo ),
510
  $slideinfo_direction,
511
  $slideinfo_align,
@@ -525,7 +525,7 @@ function msp_masterslider_wrapper_shortcode( $atts, $content = null ) {
525
  grabCursor : <?php msp_is_true_e($grab_cursor); ?>,
526
  swipe : <?php msp_is_true_e($swipe); ?>,
527
  mouse : <?php msp_is_true_e($mouse); ?>,
528
- layout : "<?php echo $layout; ?>",
529
  wheel : <?php msp_is_true_e($wheel); ?>,
530
  autoplay : <?php msp_is_true_e($autoplay); ?>,
531
  instantStartLayers:<?php msp_is_true_e( $instant_show_layers ); ?>,
@@ -537,14 +537,14 @@ function msp_masterslider_wrapper_shortcode( $atts, $content = null ) {
537
  smoothHeight : <?php msp_is_true_e($smooth_height); ?>,
538
  endPause : <?php msp_is_true_e($end_pause); ?>,
539
  overPause : <?php msp_is_true_e($over_pause); ?>,
540
- fillMode : "<?php echo $fill_mode; ?>",
541
  centerControls : <?php msp_is_true_e($center_controls); ?>,
542
  startOnAppear : <?php msp_is_true_e($start_on_appear); ?>,
543
- layersMode : "<?php echo $layers_mode; ?>",
544
- hideLayers : <?php msp_is_true_e($hide_layers); ?>,
545
  fullscreenMargin: <?php echo (int) $fullscreen_margin; ?>,
546
- speed : <?php echo (int)$speed; ?>,
547
- dir : "<?php echo $direction; ?>",
548
  <?php if( 'staff-3' == $template ) { echo "viewOption : { centerSpace:1.6 },\n"; } ?>
549
  <?php if( 'off' != $parallax_mode ) { echo "\t\t\t\t\t\tparallaxMode : '$parallax_mode',\n"; } ?>
550
  view : "<?php echo $view; ?>"
@@ -554,7 +554,7 @@ function msp_masterslider_wrapper_shortcode( $atts, $content = null ) {
554
 
555
  if( ! empty( $on_change_start ) )
556
  printf( "$instance_name.api.addEventListener(MSSliderEvent.CHANGE_START, %s );\n" , msp_maybe_base64_decode( $on_change_start ) ) ;
557
-
558
  if( ! empty( $on_change_end ) )
559
  printf( "\t\t\t\t$instance_name.api.addEventListener(MSSliderEvent.CHANGE_END, %s );\n" , msp_maybe_base64_decode( $on_change_end ) ) ;
560
 
@@ -589,23 +589,23 @@ function msp_masterslider_wrapper_shortcode( $atts, $content = null ) {
589
  echo "\t\t\t\t});\n";
590
  }
591
 
592
- if ( 'image-gallery' == $template ) {
593
  printf( "new MSGallery( '%s' , %s).setup();", $puid, $instance_name );
594
  }
595
 
596
- if ( 'flickr' == $slider_type ) {
597
  printf( "new MSFlickrV2( %s, { key:'%s', id:'%s', count:%d, thumbSize:'%s',imgSize:'%s', type:'%s' });", $instance_name, $flickr_key, $flickr_id, $flickr_count, $flickr_thumb_size, $flickr_size, $flickr_type );
598
  }
599
 
600
- if ( 'facebook' == $slider_type ) {
601
  $facebook_username_prop = empty( $facebook_username ) ? '' : sprintf( "username:'%s', " , $facebook_username );
602
  $facebook_albumid_prop = empty( $facebook_albumid ) ? '' : sprintf( "albumId :'%s', " , $facebook_albumid );
603
 
604
- printf( "new MSFacebookGallery( %s, { %s %s count:%d, thumbSize:'%s',imgSize:'%s', type:'%s' });",
605
  $instance_name, $facebook_username_prop, $facebook_albumid_prop, $facebook_count, $facebook_thumb_size, $facebook_size, $facebook_type );
606
  }
607
 
608
- if ( ! empty( $gfonts ) ) {
609
  $link_tag = sprintf( "<link rel='stylesheet' id='ms-fonts' href='http://fonts.googleapis.com/css?family=%s' type='text/css' media='all' />", $gfonts );
610
  echo "\n\t\t\t\t" . sprintf( '$("head").append( "%s" );', $link_tag ) . "\n";
611
  }
@@ -614,10 +614,10 @@ function msp_masterslider_wrapper_shortcode( $atts, $content = null ) {
614
  echo "\n\t\t\t\twindow.masterslider_instances.push( $instance_name );\n";
615
  ?>
616
  });
617
-
618
  })(jQuery);
619
- </script>
620
-
621
  <?php
622
  return apply_filters( "masterslider_ms_slider_shortcode", ob_get_clean(), $mixed );
623
  }
@@ -630,8 +630,8 @@ function msp_masterslider_wrapper_shortcode( $atts, $content = null ) {
630
  add_shortcode( 'ms_slide', 'msp_masterslider_slide_shortcode' );
631
 
632
  function msp_masterslider_slide_shortcode( $atts, $content = null ) {
633
- extract( shortcode_atts(
634
- array(
635
  'src' => '',
636
  'src_full' => '',
637
 
@@ -640,7 +640,7 @@ function msp_masterslider_slide_shortcode( $atts, $content = null ) {
640
  'style' => '',
641
 
642
  'src_blank' => MSWP_BLANK_IMG, // url to black image for preloading job
643
-
644
  'title' => '', // image title
645
  'alt' => '', // image alternative text
646
 
@@ -649,7 +649,7 @@ function msp_masterslider_slide_shortcode( $atts, $content = null ) {
649
  'link_class' => '',
650
  'link_id' => '',
651
  'link_rel' => '',
652
-
653
  'target' => '_blank',
654
  'video' => '', // youtube or vimeo video link
655
  'auto_play_video' => '', // autoplay for youtube or vimeo videos
@@ -660,7 +660,7 @@ function msp_masterslider_slide_shortcode( $atts, $content = null ) {
660
 
661
  'info' => '',
662
 
663
- 'autopause' => 'false',
664
  'mute' => 'true',
665
  'loop' => 'true',
666
  'vbgalign' => 'fill',
@@ -671,13 +671,13 @@ function msp_masterslider_slide_shortcode( $atts, $content = null ) {
671
  'thumb' => '',
672
  'tab' => '',
673
  'tab_thumb' => '',
674
- 'delay' => '', // data-delay
675
  'bgalign' => '', // data-fill-mode
676
  'bgcolor' => '',
677
  'pattern' => '',
678
  'tintcolor' => ''
679
  )
680
- , $atts, 'masterslider_slide' )
681
  );
682
 
683
  $css_class = empty( $css_class ) ? '' : ' '.$css_class;
@@ -696,7 +696,7 @@ function msp_masterslider_slide_shortcode( $atts, $content = null ) {
696
 
697
  // add slide starter tag
698
  $slide_start_tag = sprintf( '<div %s class="ms-slide%s" %s %s %s >', $css_id, $css_class, $data_delay, $data_align, $style_attr )."\n";
699
-
700
  // making start tag filterable for extend purposes
701
  $slide_start_tag = apply_filters( 'msp_masterslider_slide_start_tag', "\t\t\t\t".$slide_start_tag, $atts );
702
 
@@ -706,13 +706,13 @@ function msp_masterslider_slide_shortcode( $atts, $content = null ) {
706
 
707
  // if blank image is not set use original img instead
708
  $src_blank = empty( $src_blank ) ? $src : $src_blank;
709
-
710
  // decode escaped square brackets
711
  $title = str_replace( array( "%5B", "%5D" ), array('[', ']'), $title );
712
  $alt = str_replace( array( "%5B", "%5D" ), array('[', ']'), $alt );
713
  $link_title = str_replace( array( "%5B", "%5D" ), array('[', ']'), $link_title );
714
  $link_rel = str_replace( array( "%5B", "%5D" ), array('[', ']'), $link_rel );
715
-
716
  // main image markup
717
  if( ! empty( $src ) ) {
718
  $crop_width = empty( $crop_width ) || ! is_numeric( $crop_width ) ? NULL : (int)$crop_width;
@@ -723,24 +723,24 @@ function msp_masterslider_slide_shortcode( $atts, $content = null ) {
723
 
724
  if( $crop_width || $crop_height )
725
  $src = msp_get_the_resized_image_src( $src, $crop_width, $crop_height, true );
726
-
727
  $slide_content .= "\t\t\t\t\t" . sprintf('<img src="%s" alt="%s" title="%s" data-src="%s" />', $src_blank, $alt, $title, $src )."\n";
728
  }
729
 
730
  $self_video_markup = '';
731
  // self host video background
732
- if( ! empty( $mp4 ) )
733
  $self_video_markup .= "\t\t".sprintf('<source src="%s" type="video/mp4"/>', $mp4 )."\n";
734
 
735
- if( ! empty( $webm ) )
736
  $self_video_markup .= "\t\t".sprintf('<source src="%s" type="video/webm"/>', $webm )."\n";
737
 
738
- if( ! empty( $ogg ) )
739
  $self_video_markup .= "\t\t".sprintf('<source src="%s" type="video/ogg"/>', $ogg )."\n";
740
 
741
 
742
  if( ! empty( $self_video_markup ) ) {
743
- $slide_content .= "\t".sprintf( '<video data-autopause="%s" data-mute="%s" data-loop="%s" data-fill-mode="%s" >%s%s%s</video>',
744
  msp_is_true( $autopause ), $mute, $loop, $vbgalign, "\n", $self_video_markup, "\t" )."\n";
745
  }
746
 
@@ -754,12 +754,12 @@ function msp_masterslider_slide_shortcode( $atts, $content = null ) {
754
  $att_link_title = $link_title ? 'title="'. $link_title .'"' : '';
755
  $att_link_class = $link_class ? 'class="'. $link_class .'"' : '';
756
  $att_link_id = $link_id ? 'id="'. $link_id .'"' : '';
757
-
758
- $slide_content .= "\t".sprintf('<a href="%s" %s %s %s %s %s>%s</a>', $link, $att_link_target,
759
  $att_link_rel, $att_link_title, $att_link_class,
760
  $att_link_id, $title )."\n";
761
  }
762
-
763
  // add layers that passed as content
764
  if( ! empty( $content ) )
765
  $slide_content .= $content."\n";
@@ -796,7 +796,7 @@ function msp_masterslider_slide_shortcode( $atts, $content = null ) {
796
  $slide_content = do_shortcode( $slide_content );
797
 
798
  $output = empty( $slide_content ) ? '' : $slide_start_tag.$slide_content.$slide_end_tag;
799
-
800
  return apply_filters( 'masterslider_slide_content', $output, $slide_start_tag, $slide_content, $slide_end_tag );
801
  }
802
 
@@ -808,10 +808,10 @@ function msp_masterslider_slide_shortcode( $atts, $content = null ) {
808
  add_shortcode( 'ms_layer', 'msp_masterslider_layer_shortcode' );
809
 
810
  function msp_masterslider_layer_shortcode( $atts, $content = null ) {
811
-
812
  // merge input and default attrs
813
- $merged = shortcode_atts(
814
- array(
815
  'src' => '', // image layer src or video cover image
816
  'src_blank' => MSWP_BLANK_IMG, // url to black image for preloading job
817
 
@@ -864,8 +864,8 @@ function msp_masterslider_layer_shortcode( $atts, $content = null ) {
864
  'height' => ''
865
  )
866
  , $atts, 'masterslider_layer' );
867
-
868
- extract( $merged );
869
 
870
 
871
  $wrapper_class = trim( 'ms-layer '. $css_class.' '. $style_id );
@@ -887,8 +887,8 @@ function msp_masterslider_layer_shortcode( $atts, $content = null ) {
887
  }
888
 
889
 
890
- $show_duration = ( ! is_numeric( $show_duration ) || empty( $show_duration ) ) ? 1000 : (int)$show_duration;
891
- $show_delay = ( ! is_numeric( $show_delay ) || empty( $show_delay ) ) ? 0 : (int)$show_delay;
892
 
893
  $hide_duration = ( ! is_numeric( $hide_duration ) || empty( $hide_duration ) ) ? 1000 : (int)$hide_duration;
894
  $hide_delay = ( ! is_numeric( $hide_delay ) || empty( $hide_delay ) ) ? 1000 : (int)$hide_delay;
@@ -952,7 +952,7 @@ function msp_masterslider_layer_shortcode( $atts, $content = null ) {
952
  $rel_attr = empty( $rel ) ? '' : 'rel="'.$rel.'"';
953
 
954
  $rel_attr = apply_filters( 'masterslider_layer_shortcode_attr_rel', $rel_attr, $rel );
955
-
956
  $link = apply_filters( 'masterslider_layer_shortcode_attr_link', $link );
957
 
958
  // create data-link attr if it's not default value
@@ -967,7 +967,7 @@ function msp_masterslider_layer_shortcode( $atts, $content = null ) {
967
  } else {
968
  $data_action = '';
969
  }
970
-
971
 
972
  // convert relative image link to absolute
973
  $src = ! empty( $src ) ? msp_get_the_absolute_media_url( $src ) : $src;
@@ -978,7 +978,7 @@ function msp_masterslider_layer_shortcode( $atts, $content = null ) {
978
  $data_tp_width = 'hotspot' == $type ? 'data-width="'.$tooltip_width.'"' : '';
979
  $data_target = 'hotspot' == $type ? 'data-target="'.$target.'"' : '';
980
 
981
- $effect_attrs = sprintf( '%s %s %s %s %s %s %s %s %s %s',
982
  $data_show_effect, $data_show_duration, $data_show_delay, $data_show_ease, $data_hide_effect,
983
  $data_hide_duration, $data_hide_time, $data_hide_ease, $data_hide_delay, $data_fixed );
984
 
@@ -1002,7 +1002,7 @@ function msp_masterslider_layer_shortcode( $atts, $content = null ) {
1002
 
1003
  // or single image
1004
  } else {
1005
- $layer .= sprintf( '<img %s class="%s" src="%s" data-src="%s" alt="%s" style="%s" %s %s %s %s %s />',
1006
  $id_attr, $wrapper_class, $src_blank, $src, $alt, $style_size, $effect_attrs, $common_attrs, $rel_attr, $data_action, $position_attrs )."\n";
1007
  }
1008
 
@@ -1014,7 +1014,7 @@ function msp_masterslider_layer_shortcode( $atts, $content = null ) {
1014
 
1015
  // if layer type was text, video or hotspot
1016
  } else {
1017
-
1018
  $layer_content = '';
1019
  // add video iframe as layer content if type was video
1020
  if( 'video' == $type ) {
@@ -1027,19 +1027,19 @@ function msp_masterslider_layer_shortcode( $atts, $content = null ) {
1027
  $vid_height = empty( $height ) ? '270' : rtrim( $height, 'px' ) ;
1028
  $layer_content .= sprintf( '<iframe src="%s" width="%s" height="%s" > </iframe>', $video, $vid_width, $vid_height );
1029
  }
1030
-
1031
  // add shortcode content if layer type was text or hotspot
1032
  } else {
1033
  $layer_content .= ! empty( $content ) ? do_shortcode( wp_unslash( $content ) ) : '';
1034
  }
1035
 
1036
- $layer = sprintf( '<div %s class="%s" style="%s" %s %s %s %s >%s</div>',
1037
  $id_attr, $wrapper_class, $style_size, $data_link, $effect_attrs, $common_attrs, $position_attrs, $layer_content )."\n";
1038
  }
1039
 
1040
  // end layer markup generation //////////////////////////////////////////
1041
 
1042
-
1043
  return apply_filters( "masterslider_layer_shortcode", "\t\t\t\t\t".$layer, $merged, $atts, $content );
1044
  }
1045
 
@@ -1052,20 +1052,24 @@ add_shortcode( 'ms_slide_info', 'msp_masterslider_slide_info_shortcode' );
1052
 
1053
  function msp_masterslider_slide_info_shortcode( $atts, $content = null ) {
1054
 
1055
- $args = shortcode_atts(
1056
- array(
1057
  'css_class' => '',
1058
  'tag_name' => 'div'
1059
  )
1060
  , $atts, 'masterslider_slide_info' );
1061
 
1062
- extract( $args );
1063
 
1064
- $css_class = empty( $css_class ) ? '' : esc_attr(' '.$css_class);
 
 
 
 
1065
 
1066
  // create slide info markup
1067
  $output = sprintf( '<%1$s class="ms-info%2$s">%3$s</%1$s>', $tag_name, $css_class, do_shortcode( wp_unslash( $content ) ) )."\n";
1068
-
1069
  return apply_filters( 'masterslider_slide_info_shortcode', "\t\t\t\t\t".$output, $args );
1070
  }
1071
 
@@ -1075,21 +1079,21 @@ add_shortcode( 'ms_slide_flickr', 'msp_masterslider_slide_flickr_shortcode' );
1075
 
1076
  function msp_masterslider_slide_flickr_shortcode( $atts, $content = null ) {
1077
 
1078
- $args = shortcode_atts(
1079
- array(
1080
  'src_blank' => MSWP_BLANK_IMG, // url to black image for preloading job
1081
  'thumb' => 'yes'
1082
  )
1083
  , $atts, 'masterslider_slide_flickr' );
1084
 
1085
- extract( $args );
1086
 
1087
  $output = sprintf( '<img src="%s" data-src="{{image}}" alt="{{title}}"/>', $src_blank ) . "\n";
1088
 
1089
  if( 'yes' == $thumb )
1090
  $output .= "\t\t\t\t" . '<img class="ms-thumb" src="{{thumb}}" alt="{{title}}"/>';
1091
 
1092
-
1093
  return apply_filters( 'masterslider_slide_flickr_shortcode', "\t\t\t\t".$output, $args );
1094
  }
1095
 
9
 
10
 
11
  function msp_masterslider_shortcode( $atts, $content = null ) {
12
+ extract( shortcode_atts(
13
  array( 'id' => ''),
14
+ $atts,
15
  'masterslider'
16
+ )
17
  );
18
 
19
  return get_masterslider( $id );
26
  add_shortcode( 'masterslider_pb', 'msp_masterslider_pb_shortcode' );
27
 
28
  function msp_masterslider_pb_shortcode( $atts, $content = null ) {
29
+ $mixed = shortcode_atts(
30
+ array(
31
+ 'id' => '',
32
  'title' => '',
33
  'class' => ''
34
  ),
35
+ $atts,
36
  'masterslider_pb'
37
  );
38
 
56
 
57
  function msp_masterslider_wrapper_shortcode( $atts, $content = null ) {
58
 
59
+ $mixed = shortcode_atts(
60
 
61
  array(
62
  'id' => '1', // slider id
63
+ 'uid' => '', // an unique and temporary id
64
  'class' => '', // a class that adds to slider wrapper
65
+ 'margin' => 0,
66
 
67
  'inline_style' => '',
68
  'bg_color' => '',
86
  'crop' => 'false', // Automatically crop slide images?
87
 
88
  'autoplay' => 'false', // Enables the autoplay slideshow
89
+ 'loop' => 'false', //
90
  'shuffle' => 'false', // Enables the shuffle slide order
91
  'preload' => 0,
92
 
104
  'height_limit' => 'false', // It force the slide to use max height value as its base specified height value.
105
  'auto_height' => 'false',
106
  'smooth_height' => 'true',
107
+
108
  'end_pause' => 'false',
109
  'over_pause' => 'false',
110
 
137
  'flickr_size' => 'c',
138
  'flickr_thumb_size' => 'q',
139
 
140
+
141
  'facebook_username' => '',
142
  'facebook_albumid' => '',
143
  'facebook_count' => 10,
171
  'bullets_align' => 'bottom',
172
  'bullets_margin' => '',
173
  'bullets_hideunder'=> '',
174
+
175
  'thumbs' => 'false', // display thumbnails?
176
  'thumbs_autohide' => 'true', // auto hide thumbs?
177
  'thumbs_overvideo' => 'true', // visible over slide video while playing?
217
  'timebar_color' => '#FFFFFF',
218
  'timebar_hideunder'=> '',
219
  'timebar_width' => '',
220
+
221
 
222
  'slideinfo' => 'false', // display timebar?
223
  'slideinfo_autohide' => 'true', // auto hide timebar?
249
  wp_enqueue_style ( 'masterslider-main');
250
  wp_enqueue_script( 'masterslider-core');
251
  wp_enqueue_script( 'prettyPhoto' );
252
+
253
  // create an unique id for slider
254
  $uid = empty($uid ) ? uniqid("MS") : $uid;
255
  // unique id for parant wrapper
256
  $puid = 'P_' . $uid;
257
 
258
+
259
  // class name for slider template
260
  $template_class = empty( $template_class ) ? '' : esc_attr( $template_class );
261
+
262
  $preload = is_numeric($preload) ? ( (int)$preload + 1 ) : "'$preload'";
263
 
264
 
267
  // validate wrapper_width_unit
268
  $wrapper_width_unit = in_array( $wrapper_width_unit, array( 'px', '%', 'em' ) ) ? $wrapper_width_unit : 'px';
269
  $inline_style .= sprintf( 'max-width:%s%s;', $wrapper_width, $wrapper_width_unit );
270
+
271
  // if wrapper_width is not set use slider width as default
272
  } elseif ( 'boxed' == $layout ) {
273
  $inline_style .= sprintf( 'max-width:%spx;', $width );
274
+
275
  // if wrapper_width is not set the value to 100%
276
  } elseif ( 'partialview' == $layout ) {
277
  $inline_style .= 'max-width:100%;';
326
  } else {
327
  $slideinfo_size = sprintf( ', size:%s', $slideinfo_width );
328
  }
329
+
330
  $instance_suffix = substr($uid, -4);
331
  // slider javascript instance name
332
  $instance_name = "masterslider_".$instance_suffix;
339
  if( 'laptop' == $template ){
340
  $inner_template_container_open_tags = sprintf( '<div class="ms-laptop-cont"><img src="%s" class="ms-laptop-bg" /><div class="ms-lt-slider-cont">', MSWP_AVERTA_PUB_URL.'/assets/css/templates/laptop.png' );
341
  $inner_template_container_close_tags = '</div></div>';
342
+
343
  } elseif( 'display' == $template ){
344
  $inner_template_container_open_tags = sprintf( '<div class="ms-display-cont"><img src="%s" class="ms-display-bg" /><div class="ms-dis-slider-cont">', MSWP_AVERTA_PUB_URL.'/assets/css/templates/display.png' );
345
  $inner_template_container_close_tags = '</div></div>';
346
+
347
  } elseif( 'flat-laptop' == $template ){
348
  $inner_template_container_open_tags = sprintf( '<div class="ms-laptop-cont"><img src="%s" class="ms-laptop-bg" /><div class="ms-lt-slider-cont">', MSWP_AVERTA_PUB_URL.'/assets/css/templates/flat-laptop.png' );
349
  $inner_template_container_close_tags = '</div></div>';
351
  } elseif( 'flat-display' == $template ){
352
  $inner_template_container_open_tags = sprintf( '<div class="ms-display-cont"><img src="%s" class="ms-display-bg" /><div class="ms-dis-slider-cont">', MSWP_AVERTA_PUB_URL.'/assets/css/templates/flat-display.png' );
353
  $inner_template_container_close_tags = '</div></div>';
354
+
355
  } elseif( 'tablet' == $template ){
356
  $inner_template_container_open_tags = sprintf( '<div class="ms-tablet-cont"><img src="%s" class="ms-tablet-bg" /><div class="ms-lt-slider-cont">', MSWP_AVERTA_PUB_URL.'/assets/css/templates/tablet.png' );
357
  $inner_template_container_close_tags = '</div></div>';
358
+
359
  } elseif( 'flat-tablet' == $template ){
360
  $inner_template_container_open_tags = sprintf( '<div class="ms-tablet-cont"><img src="%s" class="ms-tablet-bg" /><div class="ms-lt-slider-cont">', MSWP_AVERTA_PUB_URL.'/assets/css/templates/flat-tablet.png' );
361
  $inner_template_container_close_tags = '</div></div>';
362
+
363
  } elseif( 'tablet-land' == $template ){
364
  $inner_template_container_open_tags = sprintf( '<div class="ms-tablet-cont"><img src="%s" class="ms-tablet-bg" /><div class="ms-lt-slider-cont">', MSWP_AVERTA_PUB_URL.'/assets/css/templates/tablet-land.png' );
365
  $inner_template_container_close_tags = '</div></div>';
366
+
367
  } elseif( 'flat-tablet-land' == $template ){
368
  $inner_template_container_open_tags = sprintf( '<div class="ms-tablet-cont"><img src="%s" class="ms-tablet-bg" /><div class="ms-lt-slider-cont">', MSWP_AVERTA_PUB_URL.'/assets/css/templates/flat-tablet-land.png' );
369
  $inner_template_container_close_tags = '</div></div>';
370
+
371
  } elseif( 'phone' == $template ){
372
  $inner_template_container_open_tags = sprintf( '<div class="ms-phone-cont"><img src="%s" class="ms-phone-bg" /><div class="ms-lt-slider-cont">', MSWP_AVERTA_PUB_URL.'/assets/css/templates/phone.png' );
373
  $inner_template_container_close_tags = '</div></div>';
374
+
375
  } elseif( 'flat-phone' == $template ){
376
  $inner_template_container_open_tags = sprintf( '<div class="ms-phone-cont"><img src="%s" class="ms-phone-bg" /><div class="ms-lt-slider-cont">', MSWP_AVERTA_PUB_URL.'/assets/css/templates/flat-phone.png' );
377
  $inner_template_container_close_tags = '</div></div>';
378
+
379
  } elseif( 'phone-land' == $template ){
380
  $inner_template_container_open_tags = sprintf( '<div class="ms-phone-cont"><img src="%s" class="ms-phone-bg" /><div class="ms-lt-slider-cont">', MSWP_AVERTA_PUB_URL.'/assets/css/templates/phone-land.png' );
381
  $inner_template_container_close_tags = '</div></div>';
382
+
383
  } elseif( 'flat-phone-land' == $template ){
384
  $inner_template_container_open_tags = sprintf( '<div class="ms-phone-cont"><img src="%s" class="ms-phone-bg" /><div class="ms-lt-slider-cont">', MSWP_AVERTA_PUB_URL.'/assets/css/templates/flat-phone-land.png' );
385
  $inner_template_container_close_tags = '</div></div>';
397
 
398
  <!-- MasterSlider -->
399
  <div id="<?php echo $puid; ?>" class="master-slider-parent msl <?php echo trim( $wrapper_classes ); ?>" <?php echo $inline_style; ?> >
400
+
401
  <?php echo $inner_template_container_open_tags; ?>
402
 
403
  <!-- MasterSlider Main -->
411
  <?php echo $inner_template_container_close_tags; ?>
412
 
413
  </div>
414
+ <!-- END MasterSlider -->
415
+
416
  <script>
417
  (function ( $ ) {
418
  "use strict";
421
  var <?php echo $instance_name; ?> = new MasterSlider();
422
 
423
  // slider controls
424
+ <?php if($arrows == 'true' || 'image-gallery' == $template ){
425
  printf( "\t\t\t\t$instance_name.control('%s' ,{ autohide:%s, overVideo:%s %s });",
426
+ 'arrows',
427
+ msp_is_true($arrows_autohide ),
428
  msp_is_true($arrows_overvideo ),
429
  $arrows_hideunder
430
  );
431
+ } ?>
432
+ <?php if($bullets == 'true'){
433
  printf( "\t\t\t\t$instance_name.control('%s' ,{ autohide:%s, overVideo:%s, dir:'%s', align:'%s' %s %s });\n",
434
+ 'bullets' ,
435
+ msp_is_true($bullets_autohide ),
436
  msp_is_true($bullets_overvideo ),
437
  $bullets_direction,
438
  $bullets_align,
441
  );
442
  } ?>
443
 
444
+ <?php if($thumbs == 'true'){
445
  $thumbs_custom_class = 'true' == $thumbs_in_tab ? 'ms-has-thumb' : '';
446
  printf( "\t\t\t\t$instance_name.control('%s' ,{ autohide:%s, overVideo:%s, dir:'%s', speed:%d, inset:%s, arrows:%s, hover:%s, customClass:'%s', align:'%s',type:'%s', margin:%d, width:%d, height:%d, space:%d, fillMode:'%s' %s });\n",
447
  'thumblist',
465
 
466
 
467
  } ?>
468
+ <?php if($scroll == 'true'){
469
  printf( "\t\t\t\t$instance_name.control('%s' ,{ autohide:%s, overVideo:%s, dir:'%s', inset:%s, align:'%s', color:'%s' %s %s %s });\n",
470
+ 'scrollbar',
471
+ msp_is_true($scroll_autohide ),
472
  msp_is_true($scroll_overvideo ),
473
  $scroll_direction,
474
  msp_is_true($scroll_inset ),
479
  $scroll_width
480
  );
481
  } ?>
482
+ <?php if($circletimer == 'true'){
483
  printf( "\t\t\t\t$instance_name.control('%s',{ autohide:%s, overVideo:%s, color:'%s', radius:%d, stroke:%d %s %s });\n",
484
+ "circletimer",
485
+ msp_is_true($circletimer_autohide ),
486
  msp_is_true($circletimer_overvideo ),
487
  $circletimer_color,
488
  $circletimer_radius,
491
  $circletimer_hideunder
492
  );
493
  } ?>
494
+ <?php if($timebar == 'true'){
495
  printf( "\t\t\t\t$instance_name.control('%s' ,{ autohide:%s, overVideo:%s, align:'%s', color:'%s' %s %s });\n",
496
+ "timebar",
497
+ msp_is_true($timebar_autohide ),
498
  msp_is_true($timebar_overvideo ),
499
  $timebar_align,
500
  $timebar_color,
502
  $timebar_width
503
  );
504
  } ?>
505
+ <?php if($slideinfo == 'true'){
506
  printf( "\t\t\t\t$instance_name.control('%s' ,{ autohide:%s, overVideo:%s, dir:'%s', align:'%s',inset:%s %s %s %s });\n",
507
+ "slideinfo",
508
+ msp_is_true($slideinfo_autohide ),
509
  msp_is_true($slideinfo_overvideo ),
510
  $slideinfo_direction,
511
  $slideinfo_align,
525
  grabCursor : <?php msp_is_true_e($grab_cursor); ?>,
526
  swipe : <?php msp_is_true_e($swipe); ?>,
527
  mouse : <?php msp_is_true_e($mouse); ?>,
528
+ layout : "<?php echo $layout; ?>",
529
  wheel : <?php msp_is_true_e($wheel); ?>,
530
  autoplay : <?php msp_is_true_e($autoplay); ?>,
531
  instantStartLayers:<?php msp_is_true_e( $instant_show_layers ); ?>,
537
  smoothHeight : <?php msp_is_true_e($smooth_height); ?>,
538
  endPause : <?php msp_is_true_e($end_pause); ?>,
539
  overPause : <?php msp_is_true_e($over_pause); ?>,
540
+ fillMode : "<?php echo $fill_mode; ?>",
541
  centerControls : <?php msp_is_true_e($center_controls); ?>,
542
  startOnAppear : <?php msp_is_true_e($start_on_appear); ?>,
543
+ layersMode : "<?php echo $layers_mode; ?>",
544
+ hideLayers : <?php msp_is_true_e($hide_layers); ?>,
545
  fullscreenMargin: <?php echo (int) $fullscreen_margin; ?>,
546
+ speed : <?php echo (int)$speed; ?>,
547
+ dir : "<?php echo $direction; ?>",
548
  <?php if( 'staff-3' == $template ) { echo "viewOption : { centerSpace:1.6 },\n"; } ?>
549
  <?php if( 'off' != $parallax_mode ) { echo "\t\t\t\t\t\tparallaxMode : '$parallax_mode',\n"; } ?>
550
  view : "<?php echo $view; ?>"
554
 
555
  if( ! empty( $on_change_start ) )
556
  printf( "$instance_name.api.addEventListener(MSSliderEvent.CHANGE_START, %s );\n" , msp_maybe_base64_decode( $on_change_start ) ) ;
557
+
558
  if( ! empty( $on_change_end ) )
559
  printf( "\t\t\t\t$instance_name.api.addEventListener(MSSliderEvent.CHANGE_END, %s );\n" , msp_maybe_base64_decode( $on_change_end ) ) ;
560
 
589
  echo "\t\t\t\t});\n";
590
  }
591
 
592
+ if ( 'image-gallery' == $template ) {
593
  printf( "new MSGallery( '%s' , %s).setup();", $puid, $instance_name );
594
  }
595
 
596
+ if ( 'flickr' == $slider_type ) {
597
  printf( "new MSFlickrV2( %s, { key:'%s', id:'%s', count:%d, thumbSize:'%s',imgSize:'%s', type:'%s' });", $instance_name, $flickr_key, $flickr_id, $flickr_count, $flickr_thumb_size, $flickr_size, $flickr_type );
598
  }
599
 
600
+ if ( 'facebook' == $slider_type ) {
601
  $facebook_username_prop = empty( $facebook_username ) ? '' : sprintf( "username:'%s', " , $facebook_username );
602
  $facebook_albumid_prop = empty( $facebook_albumid ) ? '' : sprintf( "albumId :'%s', " , $facebook_albumid );
603
 
604
+ printf( "new MSFacebookGallery( %s, { %s %s count:%d, thumbSize:'%s',imgSize:'%s', type:'%s' });",
605
  $instance_name, $facebook_username_prop, $facebook_albumid_prop, $facebook_count, $facebook_thumb_size, $facebook_size, $facebook_type );
606
  }
607
 
608
+ if ( ! empty( $gfonts ) ) {
609
  $link_tag = sprintf( "<link rel='stylesheet' id='ms-fonts' href='http://fonts.googleapis.com/css?family=%s' type='text/css' media='all' />", $gfonts );
610
  echo "\n\t\t\t\t" . sprintf( '$("head").append( "%s" );', $link_tag ) . "\n";
611
  }
614
  echo "\n\t\t\t\twindow.masterslider_instances.push( $instance_name );\n";
615
  ?>
616
  });
617
+
618
  })(jQuery);
619
+ </script>
620
+
621
  <?php
622
  return apply_filters( "masterslider_ms_slider_shortcode", ob_get_clean(), $mixed );
623
  }
630
  add_shortcode( 'ms_slide', 'msp_masterslider_slide_shortcode' );
631
 
632
  function msp_masterslider_slide_shortcode( $atts, $content = null ) {
633
+ extract( shortcode_atts(
634
+ array(
635
  'src' => '',
636
  'src_full' => '',
637
 
640
  'style' => '',
641
 
642
  'src_blank' => MSWP_BLANK_IMG, // url to black image for preloading job
643
+
644
  'title' => '', // image title
645
  'alt' => '', // image alternative text
646
 
649
  'link_class' => '',
650
  'link_id' => '',
651
  'link_rel' => '',
652
+
653
  'target' => '_blank',
654
  'video' => '', // youtube or vimeo video link
655
  'auto_play_video' => '', // autoplay for youtube or vimeo videos
660
 
661
  'info' => '',
662
 
663
+ 'autopause' => 'false',
664
  'mute' => 'true',
665
  'loop' => 'true',
666
  'vbgalign' => 'fill',
671
  'thumb' => '',
672
  'tab' => '',
673
  'tab_thumb' => '',
674
+ 'delay' => '', // data-delay
675
  'bgalign' => '', // data-fill-mode
676
  'bgcolor' => '',
677
  'pattern' => '',
678
  'tintcolor' => ''
679
  )
680
+ , $atts, 'masterslider_slide' )
681
  );
682
 
683
  $css_class = empty( $css_class ) ? '' : ' '.$css_class;
696
 
697
  // add slide starter tag
698
  $slide_start_tag = sprintf( '<div %s class="ms-slide%s" %s %s %s >', $css_id, $css_class, $data_delay, $data_align, $style_attr )."\n";
699
+
700
  // making start tag filterable for extend purposes
701
  $slide_start_tag = apply_filters( 'msp_masterslider_slide_start_tag', "\t\t\t\t".$slide_start_tag, $atts );
702
 
706
 
707
  // if blank image is not set use original img instead
708
  $src_blank = empty( $src_blank ) ? $src : $src_blank;
709
+
710
  // decode escaped square brackets
711
  $title = str_replace( array( "%5B", "%5D" ), array('[', ']'), $title );
712
  $alt = str_replace( array( "%5B", "%5D" ), array('[', ']'), $alt );
713
  $link_title = str_replace( array( "%5B", "%5D" ), array('[', ']'), $link_title );
714
  $link_rel = str_replace( array( "%5B", "%5D" ), array('[', ']'), $link_rel );
715
+
716
  // main image markup
717
  if( ! empty( $src ) ) {
718
  $crop_width = empty( $crop_width ) || ! is_numeric( $crop_width ) ? NULL : (int)$crop_width;
723
 
724
  if( $crop_width || $crop_height )
725
  $src = msp_get_the_resized_image_src( $src, $crop_width, $crop_height, true );
726
+
727
  $slide_content .= "\t\t\t\t\t" . sprintf('<img src="%s" alt="%s" title="%s" data-src="%s" />', $src_blank, $alt, $title, $src )."\n";
728
  }
729
 
730
  $self_video_markup = '';
731
  // self host video background
732
+ if( ! empty( $mp4 ) )
733
  $self_video_markup .= "\t\t".sprintf('<source src="%s" type="video/mp4"/>', $mp4 )."\n";
734
 
735
+ if( ! empty( $webm ) )
736
  $self_video_markup .= "\t\t".sprintf('<source src="%s" type="video/webm"/>', $webm )."\n";
737
 
738
+ if( ! empty( $ogg ) )
739
  $self_video_markup .= "\t\t".sprintf('<source src="%s" type="video/ogg"/>', $ogg )."\n";
740
 
741
 
742
  if( ! empty( $self_video_markup ) ) {
743
+ $slide_content .= "\t".sprintf( '<video data-autopause="%s" data-mute="%s" data-loop="%s" data-fill-mode="%s" >%s%s%s</video>',
744
  msp_is_true( $autopause ), $mute, $loop, $vbgalign, "\n", $self_video_markup, "\t" )."\n";
745
  }
746
 
754
  $att_link_title = $link_title ? 'title="'. $link_title .'"' : '';
755
  $att_link_class = $link_class ? 'class="'. $link_class .'"' : '';
756
  $att_link_id = $link_id ? 'id="'. $link_id .'"' : '';
757
+
758
+ $slide_content .= "\t".sprintf('<a href="%s" %s %s %s %s %s>%s</a>', $link, $att_link_target,
759
  $att_link_rel, $att_link_title, $att_link_class,
760
  $att_link_id, $title )."\n";
761
  }
762
+
763
  // add layers that passed as content
764
  if( ! empty( $content ) )
765
  $slide_content .= $content."\n";
796
  $slide_content = do_shortcode( $slide_content );
797
 
798
  $output = empty( $slide_content ) ? '' : $slide_start_tag.$slide_content.$slide_end_tag;
799
+
800
  return apply_filters( 'masterslider_slide_content', $output, $slide_start_tag, $slide_content, $slide_end_tag );
801
  }
802
 
808
  add_shortcode( 'ms_layer', 'msp_masterslider_layer_shortcode' );
809
 
810
  function msp_masterslider_layer_shortcode( $atts, $content = null ) {
811
+
812
  // merge input and default attrs
813
+ $merged = shortcode_atts(
814
+ array(
815
  'src' => '', // image layer src or video cover image
816
  'src_blank' => MSWP_BLANK_IMG, // url to black image for preloading job
817
 
864
  'height' => ''
865
  )
866
  , $atts, 'masterslider_layer' );
867
+
868
+ extract( $merged );
869
 
870
 
871
  $wrapper_class = trim( 'ms-layer '. $css_class.' '. $style_id );
887
  }
888
 
889
 
890
+ $show_duration = ( ! is_numeric( $show_duration ) || empty( $show_duration ) ) ? 1000 : (int)$show_duration;
891
+ $show_delay = ( ! is_numeric( $show_delay ) || empty( $show_delay ) ) ? 0 : (int)$show_delay;
892
 
893
  $hide_duration = ( ! is_numeric( $hide_duration ) || empty( $hide_duration ) ) ? 1000 : (int)$hide_duration;
894
  $hide_delay = ( ! is_numeric( $hide_delay ) || empty( $hide_delay ) ) ? 1000 : (int)$hide_delay;
952
  $rel_attr = empty( $rel ) ? '' : 'rel="'.$rel.'"';
953
 
954
  $rel_attr = apply_filters( 'masterslider_layer_shortcode_attr_rel', $rel_attr, $rel );
955
+
956
  $link = apply_filters( 'masterslider_layer_shortcode_attr_link', $link );
957
 
958
  // create data-link attr if it's not default value
967
  } else {
968
  $data_action = '';
969
  }
970
+
971
 
972
  // convert relative image link to absolute
973
  $src = ! empty( $src ) ? msp_get_the_absolute_media_url( $src ) : $src;
978
  $data_tp_width = 'hotspot' == $type ? 'data-width="'.$tooltip_width.'"' : '';
979
  $data_target = 'hotspot' == $type ? 'data-target="'.$target.'"' : '';
980
 
981
+ $effect_attrs = sprintf( '%s %s %s %s %s %s %s %s %s %s',
982
  $data_show_effect, $data_show_duration, $data_show_delay, $data_show_ease, $data_hide_effect,
983
  $data_hide_duration, $data_hide_time, $data_hide_ease, $data_hide_delay, $data_fixed );
984
 
1002
 
1003
  // or single image
1004
  } else {
1005
+ $layer .= sprintf( '<img %s class="%s" src="%s" data-src="%s" alt="%s" style="%s" %s %s %s %s %s />',
1006
  $id_attr, $wrapper_class, $src_blank, $src, $alt, $style_size, $effect_attrs, $common_attrs, $rel_attr, $data_action, $position_attrs )."\n";
1007
  }
1008
 
1014
 
1015
  // if layer type was text, video or hotspot
1016
  } else {
1017
+
1018
  $layer_content = '';
1019
  // add video iframe as layer content if type was video
1020
  if( 'video' == $type ) {
1027
  $vid_height = empty( $height ) ? '270' : rtrim( $height, 'px' ) ;
1028
  $layer_content .= sprintf( '<iframe src="%s" width="%s" height="%s" > </iframe>', $video, $vid_width, $vid_height );
1029
  }
1030
+
1031
  // add shortcode content if layer type was text or hotspot
1032
  } else {
1033
  $layer_content .= ! empty( $content ) ? do_shortcode( wp_unslash( $content ) ) : '';
1034
  }
1035
 
1036
+ $layer = sprintf( '<div %s class="%s" style="%s" %s %s %s %s >%s</div>',
1037
  $id_attr, $wrapper_class, $style_size, $data_link, $effect_attrs, $common_attrs, $position_attrs, $layer_content )."\n";
1038
  }
1039
 
1040
  // end layer markup generation //////////////////////////////////////////
1041
 
1042
+
1043
  return apply_filters( "masterslider_layer_shortcode", "\t\t\t\t\t".$layer, $merged, $atts, $content );
1044
  }
1045
 
1052
 
1053
  function msp_masterslider_slide_info_shortcode( $atts, $content = null ) {
1054
 
1055
+ $args = shortcode_atts(
1056
+ array(
1057
  'css_class' => '',
1058
  'tag_name' => 'div'
1059
  )
1060
  , $atts, 'masterslider_slide_info' );
1061
 
1062
+ extract( $args );
1063
 
1064
+ if( is_array( $css_class ) ){
1065
+ $css_class = join( ' ' , $css_class );
1066
+ } else {
1067
+ $css_class = empty( $css_class ) ? '' : esc_attr( ' '.$css_class );
1068
+ }
1069
 
1070
  // create slide info markup
1071
  $output = sprintf( '<%1$s class="ms-info%2$s">%3$s</%1$s>', $tag_name, $css_class, do_shortcode( wp_unslash( $content ) ) )."\n";
1072
+
1073
  return apply_filters( 'masterslider_slide_info_shortcode', "\t\t\t\t\t".$output, $args );
1074
  }
1075
 
1079
 
1080
  function msp_masterslider_slide_flickr_shortcode( $atts, $content = null ) {
1081
 
1082
+ $args = shortcode_atts(
1083
+ array(
1084
  'src_blank' => MSWP_BLANK_IMG, // url to black image for preloading job
1085
  'thumb' => 'yes'
1086
  )
1087
  , $atts, 'masterslider_slide_flickr' );
1088
 
1089
+ extract( $args );
1090
 
1091
  $output = sprintf( '<img src="%s" data-src="{{image}}" alt="{{title}}"/>', $src_blank ) . "\n";
1092
 
1093
  if( 'yes' == $thumb )
1094
  $output .= "\t\t\t\t" . '<img class="ms-thumb" src="{{thumb}}" alt="{{title}}"/>';
1095
 
1096
+
1097
  return apply_filters( 'masterslider_slide_flickr_shortcode', "\t\t\t\t".$output, $args );
1098
  }
1099
 
includes/msp-template-tags.php CHANGED
@@ -2,217 +2,217 @@
2
 
3
  function msp_get_general_post_template_tags() {
4
 
5
- $tags = array(
6
-
7
- array( 'name' => 'title',
8
- 'label' => __( 'The post title', MSWP_TEXT_DOMAIN ),
9
- 'type' => '_general',
10
- 'callback' => ''
11
- ),
12
-
13
- array( 'name' => 'content',
14
- 'label' => __( 'The post content', MSWP_TEXT_DOMAIN ),
15
- 'type' => '_general',
16
- 'callback' => ''
17
- ),
18
-
19
- array( 'name' => 'excerpt',
20
- 'label' => __( 'The post excerpt', MSWP_TEXT_DOMAIN ),
21
- 'type' => '_general',
22
- 'callback' => ''
23
- ),
24
-
25
- array( 'name' => 'categories',
26
- 'label' => __( 'The post categories', MSWP_TEXT_DOMAIN ),
27
- 'type' => '_general',
28
- 'callback' => ''
29
- ),
30
-
31
- array( 'name' => 'tags',
32
- 'label' => __( 'The post tags', MSWP_TEXT_DOMAIN ),
33
- 'type' => '_general',
34
- 'callback' => ''
35
- ),
36
-
37
- array( 'name' => 'permalink',
38
- 'label' => __( 'The post link', MSWP_TEXT_DOMAIN ),
39
- 'type' => '_general',
40
- 'callback' => ''
41
- ),
42
-
43
- array( 'name' => 'author',
44
- 'label' => __( 'The author name', MSWP_TEXT_DOMAIN ),
45
- 'type' => '_general',
46
- 'callback' => ''
47
- ),
48
-
49
- array( 'name' => 'post_id',
50
- 'label' => __( 'The unique ID of the post', MSWP_TEXT_DOMAIN ),
51
- 'type' => '_general',
52
- 'callback' => ''
53
- ),
54
-
55
- array( 'name' => 'image',
56
- 'label' => __( 'Post image', MSWP_TEXT_DOMAIN ),
57
- 'type' => '_general',
58
- 'callback' => ''
59
- ),
60
-
61
- array( 'name' => 'image-url',
62
- 'label' => __( 'Post image source', MSWP_TEXT_DOMAIN ),
63
- 'type' => '_general',
64
- 'callback' => ''
65
- ),
66
-
67
- array( 'name' => 'year',
68
- 'label' => __( 'The year of the post', MSWP_TEXT_DOMAIN ),
69
- 'type' => '_general',
70
- 'callback' => ''
71
- ),
72
-
73
- array( 'name' => 'monthnum',
74
- 'label' => __( 'Numeric Month', MSWP_TEXT_DOMAIN ),
75
- 'type' => '_general',
76
- 'callback' => ''
77
- ),
78
-
79
- array( 'name' => 'month',
80
- 'label' => __( 'Month name', MSWP_TEXT_DOMAIN ),
81
- 'type' => '_general',
82
- 'callback' => ''
83
- ),
84
-
85
- array( 'name' => 'daynum',
86
- 'label' => __( 'Day of the month', MSWP_TEXT_DOMAIN ),
87
- 'type' => '_general',
88
- 'callback' => ''
89
- ),
90
-
91
- array( 'name' => 'day',
92
- 'label' => __( 'Weekday name', MSWP_TEXT_DOMAIN ),
93
- 'type' => '_general',
94
- 'callback' => ''
95
- ),
96
-
97
- array( 'name' => 'time',
98
- 'label' => __( 'Hour:Minutes', MSWP_TEXT_DOMAIN ),
99
- 'type' => '_general',
100
- 'callback' => ''
101
- ),
102
-
103
- array( 'name' => 'date-published',
104
- 'label' => __( 'The publish date', MSWP_TEXT_DOMAIN ),
105
- 'type' => '_general',
106
- 'callback' => ''
107
- ),
108
-
109
- array( 'name' => 'date-modified',
110
- 'label' => __( 'The last modified date', MSWP_TEXT_DOMAIN ),
111
- 'type' => '_general',
112
- 'callback' => ''
113
- ),
114
-
115
- array( 'name' => 'commentnum',
116
- 'label' => __( 'Number of comments', MSWP_TEXT_DOMAIN ),
117
- 'type' => '_general',
118
- 'callback' => ''
119
- )
120
- );
121
-
122
- return apply_filters( 'masterslider_post_slider_tags_list', $tags );
123
  }
124
 
125
 
126
 
127
  function msp_get_woocommerce_template_tags() {
128
 
129
- $tags = array(
130
-
131
- array( 'name' => 'wc_price',
132
- 'label' => __( 'Price', MSWP_TEXT_DOMAIN ),
133
- 'type' => 'product',
134
- 'callback' => ''
135
- ),
136
-
137
- array( 'name' => 'wc_regular_price',
138
- 'label' => __( 'Regular Price', MSWP_TEXT_DOMAIN ),
139
- 'type' => 'product',
140
- 'callback' => ''
141
- ),
142
-
143
- array( 'name' => 'wc_sale_price',
144
- 'label' => __( 'Sale Price', MSWP_TEXT_DOMAIN ),
145
- 'type' => 'product',
146
- 'callback' => ''
147
- ),
148
-
149
- array( 'name' => 'wc_stock_status',
150
- 'label' => __( 'In Stock Status', MSWP_TEXT_DOMAIN ),
151
- 'type' => 'product',
152
- 'callback' => ''
153
- ),
154
-
155
- array( 'name' => 'wc_stock_quantity',
156
- 'label' => __( 'Stock Quantity', MSWP_TEXT_DOMAIN ),
157
- 'type' => 'product',
158
- 'callback' => ''
159
- ),
160
-
161
- array( 'name' => 'wc_weight',
162
- 'label' => __( 'Weight', MSWP_TEXT_DOMAIN ),
163
- 'type' => 'product',
164
- 'callback' => ''
165
- ),
166
-
167
- array( 'name' => 'wc_product_cats',
168
- 'label' => __( 'Product Categories', MSWP_TEXT_DOMAIN ),
169
- 'type' => 'product',
170
- 'callback' => ''
171
- ),
172
-
173
- array( 'name' => 'wc_product_tags',
174
- 'label' => __( 'Product Tags', MSWP_TEXT_DOMAIN ),
175
- 'type' => 'product',
176
- 'callback' => ''
177
- ),
178
-
179
- array( 'name' => 'wc_total_sales',
180
- 'label' => __( 'Total Sales', MSWP_TEXT_DOMAIN ),
181
- 'type' => 'product',
182
- 'callback' => ''
183
- ),
184
-
185
- array( 'name' => 'wc_average_rating',
186
- 'label' => __( 'Average Rating', MSWP_TEXT_DOMAIN ),
187
- 'type' => 'product',
188
- 'callback' => ''
189
- ),
190
-
191
- array( 'name' => 'wc_rating_count',
192
- 'label' => __( 'Rating Count', MSWP_TEXT_DOMAIN ),
193
- 'type' => 'product',
194
- 'callback' => ''
195
- )
196
- );
197
-
198
- return apply_filters( 'masterslider_woocommerce_product_slider_tags_list', $tags );
199
  }
200
 
201
 
202
 
203
  function get_post_template_tags_value( $post = null, $args = null ){
204
- $post = get_post( $post );
205
 
206
- $template_tags = msp_get_general_post_template_tags();
207
 
208
- if ( msp_is_plugin_active( 'woocommerce/woocommerce.php' ) )
209
- $template_tags = array_merge( $template_tags, msp_get_woocommerce_template_tags() );
210
-
211
- $tags_dictionary = array();
212
 
213
- foreach ( $template_tags as $template_tag ) {
214
- $tags_dictionary[ $template_tag['name'] ] = msp_get_template_tag_value( $template_tag['name'], $post, $args );
215
- }
216
 
217
- return $tags_dictionary;
218
  }
2
 
3
  function msp_get_general_post_template_tags() {
4
 
5
+ $tags = array(
6
+
7
+ array( 'name' => 'title',
8
+ 'label' => __( 'The post title', 'master-slider' ),
9
+ 'type' => '_general',
10
+ 'callback' => ''
11
+ ),
12
+
13
+ array( 'name' => 'content',
14
+ 'label' => __( 'The post content', 'master-slider' ),
15
+ 'type' => '_general',
16
+ 'callback' => ''
17
+ ),
18
+
19
+ array( 'name' => 'excerpt',
20
+ 'label' => __( 'The post excerpt', 'master-slider' ),
21
+ 'type' => '_general',
22
+ 'callback' => ''
23
+ ),
24
+
25
+ array( 'name' => 'categories',
26
+ 'label' => __( 'The post categories', 'master-slider' ),
27
+ 'type' => '_general',
28
+ 'callback' => ''
29
+ ),
30
+
31
+ array( 'name' => 'tags',
32
+ 'label' => __( 'The post tags', 'master-slider' ),
33
+ 'type' => '_general',
34
+ 'callback' => ''
35
+ ),
36
+
37
+ array( 'name' => 'permalink',
38
+ 'label' => __( 'The post link', 'master-slider' ),
39
+ 'type' => '_general',
40
+ 'callback' => ''
41
+ ),
42
+
43
+ array( 'name' => 'author',
44
+ 'label' => __( 'The author name', 'master-slider' ),
45
+ 'type' => '_general',
46
+ 'callback' => ''
47
+ ),
48
+
49
+ array( 'name' => 'post_id',
50
+ 'label' => __( 'The unique ID of the post', 'master-slider' ),
51
+ 'type' => '_general',
52
+ 'callback' => ''
53
+ ),
54
+
55
+ array( 'name' => 'image',
56
+ 'label' => __( 'Post image', 'master-slider' ),
57
+ 'type' => '_general',
58
+ 'callback' => ''
59
+ ),
60
+
61
+ array( 'name' => 'image-url',
62
+ 'label' => __( 'Post image source', 'master-slider' ),
63
+ 'type' => '_general',
64
+ 'callback' => ''
65
+ ),
66
+
67
+ array( 'name' => 'year',
68
+ 'label' => __( 'The year of the post', 'master-slider' ),
69
+ 'type' => '_general',
70
+ 'callback' => ''
71
+ ),
72
+
73
+ array( 'name' => 'monthnum',
74
+ 'label' => __( 'Numeric Month', 'master-slider' ),
75
+ 'type' => '_general',
76
+ 'callback' => ''
77
+ ),
78
+
79
+ array( 'name' => 'month',
80
+ 'label' => __( 'Month name', 'master-slider' ),
81
+ 'type' => '_general',
82
+ 'callback' => ''
83
+ ),
84
+
85
+ array( 'name' => 'daynum',
86
+ 'label' => __( 'Day of the month', 'master-slider' ),
87
+ 'type' => '_general',
88
+ 'callback' => ''
89
+ ),
90
+
91
+ array( 'name' => 'day',
92
+ 'label' => __( 'Weekday name', 'master-slider' ),
93
+ 'type' => '_general',
94
+ 'callback' => ''
95
+ ),
96
+
97
+ array( 'name' => 'time',
98
+ 'label' => __( 'Hour:Minutes', 'master-slider' ),
99
+ 'type' => '_general',
100
+ 'callback' => ''
101
+ ),
102
+
103
+ array( 'name' => 'date-published',
104
+ 'label' => __( 'The publish date', 'master-slider' ),
105
+ 'type' => '_general',
106
+ 'callback' => ''
107
+ ),
108
+
109
+ array( 'name' => 'date-modified',
110
+ 'label' => __( 'The last modified date', 'master-slider' ),
111
+ 'type' => '_general',
112
+ 'callback' => ''
113
+ ),
114
+
115
+ array( 'name' => 'commentnum',
116
+ 'label' => __( 'Number of comments', 'master-slider' ),
117
+ 'type' => '_general',
118
+ 'callback' => ''
119
+ )
120
+ );
121
+
122
+ return apply_filters( 'masterslider_post_slider_tags_list', $tags );
123
  }
124
 
125
 
126
 
127
  function msp_get_woocommerce_template_tags() {
128
 
129
+ $tags = array(
130
+
131
+ array( 'name' => 'wc_price',
132
+ 'label' => __( 'Price', 'master-slider' ),
133
+ 'type' => 'product',
134
+ 'callback' => ''
135
+ ),
136
+
137
+ array( 'name' => 'wc_regular_price',
138
+ 'label' => __( 'Regular Price', 'master-slider' ),
139
+ 'type' => 'product',
140
+ 'callback' => ''
141
+ ),
142
+
143
+ array( 'name' => 'wc_sale_price',
144
+ 'label' => __( 'Sale Price', 'master-slider' ),
145
+ 'type' => 'product',
146
+ 'callback' => ''
147
+ ),
148
+
149
+ array( 'name' => 'wc_stock_status',
150
+ 'label' => __( 'In Stock Status', 'master-slider' ),
151
+ 'type' => 'product',
152
+ 'callback' => ''
153
+ ),
154
+
155
+ array( 'name' => 'wc_stock_quantity',
156
+ 'label' => __( 'Stock Quantity', 'master-slider' ),
157
+ 'type' => 'product',
158
+ 'callback' => ''
159
+ ),
160
+
161
+ array( 'name' => 'wc_weight',
162
+ 'label' => __( 'Weight', 'master-slider' ),
163
+ 'type' => 'product',
164
+ 'callback' => ''
165
+ ),
166
+
167
+ array( 'name' => 'wc_product_cats',
168
+ 'label' => __( 'Product Categories', 'master-slider' ),
169
+ 'type' => 'product',
170
+ 'callback' => ''
171
+ ),
172
+
173
+ array( 'name' => 'wc_product_tags',
174
+ 'label' => __( 'Product Tags', 'master-slider' ),
175
+ 'type' => 'product',
176
+ 'callback' => ''
177
+ ),
178
+
179
+ array( 'name' => 'wc_total_sales',
180
+ 'label' => __( 'Total Sales', 'master-slider' ),
181
+ 'type' => 'product',
182
+ 'callback' => ''
183
+ ),
184
+
185
+ array( 'name' => 'wc_average_rating',
186
+ 'label' => __( 'Average Rating', 'master-slider' ),
187
+ 'type' => 'product',
188
+ 'callback' => ''
189
+ ),
190
+
191
+ array( 'name' => 'wc_rating_count',
192
+ 'label' => __( 'Rating Count', 'master-slider' ),
193
+ 'type' => 'product',
194
+ 'callback' => ''
195
+ )
196
+ );
197
+
198
+ return apply_filters( 'masterslider_woocommerce_product_slider_tags_list', $tags );
199
  }
200
 
201
 
202
 
203
  function get_post_template_tags_value( $post = null, $args = null ){
204
+ $post = get_post( $post );
205
 
206
+ $template_tags = msp_get_general_post_template_tags();
207
 
208
+ if ( msp_is_plugin_active( 'woocommerce/woocommerce.php' ) )
209
+ $template_tags = array_merge( $template_tags, msp_get_woocommerce_template_tags() );
210
+
211
+ $tags_dictionary = array();
212
 
213
+ foreach ( $template_tags as $template_tag ) {
214
+ $tags_dictionary[ $template_tag['name'] ] = msp_get_template_tag_value( $template_tag['name'], $post, $args );
215
+ }
216
 
217
+ return $tags_dictionary;
218
  }
master-slider.php CHANGED
@@ -11,13 +11,13 @@
11
  * Plugin Name: Master Slider
12
  * Plugin URI: https://wordpress.org/plugins/master-slider/
13
  * Description: Master Slider is the most advanced responsive HTML5 WordPress slider plugin with touch swipe navigation that works smoothly on devices too.
14
- * Version: 2.6.4
15
  * Author: averta
16
  * Author URI: http://averta.net
17
  * Text Domain: master-slider
18
  * License URI: license.txt
19
  * Domain Path: /languages
20
- * Tested up to: 4.2.2
21
  */
22
 
23
  // If this file is called directly, abort.
11
  * Plugin Name: Master Slider
12
  * Plugin URI: https://wordpress.org/plugins/master-slider/
13
  * Description: Master Slider is the most advanced responsive HTML5 WordPress slider plugin with touch swipe navigation that works smoothly on devices too.
14
+ * Version: 2.7.0
15
  * Author: averta
16
  * Author URI: http://averta.net
17
  * Text Domain: master-slider
18
  * License URI: license.txt
19
  * Domain Path: /languages
20
+ * Tested up to: 4.3.1
21
  */
22
 
23
  // If this file is called directly, abort.
public/assets/css/masterslider.main.css CHANGED
@@ -1,2502 +1,2503 @@
1
- /*!
2
  * Master Slider WordPress Lite Main CSS File
3
  * @date Jun 2015
4
  */
5
 
6
 
7
 
8
- /**
9
- * Master Slider
10
- * Main css file
11
- */
12
-
13
- .master-slider{
14
- position: relative;
15
- visibility: hidden;
16
- -moz-transform: translate3d(0 , 0 , 0);
17
- }
18
-
19
-
20
-
21
- .ms-ie img{border:none;}
22
- .ms-ie8 * {opacity:inherit;filter:inherit;}
23
- .ms-ie7 {zoom:1;}
24
-
25
- .ms-moz .ms-slide-bgcont>img { transform: translateX(0px); }
26
-
27
- .master-slider a,
28
- .master-slider a:hover {
29
- -webkit-transition: none;
30
- -o-transition: none;
31
- transition: none;
32
- }
33
-
34
- .wpb_row .master-slider-parent *,
35
- .master-slider-parent * {
36
- -webkit-box-sizing: content-box;
37
- -moz-box-sizing: content-box;
38
- box-sizing: content-box;
39
- }
40
-
41
- .master-slider-parent {
42
- margin-left: auto;
43
- margin-right: auto;
44
- }
45
-
46
- .ms-layout-partialview .ms-view {
47
- overflow: visible;
48
- background-color:transparent;
49
- }
50
-
51
- .ms-layout-partialview .ms-container { overflow: hidden; }
52
-
53
- .master-slider.before-init{}
54
-
55
- .ms-loading-container{
56
- position:absolute;
57
- width:100%;
58
- top:0;
59
- }
60
-
61
- .ms-loading-container .ms-loading,
62
- .ms-slide .ms-slide-loading {
63
- width: 36px;
64
- height: 36px;
65
- background: url(common/loading-2.gif) no-repeat center white;
66
- border-radius: 60px;
67
- box-shadow: 0px 0px 3px rgba(0,0,0,0.2);
68
- position: absolute;
69
- left: 50%;
70
- top: 50%;
71
- margin: -18px;
72
- opacity: 0.9;
73
- }
74
-
75
-
76
- /* grab cursor */
77
- .ms-def-cursor{cursor:auto !important;}
78
- .ms-grab-cursor{cursor: url(common/grab.png), move;}
79
- .ms-grabbing-cursor{cursor: url(common/grabbing.png), move;}
80
- .ms-ie .ms-grab-cursor{cursor: move;}
81
- .ms-ie .ms-grabbing-cursor {cursor: move;}
82
-
83
- .ms-view {
84
- margin:0px auto;
85
- overflow:hidden;
86
-
87
- position:relative;
88
- -webkit-perspective: 2000px;
89
- -moz-perspective: 2000px;
90
- -ms-perspective: 2000px;
91
- perspective: 2000px;
92
- }
93
-
94
- .ms-view .ms-slide-container{position:relative;}
95
-
96
- .ms-slide {
97
- position:absolute;
98
- height:100%;
99
- -webkit-transform: translateZ(0px);
100
- -ms-transform: translateZ(0px);
101
- -o-transform: translateZ(0px);
102
- transform: translateZ(0px);
103
- }
104
-
105
- .ms-wk .ms-slide {
106
- -webkit-transform-style: preserve-3d;
107
- transform-style: preserve-3d;
108
- }
109
-
110
- .ms-slide.selected {}
111
-
112
- .ms-slide .ms-slide-bgcont,
113
- .ms-slide .ms-slide-bgvideocont{
114
- position: absolute;
115
- overflow:hidden;
116
- width: 100%;
117
- }
118
-
119
- .ms-slide .ms-slide-link {
120
- display: block;
121
- width: 100%;
122
- height: 100%;
123
- position: absolute;
124
- top:0;
125
- z-index: 110;
126
- }
127
-
128
- .ms-ie .ms-slide-link {
129
- background: url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBR‌​AA7") 0 0 repeat;
130
- }
131
-
132
-
133
- .ms-slide .ms-slide-bgvideocont{
134
- z-index: 105;
135
- height: 100%;
136
- }
137
-
138
- .ms-wk .ms-slide .ms-slide-bgvideocont,
139
- .ms-wk .ms-slide-bgvideocont>video{
140
- -webkit-transform: translateZ(0.3px);
141
- transform: translateZ(0.3px);
142
- }
143
-
144
- .ms-slide .ms-slide-bgvideo{
145
- position: absolute;
146
- top: 0px;
147
- }
148
-
149
-
150
- .ms-inner-controls-cont, .ms-container {position: relative; margin:0 auto;}
151
- .ms-slide .ms-slide-bgcont img , .ms-container , .ms-inner-controls-cont{
152
- -webkit-user-select:none;
153
- -moz-user-select:none;
154
- -ms-user-select:none;
155
- user-select:none;
156
- }
157
-
158
- .ms-slide .ms-slide-video{
159
- position:absolute;
160
- top:0;
161
- z-index: 111;
162
- background:black;
163
- padding:0;
164
- margin: 0;
165
- border: none;
166
-
167
- }
168
-
169
-
170
- .ms-slide .ms-pattern{
171
- background-attachment: scroll;
172
- width: 100%;
173
- height: 100%;
174
- z-index: 108;
175
- position: absolute;
176
- top: 0;
177
- }
178
-
179
- .ms-wk .ms-pattern{
180
- -webkit-transform: translateZ(0.4px);
181
- transform: translateZ(0.4px);
182
- }
183
-
184
- .ms-slide .ms-slide-vpbtn , .ms-slide .ms-video-btn{
185
- position:absolute;
186
- cursor: pointer;
187
- z-index: 110;
188
- }
189
-
190
- .ms-slide .ms-slide-vcbtn{
191
- position:absolute;
192
- cursor: pointer;
193
- z-index: 113;
194
- }
195
-
196
- .ms-slide-vcbtn-mobile{
197
- position: relative;
198
- bottom: 0;
199
- left:0;
200
- width:100%;
201
- height: 28px;
202
- background-color: black;
203
- color: white;
204
- text-align: center;
205
- cursor: pointer;
206
- z-index: 113;
207
- }
208
-
209
- .ms-slide-vcbtn-mobile .ms-vcbtn-txt {
210
- text-transform: uppercase;
211
- font-family: sans-serif;
212
- font-size: 0.75em;
213
- display: inline-block;
214
- background: url(common/video-close-btn.png) no-repeat 0px 3px;
215
- padding-left: 15px;
216
- height: 15px;
217
- color: #DBDBDB;
218
- margin-top: 7px;
219
- }
220
-
221
- .ms-wk .ms-slide .ms-slide-vcbtn,
222
- .ms-wk .ms-slide .ms-slide-layers,
223
- .ms-wk .ms-slide .ms-slide-vpbtn,
224
- .ms-wk .ms-slide .ms-slide-video,
225
- .ms-wk .ms-slide-link {
226
- -webkit-transform: translateZ(0.44px);
227
- transform: translateZ(0.44px);
228
- }
229
-
230
- .ms-video-img{
231
- position:absolute;
232
- width:100%;
233
- height:100%;
234
- top:0;
235
- left:0;
236
- }
237
-
238
- .ms-mask-frame{
239
- overflow:hidden;
240
- position:absolute;
241
- float:left;
242
- }
243
-
244
- /* controls */
245
-
246
- .ms-thumb-list{
247
- overflow:hidden;
248
- position:absolute;
249
- }
250
-
251
- .ms-thumb-list.ms-dir-h {width: 100%;}
252
- .ms-thumb-list.ms-dir-v {height: 100%; top: 0;}
253
- .ms-thumbs-cont{position: relative;}
254
- .ms-thumb-frame img{width:100%; height:auto;}
255
- .ms-thumb-frame{
256
- cursor: pointer;
257
- float: left;
258
- overflow: hidden;
259
- opacity: 0.5;
260
- -webkit-transition: opacity 300ms;
261
- -moz-transition: opacity 300ms;
262
- -ms-transition: opacity 300ms;
263
- -o-transition: opacity 300ms;
264
- transition: opacity 300ms;
265
- }
266
- .ms-thumb-frame-selected{ opacity: 1; }
267
-
268
- .ms-tabs .ms-thumb-frame {
269
- background-color: #F6f6f6;
270
- text-shadow: 0 1px 1px white;
271
- color: #222;
272
- border: solid 1px white;
273
- border-width: 0 1px 1px 0;
274
- overflow: visible;
275
- position: relative;
276
- opacity: 1;
277
- -webkit-transition: all 300ms ease-out;
278
- -moz-transition: all 300ms ease-out;
279
- -ms-transition: all 300ms ease-out;
280
- -o-transition: all 300ms ease-out;
281
- transition: all 300ms ease-out;
282
- }
283
-
284
- .ms-tabs.ms-has-thumb .ms-tab-thumb{ width:auto; }
285
- .ms-tabs.ms-dir-h .ms-thumb-frame {margin-top: 12px;}
286
- .ms-tabs.ms-dir-v .ms-thumb-frame {margin-left: 12px;}
287
- .ms-tabs.ms-dir-v.ms-align-left .ms-thumb-frame {margin-left: 0px;}
288
- .ms-tabs.ms-dir-h.ms-align-top {z-index: 140;}
289
- .ms-tabs.ms-dir-h.ms-align-top .ms-thumb-frame{margin-top: -12px;}
290
- .ms-tabs .ms-thumb{padding: 20px 20px;}
291
- .ms-tabs .ms-thumb-frame-selected { opacity: 1; background: #EDEDED;}
292
- .ms-tabs .ms-thumb-frame .ms-thumb-ol {
293
- position: absolute;
294
- opacity: 0;
295
- -webkit-transition: all 300ms ease-out;
296
- -moz-transition: all 300ms ease-out;
297
- -ms-transition: all 300ms ease-out;
298
- -o-transition: all 300ms ease-out;
299
- transition: all 300ms ease-out;
300
- }
301
-
302
- .ms-tabs.ms-dir-h .ms-thumb-frame .ms-thumb-ol {
303
- top: 0px;
304
- left: 50%;
305
- margin-left: -12px;
306
- border-bottom: solid 12px #F6f6f6;
307
- border-left: solid 12px transparent;
308
- border-right: solid 12px transparent;
309
- }
310
-
311
- .ms-tabs.ms-dir-h.ms-align-bottom .ms-thumb-frame-selected .ms-thumb-ol{
312
- opacity: 1;
313
- top:-12px;
314
- border-bottom-color: #EDEDED;
315
- }
316
-
317
- .ms-tabs.ms-dir-h.ms-align-top .ms-thumb-frame .ms-thumb-ol {
318
- bottom: 0px;
319
- top:auto;
320
- border-bottom:0px;
321
- border-top: solid 12px #F6f6f6;
322
- }
323
-
324
- .ms-tabs.ms-dir-h.ms-align-top .ms-thumb-frame-selected .ms-thumb-ol{
325
- opacity: 1;
326
- bottom:-12px;
327
- border-top-color: #EDEDED;
328
- }
329
-
330
- .ms-tabs.ms-dir-v .ms-thumb-frame .ms-thumb-ol {
331
- top: 50%;
332
- left: 0;
333
- margin-top: -12px;
334
- border-right: solid 12px #EDEDED;
335
- border-top: solid 12px transparent;
336
- border-bottom: solid 12px transparent;
337
- }
338
-
339
- .ms-tabs.ms-dir-v.ms-align-right .ms-thumb-frame-selected .ms-thumb-ol{
340
- opacity: 1;
341
- left:-12px;
342
- border-right-color:#EDEDED;
343
- }
344
-
345
- .ms-tabs.ms-dir-v.ms-align-left .ms-thumb-frame .ms-thumb-ol {
346
- left: auto;
347
- right: 0;
348
- border-right: 0;
349
- border-left: solid 12px #EDEDED;
350
- }
351
-
352
- .ms-tabs.ms-dir-v.ms-align-left .ms-thumb-frame-selected .ms-thumb-ol{
353
- opacity: 1;
354
- right:-12px;
355
- border-left-color:#EDEDED;
356
- }
357
-
358
- .ms-thumb-alt {
359
- text-align: center;
360
- margin: 5px;
361
- font-size: 14px;
362
- font-weight: 600;
363
- }
364
-
365
- /* horizontal thumblist arrows*/
366
- .ms-thumb-list.ms-dir-h .ms-thumblist-fwd, .ms-thumb-list.ms-dir-h .ms-thumblist-bwd {
367
- height: 100%;
368
- width: 20px;
369
- position: absolute;
370
- left: 0;
371
- cursor: pointer;
372
- background: rgba(128, 128, 128, 0.5);
373
- text-align: center;
374
- color: white;
375
- }
376
-
377
- .ms-thumb-list.ms-dir-h .ms-thumblist-bwd {
378
- right: 0;
379
- left: auto;
380
- }
381
-
382
- .ms-thumb-list.ms-dir-h .ms-thumblist-fwd:after, .ms-thumb-list.ms-dir-h .ms-thumblist-bwd:after {
383
- content: close-quote;
384
- top: 43%;
385
- position: relative;
386
- border: solid rgba(0, 0, 0, 0);
387
- border-width: 5px 5px 5px 0px;
388
- display: block;
389
- border-right-color: #FFF;
390
- width: 6px;
391
- height: 1px;
392
- }
393
-
394
- .ms-thumb-list.ms-dir-h .ms-thumblist-bwd:after {
395
- border-width: 5px 0px 5px 5px;
396
- border-left-color: #FFF;
397
- left: 7px;
398
- }
399
-
400
- /* vertical thumblist arrows */
401
- .ms-thumb-list.ms-dir-v .ms-thumblist-fwd, .ms-thumb-list.ms-dir-v .ms-thumblist-bwd {
402
- width: 100%;
403
- height: 20px;
404
- position: absolute;
405
- top: 0;
406
- cursor: pointer;
407
- background: rgba(128, 128, 128, 0.5);
408
- text-align: center;
409
- color: white;
410
- }
411
-
412
- .ms-thumb-list.ms-dir-v .ms-thumblist-bwd {
413
- bottom: 0;
414
- top: auto;
415
- }
416
-
417
- .ms-thumb-list.ms-dir-v .ms-thumblist-fwd:after, .ms-thumb-list.ms-dir-v .ms-thumblist-bwd:after {
418
- content: close-quote;
419
- left: 43%;
420
- position: relative;
421
- border: solid rgba(0, 0, 0, 0);
422
- border-width: 0px 5px 5px 5px;
423
- display: block;
424
- border-bottom-color: #FFF;
425
- height: 1px;
426
- top: 5px;
427
- width: 0;
428
- }
429
-
430
- .ms-thumb-list.ms-dir-v .ms-thumblist-bwd:after {
431
- border-width: 5px 5px 0px 5px;
432
- border-top-color: #FFF;
433
- top: 7px;
434
- }
435
-
436
- /* Thumb in tab styles */
437
- .ms-tabs.ms-dir-v.ms-has-thumb .ms-thumbs-cont{ top:0 !important; }
438
- .ms-tabs.ms-has-thumb .ms-thumb-frame{ height: auto !important; }
439
- .ms-tabs.ms-has-thumb .ms-thumb{ padding:0; }
440
- .ms-tabs.ms-has-thumb .ms-tab-context{ padding:20px; }
441
- .ms-tabs.ms-align-left .ms-tab-thumb{ float:left; margin-right:20px; }
442
- .ms-tabs.ms-align-right .ms-tab-thumb{ float:right; margin-left: 20px; }
443
-
444
- .ms-bullet{cursor:pointer;float: left;}
445
- .ms-bullets.ms-dir-h {
446
- position: absolute;
447
- bottom: 20px;
448
- right: 50%;
449
- width: 100px;
450
- }
451
-
452
- .ms-bullets.ms-dir-v {
453
- position: absolute;
454
- top:50%;
455
- }
456
-
457
- .ms-bullets.ms-dir-v .ms-bullet{
458
- float: none;
459
- }
460
- .ms-bullets.ms-dir-h .ms-bullets-count {
461
- position: relative;
462
- right: -50%;
463
- }
464
-
465
- .ms-sbar {position: absolute;}
466
- .ms-sbar.ms-dir-h {
467
- left: 10px;
468
- right: 10px;
469
- top: 5px
470
- }
471
-
472
- .ms-sbar.ms-dir-v {
473
- top: 10px;
474
- bottom: 10px;
475
- right: 5px
476
- }
477
-
478
- .ms-sbar .ms-bar {
479
- height: 4px;
480
- background: #333;
481
- border-radius: 4px;
482
- }
483
-
484
- .ms-sbar.ms-dir-v .ms-bar { width: 4px;}
485
-
486
- .ms-sbar .ms-bar{
487
- position:relative;
488
- -webkit-transition: opacity 300ms;
489
- -moz-transition: opacity 300ms;
490
- -ms-transition: opacity 300ms;
491
- -o-transition: opacity 300ms;
492
- transition: opacity 300ms;
493
- }
494
-
495
- .ms-timerbar {
496
- width: 100%;
497
- bottom: 0px;
498
- position: absolute;
499
- }
500
-
501
- .ms-ctimer {
502
- position: absolute;
503
- top: 30px;
504
- left: 30px;
505
- cursor: pointer;
506
- }
507
-
508
- .ms-ctimer-bullet {}
509
-
510
- .ms-time-bar{
511
- -webkit-transition: width 120ms linear;
512
- -moz-transition: width 120ms linear;
513
- -ms-transition: width 120ms linear;
514
- -o-transition: width 120ms linear;
515
- transition: width 120ms linear;
516
- }
517
-
518
- .ms-ie7 .ms-tooltip-arrow{
519
- height:0px;
520
- }
521
-
522
- .ms-slide-info {position: absolute;}
523
- .ms-slide-info.ms-dir-v {top:0;}
524
- .ms-slide-info.ms-dir-h {width:100%;}
525
-
526
- .ms-pattern.ms-patt-1 {background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAADCAYAAABWKLW/AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABRJREFUeNpiYICA/wzoDGTwHyDAADXxAv4Eq8S5AAAAAElFTkSuQmCC);}
527
- .ms-pattern.ms-patt-2 {background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABhJREFUeNpiYECA/wxogLAANoBdF0CAAQD+agT8l3ocpQAAAABJRU5ErkJggg==);}
528
- .ms-pattern.ms-patt-3 {background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACxJREFUeNqU0EENAAAMwkD8m+4s7PhCCmHbGijxE0jS1HOOhxJSUhf9eAIMAI/CEe94Ny14AAAAAElFTkSuQmCC);}
529
- .ms-pattern.ms-patt-4 {background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAYAAACp8Z5+AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABhJREFUeNpiYGBg+M+ABfxHo3Fz/gMEGACtlgX7j8MuyAAAAABJRU5ErkJggg==);}
530
- .ms-pattern.ms-patt-5 {background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAADCAYAAABWKLW/AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABNJREFUeNpiYECA/3CCAV0UIMAANfEC/mOKn1cAAAAASUVORK5CYII=);}
531
- .ms-pattern.ms-patt-6 {background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAABCAYAAADjAO9DAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABRJREFUeNpiYGBg+M+AClD4AAEGACn3Af/97SgJAAAAAElFTkSuQmCC);}
532
- .ms-pattern.ms-patt-7 {background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABZJREFUeNpiYMAE/+EEAy5Z0iUAAgwA/moE/KMl2lgAAAAASUVORK5CYII=);}
533
- .ms-pattern.ms-patt-8 {background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAICAYAAAA4GpVBAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABRJREFUeNpiYGBg+M+ACdDFAAIMADP0Af/w5VDVAAAAAElFTkSuQmCC);}
534
- .ms-pattern.ms-patt-9 {background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAYAAACp8Z5+AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABJJREFUeNpiYGBg+M9AGQAIMABABAEA80yJjQAAAABJRU5ErkJggg==);}
535
- .ms-pattern.ms-patt-10 {background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABZJREFUeNpiYGBg+A/FcMDEQH0AEGAAxksCAb3vCDgAAAAASUVORK5CYII=);}
536
- .ms-pattern.ms-patt-11 {background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAGCAYAAADgzO9IAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABxJREFUeNpiZGBg+M+AChhBBBMDDkC6BOkAIMAAlXQBCO9f4icAAAAASUVORK5CYII=);}
537
- .ms-pattern.ms-patt-12 {background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABtJREFUeNpiYGBg+M8AATAaDnAKYEgQBgABBgB6/AT8h9ybfgAAAABJRU5ErkJggg==);}
538
- .ms-pattern.ms-patt-13 {background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAYAAACp8Z5+AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAB1JREFUeNpiYGBg+M+ABJig9H90AbggI7oWgAADAI5xBAIRYsxUAAAAAElFTkSuQmCC);}
539
- .ms-pattern.ms-patt-14 {background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAICAYAAAAx8TU7AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABdJREFUeNpiYGBg+M+AA9BSgkQBgAADAJIyB/kDCjAnAAAAAElFTkSuQmCC);}
540
- .ms-pattern.ms-patt-15 {background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAFCAYAAAB4ka1VAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAB9JREFUeNpiYGBg+M9ABPhPjPh/YjT9J2AipiRAgAEAhjsH+Utd9Z4AAAAASUVORK5CYII=);}
541
- /* white patterns */
542
- .ms-pattern.ms-patt-16 {background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAFAQMAAABCXz8WAAAABlBMVEUAAAD///+l2Z/dAAAAAXRSTlMAQObYZgAAABJJREFUCNdjaGBwZFBiEGHgAAAHPwEAP8TPrwAAAABJRU5ErkJggg==);}
543
- .ms-pattern.ms-patt-17 {background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAIAQMAAAALP6d4AAAABlBMVEUAAAD///+l2Z/dAAAAAXRSTlMAQObYZgAAABZJREFUCNdjaGBwYFBgEGDgAGIFBgcADegBabpJ4LsAAAAASUVORK5CYII=);}
544
- .ms-pattern.ms-patt-18 {background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAEAQMAAACTPww9AAAABlBMVEUAAAD///+l2Z/dAAAAAXRSTlMAQObYZgAAABBJREFUCNdjaGA4wPCA4QMACtgDEQ8Bqx8AAAAASUVORK5CYII=);}
545
- .ms-pattern.ms-patt-19 {background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFAQMAAAC3obSmAAAABlBMVEUAAAD///+l2Z/dAAAAAXRSTlMAQObYZgAAAA9JREFUCNdjWMDgAMRAAAAKigGBlYsMggAAAABJRU5ErkJggg==);}
546
- .ms-pattern.ms-patt-20 {background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAGAQMAAADaAn0LAAAABlBMVEUAAAD///+l2Z/dAAAAAXRSTlMAQObYZgAAAA1JREFUCNdj+ACFQAAAHgwDwds/+0oAAAAASUVORK5CYII=);}
547
- .ms-pattern.ms-patt-21 {background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFAQMAAAC3obSmAAAABlBMVEUAAAD///+l2Z/dAAAAAXRSTlMAQObYZgAAAA1JREFUCNdjOACEYAAADAoBgRrgDF0AAAAASUVORK5CYII=);}
548
- .ms-pattern.ms-patt-22 {background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAEAQMAAACTPww9AAAABlBMVEUAAAD///+l2Z/dAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjaGAAAwADiACBhux1cwAAAABJRU5ErkJggg==);}
549
- .ms-pattern.ms-patt-23 {background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAIAQMAAAAC1AcCAAAABlBMVEUAAAD///+l2Z/dAAAAAXRSTlMAQObYZgAAAA5JREFUCNdjaGAAAxgNAAsQAQHPxScOAAAAAElFTkSuQmCC);}
550
- .ms-pattern.ms-patt-24 {background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAABAQMAAADZzn0AAAAABlBMVEUAAAD///+l2Z/dAAAAAXRSTlMAQObYZgAAAApJREFUCNdj6AAAAIoAiVWdWYwAAAAASUVORK5CYII=);}
551
- .ms-pattern.ms-patt-25 {background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFAQMAAAC3obSmAAAABlBMVEUAAAD///+l2Z/dAAAAAXRSTlMAQObYZgAAABJJREFUCNdj4GBoYHBgUGAQAAAFggD5HRIFwAAAAABJRU5ErkJggg==);}
552
- .ms-pattern.ms-patt-26 {background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAADAQMAAABs5if8AAAABlBMVEUAAAD///+l2Z/dAAAAAXRSTlMAQObYZgAAAA5JREFUCNdjUGBoYHAAAAJmAOF0EZC+AAAAAElFTkSuQmCC);}
553
- .ms-pattern.ms-patt-27 {background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAEAQMAAACTPww9AAAABlBMVEUAAAD///+l2Z/dAAAAAXRSTlMAQObYZgAAABBJREFUCNdjaGAIYFBgCAAABcgBQeTzXGUAAAAASUVORK5CYII=);}
554
- .ms-pattern.ms-patt-28 {background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKAQMAAAC3/F3+AAAABlBMVEUAAAD///+l2Z/dAAAAAXRSTlMAQObYZgAAACBJREFUCNdjaGBgcHBgUGhgEGRg4GJgYAGRQDZQBCgOAC/KAvtspwwJAAAAAElFTkSuQmCC);}
555
- .ms-pattern.ms-patt-29 {background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFAQMAAAC3obSmAAAABlBMVEUAAAD///+l2Z/dAAAAAXRSTlMAQObYZgAAABJJREFUCNdjUGBwYGhg4GAQAAAFkgD5MUFnfgAAAABJRU5ErkJggg==);}
556
- .ms-pattern.ms-patt-30 {background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAADAQMAAABs5if8AAAABlBMVEUAAAD///+l2Z/dAAAAAXRSTlMAQObYZgAAAA5JREFUCNdjcGBoYFAAAALmAOHcBT11AAAAAElFTkSuQmCC);}
557
-
558
-
559
-
560
- /**
561
- * Master Slider
562
- * Default Skin
563
- */
564
-
565
- .ms-skin-default .ms-slide .ms-slide-vpbtn,
566
- .ms-skin-default .ms-video-btn{
567
- width: 50px;
568
- height: 51px;
569
- background: url(skins/light-skin-1.png) no-repeat -14px -150px;
570
- top: 50%;
571
- left: 50%;
572
- margin: -25px 0 0 -25px;
573
- }
574
-
575
- .ms-skin-default .ms-slide .ms-slide-vcbtn {
576
- width: 30px;
577
- height: 30px;
578
- background: url(skins/light-skin-1.png) no-repeat -24px -28px;
579
- top: 18px;
580
- right: 30px;
581
- }
582
-
583
- /* controls */
584
-
585
- .ms-skin-default .ms-nav-next,
586
- .ms-skin-default .ms-nav-prev {
587
- width: 30px;
588
- background: url(skins/light-skin-1.png);
589
- background-position: -89px -26px;
590
- height: 40px;
591
- cursor: pointer;
592
- top: 50%;
593
- left: 30px;
594
- margin-top: -20px;
595
- position: absolute;
596
- z-index: 110;
597
- }
598
- .ms-skin-default .ms-nav-next {
599
- right: 30px;
600
- left: auto;
601
- background-position: -89px -103px;
602
- }
603
-
604
-
605
-
606
- .ms-skin-default .ms-bullet {
607
- width: 10px;
608
- height: 10px;
609
- background: url(skins/light-skin-1.png) no-repeat;
610
- margin: 4px;
611
- background-position: -34px -117px;
612
- }
613
-
614
- .ms-skin-default .ms-bullet-selected {
615
- background-position: -34px -84px;
616
- }
617
-
618
- .ms-skin-default .ms-tooltip{
619
- position: absolute;
620
- z-index: 210;
621
- cursor: auto;
622
- }
623
-
624
- .ms-skin-default .ms-tooltip-top .ms-tooltip-arrow,
625
- .ms-skin-default .ms-tooltip-bottom .ms-tooltip-arrow{
626
- border-left: solid 10px transparent;
627
- border-right: solid 10px transparent;
628
- position: absolute;
629
- left: 50%;
630
- margin-left: -10px;
631
- }
632
-
633
- .ms-skin-default .ms-tooltip-top .ms-tooltip-arrow{
634
- border-top: solid 10px;
635
- border-top-color: silver;
636
- border-top-color: rgba(240, 240, 240, 0.88);
637
- bottom: -10px;
638
- }
639
-
640
- .ms-skin-default .ms-tooltip-bottom .ms-tooltip-arrow {
641
- border-bottom: solid 10px;
642
- border-bottom-color: silver;
643
- border-bottom-color: rgba(240, 240, 240, 0.88);
644
- top: -10px;
645
- }
646
-
647
- .ms-skin-default .ms-tooltip-right .ms-tooltip-arrow,
648
- .ms-skin-default .ms-tooltip-left .ms-tooltip-arrow{
649
- border-top: solid 10px transparent;
650
- border-bottom: solid 10px transparent;
651
- position: absolute;
652
- top: 50%;
653
- margin-top: -10px;
654
- }
655
-
656
- .ms-skin-default .ms-tooltip-right .ms-tooltip-arrow{
657
- border-right: solid 10px;
658
- border-right-color: silver;
659
- border-right-color: rgba(240, 240, 240, 0.88);
660
- left: -10px;
661
- }
662
-
663
- .ms-skin-default .ms-tooltip-left .ms-tooltip-arrow {
664
- border-left: solid 10px;
665
- border-left-color: silver;
666
- border-left-color: rgba(240, 240, 240, 0.88);
667
- right: -10px;
668
- }
669
-
670
- .ms-skin-default .ms-tooltip-point {cursor: pointer;}
671
- .ms-skin-default .ms-tooltip-point .ms-point-center {
672
- width: 12px;
673
- height: 12px;
674
- border-radius: 15px;
675
- border: solid 2px #BBB;
676
- background: white;
677
- margin: -8px 0 0 -8px;
678
- position: absolute;
679
- z-index: 105;
680
- }
681
-
682
- .ms-skin-default .ms-tooltip-point .ms-point-border {
683
- width: 22px;
684
- height: 22px;
685
- background: black;
686
- background:rgba(0, 0, 0, 0.36);
687
- margin: -11px 0 0 -11px;
688
- position: absolute;
689
- border-radius: 15px;
690
-
691
- animation: point-anim 1.5s infinite ;
692
- -moz-animation: point-anim 1.5s infinite;
693
- -webkit-animation: point-anim 1.5s infinite;
694
- -o-animation: point-anim 1.5s infinite;
695
- }
696
-
697
- .ms-skin-default .ms-tooltip {
698
- max-width:200px;
699
- }
700
-
701
- .ms-skin-default .ms-tooltip-cont {
702
- padding: 10px;
703
- background: silver;
704
- background: rgba(240, 240, 240, 0.88);
705
- text-shadow: 0 1px 0px white;
706
- margin-left: -1px;
707
- }
708
-
709
- /* retina */
710
- @media
711
- only screen and (-webkit-min-device-pixel-ratio: 2),
712
- only screen and ( min--moz-device-pixel-ratio: 2),
713
- only screen and ( -o-min-device-pixel-ratio: 2/1),
714
- only screen and ( min-device-pixel-ratio: 2),
715
- only screen and ( min-resolution: 192dpi),
716
- only screen and ( min-resolution: 2dppx) {
717
-
718
- .ms-skin-default .ms-slide .ms-slide-vpbtn,
719
- .ms-skin-default .ms-video-btn,
720
- .ms-skin-default .ms-slide .ms-slide-vcbtn,
721
- .ms-skin-default .ms-nav-next,
722
- .ms-skin-default .ms-nav-prev,
723
- .ms-skin-default .ms-bullet{
724
- background-image:url(skins/light-skin-1-retina.png);
725
- background-size: 152px 225px;
726
- }
727
-
728
- }
729
-
730
-
731
- /**
732
- * Master Slider
733
- * Black 1
734
- */
735
-
736
- .ms-skin-black-1 .ms-slide .ms-slide-vpbtn,
737
- .ms-skin-black-1 .ms-video-btn{
738
- width: 54px;
739
- height: 54px;
740
- background: url(skins/black-skin-1.png) no-repeat -14px -150px;
741
- top: 50%;
742
- left: 50%;
743
- margin: -27px 0 0 -27px;
744
- }
745
-
746
- .ms-skin-black-1 .ms-slide .ms-slide-vcbtn {
747
- width: 27px;
748
- height: 26px;
749
- background: url(skins/black-skin-1.png) no-repeat -24px -29px;
750
- top: 30px;
751
- right: 30px;
752
- }
753
-
754
- /* controls */
755
-
756
- .ms-skin-black-1 .ms-nav-next,
757
- .ms-skin-black-1 .ms-nav-prev {
758
- width: 53px;
759
- background: url(skins/black-skin-1.png);
760
- background-position: -79px -19px;
761
- height: 61px;
762
- cursor: pointer;
763
- top: 50%;
764
- left: 30px;
765
- margin-top: -26px;
766
- position: absolute;
767
- z-index: 110;
768
- }
769
- .ms-skin-black-1 .ms-nav-next {
770
- right: 30px;
771
- left: auto;
772
- background-position: -79px -97px;
773
- }
774
-
775
- .ms-skin-black-1 .ms-bullets.ms-dir-h {
776
- position: absolute;
777
- bottom: 20px;
778
- right: 50%;
779
- width: 100px;
780
- }
781
-
782
- .ms-skin-black-1 .ms-bullets.ms-dir-h .ms-bullets-count {
783
- position: relative;
784
- right: -50%;
785
- }
786
-
787
- .ms-skin-black-1 .ms-bullet {
788
- width: 9px;
789
- height: 9px;
790
- background: white;
791
- margin: 4px;
792
- border: solid 1px rgb(58, 58, 58);
793
- }
794
-
795
- .ms-skin-black-1 .ms-bullet-selected {
796
- background-color: black;
797
- }
798
-
799
- .ms-skin-black-1 .ms-tooltip{
800
- position: absolute;
801
- z-index: 210;
802
- cursor: auto;
803
- }
804
-
805
- .ms-skin-black-1 .ms-tooltip-top .ms-tooltip-arrow,
806
- .ms-skin-black-1 .ms-tooltip-bottom .ms-tooltip-arrow{
807
- border-left: solid 10px transparent;
808
- border-right: solid 10px transparent;
809
- position: absolute;
810
- left: 50%;
811
- margin-left: -10px;
812
- }
813
-
814
- .ms-skin-black-1 .ms-tooltip-top .ms-tooltip-arrow{
815
- border-top: solid 10px;
816
- border-top-color: white;
817
- border-top-color: rgba(0, 0, 0, 0.8);
818
- bottom: -10px;
819
- }
820
-
821
- .ms-skin-black-1 .ms-tooltip-bottom .ms-tooltip-arrow {
822
- border-bottom: solid 10px;
823
- border-bottom-color: white;
824
- border-bottom-color: rgba(0, 0, 0, 0.8);
825
- top: -10px;
826
- }
827
-
828
- .ms-skin-black-1 .ms-tooltip-right .ms-tooltip-arrow,
829
- .ms-skin-black-1 .ms-tooltip-left .ms-tooltip-arrow{
830
- border-top: solid 10px transparent;
831
- border-bottom: solid 10px transparent;
832
- position: absolute;
833
- top: 50%;
834
- margin-top: -10px;
835
- }
836
-
837
- .ms-skin-black-1 .ms-tooltip-right .ms-tooltip-arrow{
838
- border-right: solid 10px;
839
- border-right-color: white;
840
- border-right-color: rgba(0, 0, 0, 0.8);
841
- left: -10px;
842
- }
843
-
844
- .ms-skin-black-1 .ms-tooltip-left .ms-tooltip-arrow {
845
- border-left: solid 10px;
846
- border-left-color: black;
847
- border-left-color: rgba(0, 0, 0, 0.8);
848
- right: -10px;
849
- }
850
-
851
- .ms-skin-black-1 .ms-tooltip-point {cursor: pointer;}
852
- .ms-skin-black-1 .ms-tooltip-point .ms-point-center {
853
- width: 12px;
854
- height: 12px;
855
- border-radius: 15px;
856
- border: solid 2px #444444;
857
- background: black;
858
- margin: -8px 0 0 -8px;
859
- position: absolute;
860
- z-index: 105;
861
- }
862
-
863
- .ms-skin-black-1 .ms-tooltip-point .ms-point-border {
864
- width: 22px;
865
- height: 22px;
866
- background: white;
867
- background: rgba(255, 255, 255, 0.9);
868
- margin: -11px 0 0 -11px;
869
- position: absolute;
870
- border-radius: 15px;
871
-
872
- animation: point-anim 1.5s infinite ;
873
- -moz-animation: point-anim 1.5s infinite;
874
- -webkit-animation: point-anim 1.5s infinite;
875
- -o-animation: point-anim 1.5s infinite;
876
- }
877
-
878
- .ms-skin-black-1 .ms-tooltip {
879
- max-width:200px;
880
- }
881
-
882
- .ms-skin-black-1 .ms-tooltip-cont {
883
- padding: 10px;
884
- background: black;
885
- background: rgba(0, 0, 0, 0.8);
886
- text-shadow: 0 1px 0px black;
887
- color: white;
888
- box-shadow: 0px 1px 1px 0px rgba(0, 0, 0, 0.04);
889
- }
890
-
891
- /* retina */
892
- @media
893
- only screen and (-webkit-min-device-pixel-ratio: 2),
894
- only screen and ( min--moz-device-pixel-ratio: 2),
895
- only screen and ( -o-min-device-pixel-ratio: 2/1),
896
- only screen and ( min-device-pixel-ratio: 2),
897
- only screen and ( min-resolution: 192dpi),
898
- only screen and ( min-resolution: 2dppx) {
899
-
900
- .ms-skin-black-1 .ms-slide .ms-slide-vpbtn,
901
- .ms-skin-black-1 .ms-video-btn,
902
- .ms-skin-black-1 .ms-slide .ms-slide-vcbtn,
903
- .ms-skin-black-1 .ms-nav-next,
904
- .ms-skin-black-1 .ms-nav-prev{
905
- background-image:url(skins/black-skin-1-retina.png);
906
- background-size: 152px 225px;
907
- }
908
-
909
- }
910
-
911
-
912
- /**
913
- * Master Slider
914
- * Black 2 Skin
915
- */
916
-
917
- .ms-skin-black-2 .ms-slide .ms-slide-vpbtn,
918
- .ms-skin-black-2 .ms-video-btn{
919
- width: 45px;
920
- height: 45px;
921
- background: url(skins/black-skin-2.png) black no-repeat -16px -103px;
922
- border: solid 3px rgb(255, 255, 255);
923
- border-color: rgba(255, 255, 255, 0.4);
924
- -webkit-background-clip: padding-box;
925
- top: 50%;
926
- left: 50%;
927
- margin: -23px 0 0 -23px;
928
- }
929
-
930
- .ms-skin-black-2 .ms-slide .ms-slide-vpbtn:hover,
931
- .ms-skin-black-2 .ms-video-btn:hover{
932
- background-color: #3D3D3D;
933
- }
934
-
935
- .ms-skin-black-2 .ms-slide .ms-slide-vcbtn {
936
- width: 25px;
937
- height: 25px;
938
- background: url(skins/black-skin-2.png) black no-repeat -27px -36px;
939
- border: solid 2px white;
940
- border-color: rgba(255, 255, 255, 0.4);
941
- top: 15px;
942
- right: 15px;
943
- }
944
-
945
- .ms-skin-black-2.round-skin .ms-slide .ms-slide-vcbtn{
946
- border-radius: 50px;
947
- }
948
-
949
-
950
- /* controls */
951
-
952
- .ms-skin-black-2 .ms-nav-next,
953
- .ms-skin-black-2 .ms-nav-prev {
954
- position: absolute;
955
- cursor: pointer;
956
- z-index: 110;
957
- width: 45px;
958
- height: 45px;
959
- background: url(skins/black-skin-2.png) black;
960
- -webkit-background-clip: padding-box;
961
- -moz-background-clip: padding-box;
962
- background-clip: padding-box;
963
- background-position: -88px -26px;
964
- border: solid 3px rgb(255, 255, 255);
965
- border-color: rgba(255, 255, 255, 0.4);
966
- top: 50%;
967
- left: 30px;
968
- margin-top: -22px;
969
- }
970
-
971
- .ms-skin-black-2.round-skin .ms-nav-next,
972
- .ms-skin-black-2.round-skin .ms-nav-prev,
973
- .ms-skin-black-2.round-skin .ms-slide .ms-slide-vpbtn,
974
- .ms-skin-black-2.round-skin .ms-video-btn{
975
- border-radius: 90px;
976
- }
977
-
978
- .ms-skin-black-2 .ms-nav-next:hover,
979
- .ms-skin-black-2 .ms-nav-prev:hover{
980
- background-color: #3d3d3d;
981
- }
982
-
983
- .ms-skin-black-2 .ms-nav-next {
984
- right: 30px;
985
- left: auto;
986
- background-position: -86px -103px;
987
- }
988
-
989
- .ms-skin-black-2 .ms-bullets.ms-dir-h {
990
- position: absolute;
991
- bottom: 20px;
992
- right: 50%;
993
- width: 100px;
994
- }
995
-
996
- .ms-skin-black-2 .ms-bullets.ms-dir-h .ms-bullets-count {
997
- position: relative;
998
- right: -50%;
999
- }
1000
-
1001
- .ms-skin-black-2 .ms-bullet {
1002
- width: 8px;
1003
- height: 8px;
1004
- background: white;
1005
- -webkit-background-clip: padding-box;
1006
- -moz-background-clip: padding-box;
1007
- -ms-background-clip: padding-box;
1008
- border: solid 3px white;
1009
- border-color: rgba(0, 0, 0, 0.44);
1010
- margin: 4px;
1011
- background-position: -34px -117px;
1012
- }
1013
-
1014
- .ms-skin-black-2.round-skin .ms-bullet{
1015
- border-radius: 15px;
1016
- }
1017
-
1018
-
1019
- .ms-skin-black-2 .ms-bullet-selected {
1020
- background-color: black;
1021
- border-color: white;
1022
- border-color: rgba(255, 255, 255, 0.44);
1023
- }
1024
-
1025
- .ms-skin-black-2 .ms-tooltip{
1026
- position: absolute;
1027
- z-index: 210;
1028
- cursor: auto;
1029
- }
1030
-
1031
- .ms-skin-black-2 .ms-tooltip-top .ms-tooltip-arrow,
1032
- .ms-skin-black-2 .ms-tooltip-bottom .ms-tooltip-arrow{
1033
- border-left: solid 10px transparent;
1034
- border-right: solid 10px transparent;
1035
- position: absolute;
1036
- left: 50%;
1037
- margin-left: -10px;
1038
- }
1039
-
1040
- .ms-skin-black-2 .ms-tooltip-top .ms-tooltip-arrow{
1041
- border-top: solid 10px;
1042
- border-top-color: silver;
1043
- border-top-color: rgba(240, 240, 240, 0.88);
1044
- bottom: -10px;
1045
- }
1046
-
1047
- .ms-skin-black-2 .ms-tooltip-bottom .ms-tooltip-arrow {
1048
- border-bottom: solid 10px;
1049
- border-bottom-color: silver;
1050
- border-bottom-color: rgba(240, 240, 240, 0.88);
1051
- top: -10px;
1052
- }
1053
-
1054
- .ms-skin-black-2 .ms-tooltip-right .ms-tooltip-arrow,
1055
- .ms-skin-black-2 .ms-tooltip-left .ms-tooltip-arrow{
1056
- border-top: solid 10px transparent;
1057
- border-bottom: solid 10px transparent;
1058
- position: absolute;
1059
- top: 50%;
1060
- margin-top: -10px;
1061
- }
1062
-
1063
- .ms-skin-black-2 .ms-tooltip-right .ms-tooltip-arrow{
1064
- border-right: solid 10px;
1065
- border-right-color: silver;
1066
- border-right-color: rgba(240, 240, 240, 0.88);
1067
- left: -10px;
1068
- }
1069
-
1070
- .ms-skin-black-2 .ms-tooltip-left .ms-tooltip-arrow {
1071
- border-left: solid 10px;
1072
- border-left-color: silver;
1073
- border-left-color: rgba(240, 240, 240, 0.88);
1074
- right: -10px;
1075
- }
1076
-
1077
- .ms-skin-black-2 .ms-tooltip-point {cursor: pointer;}
1078
- .ms-skin-black-2 .ms-tooltip-point .ms-point-center {
1079
- width: 12px;
1080
- height: 12px;
1081
- border-radius: 15px;
1082
- border: solid 2px #BBB;
1083
- background: white;
1084
- margin: -8px 0 0 -8px;
1085
- position: absolute;
1086
- z-index: 105;
1087
- }
1088
-
1089
- .ms-skin-black-2 .ms-tooltip-point .ms-point-border {
1090
- width: 22px;
1091
- height: 22px;
1092
- background: black;
1093
- background:rgba(0, 0, 0, 0.36);
1094
- margin: -11px 0 0 -11px;
1095
- position: absolute;
1096
- border-radius: 15px;
1097
-
1098
- animation: point-anim 1.5s infinite ;
1099
- -moz-animation: point-anim 1.5s infinite;
1100
- -webkit-animation: point-anim 1.5s infinite;
1101
- -o-animation: point-anim 1.5s infinite;
1102
- }
1103
-
1104
- .ms-ie7.ms-skin-black-2 .ms-tooltip-point .ms-point-border,
1105
- .ms-ie8.ms-skin-black-2 .ms-tooltip-point .ms-point-border{
1106
- display: none;
1107
- }
1108
-
1109
- .ms-skin-black-2 .ms-tooltip {
1110
- max-width:200px;
1111
- }
1112
-
1113
- .ms-skin-black-2 .ms-tooltip-cont {
1114
- padding: 10px;
1115
- background: silver;
1116
- background: rgba(240, 240, 240, 0.88);
1117
- text-shadow: 0 1px 0px white;
1118
- box-shadow: 0px 1px 1px 0px rgba(0, 0, 0, 0.04);
1119
- }
1120
-
1121
- /* retina */
1122
- @media
1123
- only screen and (-webkit-min-device-pixel-ratio: 2),
1124
- only screen and ( min--moz-device-pixel-ratio: 2),
1125
- only screen and ( -o-min-device-pixel-ratio: 2/1),
1126
- only screen and ( min-device-pixel-ratio: 2),
1127
- only screen and ( min-resolution: 192dpi),
1128
- only screen and ( min-resolution: 2dppx) {
1129
-
1130
- .ms-skin-black-2 .ms-slide .ms-slide-vpbtn,
1131
- .ms-skin-black-2 .ms-video-btn,
1132
- .ms-skin-black-2 .ms-slide .ms-slide-vcbtn,
1133
- .ms-skin-black-2 .ms-nav-next,
1134
- .ms-skin-black-2 .ms-nav-prev{
1135
- background-image:url(skins/black-skin-2-retina.png);
1136
- background-size: 152px 225px;
1137
- }
1138
-
1139
- }
1140
-
1141
-
1142
- /**
1143
- * Master Slider
1144
- * Light 2
1145
- */
1146
-
1147
- .ms-skin-light-2 .ms-slide .ms-slide-vpbtn,
1148
- .ms-skin-light-2 .ms-video-btn{
1149
- width: 54px;
1150
- height: 54px;
1151
- background: url(skins/light-skin-2.png) no-repeat -14px -150px;
1152
- top: 50%;
1153
- left: 50%;
1154
- margin: -27px 0 0 -27px;
1155
- }
1156
-
1157
- .ms-skin-light-2 .ms-slide .ms-slide-vcbtn {
1158
- width: 27px;
1159
- height: 26px;
1160
- background: url(skins/light-skin-2.png) no-repeat -24px -29px;
1161
- top: 30px;
1162
- right: 30px;
1163
- }
1164
-
1165
- /* controls */
1166
-
1167
- .ms-skin-light-2 .ms-nav-next,
1168
- .ms-skin-light-2 .ms-nav-prev {
1169
- width: 53px;
1170
- background: url(skins/light-skin-2.png);
1171
- background-position: -79px -19px;
1172
- height: 61px;
1173
- cursor: pointer;
1174
- top: 50%;
1175
- left: 30px;
1176
- margin-top: -26px;
1177
- position: absolute;
1178
- z-index: 110;
1179
- }
1180
- .ms-skin-light-2 .ms-nav-next {
1181
- right: 30px;
1182
- left: auto;
1183
- background-position: -79px -97px;
1184
- }
1185
-
1186
- .ms-skin-light-2 .ms-bullets.ms-dir-h {
1187
- position: absolute;
1188
- bottom: 20px;
1189
- right: 50%;
1190
- width: 100px;
1191
- }
1192
-
1193
- .ms-skin-light-2 .ms-bullets.ms-dir-h .ms-bullets-count {
1194
- position: relative;
1195
- right: -50%;
1196
- }
1197
-
1198
- .ms-skin-light-2 .ms-bullet {
1199
- width: 9px;
1200
- height: 9px;
1201
- background: black;
1202
- margin: 4px;
1203
- border: solid 1px rgb(58, 58, 58);
1204
- }
1205
-
1206
- .ms-skin-light-2 .ms-bullet-selected {
1207
- background-color: white;
1208
- }
1209
-
1210
- .ms-skin-light-2 .ms-tooltip{
1211
- position: absolute;
1212
- z-index: 210;
1213
- cursor: auto;
1214
- }
1215
-
1216
- .ms-skin-light-2 .ms-tooltip-top .ms-tooltip-arrow,
1217
- .ms-skin-light-2 .ms-tooltip-bottom .ms-tooltip-arrow{
1218
- border-left: solid 10px transparent;
1219
- border-right: solid 10px transparent;
1220
- position: absolute;
1221
- left: 50%;
1222
- margin-left: -10px;
1223
- }
1224
-
1225
- .ms-skin-light-2 .ms-tooltip-top .ms-tooltip-arrow{
1226
- border-top: solid 10px;
1227
- border-top-color: silver;
1228
- border-top-color: rgba(240, 240, 240, 0.88);
1229
- bottom: -10px;
1230
- }
1231
-
1232
- .ms-skin-light-2 .ms-tooltip-bottom .ms-tooltip-arrow {
1233
- border-bottom: solid 10px;
1234
- border-bottom-color: silver;
1235
- border-bottom-color: rgba(240, 240, 240, 0.88);
1236
- top: -10px;
1237
- }
1238
-
1239
- .ms-skin-light-2 .ms-tooltip-right .ms-tooltip-arrow,
1240
- .ms-skin-light-2 .ms-tooltip-left .ms-tooltip-arrow{
1241
- border-top: solid 10px transparent;
1242
- border-bottom: solid 10px transparent;
1243
- position: absolute;
1244
- top: 50%;
1245
- margin-top: -10px;
1246
- }
1247
-
1248
- .ms-skin-light-2 .ms-tooltip-right .ms-tooltip-arrow{
1249
- border-right: solid 10px;
1250
- border-right-color: silver;
1251
- border-right-color: rgba(240, 240, 240, 0.88);
1252
- left: -10px;
1253
- }
1254
-
1255
- .ms-skin-light-2 .ms-tooltip-left .ms-tooltip-arrow {
1256
- border-left: solid 10px;
1257
- border-left-color: silver;
1258
- border-left-color: rgba(240, 240, 240, 0.88);
1259
- right: -10px;
1260
- }
1261
-
1262
- .ms-skin-light-2 .ms-tooltip-point {cursor: pointer;}
1263
- .ms-skin-light-2 .ms-tooltip-point .ms-point-center {
1264
- width: 12px;
1265
- height: 12px;
1266
- border-radius: 15px;
1267
- border: solid 2px #BBB;
1268
- background: white;
1269
- margin: -8px 0 0 -8px;
1270
- position: absolute;
1271
- z-index: 105;
1272
- }
1273
-
1274
- .ms-skin-light-2 .ms-tooltip-point .ms-point-border {
1275
- width: 22px;
1276
- height: 22px;
1277
- background: black;
1278
- background:rgba(0, 0, 0, 0.36);
1279
- margin: -11px 0 0 -11px;
1280
- position: absolute;
1281
- border-radius: 15px;
1282
-
1283
- animation: point-anim 1.5s infinite ;
1284
- -moz-animation: point-anim 1.5s infinite;
1285
- -webkit-animation: point-anim 1.5s infinite;
1286
- -o-animation: point-anim 1.5s infinite;
1287
- }
1288
-
1289
- .ms-skin-light-2 .ms-tooltip {
1290
- max-width:200px;
1291
- }
1292
-
1293
- .ms-skin-light-2 .ms-tooltip-cont {
1294
- padding: 10px;
1295
- background: silver;
1296
- background: rgba(240, 240, 240, 0.88);
1297
- text-shadow: 0 1px 0px white;
1298
- box-shadow: 0px 1px 1px 0px rgba(0, 0, 0, 0.04);
1299
- }
1300
-
1301
- /* retina */
1302
- @media
1303
- only screen and (-webkit-min-device-pixel-ratio: 2),
1304
- only screen and ( min--moz-device-pixel-ratio: 2),
1305
- only screen and ( -o-min-device-pixel-ratio: 2/1),
1306
- only screen and ( min-device-pixel-ratio: 2),
1307
- only screen and ( min-resolution: 192dpi),
1308
- only screen and ( min-resolution: 2dppx) {
1309
-
1310
- .ms-skin-light-2 .ms-slide .ms-slide-vpbtn,
1311
- .ms-skin-light-2 .ms-video-btn,
1312
- .ms-skin-light-2 .ms-slide .ms-slide-vcbtn,
1313
- .ms-skin-light-2 .ms-nav-next,
1314
- .ms-skin-light-2 .ms-nav-prev{
1315
- background-image:url(skins/light-skin-2-retina.png);
1316
- background-size: 152px 225px;
1317
- }
1318
-
1319
- }
1320
-
1321
-
1322
-
1323
- /**
1324
- * Master Slider
1325
- * Light 3
1326
- */
1327
-
1328
- .ms-skin-light-3 .ms-slide .ms-slide-vpbtn,
1329
- .ms-skin-light-3 .ms-video-btn{
1330
- width: 50px;
1331
- height: 50px;
1332
- background: url(skins/light-skin-3.png) no-repeat -15px -149px;
1333
- top: 50%;
1334
- left: 50%;
1335
- margin: -25px 0 0 -25px;
1336
- }
1337
-
1338
- .ms-skin-light-3 .ms-slide .ms-slide-vcbtn {
1339
- width: 31px;
1340
- height: 29px;
1341
- background: url(skins/light-skin-3.png) no-repeat -26px -28px;
1342
- top: 30px;
1343
- right: 30px;
1344
- }
1345
-
1346
- /* controls */
1347
-
1348
- .ms-skin-light-3 .ms-nav-next,
1349
- .ms-skin-light-3 .ms-nav-prev {
1350
- width: 50px;
1351
- background: url(skins/light-skin-3.png);
1352
- background-position: -82px -22px;
1353
- height: 50px;
1354
- cursor: pointer;
1355
- top: 50%;
1356
- left: 30px;
1357
- margin-top: -25px;
1358
- position: absolute;
1359
- z-index: 110;
1360
- }
1361
- .ms-skin-light-3 .ms-nav-next {
1362
- right: 30px;
1363
- left: auto;
1364
- background-position: -81px -99px;
1365
- }
1366
-
1367
- .ms-skin-light-3 .ms-bullets.ms-dir-h {
1368
- position: absolute;
1369
- bottom: 20px;
1370
- right: 50%;
1371
- width: 100px;
1372
- }
1373
-
1374
- .ms-skin-light-3 .ms-bullets.ms-dir-h .ms-bullets-count {
1375
- position: relative;
1376
- right: -50%;
1377
- }
1378
-
1379
- .ms-skin-light-3 .ms-bullet {
1380
- width: 16px;
1381
- height: 16px;
1382
- background: url(skins/light-skin-3.png) no-repeat;
1383
- background-position: -31px -114px;
1384
- margin: 4px;
1385
- }
1386
-
1387
- .ms-skin-light-3 .ms-bullet-selected {
1388
- background-position: -31px -81px;
1389
- }
1390
-
1391
- .ms-skin-light-3 .ms-tooltip{
1392
- position: absolute;
1393
- z-index: 210;
1394
- cursor: auto;
1395
- }
1396
-
1397
- .ms-skin-light-3 .ms-tooltip-top .ms-tooltip-arrow,
1398
- .ms-skin-light-3 .ms-tooltip-bottom .ms-tooltip-arrow{
1399
- border-left: solid 10px transparent;
1400
- border-right: solid 10px transparent;
1401
- position: absolute;
1402
- left: 50%;
1403
- margin-left: -10px;
1404
- }
1405
-
1406
- .ms-skin-light-3 .ms-tooltip-top .ms-tooltip-arrow{
1407
- border-top: solid 10px;
1408
- border-top-color: silver;
1409
- border-top-color: rgba(240, 240, 240, 0.88);
1410
- bottom: -10px;
1411
- }
1412
-
1413
- .ms-skin-light-3 .ms-tooltip-bottom .ms-tooltip-arrow {
1414
- border-bottom: solid 10px;
1415
- border-bottom-color: silver;
1416
- border-bottom-color: rgba(240, 240, 240, 0.88);
1417
- top: -10px;
1418
- }
1419
-
1420
- .ms-skin-light-3 .ms-tooltip-right .ms-tooltip-arrow,
1421
- .ms-skin-light-3 .ms-tooltip-left .ms-tooltip-arrow{
1422
- border-top: solid 10px transparent;
1423
- border-bottom: solid 10px transparent;
1424
- position: absolute;
1425
- top: 50%;
1426
- margin-top: -10px;
1427
- }
1428
-
1429
- .ms-skin-light-3 .ms-tooltip-right .ms-tooltip-arrow{
1430
- border-right: solid 10px;
1431
- border-right-color: silver;
1432
- border-right-color: rgba(240, 240, 240, 0.88);
1433
- left: -10px;
1434
- }
1435
-
1436
- .ms-skin-light-3 .ms-tooltip-left .ms-tooltip-arrow {
1437
- border-left: solid 10px;
1438
- border-left-color: silver;
1439
- border-left-color: rgba(240, 240, 240, 0.88);
1440
- right: -10px;
1441
- }
1442
-
1443
- .ms-skin-light-3 .ms-tooltip-point {cursor: pointer;}
1444
- .ms-skin-light-3 .ms-tooltip-point .ms-point-center {
1445
- width: 12px;
1446
- height: 12px;
1447
- border-radius: 15px;
1448
- border: solid 2px #BBB;
1449
- background: white;
1450
- margin: -8px 0 0 -8px;
1451
- position: absolute;
1452
- z-index: 105;
1453
- }
1454
-
1455
- .ms-skin-light-3 .ms-tooltip-point .ms-point-border {
1456
- width: 22px;
1457
- height: 22px;
1458
- background: black;
1459
- background:rgba(0, 0, 0, 0.36);
1460
- margin: -11px 0 0 -11px;
1461
- position: absolute;
1462
- border-radius: 15px;
1463
-
1464
- animation: point-anim 1.5s infinite ;
1465
- -moz-animation: point-anim 1.5s infinite;
1466
- -webkit-animation: point-anim 1.5s infinite;
1467
- -o-animation: point-anim 1.5s infinite;
1468
- }
1469
-
1470
- .ms-skin-light-3 .ms-tooltip {
1471
- max-width:200px;
1472
- }
1473
-
1474
- .ms-skin-light-3 .ms-tooltip-cont {
1475
- padding: 10px;
1476
- background: silver;
1477
- background: rgba(240, 240, 240, 0.88);
1478
- text-shadow: 0 1px 0px white;
1479
- box-shadow: 0px 1px 1px 0px rgba(0, 0, 0, 0.04);
1480
- }
1481
-
1482
- /* retina */
1483
- @media
1484
- only screen and (-webkit-min-device-pixel-ratio: 2),
1485
- only screen and ( min--moz-device-pixel-ratio: 2),
1486
- only screen and ( -o-min-device-pixel-ratio: 2/1),
1487
- only screen and ( min-device-pixel-ratio: 2),
1488
- only screen and ( min-resolution: 192dpi),
1489
- only screen and ( min-resolution: 2dppx) {
1490
-
1491
- .ms-skin-light-3 .ms-slide .ms-slide-vpbtn,
1492
- .ms-skin-light-3 .ms-video-btn,
1493
- .ms-skin-light-3 .ms-slide .ms-slide-vcbtn,
1494
- .ms-skin-light-3 .ms-nav-next,
1495
- .ms-skin-light-3 .ms-nav-prev,
1496
- .ms-skin-light-3 .ms-bullet{
1497
- background-image:url(skins/light-skin-3-retina.png);
1498
- background-size: 152px 225px;
1499
- }
1500
-
1501
- }
1502
-
1503
-
1504
-
1505
- /**
1506
- * Master Slider
1507
- * Light 4
1508
- */
1509
-
1510
- .ms-skin-light-4 .ms-slide .ms-slide-vpbtn,
1511
- .ms-skin-light-4 .ms-video-btn{
1512
- width: 54px;
1513
- height: 54px;
1514
- background: url(skins/light-skin-4.png) no-repeat -14px -150px;
1515
- top: 50%;
1516
- left: 50%;
1517
- margin: -27px 0 0 -27px;
1518
- }
1519
-
1520
- .ms-skin-light-4 .ms-slide .ms-slide-vcbtn {
1521
- width: 27px;
1522
- height: 26px;
1523
- background: url(skins/light-skin-4.png) no-repeat -24px -29px;
1524
- top: 30px;
1525
- right: 30px;
1526
- }
1527
-
1528
- /* controls */
1529
-
1530
- .ms-skin-light-4 .ms-nav-next,
1531
- .ms-skin-light-4 .ms-nav-prev {
1532
- width: 54px;
1533
- background: url(skins/light-skin-4.png);
1534
- background-position: -77px -5px;
1535
- height: 68px;
1536
- cursor: pointer;
1537
- top: 50%;
1538
- left: -27px;
1539
- margin-top: -40px;
1540
- position: absolute;
1541
- z-index: 110;
1542
- }
1543
- .ms-skin-light-4 .ms-nav-next {
1544
- right: -27px;
1545
- left: auto;
1546
- background-position: -79px -83px;
1547
- }
1548
-
1549
- .ms-skin-light-4 .ms-thumb-frame-selected {
1550
- opacity: 0.6;
1551
- }
1552
-
1553
- .ms-skin-light-4 .ms-thumb-list.ms-dir-h {
1554
- bottom: -60px;
1555
- width: 100%;
1556
- height: 60px;
1557
- }
1558
-
1559
- .ms-skin-light-4 .ms-thumb-list.ms-dir-v {
1560
- height: 100%;
1561
- width: 60px;
1562
- right: -60px;
1563
- top: 0;
1564
- }
1565
-
1566
- .ms-skin-light-4 .ms-thumb-frame {
1567
- cursor: pointer;
1568
- float: left;
1569
- width: 60px;
1570
- height: 60px;
1571
- margin: 1px 0 0 1px;
1572
- overflow: hidden;
1573
- }
1574
-
1575
- .ms-skin-light-4 .ms-bullets.ms-dir-h {
1576
- position: absolute;
1577
- bottom: 20px;
1578
- right: 50%;
1579
- width: 100px;
1580
- }
1581
-
1582
- .ms-skin-light-4 .ms-bullets.ms-dir-h .ms-bullets-count {
1583
- position: relative;
1584
- right: -50%;
1585
- }
1586
-
1587
- .ms-skin-light-4 .ms-bullet {
1588
- width: 9px;
1589
- height: 9px;
1590
- background: #b9b9b9;
1591
- margin: 4px;
1592
- border: solid 1px rgb(163, 163, 163);
1593
- }
1594
-
1595
- .ms-skin-light-4 .ms-bullet-selected {
1596
- background-color: white;
1597
- }
1598
-
1599
- .ms-skin-light-4 .ms-tooltip{
1600
- position: absolute;
1601
- z-index: 210;
1602
- cursor: auto;
1603
- }
1604
-
1605
- .ms-skin-light-4 .ms-tooltip-top .ms-tooltip-arrow,
1606
- .ms-skin-light-4 .ms-tooltip-bottom .ms-tooltip-arrow{
1607
- border-left: solid 10px transparent;
1608
- border-right: solid 10px transparent;
1609
- position: absolute;
1610
- left: 50%;
1611
- margin-left: -10px;
1612
- }
1613
-
1614
- .ms-skin-light-4 .ms-tooltip-top .ms-tooltip-arrow{
1615
- border-top: solid 10px;
1616
- border-top-color: silver;
1617
- border-top-color: rgba(240, 240, 240, 0.88);
1618
- bottom: -10px;
1619
- }
1620
-
1621
- .ms-skin-light-4 .ms-tooltip-bottom .ms-tooltip-arrow {
1622
- border-bottom: solid 10px;
1623
- border-bottom-color: silver;
1624
- border-bottom-color: rgba(240, 240, 240, 0.88);
1625
- top: -10px;
1626
- }
1627
-
1628
- .ms-skin-light-4 .ms-tooltip-right .ms-tooltip-arrow,
1629
- .ms-skin-light-4 .ms-tooltip-left .ms-tooltip-arrow{
1630
- border-top: solid 10px transparent;
1631
- border-bottom: solid 10px transparent;
1632
- position: absolute;
1633
- top: 50%;
1634
- margin-top: -10px;
1635
- }
1636
-
1637
- .ms-skin-light-4 .ms-tooltip-right .ms-tooltip-arrow{
1638
- border-right: solid 10px;
1639
- border-right-color: silver;
1640
- border-right-color: rgba(240, 240, 240, 0.88);
1641
- left: -10px;
1642
- }
1643
-
1644
- .ms-skin-light-4 .ms-tooltip-left .ms-tooltip-arrow {
1645
- border-left: solid 10px;
1646
- border-left-color: white;
1647
- border-left-color: rgba(240, 240, 240, 0.88);
1648
- right: -10px;
1649
- }
1650
-
1651
- .ms-skin-light-4 .ms-tooltip-point {cursor: pointer;}
1652
- .ms-skin-light-4 .ms-tooltip-point .ms-point-center {
1653
- width: 12px;
1654
- height: 12px;
1655
- border-radius: 15px;
1656
- border: solid 2px #E0E0E0;
1657
- background: #4b8aac;
1658
- margin: -8px 0 0 -8px;
1659
- position: absolute;
1660
- z-index: 105;
1661
- }
1662
-
1663
- .ms-skin-light-4 .ms-tooltip-point .ms-point-border {
1664
- width: 22px;
1665
- height: 22px;
1666
- background: white;
1667
- margin: -11px 0 0 -11px;
1668
- position: absolute;
1669
- border-radius: 15px;
1670
-
1671
- animation: point-anim 1.5s infinite ;
1672
- -moz-animation: point-anim 1.5s infinite;
1673
- -webkit-animation: point-anim 1.5s infinite;
1674
- -o-animation: point-anim 1.5s infinite;
1675
- }
1676
-
1677
-
1678
- .ms-skin-light-4 .ms-tooltip {
1679
- max-width:200px;
1680
- }
1681
-
1682
- .ms-skin-light-4 .ms-tooltip-cont {
1683
- padding: 10px;
1684
- background: silver;
1685
- background: rgba(240, 240, 240, 0.88);
1686
- text-shadow: 0 1px 0px white;
1687
- box-shadow: 0px 1px 1px 0px rgba(0, 0, 0, 0.04);
1688
- }
1689
-
1690
- /* retina */
1691
- @media
1692
- only screen and (-webkit-min-device-pixel-ratio: 2),
1693
- only screen and ( min--moz-device-pixel-ratio: 2),
1694
- only screen and ( -o-min-device-pixel-ratio: 2/1),
1695
- only screen and ( min-device-pixel-ratio: 2),
1696
- only screen and ( min-resolution: 192dpi),
1697
- only screen and ( min-resolution: 2dppx) {
1698
-
1699
- .ms-skin-light-4 .ms-slide .ms-slide-vpbtn,
1700
- .ms-skin-light-4 .ms-video-btn,
1701
- .ms-skin-light-4 .ms-slide .ms-slide-vcbtn,
1702
- .ms-skin-light-4 .ms-nav-next,
1703
- .ms-skin-light-4 .ms-nav-prev{
1704
- background-image:url(skins/light-skin-4-retina.png);
1705
- background-size: 152px 225px;
1706
- }
1707
-
1708
- }
1709
-
1710
-
1711
-
1712
- /**
1713
- * Master Slider
1714
- * Light 5
1715
- */
1716
-
1717
- .ms-skin-light-5 .ms-slide .ms-slide-vpbtn,
1718
- .ms-skin-light-5 .ms-video-btn{
1719
- width: 32px;
1720
- height: 32px;
1721
- background: url(skins/light-skin-5.png) black no-repeat -24px -160px;
1722
- top: 50%;
1723
- left: 50%;
1724
- margin: -18px 0 0 -18px;
1725
- }
1726
-
1727
- .ms-skin-light-5 .ms-slide .ms-slide-vpbtn:hover,
1728
- .ms-skin-light-5 .ms-video-btn:hover{
1729
- background-color:#646464;
1730
- }
1731
-
1732
- .ms-skin-light-5 .ms-slide .ms-slide-vcbtn {
1733
- width: 30px;
1734
- height: 30px;
1735
- background: url(skins/light-skin-5.png) white no-repeat -24px -28px;
1736
- top: 18px;
1737
- right: 30px;
1738
- }
1739
-
1740
- /* controls */
1741
-
1742
- .ms-skin-light-5 .ms-nav-next,
1743
- .ms-skin-light-5 .ms-nav-prev {
1744
- width: 32px;
1745
- background: url(skins/light-skin-5.png) white;
1746
- background-position: -94px -32px;
1747
- height: 32px;
1748
- cursor: pointer;
1749
- bottom: 40px;
1750
- left: 40px;
1751
- margin-top: -20px;
1752
- position: absolute;
1753
- z-index: 110;
1754
- }
1755
-
1756
- .ms-skin-light-5 .ms-nav-next:hover,
1757
- .ms-skin-light-5 .ms-nav-prev:hover{
1758
- background-color:#E0E0E0;
1759
- }
1760
-
1761
- .ms-skin-light-5 .ms-nav-next {
1762
- left: 73px;
1763
- background-position: -93px -110px;
1764
- }
1765
-
1766
- .ms-skin-light-5 .ms-bullets.ms-dir-h {
1767
- position: absolute;
1768
- bottom: 20px;
1769
- right: 50%;
1770
- width: 100px;
1771
- }
1772
-
1773
- .ms-skin-light-5 .ms-bullets.ms-dir-h .ms-bullets-count {
1774
- position: relative;
1775
- right: -50%;
1776
- }
1777
-
1778
- .ms-skin-light-5 .ms-bullet {
1779
- width: 10px;
1780
- height: 10px;
1781
- background: url(skins/light-skin-5.png) no-repeat;
1782
- margin: 4px;
1783
- background-position: -34px -117px;
1784
- }
1785
-
1786
- .ms-skin-light-5 .ms-bullet-selected {
1787
- background-position: -34px -84px;
1788
- }
1789
-
1790
- .ms-skin-light-5 .ms-tooltip{
1791
- position: absolute;
1792
- z-index: 210;
1793
- cursor: auto;
1794
- }
1795
-
1796
- .ms-skin-light-5 .ms-tooltip-top .ms-tooltip-arrow,
1797
- .ms-skin-light-5 .ms-tooltip-bottom .ms-tooltip-arrow{
1798
- border-left: solid 10px transparent;
1799
- border-right: solid 10px transparent;
1800
- position: absolute;
1801
- left: 50%;
1802
- margin-left: -10px;
1803
- }
1804
-
1805
- .ms-skin-light-5 .ms-tooltip-top .ms-tooltip-arrow{
1806
- border-top: solid 10px;
1807
- border-top-color: silver;
1808
- border-top-color: rgba(240, 240, 240, 0.88);
1809
- bottom: -10px;
1810
- }
1811
-
1812
- .ms-skin-light-5 .ms-tooltip-bottom .ms-tooltip-arrow {
1813
- border-bottom: solid 10px;
1814
- border-bottom-color: silver;
1815
- border-bottom-color: rgba(240, 240, 240, 0.88);
1816
- top: -10px;
1817
- }
1818
-
1819
- .ms-skin-light-5 .ms-tooltip-right .ms-tooltip-arrow,
1820
- .ms-skin-light-5 .ms-tooltip-left .ms-tooltip-arrow{
1821
- border-top: solid 10px transparent;
1822
- border-bottom: solid 10px transparent;
1823
- position: absolute;
1824
- top: 50%;
1825
- margin-top: -10px;
1826
- }
1827
-
1828
- .ms-skin-light-5 .ms-tooltip-right .ms-tooltip-arrow{
1829
- border-right: solid 10px;
1830
- border-right-color: silver;
1831
- border-right-color: rgba(240, 240, 240, 0.88);
1832
- left: -10px;
1833
- }
1834
-
1835
- .ms-skin-light-5 .ms-tooltip-left .ms-tooltip-arrow {
1836
- border-left: solid 10px;
1837
- border-left-color: silver;
1838
- border-left-color: rgba(240, 240, 240, 0.88);
1839
- right: -10px;
1840
- }
1841
-
1842
- .ms-skin-light-5 .ms-tooltip-point {cursor: pointer;}
1843
- .ms-skin-light-5 .ms-tooltip-point .ms-point-center {
1844
- width: 12px;
1845
- height: 12px;
1846
- border-radius: 15px;
1847
- border: solid 2px #BBB;
1848
- background: white;
1849
- margin: -8px 0 0 -8px;
1850
- position: absolute;
1851
- z-index: 105;
1852
- }
1853
-
1854
- .ms-skin-light-5 .ms-tooltip-point .ms-point-border {
1855
- width: 22px;
1856
- height: 22px;
1857
- background: black;
1858
- background:rgba(0, 0, 0, 0.36);
1859
- margin: -11px 0 0 -11px;
1860
- position: absolute;
1861
- border-radius: 15px;
1862
-
1863
- animation: point-anim 1.5s infinite ;
1864
- -moz-animation: point-anim 1.5s infinite;
1865
- -webkit-animation: point-anim 1.5s infinite;
1866
- -o-animation: point-anim 1.5s infinite;
1867
- }
1868
-
1869
- /* In Android browser, using css animations over slider causes some crashes */
1870
- .ms-android.ms-skin-light-5 .ms-tooltip-point .ms-point-border{
1871
- animation:none;
1872
- -moz-animation:none;
1873
- -webkit-animation:none;
1874
- -o-animation:none;
1875
- }
1876
-
1877
- .ms-ie7.ms-skin-light-5 .ms-tooltip-point .ms-point-border,
1878
- .ms-ie8.ms-skin-light-5 .ms-tooltip-point .ms-point-border{
1879
- display: none;
1880
- }
1881
-
1882
- .ms-skin-light-5 .ms-tooltip {
1883
- max-width:200px;
1884
- }
1885
-
1886
- .ms-skin-light-5 .ms-tooltip-cont {
1887
- padding: 10px;
1888
- background: silver;
1889
- background: rgba(240, 240, 240, 0.88);
1890
- text-shadow: 0 1px 0px white;
1891
- box-shadow: 0px 1px 1px 0px rgba(0, 0, 0, 0.04);
1892
- }
1893
-
1894
- /* retina */
1895
- @media
1896
- only screen and (-webkit-min-device-pixel-ratio: 2),
1897
- only screen and ( min--moz-device-pixel-ratio: 2),
1898
- only screen and ( -o-min-device-pixel-ratio: 2/1),
1899
- only screen and ( min-device-pixel-ratio: 2),
1900
- only screen and ( min-resolution: 192dpi),
1901
- only screen and ( min-resolution: 2dppx) {
1902
-
1903
- .ms-skin-light-5 .ms-slide .ms-slide-vpbtn,
1904
- .ms-skin-light-5 .ms-video-btn,
1905
- .ms-skin-light-5 .ms-slide .ms-slide-vcbtn,
1906
- .ms-skin-light-5 .ms-nav-next,
1907
- .ms-skin-light-5 .ms-nav-prev{
1908
- background-image:url(skins/light-skin-5-retina.png);
1909
- background-size: 152px 225px;
1910
- }
1911
-
1912
- }
1913
-
1914
-
1915
-
1916
- /**
1917
- * Master Slider
1918
- * Light-6 Skin
1919
- */
1920
-
1921
- .ms-skin-light-6 .ms-slide .ms-slide-vpbtn,
1922
- .ms-skin-light-6 .ms-video-btn{
1923
- width: 45px;
1924
- height: 45px;
1925
- background: url(skins/light-skin-6.png) white no-repeat -16px -103px;
1926
- border: solid 3px rgb(112, 112, 112); border-color: rgba(0, 0, 0, 0.27);
1927
- -webkit-background-clip: padding-box;
1928
- top: 50%;
1929
- left: 50%;
1930
- margin: -23px 0 0 -23px;
1931
- }
1932
-
1933
- .ms-skin-light-6 .ms-slide .ms-slide-vpbtn:hover,
1934
- .ms-skin-light-6 .ms-video-btn:hover{
1935
- background-color:#E0E0E0;
1936
- }
1937
-
1938
- .ms-skin-light-6 .ms-slide .ms-slide-vcbtn {
1939
- width: 25px;
1940
- height: 25px;
1941
- background: url(skins/light-skin-6.png) white no-repeat -27px -36px;
1942
- top: 15px;
1943
- right: 15px;
1944
- }
1945
-
1946
- .ms-skin-light-6.round-skin .ms-slide .ms-slide-vcbtn{
1947
- border-radius: 30px;
1948
- }
1949
-
1950
-
1951
- /* controls */
1952
-
1953
- .ms-skin-light-6 .ms-nav-next,
1954
- .ms-skin-light-6 .ms-nav-prev {
1955
- position: absolute;
1956
- cursor: pointer;
1957
- z-index: 110;
1958
- width: 45px;
1959
- height: 45px;
1960
- background: url(skins/light-skin-6.png) white;
1961
- -webkit-background-clip: padding-box;
1962
- -moz-background-clip: padding-box;
1963
- background-clip: padding-box;
1964
- background-position: -88px -26px;
1965
- border: solid 3px rgb(112, 112, 112);
1966
- border-color: rgba(0, 0, 0, 0.27);
1967
- top: 50%;
1968
- left: 30px;
1969
- margin-top: -22px;
1970
- }
1971
-
1972
- .ms-skin-light-6.round-skin .ms-nav-next,
1973
- .ms-skin-light-6.round-skin .ms-nav-prev,
1974
- .ms-skin-light-6.round-skin .ms-slide .ms-slide-vpbtn,
1975
- .ms-skin-light-6.round-skin .ms-video-btn{
1976
- border-radius: 90px;
1977
- }
1978
-
1979
- .ms-skin-light-6 .ms-nav-next:hover,
1980
- .ms-skin-light-6 .ms-nav-prev:hover{
1981
- background-color:#E0E0E0;
1982
- }
1983
-
1984
- .ms-skin-light-6 .ms-nav-next {
1985
- right: 30px;
1986
- left: auto;
1987
- background-position: -86px -103px;
1988
- }
1989
-
1990
-
1991
- .ms-skin-light-6 .ms-bullets.ms-dir-h {
1992
- position: absolute;
1993
- bottom: 20px;
1994
- right: 50%;
1995
- width: 100px;
1996
- }
1997
-
1998
- .ms-skin-light-6 .ms-bullets.ms-dir-h .ms-bullets-count {
1999
- position: relative;
2000
- right: -50%;
2001
- }
2002
-
2003
- .ms-skin-light-6 .ms-bullet {
2004
- width: 8px;
2005
- height: 8px;
2006
- background: black;
2007
- -webkit-background-clip: padding-box;
2008
- border: solid 3px white;
2009
- border-color: rgba(255, 255, 255, 0.44);
2010
- margin: 4px;
2011
- background-position: -34px -117px;
2012
- }
2013
-
2014
- .ms-skin-light-6.round-skin .ms-bullet{
2015
- border-radius: 15px;
2016
- }
2017
-
2018
- .ms-skin-light-6 .ms-bullet-selected {
2019
- background-color: white;
2020
- border-color: black;
2021
- border-color: rgba(0, 0, 0, 0.44);
2022
- }
2023
-
2024
- .ms-skin-light-6 .ms-tooltip{
2025
- position: absolute;
2026
- z-index: 210;
2027
- cursor: auto;
2028
- }
2029
-
2030
- .ms-skin-light-6 .ms-tooltip-top .ms-tooltip-arrow,
2031
- .ms-skin-light-6 .ms-tooltip-bottom .ms-tooltip-arrow{
2032
- border-left: solid 10px transparent;
2033
- border-right: solid 10px transparent;
2034
- position: absolute;
2035
- left: 50%;
2036
- margin-left: -10px;
2037
- }
2038
-
2039
- .ms-skin-light-6 .ms-tooltip-top .ms-tooltip-arrow{
2040
- border-top: solid 10px;
2041
- border-top-color: silver;
2042
- border-top-color: rgba(240, 240, 240, 0.88);
2043
- bottom: -10px;
2044
- }
2045
-
2046
- .ms-skin-light-6 .ms-tooltip-bottom .ms-tooltip-arrow {
2047
- border-bottom: solid 10px;
2048
- border-bottom-color: silver;
2049
- border-bottom-color: rgba(240, 240, 240, 0.88);
2050
- top: -10px;
2051
- }
2052
-
2053
- .ms-skin-light-6 .ms-tooltip-right .ms-tooltip-arrow,
2054
- .ms-skin-light-6 .ms-tooltip-left .ms-tooltip-arrow{
2055
- border-top: solid 10px transparent;
2056
- border-bottom: solid 10px transparent;
2057
- position: absolute;
2058
- top: 50%;
2059
- margin-top: -10px;
2060
- }
2061
-
2062
- .ms-skin-light-6 .ms-tooltip-right .ms-tooltip-arrow{
2063
- border-right: solid 10px;
2064
- border-right-color: silver;
2065
- border-right-color: rgba(240, 240, 240, 0.88);
2066
- left: -10px;
2067
- }
2068
-
2069
- .ms-skin-light-6 .ms-tooltip-left .ms-tooltip-arrow {
2070
- border-left: solid 10px;
2071
- border-left-color: silver;
2072
- border-left-color: rgba(240, 240, 240, 0.88);
2073
- right: -10px;
2074
- }
2075
-
2076
- .ms-skin-light-6 .ms-tooltip-point {cursor: pointer;}
2077
- .ms-skin-light-6 .ms-tooltip-point .ms-point-center {
2078
- width: 12px;
2079
- height: 12px;
2080
- border-radius: 15px;
2081
- border: solid 2px #BBB;
2082
- background: white;
2083
- margin: -8px 0 0 -8px;
2084
- position: absolute;
2085
- z-index: 105;
2086
- }
2087
-
2088
- .ms-skin-light-6 .ms-tooltip-point .ms-point-border {
2089
- width: 22px;
2090
- height: 22px;
2091
- background: black;
2092
- background:rgba(0, 0, 0, 0.36);
2093
- margin: -11px 0 0 -11px;
2094
- position: absolute;
2095
- border-radius: 15px;
2096
-
2097
- animation: point-anim 1.5s infinite ;
2098
- -moz-animation: point-anim 1.5s infinite;
2099
- -webkit-animation: point-anim 1.5s infinite;
2100
- -o-animation: point-anim 1.5s infinite;
2101
- }
2102
-
2103
- .ms-ie7.ms-skin-light-6 .ms-tooltip-point .ms-point-border,
2104
- .ms-ie8.ms-skin-light-6 .ms-tooltip-point .ms-point-border{
2105
- display: none;
2106
- }
2107
-
2108
- .ms-skin-light-6 .ms-tooltip {
2109
- max-width:200px;
2110
- }
2111
-
2112
- .ms-skin-light-6 .ms-tooltip-cont {
2113
- padding: 10px;
2114
- background: silver;
2115
- background: rgba(240, 240, 240, 0.88);
2116
- text-shadow: 0 1px 0px white;
2117
- box-shadow: 0px 1px 1px 0px rgba(0, 0, 0, 0.04);
2118
- }
2119
-
2120
- /* retina */
2121
- @media
2122
- only screen and (-webkit-min-device-pixel-ratio: 2),
2123
- only screen and ( min--moz-device-pixel-ratio: 2),
2124
- only screen and ( -o-min-device-pixel-ratio: 2/1),
2125
- only screen and ( min-device-pixel-ratio: 2),
2126
- only screen and ( min-resolution: 192dpi),
2127
- only screen and ( min-resolution: 2dppx) {
2128
-
2129
- .ms-skin-light-6 .ms-slide .ms-slide-vpbtn,
2130
- .ms-skin-light-6 .ms-video-btn,
2131
- .ms-skin-light-6 .ms-slide .ms-slide-vcbtn,
2132
- .ms-skin-light-6 .ms-nav-next,
2133
- .ms-skin-light-6 .ms-nav-prev{
2134
- background-image:url(skins/light-skin-6-retina.png);
2135
- background-size: 152px 225px;
2136
- }
2137
-
2138
- }
2139
-
2140
-
2141
-
2142
- /**
2143
- * Master Slider
2144
- * Metro Skin
2145
- */
2146
-
2147
- .ms-skin-metro .ms-slide .ms-slide-vpbtn,
2148
- .ms-skin-metro .ms-video-btn{
2149
- width: 47px;
2150
- height: 46px;
2151
- background: url(skins/metro-skin.png) no-repeat -16px -152px;
2152
- top: 50%;
2153
- left: 50%;
2154
- margin: -22px 0 0 -24px;
2155
- }
2156
-
2157
- .ms-skin-metro .ms-slide .ms-slide-vcbtn {
2158
- width: 47px;
2159
- height: 47px;
2160
- background: url(skins/metro-skin.png) no-repeat -16px -19px;
2161
- top: 15px;
2162
- right: 15px;
2163
- }
2164
-
2165
- /* controls */
2166
-
2167
- .ms-skin-metro .ms-nav-next,
2168
- .ms-skin-metro .ms-nav-prev {
2169
- width: 47px;
2170
- background: url(skins/metro-skin.png);
2171
- background-position: -83px -23px;
2172
- height: 47px;
2173
- cursor: pointer;
2174
- top: 50%;
2175
- left: 30px;
2176
- margin-top: -24px;
2177
- position: absolute;
2178
- z-index: 110;
2179
- }
2180
- .ms-skin-metro .ms-nav-next {
2181
- right: 30px;
2182
- left: auto;
2183
- background-position: -81px -100px;
2184
- }
2185
-
2186
- .ms-skin-metro .ms-bullets.ms-dir-h {
2187
- position: absolute;
2188
- bottom: 20px;
2189
- right: 50%;
2190
- width: 100px;
2191
- }
2192
-
2193
- .ms-skin-metro .ms-bullets.ms-dir-h .ms-bullets-count {
2194
- position: relative;
2195
- right: -50%;
2196
- }
2197
-
2198
- .ms-skin-metro .ms-bullet {
2199
- width: 16px;
2200
- height: 16px;
2201
- background: url(skins/metro-skin.png) no-repeat;
2202
- background-position: -31px -114px;
2203
- margin: 4px;
2204
- }
2205
-
2206
- .ms-skin-metro .ms-bullet-selected {
2207
- background-position: -31px -81px;
2208
- }
2209
-
2210
- .ms-skin-metro .ms-tooltip{
2211
- position: absolute;
2212
- z-index: 210;
2213
- cursor: auto;
2214
- }
2215
-
2216
- .ms-skin-metro .ms-tooltip-top .ms-tooltip-arrow,
2217
- .ms-skin-metro .ms-tooltip-bottom .ms-tooltip-arrow{
2218
- border-left: solid 10px transparent;
2219
- border-right: solid 10px transparent;
2220
- position: absolute;
2221
- left: 50%;
2222
- margin-left: -10px;
2223
- }
2224
-
2225
- .ms-skin-metro .ms-tooltip-top .ms-tooltip-arrow{
2226
- border-top: solid 10px;
2227
- border-top-color: silver;
2228
- border-top-color: rgba(240, 240, 240, 0.88);
2229
- bottom: -10px;
2230
- }
2231
-
2232
- .ms-skin-metro .ms-tooltip-bottom .ms-tooltip-arrow {
2233
- border-bottom: solid 10px;
2234
- border-bottom-color: silver;
2235
- border-bottom-color: rgba(240, 240, 240, 0.88);
2236
- top: -10px;
2237
- }
2238
-
2239
- .ms-skin-metro .ms-tooltip-right .ms-tooltip-arrow,
2240
- .ms-skin-metro .ms-tooltip-left .ms-tooltip-arrow{
2241
- border-top: solid 10px transparent;
2242
- border-bottom: solid 10px transparent;
2243
- position: absolute;
2244
- top: 50%;
2245
- margin-top: -10px;
2246
- }
2247
-
2248
- .ms-skin-metro .ms-tooltip-right .ms-tooltip-arrow{
2249
- border-right: solid 10px;
2250
- border-right-color: silver;
2251
- border-right-color: rgba(240, 240, 240, 0.88);
2252
- left: -10px;
2253
- }
2254
-
2255
- .ms-skin-metro .ms-tooltip-left .ms-tooltip-arrow {
2256
- border-left: solid 10px;
2257
- border-left-color: silver;
2258
- border-left-color: rgba(240, 240, 240, 0.88);
2259
- right: -10px;
2260
- }
2261
-
2262
- .ms-skin-metro .ms-tooltip-point {cursor: pointer;}
2263
- .ms-skin-metro .ms-tooltip-point .ms-point-center {
2264
- width: 12px;
2265
- height: 12px;
2266
- border-radius: 15px;
2267
- border: solid 2px #BBB;
2268
- background: white;
2269
- margin: -8px 0 0 -8px;
2270
- position: absolute;
2271
- z-index: 105;
2272
- }
2273
-
2274
- .ms-skin-metro .ms-tooltip-point .ms-point-border {
2275
- width: 22px;
2276
- height: 22px;
2277
- background: black;
2278
- background:rgba(0, 0, 0, 0.36);
2279
- margin: -11px 0 0 -11px;
2280
- position: absolute;
2281
- border-radius: 15px;
2282
-
2283
- animation: point-anim 1.5s infinite ;
2284
- -moz-animation: point-anim 1.5s infinite;
2285
- -webkit-animation: point-anim 1.5s infinite;
2286
- -o-animation: point-anim 1.5s infinite;
2287
- }
2288
-
2289
- .ms-skin-metro .ms-tooltip {
2290
- max-width:200px;
2291
- }
2292
-
2293
- .ms-skin-metro .ms-tooltip-cont {
2294
- padding: 10px;
2295
- background: silver;
2296
- background: rgba(240, 240, 240, 0.88);
2297
- text-shadow: 0 1px 0px white;
2298
- box-shadow: 0px 1px 1px 0px rgba(0, 0, 0, 0.04);
2299
- }
2300
-
2301
- /* retina */
2302
- @media
2303
- only screen and (-webkit-min-device-pixel-ratio: 2),
2304
- only screen and ( min--moz-device-pixel-ratio: 2),
2305
- only screen and ( -o-min-device-pixel-ratio: 2/1),
2306
- only screen and ( min-device-pixel-ratio: 2),
2307
- only screen and ( min-resolution: 192dpi),
2308
- only screen and ( min-resolution: 2dppx) {
2309
-
2310
- .ms-skin-metro .ms-slide .ms-slide-vpbtn,
2311
- .ms-skin-metro .ms-video-btn,
2312
- .ms-skin-metro .ms-slide .ms-slide-vcbtn,
2313
- .ms-skin-metro .ms-nav-next,
2314
- .ms-skin-metro .ms-nav-prev,
2315
- .ms-skin-metro .ms-bullet{
2316
- background-image:url(skins/metro-skin-retina.png);
2317
- background-size: 152px 225px;
2318
- }
2319
-
2320
- }
2321
-
2322
-
2323
- /**
2324
- * Master Slider
2325
- * Contrast
2326
- */
2327
-
2328
- .ms-skin-contrast .ms-slide .ms-slide-vpbtn,
2329
- .ms-skin-contrast .ms-video-btn{
2330
- width: 60px;
2331
- height: 60px;
2332
- background: url(skins/contrast-skin.png) no-repeat -10px -144px;
2333
- top: 50%;
2334
- left: 50%;
2335
- margin: -30px 0 0 -30px;
2336
- }
2337
-
2338
- .ms-skin-contrast .ms-slide .ms-slide-vcbtn {
2339
- width: 24px;
2340
- height: 24px;
2341
- background: url(skins/contrast-skin.png) no-repeat -27px -30px;
2342
- top: 30px;
2343
- right: 30px;
2344
- }
2345
-
2346
- /* controls */
2347
-
2348
- .ms-skin-contrast .ms-nav-next,
2349
- .ms-skin-contrast .ms-nav-prev {
2350
- width: 60px;
2351
- background: url(skins/contrast-skin.png);
2352
- background-position: -76px -17px;
2353
- height: 60px;
2354
- cursor: pointer;
2355
- top: 50%;
2356
- left: 30px;
2357
- margin-top: -30px;
2358
- position: absolute;
2359
- z-index: 110;
2360
- }
2361
- .ms-skin-contrast .ms-nav-next {
2362
- right: 30px;
2363
- left: auto;
2364
- background-position: -77px -91px;
2365
- }
2366
-
2367
- .ms-skin-contrast .ms-bullets.ms-dir-h {
2368
- position: absolute;
2369
- bottom: 20px;
2370
- right: 50%;
2371
- width: 100px;
2372
- }
2373
-
2374
- .ms-skin-contrast .ms-bullets.ms-dir-h .ms-bullets-count {
2375
- position: relative;
2376
- right: -50%;
2377
- }
2378
-
2379
- .ms-skin-contrast .ms-bullet {
2380
- width: 16px;
2381
- height: 16px;
2382
- background: url(skins/contrast-skin.png) no-repeat;
2383
- background-position: -31px -114px;
2384
- margin: 4px;
2385
- }
2386
-
2387
- .ms-skin-contrast .ms-bullet-selected {
2388
- background-position: -31px -81px;
2389
- }
2390
-
2391
- .ms-skin-contrast .ms-tooltip{
2392
- position: absolute;
2393
- z-index: 210;
2394
- cursor: auto;
2395
- }
2396
-
2397
- .ms-skin-contrast .ms-tooltip-top .ms-tooltip-arrow,
2398
- .ms-skin-contrast .ms-tooltip-bottom .ms-tooltip-arrow{
2399
- border-left: solid 10px transparent;
2400
- border-right: solid 10px transparent;
2401
- position: absolute;
2402
- left: 50%;
2403
- margin-left: -10px;
2404
- }
2405
-
2406
- .ms-skin-contrast .ms-tooltip-top .ms-tooltip-arrow{
2407
- border-top: solid 10px;
2408
- border-top-color: #fc3116;
2409
- border-top-color: rgba(252, 49, 22, 0.8);
2410
- bottom: -10px;
2411
- }
2412
-
2413
- .ms-skin-contrast .ms-tooltip-bottom .ms-tooltip-arrow {
2414
- border-bottom: solid 10px;
2415
- border-bottom-color: #fc3116;
2416
- border-bottom-color: rgba(252, 49, 22, 0.8);
2417
- top: -10px;
2418
- }
2419
-
2420
- .ms-skin-contrast .ms-tooltip-right .ms-tooltip-arrow,
2421
- .ms-skin-contrast .ms-tooltip-left .ms-tooltip-arrow{
2422
- border-top: solid 10px transparent;
2423
- border-bottom: solid 10px transparent;
2424
- position: absolute;
2425
- top: 50%;
2426
- margin-top: -10px;
2427
- }
2428
-
2429
- .ms-skin-contrast .ms-tooltip-right .ms-tooltip-arrow{
2430
- border-right: solid 10px;
2431
- border-right-color: #fc3116;
2432
- border-right-color: rgba(252, 49, 22, 0.8);
2433
- left: -10px;
2434
- }
2435
-
2436
- .ms-skin-contrast .ms-tooltip-left .ms-tooltip-arrow {
2437
- border-left: solid 10px;
2438
- border-left-color: #fc3116;
2439
- border-left-color: rgba(252, 49, 22, 0.8);
2440
- right: -10px;
2441
- }
2442
-
2443
- .ms-skin-contrast .ms-tooltip-point {cursor: pointer;}
2444
- .ms-skin-contrast .ms-tooltip-point .ms-point-center {
2445
- width: 12px;
2446
- height: 12px;
2447
- border-radius: 15px;
2448
- border: solid 2px #636363;
2449
- background: black;
2450
- margin: -8px 0 0 -8px;
2451
- position: absolute;
2452
- z-index: 105;
2453
- }
2454
-
2455
- .ms-skin-contrast .ms-tooltip-point .ms-point-border {
2456
- width: 22px;
2457
- height: 22px;
2458
- background: white;
2459
- background: rgba(255, 255, 255, 0.99);
2460
- margin: -11px 0 0 -11px;
2461
- position: absolute;
2462
- border-radius: 15px;
2463
-
2464
- animation: point-anim 1.5s infinite ;
2465
- -moz-animation: point-anim 1.5s infinite;
2466
- -webkit-animation: point-anim 1.5s infinite;
2467
- -o-animation: point-anim 1.5s infinite;
2468
- }
2469
-
2470
- .ms-skin-contrast .ms-tooltip {
2471
- max-width:200px;
2472
- }
2473
-
2474
- .ms-skin-contrast .ms-tooltip-cont {
2475
- padding: 10px;
2476
- background: #fc3116;
2477
- background: rgba(252, 49, 22, 0.8);
2478
- text-shadow: 0 1px 0px rgba(0, 0, 0, 0.4);
2479
- color: white;
2480
- box-shadow: 0px 1px 1px 0px rgba(0, 0, 0, 0.04);
2481
- }
2482
-
2483
- /* retina */
2484
- @media
2485
- only screen and (-webkit-min-device-pixel-ratio: 2),
2486
- only screen and ( min--moz-device-pixel-ratio: 2),
2487
- only screen and ( -o-min-device-pixel-ratio: 2/1),
2488
- only screen and ( min-device-pixel-ratio: 2),
2489
- only screen and ( min-resolution: 192dpi),
2490
- only screen and ( min-resolution: 2dppx) {
2491
-
2492
- .ms-skin-contrast .ms-slide .ms-slide-vpbtn,
2493
- .ms-skin-contrast .ms-video-btn,
2494
- .ms-skin-contrast .ms-slide .ms-slide-vcbtn,
2495
- .ms-skin-contrast .ms-nav-next,
2496
- .ms-skin-contrast .ms-nav-prev,
2497
- .ms-skin-contrast .ms-bullet{
2498
- background-image:url(skins/contrast-skin-retina.png);
2499
- background-size: 152px 225px;
2500
- }
2501
-
2502
- }
 
1
+ /*!
2
  * Master Slider WordPress Lite Main CSS File
3
  * @date Jun 2015
4
  */
5
 
6
 
7
 
8
+ /**
9
+ * Master Slider
10
+ * Main css file
11
+ */
12
+
13
+ .master-slider{
14
+ position: relative;
15
+ visibility: hidden;
16
+ -moz-transform: translate3d(0 , 0 , 0);
17
+ }
18
+
19
+
20
+
21
+ .ms-ie img{border:none;}
22
+ .ms-ie8 * {opacity:inherit;filter:inherit;}
23
+ .ms-ie7 {zoom:1;}
24
+
25
+ .ms-moz .ms-slide-bgcont>img { transform: translateX(0px); }
26
+
27
+ .master-slider a,
28
+ .master-slider a:hover {
29
+ -webkit-transition: none;
30
+ -o-transition: none;
31
+ transition: none;
32
+ }
33
+
34
+ .wpb_row .master-slider-parent *,
35
+ .master-slider-parent * {
36
+ -webkit-box-sizing: content-box;
37
+ -moz-box-sizing: content-box;
38
+ box-sizing: content-box;
39
+ }
40
+
41
+ .master-slider-parent {
42
+ margin-left: auto;
43
+ margin-right: auto;
44
+ }
45
+
46
+ .ms-layout-partialview .ms-view {
47
+ overflow: visible;
48
+ background-color:transparent;
49
+ }
50
+
51
+ .ms-layout-partialview .ms-container { overflow: hidden; }
52
+
53
+ .master-slider.before-init{}
54
+
55
+ .ms-loading-container{
56
+ position:absolute;
57
+ width:100%;
58
+ top:0;
59
+ }
60
+
61
+ .ms-loading-container .ms-loading,
62
+ .ms-slide .ms-slide-loading {
63
+ width: 36px;
64
+ height: 36px;
65
+ background: url(common/loading-2.gif) no-repeat center white;
66
+ border-radius: 60px;
67
+ box-shadow: 0px 0px 3px rgba(0,0,0,0.2);
68
+ position: absolute;
69
+ left: 50%;
70
+ top: 50%;
71
+ margin: -18px;
72
+ opacity: 0.9;
73
+ }
74
+
75
+
76
+ /* grab cursor */
77
+ .ms-def-cursor{cursor:auto !important;}
78
+ .ms-grab-cursor{cursor: url(common/grab.png), move;}
79
+ .ms-grabbing-cursor{cursor: url(common/grabbing.png), move;}
80
+ .ms-ie .ms-grab-cursor{cursor: move;}
81
+ .ms-ie .ms-grabbing-cursor {cursor: move;}
82
+
83
+ .ms-view {
84
+ margin:0px auto;
85
+ overflow:hidden;
86
+
87
+ position:relative;
88
+ -webkit-perspective: 2000px;
89
+ -moz-perspective: 2000px;
90
+ -ms-perspective: 2000px;
91
+ perspective: 2000px;
92
+ }
93
+
94
+ .ms-view .ms-slide-container{position:relative;}
95
+
96
+ .ms-slide {
97
+ position:absolute;
98
+ height:100%;
99
+ -webkit-transform: translateZ(0px);
100
+ -ms-transform: translateZ(0px);
101
+ -o-transform: translateZ(0px);
102
+ transform: translateZ(0px);
103
+ }
104
+
105
+ .ms-wk .ms-slide {
106
+ -webkit-transform-style: preserve-3d;
107
+ transform-style: preserve-3d;
108
+ }
109
+
110
+ .ms-slide.selected {}
111
+
112
+ .ms-slide .ms-slide-bgcont,
113
+ .ms-slide .ms-slide-bgvideocont{
114
+ position: absolute;
115
+ overflow:hidden;
116
+ width: 100%;
117
+ }
118
+
119
+ .ms-slide .ms-slide-link {
120
+ display: block;
121
+ width: 100%;
122
+ height: 100%;
123
+ position: absolute;
124
+ top:0;
125
+ z-index: 110;
126
+ }
127
+
128
+ .ms-ie .ms-slide-link {
129
+ background: url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBR‌​AA7") 0 0 repeat;
130
+ }
131
+
132
+
133
+ .ms-slide .ms-slide-bgvideocont{
134
+ z-index: 105;
135
+ height: 100%;
136
+ }
137
+
138
+ .ms-wk .ms-slide .ms-slide-bgvideocont,
139
+ .ms-wk .ms-slide-bgvideocont>video{
140
+ -webkit-transform: translateZ(0.3px);
141
+ transform: translateZ(0.3px);
142
+ }
143
+
144
+ .ms-slide .ms-slide-bgvideo{
145
+ position: absolute;
146
+ top: 0px;
147
+ }
148
+
149
+
150
+ .ms-inner-controls-cont, .ms-container {position: relative; margin:0 auto;}
151
+ .ms-slide .ms-slide-bgcont img , .ms-container , .ms-inner-controls-cont{
152
+ -webkit-user-select:none;
153
+ -moz-user-select:none;
154
+ -ms-user-select:none;
155
+ user-select:none;
156
+ }
157
+
158
+ .ms-slide .ms-slide-video{
159
+ position:absolute;
160
+ top:0;
161
+ z-index: 111;
162
+ background:black;
163
+ padding:0;
164
+ margin: 0;
165
+ border: none;
166
+
167
+ }
168
+
169
+
170
+ .ms-slide .ms-pattern{
171
+ background-attachment: scroll;
172
+ width: 100%;
173
+ height: 100%;
174
+ z-index: 108;
175
+ position: absolute;
176
+ top: 0;
177
+ }
178
+
179
+ .ms-wk .ms-pattern{
180
+ -webkit-transform: translateZ(0.4px);
181
+ transform: translateZ(0.4px);
182
+ }
183
+
184
+ .ms-slide .ms-slide-vpbtn , .ms-slide .ms-video-btn{
185
+ position:absolute;
186
+ cursor: pointer;
187
+ z-index: 110;
188
+ }
189
+
190
+ .ms-slide .ms-slide-vcbtn{
191
+ position:absolute;
192
+ cursor: pointer;
193
+ z-index: 113;
194
+ }
195
+
196
+ .ms-slide-vcbtn-mobile{
197
+ position: relative;
198
+ bottom: 0;
199
+ left:0;
200
+ width:100%;
201
+ height: 28px;
202
+ background-color: black;
203
+ color: white;
204
+ text-align: center;
205
+ cursor: pointer;
206
+ z-index: 113;
207
+ }
208
+
209
+ .ms-slide-vcbtn-mobile .ms-vcbtn-txt {
210
+ text-transform: uppercase;
211
+ font-family: sans-serif;
212
+ font-size: 0.75em;
213
+ display: inline-block;
214
+ background: url(common/video-close-btn.png) no-repeat 0px 3px;
215
+ padding-left: 15px;
216
+ height: 15px;
217
+ color: #DBDBDB;
218
+ margin-top: 7px;
219
+ }
220
+
221
+ .ms-wk .ms-slide .ms-slide-vcbtn,
222
+ .ms-wk .ms-slide .ms-slide-layers,
223
+ .ms-wk .ms-slide .ms-slide-vpbtn,
224
+ .ms-wk .ms-slide .ms-slide-video,
225
+ .ms-wk .ms-slide-link {
226
+ -webkit-transform: translateZ(0.44px);
227
+ transform: translateZ(0.44px);
228
+ }
229
+
230
+ .ms-video-img{
231
+ position:absolute;
232
+ width:100%;
233
+ height:100%;
234
+ top:0;
235
+ left:0;
236
+ }
237
+
238
+ .ms-mask-frame{
239
+ overflow:hidden;
240
+ position:absolute;
241
+ float:left;
242
+ }
243
+
244
+ /* controls */
245
+
246
+ .ms-thumb-list{
247
+ overflow:hidden;
248
+ position:absolute;
249
+ }
250
+
251
+ .ms-thumb-list.ms-dir-h {width: 100%;}
252
+ .ms-thumb-list.ms-dir-v {height: 100%; top: 0;}
253
+ .ms-thumbs-cont{position: relative;}
254
+ .ms-thumb-frame img{width:100%; height:auto;}
255
+ .ms-thumb-frame{
256
+ cursor: pointer;
257
+ float: left;
258
+ overflow: hidden;
259
+ opacity: 0.5;
260
+ -webkit-transition: opacity 300ms;
261
+ -moz-transition: opacity 300ms;
262
+ -ms-transition: opacity 300ms;
263
+ -o-transition: opacity 300ms;
264
+ transition: opacity 300ms;
265
+ }
266
+ .ms-thumb-frame-selected{ opacity: 1; }
267
+
268
+ .ms-tabs .ms-thumb-frame {
269
+ background-color: #F6f6f6;
270
+ text-shadow: 0 1px 1px white;
271
+ color: #222;
272
+ border: solid 1px white;
273
+ border-width: 0 1px 1px 0;
274
+ overflow: visible;
275
+ position: relative;
276
+ opacity: 1;
277
+ -webkit-transition: all 300ms ease-out;
278
+ -moz-transition: all 300ms ease-out;
279
+ -ms-transition: all 300ms ease-out;
280
+ -o-transition: all 300ms ease-out;
281
+ transition: all 300ms ease-out;
282
+ }
283
+
284
+ .ms-tabs.ms-has-thumb .ms-tab-thumb{ width:auto; }
285
+ .ms-tabs.ms-dir-h .ms-thumb-frame {margin-top: 12px;}
286
+ .ms-tabs.ms-dir-v .ms-thumb-frame {margin-left: 12px;}
287
+ .ms-tabs.ms-dir-v.ms-align-left .ms-thumb-frame {margin-left: 0px;}
288
+ .ms-tabs.ms-dir-h.ms-align-top {z-index: 140;}
289
+ .ms-tabs.ms-dir-h.ms-align-top .ms-thumb-frame{margin-top: -12px;}
290
+ .ms-tabs .ms-thumb{padding: 20px 20px;}
291
+ .ms-tabs .ms-thumb-frame-selected { opacity: 1; background: #EDEDED;}
292
+ .ms-tabs .ms-thumb-frame .ms-thumb-ol {
293
+ position: absolute;
294
+ opacity: 0;
295
+ -webkit-transition: all 300ms ease-out;
296
+ -moz-transition: all 300ms ease-out;
297
+ -ms-transition: all 300ms ease-out;
298
+ -o-transition: all 300ms ease-out;
299
+ transition: all 300ms ease-out;
300
+ }
301
+
302
+ .ms-tabs.ms-dir-h .ms-thumb-frame .ms-thumb-ol {
303
+ top: 0px;
304
+ left: 50%;
305
+ margin-left: -12px;
306
+ border-bottom: solid 12px #F6f6f6;
307
+ border-left: solid 12px transparent;
308
+ border-right: solid 12px transparent;
309
+ }
310
+
311
+ .ms-tabs.ms-dir-h.ms-align-bottom .ms-thumb-frame-selected .ms-thumb-ol{
312
+ opacity: 1;
313
+ top:-12px;
314
+ border-bottom-color: #EDEDED;
315
+ }
316
+
317
+ .ms-tabs.ms-dir-h.ms-align-top .ms-thumb-frame .ms-thumb-ol {
318
+ bottom: 0px;
319
+ top:auto;
320
+ border-bottom:0px;
321
+ border-top: solid 12px #F6f6f6;
322
+ }
323
+
324
+ .ms-tabs.ms-dir-h.ms-align-top .ms-thumb-frame-selected .ms-thumb-ol{
325
+ opacity: 1;
326
+ bottom:-12px;
327
+ border-top-color: #EDEDED;
328
+ }
329
+
330
+ .ms-tabs.ms-dir-v .ms-thumb-frame .ms-thumb-ol {
331
+ top: 50%;
332
+ left: 0;
333
+ margin-top: -12px;
334
+ border-right: solid 12px #EDEDED;
335
+ border-top: solid 12px transparent;
336
+ border-bottom: solid 12px transparent;
337
+ }
338
+
339
+ .ms-tabs.ms-dir-v.ms-align-right .ms-thumb-frame-selected .ms-thumb-ol{
340
+ opacity: 1;
341
+ left:-12px;
342
+ border-right-color:#EDEDED;
343
+ }
344
+
345
+ .ms-tabs.ms-dir-v.ms-align-left .ms-thumb-frame .ms-thumb-ol {
346
+ left: auto;
347
+ right: 0;
348
+ border-right: 0;
349
+ border-left: solid 12px #EDEDED;
350
+ }
351
+
352
+ .ms-tabs.ms-dir-v.ms-align-left .ms-thumb-frame-selected .ms-thumb-ol{
353
+ opacity: 1;
354
+ right:-12px;
355
+ border-left-color:#EDEDED;
356
+ }
357
+
358
+ .ms-thumb-alt {
359
+ text-align: center;
360
+ margin: 5px;
361
+ font-size: 14px;
362
+ font-weight: 600;
363
+ }
364
+
365
+ /* horizontal thumblist arrows*/
366
+ .ms-thumb-list.ms-dir-h .ms-thumblist-fwd, .ms-thumb-list.ms-dir-h .ms-thumblist-bwd {
367
+ height: 100%;
368
+ width: 20px;
369
+ position: absolute;
370
+ left: 0;
371
+ cursor: pointer;
372
+ background: rgba(128, 128, 128, 0.5);
373
+ text-align: center;
374
+ color: white;
375
+ }
376
+
377
+ .ms-thumb-list.ms-dir-h .ms-thumblist-bwd {
378
+ right: 0;
379
+ left: auto;
380
+ }
381
+
382
+ .ms-thumb-list.ms-dir-h .ms-thumblist-fwd:after, .ms-thumb-list.ms-dir-h .ms-thumblist-bwd:after {
383
+ content: close-quote;
384
+ top: 43%;
385
+ position: relative;
386
+ border: solid rgba(0, 0, 0, 0);
387
+ border-width: 5px 5px 5px 0px;
388
+ display: block;
389
+ border-right-color: #FFF;
390
+ width: 6px;
391
+ height: 1px;
392
+ }
393
+
394
+ .ms-thumb-list.ms-dir-h .ms-thumblist-bwd:after {
395
+ border-width: 5px 0px 5px 5px;
396
+ border-left-color: #FFF;
397
+ left: 7px;
398
+ }
399
+
400
+ /* vertical thumblist arrows */
401
+ .ms-thumb-list.ms-dir-v .ms-thumblist-fwd, .ms-thumb-list.ms-dir-v .ms-thumblist-bwd {
402
+ width: 100%;
403
+ height: 20px;
404
+ position: absolute;
405
+ top: 0;
406
+ cursor: pointer;
407
+ background: rgba(128, 128, 128, 0.5);
408
+ text-align: center;
409
+ color: white;
410
+ }
411
+
412
+ .ms-thumb-list.ms-dir-v .ms-thumblist-bwd {
413
+ bottom: 0;
414
+ top: auto;
415
+ }
416
+
417
+ .ms-thumb-list.ms-dir-v .ms-thumblist-fwd:after, .ms-thumb-list.ms-dir-v .ms-thumblist-bwd:after {
418
+ content: close-quote;
419
+ left: 43%;
420
+ position: relative;
421
+ border: solid rgba(0, 0, 0, 0);
422
+ border-width: 0px 5px 5px 5px;
423
+ display: block;
424
+ border-bottom-color: #FFF;
425
+ height: 1px;
426
+ top: 5px;
427
+ width: 0;
428
+ }
429
+
430
+ .ms-thumb-list.ms-dir-v .ms-thumblist-bwd:after {
431
+ border-width: 5px 5px 0px 5px;
432
+ border-top-color: #FFF;
433
+ top: 7px;
434
+ }
435
+
436
+ /* Thumb in tab styles */
437
+ .ms-tabs.ms-dir-v.ms-has-thumb .ms-thumbs-cont{ top:0 !important; }
438
+ .ms-tabs.ms-has-thumb .ms-thumb-frame{ height: auto !important; }
439
+ .ms-tabs.ms-has-thumb .ms-thumb{ padding:0; }
440
+ .ms-tabs.ms-has-thumb .ms-tab-context{ padding:20px; }
441
+ .ms-tabs.ms-align-left .ms-tab-thumb{ float:left; margin-right:20px; }
442
+ .ms-tabs.ms-align-right .ms-tab-thumb{ float:right; margin-left: 20px; }
443
+
444
+ .ms-bullet{cursor:pointer;float: left;}
445
+ .ms-bullets.ms-dir-h {
446
+ position: absolute;
447
+ bottom: 20px;
448
+ right: 50%;
449
+ width: 100px;
450
+ }
451
+
452
+ .ms-bullets.ms-dir-v {
453
+ position: absolute;
454
+ top:50%;
455
+ }
456
+
457
+ .ms-bullets.ms-dir-v .ms-bullet{
458
+ float: none;
459
+ }
460
+ .ms-bullets.ms-dir-h .ms-bullets-count {
461
+ position: relative;
462
+ right: -50%;
463
+ }
464
+
465
+ .ms-sbar {position: absolute;}
466
+ .ms-sbar.ms-dir-h {
467
+ left: 10px;
468
+ right: 10px;
469
+ top: 5px
470
+ }
471
+
472
+ .ms-sbar.ms-dir-v {
473
+ top: 10px;
474
+ bottom: 10px;
475
+ right: 5px
476
+ }
477
+
478
+ .ms-sbar .ms-bar {
479
+ height: 4px;
480
+ background: #333;
481
+ border-radius: 4px;
482
+ }
483
+
484
+ .ms-sbar.ms-dir-v .ms-bar { width: 4px;}
485
+
486
+ .ms-sbar .ms-bar{
487
+ position:relative;
488
+ -webkit-transition: opacity 300ms;
489
+ -moz-transition: opacity 300ms;
490
+ -ms-transition: opacity 300ms;
491
+ -o-transition: opacity 300ms;
492
+ transition: opacity 300ms;
493
+ }
494
+
495
+ .ms-timerbar {
496
+ width: 100%;
497
+ bottom: 0px;
498
+ position: absolute;
499
+ }
500
+
501
+ .ms-ctimer {
502
+ position: absolute;
503
+ top: 30px;
504
+ left: 30px;
505
+ cursor: pointer;
506
+ }
507
+
508
+ .ms-ctimer-bullet {}
509
+
510
+ .ms-time-bar{
511
+ -webkit-transition: width 120ms linear;
512
+ -moz-transition: width 120ms linear;
513
+ -ms-transition: width 120ms linear;
514
+ -o-transition: width 120ms linear;
515
+ transition: width 120ms linear;
516
+ }
517
+
518
+ .ms-ie7 .ms-tooltip-arrow{
519
+ height:0px;
520
+ }
521
+
522
+ .ms-slide-info {position: absolute;}
523
+ .ms-slide-info.ms-dir-v {top:0;}
524
+ .ms-slide-info.ms-dir-h {width:100%;}
525
+ .ms-slide-info .ms-info-empty{display:none;}
526
+
527
+ .ms-pattern.ms-patt-1 {background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAADCAYAAABWKLW/AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABRJREFUeNpiYICA/wzoDGTwHyDAADXxAv4Eq8S5AAAAAElFTkSuQmCC);}
528
+ .ms-pattern.ms-patt-2 {background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABhJREFUeNpiYECA/wxogLAANoBdF0CAAQD+agT8l3ocpQAAAABJRU5ErkJggg==);}
529
+ .ms-pattern.ms-patt-3 {background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACxJREFUeNqU0EENAAAMwkD8m+4s7PhCCmHbGijxE0jS1HOOhxJSUhf9eAIMAI/CEe94Ny14AAAAAElFTkSuQmCC);}
530
+ .ms-pattern.ms-patt-4 {background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAYAAACp8Z5+AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABhJREFUeNpiYGBg+M+ABfxHo3Fz/gMEGACtlgX7j8MuyAAAAABJRU5ErkJggg==);}
531
+ .ms-pattern.ms-patt-5 {background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAADCAYAAABWKLW/AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABNJREFUeNpiYECA/3CCAV0UIMAANfEC/mOKn1cAAAAASUVORK5CYII=);}
532
+ .ms-pattern.ms-patt-6 {background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAABCAYAAADjAO9DAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABRJREFUeNpiYGBg+M+AClD4AAEGACn3Af/97SgJAAAAAElFTkSuQmCC);}
533
+ .ms-pattern.ms-patt-7 {background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABZJREFUeNpiYMAE/+EEAy5Z0iUAAgwA/moE/KMl2lgAAAAASUVORK5CYII=);}
534
+ .ms-pattern.ms-patt-8 {background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAICAYAAAA4GpVBAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABRJREFUeNpiYGBg+M+ACdDFAAIMADP0Af/w5VDVAAAAAElFTkSuQmCC);}
535
+ .ms-pattern.ms-patt-9 {background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAYAAACp8Z5+AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABJJREFUeNpiYGBg+M9AGQAIMABABAEA80yJjQAAAABJRU5ErkJggg==);}
536
+ .ms-pattern.ms-patt-10 {background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABZJREFUeNpiYGBg+A/FcMDEQH0AEGAAxksCAb3vCDgAAAAASUVORK5CYII=);}
537
+ .ms-pattern.ms-patt-11 {background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAGCAYAAADgzO9IAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABxJREFUeNpiZGBg+M+AChhBBBMDDkC6BOkAIMAAlXQBCO9f4icAAAAASUVORK5CYII=);}
538
+ .ms-pattern.ms-patt-12 {background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABtJREFUeNpiYGBg+M8AATAaDnAKYEgQBgABBgB6/AT8h9ybfgAAAABJRU5ErkJggg==);}
539
+ .ms-pattern.ms-patt-13 {background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAYAAACp8Z5+AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAB1JREFUeNpiYGBg+M+ABJig9H90AbggI7oWgAADAI5xBAIRYsxUAAAAAElFTkSuQmCC);}
540
+ .ms-pattern.ms-patt-14 {background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAICAYAAAAx8TU7AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABdJREFUeNpiYGBg+M+AA9BSgkQBgAADAJIyB/kDCjAnAAAAAElFTkSuQmCC);}
541
+ .ms-pattern.ms-patt-15 {background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAFCAYAAAB4ka1VAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAB9JREFUeNpiYGBg+M9ABPhPjPh/YjT9J2AipiRAgAEAhjsH+Utd9Z4AAAAASUVORK5CYII=);}
542
+ /* white patterns */
543
+ .ms-pattern.ms-patt-16 {background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAFAQMAAABCXz8WAAAABlBMVEUAAAD///+l2Z/dAAAAAXRSTlMAQObYZgAAABJJREFUCNdjaGBwZFBiEGHgAAAHPwEAP8TPrwAAAABJRU5ErkJggg==);}
544
+ .ms-pattern.ms-patt-17 {background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAIAQMAAAALP6d4AAAABlBMVEUAAAD///+l2Z/dAAAAAXRSTlMAQObYZgAAABZJREFUCNdjaGBwYFBgEGDgAGIFBgcADegBabpJ4LsAAAAASUVORK5CYII=);}
545
+ .ms-pattern.ms-patt-18 {background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAEAQMAAACTPww9AAAABlBMVEUAAAD///+l2Z/dAAAAAXRSTlMAQObYZgAAABBJREFUCNdjaGA4wPCA4QMACtgDEQ8Bqx8AAAAASUVORK5CYII=);}
546
+ .ms-pattern.ms-patt-19 {background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFAQMAAAC3obSmAAAABlBMVEUAAAD///+l2Z/dAAAAAXRSTlMAQObYZgAAAA9JREFUCNdjWMDgAMRAAAAKigGBlYsMggAAAABJRU5ErkJggg==);}
547
+ .ms-pattern.ms-patt-20 {background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAGAQMAAADaAn0LAAAABlBMVEUAAAD///+l2Z/dAAAAAXRSTlMAQObYZgAAAA1JREFUCNdj+ACFQAAAHgwDwds/+0oAAAAASUVORK5CYII=);}
548
+ .ms-pattern.ms-patt-21 {background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFAQMAAAC3obSmAAAABlBMVEUAAAD///+l2Z/dAAAAAXRSTlMAQObYZgAAAA1JREFUCNdjOACEYAAADAoBgRrgDF0AAAAASUVORK5CYII=);}
549
+ .ms-pattern.ms-patt-22 {background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAEAQMAAACTPww9AAAABlBMVEUAAAD///+l2Z/dAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjaGAAAwADiACBhux1cwAAAABJRU5ErkJggg==);}
550
+ .ms-pattern.ms-patt-23 {background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAIAQMAAAAC1AcCAAAABlBMVEUAAAD///+l2Z/dAAAAAXRSTlMAQObYZgAAAA5JREFUCNdjaGAAAxgNAAsQAQHPxScOAAAAAElFTkSuQmCC);}
551
+ .ms-pattern.ms-patt-24 {background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAABAQMAAADZzn0AAAAABlBMVEUAAAD///+l2Z/dAAAAAXRSTlMAQObYZgAAAApJREFUCNdj6AAAAIoAiVWdWYwAAAAASUVORK5CYII=);}
552
+ .ms-pattern.ms-patt-25 {background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFAQMAAAC3obSmAAAABlBMVEUAAAD///+l2Z/dAAAAAXRSTlMAQObYZgAAABJJREFUCNdj4GBoYHBgUGAQAAAFggD5HRIFwAAAAABJRU5ErkJggg==);}
553
+ .ms-pattern.ms-patt-26 {background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAADAQMAAABs5if8AAAABlBMVEUAAAD///+l2Z/dAAAAAXRSTlMAQObYZgAAAA5JREFUCNdjUGBoYHAAAAJmAOF0EZC+AAAAAElFTkSuQmCC);}
554
+ .ms-pattern.ms-patt-27 {background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAEAQMAAACTPww9AAAABlBMVEUAAAD///+l2Z/dAAAAAXRSTlMAQObYZgAAABBJREFUCNdjaGAIYFBgCAAABcgBQeTzXGUAAAAASUVORK5CYII=);}
555
+ .ms-pattern.ms-patt-28 {background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKAQMAAAC3/F3+AAAABlBMVEUAAAD///+l2Z/dAAAAAXRSTlMAQObYZgAAACBJREFUCNdjaGBgcHBgUGhgEGRg4GJgYAGRQDZQBCgOAC/KAvtspwwJAAAAAElFTkSuQmCC);}
556
+ .ms-pattern.ms-patt-29 {background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFAQMAAAC3obSmAAAABlBMVEUAAAD///+l2Z/dAAAAAXRSTlMAQObYZgAAABJJREFUCNdjUGBwYGhg4GAQAAAFkgD5MUFnfgAAAABJRU5ErkJggg==);}
557
+ .ms-pattern.ms-patt-30 {background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAADAQMAAABs5if8AAAABlBMVEUAAAD///+l2Z/dAAAAAXRSTlMAQObYZgAAAA5JREFUCNdjcGBoYFAAAALmAOHcBT11AAAAAElFTkSuQmCC);}
558
+
559
+
560
+
561
+ /**
562
+ * Master Slider
563
+ * Default Skin
564
+ */
565
+
566
+ .ms-skin-default .ms-slide .ms-slide-vpbtn,
567
+ .ms-skin-default .ms-video-btn{
568
+ width: 50px;
569
+ height: 51px;
570
+ background: url(skins/light-skin-1.png) no-repeat -14px -150px;
571
+ top: 50%;
572
+ left: 50%;
573
+ margin: -25px 0 0 -25px;
574
+ }
575
+
576
+ .ms-skin-default .ms-slide .ms-slide-vcbtn {
577
+ width: 30px;
578
+ height: 30px;
579
+ background: url(skins/light-skin-1.png) no-repeat -24px -28px;
580
+ top: 18px;
581
+ right: 30px;
582
+ }
583
+
584
+ /* controls */
585
+
586
+ .ms-skin-default .ms-nav-next,
587
+ .ms-skin-default .ms-nav-prev {
588
+ width: 30px;
589
+ background: url(skins/light-skin-1.png);
590
+ background-position: -89px -26px;
591
+ height: 40px;
592
+ cursor: pointer;
593
+ top: 50%;
594
+ left: 30px;
595
+ margin-top: -20px;
596
+ position: absolute;
597
+ z-index: 110;
598
+ }
599
+ .ms-skin-default .ms-nav-next {
600
+ right: 30px;
601
+ left: auto;
602
+ background-position: -89px -103px;
603
+ }
604
+
605
+
606
+
607
+ .ms-skin-default .ms-bullet {
608
+ width: 10px;
609
+ height: 10px;
610
+ background: url(skins/light-skin-1.png) no-repeat;
611
+ margin: 4px;
612
+ background-position: -34px -117px;
613
+ }
614
+
615
+ .ms-skin-default .ms-bullet-selected {
616
+ background-position: -34px -84px;
617
+ }
618
+
619
+ .ms-skin-default .ms-tooltip{
620
+ position: absolute;
621
+ z-index: 210;
622
+ cursor: auto;
623
+ }
624
+
625
+ .ms-skin-default .ms-tooltip-top .ms-tooltip-arrow,
626
+ .ms-skin-default .ms-tooltip-bottom .ms-tooltip-arrow{
627
+ border-left: solid 10px transparent;
628
+ border-right: solid 10px transparent;
629
+ position: absolute;
630
+ left: 50%;
631
+ margin-left: -10px;
632
+ }
633
+
634
+ .ms-skin-default .ms-tooltip-top .ms-tooltip-arrow{
635
+ border-top: solid 10px;
636
+ border-top-color: silver;
637
+ border-top-color: rgba(240, 240, 240, 0.88);
638
+ bottom: -10px;
639
+ }
640
+
641
+ .ms-skin-default .ms-tooltip-bottom .ms-tooltip-arrow {
642
+ border-bottom: solid 10px;
643
+ border-bottom-color: silver;
644
+ border-bottom-color: rgba(240, 240, 240, 0.88);
645
+ top: -10px;
646
+ }
647
+
648
+ .ms-skin-default .ms-tooltip-right .ms-tooltip-arrow,
649
+ .ms-skin-default .ms-tooltip-left .ms-tooltip-arrow{
650
+ border-top: solid 10px transparent;
651
+ border-bottom: solid 10px transparent;
652
+ position: absolute;
653
+ top: 50%;
654
+ margin-top: -10px;
655
+ }
656
+
657
+ .ms-skin-default .ms-tooltip-right .ms-tooltip-arrow{
658
+ border-right: solid 10px;
659
+ border-right-color: silver;
660
+ border-right-color: rgba(240, 240, 240, 0.88);
661
+ left: -10px;
662
+ }
663
+
664
+ .ms-skin-default .ms-tooltip-left .ms-tooltip-arrow {
665
+ border-left: solid 10px;
666
+ border-left-color: silver;
667
+ border-left-color: rgba(240, 240, 240, 0.88);
668
+ right: -10px;
669
+ }
670
+
671
+ .ms-skin-default .ms-tooltip-point {cursor: pointer;}
672
+ .ms-skin-default .ms-tooltip-point .ms-point-center {
673
+ width: 12px;
674
+ height: 12px;
675
+ border-radius: 15px;
676
+ border: solid 2px #BBB;
677
+ background: white;
678
+ margin: -8px 0 0 -8px;
679
+ position: absolute;
680
+ z-index: 105;
681
+ }
682
+
683
+ .ms-skin-default .ms-tooltip-point .ms-point-border {
684
+ width: 22px;
685
+ height: 22px;
686
+ background: black;
687
+ background:rgba(0, 0, 0, 0.36);
688
+ margin: -11px 0 0 -11px;
689
+ position: absolute;
690
+ border-radius: 15px;
691
+
692
+ animation: point-anim 1.5s infinite ;
693
+ -moz-animation: point-anim 1.5s infinite;
694
+ -webkit-animation: point-anim 1.5s infinite;
695
+ -o-animation: point-anim 1.5s infinite;
696
+ }
697
+
698
+ .ms-skin-default .ms-tooltip {
699
+ max-width:200px;
700
+ }
701
+
702
+ .ms-skin-default .ms-tooltip-cont {
703
+ padding: 10px;
704
+ background: silver;
705
+ background: rgba(240, 240, 240, 0.88);
706
+ text-shadow: 0 1px 0px white;
707
+ margin-left: -1px;
708
+ }
709
+
710
+ /* retina */
711
+ @media
712
+ only screen and (-webkit-min-device-pixel-ratio: 2),
713
+ only screen and ( min--moz-device-pixel-ratio: 2),
714
+ only screen and ( -o-min-device-pixel-ratio: 2/1),
715
+ only screen and ( min-device-pixel-ratio: 2),
716
+ only screen and ( min-resolution: 192dpi),
717
+ only screen and ( min-resolution: 2dppx) {
718
+
719
+ .ms-skin-default .ms-slide .ms-slide-vpbtn,
720
+ .ms-skin-default .ms-video-btn,
721
+ .ms-skin-default .ms-slide .ms-slide-vcbtn,
722
+ .ms-skin-default .ms-nav-next,
723
+ .ms-skin-default .ms-nav-prev,
724
+ .ms-skin-default .ms-bullet{
725
+ background-image:url(skins/light-skin-1-retina.png);
726
+ background-size: 152px 225px;
727
+ }
728
+
729
+ }
730
+
731
+
732
+ /**
733
+ * Master Slider
734
+ * Black 1
735
+ */
736
+
737
+ .ms-skin-black-1 .ms-slide .ms-slide-vpbtn,
738
+ .ms-skin-black-1 .ms-video-btn{
739
+ width: 54px;
740
+ height: 54px;
741
+ background: url(skins/black-skin-1.png) no-repeat -14px -150px;
742
+ top: 50%;
743
+ left: 50%;
744
+ margin: -27px 0 0 -27px;
745
+ }
746
+
747
+ .ms-skin-black-1 .ms-slide .ms-slide-vcbtn {
748
+ width: 27px;
749
+ height: 26px;
750
+ background: url(skins/black-skin-1.png) no-repeat -24px -29px;
751
+ top: 30px;
752
+ right: 30px;
753
+ }
754
+
755
+ /* controls */
756
+
757
+ .ms-skin-black-1 .ms-nav-next,
758
+ .ms-skin-black-1 .ms-nav-prev {
759
+ width: 53px;
760
+ background: url(skins/black-skin-1.png);
761
+ background-position: -79px -19px;
762
+ height: 61px;
763
+ cursor: pointer;
764
+ top: 50%;
765
+ left: 30px;
766
+ margin-top: -26px;
767
+ position: absolute;
768
+ z-index: 110;
769
+ }
770
+ .ms-skin-black-1 .ms-nav-next {
771
+ right: 30px;
772
+ left: auto;
773
+ background-position: -79px -97px;
774
+ }
775
+
776
+ .ms-skin-black-1 .ms-bullets.ms-dir-h {
777
+ position: absolute;
778
+ bottom: 20px;
779
+ right: 50%;
780
+ width: 100px;
781
+ }
782
+
783
+ .ms-skin-black-1 .ms-bullets.ms-dir-h .ms-bullets-count {
784
+ position: relative;
785
+ right: -50%;
786
+ }
787
+
788
+ .ms-skin-black-1 .ms-bullet {
789
+ width: 9px;
790
+ height: 9px;
791
+ background: white;
792
+ margin: 4px;
793
+ border: solid 1px rgb(58, 58, 58);
794
+ }
795
+
796
+ .ms-skin-black-1 .ms-bullet-selected {
797
+ background-color: black;
798
+ }
799
+
800
+ .ms-skin-black-1 .ms-tooltip{
801
+ position: absolute;
802
+ z-index: 210;
803
+ cursor: auto;
804
+ }
805
+
806
+ .ms-skin-black-1 .ms-tooltip-top .ms-tooltip-arrow,
807
+ .ms-skin-black-1 .ms-tooltip-bottom .ms-tooltip-arrow{
808
+ border-left: solid 10px transparent;
809
+ border-right: solid 10px transparent;
810
+ position: absolute;
811
+ left: 50%;
812
+ margin-left: -10px;
813
+ }
814
+
815
+ .ms-skin-black-1 .ms-tooltip-top .ms-tooltip-arrow{
816
+ border-top: solid 10px;
817
+ border-top-color: white;
818
+ border-top-color: rgba(0, 0, 0, 0.8);
819
+ bottom: -10px;
820
+ }
821
+
822
+ .ms-skin-black-1 .ms-tooltip-bottom .ms-tooltip-arrow {
823
+ border-bottom: solid 10px;
824
+ border-bottom-color: white;
825
+ border-bottom-color: rgba(0, 0, 0, 0.8);
826
+ top: -10px;
827
+ }
828
+
829
+ .ms-skin-black-1 .ms-tooltip-right .ms-tooltip-arrow,
830
+ .ms-skin-black-1 .ms-tooltip-left .ms-tooltip-arrow{
831
+ border-top: solid 10px transparent;
832
+ border-bottom: solid 10px transparent;
833
+ position: absolute;
834
+ top: 50%;
835
+ margin-top: -10px;
836
+ }
837
+
838
+ .ms-skin-black-1 .ms-tooltip-right .ms-tooltip-arrow{
839
+ border-right: solid 10px;
840
+ border-right-color: white;
841
+ border-right-color: rgba(0, 0, 0, 0.8);
842
+ left: -10px;
843
+ }
844
+
845
+ .ms-skin-black-1 .ms-tooltip-left .ms-tooltip-arrow {
846
+ border-left: solid 10px;
847
+ border-left-color: black;
848
+ border-left-color: rgba(0, 0, 0, 0.8);
849
+ right: -10px;
850
+ }
851
+
852
+ .ms-skin-black-1 .ms-tooltip-point {cursor: pointer;}
853
+ .ms-skin-black-1 .ms-tooltip-point .ms-point-center {
854
+ width: 12px;
855
+ height: 12px;
856
+ border-radius: 15px;
857
+ border: solid 2px #444444;
858
+ background: black;
859
+ margin: -8px 0 0 -8px;
860
+ position: absolute;
861
+ z-index: 105;
862
+ }
863
+
864
+ .ms-skin-black-1 .ms-tooltip-point .ms-point-border {
865
+ width: 22px;
866
+ height: 22px;
867
+ background: white;
868
+ background: rgba(255, 255, 255, 0.9);
869
+ margin: -11px 0 0 -11px;
870
+ position: absolute;
871
+ border-radius: 15px;
872
+
873
+ animation: point-anim 1.5s infinite ;
874
+ -moz-animation: point-anim 1.5s infinite;
875
+ -webkit-animation: point-anim 1.5s infinite;
876
+ -o-animation: point-anim 1.5s infinite;
877
+ }
878
+
879
+ .ms-skin-black-1 .ms-tooltip {
880
+ max-width:200px;
881
+ }
882
+
883
+ .ms-skin-black-1 .ms-tooltip-cont {
884
+ padding: 10px;
885
+ background: black;
886
+ background: rgba(0, 0, 0, 0.8);
887
+ text-shadow: 0 1px 0px black;
888
+ color: white;
889
+ box-shadow: 0px 1px 1px 0px rgba(0, 0, 0, 0.04);
890
+ }
891
+
892
+ /* retina */
893
+ @media
894
+ only screen and (-webkit-min-device-pixel-ratio: 2),
895
+ only screen and ( min--moz-device-pixel-ratio: 2),
896
+ only screen and ( -o-min-device-pixel-ratio: 2/1),
897
+ only screen and ( min-device-pixel-ratio: 2),
898
+ only screen and ( min-resolution: 192dpi),
899
+ only screen and ( min-resolution: 2dppx) {
900
+
901
+ .ms-skin-black-1 .ms-slide .ms-slide-vpbtn,
902
+ .ms-skin-black-1 .ms-video-btn,
903
+ .ms-skin-black-1 .ms-slide .ms-slide-vcbtn,
904
+ .ms-skin-black-1 .ms-nav-next,
905
+ .ms-skin-black-1 .ms-nav-prev{
906
+ background-image:url(skins/black-skin-1-retina.png);
907
+ background-size: 152px 225px;
908
+ }
909
+
910
+ }
911
+
912
+
913
+ /**
914
+ * Master Slider
915
+ * Black 2 Skin
916
+ */
917
+
918
+ .ms-skin-black-2 .ms-slide .ms-slide-vpbtn,
919
+ .ms-skin-black-2 .ms-video-btn{
920
+ width: 45px;
921
+ height: 45px;
922
+ background: url(skins/black-skin-2.png) black no-repeat -16px -103px;
923
+ border: solid 3px rgb(255, 255, 255);
924
+ border-color: rgba(255, 255, 255, 0.4);
925
+ -webkit-background-clip: padding-box;
926
+ top: 50%;
927
+ left: 50%;
928
+ margin: -23px 0 0 -23px;
929
+ }
930
+
931
+ .ms-skin-black-2 .ms-slide .ms-slide-vpbtn:hover,
932
+ .ms-skin-black-2 .ms-video-btn:hover{
933
+ background-color: #3D3D3D;
934
+ }
935
+
936
+ .ms-skin-black-2 .ms-slide .ms-slide-vcbtn {
937
+ width: 25px;
938
+ height: 25px;
939
+ background: url(skins/black-skin-2.png) black no-repeat -27px -36px;
940
+ border: solid 2px white;
941
+ border-color: rgba(255, 255, 255, 0.4);
942
+ top: 15px;
943
+ right: 15px;
944
+ }
945
+
946
+ .ms-skin-black-2.round-skin .ms-slide .ms-slide-vcbtn{
947
+ border-radius: 50px;
948
+ }
949
+
950
+
951
+ /* controls */
952
+
953
+ .ms-skin-black-2 .ms-nav-next,
954
+ .ms-skin-black-2 .ms-nav-prev {
955
+ position: absolute;
956
+ cursor: pointer;
957
+ z-index: 110;
958
+ width: 45px;
959
+ height: 45px;
960
+ background: url(skins/black-skin-2.png) black;
961
+ -webkit-background-clip: padding-box;
962
+ -moz-background-clip: padding-box;
963
+ background-clip: padding-box;
964
+ background-position: -88px -26px;
965
+ border: solid 3px rgb(255, 255, 255);
966
+ border-color: rgba(255, 255, 255, 0.4);
967
+ top: 50%;
968
+ left: 30px;
969
+ margin-top: -22px;
970
+ }
971
+
972
+ .ms-skin-black-2.round-skin .ms-nav-next,
973
+ .ms-skin-black-2.round-skin .ms-nav-prev,
974
+ .ms-skin-black-2.round-skin .ms-slide .ms-slide-vpbtn,
975
+ .ms-skin-black-2.round-skin .ms-video-btn{
976
+ border-radius: 90px;
977
+ }
978
+
979
+ .ms-skin-black-2 .ms-nav-next:hover,
980
+ .ms-skin-black-2 .ms-nav-prev:hover{
981
+ background-color: #3d3d3d;
982
+ }
983
+
984
+ .ms-skin-black-2 .ms-nav-next {
985
+ right: 30px;
986
+ left: auto;
987
+ background-position: -86px -103px;
988
+ }
989
+
990
+ .ms-skin-black-2 .ms-bullets.ms-dir-h {
991
+ position: absolute;
992
+ bottom: 20px;
993
+ right: 50%;
994
+ width: 100px;
995
+ }
996
+
997
+ .ms-skin-black-2 .ms-bullets.ms-dir-h .ms-bullets-count {
998
+ position: relative;
999
+ right: -50%;
1000
+ }
1001
+
1002
+ .ms-skin-black-2 .ms-bullet {
1003
+ width: 8px;
1004
+ height: 8px;
1005
+ background: white;
1006
+ -webkit-background-clip: padding-box;
1007
+ -moz-background-clip: padding-box;
1008
+ -ms-background-clip: padding-box;
1009
+ border: solid 3px white;
1010
+ border-color: rgba(0, 0, 0, 0.44);
1011
+ margin: 4px;
1012
+ background-position: -34px -117px;
1013
+ }
1014
+
1015
+ .ms-skin-black-2.round-skin .ms-bullet{
1016
+ border-radius: 15px;
1017
+ }
1018
+
1019
+
1020
+ .ms-skin-black-2 .ms-bullet-selected {
1021
+ background-color: black;
1022
+ border-color: white;
1023
+ border-color: rgba(255, 255, 255, 0.44);
1024
+ }
1025
+
1026
+ .ms-skin-black-2 .ms-tooltip{
1027
+ position: absolute;
1028
+ z-index: 210;
1029
+ cursor: auto;
1030
+ }
1031
+
1032
+ .ms-skin-black-2 .ms-tooltip-top .ms-tooltip-arrow,
1033
+ .ms-skin-black-2 .ms-tooltip-bottom .ms-tooltip-arrow{
1034
+ border-left: solid 10px transparent;
1035
+ border-right: solid 10px transparent;
1036
+ position: absolute;
1037
+ left: 50%;
1038
+ margin-left: -10px;
1039
+ }
1040
+
1041
+ .ms-skin-black-2 .ms-tooltip-top .ms-tooltip-arrow{
1042
+ border-top: solid 10px;
1043
+ border-top-color: silver;
1044
+ border-top-color: rgba(240, 240, 240, 0.88);
1045
+ bottom: -10px;
1046
+ }
1047
+
1048
+ .ms-skin-black-2 .ms-tooltip-bottom .ms-tooltip-arrow {
1049
+ border-bottom: solid 10px;
1050
+ border-bottom-color: silver;
1051
+ border-bottom-color: rgba(240, 240, 240, 0.88);
1052
+ top: -10px;
1053
+ }
1054
+
1055
+ .ms-skin-black-2 .ms-tooltip-right .ms-tooltip-arrow,
1056
+ .ms-skin-black-2 .ms-tooltip-left .ms-tooltip-arrow{
1057
+ border-top: solid 10px transparent;
1058
+ border-bottom: solid 10px transparent;
1059
+ position: absolute;
1060
+ top: 50%;
1061
+ margin-top: -10px;
1062
+ }
1063
+
1064
+ .ms-skin-black-2 .ms-tooltip-right .ms-tooltip-arrow{
1065
+ border-right: solid 10px;
1066
+ border-right-color: silver;
1067
+ border-right-color: rgba(240, 240, 240, 0.88);
1068
+ left: -10px;
1069
+ }
1070
+
1071
+ .ms-skin-black-2 .ms-tooltip-left .ms-tooltip-arrow {
1072
+ border-left: solid 10px;
1073
+ border-left-color: silver;
1074
+ border-left-color: rgba(240, 240, 240, 0.88);
1075
+ right: -10px;
1076
+ }
1077
+
1078
+ .ms-skin-black-2 .ms-tooltip-point {cursor: pointer;}
1079
+ .ms-skin-black-2 .ms-tooltip-point .ms-point-center {
1080
+ width: 12px;
1081
+ height: 12px;
1082
+ border-radius: 15px;
1083
+ border: solid 2px #BBB;
1084
+ background: white;
1085
+ margin: -8px 0 0 -8px;
1086
+ position: absolute;
1087
+ z-index: 105;
1088
+ }
1089
+
1090
+ .ms-skin-black-2 .ms-tooltip-point .ms-point-border {
1091
+ width: 22px;
1092
+ height: 22px;
1093
+ background: black;
1094
+ background:rgba(0, 0, 0, 0.36);
1095
+ margin: -11px 0 0 -11px;
1096
+ position: absolute;
1097
+ border-radius: 15px;
1098
+
1099
+ animation: point-anim 1.5s infinite ;
1100
+ -moz-animation: point-anim 1.5s infinite;
1101
+ -webkit-animation: point-anim 1.5s infinite;
1102
+ -o-animation: point-anim 1.5s infinite;
1103
+ }
1104
+
1105
+ .ms-ie7.ms-skin-black-2 .ms-tooltip-point .ms-point-border,
1106
+ .ms-ie8.ms-skin-black-2 .ms-tooltip-point .ms-point-border{
1107
+ display: none;
1108
+ }
1109
+
1110
+ .ms-skin-black-2 .ms-tooltip {
1111
+ max-width:200px;
1112
+ }
1113
+
1114
+ .ms-skin-black-2 .ms-tooltip-cont {
1115
+ padding: 10px;
1116
+ background: silver;
1117
+ background: rgba(240, 240, 240, 0.88);
1118
+ text-shadow: 0 1px 0px white;
1119
+ box-shadow: 0px 1px 1px 0px rgba(0, 0, 0, 0.04);
1120
+ }
1121
+
1122
+ /* retina */
1123
+ @media
1124
+ only screen and (-webkit-min-device-pixel-ratio: 2),
1125
+ only screen and ( min--moz-device-pixel-ratio: 2),
1126
+ only screen and ( -o-min-device-pixel-ratio: 2/1),
1127
+ only screen and ( min-device-pixel-ratio: 2),
1128
+ only screen and ( min-resolution: 192dpi),
1129
+ only screen and ( min-resolution: 2dppx) {
1130
+
1131
+ .ms-skin-black-2 .ms-slide .ms-slide-vpbtn,
1132
+ .ms-skin-black-2 .ms-video-btn,
1133
+ .ms-skin-black-2 .ms-slide .ms-slide-vcbtn,
1134
+ .ms-skin-black-2 .ms-nav-next,
1135
+ .ms-skin-black-2 .ms-nav-prev{
1136
+ background-image:url(skins/black-skin-2-retina.png);
1137
+ background-size: 152px 225px;
1138
+ }
1139
+
1140
+ }
1141
+
1142
+
1143
+ /**
1144
+ * Master Slider
1145
+ * Light 2
1146
+ */
1147
+
1148
+ .ms-skin-light-2 .ms-slide .ms-slide-vpbtn,
1149
+ .ms-skin-light-2 .ms-video-btn{
1150
+ width: 54px;
1151
+ height: 54px;
1152
+ background: url(skins/light-skin-2.png) no-repeat -14px -150px;
1153
+ top: 50%;
1154
+ left: 50%;
1155
+ margin: -27px 0 0 -27px;
1156
+ }
1157
+
1158
+ .ms-skin-light-2 .ms-slide .ms-slide-vcbtn {
1159
+ width: 27px;
1160
+ height: 26px;
1161
+ background: url(skins/light-skin-2.png) no-repeat -24px -29px;
1162
+ top: 30px;
1163
+ right: 30px;
1164
+ }
1165
+
1166
+ /* controls */
1167
+
1168
+ .ms-skin-light-2 .ms-nav-next,
1169
+ .ms-skin-light-2 .ms-nav-prev {
1170
+ width: 53px;
1171
+ background: url(skins/light-skin-2.png);
1172
+ background-position: -79px -19px;
1173
+ height: 61px;
1174
+ cursor: pointer;
1175
+ top: 50%;
1176
+ left: 30px;
1177
+ margin-top: -26px;
1178
+ position: absolute;
1179
+ z-index: 110;
1180
+ }
1181
+ .ms-skin-light-2 .ms-nav-next {
1182
+ right: 30px;
1183
+ left: auto;
1184
+ background-position: -79px -97px;
1185
+ }
1186
+
1187
+ .ms-skin-light-2 .ms-bullets.ms-dir-h {
1188
+ position: absolute;
1189
+ bottom: 20px;
1190
+ right: 50%;
1191
+ width: 100px;
1192
+ }
1193
+
1194
+ .ms-skin-light-2 .ms-bullets.ms-dir-h .ms-bullets-count {
1195
+ position: relative;
1196
+ right: -50%;
1197
+ }
1198
+
1199
+ .ms-skin-light-2 .ms-bullet {
1200
+ width: 9px;
1201
+ height: 9px;
1202
+ background: black;
1203
+ margin: 4px;
1204
+ border: solid 1px rgb(58, 58, 58);
1205
+ }
1206
+
1207
+ .ms-skin-light-2 .ms-bullet-selected {
1208
+ background-color: white;
1209
+ }
1210
+
1211
+ .ms-skin-light-2 .ms-tooltip{
1212
+ position: absolute;
1213
+ z-index: 210;
1214
+ cursor: auto;
1215
+ }
1216
+
1217
+ .ms-skin-light-2 .ms-tooltip-top .ms-tooltip-arrow,
1218
+ .ms-skin-light-2 .ms-tooltip-bottom .ms-tooltip-arrow{
1219
+ border-left: solid 10px transparent;
1220
+ border-right: solid 10px transparent;
1221
+ position: absolute;
1222
+ left: 50%;
1223
+ margin-left: -10px;
1224
+ }
1225
+
1226
+ .ms-skin-light-2 .ms-tooltip-top .ms-tooltip-arrow{
1227
+ border-top: solid 10px;
1228
+ border-top-color: silver;
1229
+ border-top-color: rgba(240, 240, 240, 0.88);
1230
+ bottom: -10px;
1231
+ }
1232
+
1233
+ .ms-skin-light-2 .ms-tooltip-bottom .ms-tooltip-arrow {
1234
+ border-bottom: solid 10px;
1235
+ border-bottom-color: silver;
1236
+ border-bottom-color: rgba(240, 240, 240, 0.88);
1237
+ top: -10px;
1238
+ }
1239
+
1240
+ .ms-skin-light-2 .ms-tooltip-right .ms-tooltip-arrow,
1241
+ .ms-skin-light-2 .ms-tooltip-left .ms-tooltip-arrow{
1242
+ border-top: solid 10px transparent;
1243
+ border-bottom: solid 10px transparent;
1244
+ position: absolute;
1245
+ top: 50%;
1246
+ margin-top: -10px;
1247
+ }
1248
+
1249
+ .ms-skin-light-2 .ms-tooltip-right .ms-tooltip-arrow{
1250
+ border-right: solid 10px;
1251
+ border-right-color: silver;
1252
+ border-right-color: rgba(240, 240, 240, 0.88);
1253
+ left: -10px;
1254
+ }
1255
+
1256
+ .ms-skin-light-2 .ms-tooltip-left .ms-tooltip-arrow {
1257
+ border-left: solid 10px;
1258
+ border-left-color: silver;
1259
+ border-left-color: rgba(240, 240, 240, 0.88);
1260
+ right: -10px;
1261
+ }
1262
+
1263
+ .ms-skin-light-2 .ms-tooltip-point {cursor: pointer;}
1264
+ .ms-skin-light-2 .ms-tooltip-point .ms-point-center {
1265
+ width: 12px;
1266
+ height: 12px;
1267
+ border-radius: 15px;
1268
+ border: solid 2px #BBB;
1269
+ background: white;
1270
+ margin: -8px 0 0 -8px;
1271
+ position: absolute;
1272
+ z-index: 105;
1273
+ }
1274
+
1275
+ .ms-skin-light-2 .ms-tooltip-point .ms-point-border {
1276
+ width: 22px;
1277
+ height: 22px;
1278
+ background: black;
1279
+ background:rgba(0, 0, 0, 0.36);
1280
+ margin: -11px 0 0 -11px;
1281
+ position: absolute;
1282
+ border-radius: 15px;
1283
+
1284
+ animation: point-anim 1.5s infinite ;
1285
+ -moz-animation: point-anim 1.5s infinite;
1286
+ -webkit-animation: point-anim 1.5s infinite;
1287
+ -o-animation: point-anim 1.5s infinite;
1288
+ }
1289
+
1290
+ .ms-skin-light-2 .ms-tooltip {
1291
+ max-width:200px;
1292
+ }
1293
+
1294
+ .ms-skin-light-2 .ms-tooltip-cont {
1295
+ padding: 10px;
1296
+ background: silver;
1297
+ background: rgba(240, 240, 240, 0.88);
1298
+ text-shadow: 0 1px 0px white;
1299
+ box-shadow: 0px 1px 1px 0px rgba(0, 0, 0, 0.04);
1300
+ }
1301
+
1302
+ /* retina */
1303
+ @media
1304
+ only screen and (-webkit-min-device-pixel-ratio: 2),
1305
+ only screen and ( min--moz-device-pixel-ratio: 2),
1306
+ only screen and ( -o-min-device-pixel-ratio: 2/1),
1307
+ only screen and ( min-device-pixel-ratio: 2),
1308
+ only screen and ( min-resolution: 192dpi),
1309
+ only screen and ( min-resolution: 2dppx) {
1310
+
1311
+ .ms-skin-light-2 .ms-slide .ms-slide-vpbtn,
1312
+ .ms-skin-light-2 .ms-video-btn,
1313
+ .ms-skin-light-2 .ms-slide .ms-slide-vcbtn,
1314
+ .ms-skin-light-2 .ms-nav-next,
1315
+ .ms-skin-light-2 .ms-nav-prev{
1316
+ background-image:url(skins/light-skin-2-retina.png);
1317
+ background-size: 152px 225px;
1318
+ }
1319
+
1320
+ }
1321
+
1322
+
1323
+
1324
+ /**
1325
+ * Master Slider
1326
+ * Light 3
1327
+ */
1328
+
1329
+ .ms-skin-light-3 .ms-slide .ms-slide-vpbtn,
1330
+ .ms-skin-light-3 .ms-video-btn{
1331
+ width: 50px;
1332
+ height: 50px;
1333
+ background: url(skins/light-skin-3.png) no-repeat -15px -149px;
1334
+ top: 50%;
1335
+ left: 50%;
1336
+ margin: -25px 0 0 -25px;
1337
+ }
1338
+
1339
+ .ms-skin-light-3 .ms-slide .ms-slide-vcbtn {
1340
+ width: 31px;
1341
+ height: 29px;
1342
+ background: url(skins/light-skin-3.png) no-repeat -26px -28px;
1343
+ top: 30px;
1344
+ right: 30px;
1345
+ }
1346
+
1347
+ /* controls */
1348
+
1349
+ .ms-skin-light-3 .ms-nav-next,
1350
+ .ms-skin-light-3 .ms-nav-prev {
1351
+ width: 50px;
1352
+ background: url(skins/light-skin-3.png);
1353
+ background-position: -82px -22px;
1354
+ height: 50px;
1355
+ cursor: pointer;
1356
+ top: 50%;
1357
+ left: 30px;
1358
+ margin-top: -25px;
1359
+ position: absolute;
1360
+ z-index: 110;
1361
+ }
1362
+ .ms-skin-light-3 .ms-nav-next {
1363
+ right: 30px;
1364
+ left: auto;
1365
+ background-position: -81px -99px;
1366
+ }
1367
+
1368
+ .ms-skin-light-3 .ms-bullets.ms-dir-h {
1369
+ position: absolute;
1370
+ bottom: 20px;
1371
+ right: 50%;
1372
+ width: 100px;
1373
+ }
1374
+
1375
+ .ms-skin-light-3 .ms-bullets.ms-dir-h .ms-bullets-count {
1376
+ position: relative;
1377
+ right: -50%;
1378
+ }
1379
+
1380
+ .ms-skin-light-3 .ms-bullet {
1381
+ width: 16px;
1382
+ height: 16px;
1383
+ background: url(skins/light-skin-3.png) no-repeat;
1384
+ background-position: -31px -114px;
1385
+ margin: 4px;
1386
+ }
1387
+
1388
+ .ms-skin-light-3 .ms-bullet-selected {
1389
+ background-position: -31px -81px;
1390
+ }
1391
+
1392
+ .ms-skin-light-3 .ms-tooltip{
1393
+ position: absolute;
1394
+ z-index: 210;
1395
+ cursor: auto;
1396
+ }
1397
+
1398
+ .ms-skin-light-3 .ms-tooltip-top .ms-tooltip-arrow,
1399
+ .ms-skin-light-3 .ms-tooltip-bottom .ms-tooltip-arrow{
1400
+ border-left: solid 10px transparent;
1401
+ border-right: solid 10px transparent;
1402
+ position: absolute;
1403
+ left: 50%;
1404
+ margin-left: -10px;
1405
+ }
1406
+
1407
+ .ms-skin-light-3 .ms-tooltip-top .ms-tooltip-arrow{
1408
+ border-top: solid 10px;
1409
+ border-top-color: silver;
1410
+ border-top-color: rgba(240, 240, 240, 0.88);
1411
+ bottom: -10px;
1412
+ }
1413
+
1414
+ .ms-skin-light-3 .ms-tooltip-bottom .ms-tooltip-arrow {
1415
+ border-bottom: solid 10px;
1416
+ border-bottom-color: silver;
1417
+ border-bottom-color: rgba(240, 240, 240, 0.88);
1418
+ top: -10px;
1419
+ }
1420
+
1421
+ .ms-skin-light-3 .ms-tooltip-right .ms-tooltip-arrow,
1422
+ .ms-skin-light-3 .ms-tooltip-left .ms-tooltip-arrow{
1423
+ border-top: solid 10px transparent;
1424
+ border-bottom: solid 10px transparent;
1425
+ position: absolute;
1426
+ top: 50%;
1427
+ margin-top: -10px;
1428
+ }
1429
+
1430
+ .ms-skin-light-3 .ms-tooltip-right .ms-tooltip-arrow{
1431
+ border-right: solid 10px;
1432
+ border-right-color: silver;
1433
+ border-right-color: rgba(240, 240, 240, 0.88);
1434
+ left: -10px;
1435
+ }
1436
+
1437
+ .ms-skin-light-3 .ms-tooltip-left .ms-tooltip-arrow {
1438
+ border-left: solid 10px;
1439
+ border-left-color: silver;
1440
+ border-left-color: rgba(240, 240, 240, 0.88);
1441
+ right: -10px;
1442
+ }
1443
+
1444
+ .ms-skin-light-3 .ms-tooltip-point {cursor: pointer;}
1445
+ .ms-skin-light-3 .ms-tooltip-point .ms-point-center {
1446
+ width: 12px;
1447
+ height: 12px;
1448
+ border-radius: 15px;
1449
+ border: solid 2px #BBB;
1450
+ background: white;
1451
+ margin: -8px 0 0 -8px;
1452
+ position: absolute;
1453
+ z-index: 105;
1454
+ }
1455
+
1456
+ .ms-skin-light-3 .ms-tooltip-point .ms-point-border {
1457
+ width: 22px;
1458
+ height: 22px;
1459
+ background: black;
1460
+ background:rgba(0, 0, 0, 0.36);
1461
+ margin: -11px 0 0 -11px;
1462
+ position: absolute;
1463
+ border-radius: 15px;
1464
+
1465
+ animation: point-anim 1.5s infinite ;
1466
+ -moz-animation: point-anim 1.5s infinite;
1467
+ -webkit-animation: point-anim 1.5s infinite;
1468
+ -o-animation: point-anim 1.5s infinite;
1469
+ }
1470
+
1471
+ .ms-skin-light-3 .ms-tooltip {
1472
+ max-width:200px;
1473
+ }
1474
+
1475
+ .ms-skin-light-3 .ms-tooltip-cont {
1476
+ padding: 10px;
1477
+ background: silver;
1478
+ background: rgba(240, 240, 240, 0.88);
1479
+ text-shadow: 0 1px 0px white;
1480
+ box-shadow: 0px 1px 1px 0px rgba(0, 0, 0, 0.04);
1481
+ }
1482
+
1483
+ /* retina */
1484
+ @media
1485
+ only screen and (-webkit-min-device-pixel-ratio: 2),
1486
+ only screen and ( min--moz-device-pixel-ratio: 2),
1487
+ only screen and ( -o-min-device-pixel-ratio: 2/1),
1488
+ only screen and ( min-device-pixel-ratio: 2),
1489
+ only screen and ( min-resolution: 192dpi),
1490
+ only screen and ( min-resolution: 2dppx) {
1491
+
1492
+ .ms-skin-light-3 .ms-slide .ms-slide-vpbtn,
1493
+ .ms-skin-light-3 .ms-video-btn,
1494
+ .ms-skin-light-3 .ms-slide .ms-slide-vcbtn,
1495
+ .ms-skin-light-3 .ms-nav-next,
1496
+ .ms-skin-light-3 .ms-nav-prev,
1497
+ .ms-skin-light-3 .ms-bullet{
1498
+ background-image:url(skins/light-skin-3-retina.png);
1499
+ background-size: 152px 225px;
1500
+ }
1501
+
1502
+ }
1503
+
1504
+
1505
+
1506
+ /**
1507
+ * Master Slider
1508
+ * Light 4
1509
+ */
1510
+
1511
+ .ms-skin-light-4 .ms-slide .ms-slide-vpbtn,
1512
+ .ms-skin-light-4 .ms-video-btn{
1513
+ width: 54px;
1514
+ height: 54px;
1515
+ background: url(skins/light-skin-4.png) no-repeat -14px -150px;
1516
+ top: 50%;
1517
+ left: 50%;
1518
+ margin: -27px 0 0 -27px;
1519
+ }
1520
+
1521
+ .ms-skin-light-4 .ms-slide .ms-slide-vcbtn {
1522
+ width: 27px;
1523
+ height: 26px;
1524
+ background: url(skins/light-skin-4.png) no-repeat -24px -29px;
1525
+ top: 30px;
1526
+ right: 30px;
1527
+ }
1528
+
1529
+ /* controls */
1530
+
1531
+ .ms-skin-light-4 .ms-nav-next,
1532
+ .ms-skin-light-4 .ms-nav-prev {
1533
+ width: 54px;
1534
+ background: url(skins/light-skin-4.png);
1535
+ background-position: -77px -5px;
1536
+ height: 68px;
1537
+ cursor: pointer;
1538
+ top: 50%;
1539
+ left: -27px;
1540
+ margin-top: -40px;
1541
+ position: absolute;
1542
+ z-index: 110;
1543
+ }
1544
+ .ms-skin-light-4 .ms-nav-next {
1545
+ right: -27px;
1546
+ left: auto;
1547
+ background-position: -79px -83px;
1548
+ }
1549
+
1550
+ .ms-skin-light-4 .ms-thumb-frame-selected {
1551
+ opacity: 0.6;
1552
+ }
1553
+
1554
+ .ms-skin-light-4 .ms-thumb-list.ms-dir-h {
1555
+ bottom: -60px;
1556
+ width: 100%;
1557
+ height: 60px;
1558
+ }
1559
+
1560
+ .ms-skin-light-4 .ms-thumb-list.ms-dir-v {
1561
+ height: 100%;
1562
+ width: 60px;
1563
+ right: -60px;
1564
+ top: 0;
1565
+ }
1566
+
1567
+ .ms-skin-light-4 .ms-thumb-frame {
1568
+ cursor: pointer;
1569
+ float: left;
1570
+ width: 60px;
1571
+ height: 60px;
1572
+ margin: 1px 0 0 1px;
1573
+ overflow: hidden;
1574
+ }
1575
+
1576
+ .ms-skin-light-4 .ms-bullets.ms-dir-h {
1577
+ position: absolute;
1578
+ bottom: 20px;
1579
+ right: 50%;
1580
+ width: 100px;
1581
+ }
1582
+
1583
+ .ms-skin-light-4 .ms-bullets.ms-dir-h .ms-bullets-count {
1584
+ position: relative;
1585
+ right: -50%;
1586
+ }
1587
+
1588
+ .ms-skin-light-4 .ms-bullet {
1589
+ width: 9px;
1590
+ height: 9px;
1591
+ background: #b9b9b9;
1592
+ margin: 4px;
1593
+ border: solid 1px rgb(163, 163, 163);
1594
+ }
1595
+
1596
+ .ms-skin-light-4 .ms-bullet-selected {
1597
+ background-color: white;
1598
+ }
1599
+
1600
+ .ms-skin-light-4 .ms-tooltip{
1601
+ position: absolute;
1602
+ z-index: 210;
1603
+ cursor: auto;
1604
+ }
1605
+
1606
+ .ms-skin-light-4 .ms-tooltip-top .ms-tooltip-arrow,
1607
+ .ms-skin-light-4 .ms-tooltip-bottom .ms-tooltip-arrow{
1608
+ border-left: solid 10px transparent;
1609
+ border-right: solid 10px transparent;
1610
+ position: absolute;
1611
+ left: 50%;
1612
+ margin-left: -10px;
1613
+ }
1614
+
1615
+ .ms-skin-light-4 .ms-tooltip-top .ms-tooltip-arrow{
1616
+ border-top: solid 10px;
1617
+ border-top-color: silver;
1618
+ border-top-color: rgba(240, 240, 240, 0.88);
1619
+ bottom: -10px;
1620
+ }
1621
+
1622
+ .ms-skin-light-4 .ms-tooltip-bottom .ms-tooltip-arrow {
1623
+ border-bottom: solid 10px;
1624
+ border-bottom-color: silver;
1625
+ border-bottom-color: rgba(240, 240, 240, 0.88);
1626
+ top: -10px;
1627
+ }
1628
+
1629
+ .ms-skin-light-4 .ms-tooltip-right .ms-tooltip-arrow,
1630
+ .ms-skin-light-4 .ms-tooltip-left .ms-tooltip-arrow{
1631
+ border-top: solid 10px transparent;
1632
+ border-bottom: solid 10px transparent;
1633
+ position: absolute;
1634
+ top: 50%;
1635
+ margin-top: -10px;
1636
+ }
1637
+
1638
+ .ms-skin-light-4 .ms-tooltip-right .ms-tooltip-arrow{
1639
+ border-right: solid 10px;
1640
+ border-right-color: silver;
1641
+ border-right-color: rgba(240, 240, 240, 0.88);
1642
+ left: -10px;
1643
+ }
1644
+
1645
+ .ms-skin-light-4 .ms-tooltip-left .ms-tooltip-arrow {
1646
+ border-left: solid 10px;
1647
+ border-left-color: white;
1648
+ border-left-color: rgba(240, 240, 240, 0.88);
1649
+ right: -10px;
1650
+ }
1651
+
1652
+ .ms-skin-light-4 .ms-tooltip-point {cursor: pointer;}
1653
+ .ms-skin-light-4 .ms-tooltip-point .ms-point-center {
1654
+ width: 12px;
1655
+ height: 12px;
1656
+ border-radius: 15px;
1657
+ border: solid 2px #E0E0E0;
1658
+ background: #4b8aac;
1659
+ margin: -8px 0 0 -8px;
1660
+ position: absolute;
1661
+ z-index: 105;
1662
+ }
1663
+
1664
+ .ms-skin-light-4 .ms-tooltip-point .ms-point-border {
1665
+ width: 22px;
1666
+ height: 22px;
1667
+ background: white;
1668
+ margin: -11px 0 0 -11px;
1669
+ position: absolute;
1670
+ border-radius: 15px;
1671
+
1672
+ animation: point-anim 1.5s infinite ;
1673
+ -moz-animation: point-anim 1.5s infinite;
1674
+ -webkit-animation: point-anim 1.5s infinite;
1675
+ -o-animation: point-anim 1.5s infinite;
1676
+ }
1677
+
1678
+
1679
+ .ms-skin-light-4 .ms-tooltip {
1680
+ max-width:200px;
1681
+ }
1682
+
1683
+ .ms-skin-light-4 .ms-tooltip-cont {
1684
+ padding: 10px;
1685
+ background: silver;
1686
+ background: rgba(240, 240, 240, 0.88);
1687
+ text-shadow: 0 1px 0px white;
1688
+ box-shadow: 0px 1px 1px 0px rgba(0, 0, 0, 0.04);
1689
+ }
1690
+
1691
+ /* retina */
1692
+ @media
1693
+ only screen and (-webkit-min-device-pixel-ratio: 2),
1694
+ only screen and ( min--moz-device-pixel-ratio: 2),
1695
+ only screen and ( -o-min-device-pixel-ratio: 2/1),
1696
+ only screen and ( min-device-pixel-ratio: 2),
1697
+ only screen and ( min-resolution: 192dpi),
1698
+ only screen and ( min-resolution: 2dppx) {
1699
+
1700
+ .ms-skin-light-4 .ms-slide .ms-slide-vpbtn,
1701
+ .ms-skin-light-4 .ms-video-btn,
1702
+ .ms-skin-light-4 .ms-slide .ms-slide-vcbtn,
1703
+ .ms-skin-light-4 .ms-nav-next,
1704
+ .ms-skin-light-4 .ms-nav-prev{
1705
+ background-image:url(skins/light-skin-4-retina.png);
1706
+ background-size: 152px 225px;
1707
+ }
1708
+
1709
+ }
1710
+
1711
+
1712
+
1713
+ /**
1714
+ * Master Slider
1715
+ * Light 5
1716
+ */
1717
+
1718
+ .ms-skin-light-5 .ms-slide .ms-slide-vpbtn,
1719
+ .ms-skin-light-5 .ms-video-btn{
1720
+ width: 32px;
1721
+ height: 32px;
1722
+ background: url(skins/light-skin-5.png) black no-repeat -24px -160px;
1723
+ top: 50%;
1724
+ left: 50%;
1725
+ margin: -18px 0 0 -18px;
1726
+ }
1727
+
1728
+ .ms-skin-light-5 .ms-slide .ms-slide-vpbtn:hover,
1729
+ .ms-skin-light-5 .ms-video-btn:hover{
1730
+ background-color:#646464;
1731
+ }
1732
+
1733
+ .ms-skin-light-5 .ms-slide .ms-slide-vcbtn {
1734
+ width: 30px;
1735
+ height: 30px;
1736
+ background: url(skins/light-skin-5.png) white no-repeat -24px -28px;
1737
+ top: 18px;
1738
+ right: 30px;
1739
+ }
1740
+
1741
+ /* controls */
1742
+
1743
+ .ms-skin-light-5 .ms-nav-next,
1744
+ .ms-skin-light-5 .ms-nav-prev {
1745
+ width: 32px;
1746
+ background: url(skins/light-skin-5.png) white;
1747
+ background-position: -94px -32px;
1748
+ height: 32px;
1749
+ cursor: pointer;
1750
+ bottom: 40px;
1751
+ left: 40px;
1752
+ margin-top: -20px;
1753
+ position: absolute;
1754
+ z-index: 110;
1755
+ }
1756
+
1757
+ .ms-skin-light-5 .ms-nav-next:hover,
1758
+ .ms-skin-light-5 .ms-nav-prev:hover{
1759
+ background-color:#E0E0E0;
1760
+ }
1761
+
1762
+ .ms-skin-light-5 .ms-nav-next {
1763
+ left: 73px;
1764
+ background-position: -93px -110px;
1765
+ }
1766
+
1767
+ .ms-skin-light-5 .ms-bullets.ms-dir-h {
1768
+ position: absolute;
1769
+ bottom: 20px;
1770
+ right: 50%;
1771
+ width: 100px;
1772
+ }
1773
+
1774
+ .ms-skin-light-5 .ms-bullets.ms-dir-h .ms-bullets-count {
1775
+ position: relative;
1776
+ right: -50%;
1777
+ }
1778
+
1779
+ .ms-skin-light-5 .ms-bullet {
1780
+ width: 10px;
1781
+ height: 10px;
1782
+ background: url(skins/light-skin-5.png) no-repeat;
1783
+ margin: 4px;
1784
+ background-position: -34px -117px;
1785
+ }
1786
+
1787
+ .ms-skin-light-5 .ms-bullet-selected {
1788
+ background-position: -34px -84px;
1789
+ }
1790
+
1791
+ .ms-skin-light-5 .ms-tooltip{
1792
+ position: absolute;
1793
+ z-index: 210;
1794
+ cursor: auto;
1795
+ }
1796
+
1797
+ .ms-skin-light-5 .ms-tooltip-top .ms-tooltip-arrow,
1798
+ .ms-skin-light-5 .ms-tooltip-bottom .ms-tooltip-arrow{
1799
+ border-left: solid 10px transparent;
1800
+ border-right: solid 10px transparent;
1801
+ position: absolute;
1802
+ left: 50%;
1803
+ margin-left: -10px;
1804
+ }
1805
+
1806
+ .ms-skin-light-5 .ms-tooltip-top .ms-tooltip-arrow{
1807
+ border-top: solid 10px;
1808
+ border-top-color: silver;
1809
+ border-top-color: rgba(240, 240, 240, 0.88);
1810
+ bottom: -10px;
1811
+ }
1812
+
1813
+ .ms-skin-light-5 .ms-tooltip-bottom .ms-tooltip-arrow {
1814
+ border-bottom: solid 10px;
1815
+ border-bottom-color: silver;
1816
+ border-bottom-color: rgba(240, 240, 240, 0.88);
1817
+ top: -10px;
1818
+ }
1819
+
1820
+ .ms-skin-light-5 .ms-tooltip-right .ms-tooltip-arrow,
1821
+ .ms-skin-light-5 .ms-tooltip-left .ms-tooltip-arrow{
1822
+ border-top: solid 10px transparent;
1823
+ border-bottom: solid 10px transparent;
1824
+ position: absolute;
1825
+ top: 50%;
1826
+ margin-top: -10px;
1827
+ }
1828
+
1829
+ .ms-skin-light-5 .ms-tooltip-right .ms-tooltip-arrow{
1830
+ border-right: solid 10px;
1831
+ border-right-color: silver;
1832
+ border-right-color: rgba(240, 240, 240, 0.88);
1833
+ left: -10px;
1834
+ }
1835
+
1836
+ .ms-skin-light-5 .ms-tooltip-left .ms-tooltip-arrow {
1837
+ border-left: solid 10px;
1838
+ border-left-color: silver;
1839
+ border-left-color: rgba(240, 240, 240, 0.88);
1840
+ right: -10px;
1841
+ }
1842
+
1843
+ .ms-skin-light-5 .ms-tooltip-point {cursor: pointer;}
1844
+ .ms-skin-light-5 .ms-tooltip-point .ms-point-center {
1845
+ width: 12px;
1846
+ height: 12px;
1847
+ border-radius: 15px;
1848
+ border: solid 2px #BBB;
1849
+ background: white;
1850
+ margin: -8px 0 0 -8px;
1851
+ position: absolute;
1852
+ z-index: 105;
1853
+ }
1854
+
1855
+ .ms-skin-light-5 .ms-tooltip-point .ms-point-border {
1856
+ width: 22px;
1857
+ height: 22px;
1858
+ background: black;
1859
+ background:rgba(0, 0, 0, 0.36);
1860
+ margin: -11px 0 0 -11px;
1861
+ position: absolute;
1862
+ border-radius: 15px;
1863
+
1864
+ animation: point-anim 1.5s infinite ;
1865
+ -moz-animation: point-anim 1.5s infinite;
1866
+ -webkit-animation: point-anim 1.5s infinite;
1867
+ -o-animation: point-anim 1.5s infinite;
1868
+ }
1869
+
1870
+ /* In Android browser, using css animations over slider causes some crashes */
1871
+ .ms-android.ms-skin-light-5 .ms-tooltip-point .ms-point-border{
1872
+ animation:none;
1873
+ -moz-animation:none;
1874
+ -webkit-animation:none;
1875
+ -o-animation:none;
1876
+ }
1877
+
1878
+ .ms-ie7.ms-skin-light-5 .ms-tooltip-point .ms-point-border,
1879
+ .ms-ie8.ms-skin-light-5 .ms-tooltip-point .ms-point-border{
1880
+ display: none;
1881
+ }
1882
+
1883
+ .ms-skin-light-5 .ms-tooltip {
1884
+ max-width:200px;
1885
+ }
1886
+
1887
+ .ms-skin-light-5 .ms-tooltip-cont {
1888
+ padding: 10px;
1889
+ background: silver;
1890
+ background: rgba(240, 240, 240, 0.88);
1891
+ text-shadow: 0 1px 0px white;
1892
+ box-shadow: 0px 1px 1px 0px rgba(0, 0, 0, 0.04);
1893
+ }
1894
+
1895
+ /* retina */
1896
+ @media
1897
+ only screen and (-webkit-min-device-pixel-ratio: 2),
1898
+ only screen and ( min--moz-device-pixel-ratio: 2),
1899
+ only screen and ( -o-min-device-pixel-ratio: 2/1),
1900
+ only screen and ( min-device-pixel-ratio: 2),
1901
+ only screen and ( min-resolution: 192dpi),
1902
+ only screen and ( min-resolution: 2dppx) {
1903
+
1904
+ .ms-skin-light-5 .ms-slide .ms-slide-vpbtn,
1905
+ .ms-skin-light-5 .ms-video-btn,
1906
+ .ms-skin-light-5 .ms-slide .ms-slide-vcbtn,
1907
+ .ms-skin-light-5 .ms-nav-next,
1908
+ .ms-skin-light-5 .ms-nav-prev{
1909
+ background-image:url(skins/light-skin-5-retina.png);
1910
+ background-size: 152px 225px;
1911
+ }
1912
+
1913
+ }
1914
+
1915
+
1916
+
1917
+ /**
1918
+ * Master Slider
1919
+ * Light-6 Skin
1920
+ */
1921
+
1922
+ .ms-skin-light-6 .ms-slide .ms-slide-vpbtn,
1923
+ .ms-skin-light-6 .ms-video-btn{
1924
+ width: 45px;
1925
+ height: 45px;
1926
+ background: url(skins/light-skin-6.png) white no-repeat -16px -103px;
1927
+ border: solid 3px rgb(112, 112, 112); border-color: rgba(0, 0, 0, 0.27);
1928
+ -webkit-background-clip: padding-box;
1929
+ top: 50%;
1930
+ left: 50%;
1931
+ margin: -23px 0 0 -23px;
1932
+ }
1933
+
1934
+ .ms-skin-light-6 .ms-slide .ms-slide-vpbtn:hover,
1935
+ .ms-skin-light-6 .ms-video-btn:hover{
1936
+ background-color:#E0E0E0;
1937
+ }
1938
+
1939
+ .ms-skin-light-6 .ms-slide .ms-slide-vcbtn {
1940
+ width: 25px;
1941
+ height: 25px;
1942
+ background: url(skins/light-skin-6.png) white no-repeat -27px -36px;
1943
+ top: 15px;
1944
+ right: 15px;
1945
+ }
1946
+
1947
+ .ms-skin-light-6.round-skin .ms-slide .ms-slide-vcbtn{
1948
+ border-radius: 30px;
1949
+ }
1950
+
1951
+
1952
+ /* controls */
1953
+
1954
+ .ms-skin-light-6 .ms-nav-next,
1955
+ .ms-skin-light-6 .ms-nav-prev {
1956
+ position: absolute;
1957
+ cursor: pointer;
1958
+ z-index: 110;
1959
+ width: 45px;
1960
+ height: 45px;
1961
+ background: url(skins/light-skin-6.png) white;
1962
+ -webkit-background-clip: padding-box;
1963
+ -moz-background-clip: padding-box;
1964
+ background-clip: padding-box;
1965
+ background-position: -88px -26px;
1966
+ border: solid 3px rgb(112, 112, 112);
1967
+ border-color: rgba(0, 0, 0, 0.27);
1968
+ top: 50%;
1969
+ left: 30px;
1970
+ margin-top: -22px;
1971
+ }
1972
+
1973
+ .ms-skin-light-6.round-skin .ms-nav-next,
1974
+ .ms-skin-light-6.round-skin .ms-nav-prev,
1975
+ .ms-skin-light-6.round-skin .ms-slide .ms-slide-vpbtn,
1976
+ .ms-skin-light-6.round-skin .ms-video-btn{
1977
+ border-radius: 90px;
1978
+ }
1979
+
1980
+ .ms-skin-light-6 .ms-nav-next:hover,
1981
+ .ms-skin-light-6 .ms-nav-prev:hover{
1982
+ background-color:#E0E0E0;
1983
+ }
1984
+
1985
+ .ms-skin-light-6 .ms-nav-next {
1986
+ right: 30px;
1987
+ left: auto;
1988
+ background-position: -86px -103px;
1989
+ }
1990
+
1991
+
1992
+ .ms-skin-light-6 .ms-bullets.ms-dir-h {
1993
+ position: absolute;
1994
+ bottom: 20px;
1995
+ right: 50%;
1996
+ width: 100px;
1997
+ }
1998
+
1999
+ .ms-skin-light-6 .ms-bullets.ms-dir-h .ms-bullets-count {
2000
+ position: relative;
2001
+ right: -50%;
2002
+ }
2003
+
2004
+ .ms-skin-light-6 .ms-bullet {
2005
+ width: 8px;
2006
+ height: 8px;
2007
+ background: black;
2008
+ -webkit-background-clip: padding-box;
2009
+ border: solid 3px white;
2010
+ border-color: rgba(255, 255, 255, 0.44);
2011
+ margin: 4px;
2012
+ background-position: -34px -117px;
2013
+ }
2014
+
2015
+ .ms-skin-light-6.round-skin .ms-bullet{
2016
+ border-radius: 15px;
2017
+ }
2018
+
2019
+ .ms-skin-light-6 .ms-bullet-selected {
2020
+ background-color: white;
2021
+ border-color: black;
2022
+ border-color: rgba(0, 0, 0, 0.44);
2023
+ }
2024
+
2025
+ .ms-skin-light-6 .ms-tooltip{
2026
+ position: absolute;
2027
+ z-index: 210;
2028
+ cursor: auto;
2029
+ }
2030
+
2031
+ .ms-skin-light-6 .ms-tooltip-top .ms-tooltip-arrow,
2032
+ .ms-skin-light-6 .ms-tooltip-bottom .ms-tooltip-arrow{
2033
+ border-left: solid 10px transparent;
2034
+ border-right: solid 10px transparent;
2035
+ position: absolute;
2036
+ left: 50%;
2037
+ margin-left: -10px;
2038
+ }
2039
+
2040
+ .ms-skin-light-6 .ms-tooltip-top .ms-tooltip-arrow{
2041
+ border-top: solid 10px;
2042
+ border-top-color: silver;
2043
+ border-top-color: rgba(240, 240, 240, 0.88);
2044
+ bottom: -10px;
2045
+ }
2046
+
2047
+ .ms-skin-light-6 .ms-tooltip-bottom .ms-tooltip-arrow {
2048
+ border-bottom: solid 10px;
2049
+ border-bottom-color: silver;
2050
+ border-bottom-color: rgba(240, 240, 240, 0.88);
2051
+ top: -10px;
2052
+ }
2053
+
2054
+ .ms-skin-light-6 .ms-tooltip-right .ms-tooltip-arrow,
2055
+ .ms-skin-light-6 .ms-tooltip-left .ms-tooltip-arrow{
2056
+ border-top: solid 10px transparent;
2057
+ border-bottom: solid 10px transparent;
2058
+ position: absolute;
2059
+ top: 50%;
2060
+ margin-top: -10px;
2061
+ }
2062
+
2063
+ .ms-skin-light-6 .ms-tooltip-right .ms-tooltip-arrow{
2064
+ border-right: solid 10px;
2065
+ border-right-color: silver;
2066
+ border-right-color: rgba(240, 240, 240, 0.88);
2067
+ left: -10px;
2068
+ }
2069
+
2070
+ .ms-skin-light-6 .ms-tooltip-left .ms-tooltip-arrow {
2071
+ border-left: solid 10px;
2072
+ border-left-color: silver;
2073
+ border-left-color: rgba(240, 240, 240, 0.88);
2074
+ right: -10px;
2075
+ }
2076
+
2077
+ .ms-skin-light-6 .ms-tooltip-point {cursor: pointer;}
2078
+ .ms-skin-light-6 .ms-tooltip-point .ms-point-center {
2079
+ width: 12px;
2080
+ height: 12px;
2081
+ border-radius: 15px;
2082
+ border: solid 2px #BBB;
2083
+ background: white;
2084
+ margin: -8px 0 0 -8px;
2085
+ position: absolute;
2086
+ z-index: 105;
2087
+ }
2088
+
2089
+ .ms-skin-light-6 .ms-tooltip-point .ms-point-border {
2090
+ width: 22px;
2091
+ height: 22px;
2092
+ background: black;
2093
+ background:rgba(0, 0, 0, 0.36);
2094
+ margin: -11px 0 0 -11px;
2095
+ position: absolute;
2096
+ border-radius: 15px;
2097
+
2098
+ animation: point-anim 1.5s infinite ;
2099
+ -moz-animation: point-anim 1.5s infinite;
2100
+ -webkit-animation: point-anim 1.5s infinite;
2101
+ -o-animation: point-anim 1.5s infinite;
2102
+ }
2103
+
2104
+ .ms-ie7.ms-skin-light-6 .ms-tooltip-point .ms-point-border,
2105
+ .ms-ie8.ms-skin-light-6 .ms-tooltip-point .ms-point-border{
2106
+ display: none;
2107
+ }
2108
+
2109
+ .ms-skin-light-6 .ms-tooltip {
2110
+ max-width:200px;
2111
+ }
2112
+
2113
+ .ms-skin-light-6 .ms-tooltip-cont {
2114
+ padding: 10px;
2115
+ background: silver;
2116
+ background: rgba(240, 240, 240, 0.88);
2117
+ text-shadow: 0 1px 0px white;
2118
+ box-shadow: 0px 1px 1px 0px rgba(0, 0, 0, 0.04);
2119
+ }
2120
+
2121
+ /* retina */
2122
+ @media
2123
+ only screen and (-webkit-min-device-pixel-ratio: 2),
2124
+ only screen and ( min--moz-device-pixel-ratio: 2),
2125
+ only screen and ( -o-min-device-pixel-ratio: 2/1),
2126
+ only screen and ( min-device-pixel-ratio: 2),
2127
+ only screen and ( min-resolution: 192dpi),
2128
+ only screen and ( min-resolution: 2dppx) {
2129
+
2130
+ .ms-skin-light-6 .ms-slide .ms-slide-vpbtn,
2131
+ .ms-skin-light-6 .ms-video-btn,
2132
+ .ms-skin-light-6 .ms-slide .ms-slide-vcbtn,
2133
+ .ms-skin-light-6 .ms-nav-next,
2134
+ .ms-skin-light-6 .ms-nav-prev{
2135
+ background-image:url(skins/light-skin-6-retina.png);
2136
+ background-size: 152px 225px;
2137
+ }
2138
+
2139
+ }
2140
+
2141
+
2142
+
2143
+ /**
2144
+ * Master Slider
2145
+ * Metro Skin
2146
+ */
2147
+
2148
+ .ms-skin-metro .ms-slide .ms-slide-vpbtn,
2149
+ .ms-skin-metro .ms-video-btn{
2150
+ width: 47px;
2151
+ height: 46px;
2152
+ background: url(skins/metro-skin.png) no-repeat -16px -152px;
2153
+ top: 50%;
2154
+ left: 50%;
2155
+ margin: -22px 0 0 -24px;
2156
+ }
2157
+
2158
+ .ms-skin-metro .ms-slide .ms-slide-vcbtn {
2159
+ width: 47px;
2160
+ height: 47px;
2161
+ background: url(skins/metro-skin.png) no-repeat -16px -19px;
2162
+ top: 15px;
2163
+ right: 15px;
2164
+ }
2165
+
2166
+ /* controls */
2167
+
2168
+ .ms-skin-metro .ms-nav-next,
2169
+ .ms-skin-metro .ms-nav-prev {
2170
+ width: 47px;
2171
+ background: url(skins/metro-skin.png);
2172
+ background-position: -83px -23px;
2173
+ height: 47px;
2174
+ cursor: pointer;
2175
+ top: 50%;
2176
+ left: 30px;
2177
+ margin-top: -24px;
2178
+ position: absolute;
2179
+ z-index: 110;
2180
+ }
2181
+ .ms-skin-metro .ms-nav-next {
2182
+ right: 30px;
2183
+ left: auto;
2184
+ background-position: -81px -100px;
2185
+ }
2186
+
2187
+ .ms-skin-metro .ms-bullets.ms-dir-h {
2188
+ position: absolute;
2189
+ bottom: 20px;
2190
+ right: 50%;
2191
+ width: 100px;
2192
+ }
2193
+
2194
+ .ms-skin-metro .ms-bullets.ms-dir-h .ms-bullets-count {
2195
+ position: relative;
2196
+ right: -50%;
2197
+ }
2198
+
2199
+ .ms-skin-metro .ms-bullet {
2200
+ width: 16px;
2201
+ height: 16px;
2202
+ background: url(skins/metro-skin.png) no-repeat;
2203
+ background-position: -31px -114px;
2204
+ margin: 4px;
2205
+ }
2206
+
2207
+ .ms-skin-metro .ms-bullet-selected {
2208
+ background-position: -31px -81px;
2209
+ }
2210
+
2211
+ .ms-skin-metro .ms-tooltip{
2212
+ position: absolute;
2213
+ z-index: 210;
2214
+ cursor: auto;
2215
+ }
2216
+
2217
+ .ms-skin-metro .ms-tooltip-top .ms-tooltip-arrow,
2218
+ .ms-skin-metro .ms-tooltip-bottom .ms-tooltip-arrow{
2219
+ border-left: solid 10px transparent;
2220
+ border-right: solid 10px transparent;
2221
+ position: absolute;
2222
+ left: 50%;
2223
+ margin-left: -10px;
2224
+ }
2225
+
2226
+ .ms-skin-metro .ms-tooltip-top .ms-tooltip-arrow{
2227
+ border-top: solid 10px;
2228
+ border-top-color: silver;
2229
+ border-top-color: rgba(240, 240, 240, 0.88);
2230
+ bottom: -10px;
2231
+ }
2232
+
2233
+ .ms-skin-metro .ms-tooltip-bottom .ms-tooltip-arrow {
2234
+ border-bottom: solid 10px;
2235
+ border-bottom-color: silver;
2236
+ border-bottom-color: rgba(240, 240, 240, 0.88);
2237
+ top: -10px;
2238
+ }
2239
+
2240
+ .ms-skin-metro .ms-tooltip-right .ms-tooltip-arrow,
2241
+ .ms-skin-metro .ms-tooltip-left .ms-tooltip-arrow{
2242
+ border-top: solid 10px transparent;
2243
+ border-bottom: solid 10px transparent;
2244
+ position: absolute;
2245
+ top: 50%;
2246
+ margin-top: -10px;
2247
+ }
2248
+
2249
+ .ms-skin-metro .ms-tooltip-right .ms-tooltip-arrow{
2250
+ border-right: solid 10px;
2251
+ border-right-color: silver;
2252
+ border-right-color: rgba(240, 240, 240, 0.88);
2253
+ left: -10px;
2254
+ }
2255
+
2256
+ .ms-skin-metro .ms-tooltip-left .ms-tooltip-arrow {
2257
+ border-left: solid 10px;
2258
+ border-left-color: silver;
2259
+ border-left-color: rgba(240, 240, 240, 0.88);
2260
+ right: -10px;
2261
+ }
2262
+
2263
+ .ms-skin-metro .ms-tooltip-point {cursor: pointer;}
2264
+ .ms-skin-metro .ms-tooltip-point .ms-point-center {
2265
+ width: 12px;
2266
+ height: 12px;
2267
+ border-radius: 15px;
2268
+ border: solid 2px #BBB;
2269
+ background: white;
2270
+ margin: -8px 0 0 -8px;
2271
+ position: absolute;
2272
+ z-index: 105;
2273
+ }
2274
+
2275
+ .ms-skin-metro .ms-tooltip-point .ms-point-border {
2276
+ width: 22px;
2277
+ height: 22px;
2278
+ background: black;
2279
+ background:rgba(0, 0, 0, 0.36);
2280
+ margin: -11px 0 0 -11px;
2281
+ position: absolute;
2282
+ border-radius: 15px;
2283
+
2284
+ animation: point-anim 1.5s infinite ;
2285
+ -moz-animation: point-anim 1.5s infinite;
2286
+ -webkit-animation: point-anim 1.5s infinite;
2287
+ -o-animation: point-anim 1.5s infinite;
2288
+ }
2289
+
2290
+ .ms-skin-metro .ms-tooltip {
2291
+ max-width:200px;
2292
+ }
2293
+
2294
+ .ms-skin-metro .ms-tooltip-cont {
2295
+ padding: 10px;
2296
+ background: silver;
2297
+ background: rgba(240, 240, 240, 0.88);
2298
+ text-shadow: 0 1px 0px white;
2299
+ box-shadow: 0px 1px 1px 0px rgba(0, 0, 0, 0.04);
2300
+ }
2301
+
2302
+ /* retina */
2303
+ @media
2304
+ only screen and (-webkit-min-device-pixel-ratio: 2),
2305
+ only screen and ( min--moz-device-pixel-ratio: 2),
2306
+ only screen and ( -o-min-device-pixel-ratio: 2/1),
2307
+ only screen and ( min-device-pixel-ratio: 2),
2308
+ only screen and ( min-resolution: 192dpi),
2309
+ only screen and ( min-resolution: 2dppx) {
2310
+
2311
+ .ms-skin-metro .ms-slide .ms-slide-vpbtn,
2312
+ .ms-skin-metro .ms-video-btn,
2313
+ .ms-skin-metro .ms-slide .ms-slide-vcbtn,
2314
+ .ms-skin-metro .ms-nav-next,
2315
+ .ms-skin-metro .ms-nav-prev,
2316
+ .ms-skin-metro .ms-bullet{
2317
+ background-image:url(skins/metro-skin-retina.png);
2318
+ background-size: 152px 225px;
2319
+ }
2320
+
2321
+ }
2322
+
2323
+
2324
+ /**
2325
+ * Master Slider
2326
+ * Contrast
2327
+ */
2328
+
2329
+ .ms-skin-contrast .ms-slide .ms-slide-vpbtn,
2330
+ .ms-skin-contrast .ms-video-btn{
2331
+ width: 60px;
2332
+ height: 60px;
2333
+ background: url(skins/contrast-skin.png) no-repeat -10px -144px;
2334
+ top: 50%;
2335
+ left: 50%;
2336
+ margin: -30px 0 0 -30px;
2337
+ }
2338
+
2339
+ .ms-skin-contrast .ms-slide .ms-slide-vcbtn {
2340
+ width: 24px;
2341
+ height: 24px;
2342
+ background: url(skins/contrast-skin.png) no-repeat -27px -30px;
2343
+ top: 30px;
2344
+ right: 30px;
2345
+ }
2346
+
2347
+ /* controls */
2348
+
2349
+ .ms-skin-contrast .ms-nav-next,
2350
+ .ms-skin-contrast .ms-nav-prev {
2351
+ width: 60px;
2352
+ background: url(skins/contrast-skin.png);
2353
+ background-position: -76px -17px;
2354
+ height: 60px;
2355
+ cursor: pointer;
2356
+ top: 50%;
2357
+ left: 30px;
2358
+ margin-top: -30px;
2359
+ position: absolute;
2360
+ z-index: 110;
2361
+ }
2362
+ .ms-skin-contrast .ms-nav-next {
2363
+ right: 30px;
2364
+ left: auto;
2365
+ background-position: -77px -91px;
2366
+ }
2367
+
2368
+ .ms-skin-contrast .ms-bullets.ms-dir-h {
2369
+ position: absolute;
2370
+ bottom: 20px;
2371
+ right: 50%;
2372
+ width: 100px;
2373
+ }
2374
+
2375
+ .ms-skin-contrast .ms-bullets.ms-dir-h .ms-bullets-count {
2376
+ position: relative;
2377
+ right: -50%;
2378
+ }
2379
+
2380
+ .ms-skin-contrast .ms-bullet {
2381
+ width: 16px;
2382
+ height: 16px;
2383
+ background: url(skins/contrast-skin.png) no-repeat;
2384
+ background-position: -31px -114px;
2385
+ margin: 4px;
2386
+ }
2387
+
2388
+ .ms-skin-contrast .ms-bullet-selected {
2389
+ background-position: -31px -81px;
2390
+ }
2391
+
2392
+ .ms-skin-contrast .ms-tooltip{
2393
+ position: absolute;
2394
+ z-index: 210;
2395
+ cursor: auto;
2396
+ }
2397
+
2398
+ .ms-skin-contrast .ms-tooltip-top .ms-tooltip-arrow,
2399
+ .ms-skin-contrast .ms-tooltip-bottom .ms-tooltip-arrow{
2400
+ border-left: solid 10px transparent;
2401
+ border-right: solid 10px transparent;
2402
+ position: absolute;
2403
+ left: 50%;
2404
+ margin-left: -10px;
2405
+ }
2406
+
2407
+ .ms-skin-contrast .ms-tooltip-top .ms-tooltip-arrow{
2408
+ border-top: solid 10px;
2409
+ border-top-color: #fc3116;
2410
+ border-top-color: rgba(252, 49, 22, 0.8);
2411
+ bottom: -10px;
2412
+ }
2413
+
2414
+ .ms-skin-contrast .ms-tooltip-bottom .ms-tooltip-arrow {
2415
+ border-bottom: solid 10px;
2416
+ border-bottom-color: #fc3116;
2417
+ border-bottom-color: rgba(252, 49, 22, 0.8);
2418
+ top: -10px;
2419
+ }
2420
+
2421
+ .ms-skin-contrast .ms-tooltip-right .ms-tooltip-arrow,
2422
+ .ms-skin-contrast .ms-tooltip-left .ms-tooltip-arrow{
2423
+ border-top: solid 10px transparent;
2424
+ border-bottom: solid 10px transparent;
2425
+ position: absolute;
2426
+ top: 50%;
2427
+ margin-top: -10px;
2428
+ }
2429
+
2430
+ .ms-skin-contrast .ms-tooltip-right .ms-tooltip-arrow{
2431
+ border-right: solid 10px;
2432
+ border-right-color: #fc3116;
2433
+ border-right-color: rgba(252, 49, 22, 0.8);
2434
+ left: -10px;
2435
+ }
2436
+
2437
+ .ms-skin-contrast .ms-tooltip-left .ms-tooltip-arrow {
2438
+ border-left: solid 10px;
2439
+ border-left-color: #fc3116;
2440
+ border-left-color: rgba(252, 49, 22, 0.8);
2441
+ right: -10px;
2442
+ }
2443
+
2444
+ .ms-skin-contrast .ms-tooltip-point {cursor: pointer;}
2445
+ .ms-skin-contrast .ms-tooltip-point .ms-point-center {
2446
+ width: 12px;
2447
+ height: 12px;
2448
+ border-radius: 15px;
2449
+ border: solid 2px #636363;
2450
+ background: black;
2451
+ margin: -8px 0 0 -8px;
2452
+ position: absolute;
2453
+ z-index: 105;
2454
+ }
2455
+
2456
+ .ms-skin-contrast .ms-tooltip-point .ms-point-border {
2457
+ width: 22px;
2458
+ height: 22px;
2459
+ background: white;
2460
+ background: rgba(255, 255, 255, 0.99);
2461
+ margin: -11px 0 0 -11px;
2462
+ position: absolute;
2463
+ border-radius: 15px;
2464
+
2465
+ animation: point-anim 1.5s infinite ;
2466
+ -moz-animation: point-anim 1.5s infinite;
2467
+ -webkit-animation: point-anim 1.5s infinite;
2468
+ -o-animation: point-anim 1.5s infinite;
2469
+ }
2470
+
2471
+ .ms-skin-contrast .ms-tooltip {
2472
+ max-width:200px;
2473
+ }
2474
+
2475
+ .ms-skin-contrast .ms-tooltip-cont {
2476
+ padding: 10px;
2477
+ background: #fc3116;
2478
+ background: rgba(252, 49, 22, 0.8);
2479
+ text-shadow: 0 1px 0px rgba(0, 0, 0, 0.4);
2480
+ color: white;
2481
+ box-shadow: 0px 1px 1px 0px rgba(0, 0, 0, 0.04);
2482
+ }
2483
+
2484
+ /* retina */
2485
+ @media
2486
+ only screen and (-webkit-min-device-pixel-ratio: 2),
2487
+ only screen and ( min--moz-device-pixel-ratio: 2),
2488
+ only screen and ( -o-min-device-pixel-ratio: 2/1),
2489
+ only screen and ( min-device-pixel-ratio: 2),
2490
+ only screen and ( min-resolution: 192dpi),
2491
+ only screen and ( min-resolution: 2dppx) {
2492
+
2493
+ .ms-skin-contrast .ms-slide .ms-slide-vpbtn,
2494
+ .ms-skin-contrast .ms-video-btn,
2495
+ .ms-skin-contrast .ms-slide .ms-slide-vcbtn,
2496
+ .ms-skin-contrast .ms-nav-next,
2497
+ .ms-skin-contrast .ms-nav-prev,
2498
+ .ms-skin-contrast .ms-bullet{
2499
+ background-image:url(skins/contrast-skin-retina.png);
2500
+ background-size: 152px 225px;
2501
+ }
2502
+
2503
+ }
public/class-master-slider.php CHANGED
@@ -17,307 +17,307 @@ if ( ! class_exists( 'Master_Slider' ) ) :
17
  */
18
  class Master_Slider {
19
 
20
- /**
21
- * Instance of this class.
22
- *
23
- * @since 1.0.0
24
- *
25
- * @var object
26
- */
27
- protected static $instance = null;
28
-
29
-
30
- /**
31
- * Instance of Master_Slider_Admin class.
32
- *
33
- * @since 1.0.0
34
- *
35
- * @var object
36
- */
37
- public $admin = null;
38
-
39
-
40
-
41
- /**
42
- * Initialize the plugin
43
- *
44
- * @since 1.0.0
45
- */
46
- private function __construct() {
47
-
48
- $this->includes();
49
-
50
- add_action( 'init', array( $this, 'init' ) );
51
-
52
- // Activate plugin when new blog is added
53
- add_action( 'wpmu_new_blog', array( $this, 'activate_new_site' ) );
54
-
55
- // Loaded action
56
- do_action( 'masterslider_loaded' );
57
- }
58
-
59
-
60
- /**
61
- *
62
- * @return [type] [description]
63
- */
64
- private function includes() {
65
-
66
- // load common functionalities
67
- include_once( MSWP_AVERTA_INC_DIR . '/index.php' );
68
-
69
-
70
- // Dashboard and Administrative Functionality
71
- if ( is_admin() ) {
72
-
73
- // Load AJAX spesific codes on demand
74
- if ( defined('DOING_AJAX') && DOING_AJAX ){
75
- include_once( MSWP_AVERTA_ADMIN_DIR . '/includes/classes/class-msp-admin-ajax.php');
76
- include_once( MSWP_AVERTA_ADMIN_DIR . '/includes/msp-admin-functions.php');
77
- }
78
-
79
- // Load admin spesific codes
80
- else {
81
- $this->admin = include( MSWP_AVERTA_ADMIN_DIR . '/class-master-slider-admin.php' );
82
- }
83
-
84
- // Load Frontend Functionality
85
- } else {
86
-
87
- include_once( 'includes/class-msp-frontend-assets.php' );
88
- }
89
-
90
- }
91
-
92
-
93
- /**
94
- * Init Masterslider when WordPress Initialises.
95
- *
96
- * @return void
97
- */
98
- public function init(){
99
-
100
- // Before init action
101
- do_action( 'before_masterslider_init' );
 
 
 
102
 
103
- // Load plugin text domain
104
- $this->load_plugin_textdomain();
105
-
106
- // Init action
107
- do_action( 'masterslider_init' );
108
- }
109
-
110
-
111
- /**
112
- * Return an instance of this class.
113
- *
114
- * @since 1.0.0
115
- *
116
- * @return object A single instance of this class.
117
- */
118
- public static function get_instance() {
119
-
120
- // If the single instance hasn't been set, set it now.
121
- if ( null == self::$instance ) {
122
- self::$instance = new self;
123
- }
124
-
125
- return self::$instance;
126
- }
127
-
128
- /**
129
- * Fired when the plugin is activated.
130
- *
131
- * @since 1.0.0
132
- *
133
- * @param boolean $network_wide True if WPMU superadmin uses
134
- * "Network Activate" action, false if
135
- * WPMU is disabled or plugin is
136
- * activated on an individual blog.
137
- */
138
- public static function activate( $network_wide ) {
139
-
140
- if ( function_exists( 'is_multisite' ) && is_multisite() ) {
141
-
142
- if ( $network_wide ) {
143
-
144
- // Get all blog ids
145
- $blog_ids = self::get_blog_ids();
146
-
147
- foreach ( $blog_ids as $blog_id ) {
148
-
149
- switch_to_blog( $blog_id );
150
- self::single_activate();
151
- }
152
-
153
- restore_current_blog();
154
-
155
- } else {
156
- self::single_activate();
157
- }
158
-
159
- } else {
160
- self::single_activate();
161
- }
162
-
163
- }
164
-
165
- /**
166
- * Fired when the plugin is deactivated.
167
- *
168
- * @since 1.0.0
169
- *
170
- * @param boolean $network_wide True if WPMU superadmin uses
171
- * "Network Deactivate" action, false if
172
- * WPMU is disabled or plugin is
173
- * deactivated on an individual blog.
174
- */
175
- public static function deactivate( $network_wide ) {
176
-
177
- if ( function_exists( 'is_multisite' ) && is_multisite() ) {
178
-
179
- if ( $network_wide ) {
180
-
181
- // Get all blog ids
182
- $blog_ids = self::get_blog_ids();
183
-
184
- foreach ( $blog_ids as $blog_id ) {
185
-
186
- switch_to_blog( $blog_id );
187
- self::single_deactivate();
188
-
189
- }
190
-
191
- restore_current_blog();
192
-
193
- } else {
194
- self::single_deactivate();
195
- }
196
-
197
- } else {
198
- self::single_deactivate();
199
- }
200
-
201
- }
202
-
203
- /**
204
- * Fired when a new site is activated with a WPMU environment.
205
- *
206
- * @since 1.0.0
207
- *
208
- * @param int $blog_id ID of the new blog.
209
- */
210
- public function activate_new_site( $blog_id ) {
211
-
212
- if ( 1 !== did_action( 'wpmu_new_blog' ) ) {
213
- return;
214
- }
215
-
216
- switch_to_blog( $blog_id );
217
- self::single_activate();
218
- restore_current_blog();
219
-
220
- }
221
-
222
- /**
223
- * Get all blog ids of blogs in the current network that are:
224
- * - not archived
225
- * - not spam
226
- * - not deleted
227
- *
228
- * @since 1.0.0
229
- *
230
- * @return array|false The blog ids, false if no matches.
231
- */
232
- private static function get_blog_ids() {
233
-
234
- global $wpdb;
235
-
236
- // get an array of blog ids
237
- $sql = "SELECT blog_id FROM $wpdb->blogs
238
- WHERE archived = '0' AND spam = '0'
239
- AND deleted = '0'";
240
-
241
- return $wpdb->get_col( $sql );
242
-
243
- }
244
-
245
- /**
246
- * Fired for each blog when the plugin is activated.
247
- *
248
- * @since 1.0.0
249
- */
250
- private static function single_activate() {
251
-
252
- global $mspdb;
253
- $mspdb->create_tables();
254
-
255
- // add masterslider custom caps
256
- self::assign_custom_caps();
257
- do_action( 'masterslider_activated', get_current_blog_id() );
258
- }
259
-
260
- /**
261
- * Assign masterslider custom capabilities to main roles
262
- * @return void
263
- */
264
- public static function assign_custom_caps( $force_update = false ){
265
-
266
- // check if custom capabilities are added before or not
267
- $is_added = get_option( 'masterslider_capabilities_added', 0 );
268
-
269
- // add caps if they are not already added
270
- if( ! $is_added || $force_update ) {
271
-
272
- // assign masterslider capabilities to following roles
273
- $roles = array( 'administrator', 'editor' );
274
-
275
- foreach ( $roles as $role ) {
276
- if( ! $role = get_role( $role ) )
277
- continue;
278
- $role->add_cap( 'access_masterslider' );
279
- $role->add_cap( 'publish_masterslider' );
280
- $role->add_cap( 'delete_masterslider' );
281
- $role->add_cap( 'create_masterslider' );
282
- $role->add_cap( 'export_masterslider' );
283
- $role->add_cap( 'duplicate_masterslider' );
284
- }
285
-
286
- update_option( 'masterslider_capabilities_added', 1 );
287
- }
288
- }
289
-
290
-
291
- /**
292
- * Set default options
293
- *
294
- * @since 1.0.0
295
- */
296
- public static function set_default_options( $force_update = false ){
297
-
298
- }
299
-
300
-
301
- /**
302
- * Fired for each blog when the plugin is deactivated.
303
- *
304
- * @since 1.0.0
305
- */
306
- private static function single_deactivate() {
307
- do_action( 'masterslider_deactivated' );
308
- }
309
-
310
- /**
311
- * Load the plugin text domain for translation.
312
- *
313
- * @since 1.0.0
314
- */
315
- public function load_plugin_textdomain() {
316
-
317
- $locale = apply_filters( 'plugin_locale', get_locale(), MSWP_TEXT_DOMAIN );
318
- load_textdomain( MSWP_TEXT_DOMAIN, trailingslashit( WP_LANG_DIR ) . MSWP_TEXT_DOMAIN . '/' . MSWP_TEXT_DOMAIN . '-' . $locale . '.mo' );
319
- load_plugin_textdomain( MSWP_TEXT_DOMAIN, FALSE, basename( MSWP_AVERTA_DIR ) . '/languages/' );
320
- }
321
 
322
  }
323
 
@@ -328,13 +328,13 @@ MSP();
328
 
329
 
330
  class MSP_AttachmentFields {
331
-
332
  private $fields = array();
333
 
334
- function __construct($fields = null) {
335
- if(isset($fields) && is_array($fields))
336
- $this->$fields = $fields;
337
- }
338
 
339
  public function add($field){
340
  if(is_array($field))
@@ -349,18 +349,18 @@ class MSP_AttachmentFields {
349
  public function addFields( $form_fields, $post ){
350
 
351
  $form_fields['image_rating'] = array(
352
- 'label' => __( 'rating', "default" ),
353
- 'input' => 'radio',
354
- 'options' => array(
355
- '1' => 1,
356
- '2' => 2,
357
- '3' => 3,
358
- '4' => 4,
359
- '5' => 5
360
- ),
361
- 'application' => 'image',
362
- 'exclusions' => array( 'audio', 'video' )
363
- );
364
 
365
  return $form_fields;
366
  }
17
  */
18
  class Master_Slider {
19
 
20
+ /**
21
+ * Instance of this class.
22
+ *
23
+ * @since 1.0.0
24
+ *
25
+ * @var object
26
+ */
27
+ protected static $instance = null;
28
+
29
+
30
+ /**
31
+ * Instance of Master_Slider_Admin class.
32
+ *
33
+ * @since 1.0.0
34
+ *
35
+ * @var object
36
+ */
37
+ public $admin = null;
38
+
39
+
40
+
41
+ /**
42
+ * Initialize the plugin
43
+ *
44
+ * @since 1.0.0
45
+ */
46
+ private function __construct() {
47
+
48
+ $this->includes();
49
+
50
+ add_action( 'init', array( $this, 'init' ) );
51
+
52
+ // Activate plugin when new blog is added
53
+ add_action( 'wpmu_new_blog', array( $this, 'activate_new_site' ) );
54
+
55
+ // Loaded action
56
+ do_action( 'masterslider_loaded' );
57
+ }
58
+
59
+
60
+ /**
61
+ *
62
+ * @return [type] [description]
63
+ */
64
+ private function includes() {
65
+
66
+ // load common functionalities
67
+ include_once( MSWP_AVERTA_INC_DIR . '/index.php' );
68
+
69
+
70
+ // Dashboard and Administrative Functionality
71
+ if ( is_admin() ) {
72
+
73
+ // Load AJAX spesific codes on demand
74
+ if ( defined('DOING_AJAX') && DOING_AJAX ){
75
+ include_once( MSWP_AVERTA_ADMIN_DIR . '/includes/classes/class-msp-admin-ajax.php');
76
+ include_once( MSWP_AVERTA_ADMIN_DIR . '/includes/msp-admin-functions.php');
77
+ }
78
+
79
+ // Load admin spesific codes
80
+ else {
81
+ $this->admin = include( MSWP_AVERTA_ADMIN_DIR . '/class-master-slider-admin.php' );
82
+ }
83
+
84
+ // Load Frontend Functionality
85
+ } else {
86
+
87
+ include_once( 'includes/class-msp-frontend-assets.php' );
88
+ }
89
+
90
+ }
91
+
92
+
93
+ /**
94
+ * Init Masterslider when WordPress Initialises.
95
+ *
96
+ * @return void
97
+ */
98
+ public function init(){
99
+
100
+ // Before init action
101
+ do_action( 'before_masterslider_init' );
102
+
103
+ // Load plugin text domain
104
+ $this->load_plugin_textdomain();
105
 
106
+ // Init action
107
+ do_action( 'masterslider_init' );
108
+ }
109
+
110
+
111
+ /**
112
+ * Return an instance of this class.
113
+ *
114
+ * @since 1.0.0
115
+ *
116
+ * @return object A single instance of this class.
117
+ */
118
+ public static function get_instance() {
119
+
120
+ // If the single instance hasn't been set, set it now.
121
+ if ( null == self::$instance ) {
122
+ self::$instance = new self;
123
+ }
124
+
125
+ return self::$instance;
126
+ }
127
+
128
+ /**
129
+ * Fired when the plugin is activated.
130
+ *
131
+ * @since 1.0.0
132
+ *
133
+ * @param boolean $network_wide True if WPMU superadmin uses
134
+ * "Network Activate" action, false if
135
+ * WPMU is disabled or plugin is
136
+ * activated on an individual blog.
137
+ */
138
+ public static function activate( $network_wide ) {
139
+
140
+ if ( function_exists( 'is_multisite' ) && is_multisite() ) {
141
+
142
+ if ( $network_wide ) {
143
+
144
+ // Get all blog ids
145
+ $blog_ids = self::get_blog_ids();
146
+
147
+ foreach ( $blog_ids as $blog_id ) {
148
+
149
+ switch_to_blog( $blog_id );
150
+ self::single_activate();
151
+ }
152
+
153
+ restore_current_blog();
154
+
155
+ } else {
156
+ self::single_activate();
157
+ }
158
+
159
+ } else {
160
+ self::single_activate();
161
+ }
162
+
163
+ }
164
+
165
+ /**
166
+ * Fired when the plugin is deactivated.
167
+ *
168
+ * @since 1.0.0
169
+ *
170
+ * @param boolean $network_wide True if WPMU superadmin uses
171
+ * "Network Deactivate" action, false if
172
+ * WPMU is disabled or plugin is
173
+ * deactivated on an individual blog.
174
+ */
175
+ public static function deactivate( $network_wide ) {
176
+
177
+ if ( function_exists( 'is_multisite' ) && is_multisite() ) {
178
+
179
+ if ( $network_wide ) {
180
+
181
+ // Get all blog ids
182
+ $blog_ids = self::get_blog_ids();
183
+
184
+ foreach ( $blog_ids as $blog_id ) {
185
+
186
+ switch_to_blog( $blog_id );
187
+ self::single_deactivate();
188
+
189
+ }
190
+
191
+ restore_current_blog();
192
+
193
+ } else {
194
+ self::single_deactivate();
195
+ }
196
+
197
+ } else {
198
+ self::single_deactivate();
199
+ }
200
+
201
+ }
202
+
203
+ /**
204
+ * Fired when a new site is activated with a WPMU environment.
205
+ *
206
+ * @since 1.0.0
207
+ *
208
+ * @param int $blog_id ID of the new blog.
209
+ */
210
+ public function activate_new_site( $blog_id ) {
211
+
212
+ if ( 1 !== did_action( 'wpmu_new_blog' ) ) {
213
+ return;
214
+ }
215
+
216
+ switch_to_blog( $blog_id );
217
+ self::single_activate();
218
+ restore_current_blog();
219
+
220
+ }
221
+
222
+ /**
223
+ * Get all blog ids of blogs in the current network that are:
224
+ * - not archived
225
+ * - not spam
226
+ * - not deleted
227
+ *
228
+ * @since 1.0.0
229
+ *
230
+ * @return array|false The blog ids, false if no matches.
231
+ */
232
+ private static function get_blog_ids() {
233
+
234
+ global $wpdb;
235
+
236
+ // get an array of blog ids
237
+ $sql = "SELECT blog_id FROM $wpdb->blogs
238
+ WHERE archived = '0' AND spam = '0'
239
+ AND deleted = '0'";
240
+
241
+ return $wpdb->get_col( $sql );
242
+
243
+ }
244
+
245
+ /**
246
+ * Fired for each blog when the plugin is activated.
247
+ *
248
+ * @since 1.0.0
249
+ */
250
+ private static function single_activate() {
251
+
252
+ global $mspdb;
253
+ $mspdb->create_tables();
254
+
255
+ // add masterslider custom caps
256
+ self::assign_custom_caps();
257
+ do_action( 'masterslider_activated', get_current_blog_id() );
258
+ }
259
+
260
+ /**
261
+ * Assign masterslider custom capabilities to main roles
262
+ * @return void
263
+ */
264
+ public static function assign_custom_caps( $force_update = false ){
265
+
266
+ // check if custom capabilities are added before or not
267
+ $is_added = get_option( 'masterslider_capabilities_added', 0 );
268
+
269
+ // add caps if they are not already added
270
+ if( ! $is_added || $force_update ) {
271
+
272
+ // assign masterslider capabilities to following roles
273
+ $roles = array( 'administrator', 'editor' );
274
+
275
+ foreach ( $roles as $role ) {
276
+ if( ! $role = get_role( $role ) )
277
+ continue;
278
+ $role->add_cap( 'access_masterslider' );
279
+ $role->add_cap( 'publish_masterslider' );
280
+ $role->add_cap( 'delete_masterslider' );
281
+ $role->add_cap( 'create_masterslider' );
282
+ $role->add_cap( 'export_masterslider' );
283
+ $role->add_cap( 'duplicate_masterslider' );
284
+ }
285
+
286
+ update_option( 'masterslider_capabilities_added', 1 );
287
+ }
288
+ }
289
+
290
+
291
+ /**
292
+ * Set default options
293
+ *
294
+ * @since 1.0.0
295
+ */
296
+ public static function set_default_options( $force_update = false ){
297
+
298
+ }
299
+
300
+
301
+ /**
302
+ * Fired for each blog when the plugin is deactivated.
303
+ *
304
+ * @since 1.0.0
305
+ */
306
+ private static function single_deactivate() {
307
+ do_action( 'masterslider_deactivated' );
308
+ }
309
+
310
+ /**
311
+ * Load the plugin text domain for translation.
312
+ *
313
+ * @since 1.0.0
314
+ */
315
+ public function load_plugin_textdomain() {
316
+
317
+ $locale = apply_filters( 'plugin_locale', get_locale(), 'master-slider' );
318
+ load_textdomain( 'master-slider', trailingslashit( WP_LANG_DIR ) . 'master-slider' . '/' . 'master-slider' . '-' . $locale . '.mo' );
319
+ load_plugin_textdomain( 'master-slider', FALSE, basename( MSWP_AVERTA_DIR ) . '/languages/' );
320
+ }
 
 
 
321
 
322
  }
323
 
328
 
329
 
330
  class MSP_AttachmentFields {
331
+
332
  private $fields = array();
333
 
334
+ function __construct($fields = null) {
335
+ if(isset($fields) && is_array($fields))
336
+ $this->$fields = $fields;
337
+ }
338
 
339
  public function add($field){
340
  if(is_array($field))
349
  public function addFields( $form_fields, $post ){
350
 
351
  $form_fields['image_rating'] = array(
352
+ 'label' => __( 'rating', "default" ),
353
+ 'input' => 'radio',
354
+ 'options' => array(
355
+ '1' => 1,
356
+ '2' => 2,
357
+ '3' => 3,
358
+ '4' => 4,
359
+ '5' => 5
360
+ ),
361
+ 'application' => 'image',
362
+ 'exclusions' => array( 'audio', 'video' )
363
+ );
364
 
365
  return $form_fields;
366
  }