Ditty News Ticker - Version 3.0.17

Version Description

  • Added Import/Export functionality
  • Added Ditty shortcode to Ditty edit screen
  • Re-ordered Ditty sub menu
  • RTL admin updates
  • Added Avada builder element
Download this release

Release Info

Developer metaphorcreations
Plugin Icon 128x128 Ditty News Ticker
Version 3.0.17
Comparing to
See all releases

Code changes from version 3.0.16 to 3.0.17

ditty-news-ticker.php CHANGED
@@ -4,7 +4,7 @@
4
  * Plugin Name: Ditty (formerly Ditty News Ticker)
5
  * Plugin URI: https://www.metaphorcreations.com/ditty
6
  * Description: Formerly Ditty News Ticker. Ditty is a multi-functional data display plugin.
7
- * Version: 3.0.16
8
  * Author: Metaphor Creations
9
  * Author URI: https://www.metaphorcreations.com
10
  * License: GPL-2.0+
@@ -20,7 +20,7 @@ if ( ! defined( 'WPINC' ) ) {
20
 
21
  // Plugin version.
22
  if ( ! defined( 'DITTY_VERSION' ) ) {
23
- define( 'DITTY_VERSION', '3.0.16' );
24
  }
25
 
26
  // Plugin Folder Path.
4
  * Plugin Name: Ditty (formerly Ditty News Ticker)
5
  * Plugin URI: https://www.metaphorcreations.com/ditty
6
  * Description: Formerly Ditty News Ticker. Ditty is a multi-functional data display plugin.
7
+ * Version: 3.0.17
8
  * Author: Metaphor Creations
9
  * Author URI: https://www.metaphorcreations.com
10
  * License: GPL-2.0+
20
 
21
  // Plugin version.
22
  if ( ! defined( 'DITTY_VERSION' ) ) {
23
+ define( 'DITTY_VERSION', '3.0.17' );
24
  }
25
 
26
  // Plugin Folder Path.
includes/admin/columns.php CHANGED
@@ -23,6 +23,7 @@ function ditty_manage_posts_columns( $columns, $post_type ){
23
  case 'ditty':
24
  $new_columns['ditty_display'] = __( 'Display', 'ditty-news-ticker' );
25
  $new_columns['ditty_display_type'] = __( 'Display Type', 'ditty-news-ticker' );
 
26
  break;
27
  }
28
 
@@ -35,7 +36,7 @@ add_filter( 'manage_posts_columns', 'ditty_manage_posts_columns', 10, 2 );
35
  /**
36
  * Display the custom edit screen columns
37
  *
38
- * @since 3.0
39
  */
40
  function ditty_manage_posts_custom_column( $column, $post_id ){
41
  global $post;
@@ -76,17 +77,20 @@ function ditty_manage_posts_custom_column( $column, $post_id ){
76
  break;
77
  case 'ditty_display':
78
  $display_id = get_post_meta( $post_id, '_ditty_display', true );
79
- $display = new Ditty_Display( $display_id );
80
- $label = $display->get_label();
81
- echo "<a href='edit.php?post_type={$post->post_type}&ditty_display={$display_id}'>".$label."</a> - <a href='" . get_edit_post_link( $display->get_display_id() ) . "'>" . __( 'Edit', 'ditty-news-ticker' ) . "</a>";
82
- //echo "{$label} - <a href='" . get_edit_post_link( $display->get_display_id() ) . "'>" . __( 'Edit', 'ditty-news-ticker' ) . "</a>";
83
- //echo $label;
84
  break;
85
  case 'ditty_display_version':
86
  $meta = get_post_meta( $post_id, '_ditty_display_version', true );
87
  $label = $meta;
88
  echo $label;
89
  break;
 
 
 
90
  default:
91
  break;
92
  }
23
  case 'ditty':
24
  $new_columns['ditty_display'] = __( 'Display', 'ditty-news-ticker' );
25
  $new_columns['ditty_display_type'] = __( 'Display Type', 'ditty-news-ticker' );
26
+ $new_columns['ditty_shortcode'] = __( 'Shortcode', 'ditty-news-ticker' );
27
  break;
28
  }
29
 
36
  /**
37
  * Display the custom edit screen columns
38
  *
39
+ * @since 3.0.17
40
  */
41
  function ditty_manage_posts_custom_column( $column, $post_id ){
42
  global $post;
77
  break;
78
  case 'ditty_display':
79
  $display_id = get_post_meta( $post_id, '_ditty_display', true );
80
+ if ( $display_id ) {
81
+ $display = new Ditty_Display( $display_id );
82
+ $label = $display->get_label();
83
+ echo "<a href='edit.php?post_type={$post->post_type}&ditty_display={$display_id}'>".$label."</a> - <a href='" . get_edit_post_link( $display->get_display_id() ) . "'>" . __( 'Edit', 'ditty-news-ticker' ) . "</a>";
84
+ }
85
  break;
86
  case 'ditty_display_version':
87
  $meta = get_post_meta( $post_id, '_ditty_display_version', true );
88
  $label = $meta;
89
  echo $label;
90
  break;
91
+ case 'ditty_shortcode':
92
+ echo "[ditty id={$post_id}]";
93
+ break;
94
  default:
95
  break;
96
  }
includes/admin/export.php CHANGED
@@ -1,37 +1,277 @@
1
  <?php
2
 
3
  /**
4
- * Export posts
5
  *
6
- * @since 3.0.13
7
- */
8
- function ditty_export_posts_ajax() {
9
- check_ajax_referer( 'ditty', 'security' );
10
- if ( ! current_user_can( 'manage_ditty_settings' ) ) {
11
- return false;
12
- }
13
- $export_type_ajax = isset( $_POST['export_type'] ) ? $_POST['export_type'] : false;
14
- $export_options_ajax = isset( $_POST['export_options'] ) ? $_POST['export_options'] : false;
 
 
 
 
 
 
15
 
16
- switch( $export_type_ajax ) {
17
- case 'ditty':
18
- $data = ditty_export_ditty_posts();
19
- break;
20
- default:
21
- break;
22
- }
23
 
24
- $json_data = apply_filters( 'ditty_settings_save', $_POST, array() );
25
- wp_send_json( $json_data );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
26
  }
27
- add_action( 'wp_ajax_ditty_export_posts', 'ditty_export_posts_ajax' );
28
 
29
  /**
30
- * Export posts
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
31
  *
32
- * @since 3.0.13
33
  */
34
- function ditty_export_ditty_posts() {
35
  $args = array(
36
  'posts_per_page' => -1,
37
  'orderby' => 'post_date',
@@ -39,20 +279,516 @@ function ditty_export_ditty_posts() {
39
  );
40
  $posts = get_posts( $args );
41
 
42
- $post_exports = array();
 
 
43
  if ( is_array( $posts ) && count( $posts ) > 0 ) {
44
  foreach ( $posts as $i => $post ) {
45
- $post_data = array();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
46
 
47
- // Post object data
48
- $post_data['post'] = ( array ) $post;
49
 
50
- // Post custom meta
51
- $post_data['meta'] = get_post_custom( $post->ID );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
52
 
53
- // Post items
54
- $items = ditty_items_meta( $post->ID );
55
- $post_data['items'] = ( array ) $items;
56
  }
57
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
58
  }
1
  <?php
2
 
3
  /**
4
+ * Render the import/export page
5
  *
6
+ * @since 3.0.17
7
+ */
8
+
9
+ function ditty_heading() {
10
+ ?>
11
+ <header class="ditty-header">
12
+ <div class="ditty-header__wrapper">
13
+ <?php echo ditty_svg_logo(); ?>
14
+ </div>
15
+ </header>
16
+ <?php
17
+ }
18
+ function ditty_export_display() {
19
+ ?>
20
+ <div id="ditty-page" class="wrap">
21
 
22
+ <div id="ditty-page__header">
23
+ <h2><?php esc_html_e( 'Ditty Import/Export', 'ditty-news-ticker' ); ?></h2>
24
+ </div>
 
 
 
 
25
 
26
+ <div id="ditty-page__content">
27
+ <div id="ditty-settings">
28
+ <?php
29
+ $current_tab = isset( $_GET['tab'] ) ? sanitize_key( $_GET['tab'] ) : 'export_ditty';
30
+ $settings = apply_filters( 'ditty_settings_tabs', array(
31
+ 'export_ditty' => array(
32
+ 'icon_svg' => ditty_svg_d(),
33
+ 'label' => __( 'Export Ditty', 'ditty-news-ticker' ),
34
+ 'fields' => 'ditty_settings_export_ditty',
35
+ ),
36
+ 'export_layouts' => array(
37
+ 'icon' => 'fas fa-pencil-ruler',
38
+ 'label' => __( 'Export Layouts', 'ditty-news-ticker' ),
39
+ 'fields' => 'ditty_settings_export_layouts',
40
+ ),
41
+ 'export_displays' => array(
42
+ 'icon' => 'fas fa-tablet-alt',
43
+ 'label' => __( 'Export Displays', 'ditty-news-ticker' ),
44
+ 'fields' => 'ditty_settings_export_displays',
45
+ ),
46
+ 'import' => array(
47
+ 'icon' => 'fas fa-file-download',
48
+ 'label' => __( 'Import Posts', 'ditty-news-ticker' ),
49
+ 'fields' => 'ditty_settings_import',
50
+ ),
51
+ ) );
52
+ ?>
53
+
54
+ <div class="ditty-settings__tabs">
55
+ <?php
56
+ if ( is_array( $settings ) && count( $settings ) > 0 ) {
57
+ foreach ( $settings as $slug => $setting ) {
58
+ $active = ( $slug == $current_tab ) ? ' active' : '';
59
+ echo '<a href="' . add_query_arg( 'tab', $slug ) . '" class="ditty-settings__tab ditty-settings__tab--' . esc_attr( $slug ) . $active . '" data-panel="' . esc_attr( $slug ) . '">';
60
+ if ( isset( $setting['icon'] ) ) {
61
+ echo '<i class="' . esc_attr( $setting['icon'] ) . '"></i>';
62
+ } elseif( isset( $setting['icon_svg'] ) ) {
63
+ echo $setting['icon_svg'];
64
+ }
65
+ echo '<span>' . esc_html( $setting['label'] ) . '</span>';
66
+ echo '</a>';
67
+ }
68
+ }
69
+ ?>
70
+ </div>
71
+
72
+ <form class="ditty-settings__form" method="post" enctype="multipart/form-data">
73
+ <div class="ditty-notification-bar">
74
+ <div class="ditty-notification ditty-notification--updated"><?php echo esc_html( ditty_admin_strings( 'settings_updated' ) ); ?></div>
75
+ <div class="ditty-notification ditty-notification--warning"><?php echo esc_html( ditty_admin_strings( 'settings_changed' ) ); ?></div>
76
+ <div class="ditty-notification ditty-notification--error"><?php echo esc_html( ditty_admin_strings( 'settings_error' ) ); ?></div>
77
+ </div>
78
+ <div class="ditty-settings__panels">
79
+ <?php
80
+ if ( isset( $settings[$current_tab] ) ) {
81
+ ?>
82
+ <div class="ditty-settings__panel ditty-settings__panel--<?php echo esc_attr( $slug ); ?>" style="display:block;">
83
+ <?php
84
+ if ( isset( $settings[$current_tab]['fields'] ) && function_exists( $settings[$current_tab]['fields'] ) ) {
85
+ call_user_func( $settings[$current_tab]['fields'] );
86
+ }
87
+ ?>
88
+ </div>
89
+ <?php
90
+ }
91
+ ?>
92
+ </div>
93
+ <input type="hidden" name="ditty_export_nonce" value="<?php echo wp_create_nonce( basename( __FILE__ ) ); ?>" />
94
+ <div class="ditty-updating-overlay"></div>
95
+ </form>
96
+ </div>
97
+ </div>
98
+ </div><!-- /.wrap -->
99
+ <?php
100
  }
 
101
 
102
  /**
103
+ * Setup the import and export fields
104
+ *
105
+ * @since 3.0.17
106
+ */
107
+ function ditty_settings_import() {
108
+ $fields = array(
109
+ 'ditty_import_heading' => array(
110
+ 'type' => 'heading',
111
+ 'id' => 'ditty_import_heading',
112
+ 'name' => esc_html__( 'Ditty Import', 'ditty-news-ticker' ),
113
+ 'desc' => esc_html__( "Select a Ditty export file you would like to import. Please make sure your file has the .json extension, and that it was generated by the Ditty Export tool. When you click the import button below, Ditty will import the posts.", 'ditty-news-ticker' ),
114
+ ),
115
+ );
116
+
117
+ if ( isset( $_POST['ditty_import_button'] ) ) {
118
+ $fields['ditty_import_options'] = array(
119
+ 'type' => 'html',
120
+ 'id' => 'ditty_import_options',
121
+ 'std' => ditty_import_options(),
122
+ );
123
+ $fields['ditty_new_import_button'] = array(
124
+ 'type' => 'html',
125
+ 'id' => 'ditty_new_import_button',
126
+ 'std' => '<a class="ditty-button" href="' . admin_url( 'edit.php?post_type=ditty&page=ditty_export&tab=import' ) . '">' . esc_html__( 'New Import', 'ditty-news-ticker' ) . '</a>',
127
+ );
128
+ } else {
129
+ $fields['ditty_import_posts'] = array(
130
+ 'type' => 'text',
131
+ 'id' => 'ditty_import_posts',
132
+ 'input_class' => 'ditty-export-posts',
133
+ 'atts' => array(
134
+ 'type' => 'file',
135
+ ),
136
+ );
137
+ $fields['ditty_import_button'] = array(
138
+ 'type' => 'button',
139
+ 'id' => 'ditty_import_button',
140
+ 'label' => esc_html__( 'Import Posts', 'ditty-news-ticker' ) . ' <i class="fas fa-sync-alt fa-spin"></i>',
141
+ 'icon_after' => 'fas fa-sync-alt fa-spin',
142
+ 'input_class' => 'ditty-import-button',
143
+ 'atts' => array(
144
+ 'type' => 'submit',
145
+ ),
146
+ );
147
+ }
148
+ ditty_fields( $fields );
149
+ }
150
+
151
+ /**
152
+ * Export Ditty posts
153
+ *
154
+ * @since 3.0.17
155
+ */
156
+ function ditty_settings_export_ditty() {
157
+ $fields = array(
158
+ 'ditty_export_heading' => array(
159
+ 'type' => 'heading',
160
+ 'id' => 'ditty_export_heading',
161
+ 'name' => esc_html__( 'Export Ditty', 'ditty-news-ticker' ),
162
+ 'desc' => esc_html__( "Select the Ditty you would like to export. When you click the download button below, Ditty will create a JSON file for you to save to your computer. Once you've saved the download file, you can use the Import tool to import the Ditty posts. You can optionally include the connected Layouts and Displays for each Ditty.", 'ditty-news-ticker' ),
163
+ ),
164
+ 'ditty_export_ditty_ids' => array(
165
+ 'type' => 'checkboxes',
166
+ 'id' => 'ditty_export_ditty_ids',
167
+ 'options' => ditty_export_ditty_options(),
168
+ 'input_class' => 'ditty-export-posts',
169
+ ),
170
+ 'ditty_export_connections' => array(
171
+ 'name' => esc_html__( 'Connected Posts', 'ditty-news-ticker' ),
172
+ 'desc' => esc_html__( "Do you want to export connected Layouts and Displays for your Ditty?", 'ditty-news-ticker' ),
173
+ 'type' => 'checkboxes',
174
+ 'id' => 'ditty_export_connections',
175
+ 'inline' => true,
176
+ 'options' => array(
177
+ 'layouts' => esc_html__( 'Export connected Layouts', 'ditty-news-ticker' ),
178
+ 'displays' => esc_html__( 'Export connected Displays', 'ditty-news-ticker' ),
179
+ ),
180
+ 'std' => array(
181
+ 'layouts' => 'layouts',
182
+ 'displays' => 'displays',
183
+ ),
184
+ 'class' => 'ditty-field-heading--top',
185
+ ),
186
+ 'ditty_export_button' => array(
187
+ 'type' => 'button',
188
+ 'id' => 'ditty_export_button',
189
+ 'label' => esc_html__( 'Export Selected Posts', 'ditty-news-ticker' ) . ' <i class="fas fa-sync-alt fa-spin"></i>',
190
+ 'icon_after' => 'fas fa-sync-alt fa-spin',
191
+ 'input_class' => 'ditty-export-button',
192
+ 'atts' => array(
193
+ 'disabled' => 'disabled',
194
+ 'type' => 'submit',
195
+ ),
196
+ ),
197
+ );
198
+ ditty_fields( $fields );
199
+ }
200
+
201
+ /**
202
+ * Export Ditty posts
203
+ *
204
+ * @since 3.0.17
205
+ */
206
+ function ditty_settings_export_layouts() {
207
+ $fields = array(
208
+ 'ditty_export_heading' => array(
209
+ 'type' => 'heading',
210
+ 'id' => 'ditty_export_heading',
211
+ 'name' => esc_html__( 'Export Layouts', 'ditty-news-ticker' ),
212
+ 'desc' => esc_html__( "Select the Layouts you would like to export. When you click the download button below, Ditty will create a JSON file for you to save to your computer. Once you've saved the download file, you can use the Import tool to import the Layout posts.", 'ditty-news-ticker' ),
213
+ ),
214
+ 'ditty_export_layout_ids' => array(
215
+ 'type' => 'checkboxes',
216
+ 'id' => 'ditty_export_layout_ids',
217
+ 'options' => ditty_export_layout_options(),
218
+ 'input_class' => 'ditty-export-posts',
219
+ ),
220
+ 'ditty_export_button' => array(
221
+ 'type' => 'button',
222
+ 'id' => 'ditty_export_button',
223
+ 'label' => esc_html__( 'Export Selected Posts', 'ditty-news-ticker' ) . ' <i class="fas fa-sync-alt fa-spin"></i>',
224
+ 'icon_after' => 'fas fa-sync-alt fa-spin',
225
+ 'input_class' => 'ditty-export-button',
226
+ 'atts' => array(
227
+ 'disabled' => 'disabled',
228
+ 'type' => 'submit',
229
+ ),
230
+ ),
231
+ );
232
+ ditty_fields( $fields );
233
+ }
234
+
235
+ /**
236
+ * Export Ditty posts
237
+ *
238
+ * @since 3.0.17
239
+ */
240
+ function ditty_settings_export_displays() {
241
+ $fields = array(
242
+ 'ditty_export_heading' => array(
243
+ 'type' => 'heading',
244
+ 'id' => 'ditty_export_heading',
245
+ 'name' => esc_html__( 'Export Displays', 'ditty-news-ticker' ),
246
+ 'desc' => esc_html__( "Select the Displays you would like to export. When you click the download button below, Ditty will create a JSON file for you to save to your computer. Once you've saved the download file, you can use the Import tool to import the Display posts.", 'ditty-news-ticker' ),
247
+ ),
248
+ 'ditty_export_display_ids' => array(
249
+ 'type' => 'checkboxes',
250
+ 'id' => 'ditty_export_display_ids',
251
+ 'options' => ditty_export_display_options(),
252
+ 'input_class' => 'ditty-export-posts',
253
+ ),
254
+ 'ditty_export_button' => array(
255
+ 'type' => 'button',
256
+ 'id' => 'ditty_export_button',
257
+ 'label' => esc_html__( 'Export Selected Posts', 'ditty-news-ticker' ) . ' <i class="fas fa-sync-alt fa-spin"></i>',
258
+ 'icon_after' => 'fas fa-sync-alt fa-spin',
259
+ 'input_class' => 'ditty-export-button',
260
+ 'atts' => array(
261
+ 'disabled' => 'disabled',
262
+ 'type' => 'submit',
263
+ ),
264
+ ),
265
+ );
266
+ ditty_fields( $fields );
267
+ }
268
+
269
+ /**
270
+ * Create the Ditty export fields
271
  *
272
+ * @since 3.0.17
273
  */
274
+ function ditty_export_ditty_options() {
275
  $args = array(
276
  'posts_per_page' => -1,
277
  'orderby' => 'post_date',
279
  );
280
  $posts = get_posts( $args );
281
 
282
+ $options = array(
283
+ 'select_all' => esc_html__( 'Select all Ditty', 'ditty-news-ticker' ),
284
+ );
285
  if ( is_array( $posts ) && count( $posts ) > 0 ) {
286
  foreach ( $posts as $i => $post ) {
287
+ $options[$post->ID] = $post->post_title;
288
+ }
289
+ }
290
+ return $options;
291
+ }
292
+
293
+ /**
294
+ * Create the Layout export fields
295
+ *
296
+ * @since 3.0.17
297
+ */
298
+ function ditty_export_layout_options() {
299
+ $layouts = ditty_layout_posts();
300
+ $options = array(
301
+ 'select_all' => esc_html__( 'Select all Layouts', 'ditty-news-ticker' ),
302
+ );
303
+ if ( is_array( $layouts ) && count( $layouts ) > 0 ) {
304
+ foreach ( $layouts as $i => $layout ) {
305
+ $version = get_post_meta( $layout->ID, '_ditty_layout_version', true );
306
+ $version_string = '';
307
+ if ( $version ) {
308
+ $version_string = " <small class='ditty-layout-version'>(v{$version})</small>";
309
+ }
310
+ $options[$layout->ID] = $layout->post_title . $version_string;
311
+ }
312
+ }
313
+ return $options;
314
+ }
315
+
316
+ /**
317
+ * Create the Display export fields
318
+ *
319
+ * @since 3.0.17
320
+ */
321
+ function ditty_export_display_options() {
322
+ $displays = ditty_display_posts();
323
+ $options = array(
324
+ 'select_all' => esc_html__( 'Select all Displays', 'ditty-news-ticker' ),
325
+ );
326
+ if ( is_array( $displays ) && count( $displays ) > 0 ) {
327
+ foreach ( $displays as $i => $display ) {
328
+ $version = get_post_meta( $display->ID, '_ditty_display_version', true );
329
+ $version_string = '';
330
+ if ( $version ) {
331
+ $version_string = " <small class='ditty-display-version'>(v{$version})</small>";
332
+ }
333
+ $options[$display->ID] = $display->post_title . $version_string;
334
+ }
335
+ }
336
+ return $options;
337
+ }
338
+
339
+ /**
340
+ * Create the export file
341
+ *
342
+ * @since 3.0.17
343
+ */
344
+ function ditty_create_export_file() {
345
+ if ( ! isset( $_POST['ditty_export_button'] ) ) {
346
+ return false;
347
+ }
348
+ // verify nonce
349
+ if ( ! isset( $_POST['ditty_export_nonce'] ) || ! wp_verify_nonce( $_POST['ditty_export_nonce'], basename( __FILE__ ) ) ) {
350
+ return false;
351
+ }
352
+ $export = array();
353
+ $ditty_ids = isset( $_POST['ditty_export_ditty_ids'] ) ? $_POST['ditty_export_ditty_ids'] : array();
354
+ $layout_ids = isset( $_POST['ditty_export_layout_ids'] ) ? $_POST['ditty_export_layout_ids'] : array();
355
+ $display_ids = isset( $_POST['ditty_export_display_ids'] ) ? $_POST['ditty_export_display_ids'] : array();
356
+ $connections = isset( $_POST['ditty_export_connections'] ) ? $_POST['ditty_export_connections'] : array();
357
+
358
+ if ( ! empty( $ditty_ids ) ) {
359
+ if ( $ditty_data = ditty_export_ditty_posts( $ditty_ids ) ) {
360
+ if ( isset( $ditty_data['ditty'] ) ) {
361
+ $export['ditty'] = $ditty_data['ditty'];
362
+ }
363
+ if ( isset( $connections['layouts'] ) && isset( $ditty_data['layout_ids'] ) ) {
364
+ $layout_ids = array_merge( $layout_ids, $ditty_data['layout_ids'] );
365
+ $layout_ids = array_unique( $layout_ids );
366
+ }
367
+ if ( isset( $connections['displays'] ) && isset( $ditty_data['display_ids'] ) ) {
368
+ $display_ids = array_merge( $display_ids, $ditty_data['display_ids'] );
369
+ $display_ids = array_unique( $display_ids );
370
+ }
371
+ }
372
+ }
373
+
374
+ if ( ! empty( $layout_ids ) ) {
375
+ if ( $layout_data = ditty_export_ditty_layouts( $layout_ids ) ) {
376
+ $export['layouts'] = $layout_data;
377
+ }
378
+ }
379
+
380
+ if ( ! empty( $display_ids ) ) {
381
+ if ( $display_data = ditty_export_ditty_displays( $display_ids ) ) {
382
+ $export['displays'] = $display_data;
383
+ }
384
+ }
385
+
386
+ if ( empty( $export ) ) {
387
+ return false;
388
+ }
389
+
390
+ $export_json = json_encode( $export );
391
+ $filename = 'ditty-export-' . date( 'Y-m-d' ) . '.json';
392
+ $filename = sanitize_file_name( $filename );
393
+ header( 'Content-Description: File Transfer' );
394
+ header( "Content-Disposition: attachment; filename=$filename" );
395
+ header( 'Content-Type: application/json; charset=' . get_option( 'blog_charset' ), true );
396
+ echo $export_json;
397
+ die();
398
+ }
399
+ add_action( 'admin_init', 'ditty_create_export_file' );
400
+
401
+ /**
402
+ * Export posts
403
+ *
404
+ * @since 3.0.17
405
+ */
406
+ function ditty_export_ditty_posts( $post_ids ) {
407
+ $export = array();
408
+ $dittys = array();
409
+ $displays = array();
410
+ $layouts = array();
411
+
412
+ if ( is_array( $post_ids ) && count( $post_ids ) > 0 ) {
413
+ foreach ( $post_ids as $i => $post_id ) {
414
+ if ( 'select_all' == $post_id ) {
415
+ continue;
416
+ }
417
+ $uniq_id = ditty_maybe_add_uniq_id( $post_id );
418
+ $display = get_post_meta( $post_id, '_ditty_display', true );
419
+ $display_uniq_id = ditty_maybe_add_uniq_id( $display );
420
 
421
+ // Store the display for possible export
422
+ $displays[$display] = $display;
423
 
424
+ $items = array();
425
+ $all_meta = Ditty()->db_items->get_items( $post_id );
426
+ if ( is_array( $all_meta ) && count( $all_meta ) > 0 ) {
427
+ foreach ( $all_meta as $i => $meta ) {
428
+ if ( is_object( $meta ) ) {
429
+ $meta = ( array ) $meta;
430
+ }
431
+
432
+ // Clean and store all item custom
433
+ $custom_meta = ditty_item_get_all_meta( $meta['item_id'] );
434
+ if ( is_array( $custom_meta ) && count( $custom_meta ) > 0 ) {
435
+ $cleaned_meta = array();
436
+ foreach ( $custom_meta as $data ) {
437
+ if ( is_object( $data ) ) {
438
+ $data = ( array ) $data;
439
+ }
440
+ $data['meta_value'] = maybe_unserialize( $data['meta_value'] );
441
+ unset( $data['meta_id'] );
442
+ unset( $data['item_id'] );
443
+ $cleaned_meta[] = $data;
444
+ }
445
+ $meta['custom_meta'] = $cleaned_meta;
446
+ }
447
+
448
+ $item_value = maybe_unserialize( $meta['item_value'] );
449
+ $meta['item_value'] = $item_value;
450
+
451
+ $layout_value = maybe_unserialize( $meta['layout_value'] );
452
+ $updated_layout_value = array();
453
+ if ( is_array( $layout_value ) && count( $layout_value ) > 0 ) {
454
+ foreach ( $layout_value as $variation => $layout_id ) {
455
+ $layouts[$layout_id] = $layout_id;
456
+ $updated_layout_value[$variation] = ditty_maybe_add_uniq_id( $layout_id );
457
+ }
458
+ }
459
+ $meta['layout_value'] = $updated_layout_value;
460
+
461
+ unset( $meta['item_id'] );
462
+ unset( $meta['date_created'] );
463
+ unset( $meta['date_modified'] );
464
+ unset( $meta['ditty_id'] );
465
+ $items[] = $meta;
466
+ }
467
+ }
468
+
469
+ $dittys[$uniq_id] = array(
470
+ 'label' => get_the_title( $post_id ),
471
+ 'init' => get_post_meta( $post_id, '_ditty_init', true ),
472
+ 'settings' => get_post_meta( $post_id, '_ditty_settings', true ),
473
+ 'display' => $display_uniq_id,
474
+ 'items' => $items,
475
+ 'uniq_id' => $uniq_id,
476
+ );
477
+ }
478
+ }
479
+ if ( ! empty( $dittys ) ) {
480
+ $export['ditty'] = $dittys;
481
+ }
482
+ if ( ! empty( $layouts ) ) {
483
+ $export['layout_ids'] = array_values( $layouts );
484
+ }
485
+ if ( ! empty( $displays ) ) {
486
+ $export['display_ids'] = array_values( $displays );
487
+ }
488
+ if ( ! empty( $export ) ) {
489
+ return $export;
490
+ }
491
+ }
492
+
493
+ /**
494
+ * Export Layouts
495
+ *
496
+ * @since 3.0.17
497
+ */
498
+ function ditty_export_ditty_layouts( $post_ids ) {
499
+ $export = array();
500
+ $layouts = array();
501
+
502
+ if ( is_array( $post_ids ) && count( $post_ids ) > 0 ) {
503
+ foreach ( $post_ids as $i => $post_id ) {
504
+ if ( 'select_all' == $post_id ) {
505
+ continue;
506
+ }
507
+ $uniq_id = ditty_maybe_add_uniq_id( $post_id );
508
+ $layouts[$uniq_id] = array(
509
+ 'label' => get_the_title( $post_id ),
510
+ 'description' => get_post_meta( $post_id, '_ditty_layout_description', true ),
511
+ 'html' => stripslashes( get_post_meta( $post_id, '_ditty_layout_html', true ) ),
512
+ 'css' => get_post_meta( $post_id, '_ditty_layout_css', true ),
513
+ 'version' => get_post_meta( $post_id, '_ditty_layout_version', true ),
514
+ 'uniq_id' => $uniq_id,
515
+ );
516
+ }
517
+ }
518
+
519
+ if ( ! empty( $layouts ) ) {
520
+ return $layouts;
521
+ }
522
+ }
523
+
524
+ /**
525
+ * Export Displays
526
+ *
527
+ * @since 3.0.17
528
+ */
529
+ function ditty_export_ditty_displays( $post_ids ) {
530
+ $export = array();
531
+ $displays = array();
532
+
533
+ if ( is_array( $post_ids ) && count( $post_ids ) > 0 ) {
534
+ foreach ( $post_ids as $i => $post_id ) {
535
+ if ( 'select_all' == $post_id ) {
536
+ continue;
537
+ }
538
+ $uniq_id = ditty_maybe_add_uniq_id( $post_id );
539
+ $displays[$uniq_id] = array(
540
+ 'label' => get_the_title( $post_id ),
541
+ 'description' => get_post_meta( $post_id, '_ditty_display_description', true ),
542
+ 'display_type' => get_post_meta( $post_id, '_ditty_display_type', true ),
543
+ 'settings' => get_post_meta( $post_id, '_ditty_display_settings', true ),
544
+ 'version' => get_post_meta( $post_id, '_ditty_display_version', true ),
545
+ 'uniq_id' => $uniq_id,
546
+ );
547
+ }
548
+ }
549
+
550
+ if ( ! empty( $displays ) ) {
551
+ return $displays;
552
+ }
553
+ }
554
+
555
+ /**
556
+ * Create the export file
557
+ *
558
+ * @since 3.0.17
559
+ */
560
+ function ditty_import_posts() {
561
+ if ( ! isset( $_POST['ditty_import_button'] ) ) {
562
+ return false;
563
+ }
564
+ // verify nonce
565
+ if ( ! isset( $_POST['ditty_export_nonce'] ) || ! wp_verify_nonce( $_POST['ditty_export_nonce'], basename( __FILE__ ) ) ) {
566
+ return false;
567
+ }
568
+ if ( ! isset( $_FILES['ditty_import_posts'] ) || ! $_FILES['ditty_import_posts']['tmp_name'] ) {
569
+ return false;
570
+ }
571
+
572
+ $transient_name = 'ditty_import';
573
+ $transient_data = array();
574
+
575
+ $json_data = file_get_contents( $_FILES['ditty_import_posts']['tmp_name'] );
576
+ $data = json_decode( $json_data, 1 );
577
+ $layouts = array();
578
+ $displays = array();
579
+
580
+ // Import Layouts
581
+ if ( isset( $data['layouts'] ) && is_array( $data['layouts'] ) && count( $data['layouts'] ) > 0 ) {
582
+
583
+ // Add to the transient data
584
+ $transient_data['layouts'] = array();
585
+
586
+ foreach ( $data['layouts'] as $uniq_id => $layout_data ) {
587
+ $postarr = array(
588
+ 'post_type' => 'ditty_layout',
589
+ 'post_status' => 'publish',
590
+ 'post_title' => esc_html( $layout_data['label'] ),
591
+ );
592
+ $imported_layout_id = wp_insert_post( $postarr );
593
+ $imported_data = array(
594
+ 'id' => $imported_layout_id,
595
+ );
596
+
597
+ if ( isset( $layout_data['description'] ) ) {
598
+ update_post_meta( $imported_layout_id, '_ditty_layout_description', wp_kses_post( $layout_data['description'] ) );
599
+ }
600
+ if ( isset( $layout_data['html'] ) ) {
601
+ $html = str_replace( '\\', '\\\\', $layout_data['html'] );
602
+ update_post_meta( $imported_layout_id, '_ditty_layout_html', wp_kses_post( $html ) );
603
+ }
604
+ if ( isset( $layout_data['css'] ) ) {
605
+ update_post_meta( $imported_layout_id, '_ditty_layout_css', wp_kses_post( $layout_data['css'] ) );
606
+ }
607
+ if ( isset( $layout_data['version'] ) ) {
608
+ update_post_meta( $imported_layout_id, '_ditty_layout_version', wp_kses_post( $layout_data['version'] ) );
609
+ }
610
+ update_post_meta( $imported_layout_id, '_ditty_uniq_id', $uniq_id );
611
+ $layouts[$uniq_id] = $imported_layout_id;
612
+
613
+ $transient_data['layouts'][$imported_layout_id] = $imported_data;
614
+ }
615
+ }
616
+
617
+ // Import Displays
618
+ if ( isset( $data['displays'] ) && is_array( $data['displays'] ) && count( $data['displays'] ) > 0 ) {
619
+
620
+ // Add to the transient data
621
+ $transient_data['displays'] = array();
622
+
623
+ foreach ( $data['displays'] as $uniq_id => $display_data ) {
624
+ $postarr = array(
625
+ 'post_type' => 'ditty_display',
626
+ 'post_status' => 'publish',
627
+ 'post_title' => esc_html( $display_data['label'] ),
628
+ );
629
+ $imported_display_id = wp_insert_post( $postarr );
630
+ $imported_data = array(
631
+ 'id' => $imported_display_id,
632
+ );
633
+
634
+ if ( isset( $display_data['description'] ) ) {
635
+ update_post_meta( $imported_display_id, '_ditty_display_description', wp_kses_post( $display_data['description'] ) );
636
+ }
637
+ if ( isset( $display_data['display_type'] ) ) {
638
+ update_post_meta( $imported_display_id, '_ditty_display_type', esc_html( $display_data['display_type'] ) );
639
+ }
640
+ if ( $display_object = ditty_display_type_object( $display_data['display_type'] ) ) {
641
+ $fields = $display_object->fields();
642
+ $sanitized_settings = ditty_sanitize_fields( $fields, $display_data['settings'], "ditty_display_type_{$display_data['display_type']}" );
643
+ update_post_meta( $imported_display_id, '_ditty_display_settings', $sanitized_settings );
644
+ }
645
+ if ( isset( $display_data['version'] ) ) {
646
+ update_post_meta( $imported_display_id, '_ditty_display_version', wp_kses_post( $display_data['version'] ) );
647
+ }
648
+ update_post_meta( $imported_display_id, '_ditty_uniq_id', $uniq_id );
649
+ $displays[$uniq_id] = $imported_display_id;
650
 
651
+ $transient_data['displays'][$imported_display_id] = $imported_data;
 
 
652
  }
653
  }
654
+
655
+ // Import Ditty
656
+ if ( isset( $data['ditty'] ) && is_array( $data['ditty'] ) && count( $data['ditty'] ) > 0 ) {
657
+
658
+ // Add to the transient data
659
+ $transient_data['ditty'] = array();
660
+
661
+ foreach ( $data['ditty'] as $uniq_id => $ditty_data ) {
662
+ $postarr = array(
663
+ 'post_type' => 'ditty',
664
+ 'post_status' => 'publish',
665
+ 'post_title' => esc_html( $ditty_data['label'] ),
666
+ );
667
+ $imported_ditty_id = wp_insert_post( $postarr );
668
+ $imported_data = array(
669
+ 'id' => $imported_ditty_id,
670
+ );
671
+
672
+
673
+ $settings = isset( $ditty_data['settings'] ) ? $ditty_data['settings'] : array();
674
+ $sanitized_settings = Ditty()->singles->sanitize_settings( $settings );
675
+ update_post_meta( $imported_ditty_id, '_ditty_settings', $sanitized_settings );
676
+
677
+ update_post_meta( $imported_ditty_id, '_ditty_init', 'yes' );
678
+
679
+ if ( isset( $displays[$ditty_data['display']] ) ) {
680
+ $imported_data['display'] = $displays[$ditty_data['display']];
681
+ update_post_meta( $imported_ditty_id, '_ditty_display', intval( $displays[$ditty_data['display']] ) );
682
+ }
683
+
684
+ update_post_meta( $imported_ditty_id, '_ditty_uniq_id', $uniq_id );
685
+
686
+ // Add items
687
+ if ( is_array( $ditty_data['items'] ) && count( $ditty_data['items'] ) > 0 ) {
688
+ foreach ( $ditty_data['items'] as $i => $item ) {
689
+
690
+ // Gather the custom meta
691
+ $custom_meta = false;
692
+ if ( isset( $item['custom_meta'] ) ) {
693
+ $custom_meta = $item['custom_meta'];
694
+ unset( $item['custom_meta'] );
695
+ }
696
+
697
+ // Add the ditty id
698
+ $item['ditty_id'] = $imported_ditty_id;
699
+
700
+ // Add the item author
701
+ $item['item_author'] = get_current_user_id();
702
+
703
+ // Set the layouts
704
+ $updated_layout_value = array();
705
+ if ( is_array( $item['layout_value'] ) && count( $item['layout_value'] ) > 0 ) {
706
+ foreach ( $item['layout_value'] as $variation => $layout_id ) {
707
+ if ( isset( $layouts[$layout_id] ) ) {
708
+ $updated_layout_value[$variation] = $layouts[$layout_id];
709
+ }
710
+ }
711
+ }
712
+ $item['layout_value'] = $updated_layout_value;
713
+
714
+ // Sanitize and save item data
715
+ $sanitized_item_data = Ditty()->singles->sanitize_item_data( $item );
716
+ if ( $new_item_id = Ditty()->db_items->insert( apply_filters( 'ditty_item_db_data', $sanitized_item_data, $imported_ditty_id ), 'item' ) ) {
717
+
718
+ // Add the custom meta
719
+ if ( is_array( $custom_meta ) && count( $custom_meta ) > 0 ) {
720
+ foreach ( $custom_meta as $i => $meta ) {
721
+ ditty_item_add_meta( $new_item_id, esc_attr( $meta['meta_key'] ), $meta['meta_value'] );
722
+ }
723
+ }
724
+ }
725
+ }
726
+ }
727
+
728
+ $transient_data['ditty'][$imported_ditty_id] = $imported_data;
729
+ }
730
+ }
731
+ if ( ! empty( $transient_data ) ) {
732
+ set_transient( $transient_name, $transient_data );
733
+ }
734
+ }
735
+ add_action( 'admin_init', 'ditty_import_posts' );
736
+
737
+ /**
738
+ * Import options for the user
739
+ *
740
+ * @since 3.0.17
741
+ */
742
+ function ditty_import_options() {
743
+ $transient_name = 'ditty_import';
744
+ $transient_data = get_transient( $transient_name );
745
+ if ( ! $transient_data ) {
746
+ return false;
747
+ }
748
+
749
+ $html = '';
750
+
751
+ if ( isset( $transient_data['ditty'] ) && is_array( $transient_data['ditty'] ) && count( $transient_data['ditty'] ) > 0 ) {
752
+ $html .= '<div class="ditty-import__group">';
753
+ $html .= '<h3>' . esc_html__( 'Imported Ditty', 'ditty-news-ticker' ) . '</h3>';
754
+ $html .= '<ul class="ditty-import__list">';
755
+ foreach ( $transient_data['ditty'] as $i => $ditty ) {
756
+ $html .= '<li class="ditty-import__item">';
757
+ $html .= '<p class="ditty-import__post-title"><span>' . get_the_title( $ditty['id'] ) . '</span> <a href="' . get_edit_post_link( $ditty['id'] ) . '">' . esc_html__( 'Edit', 'ditty-news-ticker' ) . '</a></p> ';
758
+ // if ( isset( $ditty['display'] ) ) {
759
+ // $html .= '<p class="ditty-import__display"><strong>' . esc_html__( 'Display', 'ditty-news-ticker' ) . ':</strong> ' . get_the_title( $ditty['display'] ) . ' <a href="' . get_edit_post_link( $ditty['display'] ) . '">' . esc_html__( 'Edit', 'ditty-news-ticker' ) . '</a></p> ';
760
+ // }
761
+ $html .= '</li>';
762
+ }
763
+ $html .= '</ul>';
764
+ $html .= '</div>';
765
+ }
766
+
767
+ if ( isset( $transient_data['layouts'] ) && is_array( $transient_data['layouts'] ) && count( $transient_data['layouts'] ) > 0 ) {
768
+ $html .= '<div class="ditty-import__group">';
769
+ $html .= '<h3>' . esc_html__( 'Imported Layouts', 'ditty-news-ticker' ) . '</h3>';
770
+ $html .= '<ul class="ditty-import__list">';
771
+ foreach ( $transient_data['layouts'] as $i => $layout ) {
772
+ $html .= '<li class="ditty-import__item">';
773
+ $html .= '<p class="ditty-import__post-title"><span>' . get_the_title( $layout['id'] ) . '</span> <a href="' . get_edit_post_link( $layout['id'] ) . '">' . esc_html__( 'Edit', 'ditty-news-ticker' ) . '</a></p> ';
774
+ $html .= '</li>';
775
+ }
776
+ $html .= '</ul>';
777
+ $html .= '</div>';
778
+ }
779
+
780
+ if ( isset( $transient_data['displays'] ) && is_array( $transient_data['displays'] ) && count( $transient_data['displays'] ) > 0 ) {
781
+ $html .= '<div class="ditty-import__group">';
782
+ $html .= '<h3>' . esc_html__( 'Imported Displays', 'ditty-news-ticker' ) . '</h3>';
783
+ $html .= '<ul class="ditty-import__list">';
784
+ foreach ( $transient_data['displays'] as $i => $display ) {
785
+ $html .= '<li class="ditty-import__item">';
786
+ $html .= '<p class="ditty-import__post-title"><span>' . get_the_title( $display['id'] ) . '</span> <a href="' . get_edit_post_link( $display['id'] ) . '">' . esc_html__( 'Edit', 'ditty-news-ticker' ) . '</a></p> ';
787
+ $html .= '</li>';
788
+ }
789
+ $html .= '</ul>';
790
+ $html .= '</div>';
791
+ }
792
+
793
+ return $html;
794
  }
includes/admin/settings.php CHANGED
@@ -14,6 +14,14 @@ function ditty_settings_pages() {
14
  'ditty_settings', // The ID used to represent this submenu item
15
  'ditty_settings_display' // The callback function used to render the options for this submenu item
16
  );
 
 
 
 
 
 
 
 
17
  }
18
  add_action( 'admin_menu', 'ditty_settings_pages', 5 );
19
 
@@ -32,7 +40,7 @@ function ditty_settings_display() {
32
  </div>
33
 
34
  <div id="ditty-page__content">
35
- <div id="ditty-settings">
36
 
37
  <?php
38
  $init_panel = isset( $_GET['tab'] ) ? sanitize_key( $_GET['tab'] ) : false;
@@ -88,7 +96,7 @@ function ditty_settings_display() {
88
  ?>
89
  </div>
90
 
91
- <form class="ditty-settings__form">
92
  <div class="ditty-settings__header">
93
  <a href="#" class="ditty-button ditty-button--primary ditty-settings__save"><?php echo esc_html( ditty_admin_strings( 'settings_save' ) ); ?></a>
94
  </div>
@@ -377,105 +385,6 @@ function ditty_settings_global_ditty() {
377
  ditty_fields( $fields );
378
  }
379
 
380
- /**
381
- * Setup the import and export fields
382
- *
383
- * @since 3.0.14
384
- */
385
- function ditty_settings_import_export() {
386
- $fields = array(
387
- 'ditty_heading' => array(
388
- 'type' => 'heading',
389
- 'id' => 'heading',
390
- 'name' => esc_html__( 'Ditty Import / Export', 'ditty-news-ticker' ),
391
- ),
392
- 'ditty_import' => array(
393
- 'type' => 'html',
394
- 'id' => 'ditty_import',
395
- 'name' => esc_html__( 'Ditty Import', 'ditty-news-ticker' ),
396
- 'help' => esc_html__( 'Import Ditty posts', 'ditty-news-ticker' ),
397
- 'std' => 'Import button should go here',
398
- ),
399
- 'ditty_export' => array(
400
- 'type' => 'html',
401
- 'id' => 'ditty_export',
402
- 'name' => esc_html__( 'Ditty Export', 'ditty-news-ticker' ),
403
- 'desc' => esc_html__( 'Export Ditty posts', 'ditty-news-ticker' ),
404
- 'std' => ditty_export_ditty(),
405
- ),
406
- 'layout_heading' => array(
407
- 'type' => 'heading',
408
- 'id' => 'heading',
409
- 'name' => esc_html__( 'Layout Import / Export', 'ditty-news-ticker' ),
410
- ),
411
- 'layout_import' => array(
412
- 'type' => 'html',
413
- 'id' => 'layout_import',
414
- 'name' => esc_html__( 'Layout Import', 'ditty-news-ticker' ),
415
- 'help' => esc_html__( 'Import Layout posts', 'ditty-news-ticker' ),
416
- 'std' => 'Import button should go here',
417
- ),
418
- 'layout_export' => array(
419
- 'type' => 'html',
420
- 'id' => 'layout_export',
421
- 'name' => esc_html__( 'Layout Export', 'ditty-news-ticker' ),
422
- 'help' => esc_html__( 'Export Layout posts', 'ditty-news-ticker' ),
423
- 'std' => 'Export button should go here',
424
- ),
425
- 'display_heading' => array(
426
- 'type' => 'heading',
427
- 'id' => 'heading',
428
- 'name' => esc_html__( 'Display Import / Export', 'ditty-news-ticker' ),
429
- ),
430
- 'display_import' => array(
431
- 'type' => 'html',
432
- 'id' => 'display_import',
433
- 'name' => esc_html__( 'Display Import', 'ditty-news-ticker' ),
434
- 'help' => esc_html__( 'Import Display posts', 'ditty-news-ticker' ),
435
- 'std' => 'Import button should go here',
436
- ),
437
- 'display_export' => array(
438
- 'type' => 'html',
439
- 'id' => 'display_export',
440
- 'name' => esc_html__( 'Display Export', 'ditty-news-ticker' ),
441
- 'help' => esc_html__( 'Export Display posts', 'ditty-news-ticker' ),
442
- 'std' => 'Export button should go here',
443
- ),
444
- );
445
- ditty_fields( $fields );
446
- }
447
-
448
- function ditty_export_ditty() {
449
- $fields = array(
450
- 'ditty_export_options' => array(
451
- 'type' => 'checkboxes',
452
- 'id' => 'ditty_export_options',
453
- 'options' => array(
454
- 'layouts' => esc_html__( 'Export Attached Layouts', 'ditty-news-ticker' ),
455
- 'displays' => esc_html__( 'Export Attached Displays', 'ditty-news-ticker' ),
456
- ),
457
- 'inline' => true,
458
- 'field_only' => true,
459
- 'std' => array(
460
- 'layouts',
461
- 'displays'
462
- ),
463
- ),
464
- 'ditty_export_button' => array(
465
- 'type' => 'button',
466
- 'id' => 'ditty_export_button',
467
- 'label' => esc_html__( 'Export All Ditty posts', 'ditty-news-ticker' ) . ' <i class="fas fa-sync-alt fa-spin"></i>',
468
- 'field_only' => true,
469
- 'icon_after' => 'fas fa-sync-alt fa-spin',
470
- 'atts' => array(
471
- 'data-export_type' => 'ditty',
472
- ),
473
- ),
474
- );
475
- $render_fields = ditty_fields( $fields, false, 'return' );
476
- return $render_fields;
477
- }
478
-
479
  /**
480
  * Save settings via ajax
481
  *
14
  'ditty_settings', // The ID used to represent this submenu item
15
  'ditty_settings_display' // The callback function used to render the options for this submenu item
16
  );
17
+ add_submenu_page(
18
+ 'edit.php?post_type=ditty', // The ID of the top-level menu page to which this submenu item belongs
19
+ __( 'Import/Export', 'ditty-news-ticker' ), // The value used to populate the browser's title bar when the menu page is active
20
+ __( 'Import/Export', 'ditty-news-ticker' ), // The label of this submenu item displayed in the menu
21
+ 'manage_ditty_settings', // What roles are able to access this submenu item
22
+ 'ditty_export', // The ID used to represent this submenu item
23
+ 'ditty_export_display' // The callback function used to render the options for this submenu item
24
+ );
25
  }
26
  add_action( 'admin_menu', 'ditty_settings_pages', 5 );
27
 
40
  </div>
41
 
42
  <div id="ditty-page__content">
43
+ <div id="ditty-settings" class="dynamic-tabs">
44
 
45
  <?php
46
  $init_panel = isset( $_GET['tab'] ) ? sanitize_key( $_GET['tab'] ) : false;
96
  ?>
97
  </div>
98
 
99
+ <form class="ditty-settings__form" method="post" data-nonce="<?php echo wp_create_nonce( basename( __FILE__ ) ); ?>">
100
  <div class="ditty-settings__header">
101
  <a href="#" class="ditty-button ditty-button--primary ditty-settings__save"><?php echo esc_html( ditty_admin_strings( 'settings_save' ) ); ?></a>
102
  </div>
385
  ditty_fields( $fields );
386
  }
387
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
388
  /**
389
  * Save settings via ajax
390
  *
includes/builders/fusion/builder.php ADDED
@@ -0,0 +1,53 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ function ditty_fusion_elements() {
4
+ $ditty_options = array( '' => esc_html__( 'Select a Ditty', 'ditty-news-ticker' ) ) + Ditty()->singles->select_field_options();
5
+ $display_options = array( '' => esc_html__( 'Use Default Display', 'ditty-news-ticker' ) ) + Ditty()->displays->select_field_options();
6
+
7
+ $args = array(
8
+ 'name' => esc_attr__( 'Ditty', 'ditty-news-ticker' ),
9
+ 'shortcode' => 'ditty',
10
+ 'icon' => 'ditty',
11
+ 'preview' => DITTY_DIR . '/includes/builders/fusion/preview.php',
12
+ 'preview_id' => 'fusion-builder-block-module-ditty-template',
13
+ 'allow_generator' => true,
14
+ 'params' => array(
15
+ array(
16
+ 'type' => 'select',
17
+ 'heading' => esc_attr__( 'Ditty', 'ditty-news-ticker' ),
18
+ 'description' => esc_attr__( 'Select a Ditty to display.', 'ditty-news-ticker' ),
19
+ 'param_name' => 'id',
20
+ 'value' => $ditty_options,
21
+ ),
22
+ array(
23
+ 'type' => 'select',
24
+ 'heading' => esc_attr__( 'Display', 'ditty-news-ticker' ),
25
+ 'description' => esc_html__( 'Optional: Select a custom display to use with the Ditty.', 'ditty-news-ticker' ),
26
+ 'param_name' => 'display',
27
+ 'value' => $display_options,
28
+ ),
29
+ array(
30
+ 'type' => 'textfield',
31
+ 'heading' => esc_html__( 'Custom Classes', 'ditty-news-ticker' ),
32
+ 'description' => esc_html__( 'Optional: Add custom classes to the Ditty.', 'ditty-news-ticker' ),
33
+ 'param_name' => 'class',
34
+ ),
35
+ array(
36
+ 'group' => esc_html__( 'Advanced', 'ditty-news-ticker' ),
37
+ 'type' => 'textarea',
38
+ 'heading' => esc_html__( 'Custom Display Settings', 'ditty-news-ticker' ),
39
+ 'description' => esc_html__( 'Add custom display settings, using a query string.', 'ditty-news-ticker' ),
40
+ 'param_name' => 'display_settings',
41
+ ),
42
+ array(
43
+ 'group' => esc_html__( 'Advanced', 'ditty-news-ticker' ),
44
+ 'type' => 'textarea',
45
+ 'heading' => esc_html__( 'Custom Layout Settings', 'ditty-news-ticker' ),
46
+ 'description' => esc_html__( 'Add custom layout settings, using a query string.', 'ditty-news-ticker' ),
47
+ 'param_name' => 'layout_settings',
48
+ ),
49
+ ),
50
+ );
51
+ fusion_builder_map( $args );
52
+ }
53
+ add_action( 'fusion_builder_before_init', 'ditty_fusion_elements' );
includes/builders/fusion/preview.php ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Underscore.js template.
4
+ *
5
+ * @package fusion-builder
6
+ */
7
+
8
+ ?>
9
+ <script type="text/template" id="fusion-builder-block-module-ditty-template">
10
+ <h4 class="fusion_module_title"><span class="fusion-module-icon {{ fusionAllElements[element_type].icon }}"></span>{{ fusionAllElements[element_type].name }}</h4>
11
+ <?php printf( esc_html__( 'Ditty: %s - Display: %s', 'fusion-builder' ), '{{ params.id }}', '{{ params.display }}' ); ?>
12
+ </script>
includes/class-ditty-displays.php CHANGED
@@ -62,10 +62,12 @@ class Ditty_Displays {
62
  */
63
  public function install_default( $display_type, $display_template = false, $display_version = false ) {
64
  $args = array(
65
- 'template' => $display_template,
66
- 'version' => $display_version,
 
 
67
  );
68
- if ( $display_ids = ditty_displays_with_type( $display_type, $args ) ) {
69
  return reset( $display_ids );
70
  }
71
 
@@ -156,10 +158,12 @@ class Ditty_Displays {
156
  $html .= '<ul id="ditty-templates-list__templates">';
157
  foreach ( $display_data['templates'] as $template => $template_data ) {
158
  $args = array(
159
- 'template' => $template,
160
- 'return' => 'versions',
 
 
161
  );
162
- $display_versions = ditty_displays_with_type( $display_type, $args );
163
  $html .= '<li class="ditty-templates-list__template">';
164
  $html .= '<div class="ditty-templates-list__template__heading">';
165
  $html .= '<h4 class="ditty-templates-list__template__label">';
62
  */
63
  public function install_default( $display_type, $display_template = false, $display_version = false ) {
64
  $args = array(
65
+ 'display_type' => $display_type,
66
+ 'template' => $display_template,
67
+ 'version' => $display_version,
68
+ 'fields' => 'ids',
69
  );
70
+ if ( $display_ids = ditty_display_posts( $args ) ) {
71
  return reset( $display_ids );
72
  }
73
 
158
  $html .= '<ul id="ditty-templates-list__templates">';
159
  foreach ( $display_data['templates'] as $template => $template_data ) {
160
  $args = array(
161
+ 'display_type' => $display_type,
162
+ 'template' => $template,
163
+ 'fields' => 'ids',
164
+ 'return' => 'versions',
165
  );
166
+ $display_versions = ditty_display_posts( $args );
167
  $html .= '<li class="ditty-templates-list__template">';
168
  $html .= '<div class="ditty-templates-list__template__heading">';
169
  $html .= '<h4 class="ditty-templates-list__template__label">';
includes/class-ditty-layouts.php CHANGED
@@ -31,8 +31,8 @@ class Ditty_Layouts {
31
  // General hooks
32
  add_filter( 'post_row_actions', array( $this, 'modify_list_row_actions' ), 10, 2 );
33
  add_action( 'ditty_editor_update', array( $this, 'update_drafts' ), 10, 2 );
34
- add_filter( 'ditty_item_db_data', array( $this, 'modify_ditty_item_db_data'), 10, 2 );
35
- add_filter( 'ditty_editor_save_data', array( $this, 'editor_add_save_data'), 10, 2 );
36
 
37
  // Layout elements
38
  add_action( 'ditty_editor_layout_elements', array( $this, 'editor_layout_icon' ), 5 );
@@ -41,6 +41,7 @@ class Ditty_Layouts {
41
  add_action( 'ditty_editor_layout_elements', array( $this, 'editor_layout_edit_css' ), 20 );
42
  add_action( 'ditty_editor_layout_elements', array( $this, 'editor_layout_clone' ), 25 );
43
  add_action( 'ditty_editor_layout_elements', array( $this, 'editor_layout_delete' ), 30 );
 
44
 
45
  // Ajax
46
  add_action( 'wp_ajax_ditty_editor_layout_variations', array( $this, 'editor_layout_variations_ajax' ) );
@@ -52,6 +53,8 @@ class Ditty_Layouts {
52
 
53
  add_action( 'wp_ajax_ditty_editor_layout_clone', array( $this, 'editor_clone_ajax' ) );
54
  add_action( 'wp_ajax_nopriv_ditty_editor_layout_clone', array( $this, 'editor_clone_ajax' ) );
 
 
55
 
56
  add_action( 'wp_ajax_ditty_editor_layout_fields', array( $this, 'editor_fields_ajax' ) );
57
  add_action( 'wp_ajax_nopriv_ditty_editor_layout_fields', array( $this, 'editor_fields_ajax' ) );
@@ -73,7 +76,7 @@ class Ditty_Layouts {
73
  'version' => $layout_version,
74
  'fields' => 'ids',
75
  );
76
- if ( $layouts = ditty_layouts_posts( $args ) ) {
77
  return end( $layouts );
78
  }
79
 
@@ -215,7 +218,7 @@ class Ditty_Layouts {
215
  'fields' => 'ids',
216
  'return' => 'versions',
217
  );
218
- $layout_versions = ditty_layouts_posts( $args );
219
  $html .= '<li class="ditty-templates-list__template">';
220
  $html .= '<div class="ditty-templates-list__template__heading">';
221
  $html .= '<h4 class="ditty-templates-list__template__label">';
@@ -460,7 +463,7 @@ class Ditty_Layouts {
460
  if ( $placeholder ) {
461
  $options[''] = $placeholder;
462
  }
463
- if ( $layouts = ditty_layouts_posts() ) {
464
  foreach ( $layouts as $layout_post ) {
465
  $title = $layout_post->post_title;
466
  if ( $version = get_post_meta( $layout_post->ID, '_ditty_layout_version', true ) ) {
@@ -541,6 +544,17 @@ class Ditty_Layouts {
541
  }
542
  }
543
 
 
 
 
 
 
 
 
 
 
 
 
544
  /**
545
  * Ditty Layout Variations list panel
546
  * @access public
@@ -650,7 +664,7 @@ class Ditty_Layouts {
650
  $args = array(
651
  'fields' => 'ids',
652
  );
653
- $layouts = ditty_layouts_posts( $args );
654
  $drafts = ditty_draft_layout_get();
655
  if ( ! is_array( $drafts ) ) {
656
  $drafts = array();
@@ -975,6 +989,18 @@ class Ditty_Layouts {
975
  }
976
  return $json_data;
977
  }
 
 
 
 
 
 
 
 
 
 
 
 
978
 
979
  /**
980
  * Save layout draft values on Ditty update
31
  // General hooks
32
  add_filter( 'post_row_actions', array( $this, 'modify_list_row_actions' ), 10, 2 );
33
  add_action( 'ditty_editor_update', array( $this, 'update_drafts' ), 10, 2 );
34
+ add_filter( 'ditty_item_db_data', array( $this, 'modify_ditty_item_db_data' ), 10, 2 );
35
+ add_filter( 'ditty_editor_save_data', array( $this, 'editor_add_save_data' ), 10, 2 );
36
 
37
  // Layout elements
38
  add_action( 'ditty_editor_layout_elements', array( $this, 'editor_layout_icon' ), 5 );
41
  add_action( 'ditty_editor_layout_elements', array( $this, 'editor_layout_edit_css' ), 20 );
42
  add_action( 'ditty_editor_layout_elements', array( $this, 'editor_layout_clone' ), 25 );
43
  add_action( 'ditty_editor_layout_elements', array( $this, 'editor_layout_delete' ), 30 );
44
+ //add_action( 'ditty_editor_layout_elements', array( $this, 'editor_layout_save' ), 35 );
45
 
46
  // Ajax
47
  add_action( 'wp_ajax_ditty_editor_layout_variations', array( $this, 'editor_layout_variations_ajax' ) );
53
 
54
  add_action( 'wp_ajax_ditty_editor_layout_clone', array( $this, 'editor_clone_ajax' ) );
55
  add_action( 'wp_ajax_nopriv_ditty_editor_layout_clone', array( $this, 'editor_clone_ajax' ) );
56
+ //add_action( 'wp_ajax_ditty_editor_layout_save_preview', array( $this, 'editor_save_preview_ajax' ) );
57
+ //add_action( 'wp_ajax_nopriv_ditty_editor_layout_save_preview', array( $this, 'editor_save_preview_ajax' ) );
58
 
59
  add_action( 'wp_ajax_ditty_editor_layout_fields', array( $this, 'editor_fields_ajax' ) );
60
  add_action( 'wp_ajax_nopriv_ditty_editor_layout_fields', array( $this, 'editor_fields_ajax' ) );
76
  'version' => $layout_version,
77
  'fields' => 'ids',
78
  );
79
+ if ( $layouts = ditty_layout_posts( $args ) ) {
80
  return end( $layouts );
81
  }
82
 
218
  'fields' => 'ids',
219
  'return' => 'versions',
220
  );
221
+ $layout_versions = ditty_layout_posts( $args );
222
  $html .= '<li class="ditty-templates-list__template">';
223
  $html .= '<div class="ditty-templates-list__template__heading">';
224
  $html .= '<h4 class="ditty-templates-list__template__label">';
463
  if ( $placeholder ) {
464
  $options[''] = $placeholder;
465
  }
466
+ if ( $layouts = ditty_layout_posts() ) {
467
  foreach ( $layouts as $layout_post ) {
468
  $title = $layout_post->post_title;
469
  if ( $version = get_post_meta( $layout_post->ID, '_ditty_layout_version', true ) ) {
544
  }
545
  }
546
 
547
+ /**
548
+ * Add the editor save button
549
+ *
550
+ * @since 3.0
551
+ */
552
+ public function editor_layout_save( $layout ) {
553
+ if ( current_user_can( 'edit_ditty_layouts' ) ) {
554
+ echo '<a href="#" class="ditty-data-list__item__save protip" data-pt-title="' . __( 'Save Preview', 'ditty-news-ticker' ) . '"><i class="fas fa-save" data-class="fas fa-save"></i></a>';
555
+ }
556
+ }
557
+
558
  /**
559
  * Ditty Layout Variations list panel
560
  * @access public
664
  $args = array(
665
  'fields' => 'ids',
666
  );
667
+ $layouts = ditty_layout_posts( $args );
668
  $drafts = ditty_draft_layout_get();
669
  if ( ! is_array( $drafts ) ) {
670
  $drafts = array();
989
  }
990
  return $json_data;
991
  }
992
+
993
+ /**
994
+ * Add to the bulk updater
995
+ *
996
+ * @access public
997
+ * @since 3.0.17
998
+ * @param json.
999
+ */
1000
+ public function bulk_export( $bulk_actions ) {
1001
+ $bulk_actions['ditty-export'] = esc_html__( 'Export Layouts', 'ditty-news-ticker' );
1002
+ return $bulk_actions;
1003
+ }
1004
 
1005
  /**
1006
  * Save layout draft values on Ditty update
includes/class-ditty-singles.php CHANGED
@@ -590,7 +590,7 @@ class Ditty_Singles {
590
  * Sanitize item values before saving to the database
591
  *
592
  * @access public
593
- * @since 3.0
594
  */
595
  public function sanitize_item_data( $item_data ) {
596
  $item_type = isset( $item_data['item_type'] ) ? $item_data['item_type'] : false;
@@ -635,6 +635,9 @@ class Ditty_Singles {
635
  if ( isset( $item_data['layout_value'] ) ) {
636
  $sanitized_item['layout_value'] = maybe_serialize( $sanitized_layout_value );
637
  }
 
 
 
638
  return $sanitized_item;
639
  }
640
 
@@ -642,7 +645,7 @@ class Ditty_Singles {
642
  * Save draft values on Ditty editor update
643
  *
644
  * @access public
645
- * @since 3.0.13
646
  */
647
  public function editor_save_ajax() {
648
  check_ajax_referer( 'ditty', 'security' );
@@ -722,8 +725,8 @@ class Ditty_Singles {
722
 
723
  if ( 'DELETE' == $item_data ) {
724
 
 
725
  Ditty()->db_items->delete( $item_id );
726
- // TODO: Delete all meta associated to item
727
  continue;
728
 
729
  } elseif( is_array( $item_data ) ) {
590
  * Sanitize item values before saving to the database
591
  *
592
  * @access public
593
+ * @since 3.0.17
594
  */
595
  public function sanitize_item_data( $item_data ) {
596
  $item_type = isset( $item_data['item_type'] ) ? $item_data['item_type'] : false;
635
  if ( isset( $item_data['layout_value'] ) ) {
636
  $sanitized_item['layout_value'] = maybe_serialize( $sanitized_layout_value );
637
  }
638
+ if ( isset( $item_data['item_author'] ) ) {
639
+ $sanitized_item['item_author'] = intval( $item_data['item_author'] );
640
+ }
641
  return $sanitized_item;
642
  }
643
 
645
  * Save draft values on Ditty editor update
646
  *
647
  * @access public
648
+ * @since 3.0.17
649
  */
650
  public function editor_save_ajax() {
651
  check_ajax_referer( 'ditty', 'security' );
725
 
726
  if ( 'DELETE' == $item_data ) {
727
 
728
+ ditty_item_delete_all_meta( $item_id );
729
  Ditty()->db_items->delete( $item_id );
 
730
  continue;
731
 
732
  } elseif( is_array( $item_data ) ) {
includes/class-ditty.php CHANGED
@@ -274,6 +274,9 @@ class Ditty {
274
  require_once DITTY_DIR . 'includes/widget.php';
275
  require_once DITTY_DIR . 'includes/wizard.php';
276
 
 
 
 
277
  // Add database files
278
  require_once DITTY_DIR . 'includes/class-ditty-db.php';
279
  require_once DITTY_DIR . 'includes/class-ditty-db-items.php';
274
  require_once DITTY_DIR . 'includes/widget.php';
275
  require_once DITTY_DIR . 'includes/wizard.php';
276
 
277
+ // Builders
278
+ require_once DITTY_DIR . 'includes/builders/fusion/builder.php';
279
+
280
  // Add database files
281
  require_once DITTY_DIR . 'includes/class-ditty-db.php';
282
  require_once DITTY_DIR . 'includes/class-ditty-db-items.php';
includes/css/ditty-admin.css CHANGED
@@ -115,6 +115,21 @@ table.wp-list-table .type-ditty_display .row-actions {
115
  border-top-right-radius: 3px;
116
  border-bottom-right-radius: 3px; }
117
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
118
  .datepicker-container {
119
  background-color: #fff;
120
  direction: ltr;
@@ -980,7 +995,7 @@ table.wp-list-table .type-ditty_display .row-actions {
980
 
981
  #ditty-page {
982
  width: 1200px;
983
- max-width: calc( 100%);
984
  border-radius: 5px;
985
  box-shadow: 0 0 1px rgba(0, 0, 0, 0.2);
986
  margin-top: 22px;
@@ -1010,7 +1025,7 @@ table.wp-list-table .type-ditty_display .row-actions {
1010
 
1011
  @media screen and (max-width: 782px) {
1012
  #ditty-page {
1013
- max-width: calc( 100%);
1014
  margin-top: 10px; } }
1015
 
1016
  #ditty-settings {
@@ -1066,7 +1081,13 @@ table.wp-list-table .type-ditty_display .row-actions {
1066
  position: absolute;
1067
  top: 10px;
1068
  display: block;
1069
- font-size: 14px; }
 
 
 
 
 
 
1070
  .ditty-settings__tab span {
1071
  display: block;
1072
  padding-left: 30px; }
@@ -1198,22 +1219,33 @@ table.wp-list-table .type-ditty_display .row-actions {
1198
  width: 60%; } }
1199
 
1200
  @media (min-width: 1000px) {
1201
- .ditty-settings__panel:not(.ditty-settings__panel--global_ditty) > .ditty-field {
1202
  display: flex;
1203
  flex-direction: row;
1204
  align-items: flex-start;
1205
  justify-content: flex-start; }
1206
- .ditty-settings__panel:not(.ditty-settings__panel--global_ditty) > .ditty-field > .ditty-field__heading {
1207
  flex: 0 0 50%;
1208
  padding-right: 60px; }
1209
- .ditty-settings__panel:not(.ditty-settings__panel--global_ditty) > .ditty-field > .ditty-field__heading > .ditty-field__label,
1210
- .ditty-settings__panel:not(.ditty-settings__panel--global_ditty) > .ditty-field > .ditty-field__heading > .ditty-field__description {
1211
  margin-bottom: 0; }
1212
- .ditty-settings__panel:not(.ditty-settings__panel--global_ditty) > .ditty-field > .ditty-field__input__container {
1213
  width: 100%; }
1214
- .ditty-settings__panel:not(.ditty-settings__panel--global_ditty) > .ditty-field > .ditty-field__input__container > .ditty-field__input {
1215
  margin-top: 0; } }
1216
 
 
 
 
 
 
 
 
 
 
 
 
1217
  .ditty-section {
1218
  background: #FFF;
1219
  padding: 40px; }
@@ -1264,6 +1296,24 @@ table.wp-list-table .type-ditty_display .row-actions {
1264
  .ditty-column--1_2 {
1265
  width: 50%; } }
1266
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1267
  .ditty-page__contents {
1268
  padding: 20px; }
1269
 
@@ -1274,6 +1324,21 @@ table.wp-list-table .type-ditty_display .row-actions {
1274
  color: #FFF;
1275
  margin: 0; }
1276
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1277
  .wp-admin.post-new-php.post-type-ditty.ditty-wizard-enabled .wp-heading-inline,
1278
  .wp-admin.post-new-php.post-type-ditty.ditty-wizard-enabled .wp-header-end {
1279
  display: none; }
@@ -1484,3 +1549,55 @@ table.wp-list-table .type-ditty_display .row-actions {
1484
  border-color: #19BF7C; }
1485
  .ditty-option-list__item.active .ditty-option-grid__item__description {
1486
  display: block; }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
115
  border-top-right-radius: 3px;
116
  border-bottom-right-radius: 3px; }
117
 
118
+ .fusion-module-icon.ditty {
119
+ width: 15px;
120
+ height: 15px;
121
+ background: url("../img/d.svg"); }
122
+
123
+ #menu-posts-ditty .wp-submenu {
124
+ display: flex;
125
+ flex-direction: column; }
126
+ #menu-posts-ditty .wp-submenu li {
127
+ order: 0; }
128
+ #menu-posts-ditty .wp-submenu li.ditty_extensions, #menu-posts-ditty .wp-submenu li.ditty_settings, #menu-posts-ditty .wp-submenu li.ditty_export {
129
+ order: 5; }
130
+ #menu-posts-ditty .wp-submenu li.ditty_news_ticker, #menu-posts-ditty .wp-submenu li.mtphr_dnt_settings {
131
+ order: 10; }
132
+
133
  .datepicker-container {
134
  background-color: #fff;
135
  direction: ltr;
995
 
996
  #ditty-page {
997
  width: 1200px;
998
+ max-width: calc( 100% - 20px);
999
  border-radius: 5px;
1000
  box-shadow: 0 0 1px rgba(0, 0, 0, 0.2);
1001
  margin-top: 22px;
1025
 
1026
  @media screen and (max-width: 782px) {
1027
  #ditty-page {
1028
+ max-width: calc( 100% - 10px);
1029
  margin-top: 10px; } }
1030
 
1031
  #ditty-settings {
1081
  position: absolute;
1082
  top: 10px;
1083
  display: block;
1084
+ font-size: 14px;
1085
+ width: 14px; }
1086
+ .ditty-settings__tab svg {
1087
+ position: absolute;
1088
+ top: 10px;
1089
+ display: block;
1090
+ width: 14px; }
1091
  .ditty-settings__tab span {
1092
  display: block;
1093
  padding-left: 30px; }
1219
  width: 60%; } }
1220
 
1221
  @media (min-width: 1000px) {
1222
+ .ditty-settings__panel:not(.ditty-settings__panel--global_ditty) > .ditty-field:not(.ditty-field-heading--top) {
1223
  display: flex;
1224
  flex-direction: row;
1225
  align-items: flex-start;
1226
  justify-content: flex-start; }
1227
+ .ditty-settings__panel:not(.ditty-settings__panel--global_ditty) > .ditty-field:not(.ditty-field-heading--top) > .ditty-field__heading {
1228
  flex: 0 0 50%;
1229
  padding-right: 60px; }
1230
+ .ditty-settings__panel:not(.ditty-settings__panel--global_ditty) > .ditty-field:not(.ditty-field-heading--top) > .ditty-field__heading > .ditty-field__label,
1231
+ .ditty-settings__panel:not(.ditty-settings__panel--global_ditty) > .ditty-field:not(.ditty-field-heading--top) > .ditty-field__heading > .ditty-field__description {
1232
  margin-bottom: 0; }
1233
+ .ditty-settings__panel:not(.ditty-settings__panel--global_ditty) > .ditty-field:not(.ditty-field-heading--top) > .ditty-field__input__container {
1234
  width: 100%; }
1235
+ .ditty-settings__panel:not(.ditty-settings__panel--global_ditty) > .ditty-field:not(.ditty-field-heading--top) > .ditty-field__input__container > .ditty-field__input {
1236
  margin-top: 0; } }
1237
 
1238
+ /* Post import/exports */
1239
+ .ditty-import-button i,
1240
+ .ditty-export-button i {
1241
+ display: none; }
1242
+
1243
+ .ditty-input--checkboxes__option--select_all {
1244
+ width: 100%;
1245
+ border-bottom: 1px solid rgba(0, 0, 0, 0.05);
1246
+ padding-bottom: 10px;
1247
+ margin-bottom: 10px !important; }
1248
+
1249
  .ditty-section {
1250
  background: #FFF;
1251
  padding: 40px; }
1296
  .ditty-column--1_2 {
1297
  width: 50%; } }
1298
 
1299
+ .ditty-header {
1300
+ color: #FFF;
1301
+ background: #1ABF7D;
1302
+ margin-left: -20px; }
1303
+ .ditty-header__wrapper {
1304
+ align-items: center;
1305
+ display: flex;
1306
+ flex-wrap: wrap;
1307
+ justify-content: space-between;
1308
+ transition: padding 0.3s ease;
1309
+ margin-left: auto;
1310
+ margin-right: auto;
1311
+ padding: 1.5rem;
1312
+ padding-bottom: 1.375rem;
1313
+ padding-top: 1.375rem; }
1314
+ .ditty-header svg {
1315
+ width: 100px; }
1316
+
1317
  .ditty-page__contents {
1318
  padding: 20px; }
1319
 
1324
  color: #FFF;
1325
  margin: 0; }
1326
 
1327
+ @media only screen and (max-width: 960px) {
1328
+ .ditty-header {
1329
+ margin-left: -20px; } }
1330
+
1331
+ @media screen and (max-width: 782px) {
1332
+ .ditty-header {
1333
+ margin-left: -10px; } }
1334
+
1335
+ .ditty-import__group {
1336
+ margin-bottom: 40px; }
1337
+
1338
+ .ditty-field--ditty_new_import_button .ditty-button {
1339
+ display: inline-block;
1340
+ width: auto; }
1341
+
1342
  .wp-admin.post-new-php.post-type-ditty.ditty-wizard-enabled .wp-heading-inline,
1343
  .wp-admin.post-new-php.post-type-ditty.ditty-wizard-enabled .wp-header-end {
1344
  display: none; }
1549
  border-color: #19BF7C; }
1550
  .ditty-option-list__item.active .ditty-option-grid__item__description {
1551
  display: block; }
1552
+
1553
+ body.rtl #ditty-editor .ditty-editor__tab span {
1554
+ padding-left: 0;
1555
+ padding-right: 20px; }
1556
+
1557
+ body.rtl .ditty-data-list__filter i {
1558
+ margin-right: 0;
1559
+ margin-left: 5px; }
1560
+
1561
+ body.rtl .ditty-editor-options__buttons--start a:not(.ditty-button), body.rtl .ditty-editor-options__buttons--start button:not(.ditty-button) {
1562
+ margin-right: 0;
1563
+ margin-left: 5px; }
1564
+
1565
+ body.rtl .ditty-editor-options__buttons--end a:not(.ditty-button), body.rtl .ditty-editor-options__buttons--end button:not(.ditty-button) {
1566
+ margin-left: 0;
1567
+ margin-right: 5px; }
1568
+
1569
+ body.rtl .ditty-data-list__item {
1570
+ padding-right: 0;
1571
+ padding-left: 8px; }
1572
+ body.rtl .ditty-data-list__item__label {
1573
+ padding-right: 0;
1574
+ padding-left: 5px;
1575
+ margin-right: 0;
1576
+ margin-left: auto; }
1577
+ body.rtl .ditty-data-list__item__label .ditty-display-version {
1578
+ margin-right: 5px; }
1579
+
1580
+ body.rtl .ditty-layout-variation {
1581
+ padding: 5px 10px 0 8px; }
1582
+
1583
+ body.rtl .ditty-editor__panel--items .ditty-data-list__item a.ditty-data-list__item__icon {
1584
+ border-right: none;
1585
+ border-left: 1px solid rgba(0, 0, 0, 0.05);
1586
+ margin-right: 0;
1587
+ margin-left: 10px; }
1588
+
1589
+ body.rtl .ditty-field-type--checkbox .ditty-field__input__primary label {
1590
+ margin-left: 0;
1591
+ margin-right: 7px; }
1592
+
1593
+ body.rtl .ditty-field-type--radio .ditty-input--radio__option label {
1594
+ margin-left: 0;
1595
+ margin-right: 7px; }
1596
+
1597
+ body.rtl .ditty-field-type--radio .ditty-input--radio--inline .ditty-input--radio__option {
1598
+ margin-right: 0;
1599
+ margin-left: 15px; }
1600
+
1601
+ body.rtl .ditty-field-type--color input[type="text"] {
1602
+ padding-left: 1px !important;
1603
+ padding-right: 40px !important; }
includes/css/ditty.css CHANGED
@@ -119,6 +119,14 @@
119
  .ditty-field--clone-enabled.ditty-field--clone-enabled--max > .ditty-field__input__container > .ditty-field__input__container > .ditty-field__input > .ditty-field__input__actions .ditty-field__input__action--clone {
120
  display: none; }
121
 
 
 
 
 
 
 
 
 
122
  /* Group */
123
  .ditty-field-type--group {
124
  padding: 0;
@@ -195,7 +203,7 @@
195
  margin-bottom: 5px; }
196
  .ditty-input--checkboxes__group .ditty-input--checkboxes__option label {
197
  font-size: 13px;
198
- line-break: 13px; }
199
  .ditty-input--checkboxes__group--inline {
200
  flex-direction: row;
201
  align-items: center; }
@@ -1045,7 +1053,8 @@
1045
  cursor: pointer;
1046
  transition: color .25s ease, background-color .25s ease; }
1047
  .ditty-button[disabled] {
1048
- cursor: default; }
 
1049
  .ditty-button[type="button"], .ditty-button[type="submit"] {
1050
  -webkit-appearance: none;
1051
  border: none;
@@ -1672,7 +1681,8 @@
1672
  .ditty-editor-layout {
1673
  cursor: pointer; }
1674
  .ditty-editor-layout:not(.active):hover .ditty-data-list__item__edit_html,
1675
- .ditty-editor-layout:not(.active):hover .ditty-data-list__item__edit_css {
 
1676
  display: none; }
1677
  .ditty-editor-layout.active .ditty-data-list__item__delete {
1678
  display: none; }
119
  .ditty-field--clone-enabled.ditty-field--clone-enabled--max > .ditty-field__input__container > .ditty-field__input__container > .ditty-field__input > .ditty-field__input__actions .ditty-field__input__action--clone {
120
  display: none; }
121
 
122
+ .postbox-container .inside > .ditty-field {
123
+ padding-left: 0;
124
+ padding-right: 0; }
125
+ .postbox-container .inside > .ditty-field:first-of-type {
126
+ padding-top: 0; }
127
+ .postbox-container .inside > .ditty-field:last-of-type {
128
+ padding-bottom: 0; }
129
+
130
  /* Group */
131
  .ditty-field-type--group {
132
  padding: 0;
203
  margin-bottom: 5px; }
204
  .ditty-input--checkboxes__group .ditty-input--checkboxes__option label {
205
  font-size: 13px;
206
+ line-height: 13px; }
207
  .ditty-input--checkboxes__group--inline {
208
  flex-direction: row;
209
  align-items: center; }
1053
  cursor: pointer;
1054
  transition: color .25s ease, background-color .25s ease; }
1055
  .ditty-button[disabled] {
1056
+ cursor: default;
1057
+ opacity: .5; }
1058
  .ditty-button[type="button"], .ditty-button[type="submit"] {
1059
  -webkit-appearance: none;
1060
  border: none;
1681
  .ditty-editor-layout {
1682
  cursor: pointer; }
1683
  .ditty-editor-layout:not(.active):hover .ditty-data-list__item__edit_html,
1684
+ .ditty-editor-layout:not(.active):hover .ditty-data-list__item__edit_css,
1685
+ .ditty-editor-layout:not(.active):hover .ditty-data-list__item__save {
1686
  display: none; }
1687
  .ditty-editor-layout.active .ditty-data-list__item__delete {
1688
  display: none; }
includes/fields/ditty-field-checkboxes.php CHANGED
@@ -41,6 +41,9 @@ class Ditty_Field_Checkboxes extends Ditty_Field {
41
  if ( $this->args['inline'] ) {
42
  $classes .= ' ditty-input--checkboxes__group--inline';
43
  }
 
 
 
44
  $html .= '<div class="' . esc_attr( $classes ) . '">';
45
  foreach ( $this->args['options'] as $value => $label ) {
46
  $input_id = uniqid( 'ditty-input--' );
41
  if ( $this->args['inline'] ) {
42
  $classes .= ' ditty-input--checkboxes__group--inline';
43
  }
44
+ if ( $this->args['input_class'] ) {
45
+ $classes .= ' ' . $this->args['input_class'];
46
+ }
47
  $html .= '<div class="' . esc_attr( $classes ) . '">';
48
  foreach ( $this->args['options'] as $value => $label ) {
49
  $input_id = uniqid( 'ditty-input--' );
includes/helpers.php CHANGED
@@ -612,7 +612,7 @@ function ditty_set_variation_default( $item_type, $variation, $layout_id ) {
612
  'template' => $layout_id,
613
  'fields' => 'ids',
614
  );
615
- if ( $posts = ditty_layouts_posts( $args ) ) {
616
  $post_layout_id = reset( $posts );
617
  $variation_defaults[$item_type][$variation] = $post_layout_id;
618
  ditty_settings( 'variation_defaults', $variation_defaults );
@@ -661,7 +661,7 @@ function ditty_layout_variation_types( $item_type = false ) {
661
  * @access public
662
  * @var bool
663
  */
664
- function ditty_layouts_posts( $atts = array() ) {
665
  $defaults = array(
666
  'template' => false,
667
  'version' => false,
@@ -676,19 +676,19 @@ function ditty_layouts_posts( $atts = array() ) {
676
  'post_status' => 'publish',
677
  'orderby' => 'title',
678
  'order' => 'ASC',
679
- 'fields' => $args['fields'],
680
  );
681
  $meta_query = array();
682
  if ( $args['template'] ) {
683
  $meta_query['template'] = array(
684
  'key' => '_ditty_layout_template',
685
- 'value' => $args['template'],
686
  );
687
  }
688
  if ( $args['version'] ) {
689
  $meta_query['version'] = array(
690
  'key' => '_ditty_layout_version',
691
- 'value' => $args['version'],
692
  );
693
  }
694
  $query_args['meta_query'] = $meta_query;
@@ -713,15 +713,17 @@ function ditty_layouts_posts( $atts = array() ) {
713
  /**
714
  * Check if a display type exists
715
  *
716
- * @since 3.0
717
  * @access public
718
  * @var bool
719
  */
720
- function ditty_displays_with_type( $display_type, $atts = array() ) {
721
  $defaults = array(
722
- 'template' => false,
723
- 'version' => false,
724
- 'return' => 'ids',
 
 
725
  );
726
  $args = shortcode_atts( $defaults, $atts );
727
 
@@ -729,23 +731,25 @@ function ditty_displays_with_type( $display_type, $atts = array() ) {
729
  'posts_per_page' => -1,
730
  'post_type' => 'ditty_display',
731
  'post_status' => 'publish',
732
- 'fields' => 'ids',
733
  );
734
  $meta_query = array();
735
- $meta_query['type'] = array(
736
- 'key' => '_ditty_display_type',
737
- 'value' => $display_type,
738
- );
 
 
739
  if ( $args['template'] ) {
740
  $meta_query['template'] = array(
741
  'key' => '_ditty_display_template',
742
- 'value' => $args['template'],
743
  );
744
  }
745
  if ( $args['version'] ) {
746
  $meta_query['version'] = array(
747
  'key' => '_ditty_display_version',
748
- 'value' => $args['version'],
749
  );
750
  }
751
  $query_args['meta_query'] = $meta_query;
@@ -1079,7 +1083,7 @@ function ditty_get_default_layout() {
1079
  'template' => 'default',
1080
  'fields' => 'ids',
1081
  );
1082
- if ( $layouts = ditty_layouts_posts( $atts ) ) {
1083
  return reset( $layouts );
1084
  }
1085
  }
@@ -1517,14 +1521,16 @@ function ditty_decrypt( $string = '', $key_1 = 'pbQttfc*y2bdNV', $key_2 = '3tq!D
1517
  /**
1518
  * Add a uniq_id to a post if it doesn't exist
1519
  *
1520
- * @since 3.0.13
1521
  * @var boolean
1522
  */
1523
  function ditty_maybe_add_uniq_id( $post_id ) {
1524
- if ( ! get_post_meta( $post_id, '_ditty_uniq_id', true ) ) {
 
1525
  $uniq_id = $post_id . current_time( 'timestamp', true );
1526
  update_post_meta( $post_id, '_ditty_uniq_id', $uniq_id );
1527
  }
 
1528
  }
1529
 
1530
  /**
@@ -1610,7 +1616,7 @@ function ditty_item_update_meta( $item_id, $meta_key = '', $meta_value = false,
1610
  }
1611
 
1612
  /**
1613
- * Remove metadata matching criteria from a item.
1614
  *
1615
  * @since 3.0
1616
  */
@@ -1618,6 +1624,32 @@ function ditty_item_delete_meta( $item_id, $meta_key = '', $meta_value = '' ) {
1618
  return Ditty()->db_item_meta->delete_meta( $item_id, $meta_key, $meta_value );
1619
  }
1620
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1621
  /**
1622
  * Get all item meta for a specified item.
1623
  *
@@ -1626,3 +1658,23 @@ function ditty_item_delete_meta( $item_id, $meta_key = '', $meta_value = '' ) {
1626
  function ditty_item_custom_meta( $item_id ) {
1627
  return Ditty()->db_item_meta->custom_meta( $item_id );
1628
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
612
  'template' => $layout_id,
613
  'fields' => 'ids',
614
  );
615
+ if ( $posts = ditty_layout_posts( $args ) ) {
616
  $post_layout_id = reset( $posts );
617
  $variation_defaults[$item_type][$variation] = $post_layout_id;
618
  ditty_settings( 'variation_defaults', $variation_defaults );
661
  * @access public
662
  * @var bool
663
  */
664
+ function ditty_layout_posts( $atts = array() ) {
665
  $defaults = array(
666
  'template' => false,
667
  'version' => false,
676
  'post_status' => 'publish',
677
  'orderby' => 'title',
678
  'order' => 'ASC',
679
+ 'fields' => esc_html( $args['fields'] ),
680
  );
681
  $meta_query = array();
682
  if ( $args['template'] ) {
683
  $meta_query['template'] = array(
684
  'key' => '_ditty_layout_template',
685
+ 'value' => esc_html( $args['template'] ),
686
  );
687
  }
688
  if ( $args['version'] ) {
689
  $meta_query['version'] = array(
690
  'key' => '_ditty_layout_version',
691
+ 'value' => esc_html( $args['version'] ),
692
  );
693
  }
694
  $query_args['meta_query'] = $meta_query;
713
  /**
714
  * Check if a display type exists
715
  *
716
+ * @since 3.0.17
717
  * @access public
718
  * @var bool
719
  */
720
+ function ditty_display_posts( $atts = array() ) {
721
  $defaults = array(
722
+ 'display_type' => false,
723
+ 'template' => false,
724
+ 'version' => false,
725
+ 'fields' => 'all',
726
+ 'return' => 'posts',
727
  );
728
  $args = shortcode_atts( $defaults, $atts );
729
 
731
  'posts_per_page' => -1,
732
  'post_type' => 'ditty_display',
733
  'post_status' => 'publish',
734
+ 'fields' => esc_html( $args['fields'] ),
735
  );
736
  $meta_query = array();
737
+ if ( $args['display_type'] ) {
738
+ $meta_query['type'] = array(
739
+ 'key' => '_ditty_display_type',
740
+ 'value' => esc_html( $args['display_type'] ),
741
+ );
742
+ }
743
  if ( $args['template'] ) {
744
  $meta_query['template'] = array(
745
  'key' => '_ditty_display_template',
746
+ 'value' => esc_html( $args['template'] ),
747
  );
748
  }
749
  if ( $args['version'] ) {
750
  $meta_query['version'] = array(
751
  'key' => '_ditty_display_version',
752
+ 'value' => esc_html( $args['version'] ),
753
  );
754
  }
755
  $query_args['meta_query'] = $meta_query;
1083
  'template' => 'default',
1084
  'fields' => 'ids',
1085
  );
1086
+ if ( $layouts = ditty_layout_posts( $atts ) ) {
1087
  return reset( $layouts );
1088
  }
1089
  }
1521
  /**
1522
  * Add a uniq_id to a post if it doesn't exist
1523
  *
1524
+ * @since 3.0.17
1525
  * @var boolean
1526
  */
1527
  function ditty_maybe_add_uniq_id( $post_id ) {
1528
+ $uniq_id = get_post_meta( $post_id, '_ditty_uniq_id', true );
1529
+ if ( ! $uniq_id ) {
1530
  $uniq_id = $post_id . current_time( 'timestamp', true );
1531
  update_post_meta( $post_id, '_ditty_uniq_id', $uniq_id );
1532
  }
1533
+ return $uniq_id;
1534
  }
1535
 
1536
  /**
1616
  }
1617
 
1618
  /**
1619
+ * Remove metadata matching criteria from an item.
1620
  *
1621
  * @since 3.0
1622
  */
1624
  return Ditty()->db_item_meta->delete_meta( $item_id, $meta_key, $meta_value );
1625
  }
1626
 
1627
+ /**
1628
+ * Get all metadatafrom an item.
1629
+ *
1630
+ * @since 3.0.17
1631
+ */
1632
+ function ditty_item_get_all_meta( $item_id ) {
1633
+ $meta = Ditty()->db_item_meta->custom_meta( $item_id );
1634
+ return $meta;
1635
+ }
1636
+
1637
+ /**
1638
+ * Remove all metadatafrom an item.
1639
+ *
1640
+ * @since 3.0.17
1641
+ */
1642
+ function ditty_item_delete_all_meta( $item_id ) {
1643
+ $meta = ditty_item_get_all_meta( $item_id );
1644
+ if ( is_array( $meta ) && count( $meta ) > 0 ) {
1645
+ foreach ( $meta as $data ) {
1646
+ if ( isset( $data->meta_key ) ) {
1647
+ Ditty()->db_item_meta->delete_meta( $item_id, $data->meta_key );
1648
+ }
1649
+ }
1650
+ }
1651
+ }
1652
+
1653
  /**
1654
  * Get all item meta for a specified item.
1655
  *
1658
  function ditty_item_custom_meta( $item_id ) {
1659
  return Ditty()->db_item_meta->custom_meta( $item_id );
1660
  }
1661
+
1662
+ /**
1663
+ * Return the Ditty logo svg
1664
+ *
1665
+ * @since 3.0
1666
+ */
1667
+ function ditty_svg_logo() {
1668
+ return '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 258.8 99.21" fill="currentColor"><path d="M0,49.5C0,32.3,8.6,20.4,24.6,20.4a19.93,19.93,0,0,1,6.6,1V3.1H45V62.3l1,10.3H34.2l-.9-5.2h-.5a15.21,15.21,0,0,1-13,6.8C3.8,74.2,0,61.5,0,49.5Zm31.2,7.4V31.7a13.7,13.7,0,0,0-6-1.3c-8.7,0-11.3,8.7-11.3,17.8,0,8.5,1.9,15.8,8.9,15.8C27.9,64,31.2,60.2,31.2,56.9Z"/><path d="M55.7,7.4A7.33,7.33,0,0,1,63.4,0c4.6,0,7.8,3.3,7.8,7.4s-3.2,7.4-7.8,7.4S55.7,11.7,55.7,7.4ZM70.5,21.9V72.6H56.4V21.9Z"/><path d="M95.8,3.1V21.9H112V3.1h14.1V21.9h13V32.8h-13V55.9c0,5.9,2.6,7.6,6.4,7.6a11.9,11.9,0,0,0,6.1-1.9l3.2,9c-3,2-8.2,3.5-13.3,3.5-15.2,0-16.5-8.7-16.5-17.8V32.8H95.8V55.9c0,5.9,2,7.6,5.7,7.6a11.64,11.64,0,0,0,5.7-1.6l2.1,9.4c-2.6,1.7-7.4,2.8-11.1,2.8-15.1,0-16.4-8.7-16.4-17.8V3.1Z"/><path d="M149.6,85.81c0-7.21,4.4-12.81,10.3-17.11-8.4-1.3-13-5.9-13-16V21.9h14V51.6c0,5.4.5,9.1,7,9.1,4,0,7.7-3.2,7.7-8.3V21.9h14V64.2a108.13,108.13,0,0,1-.9,13.9c-1.5,13.5-8.9,21.11-22.4,21.11C155.2,99.21,149.6,94,149.6,85.81Zm26.3-9.11V67.2c-7.4,3.5-14,8.5-14,16.11,0,3.9,2.2,5.79,6,5.79C173.8,89.1,175.9,84.4,175.9,76.7Z"/><path d="M198.7,66.8a7,7,0,0,1,7.4-7.2c5,0,7.7,2.8,7.7,7.1s-2.6,7.5-7.4,7.5C201.3,74.2,198.7,71.1,198.7,66.8Z"/><path d="M221.2,66.8a7,7,0,0,1,7.4-7.2c5,0,7.7,2.8,7.7,7.1s-2.6,7.5-7.4,7.5C223.8,74.2,221.2,71.1,221.2,66.8Z"/><path d="M243.7,66.8a7,7,0,0,1,7.4-7.2c5,0,7.7,2.8,7.7,7.1s-2.6,7.5-7.4,7.5C246.3,74.2,243.7,71.1,243.7,66.8Z"/></svg>';
1669
+ }
1670
+
1671
+ /**
1672
+ * Return the Ditty d svg
1673
+ *
1674
+ * @since 3.0
1675
+ */
1676
+ function ditty_svg_d() {
1677
+ return '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 69.31 71.1" fill="currentColor"><path d="M0 46.4c0-17.2 8.6-29.1 24.6-29.1a19.93 19.93 0 0 1 6.6 1V0H45v59.2l1 10.3H34.2l-.9-5.2h-.5a15.21 15.21 0 0 1-13 6.8C3.8 71.1 0 58.4 0 46.4Zm31.2 7.4V28.6a13.7 13.7 0 0 0-6-1.3c-8.7 0-11.3 8.7-11.3 17.8 0 8.5 1.9 15.8 8.9 15.8 5.1 0 8.4-3.8 8.4-7.1ZM61.91 65.6a7 7 0 0 1-7.2-7.4c0-5 2.8-7.7 7.1-7.7s7.5 2.6 7.5 7.4c0 5.1-3.1 7.7-7.4 7.7ZM61.91 43.1a7 7 0 0 1-7.2-7.4c0-5 2.8-7.7 7.1-7.7s7.5 2.6 7.5 7.4c0 5.1-3.1 7.7-7.4 7.7ZM61.91 20.6a7 7 0 0 1-7.2-7.4c0-5 2.8-7.7 7.1-7.7s7.5 2.6 7.5 7.4c0 5.1-3.1 7.7-7.4 7.7Z"/></svg>';
1678
+ }
1679
+
1680
+
includes/hooks.php CHANGED
@@ -22,6 +22,7 @@ function ditty_delete_post_items( $post_id ) {
22
  $items_meta = ditty_items_meta( $post_id );
23
  if ( is_array( $items_meta ) && count( $items_meta ) > 0 ) {
24
  foreach ( $items_meta as $i => $item ) {
 
25
  Ditty()->db_items->delete( $item->item_id );
26
  }
27
  }
@@ -153,3 +154,64 @@ function ditty_dashboard_menu_classes( $classes ) {
153
  return $classes;
154
  }
155
  add_filter( 'admin_body_class', 'ditty_dashboard_menu_classes', 99 );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
22
  $items_meta = ditty_items_meta( $post_id );
23
  if ( is_array( $items_meta ) && count( $items_meta ) > 0 ) {
24
  foreach ( $items_meta as $i => $item ) {
25
+ ditty_item_delete_all_meta( $item->item_id );
26
  Ditty()->db_items->delete( $item->item_id );
27
  }
28
  }
154
  return $classes;
155
  }
156
  add_filter( 'admin_body_class', 'ditty_dashboard_menu_classes', 99 );
157
+
158
+ /**
159
+ * Reorder the Ditty submenus
160
+ *
161
+ * @since 3.0
162
+ * @access public
163
+ * @var array $allowed
164
+ */
165
+ // function ditty_set_menu_order() {
166
+ // global $submenu;
167
+ // $new_sub_menu = [];
168
+ // foreach ( $submenu as $menu_name => $menu_items ) {
169
+ // if ( 'edit.php?post_type=ditty' === $menu_name ) {
170
+ // if ( is_array( $menu_items ) && count( $menu_items ) > 0 ) {
171
+ // foreach ( $menu_items as $order => $menu_item ) {
172
+ // switch( $menu_item[2] ) {
173
+ // case 'edit.php?post_type=ditty_layout':
174
+ // $new_sub_menu[11] = $menu_item;
175
+ // break;
176
+ // case 'edit.php?post_type=ditty_display':
177
+ // $new_sub_menu[12] = $menu_item;
178
+ // break;
179
+ // case 'ditty_extensions':
180
+ // $new_sub_menu[13] = $menu_item;
181
+ // break;
182
+ // case 'ditty_settings':
183
+ // $new_sub_menu[14] = $menu_item;
184
+ // break;
185
+ // case 'ditty_export':
186
+ // $new_sub_menu[15] = $menu_item;
187
+ // break;
188
+ // default:
189
+ // $new_sub_menu[$order] = $menu_item;
190
+ // }
191
+ // }
192
+ // }
193
+ // $submenu['edit.php?post_type=ditty'] = $new_sub_menu;
194
+ // break;
195
+ // }
196
+ // }
197
+ // }
198
+ // add_action('custom_menu_order', 'ditty_set_menu_order' );
199
+
200
+
201
+
202
+ function sdafdstest() {
203
+ $custom = Ditty()->db_item_meta->custom_meta( 129 );
204
+ if ( $custom ) {
205
+ echo '<pre>';print_r('yes');echo '</pre>';
206
+ } else {
207
+ echo '<pre>';print_r('no');echo '</pre>';
208
+ }
209
+ if ( is_array( $custom ) && count( $custom ) > 0 ) {
210
+ foreach ( $custom as $data ) {
211
+ if ( isset( $data->meta_key ) ) {
212
+ Ditty()->db_item_meta->delete_meta( 129, $data->meta_key );
213
+ }
214
+ }
215
+ }
216
+ }
217
+ //add_action( 'admin_init', 'sdafdstest' );
includes/img/ditty.svg ADDED
@@ -0,0 +1 @@
 
1
+ <svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 258.8 99.21" fill="inherit"><path d="M0,49.5C0,32.3,8.6,20.4,24.6,20.4a19.93,19.93,0,0,1,6.6,1V3.1H45V62.3l1,10.3H34.2l-.9-5.2h-.5a15.21,15.21,0,0,1-13,6.8C3.8,74.2,0,61.5,0,49.5Zm31.2,7.4V31.7a13.7,13.7,0,0,0-6-1.3c-8.7,0-11.3,8.7-11.3,17.8,0,8.5,1.9,15.8,8.9,15.8C27.9,64,31.2,60.2,31.2,56.9Z"/><path d="M55.7,7.4A7.33,7.33,0,0,1,63.4,0c4.6,0,7.8,3.3,7.8,7.4s-3.2,7.4-7.8,7.4S55.7,11.7,55.7,7.4ZM70.5,21.9V72.6H56.4V21.9Z"/><path d="M95.8,3.1V21.9H112V3.1h14.1V21.9h13V32.8h-13V55.9c0,5.9,2.6,7.6,6.4,7.6a11.9,11.9,0,0,0,6.1-1.9l3.2,9c-3,2-8.2,3.5-13.3,3.5-15.2,0-16.5-8.7-16.5-17.8V32.8H95.8V55.9c0,5.9,2,7.6,5.7,7.6a11.64,11.64,0,0,0,5.7-1.6l2.1,9.4c-2.6,1.7-7.4,2.8-11.1,2.8-15.1,0-16.4-8.7-16.4-17.8V3.1Z"/><path d="M149.6,85.81c0-7.21,4.4-12.81,10.3-17.11-8.4-1.3-13-5.9-13-16V21.9h14V51.6c0,5.4.5,9.1,7,9.1,4,0,7.7-3.2,7.7-8.3V21.9h14V64.2a108.13,108.13,0,0,1-.9,13.9c-1.5,13.5-8.9,21.11-22.4,21.11C155.2,99.21,149.6,94,149.6,85.81Zm26.3-9.11V67.2c-7.4,3.5-14,8.5-14,16.11,0,3.9,2.2,5.79,6,5.79C173.8,89.1,175.9,84.4,175.9,76.7Z"/><path d="M198.7,66.8a7,7,0,0,1,7.4-7.2c5,0,7.7,2.8,7.7,7.1s-2.6,7.5-7.4,7.5C201.3,74.2,198.7,71.1,198.7,66.8Z"/><path d="M221.2,66.8a7,7,0,0,1,7.4-7.2c5,0,7.7,2.8,7.7,7.1s-2.6,7.5-7.4,7.5C223.8,74.2,221.2,71.1,221.2,66.8Z"/><path d="M243.7,66.8a7,7,0,0,1,7.4-7.2c5,0,7.7,2.8,7.7,7.1s-2.6,7.5-7.4,7.5C246.3,74.2,243.7,71.1,243.7,66.8Z"/></svg>
includes/js/admin/class-ditty-settings.js CHANGED
@@ -45,7 +45,6 @@
45
  // Add listeners
46
  $( 'body' ).on( 'ditty_field_clone_update', { self: this }, this._enableSettingsUpdates );
47
  this.saveBtns.on( 'click', { self: this }, this._submitForm );
48
- this.tabs.on( 'click', { self: this }, this._tabClick );
49
  this.$panels.on( 'ditty_slider_init', { self: this }, this._sliderInit );
50
  this.$panels.on( 'ditty_slider_before_slide_update', { self: this }, this._beforeSlideUpdate );
51
  this.$form.on( 'keyup change', 'input[type="text"], input[type="number"], textarea, select', { self: this }, this._checkUpdates );
@@ -53,9 +52,13 @@
53
  this.$form.on( 'ditty_input_wysiwyg_update', '.ditty-input--wysiwyg', { self: this }, this._checkUpdates );
54
  this.$form.on( 'click', '.ditty-default-layout-install', { self: this }, this._installLayout );
55
  this.$form.on( 'click', '.ditty-default-display-install', { self: this }, this._installDisplay );
56
- //this.$form.on( 'click', 'button[name="ditty_export_button"]', { self: this }, this._exportPosts );
57
 
58
- if ( this.url.indexOf( "#" ) > 0 ) {
 
 
 
 
 
59
  var activePanel = this.url.substring( this.url.indexOf( "#" ) + 1 );
60
  this._activatePanel( activePanel );
61
  }
@@ -68,21 +71,23 @@
68
  * @return null
69
  */
70
  _initSlider: function () {
71
- var initPanel = this.$panels.data( 'init_panel' );
72
- this.$panels.ditty_slider( {
73
- transition : 'fade',
74
- transitionEase : 'linear',
75
- transitionSpeed : 0,
76
- heightSpeed : 0,
77
- initTransition : 'fade',
78
- initTransitionEase : 'linear',
79
- initTransitionSpeed : 0,
80
- initHeightEase : 'linear',
81
- initHeightSpeed : 0,
82
- touchSwipe : false,
83
- slidesEl : '.ditty-settings__panel',
84
- slideId : ( '' !== initPanel ) ? initPanel : false
85
- } );
 
 
86
  },
87
 
88
  /**
@@ -370,45 +375,42 @@
370
  },
371
 
372
  /**
373
- * Export posts
374
  *
375
- * @since 3.0.13
376
  * @return null
377
  */
378
- // _exportPosts: function( e ) {
379
- // e.preventDefault();
380
- // var self = e.data.self,
381
- // $button = $( e.target ).is( 'button' ) ? $( e.target ) : $( e.target ).parents( 'button' ),
382
- // $parent = $button.parent( '.ditty-field-only' ),
383
- // $options = $parent.siblings( '.ditty-field-only--ditty_export_options' ),
384
- // $icon = $button.find( 'i' ),
385
- // export_options = [];
386
- //
387
- // if ( $button.attr( 'disabled' ) ) {
388
- // return false;
389
- // }
390
- // $button.attr( 'disabled', 'disabled' );
391
- // $icon.show();
392
- //
393
- // if ( $options.length ) {
394
- // $options.find( 'input[type="checkbox"]' ).each( function() {
395
- // if ( $( this ).is( ':checked' ) ) {
396
- // export_options.push( $( this ).val() );
397
- // }
398
- // } );
399
- // }
400
- //
401
- // var data = {
402
- // action : 'ditty_export_posts',
403
- // export_type : $button.data( 'export_type' ),
404
- // export_options : export_options,
405
- // security : dittyAdminVars.security
406
- // };
407
- // $.post( dittyAdminVars.ajaxurl, data, function( response ) {
408
- // $icon.hide();
409
- // self.$elmt.removeAttr( 'disabled' );
410
- // } );
411
- // },
412
 
413
  /**
414
  * Return a specific setting
@@ -480,7 +482,8 @@
480
  this.$form.off( 'ditty_input_wysiwyg_update', '.ditty-input--wysiwyg', { self: this }, this._checkUpdates );
481
  this.$form.off( 'click', '.ditty-default-layout-install', { self: this }, this._installLayout );
482
  this.$form.off( 'click', '.ditty-default-display-install', { self: this }, this._installDisplay );
483
- //this.$form.off( 'click', 'button[name="ditty_export_button"]', { self: this }, this._exportPosts );
 
484
 
485
  this.$panels.ditty_slider( 'destroy' );
486
  this.elmt._ditty_settings = null;
45
  // Add listeners
46
  $( 'body' ).on( 'ditty_field_clone_update', { self: this }, this._enableSettingsUpdates );
47
  this.saveBtns.on( 'click', { self: this }, this._submitForm );
 
48
  this.$panels.on( 'ditty_slider_init', { self: this }, this._sliderInit );
49
  this.$panels.on( 'ditty_slider_before_slide_update', { self: this }, this._beforeSlideUpdate );
50
  this.$form.on( 'keyup change', 'input[type="text"], input[type="number"], textarea, select', { self: this }, this._checkUpdates );
52
  this.$form.on( 'ditty_input_wysiwyg_update', '.ditty-input--wysiwyg', { self: this }, this._checkUpdates );
53
  this.$form.on( 'click', '.ditty-default-layout-install', { self: this }, this._installLayout );
54
  this.$form.on( 'click', '.ditty-default-display-install', { self: this }, this._installDisplay );
 
55
 
56
+ this.$form.on( 'click', '.ditty-export-posts input[type="checkbox"]', { self: this }, this._exportCheckboxClick );
57
+
58
+ if ( this.$elmt.hasClass( 'dynamic-tabs' ) ) {
59
+ this.tabs.on( 'click', { self: this }, this._tabClick );
60
+ }
61
+ if ( this.$elmt.hasClass( 'dynamic-tabs' ) && this.url.indexOf( "#" ) > 0 ) {
62
  var activePanel = this.url.substring( this.url.indexOf( "#" ) + 1 );
63
  this._activatePanel( activePanel );
64
  }
71
  * @return null
72
  */
73
  _initSlider: function () {
74
+ if ( this.$elmt.hasClass( 'dynamic-tabs' ) ) {
75
+ var initPanel = this.$panels.data( 'init_panel' );
76
+ this.$panels.ditty_slider( {
77
+ transition : 'fade',
78
+ transitionEase : 'linear',
79
+ transitionSpeed : 0,
80
+ heightSpeed : 0,
81
+ initTransition : 'fade',
82
+ initTransitionEase : 'linear',
83
+ initTransitionSpeed : 0,
84
+ initHeightEase : 'linear',
85
+ initHeightSpeed : 0,
86
+ touchSwipe : false,
87
+ slidesEl : '.ditty-settings__panel',
88
+ slideId : ( '' !== initPanel ) ? initPanel : false
89
+ } );
90
+ }
91
  },
92
 
93
  /**
375
  },
376
 
377
  /**
378
+ * Listen for export checkbox click
379
  *
380
+ * @since 3.0.17
381
  * @return null
382
  */
383
+ _exportCheckboxClick: function( e ) {
384
+ var $checkbox = $( e.target ),
385
+ $group = $checkbox.parents( '.ditty-input--checkboxes__group' ),
386
+ $container = $checkbox.parents( '.ditty-field__input' ),
387
+ $button = $( '.ditty-export-button' ),
388
+ checkboxes = $group.find( 'input[type="checkbox"]' ),
389
+ isChecked = $checkbox.is( ':checked' ),
390
+ value = $checkbox.attr( 'value' );
391
+
392
+ if ( 'select_all' === value ) {
393
+ checkboxes.each( function() {
394
+ if ( $( this )[0] !== $checkbox[0] ) {
395
+ $( this ).prop( 'checked', isChecked );
396
+ }
397
+ } );
398
+ }
399
+
400
+ // Check if any checkboxes are selected
401
+ var enableButton = false;
402
+ checkboxes.each( function() {
403
+ if ( $( this ).is( ':checked' ) ) {
404
+ enableButton = true;
405
+ }
406
+ } );
407
+
408
+ if ( enableButton ) {
409
+ $button.attr( 'disabled', false );
410
+ } else {
411
+ $button.attr( 'disabled', 'disabled' );
412
+ }
413
+ },
 
 
 
414
 
415
  /**
416
  * Return a specific setting
482
  this.$form.off( 'ditty_input_wysiwyg_update', '.ditty-input--wysiwyg', { self: this }, this._checkUpdates );
483
  this.$form.off( 'click', '.ditty-default-layout-install', { self: this }, this._installLayout );
484
  this.$form.off( 'click', '.ditty-default-display-install', { self: this }, this._installDisplay );
485
+
486
+ this.$form.off( 'click', '.ditty-export-posts input[type="checkbox"]', { self: this }, this._exportCheckboxClick );
487
 
488
  this.$panels.ditty_slider( 'destroy' );
489
  this.elmt._ditty_settings = null;
includes/js/admin/general.js ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* global jQuery:true */
2
+
3
+ jQuery( function( $ ) {
4
+
5
+ // Setup strict mode
6
+ (function() {
7
+
8
+ "use strict";
9
+
10
+ $( '#menu-posts-ditty .wp-submenu li' ).each( function() {
11
+ var $item = $( this ),
12
+ $link = $item.children( 'a' );
13
+
14
+ if ( $link.length ) {
15
+ var href = $link[0].href,
16
+ parts = href.split( '=' ),
17
+ lastPart = parts[parts.length-1];
18
+
19
+ $item.addClass( lastPart );
20
+ }
21
+ } );
22
+
23
+ }() );
24
+
25
+ } );
includes/js/ditty-admin.js CHANGED
@@ -2,6 +2,7 @@
2
  /* global dittyAdminVars:true */
3
  /* global console:true */
4
 
 
5
  // @codekit-append 'admin/class-ditty-settings.js';
6
  // @codekit-append 'admin/class-ditty-extension.js';
7
  // @codekit-append 'admin/ditty-extensions.js';
2
  /* global dittyAdminVars:true */
3
  /* global console:true */
4
 
5
+ // @codekit-append 'admin/general.js';
6
  // @codekit-append 'admin/class-ditty-settings.js';
7
  // @codekit-append 'admin/class-ditty-extension.js';
8
  // @codekit-append 'admin/ditty-extensions.js';
includes/js/ditty-admin.min.js CHANGED
@@ -1,1194 +1 @@
1
- /* global jQuery:true */
2
- /* global dittyAdminVars:true */
3
- /* global console:true */
4
-
5
- // @codekit-append 'admin/class-ditty-settings.js';
6
- // @codekit-append 'admin/class-ditty-extension.js';
7
- // @codekit-append 'admin/ditty-extensions.js';
8
- // @codekit-append 'admin/ditty-displays.js';
9
- // @codekit-append 'admin/ditty-wizard.js';
10
-
11
- jQuery( function( $ ) {
12
-
13
- // Setup strict mode
14
- (function() {
15
-
16
- "use strict";
17
-
18
- $( '#poststuff' ).trigger( 'ditty_init_fields' );
19
- $( '#ditty-settings' ).ditty_settings();
20
-
21
- }() );
22
-
23
- } );
24
-
25
- /**
26
- * Ditty Settings
27
- *
28
- * @since 3.0
29
- * @return null
30
- */
31
-
32
- (function ($) {
33
- 'use strict';
34
-
35
- var defaults = {
36
- };
37
-
38
- var Ditty_Settings = function ( elmt, options ) {
39
-
40
- this.elmt = elmt;
41
- this.settings = $.extend( {}, defaults, $.ditty_settings.defaults, options );
42
- this.$elmt = $( elmt );
43
- this.$form = this.$elmt.find( '.ditty-settings__form' );
44
- this.$panels = this.$elmt.find( '.ditty-settings__panels' );
45
- this.saveBtns = this.$elmt.find( '.ditty-settings__save' );
46
- this.tabs = this.$elmt.find( '.ditty-settings__tab' );
47
- this.$notice_update = this.$elmt.find( '.ditty-notification--updated' );
48
- this.$notice_error = this.$elmt.find( '.ditty-notification--error' );
49
- this.$notice_warning = this.$elmt.find( '.ditty-notification--warning' );
50
- this.initData = null;
51
- this.url = window.location.href;
52
- this._init();
53
- };
54
-
55
-
56
- Ditty_Settings.prototype = {
57
-
58
- /**
59
- * Initialize the data list
60
- *
61
- * @since 3.0
62
- * @return null
63
- */
64
- _init: function () {
65
-
66
- // Initialize the slider
67
- this._initSlider();
68
-
69
- // Add listeners
70
- $( 'body' ).on( 'ditty_field_clone_update', { self: this }, this._enableSettingsUpdates );
71
- this.saveBtns.on( 'click', { self: this }, this._submitForm );
72
- this.tabs.on( 'click', { self: this }, this._tabClick );
73
- this.$panels.on( 'ditty_slider_init', { self: this }, this._sliderInit );
74
- this.$panels.on( 'ditty_slider_before_slide_update', { self: this }, this._beforeSlideUpdate );
75
- this.$form.on( 'keyup change', 'input[type="text"], input[type="number"], textarea, select', { self: this }, this._checkUpdates );
76
- this.$form.on( 'click', 'input[type="radio"], input[type="checkbox"]', { self: this }, this._checkUpdates );
77
- this.$form.on( 'ditty_input_wysiwyg_update', '.ditty-input--wysiwyg', { self: this }, this._checkUpdates );
78
- this.$form.on( 'click', '.ditty-default-layout-install', { self: this }, this._installLayout );
79
- this.$form.on( 'click', '.ditty-default-display-install', { self: this }, this._installDisplay );
80
- //this.$form.on( 'click', 'button[name="ditty_export_button"]', { self: this }, this._exportPosts );
81
-
82
- if ( this.url.indexOf( "#" ) > 0 ) {
83
- var activePanel = this.url.substring( this.url.indexOf( "#" ) + 1 );
84
- this._activatePanel( activePanel );
85
- }
86
- },
87
-
88
- /**
89
- * Initialize the slider
90
- *
91
- * @since 3.0.13
92
- * @return null
93
- */
94
- _initSlider: function () {
95
- var initPanel = this.$panels.data( 'init_panel' );
96
- this.$panels.ditty_slider( {
97
- transition : 'fade',
98
- transitionEase : 'linear',
99
- transitionSpeed : 0,
100
- heightSpeed : 0,
101
- initTransition : 'fade',
102
- initTransitionEase : 'linear',
103
- initTransitionSpeed : 0,
104
- initHeightEase : 'linear',
105
- initHeightSpeed : 0,
106
- touchSwipe : false,
107
- slidesEl : '.ditty-settings__panel',
108
- slideId : ( '' !== initPanel ) ? initPanel : false
109
- } );
110
- },
111
-
112
- /**
113
- * Slider init
114
- *
115
- * @since 3.0
116
- * @return null
117
- */
118
- _sliderInit: function( e ) {
119
- var self = e.data.self;
120
- self.initData = self.$form.serialize();
121
- },
122
-
123
- /**
124
- * Before slide update
125
- *
126
- * @since 3.0
127
- * @return null
128
- */
129
- _beforeSlideUpdate: function( e, index, slide ) {
130
- var self = e.data.self;
131
- self._initFields( slide.$elmt );
132
- self.$elmt.find( '.ditty-settings__tab' ).removeClass( 'active' );
133
- self.$elmt.find( '.ditty-settings__tab[data-panel="' + slide.id + '"]' ).addClass( 'active' );
134
- },
135
-
136
- /**
137
- * Preview button add updates class
138
- *
139
- * @since 3.0
140
- * @return null
141
- */
142
- _enableSettingsUpdates: function( e ) {
143
- var self = ( e ) ? e.data.self : this;
144
- self.saveBtns.addClass( 'has-updates' );
145
- //self.notice_warning.slideDown();
146
- },
147
-
148
- /**
149
- * Preview button remove updates class
150
- *
151
- * @since 3.0
152
- * @return null
153
- */
154
- _disableSettingsUpdates: function() {
155
- this.saveBtns.removeClass( 'has-updates' );
156
- },
157
-
158
- /**
159
- * Check for updates
160
- *
161
- * @since 3.0
162
- * @return null
163
- */
164
- _checkUpdates: function( e ) {
165
- var self = e ? e.data.self : this;
166
- var currentData = self.$form.serialize();
167
- if ( currentData !== self.initData ) {
168
- self._enableSettingsUpdates();
169
- } else {
170
- self._disableSettingsUpdates();
171
- }
172
- },
173
-
174
- /**
175
- * Initialize dynamic fields
176
- *
177
- * @since 3.0
178
- * @return null
179
- */
180
- _initFields: function ( $fields ) {
181
- $fields.find( '.ditty-data-list' ).ditty_ui_data_list();
182
- $fields.trigger( 'ditty_init_fields' );
183
- $.protip( {
184
- defaults: {
185
- position: 'top',
186
- size: 'small',
187
- scheme: 'black',
188
- classes: 'ditty-protip'
189
- }
190
- } );
191
- },
192
-
193
- /**
194
- * Show or hide post types
195
- *
196
- * @since 3.0
197
- * @return null
198
- */
199
- _togglePostTypes: function () {
200
- if ( $( 'input[name="ditty_layout_ui"]' ).length ) {
201
- var layoutUiVal = $( 'input[name="ditty_layout_ui"]:checked' ).val(),
202
- $layoutMenu = $( '#adminmenu .wp-submenu > li > a[href="edit.php?post_type=ditty_layout"]' );
203
- if ( 'disabled' === layoutUiVal ) {
204
- $layoutMenu.hide();
205
- } else {
206
- $layoutMenu.css( 'display', 'block' );
207
- }
208
- }
209
- if ( $( 'input[name="ditty_display_ui"]' ).length ) {
210
- var displayUiVal = $( 'input[name="ditty_display_ui"]:checked' ).val(),
211
- $displayMenu = $( '#adminmenu .wp-submenu > li > a[href="edit.php?post_type=ditty_display"]' );
212
- if ( 'disabled' === displayUiVal ) {
213
- $displayMenu.hide();
214
- } else {
215
- $displayMenu.css( 'display', 'block' );
216
- }
217
- }
218
- },
219
-
220
- /**
221
- * Activate a panel
222
- *
223
- * @since 3.0.13
224
- * @return null
225
- */
226
- _activatePanel: function( panelId ) {
227
- var $tab = this.$elmt.find( '.ditty-settings__tab[data-panel="' + panelId + '"]' );
228
- if ( ! $tab.length ) {
229
- return false;
230
- }
231
-
232
- this.$elmt.find( '.ditty-settings__tab' ).removeClass( 'active' );
233
- $tab.addClass( 'active' );
234
-
235
- this.$panels.ditty_slider( 'showSlideById', panelId );
236
- },
237
-
238
- /**
239
- * Listen for a tab click
240
- *
241
- * @since 3.0
242
- * @return null
243
- */
244
- _tabClick: function( e ) {
245
- e.preventDefault();
246
- var self = e.data.self,
247
- $tab = $( e.target ).is( 'a' ) ? $( e.target ) : $( e.target ).parent( 'a' ),
248
- slideId = $tab.data( 'panel' ),
249
- $currentTab = self.$elmt.find( '.ditty-settings__tab.active' );
250
-
251
- if ( $currentTab === $tab ) {
252
- return false;
253
- }
254
-
255
- var newUrl;
256
- if ( slideId ) {
257
- var hash = '#' + slideId;
258
- newUrl = self.url.split("#")[0] + hash;
259
- } else {
260
- newUrl = self.url.split("#")[0];
261
- }
262
- history.replaceState( null, null, newUrl );
263
-
264
- self._activatePanel( slideId );
265
- },
266
-
267
- /**
268
- * Update inputs after save and sanitize
269
- *
270
- * @since 3.0
271
- * @return null
272
- */
273
- _upateInputs: function( updates ) {
274
- $.each( updates, function( inputName, updatedValue ) {
275
- if ( $( 'input[name="' + inputName + '"]' ).length ) {
276
- $( 'input[name="' + inputName + '"]' ).val( updatedValue );
277
- }
278
- } );
279
- },
280
-
281
- /**
282
- * Submit updates
283
- *
284
- * @since 3.0
285
- * @return null
286
- */
287
- _submitForm: function( e ) {
288
- e.preventDefault();
289
- var self = e.data.self;
290
-
291
- if ( self.$elmt.hasClass( 'updating' ) ) {
292
- return false;
293
- }
294
-
295
- self.$elmt.trigger( 'ditty_pre_save_fields' );
296
- self.$elmt.addClass( 'updating' );
297
- self.saveBtns.text( dittyAdminVars.adminStrings.settingsSaving );
298
-
299
- self.$form.ajaxSubmit( {
300
- url : dittyAdminVars.ajaxurl,
301
- type : 'post',
302
- dataType : 'json',
303
- data : {
304
- action : 'ditty_settings_save',
305
- security : dittyAdminVars.security
306
- },
307
- success: function( data ) {
308
- if ( data.input_updates ) {
309
- self._upateInputs( data.input_updates );
310
- }
311
- self.initData = self.$form.serialize();
312
- self.saveBtns.text( dittyAdminVars.adminStrings.settings_updated );
313
- setTimeout( function() {
314
- self.saveBtns.text( dittyAdminVars.adminStrings.settings_save );
315
- }, 2000 );
316
- self.$elmt.removeClass( 'updating' );
317
- self._disableSettingsUpdates();
318
-
319
- //self.$notice_update.slideDown();
320
-
321
- // Check the post types display
322
- self._togglePostTypes();
323
- }
324
- } );
325
- },
326
-
327
- /**
328
- * Install a layout
329
- *
330
- * @since 3.0
331
- * @return null
332
- */
333
- _installLayout: function( e ) {
334
- e.preventDefault();
335
- var self = e.data.self,
336
- $button = $( e.target ).is( 'button' ) ? $( e.target ) : $( e.target ).parents( 'button' ),
337
- $icon = $button.find( 'i' ),
338
- iconClass = $icon.attr( 'class' );
339
-
340
- if ( $button.hasClass( 'updating' ) ) {
341
- return false;
342
- }
343
- $button.addClass( 'updating' );
344
- $icon.attr( 'class', dittyAdminVars.updateIcon );
345
-
346
- var data = {
347
- action : 'ditty_install_layout',
348
- layout_template : $button.data( 'layout_template' ),
349
- layout_version : $button.data( 'layout_version' ),
350
- security : dittyAdminVars.security
351
- };
352
- $.post( dittyAdminVars.ajaxurl, data, function( response ) {
353
- $icon.attr( 'class', iconClass );
354
- self.$elmt.removeClass( 'updating' );
355
- if ( response ) {
356
- $button.replaceWith( response.button );
357
- }
358
- } );
359
- },
360
-
361
- /**
362
- * Install a display
363
- *
364
- * @since 3.0
365
- * @return null
366
- */
367
- _installDisplay: function( e ) {
368
- e.preventDefault();
369
- var self = e.data.self,
370
- $button = $( e.target ).is( 'button' ) ? $( e.target ) : $( e.target ).parents( 'button' ),
371
- $icon = $button.find( 'i' ),
372
- iconClass = $icon.attr( 'class' );
373
-
374
- if ( $button.hasClass( 'updating' ) ) {
375
- return false;
376
- }
377
- $button.addClass( 'updating' );
378
- $icon.attr( 'class', dittyAdminVars.updateIcon );
379
-
380
- var data = {
381
- action : 'ditty_install_display',
382
- display_type : $button.data( 'display_type' ),
383
- display_template : $button.data( 'display_template' ),
384
- display_version : $button.data( 'display_version' ),
385
- security : dittyAdminVars.security
386
- };
387
- $.post( dittyAdminVars.ajaxurl, data, function( response ) {
388
- $icon.attr( 'class', iconClass );
389
- self.$elmt.removeClass( 'updating' );
390
- if ( response ) {
391
- $button.replaceWith( response.button );
392
- }
393
- } );
394
- },
395
-
396
- /**
397
- * Export posts
398
- *
399
- * @since 3.0.13
400
- * @return null
401
- */
402
- // _exportPosts: function( e ) {
403
- // e.preventDefault();
404
- // var self = e.data.self,
405
- // $button = $( e.target ).is( 'button' ) ? $( e.target ) : $( e.target ).parents( 'button' ),
406
- // $parent = $button.parent( '.ditty-field-only' ),
407
- // $options = $parent.siblings( '.ditty-field-only--ditty_export_options' ),
408
- // $icon = $button.find( 'i' ),
409
- // export_options = [];
410
- //
411
- // if ( $button.attr( 'disabled' ) ) {
412
- // return false;
413
- // }
414
- // $button.attr( 'disabled', 'disabled' );
415
- // $icon.show();
416
- //
417
- // if ( $options.length ) {
418
- // $options.find( 'input[type="checkbox"]' ).each( function() {
419
- // if ( $( this ).is( ':checked' ) ) {
420
- // export_options.push( $( this ).val() );
421
- // }
422
- // } );
423
- // }
424
- //
425
- // var data = {
426
- // action : 'ditty_export_posts',
427
- // export_type : $button.data( 'export_type' ),
428
- // export_options : export_options,
429
- // security : dittyAdminVars.security
430
- // };
431
- // $.post( dittyAdminVars.ajaxurl, data, function( response ) {
432
- // $icon.hide();
433
- // self.$elmt.removeAttr( 'disabled' );
434
- // } );
435
- // },
436
-
437
- /**
438
- * Return a specific setting
439
- *
440
- * @since 3.0
441
- * @return null
442
- */
443
- _options: function ( key ) {
444
- return this.settings[key];
445
- },
446
-
447
- /**
448
- * Setup triggers
449
- *
450
- * @since 3.0
451
- * @return null
452
- */
453
- trigger: function ( fn, customParams ) {
454
- var params = [this.settings];
455
- if ( customParams ) {
456
- params = customParams;
457
- }
458
-
459
- this.$elmt.trigger( 'ditty_settings_' + fn, params );
460
-
461
- if ( typeof this.settings[fn] === 'function' ) {
462
- this.settings[fn].apply( this.$elmt, params );
463
- }
464
- },
465
-
466
- /**
467
- * Allow settings to be modified
468
- *
469
- * @since 3.0
470
- * @return null
471
- */
472
- options: function ( key, value ) {
473
-
474
- if ( typeof key === 'object' ) {
475
- this.settings = $.extend( {}, defaults, $.ditty_settings.defaults, key );
476
- } else if ( typeof key === 'string' ) {
477
- if ( value === undefined ) {
478
- return this.settings[key];
479
- }
480
- this.settings[key] = value;
481
- } else {
482
- return this.settings;
483
- }
484
-
485
- this.trigger( 'options_update' );
486
- },
487
-
488
- /**
489
- * Destroy the editor
490
- *
491
- * @since 3.0
492
- * @return null
493
- */
494
- destroy: function () {
495
-
496
- // Remove listeners
497
- $( 'body' ).off( 'ditty_field_clone_update', { self: this }, this._enableSettingsUpdates );
498
- this.saveBtns.off( 'click', { self: this }, this._submitForm );
499
- this.tabs.off( 'click', { self: this }, this._tabClick );
500
- this.$panels.off( 'ditty_slider_init', { self: this }, this._sliderInit );
501
- this.$panels.off( 'ditty_slider_before_slide_update', { self: this }, this._beforeSlideUpdate );
502
- this.$form.off( 'keyup change', 'input[type="text"], input[type="number"], textarea, select', { self: this }, this._checkUpdates );
503
- this.$form.off( 'click', 'input[type="radio"], input[type="checkbox"]', { self: this }, this._checkUpdates );
504
- this.$form.off( 'ditty_input_wysiwyg_update', '.ditty-input--wysiwyg', { self: this }, this._checkUpdates );
505
- this.$form.off( 'click', '.ditty-default-layout-install', { self: this }, this._installLayout );
506
- this.$form.off( 'click', '.ditty-default-display-install', { self: this }, this._installDisplay );
507
- //this.$form.off( 'click', 'button[name="ditty_export_button"]', { self: this }, this._exportPosts );
508
-
509
- this.$panels.ditty_slider( 'destroy' );
510
- this.elmt._ditty_settings = null;
511
- }
512
- };
513
-
514
- /**
515
- * Create the data list
516
- *
517
- * @since 3.0
518
- * @return null
519
- */
520
- $.fn.ditty_settings = function( options ) {
521
- var args = arguments,
522
- error = false,
523
- returns;
524
-
525
- if ( options === undefined || typeof options === 'object' ) {
526
- return this.each( function () {
527
- if ( ! this._ditty_settings ) {
528
- this._ditty_settings = new Ditty_Settings( this, options );
529
- }
530
- });
531
- } else if ( typeof options === 'string' ) {
532
- this.each( function () {
533
- var instance = this._ditty_settings;
534
-
535
- if ( ! instance ) {
536
- throw new Error( 'No Ditty_Settings applied to this element.' );
537
- }
538
- if ( typeof instance[options] === 'function' && options[0] !== '_' ) {
539
- returns = instance[options].apply( instance, [].slice.call( args, 1 ) );
540
- } else {
541
- error = true;
542
- }
543
- } );
544
-
545
- if ( error ) {
546
- throw new Error( 'No method "' + options + '" in Ditty_Settings.' );
547
- }
548
-
549
- return returns !== undefined ? returns : this;
550
- }
551
- };
552
-
553
- $.ditty_settings = {};
554
- $.ditty_settings.defaults = defaults;
555
-
556
- } )( jQuery );
557
-
558
-
559
- /**
560
- * Ditty Extension class
561
- *
562
- * @since 3.0
563
- * @return null
564
- */
565
-
566
- (function ($) {
567
- 'use strict';
568
-
569
- var defaults = {
570
- };
571
-
572
- var Ditty_Extension = function ( elmt, options ) {
573
-
574
- this.elmt = elmt;
575
- this.settings = $.extend( {}, defaults, $.ditty_extension.defaults, options );
576
- this.$elmt = $( elmt );
577
- this.$panels = $( elmt ).find( '.ditty-extension__panels' );
578
- this.initPanel = this.$panels.data( 'init_panel' );
579
-
580
- this._init();
581
- };
582
-
583
- Ditty_Extension.prototype = {
584
-
585
- _init: function () {
586
-
587
- // Add listeners
588
- this.$elmt.on( 'click', '.ditty-extension__tab', { self: this }, this._tabClick );
589
- this.$elmt.on( 'click', 'button[name="submit"]', { self: this }, this._updatePanel );
590
- this.$elmt.on( 'click', '.ditty-extension__license__submit', { self: this, action: 'ditty_extension_license_activate' }, this._licenseUpdate );
591
- this.$elmt.on( 'click', '.ditty-extension__license__refresh', { self: this, action: 'ditty_extension_license_refresh' }, this._licenseUpdate );
592
- this.$elmt.on( 'click', '.ditty-extension__license__deactivate', { self: this, action: 'ditty_extension_license_deactivate' }, this._licenseUpdate );
593
- this.$panels.on( 'ditty_slider_before_slide_update', { self: this }, this._beforePanelUpdate );
594
- this._initSlider();
595
- },
596
-
597
- /**
598
- * Initialize the slider
599
- *
600
- * @since 3.0
601
- * @return null
602
- */
603
- _initSlider: function () {
604
- var args = {
605
- transition : 'fade',
606
- transitionSpeed : 0.75,
607
- heightSpeed : 0.75,
608
- touchSwipe : false,
609
- slidesEl : '.ditty-extension__panel',
610
- slideId : ( '' !== this.initPanel ) ? this.initPanel : false
611
- };
612
- this.$panels.ditty_slider( args );
613
- },
614
-
615
- /**
616
- * Initialize the slider
617
- *
618
- * @since 3.0
619
- * @return null
620
- */
621
- _beforePanelUpdate: function ( e, index, slide ) {
622
- var self = e.data.self;
623
- self.$elmt.find( '.ditty-extension__tab' ).removeClass( 'active' );
624
- self.$elmt.find( '.ditty-extension__tab[data-slide_id="' + slide.id + '"]' ).addClass( 'active' );
625
- },
626
-
627
- /**
628
- * Tab click
629
- *
630
- * @since 3.0
631
- * @return null
632
- */
633
- _tabClick: function ( e ) {
634
- e.preventDefault();
635
- var self = e.data.self;
636
- var $tab = $( this ),
637
- slideId = $tab.data( 'slide_id' ),
638
- transition = 'slideLeft',
639
- $currentTab = self.$elmt.find( '.ditty-extension__tab.active' );
640
-
641
- if ( $currentTab === $tab ) {
642
- return false;
643
- }
644
-
645
- if ( $tab.index() < $currentTab.index() ) {
646
- transition = 'slideRight';
647
- }
648
-
649
- //self.$elmt.find( '.ditty-extension__tab' ).removeClass( 'active' );
650
- //$tab.addClass( 'active' );
651
-
652
- self.$panels.ditty_slider( 'options', 'transition', transition );
653
- self.$panels.ditty_slider( 'showSlideById', slideId );
654
- },
655
-
656
- /**
657
- * Panel update listener
658
- *
659
- * @since 3.0
660
- * @return null
661
- */
662
- _updatePanel: function ( e ) {
663
- e.preventDefault();
664
- var self = e.data.self;
665
-
666
- var $button = $( this ),
667
- $panel = $button.parents( '.ditty-extension__panel' ),
668
- $form = $button.parents( '.ditty-extension__form' ),
669
- $icon = $button.find( 'i' ),
670
- iconClass = $icon.attr( 'class' ),
671
- extension = self.$elmt.data( 'extension' ),
672
- panel = $panel.data( 'slide_id' );
673
-
674
- if ( self.$elmt.hasClass( 'updating' ) ) {
675
- return false;
676
- }
677
-
678
- self.$elmt.addClass( 'updating' );
679
- $icon.attr( 'class', dittyAdminVars.updateIcon );
680
-
681
- $form.ajaxSubmit( {
682
- url : dittyAdminVars.ajaxurl,
683
- type : 'post',
684
- dataType : 'json',
685
- data : {
686
- action : 'ditty_extension_panel_update',
687
- extension : extension,
688
- panel : panel,
689
- security : dittyAdminVars.security
690
- },
691
- success: function( response ) {
692
- $icon.attr( 'class', iconClass );
693
- self.$elmt.removeClass( 'updating' );
694
- $( '#ditty-extensions' ).trigger( 'ditty_extension_panel_updated', [ response, self.$elmt, $panel ] );
695
- }
696
- } );
697
- },
698
-
699
- /**
700
- * Update a license
701
- *
702
- * @since 3.0
703
- * @return null
704
- */
705
- _licenseUpdate: function ( e ) {
706
- e.preventDefault();
707
- var self = e.data.self,
708
- action = e.data.action;
709
-
710
- var $button = $( this ),
711
- $message = self.$elmt.find( '.ditty-extension__license__message' ),
712
- $input = $button.siblings( '.ditty-extension__license__input' ),
713
- license = $input.val(),
714
- extension = $button.data( 'extension' ),
715
- extensionId = $button.data( 'extension_id' ),
716
- extensionName = $button.data( 'extension_name' ),
717
- $icon = $button.children( 'i' );
718
-
719
- if ( self.$elmt.hasClass( 'updating' ) ) {
720
- return false;
721
- }
722
-
723
- self.$elmt.addClass( 'updating' );
724
- $icon.attr( 'class', dittyAdminVars.updateIcon );
725
-
726
- // Load the new display data
727
- var data = {
728
- action : action,
729
- license : license,
730
- extension : extension,
731
- extension_id : extensionId,
732
- extension_name : extensionName,
733
- security : dittyAdminVars.security
734
- };
735
- $.post( dittyAdminVars.ajaxurl, data, function( response ) {
736
- if ( response ) {
737
- self.$elmt.attr( 'data-license_status', response.status );
738
- $message.html( response.message );
739
- }
740
- if ( response.license_key ) {
741
- if ( 'DELETE' === response.license_key ) {
742
- $input.val( '' );
743
- } else {
744
- $input.val( response.license_key );
745
- }
746
- }
747
- $icon.attr( 'class', $icon.data( 'class' ) );
748
- self.$elmt.removeClass( 'updating' );
749
- }, 'json' );
750
- },
751
-
752
- /**
753
- * Return data for the object
754
- *
755
- * @since 3.0
756
- * @return null
757
- */
758
- _getOption: function( key ) {
759
- switch( key ) {
760
- default:
761
- return this.settings[key];
762
- }
763
- },
764
-
765
- /**
766
- * Set data for the object
767
- *
768
- * @since 3.0
769
- * @return null
770
- */
771
- _setOption: function( key, value ) {
772
- if ( undefined === value ) {
773
- return false;
774
- }
775
-
776
- this.settings[key] = value;
777
- },
778
-
779
- /**
780
- * Get or set ditty options
781
- *
782
- * @since 3.0
783
- * @return null
784
- */
785
- options: function ( key, value ) {
786
- var self = this;
787
- if ( typeof key === 'object' ) {
788
- $.each( key, function( k, v ) {
789
- self._setOption( k, v );
790
- });
791
- } else if ( typeof key === 'string' ) {
792
- if ( value === undefined ) {
793
- return self._getOption( key );
794
- }
795
- self._setOption( key, value );
796
- } else {
797
- return self.settings;
798
- }
799
- },
800
-
801
- /**
802
- * Destroy this object
803
- *
804
- * @since 3.0
805
- * @return null
806
- */
807
- destroy: function () {
808
- // Remove listeners
809
- this.$elmt.off( 'click', '.ditty-extension__tab', { self: this }, this._tabClick );
810
- this.$elmt.off( 'click', 'button[name="submit"]', { self: this }, this._updatePanel );
811
- this.$elmt.off( 'click', '.ditty-extension__license__submit, .ditty-extension__license__refresh', { self: this, action: 'ditty_extension_license_activate' }, this._licenseUpdate );
812
- this.$elmt.off( 'click', '.ditty-extension__license__deactivate', { self: this, action: 'ditty_extension_license_deactivate' }, this._licenseUpdate );
813
- this.$panels.off( 'ditty_slider_after_slide_update', { self: this }, this._afterPanelUpdate );
814
-
815
- this.$panels.ditty_slider( 'destroy' );
816
- this.elmt._ditty_extension = null;
817
- }
818
- };
819
-
820
- $.fn.ditty_extension = function( options ) {
821
- var args = arguments,
822
- error = false,
823
- returns;
824
-
825
- if ( options === undefined || typeof options === 'object' ) {
826
- return this.each( function () {
827
- if ( ! this._ditty_extension ) {
828
- this._ditty_extension = new Ditty_Extension( this, options );
829
- }
830
- });
831
- } else if ( typeof options === 'string' ) {
832
- this.each( function () {
833
- var instance = this._ditty_extension;
834
-
835
- if ( ! instance ) {
836
- throw new Error( 'No Ditty_Extension applied to this element.' );
837
- }
838
- if ( typeof instance[options] === 'function' && options[0] !== '_' ) {
839
- returns = instance[options].apply( instance, [].slice.call( args, 1 ) );
840
- } else {
841
- error = true;
842
- }
843
- } );
844
-
845
- if ( error ) {
846
- throw new Error( 'No method "' + options + '" in Ditty_Extension.' );
847
- }
848
-
849
- return returns !== undefined ? returns : this;
850
- }
851
- };
852
-
853
- $.ditty_extension = {};
854
- $.ditty_extension.defaults = defaults;
855
-
856
- } )( jQuery );
857
-
858
-
859
-
860
- jQuery( function( $ ) {
861
- // Setup strict mode
862
- (function() {
863
-
864
- "use strict";
865
-
866
- // Setup protip
867
- $.protip( {
868
- defaults: {
869
- position: 'top',
870
- size: 'small',
871
- scheme: 'black',
872
- classes: 'ditty-protip'
873
- }
874
- } );
875
-
876
- /**
877
- * Listen for an accordion toggle click
878
- *
879
- * @since 3.0
880
- * @return null
881
- */
882
- // $( '#ditty-extensions' ).on( 'click', '.ditty-accordion__toggle', function( e ) {
883
- // e.preventDefault();
884
- // var $accordion = $( this ).parent(),
885
- // $content = $( this ).next();
886
- //
887
- // if ( $accordion.hasClass( 'active' ) ) {
888
- // $accordion.removeClass( 'active' );
889
- // $content.stop().slideUp( { duration: 750, easing: "easeInOutQuint" } );
890
- // } else {
891
- // $accordion.addClass( 'active' );
892
- // $content.stop().slideDown( { duration: 750, easing: "easeInOutQuint" }, function() {
893
- // $content.css( 'height', 'auto' );
894
- // } );
895
- // }
896
- // } );
897
- //
898
- /**
899
- * Initialize the extensions
900
- *
901
- * @since 3.0
902
- * @return null
903
- */
904
- function ditty_extensions_init() {
905
- $( '#ditty-extensions' ).find( '.ditty-extension' ).each( function( index ) {
906
-
907
- var $extension = $( this ),
908
- $panels = $extension.find( '.ditty-extension__panels' );
909
-
910
- if ( $panels.length ) {
911
- $extension.ditty_extension();
912
- }
913
-
914
- $( '#ditty-extensions' ).trigger( 'ditty_init_fields' );
915
-
916
- setTimeout( function() {
917
- $extension.addClass( 'ditty-extension--init' );
918
- }, index * 250 );
919
-
920
- } );
921
- }
922
- ditty_extensions_init();
923
-
924
- }() );
925
-
926
- } );
927
-
928
-
929
- jQuery( function( $ ) {
930
- // Setup strict mode
931
- (function() {
932
-
933
- "use strict";
934
-
935
- var isDisplayPost = ( $( 'input[name="post_type"]' ).length && 'ditty_display' == $( 'input[name="post_type"]' ).val() ),
936
- ajaxSubmitComplete = false;
937
-
938
- $( 'form#post' ).on( 'submit', function( e ) {
939
- if ( isDisplayPost && ! ajaxSubmitComplete ) {
940
- e.preventDefault();
941
-
942
- var $button = $( '#publishing-action' ).children( 'input[type="submit"]' ),
943
- $spinner = $( '#publishing-action' ).children( '.spinner' );
944
-
945
- $button.attr( 'disabled', 'disabled' );
946
- $spinner.css( 'visibility', 'visible' );
947
-
948
- var data = {
949
- action : 'ditty_admin_display_update',
950
- display_id : $( 'input[name="post_ID"]' ).val(),
951
- security : dittyAdminVars.security
952
- };
953
- $( '#ditty-display-settings' ).ajaxSubmit( {
954
- url : dittyAdminVars.ajaxurl,
955
- type : 'post',
956
- dataType : 'json',
957
- data : data,
958
- success: function( response ) {
959
- ajaxSubmitComplete = true;
960
- $( 'form#post' ).submit();
961
- }
962
- } );
963
- }
964
- } );
965
-
966
- }() );
967
-
968
- } );
969
-
970
-
971
- jQuery( function( $ ) {
972
- // Setup strict mode
973
- (function() {
974
-
975
- "use strict";
976
-
977
- var dittyWizardValues = {};
978
-
979
- /**
980
- * Ditty title
981
- *
982
- * @since 3.0.13
983
- */
984
- $( '.ditty-wizard-setting--title input[name="ditty_title"]' ).on( 'keyup', function() {
985
- var $setting = $( this ).parents( '.ditty-wizard-setting' ),
986
- val = $( this ).val();
987
-
988
- if ( '' !== val ) {
989
- $setting.addClass( 'complete' );
990
-
991
- // Show the layout settings
992
- $( '.ditty-wizard-setting--item-type').css( 'display', 'flex' );
993
- }
994
- dittyWizardValues.title = val;
995
- } );
996
-
997
- /**
998
- * Item Type
999
- *
1000
- * @since 3.0.13
1001
- */
1002
- $( '.ditty-wizard-setting--item-type .ditty-option-grid__item' ).on( 'click', function( e ) {
1003
- e.preventDefault();
1004
- var $setting = $( this ).parents( '.ditty-wizard-setting' ),
1005
- slug = $( this ).data( 'value' );
1006
-
1007
- if ( ! $( this ).hasClass( 'active' ) ) {
1008
-
1009
- $( this ).siblings().removeClass( 'active' );
1010
- $( this ).addClass( 'active' );
1011
-
1012
- // Reset & show item type settings
1013
- $( '.ditty-wizard-setting--item-type-settings' ).removeClass( 'complete' );
1014
- $( '.ditty-wizard-setting--item-type-settings .ditty-option-submit' ).addClass( 'ditty-button--primary' );
1015
- $( '.ditty-wizard-setting--item-type-settings').css( 'display', 'flex' );
1016
-
1017
- // Display the correct item type settings group
1018
- var $itemSettings = $( '.ditty-item-type-settings__group[data-id="' + slug + '"]' );
1019
- $( '.ditty-item-type-settings__group' ).removeClass( 'active' ).hide();
1020
- $itemSettings.addClass( 'active' ).show();
1021
- $itemSettings.trigger( 'ditty_init_fields' );
1022
- if ( ! $itemSettings.hasClass( 'init' ) ) {
1023
- $itemSettings.trigger( 'ditty_wizard_init', [slug] );
1024
- $itemSettings.addClass( 'init' );
1025
- }
1026
-
1027
- // Reset the layout settings
1028
- $( '.ditty-wizard-setting--layout' ).removeClass( 'complete' );
1029
- $( '.ditty-wizard-setting--layout .ditty-option-grid__item' ).removeClass( 'active' );
1030
- $( '.ditty-wizard-setting--layout').hide();
1031
-
1032
- // Display the correct layout variation settings group
1033
- $( '.ditty-wizard-setting--layout__variation' ).removeClass( 'complete' ).removeClass( 'active' ).hide();
1034
- $( '.ditty-wizard-setting--layout__variation.' + slug ).addClass( 'active' ).show();
1035
-
1036
- // Reset the display settings
1037
- $( '.ditty-wizard-setting--display' ).removeClass( 'complete' );
1038
- $( '.ditty-wizard-setting--display .ditty-option-grid__item' ).removeClass( 'active' );
1039
- $( '.ditty-wizard-setting--display').hide();
1040
-
1041
- // Reset the submit settings
1042
- $( '.ditty-wizard-setting--submit').hide();
1043
-
1044
- // Add to the initialize object
1045
- dittyWizardValues.itemType = $( this ).data( 'value' );
1046
-
1047
- // Animate to the next setting
1048
- if ( ! $setting.hasClass( 'complete' ) ) {
1049
- $setting.addClass( 'complete' );
1050
- $( [document.documentElement, document.body] ).stop().animate( {
1051
- scrollTop: $( '.ditty-wizard-setting--item-type-settings' ).offset().top
1052
- }, 700 );
1053
- }
1054
- }
1055
- } );
1056
-
1057
- /**
1058
- * Item Type Settings Submit
1059
- *
1060
- * @since 3.0.13
1061
- */
1062
- $( '.ditty-wizard-setting--item-type-settings .ditty-option-submit' ).on( 'click', function( e ) {
1063
- e.preventDefault();
1064
- var $setting = $( this ).parents( '.ditty-wizard-setting' ),
1065
- $settings_group = $setting.find( '.ditty-item-type-settings__group.active' ),
1066
- values = {};
1067
-
1068
- $( this ).removeClass( 'ditty-button--primary' );
1069
-
1070
- $settings_group.find( ':input' ).each( function() {
1071
- var type = $( this ).prop( 'type' );
1072
-
1073
- // checked radios/checkboxes
1074
- if ( ( type === "checkbox" || type === "radio" ) ) {
1075
- if ( this.checked ) {
1076
- values[$( this ).attr( 'name' )] = $( this ).val();
1077
- }
1078
- } else if ( type !== "button" && type !== "submit" ) {
1079
- values[$( this ).attr( 'name' )] = $( this ).val();
1080
- }
1081
- } );
1082
-
1083
- // Show the layout settings
1084
- $( '.ditty-wizard-setting--layout').css( 'display', 'flex' );
1085
-
1086
- // Add to the initialize object
1087
- dittyWizardValues.itemTypeValues = values;
1088
-
1089
- // Animate to the next setting
1090
- if ( ! $setting.hasClass( 'complete' ) ) {
1091
- $setting.addClass( 'complete' );
1092
- $( [document.documentElement, document.body] ).stop().animate( {
1093
- scrollTop: $( '.ditty-wizard-setting--layout' ).offset().top
1094
- }, 700 );
1095
- }
1096
- } );
1097
-
1098
- /**
1099
- * Variation Layout
1100
- *
1101
- * @since 3.0.13
1102
- */
1103
- $( '.ditty-wizard-setting--layout .ditty-option-grid__item' ).on( 'click', function( e ) {
1104
- e.preventDefault();
1105
- var $setting = $( this ).parents( '.ditty-wizard-setting' ),
1106
- $variations = $( this ).parents( '.ditty-wizard-setting--layout__variation' );
1107
-
1108
- if ( ! $( this ).hasClass( 'active' ) ) {
1109
- $( this ).siblings().removeClass( 'active' );
1110
- $( this ).addClass( 'active' );
1111
- $variations.addClass( 'complete' );
1112
-
1113
- // Check for all variations complete
1114
- if ( $( '.ditty-wizard-setting--layout__variation.active' ).length === $( '.ditty-wizard-setting--layout__variation.complete' ).length ) {
1115
- var layoutVariations = {};
1116
- $( '.ditty-wizard-setting--layout__variation.complete' ).each( function() {
1117
- layoutVariations[$( this ).data( 'id' )] = $( this ).find( '.ditty-option-grid__item.active' ).data( 'value' );
1118
- } );
1119
-
1120
- // Show the display settings
1121
- $( '.ditty-wizard-setting--display').css( 'display', 'flex' );
1122
-
1123
- dittyWizardValues.layoutVariations = layoutVariations;
1124
-
1125
- // Animate to the next setting
1126
- if ( ! $setting.hasClass( 'complete' ) ) {
1127
- $setting.addClass( 'complete' );
1128
- $( [document.documentElement, document.body] ).stop().animate( {
1129
- scrollTop: $( '.ditty-wizard-setting--display' ).offset().top
1130
- }, 700 );
1131
- }
1132
- }
1133
- }
1134
- } );
1135
-
1136
- /**
1137
- * Display
1138
- *
1139
- * @since 3.0.13
1140
- */
1141
- $( '.ditty-wizard-setting--display .ditty-option-grid__item' ).on( 'click', function( e ) {
1142
- e.preventDefault();
1143
- var $setting = $( this ).parents( '.ditty-wizard-setting' ),
1144
- id = $( this ).data( 'value' );
1145
-
1146
- if ( ! $( this ).hasClass( 'active' ) ) {
1147
- $( this ).siblings().removeClass( 'active' );
1148
- $( this ).addClass( 'active' );
1149
-
1150
- // Show the submit settings
1151
- $( '.ditty-wizard-setting--submit').css( 'display', 'flex' );
1152
-
1153
- dittyWizardValues.display = id;
1154
-
1155
- // Animate to the next setting
1156
- if ( ! $setting.hasClass( 'complete' ) ) {
1157
- $setting.addClass( 'complete' );
1158
- $( [document.documentElement, document.body] ).stop().animate( {
1159
- scrollTop: $( '.ditty-wizard-setting--submit' ).offset().top
1160
- }, 700 );
1161
- }
1162
- }
1163
- } );
1164
-
1165
- /**
1166
- * Submit the wizard
1167
- *
1168
- * @since 3.0.13
1169
- */
1170
- $( '#ditty-wizard-submit' ).on( 'click', function( e ) {
1171
- e.preventDefault();
1172
-
1173
- var dittyId = $( this ).data( 'ditty_id' );
1174
-
1175
- $( '#ditty-wizard-overlay' ).addClass( 'active' );
1176
-
1177
- //$( this ).text( $( this ).data( 'submitting' ) );
1178
-
1179
- var data = {
1180
- action : 'ditty_submit_wizard',
1181
- ditty_id : dittyId,
1182
- init_values : dittyWizardValues,
1183
- security : dittyVars.security
1184
- };
1185
- $.post( dittyVars.ajaxurl, data, function( response ) {
1186
- window.history.pushState( null, '', '/wp-admin/post.php?post=' + dittyId + '&action=edit' );
1187
- location.reload();
1188
- }, 'json' );
1189
-
1190
- } );
1191
-
1192
- }() );
1193
-
1194
- } );
1
+ jQuery((function($){!function(){"use strict";$("#poststuff").trigger("ditty_init_fields"),$("#ditty-settings").ditty_settings()}()})),jQuery((function($){!function(){"use strict";$("#menu-posts-ditty .wp-submenu li").each((function(){var t=$(this),i=t.children("a");if(i.length){var e=i[0].href.split("="),s=e[e.length-1];t.addClass(s)}}))}()})),function($){"use strict";var t={},i=function(i,e){this.elmt=i,this.settings=$.extend({},t,$.ditty_settings.defaults,e),this.$elmt=$(i),this.$form=this.$elmt.find(".ditty-settings__form"),this.$panels=this.$elmt.find(".ditty-settings__panels"),this.saveBtns=this.$elmt.find(".ditty-settings__save"),this.tabs=this.$elmt.find(".ditty-settings__tab"),this.$notice_update=this.$elmt.find(".ditty-notification--updated"),this.$notice_error=this.$elmt.find(".ditty-notification--error"),this.$notice_warning=this.$elmt.find(".ditty-notification--warning"),this.initData=null,this.url=window.location.href,this._init()};i.prototype={_init:function(){if(this._initSlider(),$("body").on("ditty_field_clone_update",{self:this},this._enableSettingsUpdates),this.saveBtns.on("click",{self:this},this._submitForm),this.$panels.on("ditty_slider_init",{self:this},this._sliderInit),this.$panels.on("ditty_slider_before_slide_update",{self:this},this._beforeSlideUpdate),this.$form.on("keyup change",'input[type="text"], input[type="number"], textarea, select',{self:this},this._checkUpdates),this.$form.on("click",'input[type="radio"], input[type="checkbox"]',{self:this},this._checkUpdates),this.$form.on("ditty_input_wysiwyg_update",".ditty-input--wysiwyg",{self:this},this._checkUpdates),this.$form.on("click",".ditty-default-layout-install",{self:this},this._installLayout),this.$form.on("click",".ditty-default-display-install",{self:this},this._installDisplay),this.$form.on("click",'.ditty-export-posts input[type="checkbox"]',{self:this},this._exportCheckboxClick),this.$elmt.hasClass("dynamic-tabs")&&this.tabs.on("click",{self:this},this._tabClick),this.$elmt.hasClass("dynamic-tabs")&&this.url.indexOf("#")>0){var t=this.url.substring(this.url.indexOf("#")+1);this._activatePanel(t)}},_initSlider:function(){if(this.$elmt.hasClass("dynamic-tabs")){var t=this.$panels.data("init_panel");this.$panels.ditty_slider({transition:"fade",transitionEase:"linear",transitionSpeed:0,heightSpeed:0,initTransition:"fade",initTransitionEase:"linear",initTransitionSpeed:0,initHeightEase:"linear",initHeightSpeed:0,touchSwipe:!1,slidesEl:".ditty-settings__panel",slideId:""!==t&&t})}},_sliderInit:function(t){var i=t.data.self;i.initData=i.$form.serialize()},_beforeSlideUpdate:function(t,i,e){var s=t.data.self;s._initFields(e.$elmt),s.$elmt.find(".ditty-settings__tab").removeClass("active"),s.$elmt.find('.ditty-settings__tab[data-panel="'+e.id+'"]').addClass("active")},_enableSettingsUpdates:function(t){(t?t.data.self:this).saveBtns.addClass("has-updates")},_disableSettingsUpdates:function(){this.saveBtns.removeClass("has-updates")},_checkUpdates:function(t){var i=t?t.data.self:this;i.$form.serialize()!==i.initData?i._enableSettingsUpdates():i._disableSettingsUpdates()},_initFields:function(t){t.find(".ditty-data-list").ditty_ui_data_list(),t.trigger("ditty_init_fields"),$.protip({defaults:{position:"top",size:"small",scheme:"black",classes:"ditty-protip"}})},_togglePostTypes:function(){if($('input[name="ditty_layout_ui"]').length){var t=$('input[name="ditty_layout_ui"]:checked').val(),i=$('#adminmenu .wp-submenu > li > a[href="edit.php?post_type=ditty_layout"]');"disabled"===t?i.hide():i.css("display","block")}if($('input[name="ditty_display_ui"]').length){var e=$('input[name="ditty_display_ui"]:checked').val(),s=$('#adminmenu .wp-submenu > li > a[href="edit.php?post_type=ditty_display"]');"disabled"===e?s.hide():s.css("display","block")}},_activatePanel:function(t){var i=this.$elmt.find('.ditty-settings__tab[data-panel="'+t+'"]');if(!i.length)return!1;this.$elmt.find(".ditty-settings__tab").removeClass("active"),i.addClass("active"),this.$panels.ditty_slider("showSlideById",t)},_tabClick:function(t){t.preventDefault();var i,e=t.data.self,s=$(t.target).is("a")?$(t.target):$(t.target).parent("a"),a=s.data("panel");if(e.$elmt.find(".ditty-settings__tab.active")===s)return!1;if(a){var n="#"+a;i=e.url.split("#")[0]+n}else i=e.url.split("#")[0];history.replaceState(null,null,i),e._activatePanel(a)},_upateInputs:function(t){$.each(t,(function(t,i){$('input[name="'+t+'"]').length&&$('input[name="'+t+'"]').val(i)}))},_submitForm:function(t){t.preventDefault();var i=t.data.self;if(i.$elmt.hasClass("updating"))return!1;i.$elmt.trigger("ditty_pre_save_fields"),i.$elmt.addClass("updating"),i.saveBtns.text(dittyAdminVars.adminStrings.settingsSaving),i.$form.ajaxSubmit({url:dittyAdminVars.ajaxurl,type:"post",dataType:"json",data:{action:"ditty_settings_save",security:dittyAdminVars.security},success:function(t){t.input_updates&&i._upateInputs(t.input_updates),i.initData=i.$form.serialize(),i.saveBtns.text(dittyAdminVars.adminStrings.settings_updated),setTimeout((function(){i.saveBtns.text(dittyAdminVars.adminStrings.settings_save)}),2e3),i.$elmt.removeClass("updating"),i._disableSettingsUpdates(),i._togglePostTypes()}})},_installLayout:function(t){t.preventDefault();var i=t.data.self,e=$(t.target).is("button")?$(t.target):$(t.target).parents("button"),s=e.find("i"),a=s.attr("class");if(e.hasClass("updating"))return!1;e.addClass("updating"),s.attr("class",dittyAdminVars.updateIcon);var n={action:"ditty_install_layout",layout_template:e.data("layout_template"),layout_version:e.data("layout_version"),security:dittyAdminVars.security};$.post(dittyAdminVars.ajaxurl,n,(function(t){s.attr("class",a),i.$elmt.removeClass("updating"),t&&e.replaceWith(t.button)}))},_installDisplay:function(t){t.preventDefault();var i=t.data.self,e=$(t.target).is("button")?$(t.target):$(t.target).parents("button"),s=e.find("i"),a=s.attr("class");if(e.hasClass("updating"))return!1;e.addClass("updating"),s.attr("class",dittyAdminVars.updateIcon);var n={action:"ditty_install_display",display_type:e.data("display_type"),display_template:e.data("display_template"),display_version:e.data("display_version"),security:dittyAdminVars.security};$.post(dittyAdminVars.ajaxurl,n,(function(t){s.attr("class",a),i.$elmt.removeClass("updating"),t&&e.replaceWith(t.button)}))},_exportCheckboxClick:function(t){var i=$(t.target),e=i.parents(".ditty-input--checkboxes__group"),s=(i.parents(".ditty-field__input"),$(".ditty-export-button")),a=e.find('input[type="checkbox"]'),n=i.is(":checked");"select_all"===i.attr("value")&&a.each((function(){$(this)[0]!==i[0]&&$(this).prop("checked",n)}));var d=!1;a.each((function(){$(this).is(":checked")&&(d=!0)})),d?s.attr("disabled",!1):s.attr("disabled","disabled")},_options:function(t){return this.settings[t]},trigger:function(t,i){var e=[this.settings];i&&(e=i),this.$elmt.trigger("ditty_settings_"+t,e),"function"==typeof this.settings[t]&&this.settings[t].apply(this.$elmt,e)},options:function(i,e){if("object"==typeof i)this.settings=$.extend({},t,$.ditty_settings.defaults,i);else{if("string"!=typeof i)return this.settings;if(void 0===e)return this.settings[i];this.settings[i]=e}this.trigger("options_update")},destroy:function(){$("body").off("ditty_field_clone_update",{self:this},this._enableSettingsUpdates),this.saveBtns.off("click",{self:this},this._submitForm),this.tabs.off("click",{self:this},this._tabClick),this.$panels.off("ditty_slider_init",{self:this},this._sliderInit),this.$panels.off("ditty_slider_before_slide_update",{self:this},this._beforeSlideUpdate),this.$form.off("keyup change",'input[type="text"], input[type="number"], textarea, select',{self:this},this._checkUpdates),this.$form.off("click",'input[type="radio"], input[type="checkbox"]',{self:this},this._checkUpdates),this.$form.off("ditty_input_wysiwyg_update",".ditty-input--wysiwyg",{self:this},this._checkUpdates),this.$form.off("click",".ditty-default-layout-install",{self:this},this._installLayout),this.$form.off("click",".ditty-default-display-install",{self:this},this._installDisplay),this.$form.off("click",'.ditty-export-posts input[type="checkbox"]',{self:this},this._exportCheckboxClick),this.$panels.ditty_slider("destroy"),this.elmt._ditty_settings=null}},$.fn.ditty_settings=function(t){var e,s=arguments,a=!1;if(void 0===t||"object"==typeof t)return this.each((function(){this._ditty_settings||(this._ditty_settings=new i(this,t))}));if("string"==typeof t){if(this.each((function(){var i=this._ditty_settings;if(!i)throw new Error("No Ditty_Settings applied to this element.");"function"==typeof i[t]&&"_"!==t[0]?e=i[t].apply(i,[].slice.call(s,1)):a=!0})),a)throw new Error('No method "'+t+'" in Ditty_Settings.');return void 0!==e?e:this}},$.ditty_settings={},$.ditty_settings.defaults=t}(jQuery),function($){"use strict";var t={},i=function(i,e){this.elmt=i,this.settings=$.extend({},t,$.ditty_extension.defaults,e),this.$elmt=$(i),this.$panels=$(i).find(".ditty-extension__panels"),this.initPanel=this.$panels.data("init_panel"),this._init()};i.prototype={_init:function(){this.$elmt.on("click",".ditty-extension__tab",{self:this},this._tabClick),this.$elmt.on("click",'button[name="submit"]',{self:this},this._updatePanel),this.$elmt.on("click",".ditty-extension__license__submit",{self:this,action:"ditty_extension_license_activate"},this._licenseUpdate),this.$elmt.on("click",".ditty-extension__license__refresh",{self:this,action:"ditty_extension_license_refresh"},this._licenseUpdate),this.$elmt.on("click",".ditty-extension__license__deactivate",{self:this,action:"ditty_extension_license_deactivate"},this._licenseUpdate),this.$panels.on("ditty_slider_before_slide_update",{self:this},this._beforePanelUpdate),this._initSlider()},_initSlider:function(){var t={transition:"fade",transitionSpeed:.75,heightSpeed:.75,touchSwipe:!1,slidesEl:".ditty-extension__panel",slideId:""!==this.initPanel&&this.initPanel};this.$panels.ditty_slider(t)},_beforePanelUpdate:function(t,i,e){var s=t.data.self;s.$elmt.find(".ditty-extension__tab").removeClass("active"),s.$elmt.find('.ditty-extension__tab[data-slide_id="'+e.id+'"]').addClass("active")},_tabClick:function(t){t.preventDefault();var i=t.data.self,e=$(this),s=e.data("slide_id"),a="slideLeft",n=i.$elmt.find(".ditty-extension__tab.active");if(n===e)return!1;e.index()<n.index()&&(a="slideRight"),i.$panels.ditty_slider("options","transition",a),i.$panels.ditty_slider("showSlideById",s)},_updatePanel:function(t){t.preventDefault();var i=t.data.self,e=$(this),s=e.parents(".ditty-extension__panel"),a=e.parents(".ditty-extension__form"),n=e.find("i"),d=n.attr("class"),l=i.$elmt.data("extension"),o=s.data("slide_id");if(i.$elmt.hasClass("updating"))return!1;i.$elmt.addClass("updating"),n.attr("class",dittyAdminVars.updateIcon),a.ajaxSubmit({url:dittyAdminVars.ajaxurl,type:"post",dataType:"json",data:{action:"ditty_extension_panel_update",extension:l,panel:o,security:dittyAdminVars.security},success:function(t){n.attr("class",d),i.$elmt.removeClass("updating"),$("#ditty-extensions").trigger("ditty_extension_panel_updated",[t,i.$elmt,s])}})},_licenseUpdate:function(t){t.preventDefault();var i=t.data.self,e=t.data.action,s=$(this),a=i.$elmt.find(".ditty-extension__license__message"),n=s.siblings(".ditty-extension__license__input"),d=n.val(),l=s.data("extension"),o=s.data("extension_id"),r=s.data("extension_name"),c=s.children("i");if(i.$elmt.hasClass("updating"))return!1;i.$elmt.addClass("updating"),c.attr("class",dittyAdminVars.updateIcon);var p={action:e,license:d,extension:l,extension_id:o,extension_name:r,security:dittyAdminVars.security};$.post(dittyAdminVars.ajaxurl,p,(function(t){t&&(i.$elmt.attr("data-license_status",t.status),a.html(t.message)),t.license_key&&("DELETE"===t.license_key?n.val(""):n.val(t.license_key)),c.attr("class",c.data("class")),i.$elmt.removeClass("updating")}),"json")},_getOption:function(t){return this.settings[t]},_setOption:function(t,i){if(void 0===i)return!1;this.settings[t]=i},options:function(t,i){var e=this;if("object"==typeof t)$.each(t,(function(t,i){e._setOption(t,i)}));else{if("string"!=typeof t)return e.settings;if(void 0===i)return e._getOption(t);e._setOption(t,i)}},destroy:function(){this.$elmt.off("click",".ditty-extension__tab",{self:this},this._tabClick),this.$elmt.off("click",'button[name="submit"]',{self:this},this._updatePanel),this.$elmt.off("click",".ditty-extension__license__submit, .ditty-extension__license__refresh",{self:this,action:"ditty_extension_license_activate"},this._licenseUpdate),this.$elmt.off("click",".ditty-extension__license__deactivate",{self:this,action:"ditty_extension_license_deactivate"},this._licenseUpdate),this.$panels.off("ditty_slider_after_slide_update",{self:this},this._afterPanelUpdate),this.$panels.ditty_slider("destroy"),this.elmt._ditty_extension=null}},$.fn.ditty_extension=function(t){var e,s=arguments,a=!1;if(void 0===t||"object"==typeof t)return this.each((function(){this._ditty_extension||(this._ditty_extension=new i(this,t))}));if("string"==typeof t){if(this.each((function(){var i=this._ditty_extension;if(!i)throw new Error("No Ditty_Extension applied to this element.");"function"==typeof i[t]&&"_"!==t[0]?e=i[t].apply(i,[].slice.call(s,1)):a=!0})),a)throw new Error('No method "'+t+'" in Ditty_Extension.');return void 0!==e?e:this}},$.ditty_extension={},$.ditty_extension.defaults=t}(jQuery),jQuery((function($){!function(){"use strict";$.protip({defaults:{position:"top",size:"small",scheme:"black",classes:"ditty-protip"}}),$("#ditty-extensions").find(".ditty-extension").each((function(t){var i=$(this);i.find(".ditty-extension__panels").length&&i.ditty_extension(),$("#ditty-extensions").trigger("ditty_init_fields"),setTimeout((function(){i.addClass("ditty-extension--init")}),250*t)}))}()})),jQuery((function($){!function(){"use strict";var t=$('input[name="post_type"]').length&&"ditty_display"==$('input[name="post_type"]').val(),i=!1;$("form#post").on("submit",(function(e){if(t&&!i){e.preventDefault();var s=$("#publishing-action").children('input[type="submit"]'),a=$("#publishing-action").children(".spinner");s.attr("disabled","disabled"),a.css("visibility","visible");var n={action:"ditty_admin_display_update",display_id:$('input[name="post_ID"]').val(),security:dittyAdminVars.security};$("#ditty-display-settings").ajaxSubmit({url:dittyAdminVars.ajaxurl,type:"post",dataType:"json",data:n,success:function(t){i=!0,$("form#post").submit()}})}}))}()})),jQuery((function($){!function(){"use strict";var t={};$('.ditty-wizard-setting--title input[name="ditty_title"]').on("keyup",(function(){var i=$(this).parents(".ditty-wizard-setting"),e=$(this).val();""!==e&&(i.addClass("complete"),$(".ditty-wizard-setting--item-type").css("display","flex")),t.title=e})),$(".ditty-wizard-setting--item-type .ditty-option-grid__item").on("click",(function(i){i.preventDefault();var e=$(this).parents(".ditty-wizard-setting"),s=$(this).data("value");if(!$(this).hasClass("active")){$(this).siblings().removeClass("active"),$(this).addClass("active"),$(".ditty-wizard-setting--item-type-settings").removeClass("complete"),$(".ditty-wizard-setting--item-type-settings .ditty-option-submit").addClass("ditty-button--primary"),$(".ditty-wizard-setting--item-type-settings").css("display","flex");var a=$('.ditty-item-type-settings__group[data-id="'+s+'"]');$(".ditty-item-type-settings__group").removeClass("active").hide(),a.addClass("active").show(),a.trigger("ditty_init_fields"),a.hasClass("init")||(a.trigger("ditty_wizard_init",[s]),a.addClass("init")),$(".ditty-wizard-setting--layout").removeClass("complete"),$(".ditty-wizard-setting--layout .ditty-option-grid__item").removeClass("active"),$(".ditty-wizard-setting--layout").hide(),$(".ditty-wizard-setting--layout__variation").removeClass("complete").removeClass("active").hide(),$(".ditty-wizard-setting--layout__variation."+s).addClass("active").show(),$(".ditty-wizard-setting--display").removeClass("complete"),$(".ditty-wizard-setting--display .ditty-option-grid__item").removeClass("active"),$(".ditty-wizard-setting--display").hide(),$(".ditty-wizard-setting--submit").hide(),t.itemType=$(this).data("value"),e.hasClass("complete")||(e.addClass("complete"),$([document.documentElement,document.body]).stop().animate({scrollTop:$(".ditty-wizard-setting--item-type-settings").offset().top},700))}})),$(".ditty-wizard-setting--item-type-settings .ditty-option-submit").on("click",(function(i){i.preventDefault();var e=$(this).parents(".ditty-wizard-setting"),s=e.find(".ditty-item-type-settings__group.active"),a={};$(this).removeClass("ditty-button--primary"),s.find(":input").each((function(){var t=$(this).prop("type");"checkbox"===t||"radio"===t?this.checked&&(a[$(this).attr("name")]=$(this).val()):"button"!==t&&"submit"!==t&&(a[$(this).attr("name")]=$(this).val())})),$(".ditty-wizard-setting--layout").css("display","flex"),t.itemTypeValues=a,e.hasClass("complete")||(e.addClass("complete"),$([document.documentElement,document.body]).stop().animate({scrollTop:$(".ditty-wizard-setting--layout").offset().top},700))})),$(".ditty-wizard-setting--layout .ditty-option-grid__item").on("click",(function(i){i.preventDefault();var e=$(this).parents(".ditty-wizard-setting"),s=$(this).parents(".ditty-wizard-setting--layout__variation");if(!$(this).hasClass("active")&&($(this).siblings().removeClass("active"),$(this).addClass("active"),s.addClass("complete"),$(".ditty-wizard-setting--layout__variation.active").length===$(".ditty-wizard-setting--layout__variation.complete").length)){var a={};$(".ditty-wizard-setting--layout__variation.complete").each((function(){a[$(this).data("id")]=$(this).find(".ditty-option-grid__item.active").data("value")})),$(".ditty-wizard-setting--display").css("display","flex"),t.layoutVariations=a,e.hasClass("complete")||(e.addClass("complete"),$([document.documentElement,document.body]).stop().animate({scrollTop:$(".ditty-wizard-setting--display").offset().top},700))}})),$(".ditty-wizard-setting--display .ditty-option-grid__item").on("click",(function(i){i.preventDefault();var e=$(this).parents(".ditty-wizard-setting"),s=$(this).data("value");$(this).hasClass("active")||($(this).siblings().removeClass("active"),$(this).addClass("active"),$(".ditty-wizard-setting--submit").css("display","flex"),t.display=s,e.hasClass("complete")||(e.addClass("complete"),$([document.documentElement,document.body]).stop().animate({scrollTop:$(".ditty-wizard-setting--submit").offset().top},700)))})),$("#ditty-wizard-submit").on("click",(function(i){i.preventDefault();var e=$(this).data("ditty_id");$("#ditty-wizard-overlay").addClass("active");var s={action:"ditty_submit_wizard",ditty_id:e,init_values:t,security:dittyVars.security};$.post(dittyVars.ajaxurl,s,(function(t){window.history.pushState(null,"","/wp-admin/post.php?post="+e+"&action=edit"),location.reload()}),"json")}))}()}));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/js/ditty-editor.min.js CHANGED
@@ -1,3 +1,3 @@
1
  function dittyEditorInit(t){if(!t)return!1;jQuery("#ditty-editor__settings").ditty_editor({ditty:t})}function dittyGetItemsById(t,i){var e=[];return jQuery.each(t,(function(t,s){String(s.id)===String(i)&&e.push(s)})),e}function dittyItemsReorder(t,i){var e=[];return jQuery.each(i,(function(i,s){e=jQuery.merge(e,dittyGetItemsById(t,s))})),e}function dittyDraftUpdate(t,i,e,s){var a=t.settings.editor.getDraftValues(i);return a||(a={}),e?a[e]=s:a=s,t.settings.editor.updateDraftValues(i,a)}function dittyDraftGet(t,i,e){var s=t.settings.editor.getDraftValues(i);return!!s&&(e&&s[e]?s[e]:s)}function dittyDraftDelete(t,i,e){var s=i.settings.editor.getDraftValues(t),a={};return jQuery.each(s,(function(t,i){String(e)!==String(t)&&(a[t]=i)})),"new-"!==String(e).substring(0,4)&&(a[e]="DELETE"),i.settings.editor.updateDraftValues(t,a)}function dittyDraftItemDelete(t,i){return dittyDraftDelete("items",t,i)}function dittyDraftLayoutDelete(t,i){return dittyDraftDelete("layouts",t,i)}function dittyDraftDisplayDelete(t,i){return dittyDraftDelete("displays",t,i)}function dittyDraftItemUpdateData(t,i,e,s){var a=t.settings.editor.getDraftValues("items");return a||(a={}),a[i]||(a[i]={}),a[i].data||(a[i].data={}),e?a[i].data[e]=s:a[i].data=s,t.settings.editor.updateDraftValues("items",a)}function dittyDraftItemGetData(t,i,e){var s=t.settings.editor.getDraftValues("items");return!!s[i]&&(!!s[i].data&&(e?s[i].data[e]?s[i].data[e]:void 0:s[i].data))}function dittyDraftItemUpdateMeta(t,i,e,s){var a=t.settings.editor.getDraftValues("items");return a||(a={}),a[i]||(a[i]={}),a[i].meta||(a[i].meta={}),e?a[i].meta[e]=s:a[i].meta=s,t.settings.editor.updateDraftValues("items",a)}function dittyDraftItemGetMeta(t,i,e){var s=t.settings.editor.getDraftValues("items");return!!s[i]&&(!!s[i].meta&&(e?s[i].meta[e]?s[i].meta[e]:void 0:s[i].meta))}function dittyDraftLayoutUpdate(t,i,e,s){var a=t.settings.editor.getDraftValues("layouts");return a||(a={}),a[i]||(a[i]={}),e?a[i][e]=s:a[i]=s,t.settings.editor.updateDraftValues("layouts",a)}function dittyDraftLayoutGet(t,i,e){var s=t.settings.editor.getDraftValues("layouts");return!!s[i]&&(e?s[i][e]?s[i][e]:void 0:s[i])}function dittyDraftDisplayUpdate(t,i,e,s){var a=t.settings.editor.getDraftValues("displays");return a||(a={}),a[i]||(a[i]={}),e?a[i][e]=s:a[i]=s,t.settings.editor.updateDraftValues("displays",a)}function dittyDraftDisplayGet(t,i,e){var s=t.settings.editor.getDraftValues("layouts");return!!s[i]&&(e?s[i][e]?s[i][e]:void 0:s[i])}jQuery((function($){!function(){"use strict";$("body").on("ditty_editor_before_panel_update",(function(t,i,e,s,a,d){switch(d.delayedSubmitDisable(),$.protip({defaults:{position:"top",size:"small",scheme:"black",classes:"ditty-protip"}}),i){case"settings":e.hasClass("init")||e.ditty_settings_panel({editor:d});break;case"items":e.hasClass("init")?e.ditty_items_panel("panelVisible"):e.ditty_items_panel({editor:d});break;case"displays":e.find(".ditty-data-list__item").removeClass("editing"),e.hasClass("init")?e.ditty_displays_panel("panelVisible"):e.ditty_displays_panel({editor:d});break;case"item_types":e.find(".ditty-data-list__item").removeClass("editing"),e.hasClass("init")?e.ditty_item_types_panel("panelVisible"):e.ditty_item_types_panel({editor:d});break;case"item_editor":e.ditty_item_editor_panel({editor:d});break;case"display_editor":e.ditty_display_editor_panel({editor:d});break;case"layouts":"layoutHtmlEditor"!==s&&"layoutCssEditor"!==s&&e.ditty_layouts_panel({editor:d});break;case"layout_variations":e.hasClass("init")?e.ditty_layout_variations_panel("panelVisible"):e.ditty_layout_variations_panel({editor:d});break;case"layout_html_editor":e.ditty_layout_html_editor_panel({editor:d,prevPanel:s});break;case"layout_css_editor":e.ditty_layout_css_editor_panel({editor:d,prevPanel:s})}})),$("body").on("ditty_editor_panel_removed",(function(t,i,e){switch(i){case"item_editor":e.ditty_item_editor_panel&&e.ditty_item_editor_panel("destroy");break;case"display_editor":e.ditty_display_editor_panel&&e.ditty_display_editor_panel("destroy");break;case"layouts":case"layouts":e.ditty_layouts_panel&&e.ditty_layouts_panel("destroy");break;case"layout_variations":e.ditty_layout_variations_panel&&e.ditty_layout_variations_panel("destroy");break;case"layout_html_editor":e.ditty_layout_html_editor_panel&&e.ditty_layout_html_editor_panel("destroy");break;case"layout_css_editor":e.ditty_layout_css_editor_panel&&e.ditty_layout_css_editor_panel("destroy")}}))}()})),dittyEditorInit(),function($){"use strict";var t={listType:"toggle",showAll:!0,activeFilter:"*",filter:".ditty-data-list__filter",filterSelector:"filter",item:".ditty-data-list__item",itemSelector:"filter"},i=function(i,e){this.elmt=i,this.settings=$.extend({},t,$.ditty_ui_data_list.defaults,e),this.$elmt=$(i),this.filters=[],this._init()};i.prototype={_init:function(){var t=this;this.$elmt.on("click",this.settings.filter,{self:this},this._filterClick),this.$elmt.find(this.settings.filter+".active").each((function(){t._filterList($(this).data(t.settings.filterSelector))})),"*"!==this.settings.activeFilter&&this._filterList(this.settings.activeFilter),setTimeout((function(){t.trigger("init")}),1)},_filterList:function(t){var i=this,e=this.filters;if("toggle"===this.settings.listType)this.filters.includes(t)?this.settings.showAll&&(this.filters=[],this.$elmt.find(this.settings.filter).removeClass("active"),this.$elmt.find(this.settings.item).show()):(this.filters=[t],this.$elmt.find(this.settings.filter).removeClass("active"),this.$elmt.find(this.settings.filter+"[data-"+this.settings.filterSelector+'="'+t+'"]').addClass("active"),this.$elmt.find(this.settings.item).hide(),this.$elmt.find(this.settings.item+"[data-"+this.settings.itemSelector+'="'+t+'"]').show());else if("filter"===this.settings.listType){if(this.$elmt.find(this.settings.item).hide(),this.filters.includes(t)){this.$elmt.find(this.settings.filter+"[data-"+this.settings.filterSelector+'="'+t+'"]').removeClass("active");for(var s=0;s<this.filters.length;s++)i.filters[s]===t&&i.filters.splice(s,1)}else this.$elmt.find(this.settings.filter+"[data-"+this.settings.filterSelector+'="'+t+'"]').addClass("active"),this.filters.push(t);$.each(this.filters,(function(t,e){i.$elmt.find(this.settings.item+"[data-"+this.settings.itemSelector+'="'+e+'"]').show()})),0===this.filters.length&&i.$elmt.find(this.settings.item).show()}e!==this.filters&&i.trigger("update")},_filterClick:function(t){t.preventDefault();var i=t.data.self,e=$(t.target);e.is("a")||(e=e.parents("a")),i._filterList(e.data(i.settings.filterSelector))},_options:function(t){return this.settings[t]},trigger:function(t,i){var e=[this.settings,this.filters];i&&(e=i),this.$elmt.trigger("ditty_ui_data_list_"+t,e),"function"==typeof this.settings[t]&&this.settings[t].apply(this.$elmt,e)},options:function(i,e){if("object"==typeof i)this.settings=$.extend({},t,$.ditty_ui_data_list.defaults,i);else{if("string"!=typeof i)return this.settings;if(void 0===e)return this.settings[i];this.settings[i]=e}this.trigger("options_update")},destroy:function(){this.$elmt.off("click",this.settings.filter,{self:this},this._filterClick),this.trigger("destroy"),this.elmt._ditty_ui_data_list=null}},$.fn.ditty_ui_data_list=function(t){var e,s=arguments,a=!1;if(void 0===t||"object"==typeof t)return this.each((function(){this._ditty_ui_data_list||(this._ditty_ui_data_list=new i(this,t))}));if("string"==typeof t){if(this.each((function(){var i=this._ditty_ui_data_list;if(!i)throw new Error("No Ditty_UI_Data_List applied to this element.");"function"==typeof i[t]&&"_"!==t[0]?e=i[t].apply(i,[].slice.call(s,1)):a=!0})),a)throw new Error('No method "'+t+'" in Ditty_UI_Data_List.');return void 0!==e?e:this}},$.ditty_ui_data_list={},$.ditty_ui_data_list.defaults=t}(jQuery),function($){"use strict";var t={screen:"admin",ditty:null,panel:""},i=function(i,e){this.elmt=i,this.settings=$.extend({},t,$.ditty_editor.defaults,e),this.$elmt=$(i),this.ditty=this.settings.ditty,this.dittyId=this.settings.ditty.options("id"),this.dittyType=this.settings.ditty.options("type"),this.displayId=0,this.panelsLoaded=0,this.unsavedUpdates={},this.draftValues={},this.$overlay=null,this.$contents=null,this.$header=null,this.$update=null,this.$updateCount=null,this.$updateLabel=null,this.$tabs=null,this.$panels=null,this.currentTab=0,this.currentPanel=this.settings.panel,this.delayedSubmit=!1,this.tabs=[],this.panels=[],this.activeItems=[],this._init()};i.prototype={_init:function(){var t,i,e,s,a,d,n,r=this;t=$('<div class="ditty-editor__contents"></div>'),this.$contents=t,i=$('<div class="ditty-editor__header"></div>'),this.$header=i,e=$('<span class="ditty-editor__update__count"></span>'),this.$updateCount=e,s=$('<span class="ditty-editor__update__label">Save Ditty</span>'),this.$updateLabel=s,a=$('<button type="submit" class="ditty-editor__update ditty-button ditty-button--primary"></button>'),this.$update=a,d=$('<div class="ditty-editor__tabs"></div>'),this.$tabs=d,n=$('<div class="ditty-editor__panels"></div>'),this.$panels=n,a.prepend(e,s),i.append(a),t.append(i,d,n),this.$elmt.append(t),this.$overlay=$('<div class="ditty-updating-overlay ditty-admin-item__overlay"><div class="ditty-updating-overlay__inner"><i class="fas fa-sync-alt fa-spin"></i></div></div>'),this.$elmt.append(this.$overlay),$(document).on("postbox-moved",{self:this},this._postboxMoved),$(document).on("postboxes-columnchange",{self:this},this._postboxMoved),$(window).on("beforeunload",{self:this},this._beforeunload),this.ditty.$elmt.on("ditty_active_items_update",{self:this},this._dittyItemsUpdated),this.ditty.$elmt.on("ditty_disabled_items_update",{self:this},this._disabledItemsUpdate),this.$tabs.on("click",".ditty-editor__tab",{self:this},this._showPanel),this.$update.on("click",{self:this},this._saveClick),this.$panels.on("ditty_slider_init",{self:this},this._editorLoaded),this.$panels.on("ditty_slider_before_slide_update",{self:this},this._beforeSlideUpdate),this.$panels.on("ditty_slider_after_slide_update",{self:this},this._afterSlideUpdate),this.$panels.on("ditty_slider_slide_removed",{self:this},this._slideRemoved),this._loadContents(),this.trigger("stop_live_updates"),setTimeout((function(){r.trigger("init")}),1)},_loadContents:function(){var t=this,i={action:"ditty_editor_load_contents",ditty_id:this.dittyId,security:dittyVars.security};$.post(dittyVars.ajaxurl,i,(function(i){t._initTabs(i.tabs),t._initPanels(i.panels),t._initSlider()}),"json")},_editorLoaded:function(t){var i=t.data.self;$("body").trigger("ditty_editor_loaded",[i])},_setUpdateCount:function(){},_initSlider:function(){var t=this.tabs[0].id;this.currentPanel&&""!==this.currentPanel&&(t=this.currentPanel),this.$panels.ditty_slider({transition:"fade",transitionSpeed:.75,heightSpeed:.75,touchSwipe:!1,slides:this.panels,slideId:t})},_beforeSlideUpdate:function(t,i,e,s,a){var d=t.data.self;d.updateStart(),d._updateTab(e.id),$("body").trigger("ditty_editor_before_panel_update",[e.id,e.$elmt,a.id,a.$elmt,d])},_afterSlideUpdate:function(t,i,e,s,a){var d=t.data.self;d.updateStop(),$("body").trigger("ditty_editor_after_panel_update",[e.id,e.$elmt,a.id,a.$elmt,d])},_slideRemoved:function(t,i){var e=t.data.self;$("body").trigger("ditty_editor_panel_removed",[i.id,i.$elmt,e])},_showPanel:function(t){t.preventDefault();var i=t.data.self,e=$(t.target).is("a")?$(t.target):$(t.target).parent("a"),s=e.data("panel"),a=parseInt(e.data("index"));if(s===i.currentTab)return!1;var d=a>i.currentTab?"slideLeft":"slideRight";i.$panels.ditty_slider("options","transition",d),i.$panels.ditty_slider("showSlideById",s),i.currentTab=a,i.$elmt.trigger("ditty_editor_add_drafts")},_updateTab:function(t){var i=$('.ditty-editor__tab[data-panel="'+t+'"]');void 0!==i[0]&&($(".ditty-editor__tab").removeClass("active"),i.addClass("active"),this.currentTab=parseInt(i.data("index")))},_initTabs:function(t){var i=this,e=0;$.each(t,(function(t,s){var a=$('<a href="#" class="ditty-editor__tab ditty-editor__tab--'+t+'" data-panel="'+t+'" data-index="'+e+'"><i class="'+s.icon+'"></i><span>'+s.label+"</span></a>");i.$tabs.append(a),i.tabs.push({id:t,tab:a}),e++}))},_initPanels:function(t){var i=this;$.each(t,(function(t,e){var s='<div class="ditty-editor__panel ditty-editor__panel--'+t+'">'+e+"</div>";i.panels.push({id:t,html:s,cache:!0})}))},_initFields:function(t){t.find(".ditty-data-list").ditty_ui_data_list(),t.trigger("ditty_init_fields"),$.protip({defaults:{position:"top",size:"small",scheme:"black",classes:"ditty-protip"}})},saveDitty:function(t){var i=this,e=i.dittyId;i.$updateLabel.text("Updating..."),i.updateStart();var s={action:"ditty_editor_save",ditty_id:e,draft_values:i.draftValues,return_items:1,security:dittyVars.security};s=$.extend({},s,t),$.post(dittyVars.ajaxurl,s,(function(t){$("body").trigger("ditty_editor_save_ditty_response",[t]),t.display_items&&i.ditty.options("items",t.display_items),i.draftValues={},i.unsavedUpdates={},i._setUpdateCount(),i.$elmt.removeClass("ditty-editor--updates-exist"),i.$updateLabel.text("Ditty Saved!"),setTimeout((function(){i.$updateLabel.text("Save Ditty")}),2e3),i.updateStop(),t.new_ditty_url&&window.history.pushState(null,"","/wp-admin/post.php?post="+e+"&action=edit")}))},_saveClick:function(t){t.preventDefault();var i=t.data.self;i.$elmt.trigger("ditty_editor_save_drafts"),i.delayedSubmit||i.saveDitty()},_dittyItemsUpdated:function(t,i,e){var s=t.data.self;s.activeItems=e,s.trigger("active_items_update")},_disabledItemsUpdate:function(t,i){var e=t.data.self;$.each(i,(function(t,i){"disabled"===i?e.$elmt.find("#ditty-editor-item--"+t).addClass("ditty-editor-item--disabled"):e.$elmt.find("#ditty-editor-item--"+t).removeClass("ditty-editor-item--disabled")}))},_postboxMoved:function(t,i){if(!window.tinymce)return!1;$(i).find(".wp-editor-area").each((function(){var t=$(this).attr("id");tinymce.execCommand("mceRemoveEditor",!0,t),tinymce.execCommand("mceAddEditor",!0,t)}))},_beforeunload:function(t){var i=t.data.self;return Object.keys(i.unsavedUpdates).length>0||void 0},_windowResize:function(t){t.preventDefault()},_options:function(t){return this.settings[t]},panelExists:function(t){var i=this.$panels.ditty_slider("options","slides"),e=!1;return $.each(i,(function(i,s){String(s.id)!==String(t)||(e=!0)})),e},showPanel:function(t,i){i&&this.$panels.ditty_slider("addSlideById",t,i),this.$panels.ditty_slider("showSlideById",t,!0)},updateExists:function(t,i){if(void 0===this.unsavedUpdates[t]&&(this.unsavedUpdates[t]=[]),-1!==$.inArray(i,this.unsavedUpdates[t]))return!0},addUpdate:function(t,i){var e=!1;return void 0===this.unsavedUpdates[t]&&(this.unsavedUpdates[t]=[]),-1===$.inArray(i,this.unsavedUpdates[t])&&(e=!0,this.unsavedUpdates[t].push(i)),this._setUpdateCount(),this.$elmt.addClass("ditty-editor--updates-exist"),e},removeUpdate:function(t,i){if(void 0===this.unsavedUpdates[t])return!1;if(-1===$.inArray(i,this.unsavedUpdates[t]))return!1;var e=!1,s=[];return $.each(this.unsavedUpdates[t],(function(t,a){String(i)===String(a)?e=!0:s.push(a)})),this.unsavedUpdates[t]=s,this._setUpdateCount(),""===this.$updateCount.text()&&this.$elmt.removeClass("ditty-editor--updates-exist"),e},updateStart:function(){this.$overlay.fadeIn()},updateStop:function(){this.$overlay.fadeOut()},initFields:function(t){this._initFields(t)},updateDraftValues:function(t,i){return this.$elmt.addClass("ditty-editor--updates-exist"),t?(this.draftValues[t]=i,"development"===dittyVars.mode&&window.console&&console.log("draftValues:",this.draftValues),this.draftValues[t]):(this.draftValues=i,"development"===dittyVars.mode&&window.console&&console.log("draftValues:",this.draftValues),this.draftValues)},getDraftValues:function(t){return t?!!this.draftValues[t]&&this.draftValues[t]:this.draftValues},delayedSubmitEnable:function(){this.delayedSubmit=!0},delayedSubmitDisable:function(){this.delayedSubmit=!1},trigger:function(t,i){var e=[];switch(t){case"active_items_update":e=[this.ditty,this.activeItems];break;case"stop_live_updates":e=[this.dittyId];break;default:e=[this.settings]}i&&(e=i),this.$elmt.trigger("ditty_editor_"+t,e),"function"==typeof this.settings[t]&&this.settings[t].apply(this.$elmt,e),$("body").trigger("ditty_"+t,e)},_getPanelOption:function(t){return"elmnt"===t?this.$panels:this.settings[t]},_setPanelOption:function(t,i){if(void 0===i)return!1;this.$panels.ditty_slider("options",t,i),this.trigger("update")},panelOptions:function(t,i){var e=this;if("object"==typeof t)$.each(t,(function(t,i){e._setPanelOption(t,i)}));else{if("string"!=typeof t)return e.$panels.ditty_slider("options");if(void 0===i)return e._getPanelOption(t);e._setPanelOption(t,i)}},_getOption:function(t){return"elmnt"===t?this:this.settings[t]},_setOption:function(t,i){if(void 0===i)return!1;this.settings[t]=i,this.trigger("update")},options:function(t,i){var e=this;if("object"==typeof t)$.each(t,(function(t,i){e._setOption(t,i)}));else{if("string"!=typeof t)return e.settings;if(void 0===i)return e._getOption(t);e._setOption(t,i)}},destroy:function(){this.$panels.ditty_slider&&this.$panels.ditty_slider("destroy"),$(document).off("postbox-moved",{self:this},this._postboxMoved),$(document).off("postboxes-columnchange",{self:this},this._postboxMoved),$(window).off("beforeunload",{self:this},this._beforeunload),this.ditty.$elmt.off("ditty_active_items_update",{self:this},this._dittyItemsUpdated),this.ditty.$elmt.off("ditty_disabled_items_update",{self:this},this._disabledItemsUpdate),this.$tabs.off("click","ditty-editor__tab",{self:this},this._showPanel),this.$update.off("click",{self:this},this._saveClick),this.$panels.off("ditty_slider_init",{self:this},this._editorLoaded),this.$panels.off("ditty_slider_before_slide_update",{self:this},this._beforeSlideUpdate),this.$panels.off("ditty_slider_after_slide_update",{self:this},this._afterSlideUpdate),this.$panels.off("ditty_slider_slide_removed",{self:this},this._slideRemoved),this.trigger("destroy"),this.elmt._ditty_editor=null}},$.fn.ditty_editor=function(t){var e,s=arguments,a=!1;if(void 0===t||"object"==typeof t)return this.each((function(){this._ditty_editor||(this._ditty_editor=new i(this,t))}));if("string"==typeof t){if(this.each((function(){var i=this._ditty_editor;if(!i)throw new Error("No Ditty_Editor applied to this element.");"function"==typeof i[t]&&"_"!==t[0]?e=i[t].apply(i,[].slice.call(s,1)):a=!0})),a)throw new Error('No method "'+t+'" in Ditty_Editor.');return void 0!==e?e:this}},$.ditty_editor={},$.ditty_editor.defaults=t}(jQuery),function($){"use strict";var t={editor:null},i=function(i,e){this.elmt=i,this.settings=$.extend({},t,$.ditty_settings_panel.defaults,e),this.$elmt=$(i),this.$form=this.$elmt.find(".ditty-editor-options"),this.$title=this.$elmt.find('input[name="title]'),this.$previewBg=this.$elmt.find('input[name="previewBg"]'),this.$previewPaddingTop=this.$elmt.find('input[name="previewPadding[paddingTop]"]'),this.$previewPaddingBottom=this.$elmt.find('input[name="previewPadding[paddingBottom]"]'),this.$previewPaddingLeft=this.$elmt.find('input[name="previewPadding[paddingLeft]"]'),this.$previewPaddingRight=this.$elmt.find('input[name="previewPadding[paddingRight]"]'),this.$postTitle=$(".ditty-post__title"),this.$editorPreview=$("#ditty-editor__preview"),this.dittyId=this.$form.data("ditty_id"),this.initData=null,this.afterUpdateAction="",this._init()};i.prototype={_init:function(){this.initData=this.$form.serialize(),this.settings.editor.initFields(this.$elmt),this.settings.editor.$elmt.on("ditty_editor_add_drafts",{self:this},this._addDrafts),this.settings.editor.$elmt.on("ditty_editor_save_drafts",{self:this},this._saveDrafts),this.$form.on("submit",{self:this},this._submitForm),this.$form.on("keyup change",'input[type="text"], input[type="number"], textarea, select',{self:this},this._checkUpdates),this.$form.on("click",'input[type="radio"], input[type="checkbox"]',{self:this},this._checkUpdates),this.$form.on("ditty_input_wysiwyg_update",".ditty-input--wysiwyg",{self:this},this._checkUpdates),this.$form.on("keyup change",'input[name="title"]',{self:this},this._titleChange),this.$form.on("keyup change",".ditty-field--preview_settings *",{self:this},this._previewBgChange),this.$elmt.addClass("init")},_checkUpdates:function(t){var i=t?t.data.self:this;i.$form.serialize()!==i.initData?(i.settings.editor.addUpdate("settings",i.itemId),i.settings.editor.delayedSubmitEnable()):i.settings.editor.removeUpdate("settings",i.itemId)},_titleChange:function(t){var i=t?t.data.self:this,e=$(t.target).val();i.$postTitle.text(e)},_previewBgChange:function(t){var i=t?t.data.self:this,e={backgroundColor:i.$previewBg.val(),paddingTop:i.$previewPaddingTop.val(),paddingBottom:i.$previewPaddingBottom.val(),paddingLeft:i.$previewPaddingLeft.val(),paddingRight:i.$previewPaddingRight.val()};i.$editorPreview.css(e)},_addDrafts:function(t){var i=t.data.self;i.$form.serialize()!==i.initData&&i.$form.trigger("submit")},_saveDrafts:function(t){var i=t.data.self;i.$form.serialize()!==i.initData&&(i.afterUpdateAction="save",i.$form.trigger("submit"))},_submitForm:function(t){t.preventDefault();var i=t.data.self,e=i.dittyId;i.settings.editor.updateStart();var s={action:"ditty_editor_settings_update",ditty_id:e,draft_values:i.settings.editor.getDraftValues(),security:dittyVars.security};i.$form.ajaxSubmit({url:dittyVars.ajaxurl,type:"post",dataType:"json",data:s,success:function(t){i.initData=i.$form.serialize(),dittyDraftUpdate(i,"settings",!1,t),i.settings.editor.delayedSubmitDisable(),"save"===i.afterUpdateAction&&i.settings.editor.saveDitty({return_items:0}),i.afterUpdateAction=""}})},_options:function(t){return this.settings[t]},trigger:function(t,i){var e=[this.settings];i&&(e=i),this.$elmt.trigger("ditty_settings_panel_"+t,e),"function"==typeof this.settings[t]&&this.settings[t].apply(this.$elmt,e)},options:function(i,e){if("object"==typeof i)this.settings=$.extend({},t,$.ditty_settings_panel.defaults,i);else{if("string"!=typeof i)return this.settings;if(void 0===e)return this.settings[i];this.settings[i]=e}this.trigger("options_update")},destroy:function(){this.$elmt.removeClass("init"),this.settings.editor.$elmt.off("ditty_editor_save_drafts",{self:this},this._saveDrafts),this.settings.editor.$elmt.off("ditty_editor_add_drafts",{self:this},this._addDrafts),this.$form.off("submit",{self:this},this._submitForm),this.$form.off("keyup change",'input[type="text"], input[type="number"], textarea, select',{self:this},this._checkUpdates),this.$form.off("keyup change",'input[name="previewBg"]',{self:this},this._previewBg_cahnge),this.$form.off("keyup change",'input[name="title"]',{self:this},this._titleChange),this.$form.off("click",'input[type="radio"], input[type="checkbox"]',{self:this},this._checkUpdates),this.$form.off("ditty_input_wysiwyg_update",".ditty-input--wysiwyg",{self:this},this._checkUpdates),this.trigger("destroy"),this.elmt._ditty_settings_panel=null}},$.fn.ditty_settings_panel=function(t){var e,s=arguments,a=!1;if(void 0===t||"object"==typeof t)return this.each((function(){this._ditty_settings_panel||(this._ditty_settings_panel=new i(this,t))}));if("string"==typeof t){if(this.each((function(){var i=this._ditty_settings_panel;if(!i)throw new Error("No Ditty_Settings_Panel applied to this element.");"function"==typeof i[t]&&"_"!==t[0]?e=i[t].apply(i,[].slice.call(s,1)):a=!0})),a)throw new Error('No method "'+t+'" in Ditty_Settings_Panel.');return void 0!==e?e:this}},$.ditty_settings_panel={},$.ditty_settings_panel.defaults=t}(jQuery),function($){"use strict";var t={editor:null},i=function(i,e){this.elmt=i,this.settings=$.extend({},t,$.ditty_items_panel.defaults,e),this.$elmt=$(i),this.$add=$(i).find(".ditty-editor-options__add"),this.$contents=$(i).find(".ditty-editor__panel__contents"),this.$list=$(i).find(".ditty-data-list"),this.$listItems=$(i).find(".ditty-data-list__items"),this.isEmptyTicker=!1,this._init()};i.prototype={_init:function(){this.$elmt.addClass("init"),this.settings.editor.$elmt.on("ditty_editor_active_items_update",{self:this},this._dittyActiveItemsUpdated),this.$add.on("click",{self:this},this._add_item),this.$elmt.on("click",".ditty-data-list__item",{self:this},this._showItem),this.$elmt.on("click",".ditty-data-list__item__icon",{self:this},this._editType),this.$elmt.on("click",".ditty-data-list__item__edit",{self:this},this._editItem),this.$elmt.on("click",".ditty-data-list__item__layout",{self:this},this._editLayoutVariations),this.$elmt.on("click",".ditty-data-list__item__clone",{self:this},this._cloneItem),this.$elmt.on("click",".ditty-data-list__item__delete",{self:this},this._deleteItem),this.$list.on("click",".ditty-editor-item > a",{self:this},this._actionClick),$("body").on("ditty_editor_save_ditty_response",{self:this},this._dittyEditorSaveResponse),1>this.$elmt.find(".ditty-data-list__item").length&&(this.isEmptyTicker=!0,this.$add.trigger("click")),this._initializeSorting(),this._highlightListItems(this.settings.editor.activeItems)},dittyUpdateSavedDraftLayouts:function(t,i){$.each($(".ditty-editor-item"),(function(){var e=$(this).data("layout_value");$.each(e,(function(s,a){String(a)===String(t)&&(e[s]=String(i))})),$(this).attr("data-layout_value",e).data("layout_value",e)}))},_dittyEditorSaveResponse:function(t,i){var e=t.data.self;i.ditty_new_item_ids&&$.each(i.ditty_new_item_ids,(function(t,i){var e=$("#ditty-editor-item--"+t);e.length&&(e.attr("id","ditty-editor-item--"+i),e.attr("data-item_id",i).data("item_id",i))})),i.ditty_new_layout_ids&&$.each(i.ditty_new_layout_ids,(function(t,i){e.dittyUpdateSavedDraftLayouts(t,i)}))},_highlightListItem:function(t){var i=t.id+"";i=i.split("_"),this.$elmt.find("#ditty-editor-item--"+i[0]).addClass("active")},_highlightListItems:function(t){this.$elmt.find(".ditty-data-list__item").removeClass("active");var i=this;Array.isArray(t)?$.each(t,(function(t,e){i._highlightListItem(e)})):i._highlightListItem(t)},_dittyActiveItemsUpdated:function(t,i,e){t.data.self._highlightListItems(e)},_initializeSorting:function(){var t=this;this.$listItems.sortable({handle:".ditty-data-list__item__move",items:".ditty-data-list__item",axis:"y",start:function(t,i){$(i.item).addClass("ditty-data-list__item--moving")},stop:function(i,e){$(e.item).removeClass("ditty-data-list__item--moving"),t.settings.editor.addUpdate("item_order",t.settings.editor.dittyId)},update:function(){t._updateItemIndexes("updateDitty")}})},_showItem:function(t){t.preventDefault();var i=t.data.self;if(!$(t.target).is("a")&&!$(t.target).parent().is("a")){var e=($(t.target).is(".ditty-data-list__item")?$(t.target):$(t.target).parents(".ditty-data-list__item")).data("item_id");i.settings.editor.ditty.showItem(e)}},_actionClick:function(t){t.preventDefault();var i=t.data.self,e=$(t.target).is("a")?$(t.target):$(t.target).parent("a"),s=e.parents(".ditty-data-list__item"),a=s.data("ditty_id"),d=s.data("item_id");dittyVars.editor.currentItem=s,$("body").trigger("ditty_editor_item_action_click",[e,s,d,a,i.settings.editor])},_editType:function(t){t.preventDefault();var i=t.data.self,e=($(t.target).is("a")?$(t.target):$(t.target).parent("a")).parents(".ditty-data-list__item");e.trigger("click"),e.addClass("editing"),i.settings.editor.updateStart(),i.settings.editor.panelOptions("transition","slideRight"),i.settings.editor.showPanel("item_types")},_editItem:function(t){t.preventDefault();var i=t.data.self,e=($(t.target).is("a")?$(t.target):$(t.target).parent("a")).parents(".ditty-data-list__item"),s=e.data("item_id");e.trigger("click"),e.addClass("editing"),i.settings.editor.updateStart();var a={action:"ditty_editor_item_fields",item_id:s,draft_values:i.settings.editor.getDraftValues(),security:dittyVars.security};$.post(dittyVars.ajaxurl,a,(function(t){if(t){var e='<div class="ditty-editor__panel ditty-editor__panel--item_editor">'+t+"</div>";i.settings.editor.panelOptions("transition","slideLeft"),i.settings.editor.showPanel("item_editor",e)}}))},_editLayoutVariations:function(t){t.preventDefault();var i=t.data.self,e=($(t.target).is("a")?$(t.target):$(t.target).parent("a")).parents(".ditty-data-list__item"),s=e.data("item_type"),a=e.data("layout_value"),d=e.find(".ditty-data-list__item__label").html();e.trigger("click"),e.addClass("editing"),i.settings.editor.updateStart();var n={action:"ditty_editor_layout_variations",ditty_id:i.settings.editor.dittyId,item_type:s,item_label:d,layout_value:a,draft_values:i.settings.editor.getDraftValues(),security:dittyVars.security};$.post(dittyVars.ajaxurl,n,(function(t){if(t){var e='<div class="ditty-editor__panel ditty-editor__panel--layout-variations">'+t+"</div>";i.settings.editor.panelOptions("transition","slideLeft"),i.settings.editor.showPanel("layout_variations",e)}}))},_add_item:function(t){t.preventDefault();var i=t.data.self,e={action:"ditty_editor_item_add",ditty_id:i.settings.editor.dittyId,draft_values:i.settings.editor.getDraftValues(),security:dittyVars.security};$.post(dittyVars.ajaxurl,e,(function(t){if(t.display_items){if(i.isEmptyTicker){var e=i.settings.editor.ditty.options("items");$.each(e,(function(t,e){i.settings.editor.ditty.deleteItem(e.id)})),i.isEmptyTicker=!1}$.each(t.display_items,(function(t,e){i.settings.editor.ditty.addItem(e,0)}))}if(t.editor_item){var s=$(t.editor_item);s.hide(),i.$listItems.prepend(s),s.slideDown(),i._updateItemIndexes()}t.draft_id&&t.draft_data&&dittyDraftItemUpdateData(i,t.draft_id,null,t.draft_data),t.draft_id&&t.draft_meta&&dittyDraftItemUpdateMeta(i,t.draft_id,null,t.draft_meta)}),"json")},_cloneItem:function(t){t.preventDefault();var i=t.data.self,e=($(t.target).is("a")?$(t.target):$(t.target).parent("a")).parents(".ditty-data-list__item"),s=e.data("item_id");i.settings.editor.updateStart();var a={action:"ditty_editor_item_clone",item_id:s,draft_values:i.settings.editor.getDraftValues(),security:dittyVars.security};$.post(dittyVars.ajaxurl,a,(function(t){if(t.display_items&&t.display_items.length&&i.settings.editor.ditty.updateItems(t.display_items,s,"after"),t.editor_item){var a=$(t.editor_item);a.hide(),e.after(a),a.slideDown(),i._updateItemIndexes()}t.draft_id&&t.draft_data&&dittyDraftItemUpdateData(i,t.draft_id,null,t.draft_data),t.draft_id&&t.draft_meta&&dittyDraftItemUpdateMeta(i,t.draft_id,null,t.draft_meta),i.settings.editor.updateStop()}),"json")},_deleteItem:function(t){t.preventDefault();var i=t.data.self,e=($(t.target).is("a")?$(t.target):$(t.target).parent("a")).parents(".ditty-data-list__item"),s=e.data("item_id");1>=i.$elmt.find(".ditty-data-list__item").length&&i.$add.trigger("click"),e.slideUp((function(){$(this).remove()})),i.settings.editor.ditty.deleteItem(s),dittyDraftItemDelete(i,s)},_updateItemIndexes:function(t){var i=this,e=[];if(this.$elmt.find(".ditty-data-list__item").each((function(t){var s=$(this).data("item_id");e.push(s),dittyDraftItemUpdateData(i,s,"item_index",t)})),"updateDitty"===t){var s=dittyItemsReorder(i.settings.editor.ditty.options("items"),e);i.settings.editor.ditty.options("items",s)}},panelVisible:function(){this.$elmt.find(".ditty-data-list__item").removeClass("editing")},_options:function(t){return this.settings[t]},trigger:function(t,i){var e=[this.settings];i&&(e=i),this.$elmt.trigger("ditty_items_panel_"+t,e),"function"==typeof this.settings[t]&&this.settings[t].apply(this.$elmt,e)},options:function(i,e){if("object"==typeof i)this.settings=$.extend({},t,$.ditty_items_panel.defaults,i);else{if("string"!=typeof i)return this.settings;if(void 0===e)return this.settings[i];this.settings[i]=e}this.trigger("options_update")},destroy:function(){this.$elmt.removeClass("init"),this.settings.editor.$elmt.off("ditty_editor_active_items_update",{self:this},this._dittyActiveItemsUpdated),this.$add.off("click",{self:this},this._add_item),this.$elmt.off("click",".ditty-data-list__item",{self:this},this._showItem),this.$elmt.off("click",".ditty-data-list__item__icon",{self:this},this._editType),this.$elmt.off("click",".ditty-data-list__item__edit",{self:this},this._editItem),this.$elmt.off("click",".ditty-data-list__item__layout",{self:this
2
- },this._editLayoutVariations),this.$elmt.off("click",".ditty-data-list__item__clone",{self:this},this._cloneItem),this.$elmt.off("click",".ditty-data-list__item__delete",{self:this},this._deleteItem),this.$list.off("click",".ditty-editor-item > a",{self:this},this._actionClick),$("body").off("ditty_editor_save_ditty_response",{self:this},this._dittyEditorSaveResponse),this.trigger("destroy"),this.elmt._ditty_items_panel=null}},$.fn.ditty_items_panel=function(t){var e,s=arguments,a=!1;if(void 0===t||"object"==typeof t)return this.each((function(){this._ditty_items_panel||(this._ditty_items_panel=new i(this,t))}));if("string"==typeof t){if(this.each((function(){var i=this._ditty_items_panel;if(!i)throw new Error("No Ditty_Items_Panel applied to this element.");"function"==typeof i[t]&&"_"!==t[0]?e=i[t].apply(i,[].slice.call(s,1)):a=!0})),a)throw new Error('No method "'+t+'" in Ditty_Items_Panel.');return void 0!==e?e:this}},$.ditty_items_panel={},$.ditty_items_panel.defaults=t}(jQuery),function($){"use strict";var t={editor:null},i=function(i,e){this.elmt=i,this.settings=$.extend({},t,$.ditty_item_types_panel.defaults,e),this.$elmt=$(i),this.$back=this.$elmt.find(".ditty-editor-options__back"),this.$editorItem=this.settings.editor.$panels.find(".ditty-editor__panel--items").find(".ditty-data-list__item.editing"),this.editorDittyId=this.$editorItem.data("ditty_id"),this.editorItemId=this.$editorItem.data("item_id"),this.currentType=null,this._init()};i.prototype={_init:function(){this.$elmt.addClass("init"),this.settings.editor.initFields(this.$elmt),this.$back.on("click",{self:this},this._backClick),this.$elmt.on("click",".ditty-editor-item-type",{self:this},this._typeClick),this.panelVisible()},_showItemsList:function(){this.settings.editor.panelOptions("transition","slideLeft"),this.settings.editor.showPanel("items")},_backClick:function(t){t.preventDefault(),t.data.self._showItemsList()},_typeClick:function(t){t.preventDefault();var i=t.data.self,e=($(t.target).is(".ditty-editor-item-type")?$(t.target):$(t.target).parents(".ditty-editor-item-type")).data("item_type");if(e===i.currentType)i._showItemsList();else{i.settings.editor.updateStart();var s={action:"ditty_editor_item_type_update",item_id:i.editorItemId,item_type:e,draft_values:i.settings.editor.getDraftValues(),security:dittyVars.security};$.post(dittyVars.ajaxurl,s,(function(t){if(t.display_items&&i.settings.editor.ditty.updateItems(t.display_items,i.editorItemId),t.editor_item){var e=$(t.editor_item);i.$editorItem.after(e),i.$editorItem.remove(),i.$editorItem=e}t.draft_id&&t.draft_data&&dittyDraftItemUpdateData(i,t.draft_id,null,t.draft_data),i._showItemsList(),i.settings.editor.updateStop()}),"json")}},panelVisible:function(){this.$editorItem=this.settings.editor.$panels.find(".ditty-editor__panel--items").find(".ditty-data-list__item.editing"),this.editorDittyId=this.$editorItem.data("ditty_id"),this.editorItemId=this.$editorItem.data("item_id"),this.currentType=this.$editorItem.data("item_type"),this.$elmt.find(".ditty-editor-item-type").removeClass("active"),this.$elmt.find('.ditty-editor-item-type[data-item_type="'+this.currentType+'"]').addClass("active")},panelHidden:function(){var t=this.$editorItem.find(".ditty-data-list__item__icon").children("i");t.attr("class",t.data("class"))},_options:function(t){return this.settings[t]},trigger:function(t,i){var e=[this.settings];i&&(e=i),this.$elmt.trigger("ditty_item_types_panel_"+t,e),"function"==typeof this.settings[t]&&this.settings[t].apply(this.$elmt,e)},options:function(i,e){if("object"==typeof i)this.settings=$.extend({},t,$.ditty_item_types_panel.defaults,i);else{if("string"!=typeof i)return this.settings;if(void 0===e)return this.settings[i];this.settings[i]=e}this.trigger("options_update")},destroy:function(){this.$elmt.removeClass("init"),this.$back.off("click",{self:this},this._backClick),this.$elmt.off("click",".ditty-editor-item-type",{self:this},this._typeClick),this.trigger("destroy"),this.elmt._ditty_item_types_panel=null}},$.fn.ditty_item_types_panel=function(t){var e,s=arguments,a=!1;if(void 0===t||"object"==typeof t)return this.each((function(){this._ditty_item_types_panel||(this._ditty_item_types_panel=new i(this,t))}));if("string"==typeof t){if(this.each((function(){var i=this._ditty_item_types_panel;if(!i)throw new Error("No Ditty_Item_Types_Panel applied to this element.");"function"==typeof i[t]&&"_"!==t[0]?e=i[t].apply(i,[].slice.call(s,1)):a=!0})),a)throw new Error('No method "'+t+'" in Ditty_Item_Types_Panel.');return void 0!==e?e:this}},$.ditty_item_types_panel={},$.ditty_item_types_panel.defaults=t}(jQuery),function($){"use strict";var t={editor:null},i=function(i,e){this.elmt=i,this.settings=$.extend({},t,$.ditty_item_editor_panel.defaults,e),this.$elmt=$(i),this.$form=this.$elmt.find(".ditty-editor-options"),this.$back=this.$elmt.find(".ditty-editor-options__back"),this.$preview=this.$elmt.find(".ditty-editor-options__preview"),this.$title=this.$elmt.find(".ditty-editor-options__title"),this.itemId=this.$form.data("item_id"),this.itemType=this.$form.data("item_type"),this.dittyId=this.$form.data("ditty_id"),this.$editorItem=this.settings.editor.$panels.find(".ditty-editor__panel--items").find(".ditty-data-list__item.editing"),this.$editorItemTitle=this.$editorItem.find(".ditty-data-list__item__label"),this.initData=null,this.afterUpdateAction="",this._init()};i.prototype={_init:function(){var t=this;this.initData=this.$form.serialize(),this.settings.editor.initFields(this.$elmt),this.settings.editor.$elmt.on("ditty_editor_add_drafts",{self:this},this._addDrafts),this.settings.editor.$elmt.on("ditty_editor_save_drafts",{self:this},this._saveDrafts),this.$form.on("submit",{self:this},this._submitForm),this.$back.on("click",{self:this},this._backClick),this.$preview.on("click",{self:this},this._previewClick),this.$form.on("keyup change",'input[type="text"], input[type="number"], textarea, select',{self:this},this._checkUpdates),this.$form.on("click",'input[type="radio"], input[type="checkbox"]',{self:this},this._checkUpdates),this.$form.on("ditty_input_wysiwyg_update",".ditty-input--wysiwyg",{self:this},this._checkUpdates),this.$form.on("ditty_field_update",".ditty-field__input",{self:this},this._checkUpdates),setTimeout((function(){t.trigger("init",[t])}),1)},_showItemList:function(){this.settings.editor.$panels.ditty_slider("options","transition","slideRight"),this.settings.editor.$panels.ditty_slider("showSlideById","items")},_enablePreviewButton:function(){this.$preview.addClass("ditty-has-updates")},_disablePreviewButton:function(){this.$preview.removeClass("ditty-has-updates"),this.$preview.children("i").attr("class",this.$preview.children("i").data("class"))},_checkUpdates:function(t){var i=t?t.data.self:this;i.$form.serialize()!==i.initData?(i._enablePreviewButton(),i.settings.editor.addUpdate("item_settings",i.itemId),i.settings.editor.delayedSubmitEnable()):(i._disablePreviewButton(),i.settings.editor.removeUpdate("item_settings",i.itemId))},_addDrafts:function(t){var i=t.data.self;i.$form.serialize()!==i.initData&&i.$form.trigger("submit")},_saveDrafts:function(t){var i=t.data.self;i.$form.serialize()!==i.initData&&(i.afterUpdateAction="save",i.$form.trigger("submit"))},_backClick:function(t){t.preventDefault();var i=t.data.self;i.$form.serialize()===i.initData?i._showItemList():(i.afterUpdateAction="return",i.$form.trigger("submit"))},_previewClick:function(t){t.preventDefault();var i=t.data.self;i.$form.serialize()!==i.initData&&(i.$preview.children("i").attr("class",dittyVars.updateIcon),i.$form.trigger("submit"))},_submitForm:function(t){t.preventDefault();var i=t.data.self,e=i.itemId;i.settings.editor.updateStart();var s={action:"ditty_editor_item_update",item_id:e,draft_values:i.settings.editor.getDraftValues(),security:dittyVars.security};i.$form.ajaxSubmit({url:dittyVars.ajaxurl,type:"post",dataType:"json",data:s,error:function(){},success:function(t){if(t.value_updates&&i._updateValues(t.value_updates),i.initData=i.$form.serialize(),i._disablePreviewButton(),t.display_items&&i.settings.editor.ditty.updateItems(t.display_items,e),t.editor_item){var s=$(t.editor_item).children(".ditty-data-list__item__label").html();i.$title.html(s),i.$editorItemTitle.html(s)}t.draft_id&&t.draft_data&&dittyDraftItemUpdateData(i,t.draft_id,null,t.draft_data),t.draft_id&&t.draft_meta&&dittyDraftItemUpdateMeta(i,t.draft_id,null,t.draft_meta),i.settings.editor.updateStop(),i.settings.editor.delayedSubmitDisable(),"return"===i.afterUpdateAction&&i._showItemList(),"save"===i.afterUpdateAction&&i.settings.editor.saveDitty({return_items:0}),i.afterUpdateAction=""}})},_updateValues:function(t){var i=this;$.each(t,(function(t,e){var s=i.$form.find('[name="'+t+'"]');s.length&&s.val(e)}))},_options:function(t){return this.settings[t]},trigger:function(t,i){var e=[this.settings];i&&(e=i),this.$elmt.trigger("ditty_item_editor_panel_"+t,e),"function"==typeof this.settings[t]&&this.settings[t].apply(this.$elmt,e)},options:function(i,e){if("object"==typeof i)this.settings=$.extend({},t,$.ditty_item_editor_panel.defaults,i);else{if("string"!=typeof i)return this.settings;if(void 0===e)return this.settings[i];this.settings[i]=e}this.trigger("options_update")},destroy:function(){this.settings.editor.$elmt.off("ditty_editor_add_drafts",{self:this},this._saveDrafts),this.settings.editor.$elmt.off("ditty_editor_save_drafts",{self:this},this._saveDrafts),this.$form.off("submit",{self:this},this._submitForm),this.$back.off("click",{self:this},this._backClick),this.$preview.off("click",{self:this},this._previewClick),this.$form.off("keyup change",'input[type="text"], input[type="number"], textarea, select',{self:this},this._checkUpdates),this.$form.off("click",'input[type="radio"], input[type="checkbox"]',{self:this},this._checkUpdates),this.$form.off("ditty_input_wysiwyg_update",".ditty-input--wysiwyg",{self:this},this._checkUpdates),this.$form.off("ditty_field_update",".ditty-field__input",{self:this},this._checkUpdates),this.elmt._ditty_item_editor_panel=null}},$.fn.ditty_item_editor_panel=function(t){var e,s=arguments,a=!1;if(void 0===t||"object"==typeof t)return this.each((function(){this._ditty_item_editor_panel||(this._ditty_item_editor_panel=new i(this,t))}));if("string"==typeof t){if(this.each((function(){var i=this._ditty_item_editor_panel;if(!i)throw new Error("No Ditty_Item_Editor_Panel applied to this element.");"function"==typeof i[t]&&"_"!==t[0]?e=i[t].apply(i,[].slice.call(s,1)):a=!0})),a)throw new Error('No method "'+t+'" in Ditty_Item_Editor_Panel.');return void 0!==e?e:this}},$.ditty_item_editor_panel={},$.ditty_item_editor_panel.defaults=t}(jQuery),function($){"use strict";var t={editor:null},i=function(i,e){this.elmt=i,this.settings=$.extend({},t,$.ditty_displays_panel.defaults,e),this.$elmt=$(i),this.$list=$(i).find(".ditty-data-list__items"),this.$contents=$(i).find(".ditty-editor__panel__contents"),this.initDisplay=null,this._init()};i.prototype={_init:function(){this.$elmt.addClass("init"),this.$elmt.ditty_ui_data_list({filter:".ditty-display-panel__filter",item:".ditty-editor-display",itemSelector:"display_type"}),this.initDisplay=this.$list.data("active"),this._activateDisplay(this.$list.find("#ditty-editor-display--"+this.initDisplay)),this.$elmt.on("click",".ditty-data-list__item",{self:this},this._selectDisplay),this.$elmt.on("click",".ditty-data-list__item__edit",{self:this},this._editDisplay),this.$elmt.on("click",".ditty-data-list__item__clone",{self:this},this._cloneDisplay),this.$elmt.on("click",".ditty-data-list__item__delete",{self:this},this._deleteDisplay),this.settings.editor.$elmt.on("ditty_editor_saveDrafts",{self:this},this._saveDrafts)},_saveDrafts:function(t){var i=t.data.self;i.initDisplay=i.$list.find(".ditty-editor-display.active").data("display_id")},_activateDisplay:function(t){this.$list.find(".ditty-editor-display").removeClass("active"),t.addClass("active")},_initDitty:function(t,i,e){var s=this.settings.editor.ditty.$elmt;e.display=i,e.id=this.settings.editor.ditty.options("id"),e.items=this.settings.editor.ditty.options("items"),e.height=this.settings.editor.ditty.options("height"),this.settings.editor.ditty.destroy(),s["ditty_"+t](e),this.settings.editor.ditty=s["ditty_"+t]("options","ditty")},_selectDisplay:function(t){t.preventDefault();var i=t.data.self;if($(t.target).parent().is("a"))return!1;var e=$(t.target).is(".ditty-data-list__item")?$(t.target):$(t.target).parents(".ditty-data-list__item"),s=e.data("display_id"),a=e.data("display_type");if(e.hasClass("active"))return!1;i.settings.editor.updateStart(),dittyDraftUpdate(i,"post_meta","_ditty_display",s),i._activateDisplay(e);var d={action:"ditty_editor_select_display",display_id:s,draft_values:i.settings.editor.getDraftValues(),security:dittyVars.security};$.post(dittyVars.ajaxurl,d,(function(t){if(!t)return!1;i._initDitty(a,s,t),i.settings.editor.updateStop()}),"json")},_cloneDisplay:function(t){t.preventDefault();var i=t.data.self,e=($(t.target).is("a")?$(t.target):$(t.target).parent("a")).parents(".ditty-data-list__item"),s=e.data("display_id");i.settings.editor.updateStart();var a={action:"ditty_editor_display_clone",display_id:s,draft_values:i.settings.editor.getDraftValues(),security:dittyVars.security};$.post(dittyVars.ajaxurl,a,(function(t){if(t.editor_display){var s=$(t.editor_display);s.hide(),e.after(s),s.slideDown()}t.draft_id&&t.draft_data&&dittyDraftDisplayUpdate(i,t.draft_id,null,t.draft_data),i.settings.editor.updateStop()}),"json")},_deleteDisplay:function(t){t.preventDefault();var i=t.data.self,e=($(t.target).is("a")?$(t.target):$(t.target).parent("a")).parents(".ditty-data-list__item"),s=null,a=e.data("display_id");e.hasClass("active")&&(e.prev().length?s=e.prev():e.next().length&&(s=e.next())),e.slideUp((function(){$(this).remove()})),dittyDraftDisplayDelete(i,a),null!==s&&s.trigger("click")},_editDisplay:function(t){t.preventDefault();var i=t.data.self;i.$displayEdit=$(this).parents(".ditty-data-list__item");var e=($(t.target).is("a")?$(t.target):$(t.target).parent("a")).parents(".ditty-data-list__item"),s=e.data("display_id");i.settings.editor.updateStart(),e.addClass("editing");var a={action:"ditty_editor_display_fields",display_id:s,draft_values:i.settings.editor.getDraftValues(),security:dittyVars.security};$.post(dittyVars.ajaxurl,a,(function(t){if(t){var e='<div class="ditty-editor__panel ditty-editor__panel--displayEditor">'+t+"</div>";i.settings.editor.panelOptions("transition","slideLeft"),i.settings.editor.showPanel("display_editor",e)}}))},panelVisible:function(){this.$elmt.find(".ditty-data-list__item").removeClass("editing")},trigger:function(t,i){var e=[this.settings];i&&(e=i),this.$elmt.trigger("ditty_displays_panel_"+t,e),"function"==typeof this.settings[t]&&this.settings[t].apply(this.$elmt,e)},options:function(i,e){if("object"==typeof i)this.settings=$.extend({},t,$.ditty_displays_panel.defaults,i);else{if("string"!=typeof i)return this.settings;if(void 0===e)return this.settings[i];this.settings[i]=e}this.trigger("options_update")},destroy:function(){this.$elmt.removeClass("init"),this.$elmt.ditty_ui_data_list("destroy"),this.$elmt.off("click",".ditty-data-list__item",{self:this},this._selectDisplay),this.$elmt.off("click",".ditty-data-list__item__edit",{self:this},this._editDisplay),this.$elmt.off("click",".ditty-data-list__item__clone",{self:this},this._cloneDisplay),this.$elmt.off("click",".ditty-data-list__item__delete",{self:this},this._deleteDisplay),this.settings.editor.$elmt.off("ditty_editor_save_drafts",{self:this},this._saveDrafts),this.trigger("destroy"),this.elmt._ditty_displays_panel=null}},$.fn.ditty_displays_panel=function(t){var e,s=arguments,a=!1;if(void 0===t||"object"==typeof t)return this.each((function(){this._ditty_displays_panel||(this._ditty_displays_panel=new i(this,t))}));if("string"==typeof t){if(this.each((function(){var i=this._ditty_displays_panel;if(!i)throw new Error("No Ditty_Displays_Panel applied to this element.");"function"==typeof i[t]&&"_"!==t[0]?e=i[t].apply(i,[].slice.call(s,1)):a=!0})),a)throw new Error('No method "'+t+'" in Ditty_Displays_Panel.');return void 0!==e?e:this}},$.ditty_displays_panel={},$.ditty_displays_panel.defaults=t}(jQuery),function($){"use strict";var t={editor:null},i=function(i,e){this.elmt=i,this.settings=$.extend({},t,$.ditty_display_editor_panel.defaults,e),this.$elmt=$(i),this.$form=this.$elmt.find(".ditty-editor-options"),this.$back=this.$elmt.find(".ditty-editor-options__back"),this.$optionsTitle=this.$elmt.find(".ditty-editor-options__title"),this.$importExportField=this.$elmt.find(".ditty-editor__import-export__field"),this.$importExportUpdate=this.$elmt.find(".ditty-editor__import-export__update"),this.displayTitle=null,this.displayId=this.settings.editor.ditty.options("display"),this.displayType=this.settings.editor.ditty.options("type"),this.$editorDisplay=this.settings.editor.$panels.find(".ditty-editor__panel--displays").find(".ditty-data-list__item.editing"),this.$editorDisplayTitle=this.$editorDisplay.find(".ditty-data-list__item__label"),this.displayOptions=null,this.initData=null,this.afterUpdateAction="",this._init()};i.prototype={_init:function(){var t,i=this;this.initData=this.$form.serialize(),this.settings.editor.initFields(this.$elmt),t=this.settings.editor.ditty.$elmt["ditty_"+this.displayType]("options"),this.displayOptions=$.extend({},t),this.displayTitle=this.$optionsTitle.val(),this.$importExportUpdate.on("click",{self:this},this._importUpdate),this.settings.editor.$elmt.on("ditty_editor_add_drafts",{self:this},this._addDrafts),this.settings.editor.$elmt.on("ditty_editor_save_drafts",{self:this},this._saveDrafts),this.$form.on("submit",{self:this},this._submitForm),this.$back.on("click",{self:this},this._backClick),this.$elmt.on("change",'input[type="text"], input[type="number"]',{self:this},this._textfieldListeners),this.$form.on("click",'input[type="radio"]',{self:this},this._radioListeners),this.$form.on("click",'input[type="checkbox"]',{self:this},this._checkboxListeners),this.$form.on("change","select",{self:this},this._selectListeners),this.$form.on("ditty_field_clone_update",{self:this},this._cloneListeners),setTimeout((function(){i.trigger("init",[i])}),1)},_showDisplayList:function(){this.settings.editor.$panels.ditty_slider("options","transition","slideRight"),this.settings.editor.$panels.ditty_slider("showSlideById","displays")},_checkUpdates:function(){this.$form.serialize()!==this.initData?(this.settings.editor.addUpdate("displaySettings",this.displayId),this.settings.editor.delayedSubmitEnable()):this.settings.editor.removeUpdate("displaySettings",this.displayId)},_addDrafts:function(t){var i=t.data.self;i.$form.serialize()!==i.initData&&i.$form.trigger("submit")},_saveDrafts:function(t){var i=t.data.self;i.$form.serialize()!==i.initData&&(i.afterUpdateAction="save",i.$form.trigger("submit"))},_backClick:function(t){t.preventDefault();var i=t.data.self;i.$form.serialize()===i.initData?i._showDisplayList():(i.afterUpdateAction="return",i.$form.trigger("submit"))},_submitForm:function(t){t.preventDefault();var i=t.data.self;i.settings.editor.updateStart();var e={action:"ditty_editor_display_update",display_id:i.displayId,draft_values:i.settings.editor.getDraftValues(),security:dittyVars.security};i.$form.ajaxSubmit({url:dittyVars.ajaxurl,type:"post",dataType:"json",data:e,success:function(t){i.initData=i.$form.serialize(),t.draft_id&&t.draft_label&&(i.displayTitle=t.draft_label,i.$editorDisplayTitle.text(t.draft_label),dittyDraftDisplayUpdate(i,t.draft_id,"label",t.draft_label)),t.draft_id&&t.draft_settings&&(i.displayOptions=t.draft_settings,dittyDraftDisplayUpdate(i,t.draft_id,"settings",t.draft_settings)),t.draft_settings_json&&i.$importExportField.length&&i.$importExportField.val(t.draft_settings_json),i.settings.editor.updateStop(),i.settings.editor.delayedSubmitDisable(),"return"===i.afterUpdateAction&&i._showDisplayList(),"save"===i.afterUpdateAction&&i.settings.editor.saveDitty(),i.afterUpdateAction=""}})},_importUpdate:function(t){t.preventDefault()},_cloneListeners:function(t,i,e){var s=t.data.self;$(t.target);s.settings.editor.ditty.options(e,i)},_textfieldListeners:function(t){var i=t.data.self,e=$(t.target),s=e.attr("name"),a=e.parents(".ditty-input--spacing__group, .ditty-input--radius__group");if(a.length){var d="",n={};a.find("input").each((function(){s=$(this).attr("name"),d=(d=s.split("["))[0];var t=s.match(/\[(.*)\]/);n[t[1]]=$(this).val()})),i.settings.editor.ditty.options(d,n)}else i.settings.editor.ditty.options(s,e.val());i._checkUpdates()},_radioListeners:function(t){var i=t.data.self,e=$(t.target),s=e.val(),a=e.attr("name");i.settings.editor.ditty.options(a,s),i._checkUpdates()},_checkboxListeners:function(t){var i=t.data.self,e=$(t.target),s=!!e.is(":checked")&&$(this).val(),a=e.attr("name");i.settings.editor.ditty.options(a,s),i._checkUpdates()},_selectListeners:function(t){var i=t.data.self,e=$(t.target),s=e.val(),a=e.attr("name");i.settings.editor.ditty.options(a,s),i._checkUpdates()},_options:function(t){return this.settings[t]},trigger:function(t,i){var e=[this.settings];i&&(e=i),this.$elmt.trigger("ditty_display_editor_panel_"+t,e),"function"==typeof this.settings[t]&&this.settings[t].apply(this.$elmt,e)},options:function(i,e){if("object"==typeof i)this.settings=$.extend({},t,$.ditty_display_editor_panel.defaults,i);else{if("string"!=typeof i)return this.settings;if(void 0===e)return this.settings[i];this.settings[i]=e}this.trigger("options_update")},destroy:function(){this.trigger("destroy",[this]),this.$importExportUpdate.off("click",{this:this},this._importUpdate),this.settings.editor.$elmt.off("ditty_editor_add_drafts",{self:this},this._addDrafts),this.settings.editor.$elmt.off("ditty_editor_save_drafts",{self:this},this._saveDrafts),this.$form.off("submit",{this:this},this._submitForm),this.$back.off("click",{this:this},this._cancel_click),this.$elmt.off("change",'input[type="text"], input[type="number"]',{self:this},this._textfieldListeners),this.$form.off("click",'input[type="radio"]',{self:this},this._radioListeners),this.$form.off("click",'input[type="checkbox"]',{self:this},this._checkboxListeners),this.$form.off("change","select",{self:this},this._selectListeners),this.$form.off("ditty_field_clone_update",{self:this},this._cloneListeners),this.elmt._ditty_display_editor_panel=null}},$.fn.ditty_display_editor_panel=function(t){var e,s=arguments,a=!1;if(void 0===t||"object"==typeof t)return this.each((function(){this._ditty_display_editor_panel||(this._ditty_display_editor_panel=new i(this,t))}));if("string"==typeof t){if(this.each((function(){var i=this._ditty_display_editor_panel;if(!i)throw new Error("No Ditty_Display_Editor_Panel applied to this element.");"function"==typeof i[t]&&"_"!==t[0]?e=i[t].apply(i,[].slice.call(s,1)):a=!0})),a)throw new Error('No method "'+t+'" in Ditty_Display_Editor_Panel.');return void 0!==e?e:this}},$.ditty_display_editor_panel={},$.ditty_display_editor_panel.defaults=t}(jQuery),function($){"use strict";var t={editor:null},i=function(i,e){this.elmt=i,this.settings=$.extend({},t,$.ditty_layout_variations_panel.defaults,e),this.$elmt=$(i),this.$back=this.$elmt.find(".ditty-editor-options__back"),this.$list=$(i).find(".ditty-data-list__items"),this.$editorItem=dittyVars.editor.currentItem,this.editorItemLabel=this.$editorItem.find(".ditty-data-list__item__label").text(),this.editorDittyId=this.$editorItem.data("ditty_id"),this.editorItemId=this.$editorItem.data("item_id"),this.editorItemType=this.$editorItem.data("item_type"),this.editorItemValue=this.$editorItem.data("item_value"),this._init()};i.prototype={_init:function(){this.$elmt.addClass("init"),this.$back.on("click",{self:this},this._backClick),this.$elmt.on("click",".ditty-layout-variation__change",{self:this},this._changeTemplate),this.$elmt.on("click",".ditty-layout-variation__edit_html",{self:this,editType:"html"},this._editLayout),this.$elmt.on("click",".ditty-layout-variation__edit_css",{self:this,editType:"css"},this._editLayout),$("body").on("ditty_editor_save_ditty_response",{self:this},this._dittyEditorSaveResponse)},_showItemList:function(){this.settings.editor.$panels.ditty_slider("options","transition","slideRight"),this.settings.editor.$panels.ditty_slider("showSlideById","items")},_backClick:function(t){t.preventDefault(),t.data.self._showItemList()},_dittyEditorSaveResponse:function(t,i){t.data.self;i.ditty_new_layout_ids&&$.each(i.ditty_new_layout_ids,(function(t,i){var e=$('.ditty-layout-variation[data-layout_id="'+t+'"]');e.length&&e.attr("data-layout_id",i).data("layout_id",i)}))},_changeTemplate:function(t){t.preventDefault();var i=t.data.self,e=($(t.target).is("a")?$(t.target):$(t.target).parent("a")).parents(".ditty-data-list__item"),s=e.data("layout_id"),a=e.data("layout_variation_id"),d=e.data("layout_variation_label");dittyVars.editor.currentLayoutVariation=e,i.settings.editor.updateStart(),e.addClass("editing");var n={action:"ditty_editor_layouts",ditty_id:i.editorDittyId,item_type:i.editorItemType,variation_id:a,variation_label:d,layout_id:s,draft_values:i.settings.editor.getDraftValues(),security:dittyVars.security};$.post(dittyVars.ajaxurl,n,(function(t){if(t){var e='<div class="ditty-editor__panel ditty-editor__panel--layouts">'+t+"</div>";i.settings.editor.panelOptions("transition","slideLeft"),i.settings.editor.showPanel("layouts",e)}}))},_editLayout:function(t){t.preventDefault();var i=t.data.self,e=t.data.editType,s=($(t.target).is("a")?$(t.target):$(t.target).parent("a")).parents(".ditty-data-list__item"),a=s.data("layout_id");dittyVars.editor.currentLayoutVariation=s,i.settings.editor.updateStart(),i.$list.find(".ditty-data-list__item").removeClass("editing"),s.addClass("editing");var d=[],n=i.settings.editor.ditty.options("items");$.each(n,(function(t,i){d.push(i.uniqId)}));var r={action:"ditty_editor_layout_fields",layout_id:a,item_type:i.editorItemType,item_value:i.editorItemValue,ditty_id:i.editorDittyId,item_id:i.editorItemId,item_ids:d,edit_type:e,draft_values:i.settings.editor.getDraftValues(),security:dittyVars.security};$.post(dittyVars.ajaxurl,r,(function(t){if(t){var s="layout_"+e+"_editor",a='<div class="ditty-editor__panel ditty-editor__panel--'+s+'">'+t.form+"</div>";i.settings.editor.panelOptions("transition","slideLeft"),i.settings.editor.showPanel(s,a)}}),"json")},panelVisible:function(){this.$list.find(".ditty-layout-variation").removeClass("editing")},trigger:function(t,i){var e=[this.settings];i&&(e=i),this.$elmt.trigger("ditty_layout_variations_panel_"+t,e),"function"==typeof this.settings[t]&&this.settings[t].apply(this.$elmt,e)},options:function(i,e){if("object"==typeof i)this.settings=$.extend({},t,$.ditty_layout_variations_panel.defaults,i);else{if("string"!=typeof i)return this.settings;if(void 0===e)return this.settings[i];this.settings[i]=e}this.trigger("options_update")},destroy:function(){this.$elmt.removeClass("init"),this.$back.off("click",{self:this},this._backClick),this.$elmt.off("click",".ditty-layout-variation__change",{self:this},this._changeTemplate),this.$elmt.off("click",".ditty-layout-variation__edit_html",{self:this,editType:"html"},this._editLayout),this.$elmt.off("click",".ditty-layout-variation__edit_css",{self:this,editType:"css"},this._editLayout),$("body").off("ditty_editor_save_ditty_response",{self:this},this._dittyEditorSaveResponse),this.elmt._ditty_layout_variations_panel=null}},$.fn.ditty_layout_variations_panel=function(t){var e,s=arguments,a=!1;if(void 0===t||"object"==typeof t)return this.each((function(){this._ditty_layout_variations_panel||(this._ditty_layout_variations_panel=new i(this,t))}));if("string"==typeof t){if(this.each((function(){var i=this._ditty_layout_variations_panel;if(!i)throw new Error("No Ditty_Layout_Variations_Panel applied to this element.");"function"==typeof i[t]&&"_"!==t[0]?e=i[t].apply(i,[].slice.call(s,1)):a=!0})),a)throw new Error('No method "'+t+'" in Ditty_Layout_Variations_Panel.');return void 0!==e?e:this}},$.ditty_layout_variations_panel={},$.ditty_layout_variations_panel.defaults=t}(jQuery),function($){"use strict";var t={editor:null},i=function(i,e){this.elmt=i,this.settings=$.extend({},t,$.ditty_layouts_panel.defaults,e),this.$elmt=$(i),this.$back=this.$elmt.find(".ditty-editor-options__back"),this.$list=$(i).find(".ditty-data-list__items"),this.$editorItem=dittyVars.editor.currentItem,this.editorDittyId=this.$editorItem.data("ditty_id"),this.editorItemId=this.$editorItem.data("item_id"),this.editorItemtype=this.$editorItem.data("item_type"),this.editorItemValue=this.$editorItem.data("item_value"),this.$editorVariation=dittyVars.editor.currentLayoutVariation,this.editorVariationId=this.$editorVariation.data("layout_variation_id"),this.editorLayoutId=this.$editorVariation.data("layout_id"),this._init()};i.prototype={_init:function(){this.$elmt.addClass("init"),this.$back.on("click",{self:this},this._backClick),this.$elmt.on("click",".ditty-data-list__item",{self:this},this._selectLayout),this.$elmt.on("click",".ditty-data-list__item__edit_html",{self:this,editType:"html"},this._editLayout),this.$elmt.on("click",".ditty-data-list__item__edit_css",{self:this,editType:"css"},this._editLayout),this.$elmt.on("click",".ditty-data-list__item__clone",{self:this},this._cloneLayout),this.$elmt.on("click",".ditty-data-list__item__delete",{self:this},this._deleteLayout),this.$list.on("click",".ditty-editor-layout > a",{self:this},this._actionClick),$("body").on("ditty_editor_save_ditty_response",{self:this},this._dittyEditorSaveResponse),this._activateLayout(this.$list.find("#ditty-editor-layout--"+this.editorLayoutId))},_activateLayout:function(t){this.$list.find(".ditty-editor-layout").removeClass("active"),t.addClass("active")},_showVariationsList:function(){this.settings.editor.$panels.ditty_slider("options","transition","slideRight"),this.settings.editor.$panels.ditty_slider("showSlideById","layout_variations")},_backClick:function(t){t.preventDefault(),t.data.self._showVariationsList()},_dittyEditorSaveResponse:function(t,i){t.data.self;i.ditty_new_layout_ids&&$.each(i.ditty_new_layout_ids,(function(t,i){var e=$("#ditty-editor-layout--"+t);e.length&&(e.attr("id","ditty-editor-layout--"+i),e.attr("data-layout_id",i).data("layout_id",i))}))},_selectLayout:function(t){t.preventDefault();var i=t.data.self;if($(t.target).parent().is("a"))return!1;var e=$(t.target).is(".ditty-data-list__item")?$(t.target):$(t.target).parents(".ditty-data-list__item"),s=e.data("layout_id"),a=e.data("layout_version"),d=i.$editorItem.data("layout_value");if(e.hasClass("active"))return!1;$.each(d,(function(t){i.editorVariationId===t&&(d[t]=String(s))})),i.settings.editor.updateStart(),dittyDraftItemUpdateData(i,i.editorItemId,"layout_value",d),i._activateLayout(e);var n={action:"ditty_editor_select_layout",layout_id:s,item_id:i.editorItemId,ditty_id:i.editorDittyId,draft_values:i.settings.editor.getDraftValues(),security:dittyVars.security};$.post(dittyVars.ajaxurl,n,(function(t){if(i.settings.editor.updateStop(),t.display_items&&i.settings.editor.ditty.updateItems(t.display_items,i.editorItemId),t.editor_item){var e=$(t.editor_item);i.$editorItem.replaceWith(e)}i.$editorItem.attr("data-layout_value",d).data("layout_value",d),i.$editorVariation.attr("data-layout_id",s).data("layout_id",s),i.$editorVariation.find(".ditty-layout-variation__template > span").text(t.layout_label),a?i.$editorVariation.find(".ditty-layout-variation__template > small").text("("+a+")"):i.$editorVariation.find(".ditty-layout-variation__template > small").text("")}),"json")},_cloneLayout:function(t){t.preventDefault();var i=t.data.self,e=($(t.target).is("a")?$(t.target):$(t.target).parent("a")).parents(".ditty-data-list__item"),s=e.data("layout_id");i.settings.editor.updateStart();var a={action:"ditty_editor_layout_clone",layout_id:s,draft_values:i.settings.editor.getDraftValues(),security:dittyVars.security}
3
- ;$.post(dittyVars.ajaxurl,a,(function(t){if(t.editor_layout){var s=$(t.editor_layout);s.hide(),e.after(s),s.slideDown()}t.draft_id&&t.draft_meta&&dittyDraftLayoutUpdate(i,t.draft_id,null,t.draft_meta),i.settings.editor.updateStop()}),"json")},_deleteLayout:function(t){t.preventDefault();var i=t.data.self,e=($(t.target).is("a")?$(t.target):$(t.target).parent("a")).parents(".ditty-data-list__item"),s=null,a=e.data("layout_id");e.hasClass("active")&&(e.prev().length?s=e.prev():e.next().length&&(s=e.next())),e.slideUp((function(){$(this).remove()})),dittyDraftLayoutDelete(i,a),null!==s&&s.trigger("click")},_editLayout:function(t){t.preventDefault();var i=t.data.self,e=t.data.editType,s=($(t.target).is("a")?$(t.target):$(t.target).parent("a")).parents(".ditty-data-list__item"),a=s.data("layout_id");i.settings.editor.updateStart(),i.$list.find(".ditty-data-list__item").removeClass("editing"),s.addClass("editing");var d={action:"ditty_editor_layout_fields",layout_id:a,item_id:i.editorItemId,item_type:i.editorItemtype,item_value:i.editorItemValue,edit_type:e,draft_values:i.settings.editor.getDraftValues(),security:dittyVars.security};$.post(dittyVars.ajaxurl,d,(function(t){if(t){var s="layout_"+e+"_editor",a='<div class="ditty-editor__panel ditty-editor__panel--'+s+'">'+t.form+"</div>";i.settings.editor.panelOptions("transition","slideLeft"),i.settings.editor.showPanel(s,a)}}),"json")},_actionClick:function(t){t.preventDefault();var i=t.data.self,e=$(t.target).is("a")?$(t.target):$(t.target).parent("a"),s=e.parents(".ditty-data-list__item"),a=s.data("layout_id");dittyVars.editor.currentLayout=s,$("body").trigger("ditty_editor_layout_action_click",[e,s,a,i.editorDittyId,i.settings.editor])},trigger:function(t,i){var e=[this.settings];i&&(e=i),this.$elmt.trigger("ditty_layouts_panel_"+t,e),"function"==typeof this.settings[t]&&this.settings[t].apply(this.$elmt,e)},options:function(i,e){if("object"==typeof i)this.settings=$.extend({},t,$.ditty_layouts_panel.defaults,i);else{if("string"!=typeof i)return this.settings;if(void 0===e)return this.settings[i];this.settings[i]=e}this.trigger("options_update")},destroy:function(){this.$elmt.removeClass("init"),this.$back.off("click",{self:this},this._backClick),this.$elmt.off("click",".ditty-data-list__item",{self:this},this._selectLayout),this.$elmt.off("click",".ditty-data-list__item__edit_html",{self:this,editType:"html"},this._editLayout),this.$elmt.off("click",".ditty-data-list__item__edit_css",{self:this,editType:"css"},this._editLayout),this.$elmt.off("click",".ditty-data-list__item__clone",{self:this},this._cloneLayout),this.$elmt.off("click",".ditty-data-list__item__delete",{self:this},this._deleteLayout),this.$list.off("click",".ditty-editor-layout > a",{self:this},this._actionClick),$("body").off("ditty_editor_save_ditty_response",{self:this},this._dittyEditorSaveResponse),this.elmt._ditty_layouts_panel=null}},$.fn.ditty_layouts_panel=function(t){var e,s=arguments,a=!1;if(void 0===t||"object"==typeof t)return this.each((function(){this._ditty_layouts_panel||(this._ditty_layouts_panel=new i(this,t))}));if("string"==typeof t){if(this.each((function(){var i=this._ditty_layouts_panel;if(!i)throw new Error("No Ditty_Layouts_Panel applied to this element.");"function"==typeof i[t]&&"_"!==t[0]?e=i[t].apply(i,[].slice.call(s,1)):a=!0})),a)throw new Error('No method "'+t+'" in Ditty_Layouts_Panel.');return void 0!==e?e:this}},$.ditty_layouts_panel={},$.ditty_layouts_panel.defaults=t}(jQuery),function($){"use strict";var t={editor:null,prevPanel:""},i=function(i,e){this.elmt=i,this.settings=$.extend({},t,$.ditty_layout_html_editor_panel.defaults,e),this.$elmt=$(i),this.$form=this.$elmt.find(".ditty-editor-options"),this.$textarea=this.$elmt.find(".ditty-editor-options__code"),this.$back=this.$elmt.find(".ditty-editor-options__back"),this.$preview=this.$elmt.find(".ditty-editor-options__preview"),this.$editCss=this.$elmt.find(".ditty-editor-options__edit-css"),this.$title=this.$elmt.find(".ditty-editor-options__title"),this.$tags=this.$elmt.find(".ditty-editor-options__tags"),this.itemType=this.$form.data("item_type"),this.layoutId=this.$form.data("layout_id"),this.$editorItem=dittyVars.editor.currentItem,this.$editorLayout=dittyVars.editor.currentLayout,this.$editorLayoutTitle=!!this.$editorLayout&&this.$editorLayout.find(".ditty-data-list__item__label"),this.$editorLayoutVariation=dittyVars.editor.currentLayoutVariation,this.$editorLayoutVariationTitle=this.$editorLayoutVariation.find(".ditty-layout-variation__template span"),this.editorDittyId=this.$editorItem.data("ditty_id"),this.editorItemId=this.$editorItem.data("item_id"),this.editorItemType=this.$editorItem.data("item_type"),this.editorItemValue=this.$editorItem.data("item_value"),this.codeEditor=null,this.codeHasUpdates=!1,this.initData=null,this.afterUpdateAction="",this._init()};i.prototype={_init:function(){this.initData=this.$form.serialize(),this._initEditor(),this.$back.on("click",{self:this},this._backClick),this.$preview.on("click",{self:this},this._previewClick),this.$editCss.on("click",{self:this},this._editCss),this.$form.on("submit",{self:this},this._submitForm),this.$form.on("click",".ditty-editor-options__tag",{self:this},this._insertTag),this.$title.on("keyup",{self:this},this._titleUpdate),this.settings.editor.$elmt.on("ditty_editor_add_drafts",{self:this},this._addDrafts),this.settings.editor.$elmt.on("ditty_editor_save_drafts",{self:this},this._saveDrafts)},_showPrevPanel:function(){this.settings.editor.$panels.ditty_slider("options","transition","slideRight"),this.settings.editor.$panels.ditty_slider("showSlideById",this.settings.prevPanel)},_titleUpdate:function(t){var i=t.data.self;i.settings.editor.addUpdate("layoutUpdate",i.layoutId)},_enablePreviewButton:function(){this.$preview.addClass("ditty-has-updates")},_disablePreviewButton:function(){this.$preview.removeClass("ditty-has-updates"),this.$preview.children("i").attr("class",this.$preview.children("i").data("class"))},_getLayoutItems:function(){var t=this.settings.editor.ditty.options("items"),i=[];return $.each(t,(function(t,e){String(e.layoutId)===String(this.layoutId)&&i.push(e.id)})),i},_addDrafts:function(t){var i=t.data.self;i.codeEditor.codemirror.save(),(i.$form.serialize()!==i.initData||i.codeHasUpdates)&&i.$form.trigger("submit")},_saveDrafts:function(t){var i=t.data.self;i.codeEditor.codemirror.save(),(i.$form.serialize()!==i.initData||i.codeHasUpdates)&&(i.afterUpdateAction="save",i.$form.trigger("submit"))},_backClick:function(t){t.preventDefault();var i=t.data.self;i.codeEditor.codemirror.save(),i.$form.serialize()!==i.initData||i.codeHasUpdates?(i.afterUpdateAction="return",i.$form.trigger("submit")):i._showPrevPanel()},_previewClick:function(t){t.preventDefault();var i=t.data.self;i.codeEditor.codemirror.save(),(i.$form.serialize()!==i.initData||i.codeHasUpdates)&&(i.$preview.children("i").attr("class",dittyVars.updateIcon),i.$form.trigger("submit"))},_editCss:function(t){t.preventDefault();var i=t.data.self,e="layout_css_editor";if(i.settings.editor.updateStart(),i.codeEditor.codemirror.save(),(i.$form.serialize()!==i.initData||i.codeHasUpdates)&&(i.$preview.children("i").attr("class",dittyVars.updateIcon),i.$form.trigger("submit")),i.settings.editor.panelExists(e))i.settings.editor.$elmt.find(".ditty-editor__panel--layout_css_editor input.ditty-editor-options__title").val(i.$title.val()),i.settings.editor.panelOptions("transition","fade"),i.settings.editor.showPanel(e);else{var s={action:"ditty_editor_layout_fields",layout_id:i.layoutId,layout_title:i.$title.val(),ditty_id:i.editorDittyId,item_id:i.editorItemId,item_type:i.editorItemType,item_value:i.editorItemValue,edit_type:"css",draft_values:i.settings.editor.getDraftValues(),security:dittyVars.security};$.post(dittyVars.ajaxurl,s,(function(t){if(t){var s='<div class="ditty-editor__panel ditty-editor__panel--'+e+'">'+t.form+"</div>";i.settings.editor.panelOptions("transition","fade"),i.settings.editor.showPanel(e,s)}}),"json")}},_submitForm:function(t){t.preventDefault();var i=t.data.self,e=i.layoutId,s=i.itemType,a=i._getLayoutItems();if(i.$form.hasClass("ditty-editor-has-errors"))return!1;i.codeEditor.codemirror.save(),i.settings.editor.updateStart();var d={action:"ditty_editor_layout_update",layout_id:e,item_type:s,item_ids:a,edit_type:"html",draft_values:i.settings.editor.getDraftValues(),security:dittyVars.security};i.$form.ajaxSubmit({url:dittyVars.ajaxurl,type:"post",dataType:"json",data:d,success:function(t){i.initData=i.$form.serialize(),i._disablePreviewButton(),t.label&&(i.$editorLayoutTitle&&i.$editorLayoutTitle.html(t.label),i.$editorLayoutVariationTitle.html(t.label)),i.$editorLayoutTitle&&i.$editorLayoutTitle.find(".ditty-layout-version").remove(),i.$editorLayoutVariationTitle&&i.$editorLayoutVariationTitle.find(".ditty-layout-version").remove(),t.display_items&&i.settings.editor.ditty.updateItems(t.display_items,!1,!1,!0),t.draft_id&&t.draft_meta&&dittyDraftLayoutUpdate(i,t.draft_id,null,t.draft_meta),i.codeHasUpdates=!1,i.settings.editor.updateStop(),i.settings.editor.delayedSubmitDisable(),"return"===i.afterUpdateAction&&i._showPrevPanel(),"save"===i.afterUpdateAction&&i.settings.editor.saveDitty({return_items:0}),i.afterUpdateAction=""}})},_initEditor:function(){var t=this,i=wp.codeEditor.defaultSettings?_.clone(wp.codeEditor.defaultSettings):{};i.codemirror=_.extend({},i.codemirror,{indentUnit:2,tabSize:2}),this.codeEditor=wp.codeEditor.initialize(this.$textarea[0],i),this.codeEditor.codemirror.on("change",(function(){t.codeEditor.codemirror.save(),t.settings.editor.addUpdate("layout_html_update",t.layoutId),t.codeHasUpdates=!0,t._enablePreviewButton(),t.settings.editor.delayedSubmitEnable()}))},_insertTag:function(t){var i=t.data.self,e=$(t.target),s=e.text(),a=e.data("atts"),d=i.codeEditor.codemirror.getCursor();if(t.shiftKey&&a){var n="",r=s.length-1;$.each(a,(function(t,i){n+=" "+t+'="'+i.toString()+'"'})),s=s.substring(0,r)+n+s.substring(r)}i.codeEditor.codemirror.replaceRange(s,d),d.ch=d.ch+s.length,i.codeEditor.codemirror.setCursor(d)},_options:function(t){return this.settings[t]},trigger:function(t,i){var e=[this.settings];i&&(e=i),this.$elmt.trigger("ditty_layout_html_editor_panel_"+t,e),"function"==typeof this.settings[t]&&this.settings[t].apply(this.$elmt,e)},options:function(i,e){if("object"==typeof i)this.settings=$.extend({},t,$.ditty_layout_html_editor_panel.defaults,i);else{if("string"!=typeof i)return this.settings;if(void 0===e)return this.settings[i];this.settings[i]=e}this.trigger("options_update")},destroy:function(){this.$back.off("click",{self:this},this._backClick),this.$preview.off("click",{self:this},this._previewClick),this.$editCss.off("click",{self:this},this._editCss),this.$form.off("submit",{self:this},this._submitForm),this.$form.off("click",".ditty-editor-options__tag",{self:this},this._insertTag),this.$title.off("keyup",{self:this},this._titleUpdate),this.settings.editor.$elmt.off("ditty_editor_add_drafts",{self:this},this._addDrafts),this.settings.editor.$elmt.off("ditty_editor_save_drafts",{self:this},this._saveDrafts),this.codeEditor.codemirror.off("change"),this.codeEditor.codemirror.toTextArea(),this.elmt._ditty_layout_html_editor_panel=null}},$.fn.ditty_layout_html_editor_panel=function(t){var e,s=arguments,a=!1;if(void 0===t||"object"==typeof t)return this.each((function(){this._ditty_layout_html_editor_panel||(this._ditty_layout_html_editor_panel=new i(this,t))}));if("string"==typeof t){if(this.each((function(){var i=this._ditty_layout_html_editor_panel;if(!i)throw new Error("No Ditty_Layout_Html_Editor_Panel applied to this element.");"function"==typeof i[t]&&"_"!==t[0]?e=i[t].apply(i,[].slice.call(s,1)):a=!0})),a)throw new Error('No method "'+t+'" in Ditty_Layout_Html_Editor_Panel.');return void 0!==e?e:this}},$.ditty_layout_html_editor_panel={},$.ditty_layout_html_editor_panel.defaults=t}(jQuery),function($){"use strict";var t={editor:null,prevPanel:""},i=function(i,e){this.elmt=i,this.settings=$.extend({},t,$.ditty_layout_css_editor_panel.defaults,e),this.$elmt=$(i),this.$form=this.$elmt.find(".ditty-editor-options"),this.$textarea=this.$elmt.find(".ditty-editor-options__code"),this.$back=this.$elmt.find(".ditty-editor-options__back"),this.$preview=this.$elmt.find(".ditty-editor-options__preview"),this.$editHtml=this.$elmt.find(".ditty-editor-options__edit-html"),this.$title=this.$elmt.find(".ditty-editor-options__title"),this.$body=this.$elmt.find(".ditty-editor-options__body"),this.$tags=this.$elmt.find(".ditty-editor-options__tags"),this.itemType=this.$form.data("item_type"),this.layoutId=this.$form.data("layout_id"),this.$editorItem=dittyVars.editor.currentItem,this.$editorLayout=dittyVars.editor.currentLayout,this.$editorLayoutTitle=!!this.$editorLayout&&this.$editorLayout.find(".ditty-data-list__item__label"),this.$editorLayoutVariation=dittyVars.editor.currentLayoutVariation,this.$editorLayoutVariationTitle=this.$editorLayoutVariation.find(".ditty-layout-variation__template span"),this.editorDittyId=this.$editorItem.data("ditty_id"),this.editorItemId=this.$editorItem.data("item_id"),this.editorItemType=this.$editorItem.data("item_type"),this.editorItemValue=this.$editorItem.data("item_value"),this.itemSelector="",this.codeEditor=null,this.codeHasUpdates=!1,this.initData=null,this.afterUpdateAction="",this._init()};i.prototype={_init:function(){this.initData=this.$form.serialize(),this._setCssSelector(),this._initEditor(),this.$back.on("click",{self:this},this._backClick),this.$preview.on("click",{self:this},this._previewClick),this.$editHtml.on("click",{self:this},this._editHtml),this.$form.on("submit",{self:this},this._submitForm),this.$form.on("click",".ditty-editor-options__tag",{self:this},this._insertTag),this.$title.on("keyup",{self:this},this._titleUpdate),this.$body.on("click",".ditty-editor-options__body__error",{self:this},this._removeErrorNotice),this.settings.editor.$elmt.on("ditty_editor_add_drafts",{self:this},this._addDrafts),this.settings.editor.$elmt.on("ditty_editor_save_drafts",{self:this},this._saveDrafts)},_setCssSelector:function(){dittyVars.isTickerPost?this.itemSelector="#poststuff .ditty-layout--"+this.layoutId:this.itemSelector=".ditty-layout--"+this.layoutId},_showPrevPanel:function(){this.settings.editor.$panels.ditty_slider("options","transition","slideRight"),this.settings.editor.$panels.ditty_slider("showSlideById",this.settings.prevPanel)},_titleUpdate:function(t){var i=t.data.self;i.settings.editor.addUpdate("layoutUpdate",i.layoutId)},_enablePreviewButton:function(){this.$preview.addClass("ditty-has-updates")},_disablePreviewButton:function(){this.$preview.removeClass("ditty-has-updates"),this.$preview.children("i").attr("class",this.$preview.children("i").data("class"))},_addDrafts:function(t){var i=t.data.self;i.codeEditor.codemirror.save(),(i.$form.serialize()!==i.initData||i.codeHasUpdates)&&i.$form.trigger("submit")},_saveDrafts:function(t){var i=t.data.self;i.codeEditor.codemirror.save(),(i.$form.serialize()!==i.initData||i.codeHasUpdates)&&(i.afterUpdateAction="save",i.$form.trigger("submit"))},_backClick:function(t){t.preventDefault();var i=t.data.self;i.codeEditor.codemirror.save(),i.$form.serialize()!==i.initData||i.codeHasUpdates?(i.afterUpdateAction="return",i.$form.trigger("submit")):i._showPrevPanel()},_previewClick:function(t){t.preventDefault();var i=t.data.self;i.codeEditor.codemirror.save(),(i.$form.serialize()!==i.initData||i.codeHasUpdates)&&(i.$preview.children("i").attr("class",dittyVars.updateIcon),i.$form.trigger("submit"))},_editHtml:function(t){t.preventDefault();var i=t.data.self,e="layout_html_editor";if(i.settings.editor.updateStart(),i.codeEditor.codemirror.save(),(i.$form.serialize()!==i.initData||i.codeHasUpdates)&&(i.$preview.children("i").attr("class",dittyVars.updateIcon),i.$form.trigger("submit")),i.settings.editor.panelExists(e))i.settings.editor.$elmt.find(".ditty-editor__panel--layout_html_editor input.ditty-editor-options__title").val(i.$title.val()),i.settings.editor.panelOptions("transition","fade"),i.settings.editor.showPanel(e);else{var s={action:"ditty_editor_layout_fields",layout_id:i.layoutId,layout_title:i.$title.val(),ditty_id:i.editorDittyId,item_id:i.editorItemId,item_type:i.editorItemType,item_value:i.editorItemValue,edit_type:"html",draft_values:i.settings.editor.getDraftValues(),security:dittyVars.security};$.post(dittyVars.ajaxurl,s,(function(t){if(t){var s='<div class="ditty-editor__panel ditty-editor__panel--'+e+'">'+t.form+"</div>";i.settings.editor.panelOptions("transition","fade"),i.settings.editor.showPanel(e,s)}}),"json")}},_showErrorNotice:function(){var t=$('<div class="ditty-editor-options__body__error"><span>'+dittyVars.strings.layout_css_error+"</span></div>");this.$body.append(t)},_removeErrorNotice:function(t){t.data.self.$body.find(".ditty-editor-options__body__error").remove()},_submitForm:function(t){t.preventDefault();var i=t.data.self,e=i.layoutId,s=i.itemType;if(i.$form.hasClass("ditty-editor-has-errors"))return!1;i.codeEditor.codemirror.save(),i.settings.editor.updateStart();var a={action:"ditty_editor_layout_update",layout_id:e,item_type:s,edit_type:"css",draft_values:i.settings.editor.getDraftValues(),security:dittyVars.security};i.$form.ajaxSubmit({url:dittyVars.ajaxurl,type:"post",dataType:"json",data:a,success:function(t){i.initData=i.$form.serialize(),i._disablePreviewButton(),t.label&&(i.$editorLayoutTitle&&i.$editorLayoutTitle.html(t.label),i.$editorLayoutVariationTitle.html(t.label)),i.$editorLayoutTitle&&i.$editorLayoutTitle.find(".ditty-layout-version").remove(),i.$editorLayoutVariationTitle&&i.$editorLayoutVariationTitle.find(".ditty-layout-version").remove(),t.code?dittyLayoutCss(t.code,i.layoutId,"update"):i._showErrorNotice(),t.draft_id&&t.draft_meta&&dittyDraftLayoutUpdate(i,t.draft_id,null,t.draft_meta),i.codeHasUpdates=!1,i.settings.editor.updateStop(),i.settings.editor.delayedSubmitDisable(),"return"===i.afterUpdateAction&&i._showPrevPanel(),"save"===i.afterUpdateAction&&i.settings.editor.saveDitty(),i.afterUpdateAction=""}})},_initEditor:function(){var t=this,i=wp.codeEditor.defaultSettings?_.clone(wp.codeEditor.defaultSettings):{},e=dittyVars.editor.ditty_layouts_sass?"sass":"css";i.codemirror=_.extend({},i.codemirror,{mode:e,indentUnit:2,tabSize:2}),this.codeEditor=wp.codeEditor.initialize(this.$textarea[0],i),this.codeEditor.codemirror.on("change",(function(){t.codeEditor.codemirror.save(),t.settings.editor.addUpdate("layoutCssUpdate",t.layoutId),t.codeHasUpdates=!0,t._enablePreviewButton(),t.settings.editor.delayedSubmitEnable()}))},_insertTag:function(t){var i=t.data.self,e=$(t.target).text(),s=i.codeEditor.codemirror.getCursor();i.codeEditor.codemirror.replaceRange(e,s),s.ch=s.ch+e.length,i.codeEditor.codemirror.setCursor(s)},_options:function(t){return this.settings[t]},trigger:function(t,i){var e=[this.settings];i&&(e=i),this.$elmt.trigger("ditty_layout_css_editor_panel_"+t,e),"function"==typeof this.settings[t]&&this.settings[t].apply(this.$elmt,e)},options:function(i,e){if("object"==typeof i)this.settings=$.extend({},t,$.ditty_layout_css_editor_panel.defaults,i);else{if("string"!=typeof i)return this.settings;if(void 0===e)return this.settings[i];this.settings[i]=e}this.trigger("options_update")},destroy:function(){this.$back.off("click",{self:this},this._backClick),this.$preview.off("click",{self:this},this._previewClick),this.$editHtml.off("click",{self:this},this._editHtml),this.$form.off("submit",{self:this},this._submitForm),this.$form.off("click",".ditty-editor-options__tag",{self:this},this._insertTag),this.$title.off("keyup",{self:this},this._titleUpdate),this.$body.off("click",".ditty-editor-options__body__error",{self:this},this._removeErrorNotice),this.settings.editor.$elmt.off("ditty_editor_add_drafts",{self:this},this._addDrafts),this.settings.editor.$elmt.off("ditty_editor_save_drafts",{self:this},this._saveDrafts),this.codeEditor.codemirror.off("change"),this.codeEditor.codemirror.toTextArea(),this.elmt._ditty_layout_css_editor_panel=null}},$.fn.ditty_layout_css_editor_panel=function(t){var e,s=arguments,a=!1;if(void 0===t||"object"==typeof t)return this.each((function(){this._ditty_layout_css_editor_panel||(this._ditty_layout_css_editor_panel=new i(this,t))}));if("string"==typeof t){if(this.each((function(){var i=this._ditty_layout_css_editor_panel;if(!i)throw new Error("No Ditty_Layout_Css_Editor_Panel applied to this element.");"function"==typeof i[t]&&"_"!==t[0]?e=i[t].apply(i,[].slice.call(s,1)):a=!0})),a)throw new Error('No method "'+t+'" in Ditty_Layout_Css_Editor_Panel.');return void 0!==e?e:this}},$.ditty_layout_css_editor_panel={},$.ditty_layout_css_editor_panel.defaults=t}(jQuery),jQuery((function($){!function(){"use strict";function t(t,i){0===parseInt(i)?t.hide():t.show()}function i(t,i){"none"===i?t.hide():t.show()}function e(t,i){"none"===i?t.hide():t.show()}$("#ditty-editor").on("ditty_display_editor_panel_init",".ditty-editor__panel--displayEditor",(function(s,a){if("list"===a.displayType){var d=a.$form,n=d.find(".ditty-field--perPage"),r=d.find(".ditty-field--arrows").siblings(),o=d.find(".ditty-field--bullets").siblings();t(n,d.find('input[name="paging"]:checked').val()),d.find('input[name="paging"]').on("change",(function(){t(n,$(this).val())})),i(r,d.find('select[name="arrows"]').val()),d.find('select[name="arrows"]').on("change",(function(){i(r,$(this).val())})),e(o,d.find('select[name="bullets"]').val()),d.find('select[name="bullets"]').on("change",(function(){e(o,$(this).val())}))}}))}()})),jQuery((function($){!function(){"use strict";function t(t,i){var e=t.find('input[name="direction"]:checked').val(),s=t.find(".ditty-field--minHeight"),a=t.find(".ditty-field--maxHeight"),d=t.find('input[name="minHeight"]');if("down"===e||"up"===e){if(s.show(),a.show(),""===d.val()){var n="300px";d.val(n),i.options("minHeight",n)}}else s.hide(),a.hide()}function i(t){"filled"===t.find('input[name="scrollInit"]:checked').val()?t.find(".ditty-field--scrollDelay").show():t.find(".ditty-field--scrollDelay").hide()}function e(t){"no"===t.find('input[name="cloneItems"]:checked').val()?t.find(".ditty-field--wrapItems").show():t.find(".ditty-field--wrapItems").hide()}function s(t){var i=t.find('select[name="titleDisplay"]').val(),e=t.find(".ditty-field--titleDisplay");"none"===i?e.siblings().hide():e.siblings().show()}function a(a,d){t(a,d),a.find('input[name="direction"]').on("click",(function(){t(a,d)})),i(a),a.find('input[name="scrollInit"]').on("click",(function(){i(a)})),e(a),a.find('input[name="cloneItems"]').on("click",(function(){e(a)})),s(a),a.find('select[name="titleDisplay"]').on("change",(function(){s(a)}))}$("#ditty-editor").on("ditty_display_editor_panel_init",".ditty-editor__panel--displayEditor",(function(t,i){if("ticker"===i.displayType){var e=i.$form,s=e.parents("#ditty-editor__settings")[0];a(e,s._ditty_editor.ditty)}})),$(".ditty-sandbox").on("ditty_sandbox_init",(function(t,i,e){"ticker"===i.displayType&&a($(this).find("form"),e)}))}()})),jQuery((function($){!function(){"use strict";function t(t){"full"===t.find('input[name="content_display"]:checked').val()?(t.find(".ditty-field--more_link").hide(),t.find(".ditty-field--excerpt_length").hide(),t.find(".ditty-field--more").hide(),t.find(".ditty-field--more_before").hide(),t.find(".ditty-field--more_after").hide()):(t.find(".ditty-field--more_link").show(),t.find(".ditty-field--excerpt_length").show(),t.find(".ditty-field--more").show(),t.find(".ditty-field--more_before").show(),t.find(".ditty-field--more_after").show())}$("#ditty-editor").on("ditty_item_editor_panel_init",".ditty-editor__panel--item_editor",(function(i,e){if("posts_feed"!==e.itemType&&"post"!==e.itemType)return!1;var s=e.$form;t(s),s.on("click",'input[name="content_display"]',(function(){t(s)}))}))}()}));
1
  function dittyEditorInit(t){if(!t)return!1;jQuery("#ditty-editor__settings").ditty_editor({ditty:t})}function dittyGetItemsById(t,i){var e=[];return jQuery.each(t,(function(t,s){String(s.id)===String(i)&&e.push(s)})),e}function dittyItemsReorder(t,i){var e=[];return jQuery.each(i,(function(i,s){e=jQuery.merge(e,dittyGetItemsById(t,s))})),e}function dittyDraftUpdate(t,i,e,s){var a=t.settings.editor.getDraftValues(i);return a||(a={}),e?a[e]=s:a=s,t.settings.editor.updateDraftValues(i,a)}function dittyDraftGet(t,i,e){var s=t.settings.editor.getDraftValues(i);return!!s&&(e&&s[e]?s[e]:s)}function dittyDraftDelete(t,i,e){var s=i.settings.editor.getDraftValues(t),a={};return jQuery.each(s,(function(t,i){String(e)!==String(t)&&(a[t]=i)})),"new-"!==String(e).substring(0,4)&&(a[e]="DELETE"),i.settings.editor.updateDraftValues(t,a)}function dittyDraftItemDelete(t,i){return dittyDraftDelete("items",t,i)}function dittyDraftLayoutDelete(t,i){return dittyDraftDelete("layouts",t,i)}function dittyDraftDisplayDelete(t,i){return dittyDraftDelete("displays",t,i)}function dittyDraftItemUpdateData(t,i,e,s){var a=t.settings.editor.getDraftValues("items");return a||(a={}),a[i]||(a[i]={}),a[i].data||(a[i].data={}),e?a[i].data[e]=s:a[i].data=s,t.settings.editor.updateDraftValues("items",a)}function dittyDraftItemGetData(t,i,e){var s=t.settings.editor.getDraftValues("items");return!!s[i]&&(!!s[i].data&&(e?s[i].data[e]?s[i].data[e]:void 0:s[i].data))}function dittyDraftItemUpdateMeta(t,i,e,s){var a=t.settings.editor.getDraftValues("items");return a||(a={}),a[i]||(a[i]={}),a[i].meta||(a[i].meta={}),e?a[i].meta[e]=s:a[i].meta=s,t.settings.editor.updateDraftValues("items",a)}function dittyDraftItemGetMeta(t,i,e){var s=t.settings.editor.getDraftValues("items");return!!s[i]&&(!!s[i].meta&&(e?s[i].meta[e]?s[i].meta[e]:void 0:s[i].meta))}function dittyDraftLayoutUpdate(t,i,e,s){var a=t.settings.editor.getDraftValues("layouts");return a||(a={}),a[i]||(a[i]={}),e?a[i][e]=s:a[i]=s,t.settings.editor.updateDraftValues("layouts",a)}function dittyDraftLayoutGet(t,i,e){var s=t.settings.editor.getDraftValues("layouts");return!!s[i]&&(e?s[i][e]?s[i][e]:void 0:s[i])}function dittyDraftDisplayUpdate(t,i,e,s){var a=t.settings.editor.getDraftValues("displays");return a||(a={}),a[i]||(a[i]={}),e?a[i][e]=s:a[i]=s,t.settings.editor.updateDraftValues("displays",a)}function dittyDraftDisplayGet(t,i,e){var s=t.settings.editor.getDraftValues("layouts");return!!s[i]&&(e?s[i][e]?s[i][e]:void 0:s[i])}jQuery((function($){!function(){"use strict";$("body").on("ditty_editor_before_panel_update",(function(t,i,e,s,a,d){switch(d.delayedSubmitDisable(),$.protip({defaults:{position:"top",size:"small",scheme:"black",classes:"ditty-protip"}}),i){case"settings":e.hasClass("init")||e.ditty_settings_panel({editor:d});break;case"items":e.hasClass("init")?e.ditty_items_panel("panelVisible"):e.ditty_items_panel({editor:d});break;case"displays":e.find(".ditty-data-list__item").removeClass("editing"),e.hasClass("init")?e.ditty_displays_panel("panelVisible"):e.ditty_displays_panel({editor:d});break;case"item_types":e.find(".ditty-data-list__item").removeClass("editing"),e.hasClass("init")?e.ditty_item_types_panel("panelVisible"):e.ditty_item_types_panel({editor:d});break;case"item_editor":e.ditty_item_editor_panel({editor:d});break;case"display_editor":e.ditty_display_editor_panel({editor:d});break;case"layouts":"layoutHtmlEditor"!==s&&"layoutCssEditor"!==s&&e.ditty_layouts_panel({editor:d});break;case"layout_variations":e.hasClass("init")?e.ditty_layout_variations_panel("panelVisible"):e.ditty_layout_variations_panel({editor:d});break;case"layout_html_editor":e.ditty_layout_html_editor_panel({editor:d,prevPanel:s});break;case"layout_css_editor":e.ditty_layout_css_editor_panel({editor:d,prevPanel:s})}})),$("body").on("ditty_editor_panel_removed",(function(t,i,e){switch(i){case"item_editor":e.ditty_item_editor_panel&&e.ditty_item_editor_panel("destroy");break;case"display_editor":e.ditty_display_editor_panel&&e.ditty_display_editor_panel("destroy");break;case"layouts":case"layouts":e.ditty_layouts_panel&&e.ditty_layouts_panel("destroy");break;case"layout_variations":e.ditty_layout_variations_panel&&e.ditty_layout_variations_panel("destroy");break;case"layout_html_editor":e.ditty_layout_html_editor_panel&&e.ditty_layout_html_editor_panel("destroy");break;case"layout_css_editor":e.ditty_layout_css_editor_panel&&e.ditty_layout_css_editor_panel("destroy")}}))}()})),dittyEditorInit(),function($){"use strict";var t={listType:"toggle",showAll:!0,activeFilter:"*",filter:".ditty-data-list__filter",filterSelector:"filter",item:".ditty-data-list__item",itemSelector:"filter"},i=function(i,e){this.elmt=i,this.settings=$.extend({},t,$.ditty_ui_data_list.defaults,e),this.$elmt=$(i),this.filters=[],this._init()};i.prototype={_init:function(){var t=this;this.$elmt.on("click",this.settings.filter,{self:this},this._filterClick),this.$elmt.find(this.settings.filter+".active").each((function(){t._filterList($(this).data(t.settings.filterSelector))})),"*"!==this.settings.activeFilter&&this._filterList(this.settings.activeFilter),setTimeout((function(){t.trigger("init")}),1)},_filterList:function(t){var i=this,e=this.filters;if("toggle"===this.settings.listType)this.filters.includes(t)?this.settings.showAll&&(this.filters=[],this.$elmt.find(this.settings.filter).removeClass("active"),this.$elmt.find(this.settings.item).show()):(this.filters=[t],this.$elmt.find(this.settings.filter).removeClass("active"),this.$elmt.find(this.settings.filter+"[data-"+this.settings.filterSelector+'="'+t+'"]').addClass("active"),this.$elmt.find(this.settings.item).hide(),this.$elmt.find(this.settings.item+"[data-"+this.settings.itemSelector+'="'+t+'"]').show());else if("filter"===this.settings.listType){if(this.$elmt.find(this.settings.item).hide(),this.filters.includes(t)){this.$elmt.find(this.settings.filter+"[data-"+this.settings.filterSelector+'="'+t+'"]').removeClass("active");for(var s=0;s<this.filters.length;s++)i.filters[s]===t&&i.filters.splice(s,1)}else this.$elmt.find(this.settings.filter+"[data-"+this.settings.filterSelector+'="'+t+'"]').addClass("active"),this.filters.push(t);$.each(this.filters,(function(t,e){i.$elmt.find(this.settings.item+"[data-"+this.settings.itemSelector+'="'+e+'"]').show()})),0===this.filters.length&&i.$elmt.find(this.settings.item).show()}e!==this.filters&&i.trigger("update")},_filterClick:function(t){t.preventDefault();var i=t.data.self,e=$(t.target);e.is("a")||(e=e.parents("a")),i._filterList(e.data(i.settings.filterSelector))},_options:function(t){return this.settings[t]},trigger:function(t,i){var e=[this.settings,this.filters];i&&(e=i),this.$elmt.trigger("ditty_ui_data_list_"+t,e),"function"==typeof this.settings[t]&&this.settings[t].apply(this.$elmt,e)},options:function(i,e){if("object"==typeof i)this.settings=$.extend({},t,$.ditty_ui_data_list.defaults,i);else{if("string"!=typeof i)return this.settings;if(void 0===e)return this.settings[i];this.settings[i]=e}this.trigger("options_update")},destroy:function(){this.$elmt.off("click",this.settings.filter,{self:this},this._filterClick),this.trigger("destroy"),this.elmt._ditty_ui_data_list=null}},$.fn.ditty_ui_data_list=function(t){var e,s=arguments,a=!1;if(void 0===t||"object"==typeof t)return this.each((function(){this._ditty_ui_data_list||(this._ditty_ui_data_list=new i(this,t))}));if("string"==typeof t){if(this.each((function(){var i=this._ditty_ui_data_list;if(!i)throw new Error("No Ditty_UI_Data_List applied to this element.");"function"==typeof i[t]&&"_"!==t[0]?e=i[t].apply(i,[].slice.call(s,1)):a=!0})),a)throw new Error('No method "'+t+'" in Ditty_UI_Data_List.');return void 0!==e?e:this}},$.ditty_ui_data_list={},$.ditty_ui_data_list.defaults=t}(jQuery),function($){"use strict";var t={screen:"admin",ditty:null,panel:""},i=function(i,e){this.elmt=i,this.settings=$.extend({},t,$.ditty_editor.defaults,e),this.$elmt=$(i),this.ditty=this.settings.ditty,this.dittyId=this.settings.ditty.options("id"),this.dittyType=this.settings.ditty.options("type"),this.displayId=0,this.panelsLoaded=0,this.unsavedUpdates={},this.draftValues={},this.$overlay=null,this.$contents=null,this.$header=null,this.$update=null,this.$updateCount=null,this.$updateLabel=null,this.$tabs=null,this.$panels=null,this.currentTab=0,this.currentPanel=this.settings.panel,this.delayedSubmit=!1,this.tabs=[],this.panels=[],this.activeItems=[],this._init()};i.prototype={_init:function(){var t,i,e,s,a,d,n,r=this;t=$('<div class="ditty-editor__contents"></div>'),this.$contents=t,i=$('<div class="ditty-editor__header"></div>'),this.$header=i,e=$('<span class="ditty-editor__update__count"></span>'),this.$updateCount=e,s=$('<span class="ditty-editor__update__label">Save Ditty</span>'),this.$updateLabel=s,a=$('<button type="submit" class="ditty-editor__update ditty-button ditty-button--primary"></button>'),this.$update=a,d=$('<div class="ditty-editor__tabs"></div>'),this.$tabs=d,n=$('<div class="ditty-editor__panels"></div>'),this.$panels=n,a.prepend(e,s),i.append(a),t.append(i,d,n),this.$elmt.append(t),this.$overlay=$('<div class="ditty-updating-overlay ditty-admin-item__overlay"><div class="ditty-updating-overlay__inner"><i class="fas fa-sync-alt fa-spin"></i></div></div>'),this.$elmt.append(this.$overlay),$(document).on("postbox-moved",{self:this},this._postboxMoved),$(document).on("postboxes-columnchange",{self:this},this._postboxMoved),$(window).on("beforeunload",{self:this},this._beforeunload),this.ditty.$elmt.on("ditty_active_items_update",{self:this},this._dittyItemsUpdated),this.ditty.$elmt.on("ditty_disabled_items_update",{self:this},this._disabledItemsUpdate),this.$tabs.on("click",".ditty-editor__tab",{self:this},this._showPanel),this.$update.on("click",{self:this},this._saveClick),this.$panels.on("ditty_slider_init",{self:this},this._editorLoaded),this.$panels.on("ditty_slider_before_slide_update",{self:this},this._beforeSlideUpdate),this.$panels.on("ditty_slider_after_slide_update",{self:this},this._afterSlideUpdate),this.$panels.on("ditty_slider_slide_removed",{self:this},this._slideRemoved),this._loadContents(),this.trigger("stop_live_updates"),setTimeout((function(){r.trigger("init")}),1)},_loadContents:function(){var t=this,i={action:"ditty_editor_load_contents",ditty_id:this.dittyId,security:dittyVars.security};$.post(dittyVars.ajaxurl,i,(function(i){t._initTabs(i.tabs),t._initPanels(i.panels),t._initSlider()}),"json")},_editorLoaded:function(t){var i=t.data.self;$("body").trigger("ditty_editor_loaded",[i])},_setUpdateCount:function(){},_initSlider:function(){var t=this.tabs[0].id;this.currentPanel&&""!==this.currentPanel&&(t=this.currentPanel),this.$panels.ditty_slider({transition:"fade",transitionSpeed:.75,heightSpeed:.75,touchSwipe:!1,slides:this.panels,slideId:t})},_beforeSlideUpdate:function(t,i,e,s,a){var d=t.data.self;d.updateStart(),d._updateTab(e.id),$("body").trigger("ditty_editor_before_panel_update",[e.id,e.$elmt,a.id,a.$elmt,d])},_afterSlideUpdate:function(t,i,e,s,a){var d=t.data.self;d.updateStop(),$("body").trigger("ditty_editor_after_panel_update",[e.id,e.$elmt,a.id,a.$elmt,d])},_slideRemoved:function(t,i){var e=t.data.self;$("body").trigger("ditty_editor_panel_removed",[i.id,i.$elmt,e])},_showPanel:function(t){t.preventDefault();var i=t.data.self,e=$(t.target).is("a")?$(t.target):$(t.target).parent("a"),s=e.data("panel"),a=parseInt(e.data("index"));if(s===i.currentTab)return!1;var d=a>i.currentTab?"slideLeft":"slideRight";i.$panels.ditty_slider("options","transition",d),i.$panels.ditty_slider("showSlideById",s),i.currentTab=a,i.$elmt.trigger("ditty_editor_add_drafts")},_updateTab:function(t){var i=$('.ditty-editor__tab[data-panel="'+t+'"]');void 0!==i[0]&&($(".ditty-editor__tab").removeClass("active"),i.addClass("active"),this.currentTab=parseInt(i.data("index")))},_initTabs:function(t){var i=this,e=0;$.each(t,(function(t,s){var a=$('<a href="#" class="ditty-editor__tab ditty-editor__tab--'+t+'" data-panel="'+t+'" data-index="'+e+'"><i class="'+s.icon+'"></i><span>'+s.label+"</span></a>");i.$tabs.append(a),i.tabs.push({id:t,tab:a}),e++}))},_initPanels:function(t){var i=this;$.each(t,(function(t,e){var s='<div class="ditty-editor__panel ditty-editor__panel--'+t+'">'+e+"</div>";i.panels.push({id:t,html:s,cache:!0})}))},_initFields:function(t){t.find(".ditty-data-list").ditty_ui_data_list(),t.trigger("ditty_init_fields"),$.protip({defaults:{position:"top",size:"small",scheme:"black",classes:"ditty-protip"}})},saveDitty:function(t){var i=this,e=i.dittyId;i.$updateLabel.text("Updating..."),i.updateStart();var s={action:"ditty_editor_save",ditty_id:e,draft_values:i.draftValues,return_items:1,security:dittyVars.security};s=$.extend({},s,t),$.post(dittyVars.ajaxurl,s,(function(t){$("body").trigger("ditty_editor_save_ditty_response",[t]),t.display_items&&i.ditty.options("items",t.display_items),i.draftValues={},i.unsavedUpdates={},i._setUpdateCount(),i.$elmt.removeClass("ditty-editor--updates-exist"),i.$updateLabel.text("Ditty Saved!"),setTimeout((function(){i.$updateLabel.text("Save Ditty")}),2e3),i.updateStop(),t.new_ditty_url&&window.history.pushState(null,"","/wp-admin/post.php?post="+e+"&action=edit")}))},_saveClick:function(t){t.preventDefault();var i=t.data.self;i.$elmt.trigger("ditty_editor_save_drafts"),i.delayedSubmit||i.saveDitty()},_dittyItemsUpdated:function(t,i,e){var s=t.data.self;s.activeItems=e,s.trigger("active_items_update")},_disabledItemsUpdate:function(t,i){var e=t.data.self;$.each(i,(function(t,i){"disabled"===i?e.$elmt.find("#ditty-editor-item--"+t).addClass("ditty-editor-item--disabled"):e.$elmt.find("#ditty-editor-item--"+t).removeClass("ditty-editor-item--disabled")}))},_postboxMoved:function(t,i){if(!window.tinymce)return!1;$(i).find(".wp-editor-area").each((function(){var t=$(this).attr("id");tinymce.execCommand("mceRemoveEditor",!0,t),tinymce.execCommand("mceAddEditor",!0,t)}))},_beforeunload:function(t){var i=t.data.self;return Object.keys(i.unsavedUpdates).length>0||void 0},_windowResize:function(t){t.preventDefault()},_options:function(t){return this.settings[t]},panelExists:function(t){var i=this.$panels.ditty_slider("options","slides"),e=!1;return $.each(i,(function(i,s){String(s.id)!==String(t)||(e=!0)})),e},showPanel:function(t,i){i&&this.$panels.ditty_slider("addSlideById",t,i),this.$panels.ditty_slider("showSlideById",t,!0)},updateExists:function(t,i){if(void 0===this.unsavedUpdates[t]&&(this.unsavedUpdates[t]=[]),-1!==$.inArray(i,this.unsavedUpdates[t]))return!0},addUpdate:function(t,i){var e=!1;return void 0===this.unsavedUpdates[t]&&(this.unsavedUpdates[t]=[]),-1===$.inArray(i,this.unsavedUpdates[t])&&(e=!0,this.unsavedUpdates[t].push(i)),this._setUpdateCount(),this.$elmt.addClass("ditty-editor--updates-exist"),e},removeUpdate:function(t,i){if(void 0===this.unsavedUpdates[t])return!1;if(-1===$.inArray(i,this.unsavedUpdates[t]))return!1;var e=!1,s=[];return $.each(this.unsavedUpdates[t],(function(t,a){String(i)===String(a)?e=!0:s.push(a)})),this.unsavedUpdates[t]=s,this._setUpdateCount(),""===this.$updateCount.text()&&this.$elmt.removeClass("ditty-editor--updates-exist"),e},updateStart:function(){this.$overlay.fadeIn()},updateStop:function(){this.$overlay.fadeOut()},initFields:function(t){this._initFields(t)},updateDraftValues:function(t,i){return this.$elmt.addClass("ditty-editor--updates-exist"),t?(this.draftValues[t]=i,"development"===dittyVars.mode&&window.console&&console.log("draftValues:",this.draftValues),this.draftValues[t]):(this.draftValues=i,"development"===dittyVars.mode&&window.console&&console.log("draftValues:",this.draftValues),this.draftValues)},getDraftValues:function(t){return t?!!this.draftValues[t]&&this.draftValues[t]:this.draftValues},delayedSubmitEnable:function(){this.delayedSubmit=!0},delayedSubmitDisable:function(){this.delayedSubmit=!1},trigger:function(t,i){var e=[];switch(t){case"active_items_update":e=[this.ditty,this.activeItems];break;case"stop_live_updates":e=[this.dittyId];break;default:e=[this.settings]}i&&(e=i),this.$elmt.trigger("ditty_editor_"+t,e),"function"==typeof this.settings[t]&&this.settings[t].apply(this.$elmt,e),$("body").trigger("ditty_"+t,e)},_getPanelOption:function(t){return"elmnt"===t?this.$panels:this.settings[t]},_setPanelOption:function(t,i){if(void 0===i)return!1;this.$panels.ditty_slider("options",t,i),this.trigger("update")},panelOptions:function(t,i){var e=this;if("object"==typeof t)$.each(t,(function(t,i){e._setPanelOption(t,i)}));else{if("string"!=typeof t)return e.$panels.ditty_slider("options");if(void 0===i)return e._getPanelOption(t);e._setPanelOption(t,i)}},_getOption:function(t){return"elmnt"===t?this:this.settings[t]},_setOption:function(t,i){if(void 0===i)return!1;this.settings[t]=i,this.trigger("update")},options:function(t,i){var e=this;if("object"==typeof t)$.each(t,(function(t,i){e._setOption(t,i)}));else{if("string"!=typeof t)return e.settings;if(void 0===i)return e._getOption(t);e._setOption(t,i)}},destroy:function(){this.$panels.ditty_slider&&this.$panels.ditty_slider("destroy"),$(document).off("postbox-moved",{self:this},this._postboxMoved),$(document).off("postboxes-columnchange",{self:this},this._postboxMoved),$(window).off("beforeunload",{self:this},this._beforeunload),this.ditty.$elmt.off("ditty_active_items_update",{self:this},this._dittyItemsUpdated),this.ditty.$elmt.off("ditty_disabled_items_update",{self:this},this._disabledItemsUpdate),this.$tabs.off("click","ditty-editor__tab",{self:this},this._showPanel),this.$update.off("click",{self:this},this._saveClick),this.$panels.off("ditty_slider_init",{self:this},this._editorLoaded),this.$panels.off("ditty_slider_before_slide_update",{self:this},this._beforeSlideUpdate),this.$panels.off("ditty_slider_after_slide_update",{self:this},this._afterSlideUpdate),this.$panels.off("ditty_slider_slide_removed",{self:this},this._slideRemoved),this.trigger("destroy"),this.elmt._ditty_editor=null}},$.fn.ditty_editor=function(t){var e,s=arguments,a=!1;if(void 0===t||"object"==typeof t)return this.each((function(){this._ditty_editor||(this._ditty_editor=new i(this,t))}));if("string"==typeof t){if(this.each((function(){var i=this._ditty_editor;if(!i)throw new Error("No Ditty_Editor applied to this element.");"function"==typeof i[t]&&"_"!==t[0]?e=i[t].apply(i,[].slice.call(s,1)):a=!0})),a)throw new Error('No method "'+t+'" in Ditty_Editor.');return void 0!==e?e:this}},$.ditty_editor={},$.ditty_editor.defaults=t}(jQuery),function($){"use strict";var t={editor:null},i=function(i,e){this.elmt=i,this.settings=$.extend({},t,$.ditty_settings_panel.defaults,e),this.$elmt=$(i),this.$form=this.$elmt.find(".ditty-editor-options"),this.$title=this.$elmt.find('input[name="title]'),this.$previewBg=this.$elmt.find('input[name="previewBg"]'),this.$previewPaddingTop=this.$elmt.find('input[name="previewPadding[paddingTop]"]'),this.$previewPaddingBottom=this.$elmt.find('input[name="previewPadding[paddingBottom]"]'),this.$previewPaddingLeft=this.$elmt.find('input[name="previewPadding[paddingLeft]"]'),this.$previewPaddingRight=this.$elmt.find('input[name="previewPadding[paddingRight]"]'),this.$postTitle=$(".ditty-post__title"),this.$editorPreview=$("#ditty-editor__preview"),this.dittyId=this.$form.data("ditty_id"),this.initData=null,this.afterUpdateAction="",this._init()};i.prototype={_init:function(){this.initData=this.$form.serialize(),this.settings.editor.initFields(this.$elmt),this.settings.editor.$elmt.on("ditty_editor_add_drafts",{self:this},this._addDrafts),this.settings.editor.$elmt.on("ditty_editor_save_drafts",{self:this},this._saveDrafts),this.$form.on("submit",{self:this},this._submitForm),this.$form.on("keyup change",'input[type="text"], input[type="number"], textarea, select',{self:this},this._checkUpdates),this.$form.on("click",'input[type="radio"], input[type="checkbox"]',{self:this},this._checkUpdates),this.$form.on("ditty_input_wysiwyg_update",".ditty-input--wysiwyg",{self:this},this._checkUpdates),this.$form.on("keyup change",'input[name="title"]',{self:this},this._titleChange),this.$form.on("keyup change",".ditty-field--preview_settings *",{self:this},this._previewBgChange),this.$elmt.addClass("init")},_checkUpdates:function(t){var i=t?t.data.self:this;i.$form.serialize()!==i.initData?(i.settings.editor.addUpdate("settings",i.itemId),i.settings.editor.delayedSubmitEnable()):i.settings.editor.removeUpdate("settings",i.itemId)},_titleChange:function(t){var i=t?t.data.self:this,e=$(t.target).val();i.$postTitle.text(e)},_previewBgChange:function(t){var i=t?t.data.self:this,e={backgroundColor:i.$previewBg.val(),paddingTop:i.$previewPaddingTop.val(),paddingBottom:i.$previewPaddingBottom.val(),paddingLeft:i.$previewPaddingLeft.val(),paddingRight:i.$previewPaddingRight.val()};i.$editorPreview.css(e)},_addDrafts:function(t){var i=t.data.self;i.$form.serialize()!==i.initData&&i.$form.trigger("submit")},_saveDrafts:function(t){var i=t.data.self;i.$form.serialize()!==i.initData&&(i.afterUpdateAction="save",i.$form.trigger("submit"))},_submitForm:function(t){t.preventDefault();var i=t.data.self,e=i.dittyId;i.settings.editor.updateStart();var s={action:"ditty_editor_settings_update",ditty_id:e,draft_values:i.settings.editor.getDraftValues(),security:dittyVars.security};i.$form.ajaxSubmit({url:dittyVars.ajaxurl,type:"post",dataType:"json",data:s,success:function(t){i.initData=i.$form.serialize(),dittyDraftUpdate(i,"settings",!1,t),i.settings.editor.delayedSubmitDisable(),"save"===i.afterUpdateAction&&i.settings.editor.saveDitty({return_items:0}),i.afterUpdateAction=""}})},_options:function(t){return this.settings[t]},trigger:function(t,i){var e=[this.settings];i&&(e=i),this.$elmt.trigger("ditty_settings_panel_"+t,e),"function"==typeof this.settings[t]&&this.settings[t].apply(this.$elmt,e)},options:function(i,e){if("object"==typeof i)this.settings=$.extend({},t,$.ditty_settings_panel.defaults,i);else{if("string"!=typeof i)return this.settings;if(void 0===e)return this.settings[i];this.settings[i]=e}this.trigger("options_update")},destroy:function(){this.$elmt.removeClass("init"),this.settings.editor.$elmt.off("ditty_editor_save_drafts",{self:this},this._saveDrafts),this.settings.editor.$elmt.off("ditty_editor_add_drafts",{self:this},this._addDrafts),this.$form.off("submit",{self:this},this._submitForm),this.$form.off("keyup change",'input[type="text"], input[type="number"], textarea, select',{self:this},this._checkUpdates),this.$form.off("keyup change",'input[name="previewBg"]',{self:this},this._previewBg_cahnge),this.$form.off("keyup change",'input[name="title"]',{self:this},this._titleChange),this.$form.off("click",'input[type="radio"], input[type="checkbox"]',{self:this},this._checkUpdates),this.$form.off("ditty_input_wysiwyg_update",".ditty-input--wysiwyg",{self:this},this._checkUpdates),this.trigger("destroy"),this.elmt._ditty_settings_panel=null}},$.fn.ditty_settings_panel=function(t){var e,s=arguments,a=!1;if(void 0===t||"object"==typeof t)return this.each((function(){this._ditty_settings_panel||(this._ditty_settings_panel=new i(this,t))}));if("string"==typeof t){if(this.each((function(){var i=this._ditty_settings_panel;if(!i)throw new Error("No Ditty_Settings_Panel applied to this element.");"function"==typeof i[t]&&"_"!==t[0]?e=i[t].apply(i,[].slice.call(s,1)):a=!0})),a)throw new Error('No method "'+t+'" in Ditty_Settings_Panel.');return void 0!==e?e:this}},$.ditty_settings_panel={},$.ditty_settings_panel.defaults=t}(jQuery),function($){"use strict";var t={editor:null},i=function(i,e){this.elmt=i,this.settings=$.extend({},t,$.ditty_items_panel.defaults,e),this.$elmt=$(i),this.$add=$(i).find(".ditty-editor-options__add"),this.$contents=$(i).find(".ditty-editor__panel__contents"),this.$list=$(i).find(".ditty-data-list"),this.$listItems=$(i).find(".ditty-data-list__items"),this.isEmptyTicker=!1,this._init()};i.prototype={_init:function(){this.$elmt.addClass("init"),this.settings.editor.$elmt.on("ditty_editor_active_items_update",{self:this},this._dittyActiveItemsUpdated),this.$add.on("click",{self:this},this._add_item),this.$elmt.on("click",".ditty-data-list__item",{self:this},this._showItem),this.$elmt.on("click",".ditty-data-list__item__icon",{self:this},this._editType),this.$elmt.on("click",".ditty-data-list__item__edit",{self:this},this._editItem),this.$elmt.on("click",".ditty-data-list__item__layout",{self:this},this._editLayoutVariations),this.$elmt.on("click",".ditty-data-list__item__clone",{self:this},this._cloneItem),this.$elmt.on("click",".ditty-data-list__item__delete",{self:this},this._deleteItem),this.$list.on("click",".ditty-editor-item > a",{self:this},this._actionClick),$("body").on("ditty_editor_save_ditty_response",{self:this},this._dittyEditorSaveResponse),1>this.$elmt.find(".ditty-data-list__item").length&&(this.isEmptyTicker=!0,this.$add.trigger("click")),this._initializeSorting(),this._highlightListItems(this.settings.editor.activeItems)},dittyUpdateSavedDraftLayouts:function(t,i){$.each($(".ditty-editor-item"),(function(){var e=$(this).data("layout_value");$.each(e,(function(s,a){String(a)===String(t)&&(e[s]=String(i))})),$(this).attr("data-layout_value",e).data("layout_value",e)}))},_dittyEditorSaveResponse:function(t,i){var e=t.data.self;i.ditty_new_item_ids&&$.each(i.ditty_new_item_ids,(function(t,i){var e=$("#ditty-editor-item--"+t);e.length&&(e.attr("id","ditty-editor-item--"+i),e.attr("data-item_id",i).data("item_id",i))})),i.ditty_new_layout_ids&&$.each(i.ditty_new_layout_ids,(function(t,i){e.dittyUpdateSavedDraftLayouts(t,i)}))},_highlightListItem:function(t){var i=t.id+"";i=i.split("_"),this.$elmt.find("#ditty-editor-item--"+i[0]).addClass("active")},_highlightListItems:function(t){this.$elmt.find(".ditty-data-list__item").removeClass("active");var i=this;Array.isArray(t)?$.each(t,(function(t,e){i._highlightListItem(e)})):i._highlightListItem(t)},_dittyActiveItemsUpdated:function(t,i,e){t.data.self._highlightListItems(e)},_initializeSorting:function(){var t=this;this.$listItems.sortable({handle:".ditty-data-list__item__move",items:".ditty-data-list__item",axis:"y",start:function(t,i){$(i.item).addClass("ditty-data-list__item--moving")},stop:function(i,e){$(e.item).removeClass("ditty-data-list__item--moving"),t.settings.editor.addUpdate("item_order",t.settings.editor.dittyId)},update:function(){t._updateItemIndexes("updateDitty")}})},_showItem:function(t){t.preventDefault();var i=t.data.self;if(!$(t.target).is("a")&&!$(t.target).parent().is("a")){var e=($(t.target).is(".ditty-data-list__item")?$(t.target):$(t.target).parents(".ditty-data-list__item")).data("item_id");i.settings.editor.ditty.showItem(e)}},_actionClick:function(t){t.preventDefault();var i=t.data.self,e=$(t.target).is("a")?$(t.target):$(t.target).parent("a"),s=e.parents(".ditty-data-list__item"),a=s.data("ditty_id"),d=s.data("item_id");dittyVars.editor.currentItem=s,$("body").trigger("ditty_editor_item_action_click",[e,s,d,a,i.settings.editor])},_editType:function(t){t.preventDefault();var i=t.data.self,e=($(t.target).is("a")?$(t.target):$(t.target).parent("a")).parents(".ditty-data-list__item");e.trigger("click"),e.addClass("editing"),i.settings.editor.updateStart(),i.settings.editor.panelOptions("transition","slideRight"),i.settings.editor.showPanel("item_types")},_editItem:function(t){t.preventDefault();var i=t.data.self,e=($(t.target).is("a")?$(t.target):$(t.target).parent("a")).parents(".ditty-data-list__item"),s=e.data("item_id");e.trigger("click"),e.addClass("editing"),i.settings.editor.updateStart();var a={action:"ditty_editor_item_fields",item_id:s,draft_values:i.settings.editor.getDraftValues(),security:dittyVars.security};$.post(dittyVars.ajaxurl,a,(function(t){if(t){var e='<div class="ditty-editor__panel ditty-editor__panel--item_editor">'+t+"</div>";i.settings.editor.panelOptions("transition","slideLeft"),i.settings.editor.showPanel("item_editor",e)}}))},_editLayoutVariations:function(t){t.preventDefault();var i=t.data.self,e=($(t.target).is("a")?$(t.target):$(t.target).parent("a")).parents(".ditty-data-list__item"),s=e.data("item_type"),a=e.data("layout_value"),d=e.find(".ditty-data-list__item__label").html();e.trigger("click"),e.addClass("editing"),i.settings.editor.updateStart();var n={action:"ditty_editor_layout_variations",ditty_id:i.settings.editor.dittyId,item_type:s,item_label:d,layout_value:a,draft_values:i.settings.editor.getDraftValues(),security:dittyVars.security};$.post(dittyVars.ajaxurl,n,(function(t){if(t){var e='<div class="ditty-editor__panel ditty-editor__panel--layout-variations">'+t+"</div>";i.settings.editor.panelOptions("transition","slideLeft"),i.settings.editor.showPanel("layout_variations",e)}}))},_add_item:function(t){t.preventDefault();var i=t.data.self,e={action:"ditty_editor_item_add",ditty_id:i.settings.editor.dittyId,draft_values:i.settings.editor.getDraftValues(),security:dittyVars.security};$.post(dittyVars.ajaxurl,e,(function(t){if(t.display_items){if(i.isEmptyTicker){var e=i.settings.editor.ditty.options("items");$.each(e,(function(t,e){i.settings.editor.ditty.deleteItem(e.id)})),i.isEmptyTicker=!1}$.each(t.display_items,(function(t,e){i.settings.editor.ditty.addItem(e,0)}))}if(t.editor_item){var s=$(t.editor_item);s.hide(),i.$listItems.prepend(s),s.slideDown(),i._updateItemIndexes()}t.draft_id&&t.draft_data&&dittyDraftItemUpdateData(i,t.draft_id,null,t.draft_data),t.draft_id&&t.draft_meta&&dittyDraftItemUpdateMeta(i,t.draft_id,null,t.draft_meta)}),"json")},_cloneItem:function(t){t.preventDefault();var i=t.data.self,e=($(t.target).is("a")?$(t.target):$(t.target).parent("a")).parents(".ditty-data-list__item"),s=e.data("item_id");i.settings.editor.updateStart();var a={action:"ditty_editor_item_clone",item_id:s,draft_values:i.settings.editor.getDraftValues(),security:dittyVars.security};$.post(dittyVars.ajaxurl,a,(function(t){if(t.display_items&&t.display_items.length&&i.settings.editor.ditty.updateItems(t.display_items,s,"after"),t.editor_item){var a=$(t.editor_item);a.hide(),e.after(a),a.slideDown(),i._updateItemIndexes()}t.draft_id&&t.draft_data&&dittyDraftItemUpdateData(i,t.draft_id,null,t.draft_data),t.draft_id&&t.draft_meta&&dittyDraftItemUpdateMeta(i,t.draft_id,null,t.draft_meta),i.settings.editor.updateStop()}),"json")},_deleteItem:function(t){t.preventDefault();var i=t.data.self,e=($(t.target).is("a")?$(t.target):$(t.target).parent("a")).parents(".ditty-data-list__item"),s=e.data("item_id");1>=i.$elmt.find(".ditty-data-list__item").length&&i.$add.trigger("click"),e.slideUp((function(){$(this).remove()})),i.settings.editor.ditty.deleteItem(s),dittyDraftItemDelete(i,s)},_updateItemIndexes:function(t){var i=this,e=[];if(this.$elmt.find(".ditty-data-list__item").each((function(t){var s=$(this).data("item_id");e.push(s),dittyDraftItemUpdateData(i,s,"item_index",t)})),"updateDitty"===t){var s=dittyItemsReorder(i.settings.editor.ditty.options("items"),e);i.settings.editor.ditty.options("items",s)}},panelVisible:function(){this.$elmt.find(".ditty-data-list__item").removeClass("editing")},_options:function(t){return this.settings[t]},trigger:function(t,i){var e=[this.settings];i&&(e=i),this.$elmt.trigger("ditty_items_panel_"+t,e),"function"==typeof this.settings[t]&&this.settings[t].apply(this.$elmt,e)},options:function(i,e){if("object"==typeof i)this.settings=$.extend({},t,$.ditty_items_panel.defaults,i);else{if("string"!=typeof i)return this.settings;if(void 0===e)return this.settings[i];this.settings[i]=e}this.trigger("options_update")},destroy:function(){this.$elmt.removeClass("init"),this.settings.editor.$elmt.off("ditty_editor_active_items_update",{self:this},this._dittyActiveItemsUpdated),this.$add.off("click",{self:this},this._add_item),this.$elmt.off("click",".ditty-data-list__item",{self:this},this._showItem),this.$elmt.off("click",".ditty-data-list__item__icon",{self:this},this._editType),this.$elmt.off("click",".ditty-data-list__item__edit",{self:this},this._editItem),this.$elmt.off("click",".ditty-data-list__item__layout",{self:this
2
+ },this._editLayoutVariations),this.$elmt.off("click",".ditty-data-list__item__clone",{self:this},this._cloneItem),this.$elmt.off("click",".ditty-data-list__item__delete",{self:this},this._deleteItem),this.$list.off("click",".ditty-editor-item > a",{self:this},this._actionClick),$("body").off("ditty_editor_save_ditty_response",{self:this},this._dittyEditorSaveResponse),this.trigger("destroy"),this.elmt._ditty_items_panel=null}},$.fn.ditty_items_panel=function(t){var e,s=arguments,a=!1;if(void 0===t||"object"==typeof t)return this.each((function(){this._ditty_items_panel||(this._ditty_items_panel=new i(this,t))}));if("string"==typeof t){if(this.each((function(){var i=this._ditty_items_panel;if(!i)throw new Error("No Ditty_Items_Panel applied to this element.");"function"==typeof i[t]&&"_"!==t[0]?e=i[t].apply(i,[].slice.call(s,1)):a=!0})),a)throw new Error('No method "'+t+'" in Ditty_Items_Panel.');return void 0!==e?e:this}},$.ditty_items_panel={},$.ditty_items_panel.defaults=t}(jQuery),function($){"use strict";var t={editor:null},i=function(i,e){this.elmt=i,this.settings=$.extend({},t,$.ditty_item_types_panel.defaults,e),this.$elmt=$(i),this.$back=this.$elmt.find(".ditty-editor-options__back"),this.$editorItem=this.settings.editor.$panels.find(".ditty-editor__panel--items").find(".ditty-data-list__item.editing"),this.editorDittyId=this.$editorItem.data("ditty_id"),this.editorItemId=this.$editorItem.data("item_id"),this.currentType=null,this._init()};i.prototype={_init:function(){this.$elmt.addClass("init"),this.settings.editor.initFields(this.$elmt),this.$back.on("click",{self:this},this._backClick),this.$elmt.on("click",".ditty-editor-item-type",{self:this},this._typeClick),this.panelVisible()},_showItemsList:function(){this.settings.editor.panelOptions("transition","slideLeft"),this.settings.editor.showPanel("items")},_backClick:function(t){t.preventDefault(),t.data.self._showItemsList()},_typeClick:function(t){t.preventDefault();var i=t.data.self,e=($(t.target).is(".ditty-editor-item-type")?$(t.target):$(t.target).parents(".ditty-editor-item-type")).data("item_type");if(e===i.currentType)i._showItemsList();else{i.settings.editor.updateStart();var s={action:"ditty_editor_item_type_update",item_id:i.editorItemId,item_type:e,draft_values:i.settings.editor.getDraftValues(),security:dittyVars.security};$.post(dittyVars.ajaxurl,s,(function(t){if(t.display_items&&i.settings.editor.ditty.updateItems(t.display_items,i.editorItemId),t.editor_item){var e=$(t.editor_item);i.$editorItem.after(e),i.$editorItem.remove(),i.$editorItem=e}t.draft_id&&t.draft_data&&dittyDraftItemUpdateData(i,t.draft_id,null,t.draft_data),i._showItemsList(),i.settings.editor.updateStop()}),"json")}},panelVisible:function(){this.$editorItem=this.settings.editor.$panels.find(".ditty-editor__panel--items").find(".ditty-data-list__item.editing"),this.editorDittyId=this.$editorItem.data("ditty_id"),this.editorItemId=this.$editorItem.data("item_id"),this.currentType=this.$editorItem.data("item_type"),this.$elmt.find(".ditty-editor-item-type").removeClass("active"),this.$elmt.find('.ditty-editor-item-type[data-item_type="'+this.currentType+'"]').addClass("active")},panelHidden:function(){var t=this.$editorItem.find(".ditty-data-list__item__icon").children("i");t.attr("class",t.data("class"))},_options:function(t){return this.settings[t]},trigger:function(t,i){var e=[this.settings];i&&(e=i),this.$elmt.trigger("ditty_item_types_panel_"+t,e),"function"==typeof this.settings[t]&&this.settings[t].apply(this.$elmt,e)},options:function(i,e){if("object"==typeof i)this.settings=$.extend({},t,$.ditty_item_types_panel.defaults,i);else{if("string"!=typeof i)return this.settings;if(void 0===e)return this.settings[i];this.settings[i]=e}this.trigger("options_update")},destroy:function(){this.$elmt.removeClass("init"),this.$back.off("click",{self:this},this._backClick),this.$elmt.off("click",".ditty-editor-item-type",{self:this},this._typeClick),this.trigger("destroy"),this.elmt._ditty_item_types_panel=null}},$.fn.ditty_item_types_panel=function(t){var e,s=arguments,a=!1;if(void 0===t||"object"==typeof t)return this.each((function(){this._ditty_item_types_panel||(this._ditty_item_types_panel=new i(this,t))}));if("string"==typeof t){if(this.each((function(){var i=this._ditty_item_types_panel;if(!i)throw new Error("No Ditty_Item_Types_Panel applied to this element.");"function"==typeof i[t]&&"_"!==t[0]?e=i[t].apply(i,[].slice.call(s,1)):a=!0})),a)throw new Error('No method "'+t+'" in Ditty_Item_Types_Panel.');return void 0!==e?e:this}},$.ditty_item_types_panel={},$.ditty_item_types_panel.defaults=t}(jQuery),function($){"use strict";var t={editor:null},i=function(i,e){this.elmt=i,this.settings=$.extend({},t,$.ditty_item_editor_panel.defaults,e),this.$elmt=$(i),this.$form=this.$elmt.find(".ditty-editor-options"),this.$back=this.$elmt.find(".ditty-editor-options__back"),this.$preview=this.$elmt.find(".ditty-editor-options__preview"),this.$title=this.$elmt.find(".ditty-editor-options__title"),this.itemId=this.$form.data("item_id"),this.itemType=this.$form.data("item_type"),this.dittyId=this.$form.data("ditty_id"),this.$editorItem=this.settings.editor.$panels.find(".ditty-editor__panel--items").find(".ditty-data-list__item.editing"),this.$editorItemTitle=this.$editorItem.find(".ditty-data-list__item__label"),this.initData=null,this.afterUpdateAction="",this._init()};i.prototype={_init:function(){var t=this;this.initData=this.$form.serialize(),this.settings.editor.initFields(this.$elmt),this.settings.editor.$elmt.on("ditty_editor_add_drafts",{self:this},this._addDrafts),this.settings.editor.$elmt.on("ditty_editor_save_drafts",{self:this},this._saveDrafts),this.$form.on("submit",{self:this},this._submitForm),this.$back.on("click",{self:this},this._backClick),this.$preview.on("click",{self:this},this._previewClick),this.$form.on("keyup change",'input[type="text"], input[type="number"], textarea, select',{self:this},this._checkUpdates),this.$form.on("click",'input[type="radio"], input[type="checkbox"]',{self:this},this._checkUpdates),this.$form.on("ditty_input_wysiwyg_update",".ditty-input--wysiwyg",{self:this},this._checkUpdates),this.$form.on("ditty_field_update",".ditty-field__input",{self:this},this._checkUpdates),setTimeout((function(){t.trigger("init",[t])}),1)},_showItemList:function(){this.settings.editor.$panels.ditty_slider("options","transition","slideRight"),this.settings.editor.$panels.ditty_slider("showSlideById","items")},_enablePreviewButton:function(){this.$preview.addClass("ditty-has-updates")},_disablePreviewButton:function(){this.$preview.removeClass("ditty-has-updates"),this.$preview.children("i").attr("class",this.$preview.children("i").data("class"))},_checkUpdates:function(t){var i=t?t.data.self:this;i.$form.serialize()!==i.initData?(i._enablePreviewButton(),i.settings.editor.addUpdate("item_settings",i.itemId),i.settings.editor.delayedSubmitEnable()):(i._disablePreviewButton(),i.settings.editor.removeUpdate("item_settings",i.itemId))},_addDrafts:function(t){var i=t.data.self;i.$form.serialize()!==i.initData&&i.$form.trigger("submit")},_saveDrafts:function(t){var i=t.data.self;i.$form.serialize()!==i.initData&&(i.afterUpdateAction="save",i.$form.trigger("submit"))},_backClick:function(t){t.preventDefault();var i=t.data.self;i.$form.serialize()===i.initData?i._showItemList():(i.afterUpdateAction="return",i.$form.trigger("submit"))},_previewClick:function(t){t.preventDefault();var i=t.data.self;i.$form.serialize()!==i.initData&&(i.$preview.children("i").attr("class",dittyVars.updateIcon),i.$form.trigger("submit"))},_submitForm:function(t){t.preventDefault();var i=t.data.self,e=i.itemId;i.settings.editor.updateStart();var s={action:"ditty_editor_item_update",item_id:e,draft_values:i.settings.editor.getDraftValues(),security:dittyVars.security};i.$form.ajaxSubmit({url:dittyVars.ajaxurl,type:"post",dataType:"json",data:s,error:function(){},success:function(t){if(t.value_updates&&i._updateValues(t.value_updates),i.initData=i.$form.serialize(),i._disablePreviewButton(),t.display_items&&i.settings.editor.ditty.updateItems(t.display_items,e),t.editor_item){var s=$(t.editor_item).children(".ditty-data-list__item__label").html();i.$title.html(s),i.$editorItemTitle.html(s)}t.draft_id&&t.draft_data&&dittyDraftItemUpdateData(i,t.draft_id,null,t.draft_data),t.draft_id&&t.draft_meta&&dittyDraftItemUpdateMeta(i,t.draft_id,null,t.draft_meta),i.settings.editor.updateStop(),i.settings.editor.delayedSubmitDisable(),"return"===i.afterUpdateAction&&i._showItemList(),"save"===i.afterUpdateAction&&i.settings.editor.saveDitty({return_items:0}),i.afterUpdateAction=""}})},_updateValues:function(t){var i=this;$.each(t,(function(t,e){var s=i.$form.find('[name="'+t+'"]');s.length&&s.val(e)}))},_options:function(t){return this.settings[t]},trigger:function(t,i){var e=[this.settings];i&&(e=i),this.$elmt.trigger("ditty_item_editor_panel_"+t,e),"function"==typeof this.settings[t]&&this.settings[t].apply(this.$elmt,e)},options:function(i,e){if("object"==typeof i)this.settings=$.extend({},t,$.ditty_item_editor_panel.defaults,i);else{if("string"!=typeof i)return this.settings;if(void 0===e)return this.settings[i];this.settings[i]=e}this.trigger("options_update")},destroy:function(){this.settings.editor.$elmt.off("ditty_editor_add_drafts",{self:this},this._saveDrafts),this.settings.editor.$elmt.off("ditty_editor_save_drafts",{self:this},this._saveDrafts),this.$form.off("submit",{self:this},this._submitForm),this.$back.off("click",{self:this},this._backClick),this.$preview.off("click",{self:this},this._previewClick),this.$form.off("keyup change",'input[type="text"], input[type="number"], textarea, select',{self:this},this._checkUpdates),this.$form.off("click",'input[type="radio"], input[type="checkbox"]',{self:this},this._checkUpdates),this.$form.off("ditty_input_wysiwyg_update",".ditty-input--wysiwyg",{self:this},this._checkUpdates),this.$form.off("ditty_field_update",".ditty-field__input",{self:this},this._checkUpdates),this.elmt._ditty_item_editor_panel=null}},$.fn.ditty_item_editor_panel=function(t){var e,s=arguments,a=!1;if(void 0===t||"object"==typeof t)return this.each((function(){this._ditty_item_editor_panel||(this._ditty_item_editor_panel=new i(this,t))}));if("string"==typeof t){if(this.each((function(){var i=this._ditty_item_editor_panel;if(!i)throw new Error("No Ditty_Item_Editor_Panel applied to this element.");"function"==typeof i[t]&&"_"!==t[0]?e=i[t].apply(i,[].slice.call(s,1)):a=!0})),a)throw new Error('No method "'+t+'" in Ditty_Item_Editor_Panel.');return void 0!==e?e:this}},$.ditty_item_editor_panel={},$.ditty_item_editor_panel.defaults=t}(jQuery),function($){"use strict";var t={editor:null},i=function(i,e){this.elmt=i,this.settings=$.extend({},t,$.ditty_displays_panel.defaults,e),this.$elmt=$(i),this.$list=$(i).find(".ditty-data-list__items"),this.$contents=$(i).find(".ditty-editor__panel__contents"),this.initDisplay=null,this._init()};i.prototype={_init:function(){this.$elmt.addClass("init"),this.$elmt.ditty_ui_data_list({filter:".ditty-display-panel__filter",item:".ditty-editor-display",itemSelector:"display_type"}),this.initDisplay=this.$list.data("active"),this._activateDisplay(this.$list.find("#ditty-editor-display--"+this.initDisplay)),this.$elmt.on("click",".ditty-data-list__item",{self:this},this._selectDisplay),this.$elmt.on("click",".ditty-data-list__item__edit",{self:this},this._editDisplay),this.$elmt.on("click",".ditty-data-list__item__clone",{self:this},this._cloneDisplay),this.$elmt.on("click",".ditty-data-list__item__delete",{self:this},this._deleteDisplay),this.settings.editor.$elmt.on("ditty_editor_saveDrafts",{self:this},this._saveDrafts)},_saveDrafts:function(t){var i=t.data.self;i.initDisplay=i.$list.find(".ditty-editor-display.active").data("display_id")},_activateDisplay:function(t){this.$list.find(".ditty-editor-display").removeClass("active"),t.addClass("active")},_initDitty:function(t,i,e){var s=this.settings.editor.ditty.$elmt;e.display=i,e.id=this.settings.editor.ditty.options("id"),e.items=this.settings.editor.ditty.options("items"),e.height=this.settings.editor.ditty.options("height"),this.settings.editor.ditty.destroy(),s["ditty_"+t](e),this.settings.editor.ditty=s["ditty_"+t]("options","ditty")},_selectDisplay:function(t){t.preventDefault();var i=t.data.self;if($(t.target).parent().is("a"))return!1;var e=$(t.target).is(".ditty-data-list__item")?$(t.target):$(t.target).parents(".ditty-data-list__item"),s=e.data("display_id"),a=e.data("display_type");if(e.hasClass("active"))return!1;i.settings.editor.updateStart(),dittyDraftUpdate(i,"post_meta","_ditty_display",s),i._activateDisplay(e);var d={action:"ditty_editor_select_display",display_id:s,draft_values:i.settings.editor.getDraftValues(),security:dittyVars.security};$.post(dittyVars.ajaxurl,d,(function(t){if(!t)return!1;i._initDitty(a,s,t),i.settings.editor.updateStop()}),"json")},_cloneDisplay:function(t){t.preventDefault();var i=t.data.self,e=($(t.target).is("a")?$(t.target):$(t.target).parent("a")).parents(".ditty-data-list__item"),s=e.data("display_id");i.settings.editor.updateStart();var a={action:"ditty_editor_display_clone",display_id:s,draft_values:i.settings.editor.getDraftValues(),security:dittyVars.security};$.post(dittyVars.ajaxurl,a,(function(t){if(t.editor_display){var s=$(t.editor_display);s.hide(),e.after(s),s.slideDown()}t.draft_id&&t.draft_data&&dittyDraftDisplayUpdate(i,t.draft_id,null,t.draft_data),i.settings.editor.updateStop()}),"json")},_deleteDisplay:function(t){t.preventDefault();var i=t.data.self,e=($(t.target).is("a")?$(t.target):$(t.target).parent("a")).parents(".ditty-data-list__item"),s=null,a=e.data("display_id");e.hasClass("active")&&(e.prev().length?s=e.prev():e.next().length&&(s=e.next())),e.slideUp((function(){$(this).remove()})),dittyDraftDisplayDelete(i,a),null!==s&&s.trigger("click")},_editDisplay:function(t){t.preventDefault();var i=t.data.self;i.$displayEdit=$(this).parents(".ditty-data-list__item");var e=($(t.target).is("a")?$(t.target):$(t.target).parent("a")).parents(".ditty-data-list__item"),s=e.data("display_id");i.settings.editor.updateStart(),e.addClass("editing");var a={action:"ditty_editor_display_fields",display_id:s,draft_values:i.settings.editor.getDraftValues(),security:dittyVars.security};$.post(dittyVars.ajaxurl,a,(function(t){if(t){var e='<div class="ditty-editor__panel ditty-editor__panel--displayEditor">'+t+"</div>";i.settings.editor.panelOptions("transition","slideLeft"),i.settings.editor.showPanel("display_editor",e)}}))},panelVisible:function(){this.$elmt.find(".ditty-data-list__item").removeClass("editing")},trigger:function(t,i){var e=[this.settings];i&&(e=i),this.$elmt.trigger("ditty_displays_panel_"+t,e),"function"==typeof this.settings[t]&&this.settings[t].apply(this.$elmt,e)},options:function(i,e){if("object"==typeof i)this.settings=$.extend({},t,$.ditty_displays_panel.defaults,i);else{if("string"!=typeof i)return this.settings;if(void 0===e)return this.settings[i];this.settings[i]=e}this.trigger("options_update")},destroy:function(){this.$elmt.removeClass("init"),this.$elmt.ditty_ui_data_list("destroy"),this.$elmt.off("click",".ditty-data-list__item",{self:this},this._selectDisplay),this.$elmt.off("click",".ditty-data-list__item__edit",{self:this},this._editDisplay),this.$elmt.off("click",".ditty-data-list__item__clone",{self:this},this._cloneDisplay),this.$elmt.off("click",".ditty-data-list__item__delete",{self:this},this._deleteDisplay),this.settings.editor.$elmt.off("ditty_editor_save_drafts",{self:this},this._saveDrafts),this.trigger("destroy"),this.elmt._ditty_displays_panel=null}},$.fn.ditty_displays_panel=function(t){var e,s=arguments,a=!1;if(void 0===t||"object"==typeof t)return this.each((function(){this._ditty_displays_panel||(this._ditty_displays_panel=new i(this,t))}));if("string"==typeof t){if(this.each((function(){var i=this._ditty_displays_panel;if(!i)throw new Error("No Ditty_Displays_Panel applied to this element.");"function"==typeof i[t]&&"_"!==t[0]?e=i[t].apply(i,[].slice.call(s,1)):a=!0})),a)throw new Error('No method "'+t+'" in Ditty_Displays_Panel.');return void 0!==e?e:this}},$.ditty_displays_panel={},$.ditty_displays_panel.defaults=t}(jQuery),function($){"use strict";var t={editor:null},i=function(i,e){this.elmt=i,this.settings=$.extend({},t,$.ditty_display_editor_panel.defaults,e),this.$elmt=$(i),this.$form=this.$elmt.find(".ditty-editor-options"),this.$back=this.$elmt.find(".ditty-editor-options__back"),this.$optionsTitle=this.$elmt.find(".ditty-editor-options__title"),this.$importExportField=this.$elmt.find(".ditty-editor__import-export__field"),this.$importExportUpdate=this.$elmt.find(".ditty-editor__import-export__update"),this.displayTitle=null,this.displayId=this.settings.editor.ditty.options("display"),this.displayType=this.settings.editor.ditty.options("type"),this.$editorDisplay=this.settings.editor.$panels.find(".ditty-editor__panel--displays").find(".ditty-data-list__item.editing"),this.$editorDisplayTitle=this.$editorDisplay.find(".ditty-data-list__item__label"),this.displayOptions=null,this.initData=null,this.afterUpdateAction="",this._init()};i.prototype={_init:function(){var t,i=this;this.initData=this.$form.serialize(),this.settings.editor.initFields(this.$elmt),t=this.settings.editor.ditty.$elmt["ditty_"+this.displayType]("options"),this.displayOptions=$.extend({},t),this.displayTitle=this.$optionsTitle.val(),this.$importExportUpdate.on("click",{self:this},this._importUpdate),this.settings.editor.$elmt.on("ditty_editor_add_drafts",{self:this},this._addDrafts),this.settings.editor.$elmt.on("ditty_editor_save_drafts",{self:this},this._saveDrafts),this.$form.on("submit",{self:this},this._submitForm),this.$back.on("click",{self:this},this._backClick),this.$elmt.on("change",'input[type="text"], input[type="number"]',{self:this},this._textfieldListeners),this.$form.on("click",'input[type="radio"]',{self:this},this._radioListeners),this.$form.on("click",'input[type="checkbox"]',{self:this},this._checkboxListeners),this.$form.on("change","select",{self:this},this._selectListeners),this.$form.on("ditty_field_clone_update",{self:this},this._cloneListeners),setTimeout((function(){i.trigger("init",[i])}),1)},_showDisplayList:function(){this.settings.editor.$panels.ditty_slider("options","transition","slideRight"),this.settings.editor.$panels.ditty_slider("showSlideById","displays")},_checkUpdates:function(){this.$form.serialize()!==this.initData?(this.settings.editor.addUpdate("displaySettings",this.displayId),this.settings.editor.delayedSubmitEnable()):this.settings.editor.removeUpdate("displaySettings",this.displayId)},_addDrafts:function(t){var i=t.data.self;i.$form.serialize()!==i.initData&&i.$form.trigger("submit")},_saveDrafts:function(t){var i=t.data.self;i.$form.serialize()!==i.initData&&(i.afterUpdateAction="save",i.$form.trigger("submit"))},_backClick:function(t){t.preventDefault();var i=t.data.self;i.$form.serialize()===i.initData?i._showDisplayList():(i.afterUpdateAction="return",i.$form.trigger("submit"))},_submitForm:function(t){t.preventDefault();var i=t.data.self;i.settings.editor.updateStart();var e={action:"ditty_editor_display_update",display_id:i.displayId,draft_values:i.settings.editor.getDraftValues(),security:dittyVars.security};i.$form.ajaxSubmit({url:dittyVars.ajaxurl,type:"post",dataType:"json",data:e,success:function(t){i.initData=i.$form.serialize(),t.draft_id&&t.draft_label&&(i.displayTitle=t.draft_label,i.$editorDisplayTitle.text(t.draft_label),dittyDraftDisplayUpdate(i,t.draft_id,"label",t.draft_label)),t.draft_id&&t.draft_settings&&(i.displayOptions=t.draft_settings,dittyDraftDisplayUpdate(i,t.draft_id,"settings",t.draft_settings)),t.draft_settings_json&&i.$importExportField.length&&i.$importExportField.val(t.draft_settings_json),i.settings.editor.updateStop(),i.settings.editor.delayedSubmitDisable(),"return"===i.afterUpdateAction&&i._showDisplayList(),"save"===i.afterUpdateAction&&i.settings.editor.saveDitty(),i.afterUpdateAction=""}})},_importUpdate:function(t){t.preventDefault()},_cloneListeners:function(t,i,e){var s=t.data.self;$(t.target);s.settings.editor.ditty.options(e,i)},_textfieldListeners:function(t){var i=t.data.self,e=$(t.target),s=e.attr("name"),a=e.parents(".ditty-input--spacing__group, .ditty-input--radius__group");if(a.length){var d="",n={};a.find("input").each((function(){s=$(this).attr("name"),d=(d=s.split("["))[0];var t=s.match(/\[(.*)\]/);n[t[1]]=$(this).val()})),i.settings.editor.ditty.options(d,n)}else i.settings.editor.ditty.options(s,e.val());i._checkUpdates()},_radioListeners:function(t){var i=t.data.self,e=$(t.target),s=e.val(),a=e.attr("name");i.settings.editor.ditty.options(a,s),i._checkUpdates()},_checkboxListeners:function(t){var i=t.data.self,e=$(t.target),s=!!e.is(":checked")&&$(this).val(),a=e.attr("name");i.settings.editor.ditty.options(a,s),i._checkUpdates()},_selectListeners:function(t){var i=t.data.self,e=$(t.target),s=e.val(),a=e.attr("name");i.settings.editor.ditty.options(a,s),i._checkUpdates()},_options:function(t){return this.settings[t]},trigger:function(t,i){var e=[this.settings];i&&(e=i),this.$elmt.trigger("ditty_display_editor_panel_"+t,e),"function"==typeof this.settings[t]&&this.settings[t].apply(this.$elmt,e)},options:function(i,e){if("object"==typeof i)this.settings=$.extend({},t,$.ditty_display_editor_panel.defaults,i);else{if("string"!=typeof i)return this.settings;if(void 0===e)return this.settings[i];this.settings[i]=e}this.trigger("options_update")},destroy:function(){this.trigger("destroy",[this]),this.$importExportUpdate.off("click",{this:this},this._importUpdate),this.settings.editor.$elmt.off("ditty_editor_add_drafts",{self:this},this._addDrafts),this.settings.editor.$elmt.off("ditty_editor_save_drafts",{self:this},this._saveDrafts),this.$form.off("submit",{this:this},this._submitForm),this.$back.off("click",{this:this},this._cancel_click),this.$elmt.off("change",'input[type="text"], input[type="number"]',{self:this},this._textfieldListeners),this.$form.off("click",'input[type="radio"]',{self:this},this._radioListeners),this.$form.off("click",'input[type="checkbox"]',{self:this},this._checkboxListeners),this.$form.off("change","select",{self:this},this._selectListeners),this.$form.off("ditty_field_clone_update",{self:this},this._cloneListeners),this.elmt._ditty_display_editor_panel=null}},$.fn.ditty_display_editor_panel=function(t){var e,s=arguments,a=!1;if(void 0===t||"object"==typeof t)return this.each((function(){this._ditty_display_editor_panel||(this._ditty_display_editor_panel=new i(this,t))}));if("string"==typeof t){if(this.each((function(){var i=this._ditty_display_editor_panel;if(!i)throw new Error("No Ditty_Display_Editor_Panel applied to this element.");"function"==typeof i[t]&&"_"!==t[0]?e=i[t].apply(i,[].slice.call(s,1)):a=!0})),a)throw new Error('No method "'+t+'" in Ditty_Display_Editor_Panel.');return void 0!==e?e:this}},$.ditty_display_editor_panel={},$.ditty_display_editor_panel.defaults=t}(jQuery),function($){"use strict";var t={editor:null},i=function(i,e){this.elmt=i,this.settings=$.extend({},t,$.ditty_layout_variations_panel.defaults,e),this.$elmt=$(i),this.$back=this.$elmt.find(".ditty-editor-options__back"),this.$list=$(i).find(".ditty-data-list__items"),this.$editorItem=dittyVars.editor.currentItem,this.editorItemLabel=this.$editorItem.find(".ditty-data-list__item__label").text(),this.editorDittyId=this.$editorItem.data("ditty_id"),this.editorItemId=this.$editorItem.data("item_id"),this.editorItemType=this.$editorItem.data("item_type"),this.editorItemValue=this.$editorItem.data("item_value"),this._init()};i.prototype={_init:function(){this.$elmt.addClass("init"),this.$back.on("click",{self:this},this._backClick),this.$elmt.on("click",".ditty-layout-variation__change",{self:this},this._changeTemplate),this.$elmt.on("click",".ditty-layout-variation__edit_html",{self:this,editType:"html"},this._editLayout),this.$elmt.on("click",".ditty-layout-variation__edit_css",{self:this,editType:"css"},this._editLayout),$("body").on("ditty_editor_save_ditty_response",{self:this},this._dittyEditorSaveResponse)},_showItemList:function(){this.settings.editor.$panels.ditty_slider("options","transition","slideRight"),this.settings.editor.$panels.ditty_slider("showSlideById","items")},_backClick:function(t){t.preventDefault(),t.data.self._showItemList()},_dittyEditorSaveResponse:function(t,i){t.data.self;i.ditty_new_layout_ids&&$.each(i.ditty_new_layout_ids,(function(t,i){var e=$('.ditty-layout-variation[data-layout_id="'+t+'"]');e.length&&e.attr("data-layout_id",i).data("layout_id",i)}))},_changeTemplate:function(t){t.preventDefault();var i=t.data.self,e=($(t.target).is("a")?$(t.target):$(t.target).parent("a")).parents(".ditty-data-list__item"),s=e.data("layout_id"),a=e.data("layout_variation_id"),d=e.data("layout_variation_label");dittyVars.editor.currentLayoutVariation=e,i.settings.editor.updateStart(),e.addClass("editing");var n={action:"ditty_editor_layouts",ditty_id:i.editorDittyId,item_type:i.editorItemType,variation_id:a,variation_label:d,layout_id:s,draft_values:i.settings.editor.getDraftValues(),security:dittyVars.security};$.post(dittyVars.ajaxurl,n,(function(t){if(t){var e='<div class="ditty-editor__panel ditty-editor__panel--layouts">'+t+"</div>";i.settings.editor.panelOptions("transition","slideLeft"),i.settings.editor.showPanel("layouts",e)}}))},_editLayout:function(t){t.preventDefault();var i=t.data.self,e=t.data.editType,s=($(t.target).is("a")?$(t.target):$(t.target).parent("a")).parents(".ditty-data-list__item"),a=s.data("layout_id");dittyVars.editor.currentLayoutVariation=s,i.settings.editor.updateStart(),i.$list.find(".ditty-data-list__item").removeClass("editing"),s.addClass("editing");var d=[],n=i.settings.editor.ditty.options("items");$.each(n,(function(t,i){d.push(i.uniqId)}));var r={action:"ditty_editor_layout_fields",layout_id:a,item_type:i.editorItemType,item_value:i.editorItemValue,ditty_id:i.editorDittyId,item_id:i.editorItemId,item_ids:d,edit_type:e,draft_values:i.settings.editor.getDraftValues(),security:dittyVars.security};$.post(dittyVars.ajaxurl,r,(function(t){if(t){var s="layout_"+e+"_editor",a='<div class="ditty-editor__panel ditty-editor__panel--'+s+'">'+t.form+"</div>";i.settings.editor.panelOptions("transition","slideLeft"),i.settings.editor.showPanel(s,a)}}),"json")},panelVisible:function(){this.$list.find(".ditty-layout-variation").removeClass("editing")},trigger:function(t,i){var e=[this.settings];i&&(e=i),this.$elmt.trigger("ditty_layout_variations_panel_"+t,e),"function"==typeof this.settings[t]&&this.settings[t].apply(this.$elmt,e)},options:function(i,e){if("object"==typeof i)this.settings=$.extend({},t,$.ditty_layout_variations_panel.defaults,i);else{if("string"!=typeof i)return this.settings;if(void 0===e)return this.settings[i];this.settings[i]=e}this.trigger("options_update")},destroy:function(){this.$elmt.removeClass("init"),this.$back.off("click",{self:this},this._backClick),this.$elmt.off("click",".ditty-layout-variation__change",{self:this},this._changeTemplate),this.$elmt.off("click",".ditty-layout-variation__edit_html",{self:this,editType:"html"},this._editLayout),this.$elmt.off("click",".ditty-layout-variation__edit_css",{self:this,editType:"css"},this._editLayout),$("body").off("ditty_editor_save_ditty_response",{self:this},this._dittyEditorSaveResponse),this.elmt._ditty_layout_variations_panel=null}},$.fn.ditty_layout_variations_panel=function(t){var e,s=arguments,a=!1;if(void 0===t||"object"==typeof t)return this.each((function(){this._ditty_layout_variations_panel||(this._ditty_layout_variations_panel=new i(this,t))}));if("string"==typeof t){if(this.each((function(){var i=this._ditty_layout_variations_panel;if(!i)throw new Error("No Ditty_Layout_Variations_Panel applied to this element.");"function"==typeof i[t]&&"_"!==t[0]?e=i[t].apply(i,[].slice.call(s,1)):a=!0})),a)throw new Error('No method "'+t+'" in Ditty_Layout_Variations_Panel.');return void 0!==e?e:this}},$.ditty_layout_variations_panel={},$.ditty_layout_variations_panel.defaults=t}(jQuery),function($){"use strict";var t={editor:null},i=function(i,e){this.elmt=i,this.settings=$.extend({},t,$.ditty_layouts_panel.defaults,e),this.$elmt=$(i),this.$back=this.$elmt.find(".ditty-editor-options__back"),this.$list=$(i).find(".ditty-data-list__items"),this.$editorItem=dittyVars.editor.currentItem,this.editorDittyId=this.$editorItem.data("ditty_id"),this.editorItemId=this.$editorItem.data("item_id"),this.editorItemtype=this.$editorItem.data("item_type"),this.editorItemValue=this.$editorItem.data("item_value"),this.$editorVariation=dittyVars.editor.currentLayoutVariation,this.editorVariationId=this.$editorVariation.data("layout_variation_id"),this.editorLayoutId=this.$editorVariation.data("layout_id"),this._init()};i.prototype={_init:function(){this.$elmt.addClass("init"),this.$back.on("click",{self:this},this._backClick),this.$elmt.on("click",".ditty-data-list__item",{self:this},this._selectLayout),this.$elmt.on("click",".ditty-data-list__item__edit_html",{self:this,editType:"html"},this._editLayout),this.$elmt.on("click",".ditty-data-list__item__edit_css",{self:this,editType:"css"},this._editLayout),this.$elmt.on("click",".ditty-data-list__item__clone",{self:this},this._cloneLayout),this.$elmt.on("click",".ditty-data-list__item__delete",{self:this},this._deleteLayout),this.$elmt.on("click",".ditty-data-list__item__save",{self:this},this._saveLayout),this.$list.on("click",".ditty-editor-layout > a",{self:this},this._actionClick),$("body").on("ditty_editor_save_ditty_response",{self:this},this._dittyEditorSaveResponse),this._activateLayout(this.$list.find("#ditty-editor-layout--"+this.editorLayoutId))},_activateLayout:function(t){this.$list.find(".ditty-editor-layout").removeClass("active"),t.addClass("active")},_showVariationsList:function(){this.settings.editor.$panels.ditty_slider("options","transition","slideRight"),this.settings.editor.$panels.ditty_slider("showSlideById","layout_variations")},_backClick:function(t){t.preventDefault(),t.data.self._showVariationsList()},_dittyEditorSaveResponse:function(t,i){t.data.self;i.ditty_new_layout_ids&&$.each(i.ditty_new_layout_ids,(function(t,i){var e=$("#ditty-editor-layout--"+t);e.length&&(e.attr("id","ditty-editor-layout--"+i),e.attr("data-layout_id",i).data("layout_id",i))}))},_selectLayout:function(t){t.preventDefault();var i=t.data.self;if($(t.target).parent().is("a"))return!1;var e=$(t.target).is(".ditty-data-list__item")?$(t.target):$(t.target).parents(".ditty-data-list__item"),s=e.data("layout_id"),a=e.data("layout_version"),d=i.$editorItem.data("layout_value");if(e.hasClass("active"))return!1;$.each(d,(function(t){i.editorVariationId===t&&(d[t]=String(s))})),i.settings.editor.updateStart(),dittyDraftItemUpdateData(i,i.editorItemId,"layout_value",d),i._activateLayout(e);var n={action:"ditty_editor_select_layout",layout_id:s,item_id:i.editorItemId,ditty_id:i.editorDittyId,draft_values:i.settings.editor.getDraftValues(),security:dittyVars.security};$.post(dittyVars.ajaxurl,n,(function(t){if(i.settings.editor.updateStop(),t.display_items&&i.settings.editor.ditty.updateItems(t.display_items,i.editorItemId),t.editor_item){var e=$(t.editor_item);i.$editorItem.replaceWith(e)}i.$editorItem.attr("data-layout_value",d).data("layout_value",d),i.$editorVariation.attr("data-layout_id",s).data("layout_id",s),i.$editorVariation.find(".ditty-layout-variation__template > span").text(t.layout_label),a?i.$editorVariation.find(".ditty-layout-variation__template > small").text("("+a+")"):i.$editorVariation.find(".ditty-layout-variation__template > small").text("")}),"json")},_cloneLayout:function(t){t.preventDefault();var i=t.data.self,e=($(t.target).is("a")?$(t.target):$(t.target).parent("a")).parents(".ditty-data-list__item"),s=e.data("layout_id");i.settings.editor.updateStart();var a={action:"ditty_editor_layout_clone",
3
+ layout_id:s,draft_values:i.settings.editor.getDraftValues(),security:dittyVars.security};$.post(dittyVars.ajaxurl,a,(function(t){if(t.editor_layout){var s=$(t.editor_layout);s.hide(),e.after(s),s.slideDown()}t.draft_id&&t.draft_meta&&dittyDraftLayoutUpdate(i,t.draft_id,null,t.draft_meta),i.settings.editor.updateStop()}),"json")},_saveLayout:function(t){t.preventDefault();t.data.self,($(t.target).is("a")?$(t.target):$(t.target).parent("a")).parents(".ditty-data-list__item").data("layout_id")},_deleteLayout:function(t){t.preventDefault();var i=t.data.self,e=($(t.target).is("a")?$(t.target):$(t.target).parent("a")).parents(".ditty-data-list__item"),s=null,a=e.data("layout_id");e.hasClass("active")&&(e.prev().length?s=e.prev():e.next().length&&(s=e.next())),e.slideUp((function(){$(this).remove()})),dittyDraftLayoutDelete(i,a),null!==s&&s.trigger("click")},_editLayout:function(t){t.preventDefault();var i=t.data.self,e=t.data.editType,s=($(t.target).is("a")?$(t.target):$(t.target).parent("a")).parents(".ditty-data-list__item"),a=s.data("layout_id");i.settings.editor.updateStart(),i.$list.find(".ditty-data-list__item").removeClass("editing"),s.addClass("editing");var d={action:"ditty_editor_layout_fields",layout_id:a,item_id:i.editorItemId,item_type:i.editorItemtype,item_value:i.editorItemValue,edit_type:e,draft_values:i.settings.editor.getDraftValues(),security:dittyVars.security};$.post(dittyVars.ajaxurl,d,(function(t){if(t){var s="layout_"+e+"_editor",a='<div class="ditty-editor__panel ditty-editor__panel--'+s+'">'+t.form+"</div>";i.settings.editor.panelOptions("transition","slideLeft"),i.settings.editor.showPanel(s,a)}}),"json")},_actionClick:function(t){t.preventDefault();var i=t.data.self,e=$(t.target).is("a")?$(t.target):$(t.target).parent("a"),s=e.parents(".ditty-data-list__item"),a=s.data("layout_id");dittyVars.editor.currentLayout=s,$("body").trigger("ditty_editor_layout_action_click",[e,s,a,i.editorDittyId,i.settings.editor])},trigger:function(t,i){var e=[this.settings];i&&(e=i),this.$elmt.trigger("ditty_layouts_panel_"+t,e),"function"==typeof this.settings[t]&&this.settings[t].apply(this.$elmt,e)},options:function(i,e){if("object"==typeof i)this.settings=$.extend({},t,$.ditty_layouts_panel.defaults,i);else{if("string"!=typeof i)return this.settings;if(void 0===e)return this.settings[i];this.settings[i]=e}this.trigger("options_update")},destroy:function(){this.$elmt.removeClass("init"),this.$back.off("click",{self:this},this._backClick),this.$elmt.off("click",".ditty-data-list__item",{self:this},this._selectLayout),this.$elmt.off("click",".ditty-data-list__item__edit_html",{self:this,editType:"html"},this._editLayout),this.$elmt.off("click",".ditty-data-list__item__edit_css",{self:this,editType:"css"},this._editLayout),this.$elmt.off("click",".ditty-data-list__item__clone",{self:this},this._cloneLayout),this.$elmt.off("click",".ditty-data-list__item__delete",{self:this},this._deleteLayout),this.$elmt.off("click",".ditty-data-list__item__save",{self:this},this._saveLayout),this.$list.off("click",".ditty-editor-layout > a",{self:this},this._actionClick),$("body").off("ditty_editor_save_ditty_response",{self:this},this._dittyEditorSaveResponse),this.elmt._ditty_layouts_panel=null}},$.fn.ditty_layouts_panel=function(t){var e,s=arguments,a=!1;if(void 0===t||"object"==typeof t)return this.each((function(){this._ditty_layouts_panel||(this._ditty_layouts_panel=new i(this,t))}));if("string"==typeof t){if(this.each((function(){var i=this._ditty_layouts_panel;if(!i)throw new Error("No Ditty_Layouts_Panel applied to this element.");"function"==typeof i[t]&&"_"!==t[0]?e=i[t].apply(i,[].slice.call(s,1)):a=!0})),a)throw new Error('No method "'+t+'" in Ditty_Layouts_Panel.');return void 0!==e?e:this}},$.ditty_layouts_panel={},$.ditty_layouts_panel.defaults=t}(jQuery),function($){"use strict";var t={editor:null,prevPanel:""},i=function(i,e){this.elmt=i,this.settings=$.extend({},t,$.ditty_layout_html_editor_panel.defaults,e),this.$elmt=$(i),this.$form=this.$elmt.find(".ditty-editor-options"),this.$textarea=this.$elmt.find(".ditty-editor-options__code"),this.$back=this.$elmt.find(".ditty-editor-options__back"),this.$preview=this.$elmt.find(".ditty-editor-options__preview"),this.$editCss=this.$elmt.find(".ditty-editor-options__edit-css"),this.$title=this.$elmt.find(".ditty-editor-options__title"),this.$tags=this.$elmt.find(".ditty-editor-options__tags"),this.itemType=this.$form.data("item_type"),this.layoutId=this.$form.data("layout_id"),this.$editorItem=dittyVars.editor.currentItem,this.$editorLayout=dittyVars.editor.currentLayout,this.$editorLayoutTitle=!!this.$editorLayout&&this.$editorLayout.find(".ditty-data-list__item__label"),this.$editorLayoutVariation=dittyVars.editor.currentLayoutVariation,this.$editorLayoutVariationTitle=this.$editorLayoutVariation.find(".ditty-layout-variation__template span"),this.editorDittyId=this.$editorItem.data("ditty_id"),this.editorItemId=this.$editorItem.data("item_id"),this.editorItemType=this.$editorItem.data("item_type"),this.editorItemValue=this.$editorItem.data("item_value"),this.codeEditor=null,this.codeHasUpdates=!1,this.initData=null,this.afterUpdateAction="",this._init()};i.prototype={_init:function(){this.initData=this.$form.serialize(),this._initEditor(),this.$back.on("click",{self:this},this._backClick),this.$preview.on("click",{self:this},this._previewClick),this.$editCss.on("click",{self:this},this._editCss),this.$form.on("submit",{self:this},this._submitForm),this.$form.on("click",".ditty-editor-options__tag",{self:this},this._insertTag),this.$title.on("keyup",{self:this},this._titleUpdate),this.settings.editor.$elmt.on("ditty_editor_add_drafts",{self:this},this._addDrafts),this.settings.editor.$elmt.on("ditty_editor_save_drafts",{self:this},this._saveDrafts)},_showPrevPanel:function(){this.settings.editor.$panels.ditty_slider("options","transition","slideRight"),this.settings.editor.$panels.ditty_slider("showSlideById",this.settings.prevPanel)},_titleUpdate:function(t){var i=t.data.self;i.settings.editor.addUpdate("layoutUpdate",i.layoutId)},_enablePreviewButton:function(){this.$preview.addClass("ditty-has-updates")},_disablePreviewButton:function(){this.$preview.removeClass("ditty-has-updates"),this.$preview.children("i").attr("class",this.$preview.children("i").data("class"))},_getLayoutItems:function(){var t=this.settings.editor.ditty.options("items"),i=[];return $.each(t,(function(t,e){String(e.layoutId)===String(this.layoutId)&&i.push(e.id)})),i},_addDrafts:function(t){var i=t.data.self;i.codeEditor.codemirror.save(),(i.$form.serialize()!==i.initData||i.codeHasUpdates)&&i.$form.trigger("submit")},_saveDrafts:function(t){var i=t.data.self;i.codeEditor.codemirror.save(),(i.$form.serialize()!==i.initData||i.codeHasUpdates)&&(i.afterUpdateAction="save",i.$form.trigger("submit"))},_backClick:function(t){t.preventDefault();var i=t.data.self;i.codeEditor.codemirror.save(),i.$form.serialize()!==i.initData||i.codeHasUpdates?(i.afterUpdateAction="return",i.$form.trigger("submit")):i._showPrevPanel()},_previewClick:function(t){t.preventDefault();var i=t.data.self;i.codeEditor.codemirror.save(),(i.$form.serialize()!==i.initData||i.codeHasUpdates)&&(i.$preview.children("i").attr("class",dittyVars.updateIcon),i.$form.trigger("submit"))},_editCss:function(t){t.preventDefault();var i=t.data.self,e="layout_css_editor";if(i.settings.editor.updateStart(),i.codeEditor.codemirror.save(),(i.$form.serialize()!==i.initData||i.codeHasUpdates)&&(i.$preview.children("i").attr("class",dittyVars.updateIcon),i.$form.trigger("submit")),i.settings.editor.panelExists(e))i.settings.editor.$elmt.find(".ditty-editor__panel--layout_css_editor input.ditty-editor-options__title").val(i.$title.val()),i.settings.editor.panelOptions("transition","fade"),i.settings.editor.showPanel(e);else{var s={action:"ditty_editor_layout_fields",layout_id:i.layoutId,layout_title:i.$title.val(),ditty_id:i.editorDittyId,item_id:i.editorItemId,item_type:i.editorItemType,item_value:i.editorItemValue,edit_type:"css",draft_values:i.settings.editor.getDraftValues(),security:dittyVars.security};$.post(dittyVars.ajaxurl,s,(function(t){if(t){var s='<div class="ditty-editor__panel ditty-editor__panel--'+e+'">'+t.form+"</div>";i.settings.editor.panelOptions("transition","fade"),i.settings.editor.showPanel(e,s)}}),"json")}},_submitForm:function(t){t.preventDefault();var i=t.data.self,e=i.layoutId,s=i.itemType,a=i._getLayoutItems();if(i.$form.hasClass("ditty-editor-has-errors"))return!1;i.codeEditor.codemirror.save(),i.settings.editor.updateStart();var d={action:"ditty_editor_layout_update",layout_id:e,item_type:s,item_ids:a,edit_type:"html",draft_values:i.settings.editor.getDraftValues(),security:dittyVars.security};i.$form.ajaxSubmit({url:dittyVars.ajaxurl,type:"post",dataType:"json",data:d,success:function(t){i.initData=i.$form.serialize(),i._disablePreviewButton(),t.label&&(i.$editorLayoutTitle&&i.$editorLayoutTitle.html(t.label),i.$editorLayoutVariationTitle.html(t.label)),i.$editorLayoutTitle&&i.$editorLayoutTitle.find(".ditty-layout-version").remove(),i.$editorLayoutVariationTitle&&i.$editorLayoutVariationTitle.find(".ditty-layout-version").remove(),t.display_items&&i.settings.editor.ditty.updateItems(t.display_items,!1,!1,!0),t.draft_id&&t.draft_meta&&dittyDraftLayoutUpdate(i,t.draft_id,null,t.draft_meta),i.codeHasUpdates=!1,i.settings.editor.updateStop(),i.settings.editor.delayedSubmitDisable(),"return"===i.afterUpdateAction&&i._showPrevPanel(),"save"===i.afterUpdateAction&&i.settings.editor.saveDitty({return_items:0}),i.afterUpdateAction=""}})},_initEditor:function(){var t=this,i=wp.codeEditor.defaultSettings?_.clone(wp.codeEditor.defaultSettings):{};i.codemirror=_.extend({},i.codemirror,{indentUnit:2,tabSize:2}),this.codeEditor=wp.codeEditor.initialize(this.$textarea[0],i),this.codeEditor.codemirror.on("change",(function(){t.codeEditor.codemirror.save(),t.settings.editor.addUpdate("layout_html_update",t.layoutId),t.codeHasUpdates=!0,t._enablePreviewButton(),t.settings.editor.delayedSubmitEnable()}))},_insertTag:function(t){var i=t.data.self,e=$(t.target),s=e.text(),a=e.data("atts"),d=i.codeEditor.codemirror.getCursor();if(t.shiftKey&&a){var n="",r=s.length-1;$.each(a,(function(t,i){n+=" "+t+'="'+i.toString()+'"'})),s=s.substring(0,r)+n+s.substring(r)}i.codeEditor.codemirror.replaceRange(s,d),d.ch=d.ch+s.length,i.codeEditor.codemirror.setCursor(d)},_options:function(t){return this.settings[t]},trigger:function(t,i){var e=[this.settings];i&&(e=i),this.$elmt.trigger("ditty_layout_html_editor_panel_"+t,e),"function"==typeof this.settings[t]&&this.settings[t].apply(this.$elmt,e)},options:function(i,e){if("object"==typeof i)this.settings=$.extend({},t,$.ditty_layout_html_editor_panel.defaults,i);else{if("string"!=typeof i)return this.settings;if(void 0===e)return this.settings[i];this.settings[i]=e}this.trigger("options_update")},destroy:function(){this.$back.off("click",{self:this},this._backClick),this.$preview.off("click",{self:this},this._previewClick),this.$editCss.off("click",{self:this},this._editCss),this.$form.off("submit",{self:this},this._submitForm),this.$form.off("click",".ditty-editor-options__tag",{self:this},this._insertTag),this.$title.off("keyup",{self:this},this._titleUpdate),this.settings.editor.$elmt.off("ditty_editor_add_drafts",{self:this},this._addDrafts),this.settings.editor.$elmt.off("ditty_editor_save_drafts",{self:this},this._saveDrafts),this.codeEditor.codemirror.off("change"),this.codeEditor.codemirror.toTextArea(),this.elmt._ditty_layout_html_editor_panel=null}},$.fn.ditty_layout_html_editor_panel=function(t){var e,s=arguments,a=!1;if(void 0===t||"object"==typeof t)return this.each((function(){this._ditty_layout_html_editor_panel||(this._ditty_layout_html_editor_panel=new i(this,t))}));if("string"==typeof t){if(this.each((function(){var i=this._ditty_layout_html_editor_panel;if(!i)throw new Error("No Ditty_Layout_Html_Editor_Panel applied to this element.");"function"==typeof i[t]&&"_"!==t[0]?e=i[t].apply(i,[].slice.call(s,1)):a=!0})),a)throw new Error('No method "'+t+'" in Ditty_Layout_Html_Editor_Panel.');return void 0!==e?e:this}},$.ditty_layout_html_editor_panel={},$.ditty_layout_html_editor_panel.defaults=t}(jQuery),function($){"use strict";var t={editor:null,prevPanel:""},i=function(i,e){this.elmt=i,this.settings=$.extend({},t,$.ditty_layout_css_editor_panel.defaults,e),this.$elmt=$(i),this.$form=this.$elmt.find(".ditty-editor-options"),this.$textarea=this.$elmt.find(".ditty-editor-options__code"),this.$back=this.$elmt.find(".ditty-editor-options__back"),this.$preview=this.$elmt.find(".ditty-editor-options__preview"),this.$editHtml=this.$elmt.find(".ditty-editor-options__edit-html"),this.$title=this.$elmt.find(".ditty-editor-options__title"),this.$body=this.$elmt.find(".ditty-editor-options__body"),this.$tags=this.$elmt.find(".ditty-editor-options__tags"),this.itemType=this.$form.data("item_type"),this.layoutId=this.$form.data("layout_id"),this.$editorItem=dittyVars.editor.currentItem,this.$editorLayout=dittyVars.editor.currentLayout,this.$editorLayoutTitle=!!this.$editorLayout&&this.$editorLayout.find(".ditty-data-list__item__label"),this.$editorLayoutVariation=dittyVars.editor.currentLayoutVariation,this.$editorLayoutVariationTitle=this.$editorLayoutVariation.find(".ditty-layout-variation__template span"),this.editorDittyId=this.$editorItem.data("ditty_id"),this.editorItemId=this.$editorItem.data("item_id"),this.editorItemType=this.$editorItem.data("item_type"),this.editorItemValue=this.$editorItem.data("item_value"),this.itemSelector="",this.codeEditor=null,this.codeHasUpdates=!1,this.initData=null,this.afterUpdateAction="",this._init()};i.prototype={_init:function(){this.initData=this.$form.serialize(),this._setCssSelector(),this._initEditor(),this.$back.on("click",{self:this},this._backClick),this.$preview.on("click",{self:this},this._previewClick),this.$editHtml.on("click",{self:this},this._editHtml),this.$form.on("submit",{self:this},this._submitForm),this.$form.on("click",".ditty-editor-options__tag",{self:this},this._insertTag),this.$title.on("keyup",{self:this},this._titleUpdate),this.$body.on("click",".ditty-editor-options__body__error",{self:this},this._removeErrorNotice),this.settings.editor.$elmt.on("ditty_editor_add_drafts",{self:this},this._addDrafts),this.settings.editor.$elmt.on("ditty_editor_save_drafts",{self:this},this._saveDrafts)},_setCssSelector:function(){dittyVars.isTickerPost?this.itemSelector="#poststuff .ditty-layout--"+this.layoutId:this.itemSelector=".ditty-layout--"+this.layoutId},_showPrevPanel:function(){this.settings.editor.$panels.ditty_slider("options","transition","slideRight"),this.settings.editor.$panels.ditty_slider("showSlideById",this.settings.prevPanel)},_titleUpdate:function(t){var i=t.data.self;i.settings.editor.addUpdate("layoutUpdate",i.layoutId)},_enablePreviewButton:function(){this.$preview.addClass("ditty-has-updates")},_disablePreviewButton:function(){this.$preview.removeClass("ditty-has-updates"),this.$preview.children("i").attr("class",this.$preview.children("i").data("class"))},_addDrafts:function(t){var i=t.data.self;i.codeEditor.codemirror.save(),(i.$form.serialize()!==i.initData||i.codeHasUpdates)&&i.$form.trigger("submit")},_saveDrafts:function(t){var i=t.data.self;i.codeEditor.codemirror.save(),(i.$form.serialize()!==i.initData||i.codeHasUpdates)&&(i.afterUpdateAction="save",i.$form.trigger("submit"))},_backClick:function(t){t.preventDefault();var i=t.data.self;i.codeEditor.codemirror.save(),i.$form.serialize()!==i.initData||i.codeHasUpdates?(i.afterUpdateAction="return",i.$form.trigger("submit")):i._showPrevPanel()},_previewClick:function(t){t.preventDefault();var i=t.data.self;i.codeEditor.codemirror.save(),(i.$form.serialize()!==i.initData||i.codeHasUpdates)&&(i.$preview.children("i").attr("class",dittyVars.updateIcon),i.$form.trigger("submit"))},_editHtml:function(t){t.preventDefault();var i=t.data.self,e="layout_html_editor";if(i.settings.editor.updateStart(),i.codeEditor.codemirror.save(),(i.$form.serialize()!==i.initData||i.codeHasUpdates)&&(i.$preview.children("i").attr("class",dittyVars.updateIcon),i.$form.trigger("submit")),i.settings.editor.panelExists(e))i.settings.editor.$elmt.find(".ditty-editor__panel--layout_html_editor input.ditty-editor-options__title").val(i.$title.val()),i.settings.editor.panelOptions("transition","fade"),i.settings.editor.showPanel(e);else{var s={action:"ditty_editor_layout_fields",layout_id:i.layoutId,layout_title:i.$title.val(),ditty_id:i.editorDittyId,item_id:i.editorItemId,item_type:i.editorItemType,item_value:i.editorItemValue,edit_type:"html",draft_values:i.settings.editor.getDraftValues(),security:dittyVars.security};$.post(dittyVars.ajaxurl,s,(function(t){if(t){var s='<div class="ditty-editor__panel ditty-editor__panel--'+e+'">'+t.form+"</div>";i.settings.editor.panelOptions("transition","fade"),i.settings.editor.showPanel(e,s)}}),"json")}},_showErrorNotice:function(){var t=$('<div class="ditty-editor-options__body__error"><span>'+dittyVars.strings.layout_css_error+"</span></div>");this.$body.append(t)},_removeErrorNotice:function(t){t.data.self.$body.find(".ditty-editor-options__body__error").remove()},_submitForm:function(t){t.preventDefault();var i=t.data.self,e=i.layoutId,s=i.itemType;if(i.$form.hasClass("ditty-editor-has-errors"))return!1;i.codeEditor.codemirror.save(),i.settings.editor.updateStart();var a={action:"ditty_editor_layout_update",layout_id:e,item_type:s,edit_type:"css",draft_values:i.settings.editor.getDraftValues(),security:dittyVars.security};i.$form.ajaxSubmit({url:dittyVars.ajaxurl,type:"post",dataType:"json",data:a,success:function(t){i.initData=i.$form.serialize(),i._disablePreviewButton(),t.label&&(i.$editorLayoutTitle&&i.$editorLayoutTitle.html(t.label),i.$editorLayoutVariationTitle.html(t.label)),i.$editorLayoutTitle&&i.$editorLayoutTitle.find(".ditty-layout-version").remove(),i.$editorLayoutVariationTitle&&i.$editorLayoutVariationTitle.find(".ditty-layout-version").remove(),t.code?dittyLayoutCss(t.code,i.layoutId,"update"):i._showErrorNotice(),t.draft_id&&t.draft_meta&&dittyDraftLayoutUpdate(i,t.draft_id,null,t.draft_meta),i.codeHasUpdates=!1,i.settings.editor.updateStop(),i.settings.editor.delayedSubmitDisable(),"return"===i.afterUpdateAction&&i._showPrevPanel(),"save"===i.afterUpdateAction&&i.settings.editor.saveDitty(),i.afterUpdateAction=""}})},_initEditor:function(){var t=this,i=wp.codeEditor.defaultSettings?_.clone(wp.codeEditor.defaultSettings):{},e=dittyVars.editor.ditty_layouts_sass?"sass":"css";i.codemirror=_.extend({},i.codemirror,{mode:e,indentUnit:2,tabSize:2}),this.codeEditor=wp.codeEditor.initialize(this.$textarea[0],i),this.codeEditor.codemirror.on("change",(function(){t.codeEditor.codemirror.save(),t.settings.editor.addUpdate("layoutCssUpdate",t.layoutId),t.codeHasUpdates=!0,t._enablePreviewButton(),t.settings.editor.delayedSubmitEnable()}))},_insertTag:function(t){var i=t.data.self,e=$(t.target).text(),s=i.codeEditor.codemirror.getCursor();i.codeEditor.codemirror.replaceRange(e,s),s.ch=s.ch+e.length,i.codeEditor.codemirror.setCursor(s)},_options:function(t){return this.settings[t]},trigger:function(t,i){var e=[this.settings];i&&(e=i),this.$elmt.trigger("ditty_layout_css_editor_panel_"+t,e),"function"==typeof this.settings[t]&&this.settings[t].apply(this.$elmt,e)},options:function(i,e){if("object"==typeof i)this.settings=$.extend({},t,$.ditty_layout_css_editor_panel.defaults,i);else{if("string"!=typeof i)return this.settings;if(void 0===e)return this.settings[i];this.settings[i]=e}this.trigger("options_update")},destroy:function(){this.$back.off("click",{self:this},this._backClick),this.$preview.off("click",{self:this},this._previewClick),this.$editHtml.off("click",{self:this},this._editHtml),this.$form.off("submit",{self:this},this._submitForm),this.$form.off("click",".ditty-editor-options__tag",{self:this},this._insertTag),this.$title.off("keyup",{self:this},this._titleUpdate),this.$body.off("click",".ditty-editor-options__body__error",{self:this},this._removeErrorNotice),this.settings.editor.$elmt.off("ditty_editor_add_drafts",{self:this},this._addDrafts),this.settings.editor.$elmt.off("ditty_editor_save_drafts",{self:this},this._saveDrafts),this.codeEditor.codemirror.off("change"),this.codeEditor.codemirror.toTextArea(),this.elmt._ditty_layout_css_editor_panel=null}},$.fn.ditty_layout_css_editor_panel=function(t){var e,s=arguments,a=!1;if(void 0===t||"object"==typeof t)return this.each((function(){this._ditty_layout_css_editor_panel||(this._ditty_layout_css_editor_panel=new i(this,t))}));if("string"==typeof t){if(this.each((function(){var i=this._ditty_layout_css_editor_panel;if(!i)throw new Error("No Ditty_Layout_Css_Editor_Panel applied to this element.");"function"==typeof i[t]&&"_"!==t[0]?e=i[t].apply(i,[].slice.call(s,1)):a=!0})),a)throw new Error('No method "'+t+'" in Ditty_Layout_Css_Editor_Panel.');return void 0!==e?e:this}},$.ditty_layout_css_editor_panel={},$.ditty_layout_css_editor_panel.defaults=t}(jQuery),jQuery((function($){!function(){"use strict";function t(t,i){0===parseInt(i)?t.hide():t.show()}function i(t,i){"none"===i?t.hide():t.show()}function e(t,i){"none"===i?t.hide():t.show()}$("#ditty-editor").on("ditty_display_editor_panel_init",".ditty-editor__panel--displayEditor",(function(s,a){if("list"===a.displayType){var d=a.$form,n=d.find(".ditty-field--perPage"),r=d.find(".ditty-field--arrows").siblings(),o=d.find(".ditty-field--bullets").siblings();t(n,d.find('input[name="paging"]:checked').val()),d.find('input[name="paging"]').on("change",(function(){t(n,$(this).val())})),i(r,d.find('select[name="arrows"]').val()),d.find('select[name="arrows"]').on("change",(function(){i(r,$(this).val())})),e(o,d.find('select[name="bullets"]').val()),d.find('select[name="bullets"]').on("change",(function(){e(o,$(this).val())}))}}))}()})),jQuery((function($){!function(){"use strict";function t(t,i){var e=t.find('input[name="direction"]:checked').val(),s=t.find(".ditty-field--minHeight"),a=t.find(".ditty-field--maxHeight"),d=t.find('input[name="minHeight"]');if("down"===e||"up"===e){if(s.show(),a.show(),""===d.val()){var n="300px";d.val(n),i.options("minHeight",n)}}else s.hide(),a.hide()}function i(t){"filled"===t.find('input[name="scrollInit"]:checked').val()?t.find(".ditty-field--scrollDelay").show():t.find(".ditty-field--scrollDelay").hide()}function e(t){"no"===t.find('input[name="cloneItems"]:checked').val()?t.find(".ditty-field--wrapItems").show():t.find(".ditty-field--wrapItems").hide()}function s(t){var i=t.find('select[name="titleDisplay"]').val(),e=t.find(".ditty-field--titleDisplay");"none"===i?e.siblings().hide():e.siblings().show()}function a(a,d){t(a,d),a.find('input[name="direction"]').on("click",(function(){t(a,d)})),i(a),a.find('input[name="scrollInit"]').on("click",(function(){i(a)})),e(a),a.find('input[name="cloneItems"]').on("click",(function(){e(a)})),s(a),a.find('select[name="titleDisplay"]').on("change",(function(){s(a)}))}$("#ditty-editor").on("ditty_display_editor_panel_init",".ditty-editor__panel--displayEditor",(function(t,i){if("ticker"===i.displayType){var e=i.$form,s=e.parents("#ditty-editor__settings")[0];a(e,s._ditty_editor.ditty)}})),$(".ditty-sandbox").on("ditty_sandbox_init",(function(t,i,e){"ticker"===i.displayType&&a($(this).find("form"),e)}))}()})),jQuery((function($){!function(){"use strict";function t(t){"full"===t.find('input[name="content_display"]:checked').val()?(t.find(".ditty-field--more_link").hide(),t.find(".ditty-field--excerpt_length").hide(),t.find(".ditty-field--more").hide(),t.find(".ditty-field--more_before").hide(),t.find(".ditty-field--more_after").hide()):(t.find(".ditty-field--more_link").show(),t.find(".ditty-field--excerpt_length").show(),t.find(".ditty-field--more").show(),t.find(".ditty-field--more_before").show(),t.find(".ditty-field--more_after").show())}$("#ditty-editor").on("ditty_item_editor_panel_init",".ditty-editor__panel--item_editor",(function(i,e){if("posts_feed"!==e.itemType&&"post"!==e.itemType)return!1;var s=e.$form;t(s),s.on("click",'input[name="content_display"]',(function(){t(s)}))}))}()}));
includes/js/editor/class-ditty-layouts-panel.js CHANGED
@@ -47,6 +47,7 @@
47
  this.$elmt.on( 'click', '.ditty-data-list__item__edit_css', { self: this, editType: 'css' }, this._editLayout );
48
  this.$elmt.on( 'click', '.ditty-data-list__item__clone', { self: this }, this._cloneLayout );
49
  this.$elmt.on( 'click', '.ditty-data-list__item__delete', { self: this }, this._deleteLayout );
 
50
  this.$list.on( 'click', '.ditty-editor-layout > a', { self: this }, this._actionClick );
51
  $( 'body' ).on( 'ditty_editor_save_ditty_response', { self: this }, this._dittyEditorSaveResponse );
52
 
@@ -230,6 +231,35 @@
230
  self.settings.editor.updateStop(); // Stop the update overlay
231
  }, 'json' );
232
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
233
 
234
  /**
235
  * Delete a layout
@@ -383,6 +413,7 @@
383
  this.$elmt.off( 'click', '.ditty-data-list__item__edit_css', { self: this, editType: 'css' }, this._editLayout );
384
  this.$elmt.off( 'click', '.ditty-data-list__item__clone', { self: this }, this._cloneLayout );
385
  this.$elmt.off( 'click', '.ditty-data-list__item__delete', { self: this }, this._deleteLayout );
 
386
  this.$list.off( 'click', '.ditty-editor-layout > a', { self: this }, this._actionClick );
387
  $( 'body' ).off( 'ditty_editor_save_ditty_response', { self: this }, this._dittyEditorSaveResponse );
388
 
47
  this.$elmt.on( 'click', '.ditty-data-list__item__edit_css', { self: this, editType: 'css' }, this._editLayout );
48
  this.$elmt.on( 'click', '.ditty-data-list__item__clone', { self: this }, this._cloneLayout );
49
  this.$elmt.on( 'click', '.ditty-data-list__item__delete', { self: this }, this._deleteLayout );
50
+ this.$elmt.on( 'click', '.ditty-data-list__item__save', { self: this }, this._saveLayout );
51
  this.$list.on( 'click', '.ditty-editor-layout > a', { self: this }, this._actionClick );
52
  $( 'body' ).on( 'ditty_editor_save_ditty_response', { self: this }, this._dittyEditorSaveResponse );
53
 
231
  self.settings.editor.updateStop(); // Stop the update overlay
232
  }, 'json' );
233
  },
234
+
235
+ /**
236
+ * Save a layout preview
237
+ *
238
+ * @since 3.0
239
+ * @return null
240
+ */
241
+ _saveLayout: function( e ) {
242
+ e.preventDefault();
243
+ var self = e.data.self,
244
+ $button = $( e.target ).is( 'a' ) ? $( e.target ) : $( e.target ).parent( 'a' ),
245
+ $item = $button.parents( '.ditty-data-list__item' ),
246
+ layoutId = $item.data( 'layout_id' );
247
+
248
+ //self.settings.editor.updateStart(); // Start the update overlay
249
+
250
+ // Use ajax to clone the layout
251
+ // var data = {
252
+ // action : 'ditty_editor_layout_save_preview',
253
+ // layout_id : layoutId,
254
+ // item_id : self.editorItemId,
255
+ // draft_values : self.settings.editor.getDraftValues(),
256
+ // security : dittyVars.security
257
+ // };
258
+ // $.post( dittyVars.ajaxurl, data, function( response ) {
259
+ // console.log( response );
260
+ // self.settings.editor.updateStop(); // Stop the update overlay
261
+ // }, 'json' );
262
+ },
263
 
264
  /**
265
  * Delete a layout
413
  this.$elmt.off( 'click', '.ditty-data-list__item__edit_css', { self: this, editType: 'css' }, this._editLayout );
414
  this.$elmt.off( 'click', '.ditty-data-list__item__clone', { self: this }, this._cloneLayout );
415
  this.$elmt.off( 'click', '.ditty-data-list__item__delete', { self: this }, this._deleteLayout );
416
+ this.$elmt.off( 'click', '.ditty-data-list__item__save', { self: this }, this._saveLayout );
417
  this.$list.off( 'click', '.ditty-editor-layout > a', { self: this }, this._actionClick );
418
  $( 'body' ).off( 'ditty_editor_save_ditty_response', { self: this }, this._dittyEditorSaveResponse );
419
 
includes/sass/admin/_dashboard.scss CHANGED
@@ -131,4 +131,27 @@ table.wp-list-table .type-ditty_display .row-actions {
131
  border-bottom-right-radius: 3px;
132
  }
133
  }
 
 
 
 
 
134
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
131
  border-bottom-right-radius: 3px;
132
  }
133
  }
134
+ .fusion-module-icon.ditty {
135
+ width: 15px;
136
+ height: 15px;
137
+ background: url( '../img/d.svg' );
138
+ }
139
 
140
+ #menu-posts-ditty {
141
+ .wp-submenu {
142
+ display: flex;
143
+ flex-direction: column;
144
+ li {
145
+ order: 0;
146
+ &.ditty_extensions,
147
+ &.ditty_settings,
148
+ &.ditty_export {
149
+ order: 5;
150
+ }
151
+ &.ditty_news_ticker,
152
+ &.mtphr_dnt_settings {
153
+ order: 10;
154
+ }
155
+ }
156
+ }
157
+ }
includes/sass/admin/_export.scss ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .ditty-import {
2
+ &__group {
3
+ margin-bottom: 40px;
4
+ }
5
+ &__item {
6
+
7
+ }
8
+ }
9
+ .ditty-field--ditty_new_import_button {
10
+ .ditty-button {
11
+ display: inline-block;
12
+ width: auto;
13
+ }
14
+ }
includes/sass/admin/_pages.scss CHANGED
@@ -1,3 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  .ditty-page {
2
  &__contents {
3
  padding: 20px;
@@ -11,4 +33,15 @@
11
  margin: 0;
12
  }
13
  }
 
 
 
 
 
 
 
 
 
 
 
14
  }
1
+ .ditty-header {
2
+ color: #FFF;
3
+ background: #1ABF7D;
4
+ margin-left: -20px;
5
+ &__wrapper {
6
+ align-items: center;
7
+ display: flex;
8
+ flex-wrap: wrap;
9
+ justify-content: space-between;
10
+ transition: padding 0.3s ease;
11
+ margin-left: auto;
12
+ margin-right: auto;
13
+ //max-width: 69.5rem;
14
+ padding: 1.5rem;
15
+ padding-bottom: 1.375rem;
16
+ padding-top: 1.375rem;
17
+ }
18
+ svg {
19
+ width: 100px;
20
+ }
21
+ }
22
+
23
  .ditty-page {
24
  &__contents {
25
  padding: 20px;
33
  margin: 0;
34
  }
35
  }
36
+ }
37
+
38
+ @media only screen and (max-width: 960px) {
39
+ .ditty-header {
40
+ margin-left: -20px;
41
+ }
42
+ }
43
+ @media screen and (max-width: 782px) {
44
+ .ditty-header {
45
+ margin-left: -10px;
46
+ }
47
  }
includes/sass/admin/_rtl.scss ADDED
@@ -0,0 +1,66 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ body.rtl {
2
+ #ditty-editor .ditty-editor {
3
+ &__tab {
4
+ span {
5
+ padding-left: 0;
6
+ padding-right: 20px;
7
+ }
8
+ }
9
+ }
10
+ .ditty-data-list__filter {
11
+ i {
12
+ margin-right: 0;
13
+ margin-left: 5px;
14
+ }
15
+ }
16
+ .ditty-editor-options__buttons--start a:not(.ditty-button), .ditty-editor-options__buttons--start button:not(.ditty-button) {
17
+ margin-right: 0;
18
+ margin-left: 5px;
19
+ }
20
+ .ditty-editor-options__buttons--end a:not(.ditty-button), .ditty-editor-options__buttons--end button:not(.ditty-button) {
21
+ margin-left: 0;
22
+ margin-right: 5px;
23
+ }
24
+ .ditty-data-list__item {
25
+ padding-right: 0;
26
+ padding-left: 8px;
27
+ &__label {
28
+ padding-right: 0;
29
+ padding-left: 5px;
30
+ margin-right: 0;
31
+ margin-left: auto;
32
+ .ditty-display-version {
33
+ margin-right: 5px;
34
+ }
35
+ }
36
+ }
37
+ .ditty-layout-variation {
38
+ padding: 5px 10px 0 8px;
39
+ }
40
+ .ditty-editor__panel--items {
41
+ .ditty-data-list__item {
42
+ a.ditty-data-list__item__icon {
43
+ border-right: none;
44
+ border-left: 1px solid rgba(0, 0, 0, 0.05);
45
+ margin-right: 0;
46
+ margin-left: 10px;
47
+ }
48
+ }
49
+ }
50
+ .ditty-field-type--checkbox .ditty-field__input__primary label {
51
+ margin-left: 0;
52
+ margin-right: 7px;
53
+ }
54
+ .ditty-field-type--radio .ditty-input--radio__option label {
55
+ margin-left: 0;
56
+ margin-right: 7px;
57
+ }
58
+ .ditty-field-type--radio .ditty-input--radio--inline .ditty-input--radio__option {
59
+ margin-right: 0;
60
+ margin-left: 15px;
61
+ }
62
+ .ditty-field-type--color input[type="text"] {
63
+ padding-left: 1px !important;
64
+ padding-right: 40px !important;
65
+ }
66
+ }
includes/sass/admin/_settings.scss CHANGED
@@ -1,6 +1,6 @@
1
  #ditty-page {
2
  width: 1200px;
3
- max-width: calc( 100% );
4
  border-radius: 5px;
5
  box-shadow: 0 0 1px rgba( 0, 0, 0, 0.2 );
6
  margin-top: 22px;
@@ -43,7 +43,7 @@
43
  }
44
  @media screen and ( max-width: 782px ) {
45
  #ditty-page {
46
- max-width: calc( 100% );
47
  margin-top: 10px;
48
  }
49
  }
@@ -116,6 +116,13 @@
116
  top: 10px;
117
  display: block;
118
  font-size: 14px;
 
 
 
 
 
 
 
119
  }
120
  span {
121
  display: block;
@@ -297,7 +304,7 @@
297
  }
298
  @media (min-width: 1000px) {
299
  .ditty-settings__panel:not(.ditty-settings__panel--global_ditty) {
300
- > .ditty-field {
301
  display: flex;
302
  flex-direction: row;
303
  align-items: flex-start;
@@ -319,3 +326,18 @@
319
  }
320
  }
321
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  #ditty-page {
2
  width: 1200px;
3
+ max-width: calc( 100% - 20px );
4
  border-radius: 5px;
5
  box-shadow: 0 0 1px rgba( 0, 0, 0, 0.2 );
6
  margin-top: 22px;
43
  }
44
  @media screen and ( max-width: 782px ) {
45
  #ditty-page {
46
+ max-width: calc( 100% - 10px );
47
  margin-top: 10px;
48
  }
49
  }
116
  top: 10px;
117
  display: block;
118
  font-size: 14px;
119
+ width: 14px;
120
+ }
121
+ svg {
122
+ position: absolute;
123
+ top: 10px;
124
+ display: block;
125
+ width: 14px;
126
  }
127
  span {
128
  display: block;
304
  }
305
  @media (min-width: 1000px) {
306
  .ditty-settings__panel:not(.ditty-settings__panel--global_ditty) {
307
+ > .ditty-field:not(.ditty-field-heading--top) {
308
  display: flex;
309
  flex-direction: row;
310
  align-items: flex-start;
326
  }
327
  }
328
  }
329
+
330
+
331
+ /* Post import/exports */
332
+ .ditty-import-button,
333
+ .ditty-export-button {
334
+ i {
335
+ display: none;
336
+ }
337
+ }
338
+ .ditty-input--checkboxes__option--select_all {
339
+ width: 100%;
340
+ border-bottom: 1px solid rgba(0, 0, 0, 0.05);
341
+ padding-bottom: 10px;
342
+ margin-bottom: 10px !important;
343
+ }
includes/sass/ditty-admin.scss CHANGED
@@ -10,4 +10,6 @@
10
  @import "admin/settings";
11
  @import "admin/upgrade_details";
12
  @import "admin/pages";
13
- @import "admin/wizard";
 
 
10
  @import "admin/settings";
11
  @import "admin/upgrade_details";
12
  @import "admin/pages";
13
+ @import "admin/export";
14
+ @import "admin/wizard";
15
+ @import "admin/rtl";
includes/sass/editor/_layouts_panel.scss CHANGED
@@ -3,7 +3,8 @@
3
  &:not( .active ) {
4
  &:hover {
5
  .ditty-data-list__item__edit_html,
6
- .ditty-data-list__item__edit_css {
 
7
  display: none;
8
  }
9
  }
3
  &:not( .active ) {
4
  &:hover {
5
  .ditty-data-list__item__edit_html,
6
+ .ditty-data-list__item__edit_css,
7
+ .ditty-data-list__item__save {
8
  display: none;
9
  }
10
  }
includes/sass/partials/_ditty-ui.scss CHANGED
@@ -27,6 +27,7 @@
27
  transition: color .25s ease, background-color .25s ease;
28
  &[disabled] {
29
  cursor: default;
 
30
  }
31
  &[type="button"],
32
  &[type="submit"] {
27
  transition: color .25s ease, background-color .25s ease;
28
  &[disabled] {
29
  cursor: default;
30
+ opacity: .5;
31
  }
32
  &[type="button"],
33
  &[type="submit"] {
includes/sass/partials/_fields.scss CHANGED
@@ -164,6 +164,17 @@
164
  }
165
  }
166
 
 
 
 
 
 
 
 
 
 
 
 
167
  /* Group */
168
  .ditty-field-type--group {
169
  padding: 0;
@@ -260,7 +271,7 @@
260
  margin-bottom: 5px;
261
  label {
262
  font-size: 13px;
263
- line-break: 13px;
264
  }
265
  }
266
  &--inline {
164
  }
165
  }
166
 
167
+ .postbox-container .inside > .ditty-field {
168
+ padding-left: 0;
169
+ padding-right: 0;
170
+ &:first-of-type {
171
+ padding-top: 0;
172
+ }
173
+ &:last-of-type {
174
+ padding-bottom: 0;
175
+ }
176
+ }
177
+
178
  /* Group */
179
  .ditty-field-type--group {
180
  padding: 0;
271
  margin-bottom: 5px;
272
  label {
273
  font-size: 13px;
274
+ line-height: 13px;
275
  }
276
  }
277
  &--inline {
includes/wizard.php CHANGED
@@ -117,7 +117,7 @@ function ditty_wizard( $post ) {
117
  <h3 class="ditty-wizard-setting__title"><?php _e( 'Select Variation Layouts for the Item', 'ditty-news-ticker' ); ?></h3>
118
  <p class="ditty-wizard-setting__description"><?php _e( 'Layouts are used to render the Item data. Each Item type may have multiple Layout variations.', 'ditty-news-ticker' ); ?></p>
119
  <?php
120
- $layouts = ditty_layouts_posts();
121
  $layout_options = '';
122
  $layout_options .= '<div class="ditty-wizard-option ditty-option-grid">';
123
  if ( is_array( $layouts ) && count( $layouts ) > 0 ) {
117
  <h3 class="ditty-wizard-setting__title"><?php _e( 'Select Variation Layouts for the Item', 'ditty-news-ticker' ); ?></h3>
118
  <p class="ditty-wizard-setting__description"><?php _e( 'Layouts are used to render the Item data. Each Item type may have multiple Layout variations.', 'ditty-news-ticker' ); ?></p>
119
  <?php
120
+ $layouts = ditty_layout_posts();
121
  $layout_options = '';
122
  $layout_options .= '<div class="ditty-wizard-option ditty-option-grid">';
123
  if ( is_array( $layouts ) && count( $layouts ) > 0 ) {
readme.txt CHANGED
@@ -3,8 +3,8 @@ Contributors: metaphorcreations
3
  Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=FUZKZGAJSBAE6
4
  Tags: ticker, post ticker, news ticker, content aggregator, latest posts, live refresh, rotator, data rotator, lists, data, aggregator
5
  Requires at least: 4.5
6
- Tested up to: 5.9.1
7
- Stable tag: 3.0.16
8
  License: GPL2
9
 
10
  Formerly Ditty News Ticker. Ditty is a multi-functional data display plugin.
@@ -66,6 +66,13 @@ The most common cause for an unresponsive Ditty (when using scroll or rotate mod
66
 
67
  == Changelog ==
68
 
 
 
 
 
 
 
 
69
  = 3.0.16 =
70
  * Resolved bug in default item link css
71
  * Code field updates
@@ -688,4 +695,4 @@ The most common cause for an unresponsive Ditty (when using scroll or rotate mod
688
 
689
  == Upgrade Notice ==
690
 
691
- PHP 8 updates & other updates
3
  Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=FUZKZGAJSBAE6
4
  Tags: ticker, post ticker, news ticker, content aggregator, latest posts, live refresh, rotator, data rotator, lists, data, aggregator
5
  Requires at least: 4.5
6
+ Tested up to: 5.9.2
7
+ Stable tag: 3.0.17
8
  License: GPL2
9
 
10
  Formerly Ditty News Ticker. Ditty is a multi-functional data display plugin.
66
 
67
  == Changelog ==
68
 
69
+ = 3.0.17 =
70
+ * Added Import/Export functionality
71
+ * Added Ditty shortcode to Ditty edit screen
72
+ * Re-ordered Ditty sub menu
73
+ * RTL admin updates
74
+ * Added Avada builder element
75
+
76
  = 3.0.16 =
77
  * Resolved bug in default item link css
78
  * Code field updates
695
 
696
  == Upgrade Notice ==
697
 
698
+ Added Import/Export functionality and other updates