All-in-One WP Migration - Version 7.0

Version Description

Added

  • DB_CHARSET and DB_COLLATE are stored in the backup
  • Display a notice when logged in user is administrator without export/import capabilities

Fixed

  • Escape backup labels. (Thanks to Connum for reporting)

Changed

  • Create backup button on Backups page starts a full export.
Download this release

Release Info

Developer bangelov
Plugin Icon 128x128 All-in-One WP Migration
Version 7.0
Comparing to
See all releases

Code changes from version 6.97 to 7.0

all-in-one-wp-migration.php CHANGED
@@ -5,7 +5,7 @@
5
  * Description: Migration tool for all your blog data. Import or Export your blog content with a single click.
6
  * Author: ServMask
7
  * Author URI: https://servmask.com/
8
- * Version: 6.97
9
  * Text Domain: all-in-one-wp-migration
10
  * Domain Path: /languages
11
  * Network: True
5
  * Description: Migration tool for all your blog data. Import or Export your blog content with a single click.
6
  * Author: ServMask
7
  * Author URI: https://servmask.com/
8
+ * Version: 7.0
9
  * Text Domain: all-in-one-wp-migration
10
  * Domain Path: /languages
11
  * Network: True
constants.php CHANGED
@@ -35,7 +35,7 @@ define( 'AI1WM_DEBUG', false );
35
  // ==================
36
  // = Plugin Version =
37
  // ==================
38
- define( 'AI1WM_VERSION', '6.97' );
39
 
40
  // ===============
41
  // = Plugin Name =
35
  // ==================
36
  // = Plugin Version =
37
  // ==================
38
+ define( 'AI1WM_VERSION', '7.0' );
39
 
40
  // ===============
41
  // = Plugin Name =
lib/controller/class-ai1wm-backups-controller.php CHANGED
@@ -105,7 +105,7 @@ class Ai1wm_Backups_Controller {
105
  echo json_encode(
106
  array(
107
  'success' => update_option( AI1WM_BACKUPS_LABELS, $backups_labels ),
108
- 'label' => $params['backup_label'],
109
  )
110
  );
111
  exit;
@@ -117,7 +117,20 @@ class Ai1wm_Backups_Controller {
117
  AI1WM_BACKUPS_LABELS,
118
  array_merge( $backups_labels, array( trim( $params['backup_name'] ) => trim( $params['backup_label'] ) ) )
119
  ),
120
- 'label' => trim( $params['backup_label'] ),
 
 
 
 
 
 
 
 
 
 
 
 
 
121
  )
122
  );
123
  exit;
105
  echo json_encode(
106
  array(
107
  'success' => update_option( AI1WM_BACKUPS_LABELS, $backups_labels ),
108
+ 'label' => esc_html( $params['backup_label'] ),
109
  )
110
  );
111
  exit;
117
  AI1WM_BACKUPS_LABELS,
118
  array_merge( $backups_labels, array( trim( $params['backup_name'] ) => trim( $params['backup_label'] ) ) )
119
  ),
120
+ 'label' => esc_html( $params['backup_label'] ),
121
+ )
122
+ );
123
+ exit;
124
+ }
125
+
126
+ public static function backup_list() {
127
+ $model = new Ai1wm_Backups;
128
+
129
+ Ai1wm_Template::render(
130
+ 'backups/backups-list',
131
+ array(
132
+ 'backups' => $model->get_files(),
133
+ 'backups_labels' => get_option( AI1WM_BACKUPS_LABELS, array() ),
134
  )
135
  );
136
  exit;
lib/controller/class-ai1wm-export-controller.php CHANGED
@@ -164,24 +164,27 @@ class Ai1wm_Export_Controller {
164
  }
165
 
166
  public static function cleanup() {
167
- // Iterate over storage directory
168
- $iterator = new Ai1wm_Recursive_Directory_Iterator( AI1WM_STORAGE_PATH );
169
-
170
- // Exclude index.php
171
- $iterator = new Ai1wm_Recursive_Exclude_Filter( $iterator, array( 'index.php' ) );
172
-
173
- // Loop over folders and files
174
- foreach ( $iterator as $item ) {
175
- try {
176
- if ( $item->getMTime() < ( time() - AI1WM_MAX_STORAGE_CLEANUP ) ) {
177
- if ( $item->isDir() ) {
178
- Ai1wm_Directory::delete( $item->getPathname() );
179
- } else {
180
- Ai1wm_File::delete( $item->getPathname() );
 
 
181
  }
 
182
  }
183
- } catch ( Exception $e ) {
184
  }
 
185
  }
186
  }
187
  }
164
  }
165
 
166
  public static function cleanup() {
167
+ try {
168
+ // Iterate over storage directory
169
+ $iterator = new Ai1wm_Recursive_Directory_Iterator( AI1WM_STORAGE_PATH );
170
+
171
+ // Exclude index.php
172
+ $iterator = new Ai1wm_Recursive_Exclude_Filter( $iterator, array( 'index.php' ) );
173
+
174
+ // Loop over folders and files
175
+ foreach ( $iterator as $item ) {
176
+ try {
177
+ if ( $item->getMTime() < ( time() - AI1WM_MAX_STORAGE_CLEANUP ) ) {
178
+ if ( $item->isDir() ) {
179
+ Ai1wm_Directory::delete( $item->getPathname() );
180
+ } else {
181
+ Ai1wm_File::delete( $item->getPathname() );
182
+ }
183
  }
184
+ } catch ( Exception $e ) {
185
  }
 
186
  }
187
+ } catch ( Exception $e ) {
188
  }
189
  }
190
  }
lib/controller/class-ai1wm-main-controller.php CHANGED
@@ -89,6 +89,9 @@ class Ai1wm_Main_Controller {
89
  // Create secret key
90
  add_action( 'admin_init', array( $this, 'create_secret_key' ) );
91
 
 
 
 
92
  // Schedule crons
93
  add_action( 'admin_init', array( $this, 'schedule_crons' ) );
94
 
@@ -289,12 +292,28 @@ class Ai1wm_Main_Controller {
289
  * @return void
290
  */
291
  public function create_secret_key() {
292
- // Set secret key
293
  if ( ! get_option( AI1WM_SECRET_KEY ) ) {
294
  update_option( AI1WM_SECRET_KEY, wp_generate_password( 12, false ) );
295
  }
296
  }
297
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
298
  /**
299
  * Schedule cron tasks for plugin operation, if not done yet
300
  *
@@ -496,6 +515,15 @@ class Ai1wm_Main_Controller {
496
  Ai1wm_Template::render( 'main/wordpress-htaccess-notice' );
497
  }
498
 
 
 
 
 
 
 
 
 
 
499
  /**
500
  * Add links to plugin list page
501
  *
@@ -854,15 +882,35 @@ class Ai1wm_Main_Controller {
854
  'secret_key' => get_option( AI1WM_SECRET_KEY ),
855
  ) );
856
 
 
 
 
 
 
 
 
 
 
 
857
  wp_localize_script( 'ai1wm_backups', 'ai1wm_backups', array(
858
  'ajax' => array(
859
  'url' => wp_make_link_relative( admin_url( 'admin-ajax.php?action=ai1wm_backups' ) ),
860
  'add_backup_label' => wp_make_link_relative( admin_url( 'admin-ajax.php?action=ai1wm_add_backup_label' ) ),
 
861
  ),
862
  'secret_key' => get_option( AI1WM_SECRET_KEY ),
863
  ) );
864
 
865
  wp_localize_script( 'ai1wm_backups', 'ai1wm_locale', array(
 
 
 
 
 
 
 
 
 
866
  'stop_importing_your_website' => __( 'You are about to stop importing your website, are you sure?', AI1WM_PLUGIN_NAME ),
867
  'preparing_to_import' => __( 'Preparing to import...', AI1WM_PLUGIN_NAME ),
868
  'unable_to_import' => __( 'Unable to import', AI1WM_PLUGIN_NAME ),
@@ -886,6 +934,8 @@ class Ai1wm_Main_Controller {
886
  'restore_from_file' => __( '"Restore" functionality is available in a <a href="https://servmask.com/products/unlimited-extension" target="_blank">paid extension</a>.<br />You could also download the backup and then use "Import from file".', AI1WM_PLUGIN_NAME ),
887
  'unable_to_add_backup_label' => __( 'Unable to add label for backup because: ', AI1WM_PLUGIN_NAME ),
888
  'click_to_set_backup_label' => __( 'Click to set a label for this backup', AI1WM_PLUGIN_NAME ),
 
 
889
  ) );
890
  }
891
 
@@ -991,6 +1041,7 @@ class Ai1wm_Main_Controller {
991
  add_action( 'wp_ajax_ai1wm_feedback', 'Ai1wm_Feedback_Controller::feedback' );
992
  add_action( 'wp_ajax_ai1wm_report', 'Ai1wm_Report_Controller::report' );
993
  add_action( 'wp_ajax_ai1wm_add_backup_label', 'Ai1wm_Backups_Controller::add_label' );
 
994
 
995
  // Update actions
996
  if ( current_user_can( 'update_plugins' ) ) {
89
  // Create secret key
90
  add_action( 'admin_init', array( $this, 'create_secret_key' ) );
91
 
92
+ // Check user role capability
93
+ add_action( 'admin_init', array( $this, 'check_user_role_capability' ) );
94
+
95
  // Schedule crons
96
  add_action( 'admin_init', array( $this, 'schedule_crons' ) );
97
 
292
  * @return void
293
  */
294
  public function create_secret_key() {
 
295
  if ( ! get_option( AI1WM_SECRET_KEY ) ) {
296
  update_option( AI1WM_SECRET_KEY, wp_generate_password( 12, false ) );
297
  }
298
  }
299
 
300
+ /**
301
+ * Check user role capability
302
+ *
303
+ * @return void
304
+ */
305
+ public function check_user_role_capability() {
306
+ if ( ( $user = wp_get_current_user() ) && in_array( 'administrator', $user->roles ) ) {
307
+ if ( ! $user->has_cap( 'export' ) || ! $user->has_cap( 'import' ) ) {
308
+ if ( is_multisite() ) {
309
+ return add_action( 'network_admin_notices', array( $this, 'missing_role_capability_notice' ) );
310
+ } else {
311
+ return add_action( 'admin_notices', array( $this, 'missing_role_capability_notice' ) );
312
+ }
313
+ }
314
+ }
315
+ }
316
+
317
  /**
318
  * Schedule cron tasks for plugin operation, if not done yet
319
  *
515
  Ai1wm_Template::render( 'main/wordpress-htaccess-notice' );
516
  }
517
 
518
+ /**
519
+ * Display notice for missing role capability
520
+ *
521
+ * @return void
522
+ */
523
+ public function missing_role_capability_notice() {
524
+ Ai1wm_Template::render( 'main/missing-role-capability-notice' );
525
+ }
526
+
527
  /**
528
  * Add links to plugin list page
529
  *
882
  'secret_key' => get_option( AI1WM_SECRET_KEY ),
883
  ) );
884
 
885
+ wp_localize_script( 'ai1wm_backups', 'ai1wm_export', array(
886
+ 'ajax' => array(
887
+ 'url' => wp_make_link_relative( admin_url( 'admin-ajax.php?action=ai1wm_export' ) ),
888
+ ),
889
+ 'status' => array(
890
+ 'url' => wp_make_link_relative( add_query_arg( array( 'secret_key' => get_option( AI1WM_SECRET_KEY ) ), admin_url( 'admin-ajax.php?action=ai1wm_status' ) ) ),
891
+ ),
892
+ 'secret_key' => get_option( AI1WM_SECRET_KEY ),
893
+ ) );
894
+
895
  wp_localize_script( 'ai1wm_backups', 'ai1wm_backups', array(
896
  'ajax' => array(
897
  'url' => wp_make_link_relative( admin_url( 'admin-ajax.php?action=ai1wm_backups' ) ),
898
  'add_backup_label' => wp_make_link_relative( admin_url( 'admin-ajax.php?action=ai1wm_add_backup_label' ) ),
899
+ 'backup_list' => wp_make_link_relative( admin_url( 'admin-ajax.php?action=ai1wm_backup_list' ) ),
900
  ),
901
  'secret_key' => get_option( AI1WM_SECRET_KEY ),
902
  ) );
903
 
904
  wp_localize_script( 'ai1wm_backups', 'ai1wm_locale', array(
905
+ 'stop_exporting_your_website' => __( 'You are about to stop exporting your website, are you sure?', AI1WM_PLUGIN_NAME ),
906
+ 'preparing_to_export' => __( 'Preparing to export...', AI1WM_PLUGIN_NAME ),
907
+ 'unable_to_export' => __( 'Unable to export', AI1WM_PLUGIN_NAME ),
908
+ 'unable_to_start_the_export' => __( 'Unable to start the export. Refresh the page and try again', AI1WM_PLUGIN_NAME ),
909
+ 'unable_to_run_the_export' => __( 'Unable to run the export. Refresh the page and try again', AI1WM_PLUGIN_NAME ),
910
+ 'unable_to_stop_the_export' => __( 'Unable to stop the export. Refresh the page and try again', AI1WM_PLUGIN_NAME ),
911
+ 'please_wait_stopping_the_export' => __( 'Please wait, stopping the export...', AI1WM_PLUGIN_NAME ),
912
+ 'close_export' => __( 'Close', AI1WM_PLUGIN_NAME ),
913
+ 'stop_export' => __( 'Stop export', AI1WM_PLUGIN_NAME ),
914
  'stop_importing_your_website' => __( 'You are about to stop importing your website, are you sure?', AI1WM_PLUGIN_NAME ),
915
  'preparing_to_import' => __( 'Preparing to import...', AI1WM_PLUGIN_NAME ),
916
  'unable_to_import' => __( 'Unable to import', AI1WM_PLUGIN_NAME ),
934
  'restore_from_file' => __( '"Restore" functionality is available in a <a href="https://servmask.com/products/unlimited-extension" target="_blank">paid extension</a>.<br />You could also download the backup and then use "Import from file".', AI1WM_PLUGIN_NAME ),
935
  'unable_to_add_backup_label' => __( 'Unable to add label for backup because: ', AI1WM_PLUGIN_NAME ),
936
  'click_to_set_backup_label' => __( 'Click to set a label for this backup', AI1WM_PLUGIN_NAME ),
937
+ 'unable_to_refresh_backups_list' => __( 'Unable to refresh backups list because: ', AI1WM_PLUGIN_NAME ),
938
+ 'refresh_backup_list' => __( 'Refreshing backup list...', AI1WM_PLUGIN_NAME ),
939
  ) );
940
  }
941
 
1041
  add_action( 'wp_ajax_ai1wm_feedback', 'Ai1wm_Feedback_Controller::feedback' );
1042
  add_action( 'wp_ajax_ai1wm_report', 'Ai1wm_Report_Controller::report' );
1043
  add_action( 'wp_ajax_ai1wm_add_backup_label', 'Ai1wm_Backups_Controller::add_label' );
1044
+ add_action( 'wp_ajax_ai1wm_backup_list', 'Ai1wm_Backups_Controller::backup_list' );
1045
 
1046
  // Update actions
1047
  if ( current_user_can( 'update_plugins' ) ) {
lib/model/class-ai1wm-backups.php CHANGED
@@ -37,45 +37,50 @@ class Ai1wm_Backups {
37
  public function get_files() {
38
  $backups = array();
39
 
40
- // Iterate over directory
41
- $iterator = new Ai1wm_Recursive_Directory_Iterator( AI1WM_BACKUPS_PATH );
42
 
43
- // Filter by extensions
44
- $iterator = new Ai1wm_Recursive_Extension_Filter( $iterator, array( 'wpress' ) );
45
 
46
- // Recursively iterate over directory
47
- $iterator = new Ai1wm_Recursive_Iterator_Iterator( $iterator, RecursiveIteratorIterator::LEAVES_ONLY, RecursiveIteratorIterator::CATCH_GET_CHILD );
48
 
49
- // Get backup files
50
- foreach ( $iterator as $item ) {
51
- try {
52
- if ( ai1wm_is_filesize_supported( $item->getPathname() ) ) {
53
- $backups[] = array(
54
- 'path' => $iterator->getSubPath(),
55
- 'filename' => $iterator->getSubPathname(),
56
- 'mtime' => $iterator->getMTime(),
57
- 'size' => $iterator->getSize(),
58
- );
59
- } else {
 
 
 
 
 
 
 
 
 
 
 
60
  $backups[] = array(
61
  'path' => $iterator->getSubPath(),
62
  'filename' => $iterator->getSubPathname(),
63
- 'mtime' => $iterator->getMTime(),
64
  'size' => null,
65
  );
66
  }
67
- } catch ( Exception $e ) {
68
- $backups[] = array(
69
- 'path' => $iterator->getSubPath(),
70
- 'filename' => $iterator->getSubPathname(),
71
- 'mtime' => null,
72
- 'size' => null,
73
- );
74
  }
75
- }
76
 
77
- // Sort backups modified date
78
- usort( $backups, array( $this, 'compare' ) );
 
 
 
79
 
80
  return $backups;
81
  }
37
  public function get_files() {
38
  $backups = array();
39
 
40
+ try {
 
41
 
42
+ // Iterate over directory
43
+ $iterator = new Ai1wm_Recursive_Directory_Iterator( AI1WM_BACKUPS_PATH );
44
 
45
+ // Filter by extensions
46
+ $iterator = new Ai1wm_Recursive_Extension_Filter( $iterator, array( 'wpress' ) );
47
 
48
+ // Recursively iterate over directory
49
+ $iterator = new Ai1wm_Recursive_Iterator_Iterator( $iterator, RecursiveIteratorIterator::LEAVES_ONLY, RecursiveIteratorIterator::CATCH_GET_CHILD );
50
+
51
+ // Get backup files
52
+ foreach ( $iterator as $item ) {
53
+ try {
54
+ if ( ai1wm_is_filesize_supported( $item->getPathname() ) ) {
55
+ $backups[] = array(
56
+ 'path' => $iterator->getSubPath(),
57
+ 'filename' => $iterator->getSubPathname(),
58
+ 'mtime' => $iterator->getMTime(),
59
+ 'size' => $iterator->getSize(),
60
+ );
61
+ } else {
62
+ $backups[] = array(
63
+ 'path' => $iterator->getSubPath(),
64
+ 'filename' => $iterator->getSubPathname(),
65
+ 'mtime' => $iterator->getMTime(),
66
+ 'size' => null,
67
+ );
68
+ }
69
+ } catch ( Exception $e ) {
70
  $backups[] = array(
71
  'path' => $iterator->getSubPath(),
72
  'filename' => $iterator->getSubPathname(),
73
+ 'mtime' => null,
74
  'size' => null,
75
  );
76
  }
 
 
 
 
 
 
 
77
  }
 
78
 
79
+ // Sort backups modified date
80
+ usort( $backups, array( $this, 'compare' ) );
81
+
82
+ } catch ( Exception $e ) {
83
+ }
84
 
85
  return $backups;
86
  }
lib/model/class-ai1wm-extensions.php CHANGED
@@ -45,7 +45,7 @@ class Ai1wm_Extensions {
45
  'about' => AI1WMZE_PLUGIN_ABOUT,
46
  'basename' => AI1WMZE_PLUGIN_BASENAME,
47
  'version' => AI1WMZE_VERSION,
48
- 'requires' => '1.14',
49
  'short' => AI1WMZE_PLUGIN_SHORT,
50
  );
51
  }
@@ -58,7 +58,7 @@ class Ai1wm_Extensions {
58
  'about' => AI1WMAE_PLUGIN_ABOUT,
59
  'basename' => AI1WMAE_PLUGIN_BASENAME,
60
  'version' => AI1WMAE_VERSION,
61
- 'requires' => '1.19',
62
  'short' => AI1WMAE_PLUGIN_SHORT,
63
  );
64
  }
@@ -71,7 +71,7 @@ class Ai1wm_Extensions {
71
  'about' => AI1WMBE_PLUGIN_ABOUT,
72
  'basename' => AI1WMBE_PLUGIN_BASENAME,
73
  'version' => AI1WMBE_VERSION,
74
- 'requires' => '1.25',
75
  'short' => AI1WMBE_PLUGIN_SHORT,
76
  );
77
  }
@@ -84,7 +84,7 @@ class Ai1wm_Extensions {
84
  'about' => AI1WMIE_PLUGIN_ABOUT,
85
  'basename' => AI1WMIE_PLUGIN_BASENAME,
86
  'version' => AI1WMIE_VERSION,
87
- 'requires' => '1.25',
88
  'short' => AI1WMIE_PLUGIN_SHORT,
89
  );
90
  }
@@ -97,7 +97,7 @@ class Ai1wm_Extensions {
97
  'about' => AI1WMDE_PLUGIN_ABOUT,
98
  'basename' => AI1WMDE_PLUGIN_BASENAME,
99
  'version' => AI1WMDE_VERSION,
100
- 'requires' => '3.45',
101
  'short' => AI1WMDE_PLUGIN_SHORT,
102
  );
103
  }
@@ -123,7 +123,7 @@ class Ai1wm_Extensions {
123
  'about' => AI1WMFE_PLUGIN_ABOUT,
124
  'basename' => AI1WMFE_PLUGIN_BASENAME,
125
  'version' => AI1WMFE_VERSION,
126
- 'requires' => '2.51',
127
  'short' => AI1WMFE_PLUGIN_SHORT,
128
  );
129
  }
@@ -136,7 +136,7 @@ class Ai1wm_Extensions {
136
  'about' => AI1WMCE_PLUGIN_ABOUT,
137
  'basename' => AI1WMCE_PLUGIN_BASENAME,
138
  'version' => AI1WMCE_VERSION,
139
- 'requires' => '1.15',
140
  'short' => AI1WMCE_PLUGIN_SHORT,
141
  );
142
  }
@@ -149,7 +149,7 @@ class Ai1wm_Extensions {
149
  'about' => AI1WMGE_PLUGIN_ABOUT,
150
  'basename' => AI1WMGE_PLUGIN_BASENAME,
151
  'version' => AI1WMGE_VERSION,
152
- 'requires' => '2.50',
153
  'short' => AI1WMGE_PLUGIN_SHORT,
154
  );
155
  }
@@ -162,7 +162,7 @@ class Ai1wm_Extensions {
162
  'about' => AI1WMRE_PLUGIN_ABOUT,
163
  'basename' => AI1WMRE_PLUGIN_BASENAME,
164
  'version' => AI1WMRE_VERSION,
165
- 'requires' => '1.15',
166
  'short' => AI1WMRE_PLUGIN_SHORT,
167
  );
168
  }
@@ -175,7 +175,7 @@ class Ai1wm_Extensions {
175
  'about' => AI1WMEE_PLUGIN_ABOUT,
176
  'basename' => AI1WMEE_PLUGIN_BASENAME,
177
  'version' => AI1WMEE_VERSION,
178
- 'requires' => '1.23',
179
  'short' => AI1WMEE_PLUGIN_SHORT,
180
  );
181
  }
@@ -188,7 +188,7 @@ class Ai1wm_Extensions {
188
  'about' => AI1WMME_PLUGIN_ABOUT,
189
  'basename' => AI1WMME_PLUGIN_BASENAME,
190
  'version' => AI1WMME_VERSION,
191
- 'requires' => '3.74',
192
  'short' => AI1WMME_PLUGIN_SHORT,
193
  );
194
  }
@@ -201,7 +201,7 @@ class Ai1wm_Extensions {
201
  'about' => AI1WMOE_PLUGIN_ABOUT,
202
  'basename' => AI1WMOE_PLUGIN_BASENAME,
203
  'version' => AI1WMOE_VERSION,
204
- 'requires' => '1.36',
205
  'short' => AI1WMOE_PLUGIN_SHORT,
206
  );
207
  }
@@ -214,7 +214,7 @@ class Ai1wm_Extensions {
214
  'about' => AI1WMPE_PLUGIN_ABOUT,
215
  'basename' => AI1WMPE_PLUGIN_BASENAME,
216
  'version' => AI1WMPE_VERSION,
217
- 'requires' => '1.12',
218
  'short' => AI1WMPE_PLUGIN_SHORT,
219
  );
220
  }
@@ -227,7 +227,7 @@ class Ai1wm_Extensions {
227
  'about' => AI1WMNE_PLUGIN_ABOUT,
228
  'basename' => AI1WMNE_PLUGIN_BASENAME,
229
  'version' => AI1WMNE_VERSION,
230
- 'requires' => '1.10',
231
  'short' => AI1WMNE_PLUGIN_SHORT,
232
  );
233
  }
@@ -240,7 +240,7 @@ class Ai1wm_Extensions {
240
  'about' => AI1WMSE_PLUGIN_ABOUT,
241
  'basename' => AI1WMSE_PLUGIN_BASENAME,
242
  'version' => AI1WMSE_VERSION,
243
- 'requires' => '3.44',
244
  'short' => AI1WMSE_PLUGIN_SHORT,
245
  );
246
  }
@@ -266,7 +266,7 @@ class Ai1wm_Extensions {
266
  'about' => AI1WMLE_PLUGIN_ABOUT,
267
  'basename' => AI1WMLE_PLUGIN_BASENAME,
268
  'version' => AI1WMLE_VERSION,
269
- 'requires' => '2.39',
270
  'short' => AI1WMLE_PLUGIN_SHORT,
271
  );
272
  }
@@ -279,7 +279,7 @@ class Ai1wm_Extensions {
279
  'about' => AI1WMWE_PLUGIN_ABOUT,
280
  'basename' => AI1WMWE_PLUGIN_BASENAME,
281
  'version' => AI1WMWE_VERSION,
282
- 'requires' => '1.12',
283
  'short' => AI1WMWE_PLUGIN_SHORT,
284
  );
285
  }
45
  'about' => AI1WMZE_PLUGIN_ABOUT,
46
  'basename' => AI1WMZE_PLUGIN_BASENAME,
47
  'version' => AI1WMZE_VERSION,
48
+ 'requires' => '1.18',
49
  'short' => AI1WMZE_PLUGIN_SHORT,
50
  );
51
  }
58
  'about' => AI1WMAE_PLUGIN_ABOUT,
59
  'basename' => AI1WMAE_PLUGIN_BASENAME,
60
  'version' => AI1WMAE_VERSION,
61
+ 'requires' => '1.22',
62
  'short' => AI1WMAE_PLUGIN_SHORT,
63
  );
64
  }
71
  'about' => AI1WMBE_PLUGIN_ABOUT,
72
  'basename' => AI1WMBE_PLUGIN_BASENAME,
73
  'version' => AI1WMBE_VERSION,
74
+ 'requires' => '1.30',
75
  'short' => AI1WMBE_PLUGIN_SHORT,
76
  );
77
  }
84
  'about' => AI1WMIE_PLUGIN_ABOUT,
85
  'basename' => AI1WMIE_PLUGIN_BASENAME,
86
  'version' => AI1WMIE_VERSION,
87
+ 'requires' => '1.28',
88
  'short' => AI1WMIE_PLUGIN_SHORT,
89
  );
90
  }
97
  'about' => AI1WMDE_PLUGIN_ABOUT,
98
  'basename' => AI1WMDE_PLUGIN_BASENAME,
99
  'version' => AI1WMDE_VERSION,
100
+ 'requires' => '3.49',
101
  'short' => AI1WMDE_PLUGIN_SHORT,
102
  );
103
  }
123
  'about' => AI1WMFE_PLUGIN_ABOUT,
124
  'basename' => AI1WMFE_PLUGIN_BASENAME,
125
  'version' => AI1WMFE_VERSION,
126
+ 'requires' => '2.54',
127
  'short' => AI1WMFE_PLUGIN_SHORT,
128
  );
129
  }
136
  'about' => AI1WMCE_PLUGIN_ABOUT,
137
  'basename' => AI1WMCE_PLUGIN_BASENAME,
138
  'version' => AI1WMCE_VERSION,
139
+ 'requires' => '1.19',
140
  'short' => AI1WMCE_PLUGIN_SHORT,
141
  );
142
  }
149
  'about' => AI1WMGE_PLUGIN_ABOUT,
150
  'basename' => AI1WMGE_PLUGIN_BASENAME,
151
  'version' => AI1WMGE_VERSION,
152
+ 'requires' => '2.53',
153
  'short' => AI1WMGE_PLUGIN_SHORT,
154
  );
155
  }
162
  'about' => AI1WMRE_PLUGIN_ABOUT,
163
  'basename' => AI1WMRE_PLUGIN_BASENAME,
164
  'version' => AI1WMRE_VERSION,
165
+ 'requires' => '1.18',
166
  'short' => AI1WMRE_PLUGIN_SHORT,
167
  );
168
  }
175
  'about' => AI1WMEE_PLUGIN_ABOUT,
176
  'basename' => AI1WMEE_PLUGIN_BASENAME,
177
  'version' => AI1WMEE_VERSION,
178
+ 'requires' => '1.27',
179
  'short' => AI1WMEE_PLUGIN_SHORT,
180
  );
181
  }
188
  'about' => AI1WMME_PLUGIN_ABOUT,
189
  'basename' => AI1WMME_PLUGIN_BASENAME,
190
  'version' => AI1WMME_VERSION,
191
+ 'requires' => '3.75',
192
  'short' => AI1WMME_PLUGIN_SHORT,
193
  );
194
  }
201
  'about' => AI1WMOE_PLUGIN_ABOUT,
202
  'basename' => AI1WMOE_PLUGIN_BASENAME,
203
  'version' => AI1WMOE_VERSION,
204
+ 'requires' => '1.41',
205
  'short' => AI1WMOE_PLUGIN_SHORT,
206
  );
207
  }
214
  'about' => AI1WMPE_PLUGIN_ABOUT,
215
  'basename' => AI1WMPE_PLUGIN_BASENAME,
216
  'version' => AI1WMPE_VERSION,
217
+ 'requires' => '1.16',
218
  'short' => AI1WMPE_PLUGIN_SHORT,
219
  );
220
  }
227
  'about' => AI1WMNE_PLUGIN_ABOUT,
228
  'basename' => AI1WMNE_PLUGIN_BASENAME,
229
  'version' => AI1WMNE_VERSION,
230
+ 'requires' => '1.13',
231
  'short' => AI1WMNE_PLUGIN_SHORT,
232
  );
233
  }
240
  'about' => AI1WMSE_PLUGIN_ABOUT,
241
  'basename' => AI1WMSE_PLUGIN_BASENAME,
242
  'version' => AI1WMSE_VERSION,
243
+ 'requires' => '3.47',
244
  'short' => AI1WMSE_PLUGIN_SHORT,
245
  );
246
  }
266
  'about' => AI1WMLE_PLUGIN_ABOUT,
267
  'basename' => AI1WMLE_PLUGIN_BASENAME,
268
  'version' => AI1WMLE_VERSION,
269
+ 'requires' => '2.40',
270
  'short' => AI1WMLE_PLUGIN_SHORT,
271
  );
272
  }
279
  'about' => AI1WMWE_PLUGIN_ABOUT,
280
  'basename' => AI1WMWE_PLUGIN_BASENAME,
281
  'version' => AI1WMWE_VERSION,
282
+ 'requires' => '1.15',
283
  'short' => AI1WMWE_PLUGIN_SHORT,
284
  );
285
  }
lib/model/export/class-ai1wm-export-config.php CHANGED
@@ -135,7 +135,7 @@ class Ai1wm_Export_Config {
135
  $config['WordPress'] = array( 'Version' => $wp_version, 'Content' => WP_CONTENT_DIR );
136
 
137
  // Set database version
138
- $config['Database'] = array( 'Version' => $mysql->version() );
139
 
140
  // Set PHP version
141
  $config['PHP'] = array( 'Version' => PHP_VERSION );
135
  $config['WordPress'] = array( 'Version' => $wp_version, 'Content' => WP_CONTENT_DIR );
136
 
137
  // Set database version
138
+ $config['Database'] = array( 'Version' => $mysql->version(), 'Charset' => DB_CHARSET, 'Collate' => DB_COLLATE );
139
 
140
  // Set PHP version
141
  $config['PHP'] = array( 'Version' => PHP_VERSION );
lib/vendor/servmask/filesystem/class-ai1wm-directory.php CHANGED
@@ -46,21 +46,28 @@ class Ai1wm_Directory {
46
  * @return boolean
47
  */
48
  public static function delete( $path ) {
49
- // Iterate over directory
50
- $iterator = new Ai1wm_Recursive_Directory_Iterator( $path );
 
 
51
 
52
- // Recursively iterate over directory
53
- $iterator = new Ai1wm_Recursive_Iterator_Iterator( $iterator, RecursiveIteratorIterator::CHILD_FIRST, RecursiveIteratorIterator::CATCH_GET_CHILD );
54
 
55
- // Remove files and directories
56
- foreach ( $iterator as $item ) {
57
- if ( $item->isDir() ) {
58
- @rmdir( $item->getPathname() );
59
- } else {
60
- @unlink( $item->getPathname() );
 
 
 
61
  }
 
 
62
  }
63
 
64
- return @rmdir( $path );
65
  }
66
  }
46
  * @return boolean
47
  */
48
  public static function delete( $path ) {
49
+ if ( @is_dir( $path ) ) {
50
+ try {
51
+ // Iterate over directory
52
+ $iterator = new Ai1wm_Recursive_Directory_Iterator( $path );
53
 
54
+ // Recursively iterate over directory
55
+ $iterator = new Ai1wm_Recursive_Iterator_Iterator( $iterator, RecursiveIteratorIterator::CHILD_FIRST, RecursiveIteratorIterator::CATCH_GET_CHILD );
56
 
57
+ // Remove files and directories
58
+ foreach ( $iterator as $item ) {
59
+ if ( $item->isDir() ) {
60
+ @rmdir( $item->getPathname() );
61
+ } else {
62
+ @unlink( $item->getPathname() );
63
+ }
64
+ }
65
+ } catch ( Exception $e ) {
66
  }
67
+
68
+ return @rmdir( $path );
69
  }
70
 
71
+ return false;
72
  }
73
  }
lib/view/assets/css/backups.min.css CHANGED
@@ -1 +1 @@
1
- @charset "UTF-8";@-webkit-keyframes ai1wm-rotate{0%{-webkit-transform:rotateZ(0);transform:rotateZ(0)}25%{-webkit-transform:rotateZ(-90deg);transform:rotateZ(-90deg)}50%{-webkit-transform:rotateZ(-180deg);transform:rotateZ(-180deg)}75%{-webkit-transform:rotateZ(-270deg);transform:rotateZ(-270deg)}to{-webkit-transform:rotateZ(-360deg);transform:rotateZ(-360deg)}}@keyframes ai1wm-rotate{0%{-webkit-transform:rotateZ(0);transform:rotateZ(0)}25%{-webkit-transform:rotateZ(-90deg);transform:rotateZ(-90deg)}50%{-webkit-transform:rotateZ(-180deg);transform:rotateZ(-180deg)}75%{-webkit-transform:rotateZ(-270deg);transform:rotateZ(-270deg)}to{-webkit-transform:rotateZ(-360deg);transform:rotateZ(-360deg)}}@-webkit-keyframes ai1wm-emphasize{0%,to{-webkit-transform:scale(1);transform:scale(1)}50%{-webkit-transform:scale(1.2);transform:scale(1.2)}}@keyframes ai1wm-emphasize{0%,to{-webkit-transform:scale(1);transform:scale(1)}50%{-webkit-transform:scale(1.2);transform:scale(1.2)}}@-webkit-keyframes ai1wm-fadein{0%{-webkit-transform:scale(0);transform:scale(0)}50%{-webkit-transform:scale(1.5);transform:scale(1.5)}to{-webkit-transform:scale(1);transform:scale(1)}}@keyframes ai1wm-fadein{0%{-webkit-transform:scale(0);transform:scale(0)}50%{-webkit-transform:scale(1.5);transform:scale(1.5)}to{-webkit-transform:scale(1);transform:scale(1)}}.ai1wm-button-group{border:2px solid #27ae60;background-color:transparent;color:#27ae60;border-radius:5px;cursor:pointer;text-transform:uppercase;font-weight:600;transition:background-color .2s ease-out;display:inline-block;text-align:left}.ai1wm-button-group.ai1wm-button-export,.ai1wm-button-group.ai1wm-button-import{box-sizing:content-box}.ai1wm-button-group.ai1wm-button-export.ai1wm-open>.ai1wm-dropdown-menu{height:448px;border-top:1px solid #27ae60}.ai1wm-button-group.ai1wm-button-import.ai1wm-open>.ai1wm-dropdown-menu{height:476px;border-top:1px solid #27ae60}.ai1wm-button-group .ai1wm-button-main{position:relative;padding:6px 50px 6px 25px;box-sizing:content-box}.ai1wm-button-group .ai1wm-dropdown-menu{height:0;overflow:hidden;transition:height .2s cubic-bezier(.19,1,.22,1);border-top:none}.ai1wm-dropdown-menu{list-style:none}.ai1wm-dropdown-menu,.ai1wm-dropdown-menu li{margin:0!important;padding:0}.ai1wm-dropdown-menu li a,.ai1wm-dropdown-menu li a:visited{display:block;padding:5px 26px;text-decoration:none;color:#27ae60;text-align:left;box-sizing:content-box}.ai1wm-dropdown-menu li a:hover,.ai1wm-dropdown-menu li a:visited:hover{text-decoration:none;color:#111}.ai1mw-lines{position:absolute;width:12px;height:10px;top:9px;right:20px}.ai1wm-line{position:absolute;width:100%;height:2px;margin:auto;background:#27ae60;transition:all .2s ease-in-out}.ai1wm-line-first{top:0;left:0}div.ai1wm-open .ai1wm-line-first,div.ai1wm-open .ai1wm-line-third{top:50%}.ai1wm-line-second{top:50%;left:0}.ai1wm-line-third{top:100%;left:0}.ai1wm-button-blue,.ai1wm-button-gray,.ai1wm-button-green,.ai1wm-button-green-small,.ai1wm-button-red{display:inline-block;border:2px solid #95a5a6;background-color:transparent;color:#95a5a6;border-radius:5px;cursor:pointer;padding:5px 25px 5px 26px;text-transform:uppercase;font-weight:600;outline:0;transition:background-color .2s ease-out;text-decoration:none}.ai1wm-button-gray:hover{background-color:#95a5a6;color:#fff}.ai1wm-button-blue,.ai1wm-button-green,.ai1wm-button-green-small,.ai1wm-button-red{border:2px solid #27ae60;color:#27ae60}.ai1wm-button-green:hover{background-color:#27ae60;color:#fff}.ai1wm-button-blue,.ai1wm-button-green-small,.ai1wm-button-red{border:2px solid #6eb649;color:#6eb649}.ai1wm-button-green-small:hover{background-color:#6eb649;color:#fff}.ai1wm-button-blue,.ai1wm-button-red{border:2px solid #00aff0;color:#00aff0}.ai1wm-button-blue:hover{background-color:#00aff0;color:#fff}.ai1wm-button-red{border:2px solid #e74c3c;color:#e74c3c}.ai1wm-button-red:hover{background-color:#e74c3c;color:#fff}.ai1wm-button-blue[disabled=disabled],.ai1wm-button-green-small[disabled=disabled],.ai1wm-button-green[disabled=disabled],.ai1wm-button-red[disabled=disabled]{opacity:.6;cursor:default}.ai1wm-button-blue[disabled=disabled]:hover{color:#00aff0}.ai1wm-button-red[disabled=disabled]:hover{color:#e74c3c}.ai1wm-button-green[disabled=disabled]:hover{color:#27ae60}.ai1wm-button-blue[disabled=disabled]:hover,.ai1wm-button-green-small[disabled=disabled]:hover,.ai1wm-button-green[disabled=disabled]:hover,.ai1wm-button-red[disabled=disabled]:hover{background:0 0}.ai1wm-message-close-button{position:absolute;right:10px;top:6px;text-decoration:none;font-size:10px}input[type=radio].ai1wm-flat-radio-button{display:none}input[type=radio].ai1wm-flat-radio-button+a i,input[type=radio].ai1wm-flat-radio-button+label i{vertical-align:middle;float:left;width:25px;height:25px;border-radius:50%;background:0 0;border:2px solid #ccc;content:" ";cursor:pointer;position:relative;box-sizing:content-box}input[type=radio].ai1wm-flat-radio-button:checked+a i,input[type=radio].ai1wm-flat-radio-button:checked+label i{background-color:#d9d9d9;border-color:#6f6f6f}.ai1wm-clear{*zoom:1;clear:both}.ai1wm-clear:after,.ai1wm-clear:before{content:" ";display:table}.ai1wm-clear:after{clear:both}.ai1wm-container .ai1wm-row label{position:relative;top:-1px}.ai1wm-container .ai1wm-row label:after{content:"\200E"}.ai1wm-share-button-container{text-align:center}.ai1wm-share-button-container .ai1wm-share-button{text-decoration:none;margin:10px;font-size:30px}.ai1wm-report-problem{position:relative;float:right}.ai1wm-report-problem-dialog{position:absolute;z-index:999;width:280px;right:0;background-color:#fff;margin:6px 0 0;padding:15px 15px 10px;border:1px solid #d6d6d6;border-radius:3px;box-shadow:0 1px 0 0 #fff inset;display:none}.ai1wm-report-email{width:100%;font-weight:400;font-size:.8rem;height:2.3rem;line-height:2.3rem;border-radius:5px;margin-bottom:4px;padding:0 10px}.ai1wm-report-message{width:100%;border-radius:3px;font-size:.8rem;padding:6px 10px;resize:none}.ai1wm-feedback-cancel:active,.ai1wm-feedback-cancel:link,.ai1wm-feedback-cancel:visited,.ai1wm-report-cancel:active,.ai1wm-report-cancel:link,.ai1wm-report-cancel:visited{float:left;line-height:34px;outline:0;text-decoration:none;color:#e74c3c}.ai1wm-form-submit{float:right}.ai1wm-report-active{display:block}.ai1wm-report-terms-segment{font-size:.7rem;line-height:1rem;margin:4px 0 8px}.ai1wm-report-terms-segment>.ai1wm-report-terms{border-radius:3px}.ai1wm-import-info a,.ai1wm-no-underline{text-decoration:none}.ai1wm-top-negative-four{top:-4px}.ai1wm-feedback-form{display:none}.ai1wm-feedback-types{margin:0;padding:0;list-style:none}.ai1wm-feedback-types li{margin:14px 0;padding:0}.ai1wm-feedback-types>li>a>span,.ai1wm-feedback-types>li>label>span{display:inline-block;padding:5px 0 6px 8px}.ai1wm-feedback-types>li>a{height:29px;outline:0;color:#333;text-deciration:none}.ai1wm-loader{display:inline-block;width:128px;height:128px;position:relative;-webkit-animation:ai1wm-rotate 1.5s infinite linear;animation:ai1wm-rotate 1.5s infinite linear;background:url(../img/logo-128x128.png);background-repeat:no-repeat;background-position:center center}.ai1wm-hide{display:none}.ai1wm-label{border:1px solid #5cb85c;background-color:transparent;color:#5cb85c;cursor:pointer;text-transform:uppercase;font-weight:600;outline:0;transition:background-color .2s ease-out;padding:.2em .6em;font-size:.8em;border-radius:5px}.ai1wm-label:hover{background-color:#5cb85c;color:#fff}.ai1wm-dialog-message{text-align:left;line-height:1.5em}.ai1wm-import-info{display:inline-block;font-size:12px;font-weight:700;margin-top:16px}[class*=" ai1wm-icon-"],[class^=ai1wm-icon-]{font-family:'servmask';speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.ai1wm-icon-file-zip:before{content:"\e60f"}.ai1wm-icon-folder:before{content:"\e60e"}.ai1wm-icon-file:before{content:"\e60b"}.ai1wm-icon-file-content:before{content:"\e60c"}.ai1wm-icon-cloud-upload:before{content:"\e600"}.ai1wm-icon-history:before{content:"\e603"}.ai1wm-icon-notification:before{content:"\e619"}.ai1wm-icon-arrow-down:before{content:"\e604"}.ai1wm-icon-close:before{content:"\e61a"}.ai1wm-icon-wordpress2:before{content:"\e620"}.ai1wm-icon-arrow-right:before{content:"\e605"}.ai1wm-icon-plus2:before{content:"\e607"}.ai1wm-icon-edit-pencil:before{content:"\e900"}.ai1wm-icon-export:before{content:"\e601"}.ai1wm-icon-publish:before{content:"\e602"}.ai1wm-icon-paperplane:before{content:"\e608"}.ai1wm-icon-help:before{content:"\e609"}.ai1wm-icon-chevron-right:before{content:"\e60d"}.ai1wm-icon-dropbox:before{content:"\e606"}.ai1wm-icon-gear:before{content:"\e60a"}.ai1wm-icon-database:before{content:"\e964"}.ai1wm-icon-upload2:before{content:"\e9c6"}.ai1wm-icon-checkmark:before{content:"\ea10"}.ai1wm-icon-checkmark2:before{content:"\ea11"}.ai1wm-icon-enter:before{content:"\ea13"}.ai1wm-icon-exit:before{content:"\ea14"}.ai1wm-icon-amazon:before{content:"\ea87"}.ai1wm-icon-onedrive:before{content:"\eaaf"}@media (min-width:855px){.ai1wm-row{margin-right:399px}.ai1wm-row:after,.ai1wm-row:before{content:" ";display:table}.ai1wm-row:after{clear:both}.ai1wm-left{float:left;width:100%}.ai1wm-right{float:right;width:377px;margin-right:-399px}.ai1wm-right .ai1wm-sidebar{width:100%}.ai1wm-right .ai1wm-segment{width:333px;border:1px solid #d6d6d6;border-radius:3px;box-shadow:inset 0 1px 0 0 #fff;color:#333;background-color:#f9f9f9;padding:20px;text-decoration:none;text-shadow:0 1px 0 #fff;background-clip:padding-box}.ai1wm-right .ai1wm-segment h2{margin:22px 0 0;padding:0;font-weight:700;font-size:14px;text-transform:uppercase;text-align:center}.ai1wm-right .ai1wm-feedback-email{width:100%;font-weight:400;font-size:.8rem;height:2.3rem;line-height:2.3rem;border-radius:5px;margin-bottom:4px;padding:0 10px}.ai1wm-right .ai1wm-feedback-message{width:100%;border-radius:3px;font-size:.8rem;padding:6px 10px;resize:none}.ai1wm-right .ai1wm-feedback-terms-segment{font-size:.7rem;line-height:1rem;margin:4px 0 8px}.ai1wm-right .ai1wm-feedback-terms-segment>.ai1wm-feedback-terms{border-radius:3px}}.ai1wm-holder{position:relative;border:1px solid #d6d6d6;border-radius:3px;box-shadow:inset 0 1px 0 0 #fff;padding:20px;background:#f9f9f9}.ai1wm-holder h1{float:left;font-weight:300;font-size:22px;text-transform:uppercase}.ai1wm-holder h1 i{position:relative;top:2px}@media (max-width:854px){.ai1wm-container{margin-left:10px!important}.ai1wm-right,.ai1wm-row{margin-right:0!important}.ai1wm-right{float:left!important;width:100%!important;margin-top:18px}.ai1wm-right .ai1wm-sidebar{width:auto!important;border:1px solid #d6d6d6;border-radius:3px;box-shadow:inset 0 1px 0 0 #fff;padding:20px;background:#f9f9f9}.ai1wm-right .ai1wm-feedback-email{width:100%;font-weight:400;font-size:.8rem;height:2.3rem;line-height:2.3rem;border-radius:5px;margin-bottom:4px;padding:0 10px}.ai1wm-right .ai1wm-feedback-message{width:100%;border-radius:3px;font-size:.8rem;padding:6px 10px;resize:none}.ai1wm-right .ai1wm-feedback-terms-segment{font-size:.7rem;line-height:1rem;margin:4px 0 8px;border-radius:3px}.ai1wm-right .ai1wm-feedback-terms-segment>.ai1wm-feedback-terms{border-radius:3px}}.ai1wm-container{margin:20px 20px 0 2px}.ai1wm-container:after,.ai1wm-container:before{content:" ";display:table}.ai1wm-container:after{clear:both}.ai1wm-replace-row{width:100%;box-shadow:outset 0 1px 0 0 white;border-radius:3px;color:#333;font-size:11px;font-weight:700;background-color:#f9f9f9;text-decoration:none;text-shadow:0 1px 0 #fff;background-clip:padding-box;margin-bottom:10px}.ai1wm-field{margin-bottom:4px}.ai1wm-field input[type=text],.ai1wm-field textarea{width:100%;font-weight:400}.ai1wm-field-set{margin-top:18px}.ai1wm-message{-moz-box-sizing:border-box;background-color:#efefef;border-radius:4px;color:rgba(0,0,0,.6);height:auto;margin:10px 0;min-height:18px;padding:6px 10px;position:relative;border:1px solid;transition:opacity .1s ease 0s,color .1s ease 0s,background .1s ease 0s,box-shadow .1s ease 0s}.ai1wm-message.ai1wm-success-message{background-color:#f2f8f0;color:#119000;font-size:12px}.ai1wm-message.ai1wm-info-message{background-color:#d9edf7;color:#31708f;font-size:11px}.ai1wm-message.ai1wm-error-message{background-color:#f1d7d7;color:#a95252;font-size:12px}.ai1wm-message.ai1wm-red-message{color:#d95c5c;border:2px solid #d95c5c;background-color:transparent}.ai1wm-message.ai1wm-red-message h3{margin:.4em 0;color:#d95c5c}.ai1wm-message p{margin:4px 0;font-size:12px}.ai1wm-message-warning{display:block;font-size:14px;line-height:18px;padding:12px 20px;margin:0 0 22px;background-color:#f9f9f9;border:1px solid #d6d6d6;border-radius:3px;box-shadow:0 1px 0 0 #fff inset;border-left:4px solid #ffba00}.ai1wm-overlay{display:none;position:fixed;top:0;left:0;width:100%;height:100%;background-color:rgba(0,0,0,.7);z-index:100001}.ai1wm-modal-container{position:fixed;display:none;top:50%;left:50%;z-index:100002;width:480px;height:auto;padding:16px;-webkit-transform:translate(-240px,-94px);transform:translate(-240px,-94px);border:1px solid #fff;box-shadow:0 2px 6px #292929;border-radius:6px;background:#f6f6f6;box-sizing:border-box;text-align:center}.ai1wm-modal-container section{display:block;min-height:102px}.ai1wm-holder h1,.ai1wm-modal-container section h1{margin:0;padding:0}.ai1wm-modal-container section h1 .ai1wm-title-green{color:#27ae60;font-size:.7em}.ai1wm-modal-container section h1 .ai1wm-title-red{color:#e74c3c;font-size:20px}.ai1wm-modal-container section h1 .ai1wm-title-grey{color:gray;font-size:20px}.ai1wm-modal-container section h1 .ai1wm-loader{width:32px;height:32px;background:url(../img/logo-32x32.png)}.ai1wm-modal-container section h1 .ai1wm-icon-notification{font-size:1.2em;color:#e74c3c}.ai1wm-modal-container section p{margin:0;padding:12px 0}.ai1wm-modal-container section p .ai1wm-modal-sites p{padding:4px 10px;text-align:left}.ai1wm-modal-container section p .ai1wm-modal-sites input,.ai1wm-modal-container section p .ai1wm-modal-sites select{padding:0 6px;width:100%;border-radius:3px;height:30px;line-height:30px}.ai1wm-modal-container section p .ai1wm-modal-subtitle-green{color:#27ae60}.ai1wm-modal-container section p .ai1wm-modal-subtitle-red{color:#e74c3c}.ai1wm-modal-container section p .ai1wm-modal-subdescription{display:block;text-align:left}.ai1wm-modal-container section p a.ai1wm-button-green{display:inline-block;position:relative;top:26px}.ai1wm-modal-container section p a.ai1wm-emphasize{-webkit-animation:ai1wm-emphasize 1s infinite;animation:ai1wm-emphasize 1s infinite}.ai1wm-modal-container section p em{display:block;color:#34495e;font-style:normal}.ai1wm-modal-container section p.ai1wm-import-modal-content{text-align:left}.ai1wm-modal-container section p.ai1wm-import-modal-content-done{text-align:left;padding:1.62em .5em}.ai1wm-modal-container .ai1wm-import-modal-actions{border-top:1px solid #ccc;padding-top:1em;text-align:right}.ai1wm-modal-container .ai1wm-import-modal-actions .ai1wm-button-gray{margin-right:1em}.ai1wm-modal-container .ai1wm-import-modal-notice{border-top:1px solid #ccc}.ai1wm-modal-container .ai1wm-import-modal-notice p{font-weight:700;margin:0;padding-top:16px;text-align:center}#ai1wm-backup-progress,#ai1wm-backup-progress-bar{background-color:#dfdfdf;height:20px;width:350px;border-radius:15px}#ai1wm-backup-progress-bar{background-color:#00aff0;line-height:20px;color:#fff;width:0;text-align:center}.ai1wm-backups{width:100%;margin:1em 0 2em;padding:0;border-collapse:collapse}.ai1wm-backups .ai1wm-column-name{text-align:left;word-wrap:break-word;word-break:break-all}.ai1wm-backups .ai1wm-column-date,.ai1wm-backups .ai1wm-column-size{text-align:center;white-space:nowrap}.ai1wm-backups .ai1wm-column-actions{text-align:right;white-space:nowrap}.ai1wm-backups thead th{padding:4px 6px;text-align:left;font-size:1.2em}.ai1wm-backups tbody tr:first-child{border-top:1px solid #ccc}.ai1wm-backups tbody tr{border-bottom:1px solid #ccc}.ai1wm-backups tbody tr:hover:not(.ai1wm-add-label-holder){background:rgba(0,0,0,.1)}.ai1wm-backups tbody tr:hover:not(.ai1wm-add-label-holder) .ai1wm-add-description{display:inline}.ai1wm-backups tbody td{padding:4px 6px;box-sizing:border-box;line-height:24px}.ai1wm-backups tbody td.ai1wm-backup-actions{text-align:right;width:250px}.ai1wm-backups tbody td.ai1wm-backup-actions span{transition:width 2s cubic-bezier(.19,1,.22,1);display:inline-block;width:0;text-align:center;visibility:hidden}.ai1wm-backups tbody td.ai1wm-backup-actions .ai1wm-backup-delete,.ai1wm-backups tbody td.ai1wm-backup-actions .ai1wm-backup-download,.ai1wm-backups tbody td.ai1wm-backup-actions .ai1wm-backup-restore{border-radius:50px;margin:0 2px;padding:4px 8px}.ai1wm-backups tbody td.ai1wm-backup-actions .ai1wm-button-on span{width:80px;visibility:visible}.ai1wm-backups .spinner{visibility:visible;margin:0}.ai1wm-backups .ai1wm-icon-edit-pencil{display:none;background-color:none;cursor:pointer}.ai1wm-backups .ai1wm-add-description:hover .ai1wm-icon-edit-pencil,.ai1wm-backups .ai1wm-backup-label:hover .ai1wm-icon-edit-pencil{display:inline}.ai1wm-backups .ai1wm-add-description{font-size:12px;cursor:pointer;font-style:italic;display:none}.ai1wm-backups .ai1wm-backup-label-colored{display:inline-block;padding:.25em .4em;font-size:85%;font-weight:400;line-height:1;text-align:center;vertical-align:baseline;border-radius:.25rem;color:#000;background-color:#fad390;cursor:pointer;word-wrap:break-word;word-break:break-all;white-space:normal}.ai1wm-backups .ai1wm-backup-label-colored .ai1wm-icon-edit-pencil{background-color:none}.ai1wm-backups .ai1wm-add-label-holder{border-bottom:none}.ai1wm-backups .ai1wm-add-label-holder td{padding:0}.ai1wm-backups .ai1wm-add-label-holder input{border-radius:5px;border:1px solid #ccc}.ai1wm-backups-empty{line-height:2em}
1
+ @charset "UTF-8";@-webkit-keyframes ai1wm-rotate{0%{-webkit-transform:rotateZ(0);transform:rotateZ(0)}25%{-webkit-transform:rotateZ(-90deg);transform:rotateZ(-90deg)}50%{-webkit-transform:rotateZ(-180deg);transform:rotateZ(-180deg)}75%{-webkit-transform:rotateZ(-270deg);transform:rotateZ(-270deg)}to{-webkit-transform:rotateZ(-360deg);transform:rotateZ(-360deg)}}@keyframes ai1wm-rotate{0%{-webkit-transform:rotateZ(0);transform:rotateZ(0)}25%{-webkit-transform:rotateZ(-90deg);transform:rotateZ(-90deg)}50%{-webkit-transform:rotateZ(-180deg);transform:rotateZ(-180deg)}75%{-webkit-transform:rotateZ(-270deg);transform:rotateZ(-270deg)}to{-webkit-transform:rotateZ(-360deg);transform:rotateZ(-360deg)}}@-webkit-keyframes ai1wm-emphasize{0%,to{-webkit-transform:scale(1);transform:scale(1)}50%{-webkit-transform:scale(1.2);transform:scale(1.2)}}@keyframes ai1wm-emphasize{0%,to{-webkit-transform:scale(1);transform:scale(1)}50%{-webkit-transform:scale(1.2);transform:scale(1.2)}}@-webkit-keyframes ai1wm-fadein{0%{-webkit-transform:scale(0);transform:scale(0)}50%{-webkit-transform:scale(1.5);transform:scale(1.5)}to{-webkit-transform:scale(1);transform:scale(1)}}@keyframes ai1wm-fadein{0%{-webkit-transform:scale(0);transform:scale(0)}50%{-webkit-transform:scale(1.5);transform:scale(1.5)}to{-webkit-transform:scale(1);transform:scale(1)}}.ai1wm-button-group{border:2px solid #27ae60;background-color:transparent;color:#27ae60;border-radius:5px;cursor:pointer;text-transform:uppercase;font-weight:600;transition:background-color .2s ease-out;display:inline-block;text-align:left}.ai1wm-button-group.ai1wm-button-export,.ai1wm-button-group.ai1wm-button-import{box-sizing:content-box}.ai1wm-button-group.ai1wm-button-export.ai1wm-open>.ai1wm-dropdown-menu{height:448px;border-top:1px solid #27ae60}.ai1wm-button-group.ai1wm-button-import.ai1wm-open>.ai1wm-dropdown-menu{height:476px;border-top:1px solid #27ae60}.ai1wm-button-group .ai1wm-button-main{position:relative;padding:6px 50px 6px 25px;box-sizing:content-box}.ai1wm-button-group .ai1wm-dropdown-menu{height:0;overflow:hidden;transition:height .2s cubic-bezier(.19,1,.22,1);border-top:none}.ai1wm-dropdown-menu{list-style:none}.ai1wm-dropdown-menu,.ai1wm-dropdown-menu li{margin:0!important;padding:0}.ai1wm-dropdown-menu li a,.ai1wm-dropdown-menu li a:visited{display:block;padding:5px 26px;text-decoration:none;color:#27ae60;text-align:left;box-sizing:content-box}.ai1wm-dropdown-menu li a:hover,.ai1wm-dropdown-menu li a:visited:hover{text-decoration:none;color:#111}.ai1mw-lines{position:absolute;width:12px;height:10px;top:9px;right:20px}.ai1wm-line{position:absolute;width:100%;height:2px;margin:auto;background:#27ae60;transition:all .2s ease-in-out}.ai1wm-line-first{top:0;left:0}div.ai1wm-open .ai1wm-line-first,div.ai1wm-open .ai1wm-line-third{top:50%}.ai1wm-line-second{top:50%;left:0}.ai1wm-line-third{top:100%;left:0}.ai1wm-button-blue,.ai1wm-button-gray,.ai1wm-button-green,.ai1wm-button-green-small,.ai1wm-button-red{display:inline-block;border:2px solid #95a5a6;background-color:transparent;color:#95a5a6;border-radius:5px;cursor:pointer;padding:5px 25px 5px 26px;text-transform:uppercase;font-weight:600;outline:0;transition:background-color .2s ease-out;text-decoration:none}.ai1wm-button-gray:hover{background-color:#95a5a6;color:#fff}.ai1wm-button-blue,.ai1wm-button-green,.ai1wm-button-green-small,.ai1wm-button-red{border:2px solid #27ae60;color:#27ae60}.ai1wm-button-green:hover{background-color:#27ae60;color:#fff}.ai1wm-button-blue,.ai1wm-button-green-small,.ai1wm-button-red{border:2px solid #6eb649;color:#6eb649}.ai1wm-button-green-small:hover{background-color:#6eb649;color:#fff}.ai1wm-button-blue,.ai1wm-button-red{border:2px solid #00aff0;color:#00aff0}.ai1wm-button-blue:hover{background-color:#00aff0;color:#fff}.ai1wm-button-red{border:2px solid #e74c3c;color:#e74c3c}.ai1wm-button-red:hover{background-color:#e74c3c;color:#fff}.ai1wm-button-blue[disabled=disabled],.ai1wm-button-green-small[disabled=disabled],.ai1wm-button-green[disabled=disabled],.ai1wm-button-red[disabled=disabled]{opacity:.6;cursor:default}.ai1wm-button-blue[disabled=disabled]:hover{color:#00aff0}.ai1wm-button-red[disabled=disabled]:hover{color:#e74c3c}.ai1wm-button-green[disabled=disabled]:hover{color:#27ae60}.ai1wm-button-blue[disabled=disabled]:hover,.ai1wm-button-green-small[disabled=disabled]:hover,.ai1wm-button-green[disabled=disabled]:hover,.ai1wm-button-red[disabled=disabled]:hover{background:0 0}.ai1wm-message-close-button{position:absolute;right:10px;top:6px;text-decoration:none;font-size:10px}input[type=radio].ai1wm-flat-radio-button{display:none}input[type=radio].ai1wm-flat-radio-button+a i,input[type=radio].ai1wm-flat-radio-button+label i{vertical-align:middle;float:left;width:25px;height:25px;border-radius:50%;background:0 0;border:2px solid #ccc;content:" ";cursor:pointer;position:relative;box-sizing:content-box}input[type=radio].ai1wm-flat-radio-button:checked+a i,input[type=radio].ai1wm-flat-radio-button:checked+label i{background-color:#d9d9d9;border-color:#6f6f6f}.ai1wm-clear{*zoom:1;clear:both}.ai1wm-clear:after,.ai1wm-clear:before{content:" ";display:table}.ai1wm-clear:after{clear:both}.ai1wm-container .ai1wm-row label{position:relative;top:-1px}.ai1wm-container .ai1wm-row label:after{content:"\200E"}.ai1wm-share-button-container{text-align:center}.ai1wm-share-button-container .ai1wm-share-button{text-decoration:none;margin:10px;font-size:30px}.ai1wm-report-problem{position:relative;float:right}.ai1wm-report-problem-dialog{position:absolute;z-index:999;width:280px;right:0;background-color:#fff;margin:6px 0 0;padding:15px 15px 10px;border:1px solid #d6d6d6;border-radius:3px;box-shadow:0 1px 0 0 #fff inset;display:none}.ai1wm-report-email{width:100%;font-weight:400;font-size:.8rem;height:2.3rem;line-height:2.3rem;border-radius:5px;margin-bottom:4px;padding:0 10px}.ai1wm-report-message{width:100%;border-radius:3px;font-size:.8rem;padding:6px 10px;resize:none}.ai1wm-feedback-cancel:active,.ai1wm-feedback-cancel:link,.ai1wm-feedback-cancel:visited,.ai1wm-report-cancel:active,.ai1wm-report-cancel:link,.ai1wm-report-cancel:visited{float:left;line-height:34px;outline:0;text-decoration:none;color:#e74c3c}.ai1wm-form-submit{float:right}.ai1wm-report-active{display:block}.ai1wm-report-terms-segment{font-size:.7rem;line-height:1rem;margin:4px 0 8px}.ai1wm-report-terms-segment>.ai1wm-report-terms{border-radius:3px}.ai1wm-import-info a,.ai1wm-no-underline{text-decoration:none}.ai1wm-top-negative-four{top:-4px}.ai1wm-feedback-form{display:none}.ai1wm-feedback-types{margin:0;padding:0;list-style:none}.ai1wm-feedback-types li{margin:14px 0;padding:0}.ai1wm-feedback-types>li>a>span,.ai1wm-feedback-types>li>label>span{display:inline-block;padding:5px 0 6px 8px}.ai1wm-feedback-types>li>a{height:29px;outline:0;color:#333;text-deciration:none}.ai1wm-loader{display:inline-block;width:128px;height:128px;position:relative;-webkit-animation:ai1wm-rotate 1.5s infinite linear;animation:ai1wm-rotate 1.5s infinite linear;background:url(../img/logo-128x128.png);background-repeat:no-repeat;background-position:center center}.ai1wm-hide{display:none}.ai1wm-label{border:1px solid #5cb85c;background-color:transparent;color:#5cb85c;cursor:pointer;text-transform:uppercase;font-weight:600;outline:0;transition:background-color .2s ease-out;padding:.2em .6em;font-size:.8em;border-radius:5px}.ai1wm-label:hover{background-color:#5cb85c;color:#fff}.ai1wm-dialog-message{text-align:left;line-height:1.5em}.ai1wm-import-info{display:inline-block;font-size:12px;font-weight:700;margin-top:16px}[class*=" ai1wm-icon-"],[class^=ai1wm-icon-]{font-family:'servmask';speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.ai1wm-icon-file-zip:before{content:"\e60f"}.ai1wm-icon-folder:before{content:"\e60e"}.ai1wm-icon-file:before{content:"\e60b"}.ai1wm-icon-file-content:before{content:"\e60c"}.ai1wm-icon-cloud-upload:before{content:"\e600"}.ai1wm-icon-history:before{content:"\e603"}.ai1wm-icon-notification:before{content:"\e619"}.ai1wm-icon-arrow-down:before{content:"\e604"}.ai1wm-icon-close:before{content:"\e61a"}.ai1wm-icon-wordpress2:before{content:"\e620"}.ai1wm-icon-arrow-right:before{content:"\e605"}.ai1wm-icon-plus2:before{content:"\e607"}.ai1wm-icon-edit-pencil:before{content:"\e900"}.ai1wm-icon-export:before{content:"\e601"}.ai1wm-icon-publish:before{content:"\e602"}.ai1wm-icon-paperplane:before{content:"\e608"}.ai1wm-icon-help:before{content:"\e609"}.ai1wm-icon-chevron-right:before{content:"\e60d"}.ai1wm-icon-dropbox:before{content:"\e606"}.ai1wm-icon-gear:before{content:"\e60a"}.ai1wm-icon-database:before{content:"\e964"}.ai1wm-icon-upload2:before{content:"\e9c6"}.ai1wm-icon-checkmark:before{content:"\ea10"}.ai1wm-icon-checkmark2:before{content:"\ea11"}.ai1wm-icon-enter:before{content:"\ea13"}.ai1wm-icon-exit:before{content:"\ea14"}.ai1wm-icon-amazon:before{content:"\ea87"}.ai1wm-icon-onedrive:before{content:"\eaaf"}@media (min-width:855px){.ai1wm-row{margin-right:399px}.ai1wm-row:after,.ai1wm-row:before{content:" ";display:table}.ai1wm-row:after{clear:both}.ai1wm-left{float:left;width:100%}.ai1wm-right{float:right;width:377px;margin-right:-399px}.ai1wm-right .ai1wm-sidebar{width:100%}.ai1wm-right .ai1wm-segment{width:333px;border:1px solid #d6d6d6;border-radius:3px;box-shadow:inset 0 1px 0 0 #fff;color:#333;background-color:#f9f9f9;padding:20px;text-decoration:none;text-shadow:0 1px 0 #fff;background-clip:padding-box}.ai1wm-right .ai1wm-segment h2{margin:22px 0 0;padding:0;font-weight:700;font-size:14px;text-transform:uppercase;text-align:center}.ai1wm-right .ai1wm-feedback-email{width:100%;font-weight:400;font-size:.8rem;height:2.3rem;line-height:2.3rem;border-radius:5px;margin-bottom:4px;padding:0 10px}.ai1wm-right .ai1wm-feedback-message{width:100%;border-radius:3px;font-size:.8rem;padding:6px 10px;resize:none}.ai1wm-right .ai1wm-feedback-terms-segment{font-size:.7rem;line-height:1rem;margin:4px 0 8px}.ai1wm-right .ai1wm-feedback-terms-segment>.ai1wm-feedback-terms{border-radius:3px}}.ai1wm-holder{position:relative;border:1px solid #d6d6d6;border-radius:3px;box-shadow:inset 0 1px 0 0 #fff;padding:20px;background:#f9f9f9}.ai1wm-holder h1{float:left;font-weight:300;font-size:22px;text-transform:uppercase}.ai1wm-holder h1 i{position:relative;top:2px}@media (max-width:854px){.ai1wm-container{margin-left:10px!important}.ai1wm-right,.ai1wm-row{margin-right:0!important}.ai1wm-right{float:left!important;width:100%!important;margin-top:18px}.ai1wm-right .ai1wm-sidebar{width:auto!important;border:1px solid #d6d6d6;border-radius:3px;box-shadow:inset 0 1px 0 0 #fff;padding:20px;background:#f9f9f9}.ai1wm-right .ai1wm-feedback-email{width:100%;font-weight:400;font-size:.8rem;height:2.3rem;line-height:2.3rem;border-radius:5px;margin-bottom:4px;padding:0 10px}.ai1wm-right .ai1wm-feedback-message{width:100%;border-radius:3px;font-size:.8rem;padding:6px 10px;resize:none}.ai1wm-right .ai1wm-feedback-terms-segment{font-size:.7rem;line-height:1rem;margin:4px 0 8px;border-radius:3px}.ai1wm-right .ai1wm-feedback-terms-segment>.ai1wm-feedback-terms{border-radius:3px}}.ai1wm-container{margin:20px 20px 0 2px}.ai1wm-container:after,.ai1wm-container:before{content:" ";display:table}.ai1wm-container:after{clear:both}.ai1wm-replace-row{width:100%;box-shadow:outset 0 1px 0 0 white;border-radius:3px;color:#333;font-size:11px;font-weight:700;background-color:#f9f9f9;text-decoration:none;text-shadow:0 1px 0 #fff;background-clip:padding-box;margin-bottom:10px}.ai1wm-field{margin-bottom:4px}.ai1wm-field input[type=text],.ai1wm-field textarea{width:100%;font-weight:400}.ai1wm-field-set{margin-top:18px}.ai1wm-message{-moz-box-sizing:border-box;background-color:#efefef;border-radius:4px;color:rgba(0,0,0,.6);height:auto;margin:10px 0;min-height:18px;padding:6px 10px;position:relative;border:1px solid;transition:opacity .1s ease 0s,color .1s ease 0s,background .1s ease 0s,box-shadow .1s ease 0s}.ai1wm-message.ai1wm-success-message{background-color:#f2f8f0;color:#119000;font-size:12px}.ai1wm-message.ai1wm-info-message{background-color:#d9edf7;color:#31708f;font-size:11px}.ai1wm-message.ai1wm-error-message{background-color:#f1d7d7;color:#a95252;font-size:12px}.ai1wm-message.ai1wm-red-message{color:#d95c5c;border:2px solid #d95c5c;background-color:transparent}.ai1wm-message.ai1wm-red-message h3{margin:.4em 0;color:#d95c5c}.ai1wm-message p{margin:4px 0;font-size:12px}.ai1wm-message-warning{display:block;font-size:14px;line-height:18px;padding:12px 20px;margin:0 0 22px;background-color:#f9f9f9;border:1px solid #d6d6d6;border-radius:3px;box-shadow:0 1px 0 0 #fff inset;border-left:4px solid #ffba00}.ai1wm-overlay{display:none;position:fixed;top:0;left:0;width:100%;height:100%;background-color:rgba(0,0,0,.7);z-index:100001}.ai1wm-modal-container{position:fixed;display:none;top:50%;left:50%;z-index:100002;width:480px;height:auto;padding:16px;-webkit-transform:translate(-240px,-94px);transform:translate(-240px,-94px);border:1px solid #fff;box-shadow:0 2px 6px #292929;border-radius:6px;background:#f6f6f6;box-sizing:border-box;text-align:center}.ai1wm-modal-container section{display:block;min-height:102px}.ai1wm-holder h1,.ai1wm-modal-container section h1{margin:0;padding:0}.ai1wm-modal-container section h1 .ai1wm-title-green{color:#27ae60;font-size:.7em}.ai1wm-modal-container section h1 .ai1wm-title-red{color:#e74c3c;font-size:20px}.ai1wm-modal-container section h1 .ai1wm-title-grey{color:gray;font-size:20px}.ai1wm-modal-container section h1 .ai1wm-loader{width:32px;height:32px;background:url(../img/logo-32x32.png)}.ai1wm-modal-container section h1 .ai1wm-icon-notification{font-size:1.2em;color:#e74c3c}.ai1wm-modal-container section p{margin:0;padding:12px 0}.ai1wm-modal-container section p .ai1wm-modal-sites p{padding:4px 10px;text-align:left}.ai1wm-modal-container section p .ai1wm-modal-sites input,.ai1wm-modal-container section p .ai1wm-modal-sites select{padding:0 6px;width:100%;border-radius:3px;height:30px;line-height:30px}.ai1wm-modal-container section p .ai1wm-modal-subtitle-green{color:#27ae60}.ai1wm-modal-container section p .ai1wm-modal-subtitle-red{color:#e74c3c}.ai1wm-modal-container section p .ai1wm-modal-subdescription{display:block;text-align:left}.ai1wm-modal-container section p a.ai1wm-button-green{display:inline-block;position:relative;top:26px}.ai1wm-modal-container section p a.ai1wm-emphasize{-webkit-animation:ai1wm-emphasize 1s infinite;animation:ai1wm-emphasize 1s infinite}.ai1wm-modal-container section p em{display:block;color:#34495e;font-style:normal}.ai1wm-modal-container section p.ai1wm-import-modal-content{text-align:left}.ai1wm-modal-container section p.ai1wm-import-modal-content-done{text-align:left;padding:1.62em .5em}.ai1wm-modal-container .ai1wm-import-modal-actions{border-top:1px solid #ccc;padding-top:1em;text-align:right}.ai1wm-modal-container .ai1wm-import-modal-actions .ai1wm-button-gray{margin-right:1em}.ai1wm-modal-container .ai1wm-import-modal-notice{border-top:1px solid #ccc}.ai1wm-modal-container .ai1wm-import-modal-notice p{font-weight:700;margin:0;padding-top:16px;text-align:center}#ai1wm-backup-progress,#ai1wm-backup-progress-bar{background-color:#dfdfdf;height:20px;width:350px;border-radius:15px}#ai1wm-backup-progress-bar{background-color:#00aff0;line-height:20px;color:#fff;width:0;text-align:center}.ai1wm-backups{width:100%;margin:1em 0;padding:0;border-collapse:collapse}.ai1wm-backups .ai1wm-column-name{text-align:left;word-wrap:break-word;word-break:break-all}.ai1wm-backups .ai1wm-column-date,.ai1wm-backups .ai1wm-column-size{text-align:center;white-space:nowrap}.ai1wm-backups .ai1wm-column-actions{text-align:right;white-space:nowrap}.ai1wm-backups thead th{padding:4px 6px;text-align:left;font-size:1.2em}.ai1wm-backups tbody tr:first-child{border-top:1px solid #ccc}.ai1wm-backups tbody tr{border-bottom:1px solid #ccc}.ai1wm-backups tbody tr:hover:not(.ai1wm-add-label-holder){background:rgba(0,0,0,.1)}.ai1wm-backups tbody tr:hover:not(.ai1wm-add-label-holder) .ai1wm-add-description{display:inline}.ai1wm-backups tbody td{padding:4px 6px;box-sizing:border-box;line-height:24px}.ai1wm-backups tbody td.ai1wm-backup-actions{text-align:right;width:250px}.ai1wm-backups tbody td.ai1wm-backup-actions span{transition:width 2s cubic-bezier(.19,1,.22,1);display:inline-block;width:0;text-align:center;visibility:hidden}.ai1wm-backups tbody td.ai1wm-backup-actions .ai1wm-backup-delete,.ai1wm-backups tbody td.ai1wm-backup-actions .ai1wm-backup-download,.ai1wm-backups tbody td.ai1wm-backup-actions .ai1wm-backup-restore{border-radius:50px;margin:0 2px;padding:4px 8px}.ai1wm-backups tbody td.ai1wm-backup-actions .ai1wm-button-on span{width:80px;visibility:visible}.ai1wm-backups .spinner{visibility:visible;margin:0}.ai1wm-backups .ai1wm-backups-list-spinner{float:none;visibility:visible;clear:both;padding-left:25px;width:auto}.ai1wm-backups .ai1wm-spinner-holder{line-height:37px}.ai1wm-backups .ai1wm-icon-edit-pencil{display:none;background-color:none;cursor:pointer}.ai1wm-backups .ai1wm-add-description:hover .ai1wm-icon-edit-pencil,.ai1wm-backups .ai1wm-backup-label:hover .ai1wm-icon-edit-pencil{display:inline}.ai1wm-backups .ai1wm-add-description{font-size:12px;cursor:pointer;font-style:italic;display:none}.ai1wm-backups .ai1wm-backup-label-colored{display:inline-block;padding:.25em .4em;font-size:85%;font-weight:400;line-height:1;text-align:center;vertical-align:baseline;border-radius:.25rem;color:#000;background-color:#fad390;cursor:pointer;word-wrap:break-word;word-break:break-all;white-space:normal}.ai1wm-backups .ai1wm-backup-label-colored .ai1wm-icon-edit-pencil{background-color:none}.ai1wm-backups .ai1wm-add-label-holder{border-bottom:none}.ai1wm-backups .ai1wm-add-label-holder td{padding:0}.ai1wm-backups .ai1wm-add-label-holder input{border-radius:5px;border:1px solid #ccc}.ai1wm-backups-empty{line-height:2em}.ai1wm-spinner-paragraph{clear:both}.ai1wm-spinner-paragraph .spinner{padding-left:25px;visibility:visible;float:left;width:auto;margin-left:0}
lib/view/assets/css/backups.min.rtl.css CHANGED
@@ -1 +1 @@
1
- @charset "UTF-8";@-webkit-keyframes ai1wm-rotate{0%{-webkit-transform:rotateZ(0);transform:rotateZ(0)}25%{-webkit-transform:rotateZ(90deg);transform:rotateZ(90deg)}50%{-webkit-transform:rotateZ(180deg);transform:rotateZ(180deg)}75%{-webkit-transform:rotateZ(270deg);transform:rotateZ(270deg)}to{-webkit-transform:rotateZ(360deg);transform:rotateZ(360deg)}}@keyframes ai1wm-rotate{0%{-webkit-transform:rotateZ(0);transform:rotateZ(0)}25%{-webkit-transform:rotateZ(90deg);transform:rotateZ(90deg)}50%{-webkit-transform:rotateZ(180deg);transform:rotateZ(180deg)}75%{-webkit-transform:rotateZ(270deg);transform:rotateZ(270deg)}to{-webkit-transform:rotateZ(360deg);transform:rotateZ(360deg)}}@-webkit-keyframes ai1wm-emphasize{0%,to{-webkit-transform:scale(1);transform:scale(1)}50%{-webkit-transform:scale(1.2);transform:scale(1.2)}}@keyframes ai1wm-emphasize{0%,to{-webkit-transform:scale(1);transform:scale(1)}50%{-webkit-transform:scale(1.2);transform:scale(1.2)}}@-webkit-keyframes ai1wm-fadein{0%{-webkit-transform:scale(0);transform:scale(0)}50%{-webkit-transform:scale(1.5);transform:scale(1.5)}to{-webkit-transform:scale(1);transform:scale(1)}}@keyframes ai1wm-fadein{0%{-webkit-transform:scale(0);transform:scale(0)}50%{-webkit-transform:scale(1.5);transform:scale(1.5)}to{-webkit-transform:scale(1);transform:scale(1)}}.ai1wm-button-group{border:2px solid #27ae60;background-color:transparent;color:#27ae60;border-radius:5px;cursor:pointer;text-transform:uppercase;font-weight:600;transition:background-color .2s ease-out;display:inline-block;text-align:right}.ai1wm-button-group.ai1wm-button-export,.ai1wm-button-group.ai1wm-button-import{box-sizing:content-box}.ai1wm-button-group.ai1wm-button-export.ai1wm-open>.ai1wm-dropdown-menu{height:448px;border-top:1px solid #27ae60}.ai1wm-button-group.ai1wm-button-import.ai1wm-open>.ai1wm-dropdown-menu{height:476px;border-top:1px solid #27ae60}.ai1wm-button-group .ai1wm-button-main{position:relative;padding:6px 25px 6px 50px;box-sizing:content-box}.ai1wm-button-group .ai1wm-dropdown-menu{height:0;overflow:hidden;transition:height .2s cubic-bezier(.19,1,.22,1);border-top:none}.ai1wm-dropdown-menu{list-style:none}.ai1wm-dropdown-menu,.ai1wm-dropdown-menu li{margin:0!important;padding:0}.ai1wm-dropdown-menu li a,.ai1wm-dropdown-menu li a:visited{display:block;padding:5px 26px;text-decoration:none;color:#27ae60;text-align:right;box-sizing:content-box}.ai1wm-dropdown-menu li a:hover,.ai1wm-dropdown-menu li a:visited:hover{text-decoration:none;color:#111}.ai1mw-lines{position:absolute;width:12px;height:10px;top:9px;left:20px}.ai1wm-line{position:absolute;width:100%;height:2px;margin:auto;background:#27ae60;transition:all .2s ease-in-out}.ai1wm-line-first{top:0;right:0}div.ai1wm-open .ai1wm-line-first,div.ai1wm-open .ai1wm-line-third{top:50%}.ai1wm-line-second{top:50%;right:0}.ai1wm-line-third{top:100%;right:0}.ai1wm-button-blue,.ai1wm-button-gray,.ai1wm-button-green,.ai1wm-button-green-small,.ai1wm-button-red{display:inline-block;border:2px solid #95a5a6;background-color:transparent;color:#95a5a6;border-radius:5px;cursor:pointer;padding:5px 26px 5px 25px;text-transform:uppercase;font-weight:600;outline:0;transition:background-color .2s ease-out;text-decoration:none}.ai1wm-button-gray:hover{background-color:#95a5a6;color:#fff}.ai1wm-button-blue,.ai1wm-button-green,.ai1wm-button-green-small,.ai1wm-button-red{border:2px solid #27ae60;color:#27ae60}.ai1wm-button-green:hover{background-color:#27ae60;color:#fff}.ai1wm-button-blue,.ai1wm-button-green-small,.ai1wm-button-red{border:2px solid #6eb649;color:#6eb649}.ai1wm-button-green-small:hover{background-color:#6eb649;color:#fff}.ai1wm-button-blue,.ai1wm-button-red{border:2px solid #00aff0;color:#00aff0}.ai1wm-button-blue:hover{background-color:#00aff0;color:#fff}.ai1wm-button-red{border:2px solid #e74c3c;color:#e74c3c}.ai1wm-button-red:hover{background-color:#e74c3c;color:#fff}.ai1wm-button-blue[disabled=disabled],.ai1wm-button-green-small[disabled=disabled],.ai1wm-button-green[disabled=disabled],.ai1wm-button-red[disabled=disabled]{opacity:.6;cursor:default}.ai1wm-button-blue[disabled=disabled]:hover{color:#00aff0}.ai1wm-button-red[disabled=disabled]:hover{color:#e74c3c}.ai1wm-button-green[disabled=disabled]:hover{color:#27ae60}.ai1wm-button-blue[disabled=disabled]:hover,.ai1wm-button-green-small[disabled=disabled]:hover,.ai1wm-button-green[disabled=disabled]:hover,.ai1wm-button-red[disabled=disabled]:hover{background:100% 0}.ai1wm-message-close-button{position:absolute;left:10px;top:6px;text-decoration:none;font-size:10px}input[type=radio].ai1wm-flat-radio-button{display:none}input[type=radio].ai1wm-flat-radio-button+a i,input[type=radio].ai1wm-flat-radio-button+label i{vertical-align:middle;float:right;width:25px;height:25px;border-radius:50%;background:100% 0;border:2px solid #ccc;content:" ";cursor:pointer;position:relative;box-sizing:content-box}input[type=radio].ai1wm-flat-radio-button:checked+a i,input[type=radio].ai1wm-flat-radio-button:checked+label i{background-color:#d9d9d9;border-color:#6f6f6f}.ai1wm-clear{*zoom:1;clear:both}.ai1wm-clear:after,.ai1wm-clear:before{content:" ";display:table}.ai1wm-clear:after{clear:both}.ai1wm-container .ai1wm-row label{position:relative;top:-1px}.ai1wm-container .ai1wm-row label:after{content:"\200E"}.ai1wm-share-button-container{text-align:center}.ai1wm-share-button-container .ai1wm-share-button{text-decoration:none;margin:10px;font-size:30px}.ai1wm-report-problem{position:relative;float:left}.ai1wm-report-problem-dialog{position:absolute;z-index:999;width:280px;left:0;background-color:#fff;margin:6px 0 0;padding:15px 15px 10px;border:1px solid #d6d6d6;border-radius:3px;box-shadow:0 1px 0 0 #fff inset;display:none}.ai1wm-report-email{width:100%;font-weight:400;font-size:.8rem;height:2.3rem;line-height:2.3rem;border-radius:5px;margin-bottom:4px;padding:0 10px}.ai1wm-report-message{width:100%;border-radius:3px;font-size:.8rem;padding:6px 10px;resize:none}.ai1wm-feedback-cancel:active,.ai1wm-feedback-cancel:link,.ai1wm-feedback-cancel:visited,.ai1wm-report-cancel:active,.ai1wm-report-cancel:link,.ai1wm-report-cancel:visited{float:right;line-height:34px;outline:0;text-decoration:none;color:#e74c3c}.ai1wm-form-submit{float:left}.ai1wm-report-active{display:block}.ai1wm-report-terms-segment{font-size:.7rem;line-height:1rem;margin:4px 0 8px}.ai1wm-report-terms-segment>.ai1wm-report-terms{border-radius:3px}.ai1wm-import-info a,.ai1wm-no-underline{text-decoration:none}.ai1wm-top-negative-four{top:-4px}.ai1wm-feedback-form{display:none}.ai1wm-feedback-types{margin:0;padding:0;list-style:none}.ai1wm-feedback-types li{margin:14px 0;padding:0}.ai1wm-feedback-types>li>a>span,.ai1wm-feedback-types>li>label>span{display:inline-block;padding:5px 8px 6px 0}.ai1wm-feedback-types>li>a{height:29px;outline:0;color:#333;text-deciration:none}.ai1wm-loader{display:inline-block;width:128px;height:128px;position:relative;-webkit-animation:ai1wm-rotate 1.5s infinite linear;animation:ai1wm-rotate 1.5s infinite linear;background:url(../img/logo-128x128.png);background-repeat:no-repeat;background-position:center center}.ai1wm-hide{display:none}.ai1wm-label{border:1px solid #5cb85c;background-color:transparent;color:#5cb85c;cursor:pointer;text-transform:uppercase;font-weight:600;outline:0;transition:background-color .2s ease-out;padding:.2em .6em;font-size:.8em;border-radius:5px}.ai1wm-label:hover{background-color:#5cb85c;color:#fff}.ai1wm-dialog-message{text-align:right;line-height:1.5em}.ai1wm-import-info{display:inline-block;font-size:12px;font-weight:700;margin-top:16px}[class*=" ai1wm-icon-"],[class^=ai1wm-icon-]{font-family:'servmask';speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.ai1wm-icon-file-zip:before{content:"\e60f"}.ai1wm-icon-folder:before{content:"\e60e"}.ai1wm-icon-file:before{content:"\e60b"}.ai1wm-icon-file-content:before{content:"\e60c"}.ai1wm-icon-cloud-upload:before{content:"\e600"}.ai1wm-icon-history:before{content:"\e603"}.ai1wm-icon-notification:before{content:"\e619"}.ai1wm-icon-arrow-down:before{content:"\e604"}.ai1wm-icon-close:before{content:"\e61a"}.ai1wm-icon-wordpress2:before{content:"\e620"}.ai1wm-icon-arrow-right:before{content:"\e605"}.ai1wm-icon-plus2:before{content:"\e607"}.ai1wm-icon-edit-pencil:before{content:"\e900"}.ai1wm-icon-export:before{content:"\e601"}.ai1wm-icon-publish:before{content:"\e602"}.ai1wm-icon-paperplane:before{content:"\e608"}.ai1wm-icon-help:before{content:"\e609"}.ai1wm-icon-chevron-right:before{content:"\e60d"}.ai1wm-icon-dropbox:before{content:"\e606"}.ai1wm-icon-gear:before{content:"\e60a"}.ai1wm-icon-database:before{content:"\e964"}.ai1wm-icon-upload2:before{content:"\e9c6"}.ai1wm-icon-checkmark:before{content:"\ea10"}.ai1wm-icon-checkmark2:before{content:"\ea11"}.ai1wm-icon-enter:before{content:"\ea13"}.ai1wm-icon-exit:before{content:"\ea14"}.ai1wm-icon-amazon:before{content:"\ea87"}.ai1wm-icon-onedrive:before{content:"\eaaf"}@media (min-width:855px){.ai1wm-row{margin-left:399px}.ai1wm-row:after,.ai1wm-row:before{content:" ";display:table}.ai1wm-row:after{clear:both}.ai1wm-left{float:right;width:100%}.ai1wm-right{float:left;width:377px;margin-left:-399px}.ai1wm-right .ai1wm-sidebar{width:100%}.ai1wm-right .ai1wm-segment{width:333px;border:1px solid #d6d6d6;border-radius:3px;box-shadow:inset 0 1px 0 0 #fff;color:#333;background-color:#f9f9f9;padding:20px;text-decoration:none;text-shadow:0 1px 0 #fff;background-clip:padding-box}.ai1wm-right .ai1wm-segment h2{margin:22px 0 0;padding:0;font-weight:700;font-size:14px;text-transform:uppercase;text-align:center}.ai1wm-right .ai1wm-feedback-email{width:100%;font-weight:400;font-size:.8rem;height:2.3rem;line-height:2.3rem;border-radius:5px;margin-bottom:4px;padding:0 10px}.ai1wm-right .ai1wm-feedback-message{width:100%;border-radius:3px;font-size:.8rem;padding:6px 10px;resize:none}.ai1wm-right .ai1wm-feedback-terms-segment{font-size:.7rem;line-height:1rem;margin:4px 0 8px}.ai1wm-right .ai1wm-feedback-terms-segment>.ai1wm-feedback-terms{border-radius:3px}}.ai1wm-holder{position:relative;border:1px solid #d6d6d6;border-radius:3px;box-shadow:inset 0 1px 0 0 #fff;padding:20px;background:#f9f9f9}.ai1wm-holder h1{float:right;font-weight:300;font-size:22px;text-transform:uppercase}.ai1wm-holder h1 i{position:relative;top:2px}@media (max-width:854px){.ai1wm-container{margin-right:10px!important}.ai1wm-right,.ai1wm-row{margin-left:0!important}.ai1wm-right{float:right!important;width:100%!important;margin-top:18px}.ai1wm-right .ai1wm-sidebar{width:auto!important;border:1px solid #d6d6d6;border-radius:3px;box-shadow:inset 0 1px 0 0 #fff;padding:20px;background:#f9f9f9}.ai1wm-right .ai1wm-feedback-email{width:100%;font-weight:400;font-size:.8rem;height:2.3rem;line-height:2.3rem;border-radius:5px;margin-bottom:4px;padding:0 10px}.ai1wm-right .ai1wm-feedback-message{width:100%;border-radius:3px;font-size:.8rem;padding:6px 10px;resize:none}.ai1wm-right .ai1wm-feedback-terms-segment{font-size:.7rem;line-height:1rem;margin:4px 0 8px;border-radius:3px}.ai1wm-right .ai1wm-feedback-terms-segment>.ai1wm-feedback-terms{border-radius:3px}}.ai1wm-container{margin:20px 2px 0 20px}.ai1wm-container:after,.ai1wm-container:before{content:" ";display:table}.ai1wm-container:after{clear:both}.ai1wm-replace-row{width:100%;box-shadow:outset 0 1px 0 0 white;border-radius:3px;color:#333;font-size:11px;font-weight:700;background-color:#f9f9f9;text-decoration:none;text-shadow:0 1px 0 #fff;background-clip:padding-box;margin-bottom:10px}.ai1wm-field{margin-bottom:4px}.ai1wm-field input[type=text],.ai1wm-field textarea{width:100%;font-weight:400}.ai1wm-field-set{margin-top:18px}.ai1wm-message{-moz-box-sizing:border-box;background-color:#efefef;border-radius:4px;color:rgba(0,0,0,.6);height:auto;margin:10px 0;min-height:18px;padding:6px 10px;position:relative;border:1px solid;transition:opacity .1s ease 0s,color .1s ease 0s,background .1s ease 0s,box-shadow .1s ease 0s}.ai1wm-message.ai1wm-success-message{background-color:#f2f8f0;color:#119000;font-size:12px}.ai1wm-message.ai1wm-info-message{background-color:#d9edf7;color:#31708f;font-size:11px}.ai1wm-message.ai1wm-error-message{background-color:#f1d7d7;color:#a95252;font-size:12px}.ai1wm-message.ai1wm-red-message{color:#d95c5c;border:2px solid #d95c5c;background-color:transparent}.ai1wm-message.ai1wm-red-message h3{margin:.4em 0;color:#d95c5c}.ai1wm-message p{margin:4px 0;font-size:12px}.ai1wm-message-warning{display:block;font-size:14px;line-height:18px;padding:12px 20px;margin:0 0 22px;background-color:#f9f9f9;border:1px solid #d6d6d6;border-radius:3px;box-shadow:0 1px 0 0 #fff inset;border-right:4px solid #ffba00}.ai1wm-overlay{display:none;position:fixed;top:0;right:0;width:100%;height:100%;background-color:rgba(0,0,0,.7);z-index:100001}.ai1wm-modal-container{position:fixed;display:none;top:50%;right:50%;z-index:100002;width:480px;height:auto;padding:16px;-webkit-transform:translate(240px,-94px);transform:translate(240px,-94px);border:1px solid #fff;box-shadow:0 2px 6px #292929;border-radius:6px;background:#f6f6f6;box-sizing:border-box;text-align:center}.ai1wm-modal-container section{display:block;min-height:102px}.ai1wm-holder h1,.ai1wm-modal-container section h1{margin:0;padding:0}.ai1wm-modal-container section h1 .ai1wm-title-green{color:#27ae60;font-size:.7em}.ai1wm-modal-container section h1 .ai1wm-title-red{color:#e74c3c;font-size:20px}.ai1wm-modal-container section h1 .ai1wm-title-grey{color:gray;font-size:20px}.ai1wm-modal-container section h1 .ai1wm-loader{width:32px;height:32px;background:url(../img/logo-32x32.png)}.ai1wm-modal-container section h1 .ai1wm-icon-notification{font-size:1.2em;color:#e74c3c}.ai1wm-modal-container section p{margin:0;padding:12px 0}.ai1wm-modal-container section p .ai1wm-modal-sites p{padding:4px 10px;text-align:right}.ai1wm-modal-container section p .ai1wm-modal-sites input,.ai1wm-modal-container section p .ai1wm-modal-sites select{padding:0 6px;width:100%;border-radius:3px;height:30px;line-height:30px}.ai1wm-modal-container section p .ai1wm-modal-subtitle-green{color:#27ae60}.ai1wm-modal-container section p .ai1wm-modal-subtitle-red{color:#e74c3c}.ai1wm-modal-container section p .ai1wm-modal-subdescription{display:block;text-align:right}.ai1wm-modal-container section p a.ai1wm-button-green{display:inline-block;position:relative;top:26px}.ai1wm-modal-container section p a.ai1wm-emphasize{-webkit-animation:ai1wm-emphasize 1s infinite;animation:ai1wm-emphasize 1s infinite}.ai1wm-modal-container section p em{display:block;color:#34495e;font-style:normal}.ai1wm-modal-container section p.ai1wm-import-modal-content{text-align:right}.ai1wm-modal-container section p.ai1wm-import-modal-content-done{text-align:right;padding:1.62em .5em}.ai1wm-modal-container .ai1wm-import-modal-actions{border-top:1px solid #ccc;padding-top:1em;text-align:left}.ai1wm-modal-container .ai1wm-import-modal-actions .ai1wm-button-gray{margin-left:1em}.ai1wm-modal-container .ai1wm-import-modal-notice{border-top:1px solid #ccc}.ai1wm-modal-container .ai1wm-import-modal-notice p{font-weight:700;margin:0;padding-top:16px;text-align:center}#ai1wm-backup-progress,#ai1wm-backup-progress-bar{background-color:#dfdfdf;height:20px;width:350px;border-radius:15px}#ai1wm-backup-progress-bar{background-color:#00aff0;line-height:20px;color:#fff;width:0;text-align:center}.ai1wm-backups{width:100%;margin:1em 0 2em;padding:0;border-collapse:collapse}.ai1wm-backups .ai1wm-column-name{text-align:right;word-wrap:break-word;word-break:break-all}.ai1wm-backups .ai1wm-column-date,.ai1wm-backups .ai1wm-column-size{text-align:center;white-space:nowrap}.ai1wm-backups .ai1wm-column-actions{text-align:left;white-space:nowrap}.ai1wm-backups thead th{padding:4px 6px;text-align:right;font-size:1.2em}.ai1wm-backups tbody tr:first-child{border-top:1px solid #ccc}.ai1wm-backups tbody tr{border-bottom:1px solid #ccc}.ai1wm-backups tbody tr:hover:not(.ai1wm-add-label-holder){background:rgba(0,0,0,.1)}.ai1wm-backups tbody tr:hover:not(.ai1wm-add-label-holder) .ai1wm-add-description{display:inline}.ai1wm-backups tbody td{padding:4px 6px;box-sizing:border-box;line-height:24px}.ai1wm-backups tbody td.ai1wm-backup-actions{text-align:left;width:250px}.ai1wm-backups tbody td.ai1wm-backup-actions span{transition:width 2s cubic-bezier(.19,1,.22,1);display:inline-block;width:0;text-align:center;visibility:hidden}.ai1wm-backups tbody td.ai1wm-backup-actions .ai1wm-backup-delete,.ai1wm-backups tbody td.ai1wm-backup-actions .ai1wm-backup-download,.ai1wm-backups tbody td.ai1wm-backup-actions .ai1wm-backup-restore{border-radius:50px;margin:0 2px;padding:4px 8px}.ai1wm-backups tbody td.ai1wm-backup-actions .ai1wm-button-on span{width:80px;visibility:visible}.ai1wm-backups .spinner{visibility:visible;margin:0}.ai1wm-backups .ai1wm-icon-edit-pencil{display:none;background-color:none;cursor:pointer}.ai1wm-backups .ai1wm-add-description:hover .ai1wm-icon-edit-pencil,.ai1wm-backups .ai1wm-backup-label:hover .ai1wm-icon-edit-pencil{display:inline}.ai1wm-backups .ai1wm-add-description{font-size:12px;cursor:pointer;font-style:italic;display:none}.ai1wm-backups .ai1wm-backup-label-colored{display:inline-block;padding:.25em .4em;font-size:85%;font-weight:400;line-height:1;text-align:center;vertical-align:baseline;border-radius:.25rem;color:#000;background-color:#fad390;cursor:pointer;word-wrap:break-word;word-break:break-all;white-space:normal}.ai1wm-backups .ai1wm-backup-label-colored .ai1wm-icon-edit-pencil{background-color:none}.ai1wm-backups .ai1wm-add-label-holder{border-bottom:none}.ai1wm-backups .ai1wm-add-label-holder td{padding:0}.ai1wm-backups .ai1wm-add-label-holder input{border-radius:5px;border:1px solid #ccc}.ai1wm-backups-empty{line-height:2em}
1
+ @charset "UTF-8";@-webkit-keyframes ai1wm-rotate{0%{-webkit-transform:rotateZ(0);transform:rotateZ(0)}25%{-webkit-transform:rotateZ(90deg);transform:rotateZ(90deg)}50%{-webkit-transform:rotateZ(180deg);transform:rotateZ(180deg)}75%{-webkit-transform:rotateZ(270deg);transform:rotateZ(270deg)}to{-webkit-transform:rotateZ(360deg);transform:rotateZ(360deg)}}@keyframes ai1wm-rotate{0%{-webkit-transform:rotateZ(0);transform:rotateZ(0)}25%{-webkit-transform:rotateZ(90deg);transform:rotateZ(90deg)}50%{-webkit-transform:rotateZ(180deg);transform:rotateZ(180deg)}75%{-webkit-transform:rotateZ(270deg);transform:rotateZ(270deg)}to{-webkit-transform:rotateZ(360deg);transform:rotateZ(360deg)}}@-webkit-keyframes ai1wm-emphasize{0%,to{-webkit-transform:scale(1);transform:scale(1)}50%{-webkit-transform:scale(1.2);transform:scale(1.2)}}@keyframes ai1wm-emphasize{0%,to{-webkit-transform:scale(1);transform:scale(1)}50%{-webkit-transform:scale(1.2);transform:scale(1.2)}}@-webkit-keyframes ai1wm-fadein{0%{-webkit-transform:scale(0);transform:scale(0)}50%{-webkit-transform:scale(1.5);transform:scale(1.5)}to{-webkit-transform:scale(1);transform:scale(1)}}@keyframes ai1wm-fadein{0%{-webkit-transform:scale(0);transform:scale(0)}50%{-webkit-transform:scale(1.5);transform:scale(1.5)}to{-webkit-transform:scale(1);transform:scale(1)}}.ai1wm-button-group{border:2px solid #27ae60;background-color:transparent;color:#27ae60;border-radius:5px;cursor:pointer;text-transform:uppercase;font-weight:600;transition:background-color .2s ease-out;display:inline-block;text-align:right}.ai1wm-button-group.ai1wm-button-export,.ai1wm-button-group.ai1wm-button-import{box-sizing:content-box}.ai1wm-button-group.ai1wm-button-export.ai1wm-open>.ai1wm-dropdown-menu{height:448px;border-top:1px solid #27ae60}.ai1wm-button-group.ai1wm-button-import.ai1wm-open>.ai1wm-dropdown-menu{height:476px;border-top:1px solid #27ae60}.ai1wm-button-group .ai1wm-button-main{position:relative;padding:6px 25px 6px 50px;box-sizing:content-box}.ai1wm-button-group .ai1wm-dropdown-menu{height:0;overflow:hidden;transition:height .2s cubic-bezier(.19,1,.22,1);border-top:none}.ai1wm-dropdown-menu{list-style:none}.ai1wm-dropdown-menu,.ai1wm-dropdown-menu li{margin:0!important;padding:0}.ai1wm-dropdown-menu li a,.ai1wm-dropdown-menu li a:visited{display:block;padding:5px 26px;text-decoration:none;color:#27ae60;text-align:right;box-sizing:content-box}.ai1wm-dropdown-menu li a:hover,.ai1wm-dropdown-menu li a:visited:hover{text-decoration:none;color:#111}.ai1mw-lines{position:absolute;width:12px;height:10px;top:9px;left:20px}.ai1wm-line{position:absolute;width:100%;height:2px;margin:auto;background:#27ae60;transition:all .2s ease-in-out}.ai1wm-line-first{top:0;right:0}div.ai1wm-open .ai1wm-line-first,div.ai1wm-open .ai1wm-line-third{top:50%}.ai1wm-line-second{top:50%;right:0}.ai1wm-line-third{top:100%;right:0}.ai1wm-button-blue,.ai1wm-button-gray,.ai1wm-button-green,.ai1wm-button-green-small,.ai1wm-button-red{display:inline-block;border:2px solid #95a5a6;background-color:transparent;color:#95a5a6;border-radius:5px;cursor:pointer;padding:5px 26px 5px 25px;text-transform:uppercase;font-weight:600;outline:0;transition:background-color .2s ease-out;text-decoration:none}.ai1wm-button-gray:hover{background-color:#95a5a6;color:#fff}.ai1wm-button-blue,.ai1wm-button-green,.ai1wm-button-green-small,.ai1wm-button-red{border:2px solid #27ae60;color:#27ae60}.ai1wm-button-green:hover{background-color:#27ae60;color:#fff}.ai1wm-button-blue,.ai1wm-button-green-small,.ai1wm-button-red{border:2px solid #6eb649;color:#6eb649}.ai1wm-button-green-small:hover{background-color:#6eb649;color:#fff}.ai1wm-button-blue,.ai1wm-button-red{border:2px solid #00aff0;color:#00aff0}.ai1wm-button-blue:hover{background-color:#00aff0;color:#fff}.ai1wm-button-red{border:2px solid #e74c3c;color:#e74c3c}.ai1wm-button-red:hover{background-color:#e74c3c;color:#fff}.ai1wm-button-blue[disabled=disabled],.ai1wm-button-green-small[disabled=disabled],.ai1wm-button-green[disabled=disabled],.ai1wm-button-red[disabled=disabled]{opacity:.6;cursor:default}.ai1wm-button-blue[disabled=disabled]:hover{color:#00aff0}.ai1wm-button-red[disabled=disabled]:hover{color:#e74c3c}.ai1wm-button-green[disabled=disabled]:hover{color:#27ae60}.ai1wm-button-blue[disabled=disabled]:hover,.ai1wm-button-green-small[disabled=disabled]:hover,.ai1wm-button-green[disabled=disabled]:hover,.ai1wm-button-red[disabled=disabled]:hover{background:100% 0}.ai1wm-message-close-button{position:absolute;left:10px;top:6px;text-decoration:none;font-size:10px}input[type=radio].ai1wm-flat-radio-button{display:none}input[type=radio].ai1wm-flat-radio-button+a i,input[type=radio].ai1wm-flat-radio-button+label i{vertical-align:middle;float:right;width:25px;height:25px;border-radius:50%;background:100% 0;border:2px solid #ccc;content:" ";cursor:pointer;position:relative;box-sizing:content-box}input[type=radio].ai1wm-flat-radio-button:checked+a i,input[type=radio].ai1wm-flat-radio-button:checked+label i{background-color:#d9d9d9;border-color:#6f6f6f}.ai1wm-clear{*zoom:1;clear:both}.ai1wm-clear:after,.ai1wm-clear:before{content:" ";display:table}.ai1wm-clear:after{clear:both}.ai1wm-container .ai1wm-row label{position:relative;top:-1px}.ai1wm-container .ai1wm-row label:after{content:"\200E"}.ai1wm-share-button-container{text-align:center}.ai1wm-share-button-container .ai1wm-share-button{text-decoration:none;margin:10px;font-size:30px}.ai1wm-report-problem{position:relative;float:left}.ai1wm-report-problem-dialog{position:absolute;z-index:999;width:280px;left:0;background-color:#fff;margin:6px 0 0;padding:15px 15px 10px;border:1px solid #d6d6d6;border-radius:3px;box-shadow:0 1px 0 0 #fff inset;display:none}.ai1wm-report-email{width:100%;font-weight:400;font-size:.8rem;height:2.3rem;line-height:2.3rem;border-radius:5px;margin-bottom:4px;padding:0 10px}.ai1wm-report-message{width:100%;border-radius:3px;font-size:.8rem;padding:6px 10px;resize:none}.ai1wm-feedback-cancel:active,.ai1wm-feedback-cancel:link,.ai1wm-feedback-cancel:visited,.ai1wm-report-cancel:active,.ai1wm-report-cancel:link,.ai1wm-report-cancel:visited{float:right;line-height:34px;outline:0;text-decoration:none;color:#e74c3c}.ai1wm-form-submit{float:left}.ai1wm-report-active{display:block}.ai1wm-report-terms-segment{font-size:.7rem;line-height:1rem;margin:4px 0 8px}.ai1wm-report-terms-segment>.ai1wm-report-terms{border-radius:3px}.ai1wm-import-info a,.ai1wm-no-underline{text-decoration:none}.ai1wm-top-negative-four{top:-4px}.ai1wm-feedback-form{display:none}.ai1wm-feedback-types{margin:0;padding:0;list-style:none}.ai1wm-feedback-types li{margin:14px 0;padding:0}.ai1wm-feedback-types>li>a>span,.ai1wm-feedback-types>li>label>span{display:inline-block;padding:5px 8px 6px 0}.ai1wm-feedback-types>li>a{height:29px;outline:0;color:#333;text-deciration:none}.ai1wm-loader{display:inline-block;width:128px;height:128px;position:relative;-webkit-animation:ai1wm-rotate 1.5s infinite linear;animation:ai1wm-rotate 1.5s infinite linear;background:url(../img/logo-128x128.png);background-repeat:no-repeat;background-position:center center}.ai1wm-hide{display:none}.ai1wm-label{border:1px solid #5cb85c;background-color:transparent;color:#5cb85c;cursor:pointer;text-transform:uppercase;font-weight:600;outline:0;transition:background-color .2s ease-out;padding:.2em .6em;font-size:.8em;border-radius:5px}.ai1wm-label:hover{background-color:#5cb85c;color:#fff}.ai1wm-dialog-message{text-align:right;line-height:1.5em}.ai1wm-import-info{display:inline-block;font-size:12px;font-weight:700;margin-top:16px}[class*=" ai1wm-icon-"],[class^=ai1wm-icon-]{font-family:'servmask';speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.ai1wm-icon-file-zip:before{content:"\e60f"}.ai1wm-icon-folder:before{content:"\e60e"}.ai1wm-icon-file:before{content:"\e60b"}.ai1wm-icon-file-content:before{content:"\e60c"}.ai1wm-icon-cloud-upload:before{content:"\e600"}.ai1wm-icon-history:before{content:"\e603"}.ai1wm-icon-notification:before{content:"\e619"}.ai1wm-icon-arrow-down:before{content:"\e604"}.ai1wm-icon-close:before{content:"\e61a"}.ai1wm-icon-wordpress2:before{content:"\e620"}.ai1wm-icon-arrow-right:before{content:"\e605"}.ai1wm-icon-plus2:before{content:"\e607"}.ai1wm-icon-edit-pencil:before{content:"\e900"}.ai1wm-icon-export:before{content:"\e601"}.ai1wm-icon-publish:before{content:"\e602"}.ai1wm-icon-paperplane:before{content:"\e608"}.ai1wm-icon-help:before{content:"\e609"}.ai1wm-icon-chevron-right:before{content:"\e60d"}.ai1wm-icon-dropbox:before{content:"\e606"}.ai1wm-icon-gear:before{content:"\e60a"}.ai1wm-icon-database:before{content:"\e964"}.ai1wm-icon-upload2:before{content:"\e9c6"}.ai1wm-icon-checkmark:before{content:"\ea10"}.ai1wm-icon-checkmark2:before{content:"\ea11"}.ai1wm-icon-enter:before{content:"\ea13"}.ai1wm-icon-exit:before{content:"\ea14"}.ai1wm-icon-amazon:before{content:"\ea87"}.ai1wm-icon-onedrive:before{content:"\eaaf"}@media (min-width:855px){.ai1wm-row{margin-left:399px}.ai1wm-row:after,.ai1wm-row:before{content:" ";display:table}.ai1wm-row:after{clear:both}.ai1wm-left{float:right;width:100%}.ai1wm-right{float:left;width:377px;margin-left:-399px}.ai1wm-right .ai1wm-sidebar{width:100%}.ai1wm-right .ai1wm-segment{width:333px;border:1px solid #d6d6d6;border-radius:3px;box-shadow:inset 0 1px 0 0 #fff;color:#333;background-color:#f9f9f9;padding:20px;text-decoration:none;text-shadow:0 1px 0 #fff;background-clip:padding-box}.ai1wm-right .ai1wm-segment h2{margin:22px 0 0;padding:0;font-weight:700;font-size:14px;text-transform:uppercase;text-align:center}.ai1wm-right .ai1wm-feedback-email{width:100%;font-weight:400;font-size:.8rem;height:2.3rem;line-height:2.3rem;border-radius:5px;margin-bottom:4px;padding:0 10px}.ai1wm-right .ai1wm-feedback-message{width:100%;border-radius:3px;font-size:.8rem;padding:6px 10px;resize:none}.ai1wm-right .ai1wm-feedback-terms-segment{font-size:.7rem;line-height:1rem;margin:4px 0 8px}.ai1wm-right .ai1wm-feedback-terms-segment>.ai1wm-feedback-terms{border-radius:3px}}.ai1wm-holder{position:relative;border:1px solid #d6d6d6;border-radius:3px;box-shadow:inset 0 1px 0 0 #fff;padding:20px;background:#f9f9f9}.ai1wm-holder h1{float:right;font-weight:300;font-size:22px;text-transform:uppercase}.ai1wm-holder h1 i{position:relative;top:2px}@media (max-width:854px){.ai1wm-container{margin-right:10px!important}.ai1wm-right,.ai1wm-row{margin-left:0!important}.ai1wm-right{float:right!important;width:100%!important;margin-top:18px}.ai1wm-right .ai1wm-sidebar{width:auto!important;border:1px solid #d6d6d6;border-radius:3px;box-shadow:inset 0 1px 0 0 #fff;padding:20px;background:#f9f9f9}.ai1wm-right .ai1wm-feedback-email{width:100%;font-weight:400;font-size:.8rem;height:2.3rem;line-height:2.3rem;border-radius:5px;margin-bottom:4px;padding:0 10px}.ai1wm-right .ai1wm-feedback-message{width:100%;border-radius:3px;font-size:.8rem;padding:6px 10px;resize:none}.ai1wm-right .ai1wm-feedback-terms-segment{font-size:.7rem;line-height:1rem;margin:4px 0 8px;border-radius:3px}.ai1wm-right .ai1wm-feedback-terms-segment>.ai1wm-feedback-terms{border-radius:3px}}.ai1wm-container{margin:20px 2px 0 20px}.ai1wm-container:after,.ai1wm-container:before{content:" ";display:table}.ai1wm-container:after{clear:both}.ai1wm-replace-row{width:100%;box-shadow:outset 0 1px 0 0 white;border-radius:3px;color:#333;font-size:11px;font-weight:700;background-color:#f9f9f9;text-decoration:none;text-shadow:0 1px 0 #fff;background-clip:padding-box;margin-bottom:10px}.ai1wm-field{margin-bottom:4px}.ai1wm-field input[type=text],.ai1wm-field textarea{width:100%;font-weight:400}.ai1wm-field-set{margin-top:18px}.ai1wm-message{-moz-box-sizing:border-box;background-color:#efefef;border-radius:4px;color:rgba(0,0,0,.6);height:auto;margin:10px 0;min-height:18px;padding:6px 10px;position:relative;border:1px solid;transition:opacity .1s ease 0s,color .1s ease 0s,background .1s ease 0s,box-shadow .1s ease 0s}.ai1wm-message.ai1wm-success-message{background-color:#f2f8f0;color:#119000;font-size:12px}.ai1wm-message.ai1wm-info-message{background-color:#d9edf7;color:#31708f;font-size:11px}.ai1wm-message.ai1wm-error-message{background-color:#f1d7d7;color:#a95252;font-size:12px}.ai1wm-message.ai1wm-red-message{color:#d95c5c;border:2px solid #d95c5c;background-color:transparent}.ai1wm-message.ai1wm-red-message h3{margin:.4em 0;color:#d95c5c}.ai1wm-message p{margin:4px 0;font-size:12px}.ai1wm-message-warning{display:block;font-size:14px;line-height:18px;padding:12px 20px;margin:0 0 22px;background-color:#f9f9f9;border:1px solid #d6d6d6;border-radius:3px;box-shadow:0 1px 0 0 #fff inset;border-right:4px solid #ffba00}.ai1wm-overlay{display:none;position:fixed;top:0;right:0;width:100%;height:100%;background-color:rgba(0,0,0,.7);z-index:100001}.ai1wm-modal-container{position:fixed;display:none;top:50%;right:50%;z-index:100002;width:480px;height:auto;padding:16px;-webkit-transform:translate(240px,-94px);transform:translate(240px,-94px);border:1px solid #fff;box-shadow:0 2px 6px #292929;border-radius:6px;background:#f6f6f6;box-sizing:border-box;text-align:center}.ai1wm-modal-container section{display:block;min-height:102px}.ai1wm-holder h1,.ai1wm-modal-container section h1{margin:0;padding:0}.ai1wm-modal-container section h1 .ai1wm-title-green{color:#27ae60;font-size:.7em}.ai1wm-modal-container section h1 .ai1wm-title-red{color:#e74c3c;font-size:20px}.ai1wm-modal-container section h1 .ai1wm-title-grey{color:gray;font-size:20px}.ai1wm-modal-container section h1 .ai1wm-loader{width:32px;height:32px;background:url(../img/logo-32x32.png)}.ai1wm-modal-container section h1 .ai1wm-icon-notification{font-size:1.2em;color:#e74c3c}.ai1wm-modal-container section p{margin:0;padding:12px 0}.ai1wm-modal-container section p .ai1wm-modal-sites p{padding:4px 10px;text-align:right}.ai1wm-modal-container section p .ai1wm-modal-sites input,.ai1wm-modal-container section p .ai1wm-modal-sites select{padding:0 6px;width:100%;border-radius:3px;height:30px;line-height:30px}.ai1wm-modal-container section p .ai1wm-modal-subtitle-green{color:#27ae60}.ai1wm-modal-container section p .ai1wm-modal-subtitle-red{color:#e74c3c}.ai1wm-modal-container section p .ai1wm-modal-subdescription{display:block;text-align:right}.ai1wm-modal-container section p a.ai1wm-button-green{display:inline-block;position:relative;top:26px}.ai1wm-modal-container section p a.ai1wm-emphasize{-webkit-animation:ai1wm-emphasize 1s infinite;animation:ai1wm-emphasize 1s infinite}.ai1wm-modal-container section p em{display:block;color:#34495e;font-style:normal}.ai1wm-modal-container section p.ai1wm-import-modal-content{text-align:right}.ai1wm-modal-container section p.ai1wm-import-modal-content-done{text-align:right;padding:1.62em .5em}.ai1wm-modal-container .ai1wm-import-modal-actions{border-top:1px solid #ccc;padding-top:1em;text-align:left}.ai1wm-modal-container .ai1wm-import-modal-actions .ai1wm-button-gray{margin-left:1em}.ai1wm-modal-container .ai1wm-import-modal-notice{border-top:1px solid #ccc}.ai1wm-modal-container .ai1wm-import-modal-notice p{font-weight:700;margin:0;padding-top:16px;text-align:center}#ai1wm-backup-progress,#ai1wm-backup-progress-bar{background-color:#dfdfdf;height:20px;width:350px;border-radius:15px}#ai1wm-backup-progress-bar{background-color:#00aff0;line-height:20px;color:#fff;width:0;text-align:center}.ai1wm-backups{width:100%;margin:1em 0;padding:0;border-collapse:collapse}.ai1wm-backups .ai1wm-column-name{text-align:right;word-wrap:break-word;word-break:break-all}.ai1wm-backups .ai1wm-column-date,.ai1wm-backups .ai1wm-column-size{text-align:center;white-space:nowrap}.ai1wm-backups .ai1wm-column-actions{text-align:left;white-space:nowrap}.ai1wm-backups thead th{padding:4px 6px;text-align:right;font-size:1.2em}.ai1wm-backups tbody tr:first-child{border-top:1px solid #ccc}.ai1wm-backups tbody tr{border-bottom:1px solid #ccc}.ai1wm-backups tbody tr:hover:not(.ai1wm-add-label-holder){background:rgba(0,0,0,.1)}.ai1wm-backups tbody tr:hover:not(.ai1wm-add-label-holder) .ai1wm-add-description{display:inline}.ai1wm-backups tbody td{padding:4px 6px;box-sizing:border-box;line-height:24px}.ai1wm-backups tbody td.ai1wm-backup-actions{text-align:left;width:250px}.ai1wm-backups tbody td.ai1wm-backup-actions span{transition:width 2s cubic-bezier(.19,1,.22,1);display:inline-block;width:0;text-align:center;visibility:hidden}.ai1wm-backups tbody td.ai1wm-backup-actions .ai1wm-backup-delete,.ai1wm-backups tbody td.ai1wm-backup-actions .ai1wm-backup-download,.ai1wm-backups tbody td.ai1wm-backup-actions .ai1wm-backup-restore{border-radius:50px;margin:0 2px;padding:4px 8px}.ai1wm-backups tbody td.ai1wm-backup-actions .ai1wm-button-on span{width:80px;visibility:visible}.ai1wm-backups .spinner{visibility:visible;margin:0}.ai1wm-backups .ai1wm-backups-list-spinner{float:none;visibility:visible;clear:both;padding-right:25px;width:auto}.ai1wm-backups .ai1wm-spinner-holder{line-height:37px}.ai1wm-backups .ai1wm-icon-edit-pencil{display:none;background-color:none;cursor:pointer}.ai1wm-backups .ai1wm-add-description:hover .ai1wm-icon-edit-pencil,.ai1wm-backups .ai1wm-backup-label:hover .ai1wm-icon-edit-pencil{display:inline}.ai1wm-backups .ai1wm-add-description{font-size:12px;cursor:pointer;font-style:italic;display:none}.ai1wm-backups .ai1wm-backup-label-colored{display:inline-block;padding:.25em .4em;font-size:85%;font-weight:400;line-height:1;text-align:center;vertical-align:baseline;border-radius:.25rem;color:#000;background-color:#fad390;cursor:pointer;word-wrap:break-word;word-break:break-all;white-space:normal}.ai1wm-backups .ai1wm-backup-label-colored .ai1wm-icon-edit-pencil{background-color:none}.ai1wm-backups .ai1wm-add-label-holder{border-bottom:none}.ai1wm-backups .ai1wm-add-label-holder td{padding:0}.ai1wm-backups .ai1wm-add-label-holder input{border-radius:5px;border:1px solid #ccc}.ai1wm-backups-empty{line-height:2em}.ai1wm-spinner-paragraph{clear:both}.ai1wm-spinner-paragraph .spinner{padding-right:25px;visibility:visible;float:right;width:auto;margin-right:0}
lib/view/assets/javascript/backups.min.js CHANGED
@@ -60,7 +60,7 @@
60
  /******/ __webpack_require__.p = "";
61
  /******/
62
  /******/ // Load entry module and return exports
63
- /******/ return __webpack_require__(__webpack_require__.s = 5);
64
  /******/ })
65
  /************************************************************************/
66
  /******/ ([
@@ -1130,6 +1130,518 @@ module.exports = Modal;
1130
  /* 5 */
1131
  /***/ (function(module, exports, __webpack_require__) {
1132
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1133
  "use strict";
1134
  /* WEBPACK VAR INJECTION */(function(global) {
1135
 
@@ -1160,19 +1672,23 @@ module.exports = Modal;
1160
  var Feedback = __webpack_require__(1);
1161
  var Report = __webpack_require__(2);
1162
  var Import = __webpack_require__(3);
1163
- var Restore = __webpack_require__(6);
 
1164
 
1165
  jQuery(document).ready(function ($) {
1166
  'use strict';
1167
 
1168
- $('.ai1wm-backup-actions > a').hover(function () {
1169
- $(this).addClass('ai1wm-button-on');
1170
- }, function () {
1171
- $(this).removeClass('ai1wm-button-on');
1172
- });
 
 
 
1173
 
1174
  // Delete file
1175
- $('.ai1wm-backup-delete').click(function (e) {
1176
  var self = $(this);
1177
 
1178
  // Delete file
@@ -1205,7 +1721,7 @@ jQuery(document).ready(function ($) {
1205
  var model = new Import();
1206
 
1207
  // Restore from file
1208
- $('.ai1wm-backup-restore').click(function (e) {
1209
  e.preventDefault();
1210
 
1211
  if (!!Ai1wm.MultisiteExtensionRestore) {
@@ -1219,21 +1735,22 @@ jQuery(document).ready(function ($) {
1219
  }
1220
  });
1221
 
1222
- $('.ai1wm-backups').on('click', '.ai1wm-add-description, .ai1wm-backup-label', function () {
1223
  $(this).hide();
1224
 
1225
  if (!$(this).closest('td').find('.ai1wm-add-label-holder').length) {
1226
  var td = $(this).closest('td');
1227
  var backup_label = td.find('.ai1wm-backup-label');
 
1228
 
1229
- td.append('\n\t\t\t\t<tr class="ai1wm-add-label-holder">\n\t\t\t\t\t<td>\n\t\t\t\t\t\t<input type="text" class="ai1wm-label-field" value="' + backup_label.text().trim() + '" />\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t');
1230
 
1231
- td.find('.ai1wm-label-field').focus();
1232
  backup_label.hide();
1233
  }
1234
  });
1235
 
1236
- $(document).on('keypress keydown', '.ai1wm-label-field', function (e) {
1237
  var keycode = typeof e.keyCode != 'undefined' && e.keyCode ? e.keyCode : e.which;
1238
  var input = $(this);
1239
 
@@ -1299,13 +1816,49 @@ jQuery(document).ready(function ($) {
1299
  }
1300
  }
1301
  });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1302
  });
1303
 
1304
- global.Ai1wm = jQuery.extend({}, global.Ai1wm, { Feedback: Feedback, Report: Report, Import: Import, Restore: Restore });
1305
  /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))
1306
 
1307
  /***/ }),
1308
- /* 6 */
1309
  /***/ (function(module, exports, __webpack_require__) {
1310
 
1311
  "use strict";
60
  /******/ __webpack_require__.p = "";
61
  /******/
62
  /******/ // Load entry module and return exports
63
+ /******/ return __webpack_require__(__webpack_require__.s = 7);
64
  /******/ })
65
  /************************************************************************/
66
  /******/ ([
1130
  /* 5 */
1131
  /***/ (function(module, exports, __webpack_require__) {
1132
 
1133
+ "use strict";
1134
+
1135
+
1136
+ /**
1137
+ * Copyright (C) 2014-2019 ServMask Inc.
1138
+ *
1139
+ * This program is free software: you can redistribute it and/or modify
1140
+ * it under the terms of the GNU General Public License as published by
1141
+ * the Free Software Foundation, either version 3 of the License, or
1142
+ * (at your option) any later version.
1143
+ *
1144
+ * This program is distributed in the hope that it will be useful,
1145
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
1146
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1147
+ * GNU General Public License for more details.
1148
+ *
1149
+ * You should have received a copy of the GNU General Public License
1150
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
1151
+ *
1152
+ * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗
1153
+ * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝
1154
+ * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝
1155
+ * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗
1156
+ * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗
1157
+ * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝
1158
+ */
1159
+
1160
+ var Modal = __webpack_require__(6),
1161
+ $ = jQuery;
1162
+
1163
+ var Export = function Export() {
1164
+ var self = this;
1165
+
1166
+ // Set params
1167
+ this.params = [];
1168
+
1169
+ // Set stop flag
1170
+ this.stopExport = false;
1171
+
1172
+ // Set modal
1173
+ this.modal = new Modal();
1174
+
1175
+ // Set stop listener
1176
+ this.modal.onStop = function (options) {
1177
+ self.onStop(options);
1178
+ };
1179
+ };
1180
+
1181
+ Export.prototype.setParams = function (params) {
1182
+ this.params = Ai1wm.Util.list(params);
1183
+ };
1184
+
1185
+ Export.prototype.start = function (options, retries) {
1186
+ var self = this;
1187
+ var retries = retries || 0;
1188
+
1189
+ // Set stop flag
1190
+ if (retries === 0) {
1191
+ this.stopExport = false;
1192
+ }
1193
+
1194
+ // Stop running export
1195
+ if (this.stopExport) {
1196
+ return;
1197
+ }
1198
+
1199
+ // Initializing beforeunload event
1200
+ $(window).bind('beforeunload', function () {
1201
+ return ai1wm_locale.stop_exporting_your_website;
1202
+ });
1203
+
1204
+ // Set initial status
1205
+ this.setStatus({ type: 'info', message: ai1wm_locale.preparing_to_export });
1206
+
1207
+ // Set params
1208
+ var params = this.params.concat({ name: 'secret_key', value: ai1wm_export.secret_key });
1209
+
1210
+ // Set additional params
1211
+ if (options) {
1212
+ params = params.concat(Ai1wm.Util.list(options));
1213
+ }
1214
+
1215
+ // Export
1216
+ $.ajax({
1217
+ url: ai1wm_export.ajax.url,
1218
+ type: 'POST',
1219
+ dataType: 'json',
1220
+ data: params,
1221
+ dataFilter: function dataFilter(data, type) {
1222
+ return Ai1wm.Util.json(data);
1223
+ }
1224
+ }).done(function () {
1225
+ self.getStatus();
1226
+ }).done(function (params) {
1227
+ if (params) {
1228
+ self.run(params);
1229
+ }
1230
+ }).fail(function () {
1231
+ var timeout = retries * 1000;
1232
+ if (retries >= 5) {
1233
+ return self.setStatus({
1234
+ type: 'error',
1235
+ title: ai1wm_locale.unable_to_export,
1236
+ message: ai1wm_locale.unable_to_start_the_export
1237
+ });
1238
+ }
1239
+
1240
+ retries++;
1241
+
1242
+ setTimeout(self.start.bind(self, options, retries), timeout);
1243
+ });
1244
+ };
1245
+
1246
+ Export.prototype.run = function (params, retries) {
1247
+ var self = this;
1248
+ var retries = retries || 0;
1249
+
1250
+ // Stop running export
1251
+ if (this.stopExport) {
1252
+ return;
1253
+ }
1254
+
1255
+ // Export
1256
+ $.ajax({
1257
+ url: ai1wm_export.ajax.url,
1258
+ type: 'POST',
1259
+ dataType: 'json',
1260
+ data: params,
1261
+ dataFilter: function dataFilter(data, type) {
1262
+ return Ai1wm.Util.json(data);
1263
+ }
1264
+ }).done(function (params) {
1265
+ if (params) {
1266
+ self.run(params);
1267
+ }
1268
+ }).fail(function () {
1269
+ var timeout = retries * 1000;
1270
+ if (retries >= 5) {
1271
+ return self.setStatus({
1272
+ type: 'error',
1273
+ title: ai1wm_locale.unable_to_export,
1274
+ message: ai1wm_locale.unable_to_run_the_export
1275
+ });
1276
+ }
1277
+
1278
+ retries++;
1279
+
1280
+ setTimeout(self.run.bind(self, params, retries), timeout);
1281
+ });
1282
+ };
1283
+
1284
+ Export.prototype.clean = function (options, retries) {
1285
+ var self = this;
1286
+ var retries = retries || 0;
1287
+
1288
+ // Set stop flag
1289
+ this.stopExport = true;
1290
+
1291
+ // Set initial status
1292
+ this.setStatus({ type: 'info', message: ai1wm_locale.please_wait_stopping_the_export });
1293
+
1294
+ // Set params
1295
+ var params = this.params.concat({ name: 'secret_key', value: ai1wm_export.secret_key }).concat({ name: 'priority', value: 300 });
1296
+
1297
+ // Set additional params
1298
+ if (options) {
1299
+ params = params.concat(Ai1wm.Util.list(options));
1300
+ }
1301
+
1302
+ // Clean
1303
+ $.ajax({
1304
+ url: ai1wm_export.ajax.url,
1305
+ type: 'POST',
1306
+ dataType: 'json',
1307
+ data: params,
1308
+ dataFilter: function dataFilter(data, type) {
1309
+ return Ai1wm.Util.json(data);
1310
+ }
1311
+ }).done(function () {
1312
+ // Unbinding the beforeunload event when we stop exporting
1313
+ $(window).unbind('beforeunload');
1314
+
1315
+ // Destroy modal
1316
+ self.modal.destroy();
1317
+ }).fail(function () {
1318
+ var timeout = retries * 1000;
1319
+ if (retries >= 5) {
1320
+ return self.setStatus({
1321
+ type: 'error',
1322
+ title: ai1wm_locale.unable_to_export,
1323
+ message: ai1wm_locale.unable_to_stop_the_export
1324
+ });
1325
+ }
1326
+
1327
+ retries++;
1328
+
1329
+ setTimeout(self.clean.bind(self, options, retries), timeout);
1330
+ });
1331
+ };
1332
+
1333
+ Export.prototype.getStatus = function () {
1334
+ var self = this;
1335
+
1336
+ // Stop getting status
1337
+ if (this.stopExport) {
1338
+ return;
1339
+ }
1340
+
1341
+ $.ajax({
1342
+ url: ai1wm_export.status.url,
1343
+ type: 'GET',
1344
+ dataType: 'json',
1345
+ cache: false,
1346
+ dataFilter: function dataFilter(data, type) {
1347
+ return Ai1wm.Util.json(data);
1348
+ }
1349
+ }).done(function (params) {
1350
+ if (params) {
1351
+ self.setStatus(params);
1352
+
1353
+ // Next status
1354
+ switch (params.type) {
1355
+ case 'done':
1356
+ case 'error':
1357
+ case 'download':
1358
+ // Unbinding beforeunload event when any case is performed
1359
+ $(window).unbind('beforeunload');
1360
+ return;
1361
+ }
1362
+ }
1363
+
1364
+ // Export is not done yet, let's check status in 3 seconds
1365
+ setTimeout(self.getStatus.bind(self), 3000);
1366
+ }).fail(function () {
1367
+ // Export is not done yet, let's check status in 3 seconds
1368
+ setTimeout(self.getStatus.bind(self), 3000);
1369
+ });
1370
+ };
1371
+
1372
+ Export.prototype.setStatus = function (params) {
1373
+ this.modal.render(params);
1374
+ };
1375
+
1376
+ Export.prototype.onStop = function (options) {
1377
+ this.clean(options);
1378
+ };
1379
+
1380
+ module.exports = Export;
1381
+
1382
+ /***/ }),
1383
+ /* 6 */
1384
+ /***/ (function(module, exports, __webpack_require__) {
1385
+
1386
+ "use strict";
1387
+
1388
+
1389
+ /**
1390
+ * Copyright (C) 2014-2019 ServMask Inc.
1391
+ *
1392
+ * This program is free software: you can redistribute it and/or modify
1393
+ * it under the terms of the GNU General Public License as published by
1394
+ * the Free Software Foundation, either version 3 of the License, or
1395
+ * (at your option) any later version.
1396
+ *
1397
+ * This program is distributed in the hope that it will be useful,
1398
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
1399
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1400
+ * GNU General Public License for more details.
1401
+ *
1402
+ * You should have received a copy of the GNU General Public License
1403
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
1404
+ *
1405
+ * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗
1406
+ * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝
1407
+ * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝
1408
+ * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗
1409
+ * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗
1410
+ * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝
1411
+ */
1412
+
1413
+ var $ = jQuery;
1414
+
1415
+ var Modal = function Modal() {
1416
+ var self = this;
1417
+
1418
+ // Error Modal
1419
+ this.error = function (params) {
1420
+
1421
+ // Create the modal container
1422
+ var container = $('<div></div>');
1423
+
1424
+ // Create section to hold title, message and action
1425
+ var section = $('<section></section>');
1426
+
1427
+ // Create header to hold title
1428
+ var header = $('<h1></h1>');
1429
+
1430
+ // Create paragraph to hold mesage
1431
+ var message = $('<p></p>').html(params.message);
1432
+
1433
+ // Create action section
1434
+ var action = $('<div></div>');
1435
+
1436
+ // Create title
1437
+ var title = $('<span></span>').addClass('ai1wm-title-red').text(params.title);
1438
+
1439
+ // Create close button
1440
+ var closeButton = $('<button type="button" class="ai1wm-button-red"></button>').on('click', function () {
1441
+ self.destroy();
1442
+ });
1443
+
1444
+ // Append text to close button
1445
+ closeButton.append(ai1wm_locale.close_export);
1446
+
1447
+ // Append close button to action
1448
+ action.append(closeButton);
1449
+
1450
+ // Append title to section
1451
+ header.append(title);
1452
+
1453
+ // Append header and message to section
1454
+ section.append(header).append(message);
1455
+
1456
+ // Append section and action to container
1457
+ container.append(section).append(action);
1458
+
1459
+ // Render modal
1460
+ self.modal.html(container).show();
1461
+ self.modal.focus();
1462
+ self.overlay.show();
1463
+ };
1464
+
1465
+ // Info Modal
1466
+ this.info = function (params) {
1467
+
1468
+ // Create the modal container
1469
+ var container = $('<div></div>');
1470
+
1471
+ // Create section to hold title, message and action
1472
+ var section = $('<section></section>');
1473
+
1474
+ // Create header to hold loader
1475
+ var header = $('<h1></h1>');
1476
+
1477
+ // Create paragraph to hold mesage
1478
+ var message = $('<p></p>').html(params.message);
1479
+
1480
+ // Create action section
1481
+ var action = $('<div></div>');
1482
+
1483
+ // Create loader
1484
+ var loader = $('<span class="ai1wm-loader"></span>');
1485
+
1486
+ // Create stop export
1487
+ var stopButton = $('<button type="button" class="ai1wm-button-red"></button>').on('click', function () {
1488
+ $(this).attr('disabled', 'disabled');
1489
+ self.onStop();
1490
+ });
1491
+
1492
+ // Append text to stop button
1493
+ stopButton.append('<i class="ai1wm-icon-notification"></i> ' + ai1wm_locale.stop_export);
1494
+
1495
+ // Append stop button to action
1496
+ action.append(stopButton);
1497
+
1498
+ // Append loader to header
1499
+ header.append(loader);
1500
+
1501
+ // Append header and message to section
1502
+ section.append(header).append(message);
1503
+
1504
+ // Append section and action to container
1505
+ container.append(section).append(action);
1506
+
1507
+ // Render modal
1508
+ self.modal.html(container).show();
1509
+ self.modal.focus();
1510
+ self.overlay.show();
1511
+ };
1512
+
1513
+ // Done Modal
1514
+ this.done = function (params) {
1515
+
1516
+ // Create the modal container
1517
+ var container = $('<div></div>');
1518
+
1519
+ // Create section to hold title, message and action
1520
+ var section = $('<section></section>');
1521
+
1522
+ // Create header to hold title
1523
+ var header = $('<h1></h1>');
1524
+
1525
+ // Create paragraph to hold mesage
1526
+ var message = $('<p></p>').html(params.message);
1527
+
1528
+ // Create action section
1529
+ var action = $('<div></div>');
1530
+
1531
+ // Create title
1532
+ var title = $('<span></span>').addClass('ai1wm-title-green').text(params.title);
1533
+
1534
+ // Create close button
1535
+ var closeButton = $('<button type="button" class="ai1wm-button-red"></button>').on('click', function () {
1536
+ self.destroy();
1537
+ });
1538
+
1539
+ // Append text to close button
1540
+ closeButton.append(ai1wm_locale.close_export);
1541
+
1542
+ // Append close button to action
1543
+ action.append(closeButton);
1544
+
1545
+ // Append title to section
1546
+ header.append(title);
1547
+
1548
+ // Append header and message to section
1549
+ section.append(header).append(message);
1550
+
1551
+ // Append section and action to container
1552
+ container.append(section).append(action);
1553
+
1554
+ // Render modal
1555
+ self.modal.html(container).show();
1556
+ self.modal.focus();
1557
+ self.overlay.show();
1558
+ };
1559
+
1560
+ // Download Modal
1561
+ this.download = function (params) {
1562
+
1563
+ // Create the modal container
1564
+ var container = $('<div></div>');
1565
+
1566
+ // Create section to hold title, message and action
1567
+ var section = $('<section></section>');
1568
+
1569
+ // Create header to hold title
1570
+ var header = $('<h1></h1>');
1571
+
1572
+ // Create paragraph to hold mesage
1573
+ var message = $('<p></p>').html(params.message);
1574
+
1575
+ // Create action section
1576
+ var action = $('<div></div>');
1577
+
1578
+ // Create close button
1579
+ var closeButton = $('<button type="button" class="ai1wm-button-red"></button>').on('click', function () {
1580
+ self.destroy();
1581
+ });
1582
+
1583
+ // Append text to close button
1584
+ closeButton.append(ai1wm_locale.close_export);
1585
+
1586
+ // Append close button to action
1587
+ action.append(closeButton);
1588
+
1589
+ // Append message to section
1590
+ section.append(message);
1591
+
1592
+ // Append section and action to container
1593
+ container.append(section).append(action);
1594
+
1595
+ // Render modal
1596
+ self.modal.html(container).show();
1597
+ self.modal.focus();
1598
+ self.overlay.show();
1599
+ };
1600
+
1601
+ // Create the overlay
1602
+ this.overlay = $('<div class="ai1wm-overlay"></div>');
1603
+
1604
+ // Create the modal container
1605
+ this.modal = $('<div class="ai1wm-modal-container" role="dialog" tabindex="-1"></div>');
1606
+
1607
+ $('body').append(this.overlay) // Append overlay to body
1608
+ .append(this.modal); // Append modal to body
1609
+ };
1610
+
1611
+ Modal.prototype.render = function (params) {
1612
+ $(document).trigger('ai1wm-export-status', params);
1613
+
1614
+ // Show modal
1615
+ switch (params.type) {
1616
+ case 'error':
1617
+ this.error(params);
1618
+ break;
1619
+
1620
+ case 'info':
1621
+ this.info(params);
1622
+ break;
1623
+
1624
+ case 'done':
1625
+ this.done(params);
1626
+ break;
1627
+
1628
+ case 'download':
1629
+ this.download(params);
1630
+ break;
1631
+ }
1632
+ };
1633
+
1634
+ Modal.prototype.destroy = function () {
1635
+ this.modal.hide();
1636
+ this.overlay.hide();
1637
+ };
1638
+
1639
+ module.exports = Modal;
1640
+
1641
+ /***/ }),
1642
+ /* 7 */
1643
+ /***/ (function(module, exports, __webpack_require__) {
1644
+
1645
  "use strict";
1646
  /* WEBPACK VAR INJECTION */(function(global) {
1647
 
1672
  var Feedback = __webpack_require__(1);
1673
  var Report = __webpack_require__(2);
1674
  var Import = __webpack_require__(3);
1675
+ var Export = __webpack_require__(5);
1676
+ var Restore = __webpack_require__(8);
1677
 
1678
  jQuery(document).ready(function ($) {
1679
  'use strict';
1680
 
1681
+ $("#ai1wm-backups-list").on({
1682
+ mouseenter: function mouseenter() {
1683
+ $(this).addClass('ai1wm-button-on');
1684
+ },
1685
+ mouseleave: function mouseleave() {
1686
+ $(this).removeClass('ai1wm-button-on');
1687
+ }
1688
+ }, '.ai1wm-backup-actions > a');
1689
 
1690
  // Delete file
1691
+ $('#ai1wm-backups-list').on('click', '.ai1wm-backup-delete', function (e) {
1692
  var self = $(this);
1693
 
1694
  // Delete file
1721
  var model = new Import();
1722
 
1723
  // Restore from file
1724
+ $('#ai1wm-backups-list').on('click', '.ai1wm-backup-restore', function (e) {
1725
  e.preventDefault();
1726
 
1727
  if (!!Ai1wm.MultisiteExtensionRestore) {
1735
  }
1736
  });
1737
 
1738
+ $('#ai1wm-backups-list').on('click', '.ai1wm-add-description, .ai1wm-backup-label', function () {
1739
  $(this).hide();
1740
 
1741
  if (!$(this).closest('td').find('.ai1wm-add-label-holder').length) {
1742
  var td = $(this).closest('td');
1743
  var backup_label = td.find('.ai1wm-backup-label');
1744
+ var backup_label_text = td.find('.ai1wm-backup-label-colored');
1745
 
1746
+ td.append('\n\t\t\t\t<tr class="ai1wm-add-label-holder">\n\t\t\t\t\t<td>\n\t\t\t\t\t\t<input type="text" class="ai1wm-label-field" value="" />\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t');
1747
 
1748
+ td.find('.ai1wm-label-field').val(backup_label_text.text().trim()).focus();
1749
  backup_label.hide();
1750
  }
1751
  });
1752
 
1753
+ $('#ai1wm-backups-list').on('keypress keydown', '.ai1wm-label-field', function (e) {
1754
  var keycode = typeof e.keyCode != 'undefined' && e.keyCode ? e.keyCode : e.which;
1755
  var input = $(this);
1756
 
1816
  }
1817
  }
1818
  });
1819
+
1820
+ $(document).on('ai1wm-export-status', function (e, params) {
1821
+ switch (params.type) {
1822
+ case 'download':
1823
+ if ($('.ai1wm-backups').length && !$('.ai1wm-backups').hasClass('ai1wm-hide')) {
1824
+ $('.ai1wm-backups tbody').prepend('\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<td colspan="4" align="center" class="ai1wm-spinner-holder">\n\t\t\t\t\t\t\t\t<span class="spinner ai1wm-backups-list-spinner"></span>\n\t\t\t\t\t\t\t\t' + ai1wm_locale.refresh_backup_list + '\n\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t');
1825
+ } else {
1826
+ $('.ai1wm-backups-empty').addClass('ai1wm-hide');
1827
+ $('#ai1wm-backups-list').prepend('\n\t\t\t\t\t\t<p class="ai1wm-spinner-paragraph">\n\t\t\t\t\t\t\t<span class="spinner">' + ai1wm_locale.refresh_backup_list + '</span>\n\t\t\t\t\t\t</p>\n\t\t\t\t\t');
1828
+ }
1829
+
1830
+ $.get(ai1wm_backups.ajax.backup_list).done(function (data) {
1831
+ $('#ai1wm-backups-list').html(data);
1832
+ }).fail(function (jqXHR, textStatus, textError) {
1833
+ alert(ai1wm_locale.unable_to_refresh_backups_list + textError);
1834
+ });
1835
+ break;
1836
+ default:
1837
+ break;
1838
+ }
1839
+ });
1840
+
1841
+ var model = new Export();
1842
+
1843
+ $('#ai1wm-create-backup').click(function (e) {
1844
+ var storage = Ai1wm.Util.random(12);
1845
+ var options = Ai1wm.Util.form('#ai1wm-export-form').concat({ name: 'storage', value: storage });
1846
+
1847
+ // Set global params
1848
+ model.setParams(options);
1849
+
1850
+ // Start export
1851
+ model.start();
1852
+
1853
+ e.preventDefault();
1854
+ });
1855
  });
1856
 
1857
+ global.Ai1wm = jQuery.extend({}, global.Ai1wm, { Feedback: Feedback, Report: Report, Import: Import, Restore: Restore, Export: Export });
1858
  /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))
1859
 
1860
  /***/ }),
1861
+ /* 8 */
1862
  /***/ (function(module, exports, __webpack_require__) {
1863
 
1864
  "use strict";
lib/view/assets/javascript/export.min.js CHANGED
@@ -60,7 +60,7 @@
60
  /******/ __webpack_require__.p = "";
61
  /******/
62
  /******/ // Load entry module and return exports
63
- /******/ return __webpack_require__(__webpack_require__.s = 7);
64
  /******/ })
65
  /************************************************************************/
66
  /******/ ([
@@ -313,134 +313,7 @@ jQuery(document).ready(function ($) {
313
  /***/ }),
314
  /* 3 */,
315
  /* 4 */,
316
- /* 5 */,
317
- /* 6 */,
318
- /* 7 */
319
- /***/ (function(module, exports, __webpack_require__) {
320
-
321
- "use strict";
322
- /* WEBPACK VAR INJECTION */(function(global) {
323
-
324
- /**
325
- * Copyright (C) 2014-2019 ServMask Inc.
326
- *
327
- * This program is free software: you can redistribute it and/or modify
328
- * it under the terms of the GNU General Public License as published by
329
- * the Free Software Foundation, either version 3 of the License, or
330
- * (at your option) any later version.
331
- *
332
- * This program is distributed in the hope that it will be useful,
333
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
334
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
335
- * GNU General Public License for more details.
336
- *
337
- * You should have received a copy of the GNU General Public License
338
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
339
- *
340
- * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗
341
- * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝
342
- * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝
343
- * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗
344
- * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗
345
- * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝
346
- */
347
-
348
- var Query = __webpack_require__(8),
349
- FindReplace = __webpack_require__(9),
350
- Feedback = __webpack_require__(1),
351
- Report = __webpack_require__(2),
352
- Export = __webpack_require__(10);
353
-
354
- jQuery(document).ready(function ($) {
355
- 'use strict';
356
-
357
- var model = new Export();
358
-
359
- // Export to file
360
- $('#ai1wm-export-file').click(function (e) {
361
- var storage = Ai1wm.Util.random(12);
362
- var options = Ai1wm.Util.form('#ai1wm-export-form').concat({ name: 'storage', value: storage });
363
-
364
- // Set global params
365
- model.setParams(options);
366
-
367
- // Start export
368
- model.start();
369
-
370
- e.preventDefault();
371
- });
372
-
373
- $('.ai1wm-accordion > .ai1wm-title').click(function () {
374
- $(this).parent().toggleClass('ai1wm-active');
375
- });
376
-
377
- $('#ai1wm-add-new-replace-button').ai1wm_find_replace();
378
-
379
- $('.ai1wm-expandable > p:first, .ai1wm-expandable > h4:first, .ai1wm-expandable > div.ai1wm-button-main').on('click', function () {
380
- $(this).parent().toggleClass('ai1wm-open');
381
- });
382
-
383
- $('.ai1wm-query').ai1wm_query();
384
- });
385
-
386
- global.Ai1wm = jQuery.extend({}, global.Ai1wm, { Query: Query, FindReplace: FindReplace, Feedback: Feedback, Report: Report, Export: Export });
387
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))
388
-
389
- /***/ }),
390
- /* 8 */
391
- /***/ (function(module, exports, __webpack_require__) {
392
-
393
- "use strict";
394
-
395
-
396
- /**
397
- * Copyright (C) 2014-2019 ServMask Inc.
398
- *
399
- * This program is free software: you can redistribute it and/or modify
400
- * it under the terms of the GNU General Public License as published by
401
- * the Free Software Foundation, either version 3 of the License, or
402
- * (at your option) any later version.
403
- *
404
- * This program is distributed in the hope that it will be useful,
405
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
406
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
407
- * GNU General Public License for more details.
408
- *
409
- * You should have received a copy of the GNU General Public License
410
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
411
- *
412
- * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗
413
- * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝
414
- * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝
415
- * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗
416
- * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗
417
- * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝
418
- */
419
-
420
- ;(function ($) {
421
-
422
- $.fn.ai1wm_query = function () {
423
- var findInput = $(this).find('input.ai1wm-query-find-input'),
424
- replaceInput = $(this).find('input.ai1wm-query-replace-input'),
425
- findText = $(this).find('small.ai1wm-query-find-text'),
426
- replaceText = $(this).find('small.ai1wm-query-replace-text');
427
-
428
- findInput.on('change paste input keypress keydown keyup', function () {
429
- var _inputValue = $(this).val().length > 0 ? $(this).val() : '<text>';
430
- findText.text(_inputValue);
431
- });
432
-
433
- replaceInput.on('change paste input keypress keydown keyup', function () {
434
- var _inputValue = $(this).val().length > 0 ? $(this).val() : '<another-text>';
435
- replaceText.text(_inputValue);
436
- });
437
-
438
- return this;
439
- };
440
- })(jQuery);
441
-
442
- /***/ }),
443
- /* 9 */
444
  /***/ (function(module, exports, __webpack_require__) {
445
 
446
  "use strict";
@@ -470,71 +343,7 @@ global.Ai1wm = jQuery.extend({}, global.Ai1wm, { Query: Query, FindReplace: Find
470
  * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝
471
  */
472
 
473
- ;(function ($) {
474
-
475
- $.fn.ai1wm_find_replace = function () {
476
- $(this).click(function (e) {
477
- e.preventDefault();
478
-
479
- var row = $('#ai1wm-queries > li:first').clone();
480
-
481
- // Reset input values
482
- row.find('input').val('');
483
-
484
- // Reset ai1wm-query-find-text
485
- row.find('.ai1wm-query-find-text').html('&lt;text&gt;');
486
-
487
- // Reset ai1wm-query-replace-text
488
- row.find('.ai1wm-query-replace-text').html('&lt;another-text&gt;');
489
-
490
- $('#ai1wm-queries > li').removeClass('ai1wm-open');
491
-
492
- $(row).addClass('ai1wm-open');
493
-
494
- // Add new replace fields
495
- $('#ai1wm-queries').append(row);
496
- $(row).ai1wm_query();
497
- $(row).find('p:first').on('click', function () {
498
- $(this).parent().toggleClass('ai1wm-open');
499
- });
500
- });
501
-
502
- return this;
503
- };
504
- })(jQuery);
505
-
506
- /***/ }),
507
- /* 10 */
508
- /***/ (function(module, exports, __webpack_require__) {
509
-
510
- "use strict";
511
-
512
-
513
- /**
514
- * Copyright (C) 2014-2019 ServMask Inc.
515
- *
516
- * This program is free software: you can redistribute it and/or modify
517
- * it under the terms of the GNU General Public License as published by
518
- * the Free Software Foundation, either version 3 of the License, or
519
- * (at your option) any later version.
520
- *
521
- * This program is distributed in the hope that it will be useful,
522
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
523
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
524
- * GNU General Public License for more details.
525
- *
526
- * You should have received a copy of the GNU General Public License
527
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
528
- *
529
- * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗
530
- * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝
531
- * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝
532
- * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗
533
- * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗
534
- * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝
535
- */
536
-
537
- var Modal = __webpack_require__(11),
538
  $ = jQuery;
539
 
540
  var Export = function Export() {
@@ -757,7 +566,7 @@ Export.prototype.onStop = function (options) {
757
  module.exports = Export;
758
 
759
  /***/ }),
760
- /* 11 */
761
  /***/ (function(module, exports, __webpack_require__) {
762
 
763
  "use strict";
@@ -986,6 +795,7 @@ var Modal = function Modal() {
986
  };
987
 
988
  Modal.prototype.render = function (params) {
 
989
 
990
  // Show modal
991
  switch (params.type) {
@@ -1014,5 +824,196 @@ Modal.prototype.destroy = function () {
1014
 
1015
  module.exports = Modal;
1016
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1017
  /***/ })
1018
  /******/ ]);
60
  /******/ __webpack_require__.p = "";
61
  /******/
62
  /******/ // Load entry module and return exports
63
+ /******/ return __webpack_require__(__webpack_require__.s = 9);
64
  /******/ })
65
  /************************************************************************/
66
  /******/ ([
313
  /***/ }),
314
  /* 3 */,
315
  /* 4 */,
316
+ /* 5 */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
317
  /***/ (function(module, exports, __webpack_require__) {
318
 
319
  "use strict";
343
  * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝
344
  */
345
 
346
+ var Modal = __webpack_require__(6),
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
347
  $ = jQuery;
348
 
349
  var Export = function Export() {
566
  module.exports = Export;
567
 
568
  /***/ }),
569
+ /* 6 */
570
  /***/ (function(module, exports, __webpack_require__) {
571
 
572
  "use strict";
795
  };
796
 
797
  Modal.prototype.render = function (params) {
798
+ $(document).trigger('ai1wm-export-status', params);
799
 
800
  // Show modal
801
  switch (params.type) {
824
 
825
  module.exports = Modal;
826
 
827
+ /***/ }),
828
+ /* 7 */,
829
+ /* 8 */,
830
+ /* 9 */
831
+ /***/ (function(module, exports, __webpack_require__) {
832
+
833
+ "use strict";
834
+ /* WEBPACK VAR INJECTION */(function(global) {
835
+
836
+ /**
837
+ * Copyright (C) 2014-2019 ServMask Inc.
838
+ *
839
+ * This program is free software: you can redistribute it and/or modify
840
+ * it under the terms of the GNU General Public License as published by
841
+ * the Free Software Foundation, either version 3 of the License, or
842
+ * (at your option) any later version.
843
+ *
844
+ * This program is distributed in the hope that it will be useful,
845
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
846
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
847
+ * GNU General Public License for more details.
848
+ *
849
+ * You should have received a copy of the GNU General Public License
850
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
851
+ *
852
+ * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗
853
+ * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝
854
+ * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝
855
+ * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗
856
+ * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗
857
+ * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝
858
+ */
859
+
860
+ var Query = __webpack_require__(10),
861
+ FindReplace = __webpack_require__(11),
862
+ Feedback = __webpack_require__(1),
863
+ Report = __webpack_require__(2),
864
+ Export = __webpack_require__(5);
865
+
866
+ jQuery(document).ready(function ($) {
867
+ 'use strict';
868
+
869
+ var model = new Export();
870
+
871
+ // Export to file
872
+ $('#ai1wm-export-file').click(function (e) {
873
+ var storage = Ai1wm.Util.random(12);
874
+ var options = Ai1wm.Util.form('#ai1wm-export-form').concat({ name: 'storage', value: storage });
875
+
876
+ // Set global params
877
+ model.setParams(options);
878
+
879
+ // Start export
880
+ model.start();
881
+
882
+ e.preventDefault();
883
+ });
884
+
885
+ $('.ai1wm-accordion > .ai1wm-title').click(function () {
886
+ $(this).parent().toggleClass('ai1wm-active');
887
+ });
888
+
889
+ $('#ai1wm-add-new-replace-button').ai1wm_find_replace();
890
+
891
+ $('.ai1wm-expandable > p:first, .ai1wm-expandable > h4:first, .ai1wm-expandable > div.ai1wm-button-main').on('click', function () {
892
+ $(this).parent().toggleClass('ai1wm-open');
893
+ });
894
+
895
+ $('.ai1wm-query').ai1wm_query();
896
+ });
897
+
898
+ global.Ai1wm = jQuery.extend({}, global.Ai1wm, { Query: Query, FindReplace: FindReplace, Feedback: Feedback, Report: Report, Export: Export });
899
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))
900
+
901
+ /***/ }),
902
+ /* 10 */
903
+ /***/ (function(module, exports, __webpack_require__) {
904
+
905
+ "use strict";
906
+
907
+
908
+ /**
909
+ * Copyright (C) 2014-2019 ServMask Inc.
910
+ *
911
+ * This program is free software: you can redistribute it and/or modify
912
+ * it under the terms of the GNU General Public License as published by
913
+ * the Free Software Foundation, either version 3 of the License, or
914
+ * (at your option) any later version.
915
+ *
916
+ * This program is distributed in the hope that it will be useful,
917
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
918
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
919
+ * GNU General Public License for more details.
920
+ *
921
+ * You should have received a copy of the GNU General Public License
922
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
923
+ *
924
+ * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗
925
+ * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝
926
+ * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝
927
+ * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗
928
+ * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗
929
+ * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝
930
+ */
931
+
932
+ ;(function ($) {
933
+
934
+ $.fn.ai1wm_query = function () {
935
+ var findInput = $(this).find('input.ai1wm-query-find-input'),
936
+ replaceInput = $(this).find('input.ai1wm-query-replace-input'),
937
+ findText = $(this).find('small.ai1wm-query-find-text'),
938
+ replaceText = $(this).find('small.ai1wm-query-replace-text');
939
+
940
+ findInput.on('change paste input keypress keydown keyup', function () {
941
+ var _inputValue = $(this).val().length > 0 ? $(this).val() : '<text>';
942
+ findText.text(_inputValue);
943
+ });
944
+
945
+ replaceInput.on('change paste input keypress keydown keyup', function () {
946
+ var _inputValue = $(this).val().length > 0 ? $(this).val() : '<another-text>';
947
+ replaceText.text(_inputValue);
948
+ });
949
+
950
+ return this;
951
+ };
952
+ })(jQuery);
953
+
954
+ /***/ }),
955
+ /* 11 */
956
+ /***/ (function(module, exports, __webpack_require__) {
957
+
958
+ "use strict";
959
+
960
+
961
+ /**
962
+ * Copyright (C) 2014-2019 ServMask Inc.
963
+ *
964
+ * This program is free software: you can redistribute it and/or modify
965
+ * it under the terms of the GNU General Public License as published by
966
+ * the Free Software Foundation, either version 3 of the License, or
967
+ * (at your option) any later version.
968
+ *
969
+ * This program is distributed in the hope that it will be useful,
970
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
971
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
972
+ * GNU General Public License for more details.
973
+ *
974
+ * You should have received a copy of the GNU General Public License
975
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
976
+ *
977
+ * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗
978
+ * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝
979
+ * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝
980
+ * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗
981
+ * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗
982
+ * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝
983
+ */
984
+
985
+ ;(function ($) {
986
+
987
+ $.fn.ai1wm_find_replace = function () {
988
+ $(this).click(function (e) {
989
+ e.preventDefault();
990
+
991
+ var row = $('#ai1wm-queries > li:first').clone();
992
+
993
+ // Reset input values
994
+ row.find('input').val('');
995
+
996
+ // Reset ai1wm-query-find-text
997
+ row.find('.ai1wm-query-find-text').html('&lt;text&gt;');
998
+
999
+ // Reset ai1wm-query-replace-text
1000
+ row.find('.ai1wm-query-replace-text').html('&lt;another-text&gt;');
1001
+
1002
+ $('#ai1wm-queries > li').removeClass('ai1wm-open');
1003
+
1004
+ $(row).addClass('ai1wm-open');
1005
+
1006
+ // Add new replace fields
1007
+ $('#ai1wm-queries').append(row);
1008
+ $(row).ai1wm_query();
1009
+ $(row).find('p:first').on('click', function () {
1010
+ $(this).parent().toggleClass('ai1wm-open');
1011
+ });
1012
+ });
1013
+
1014
+ return this;
1015
+ };
1016
+ })(jQuery);
1017
+
1018
  /***/ })
1019
  /******/ ]);
lib/view/assets/javascript/feedback.min.js DELETED
@@ -1,263 +0,0 @@
1
- /******/ (function(modules) { // webpackBootstrap
2
- /******/ // The module cache
3
- /******/ var installedModules = {};
4
- /******/
5
- /******/ // The require function
6
- /******/ function __webpack_require__(moduleId) {
7
- /******/
8
- /******/ // Check if module is in cache
9
- /******/ if(installedModules[moduleId]) {
10
- /******/ return installedModules[moduleId].exports;
11
- /******/ }
12
- /******/ // Create a new module (and put it into the cache)
13
- /******/ var module = installedModules[moduleId] = {
14
- /******/ i: moduleId,
15
- /******/ l: false,
16
- /******/ exports: {}
17
- /******/ };
18
- /******/
19
- /******/ // Execute the module function
20
- /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
21
- /******/
22
- /******/ // Flag the module as loaded
23
- /******/ module.l = true;
24
- /******/
25
- /******/ // Return the exports of the module
26
- /******/ return module.exports;
27
- /******/ }
28
- /******/
29
- /******/
30
- /******/ // expose the modules object (__webpack_modules__)
31
- /******/ __webpack_require__.m = modules;
32
- /******/
33
- /******/ // expose the module cache
34
- /******/ __webpack_require__.c = installedModules;
35
- /******/
36
- /******/ // define getter function for harmony exports
37
- /******/ __webpack_require__.d = function(exports, name, getter) {
38
- /******/ if(!__webpack_require__.o(exports, name)) {
39
- /******/ Object.defineProperty(exports, name, {
40
- /******/ configurable: false,
41
- /******/ enumerable: true,
42
- /******/ get: getter
43
- /******/ });
44
- /******/ }
45
- /******/ };
46
- /******/
47
- /******/ // getDefaultExport function for compatibility with non-harmony modules
48
- /******/ __webpack_require__.n = function(module) {
49
- /******/ var getter = module && module.__esModule ?
50
- /******/ function getDefault() { return module['default']; } :
51
- /******/ function getModuleExports() { return module; };
52
- /******/ __webpack_require__.d(getter, 'a', getter);
53
- /******/ return getter;
54
- /******/ };
55
- /******/
56
- /******/ // Object.prototype.hasOwnProperty.call
57
- /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
58
- /******/
59
- /******/ // __webpack_public_path__
60
- /******/ __webpack_require__.p = "";
61
- /******/
62
- /******/ // Load entry module and return exports
63
- /******/ return __webpack_require__(__webpack_require__.s = 12);
64
- /******/ })
65
- /************************************************************************/
66
- /******/ ({
67
-
68
- /***/ 0:
69
- /***/ (function(module, exports) {
70
-
71
- var g;
72
-
73
- // This works in non-strict mode
74
- g = (function() {
75
- return this;
76
- })();
77
-
78
- try {
79
- // This works if eval is allowed (see CSP)
80
- g = g || Function("return this")() || (1,eval)("this");
81
- } catch(e) {
82
- // This works if the window reference is available
83
- if(typeof window === "object")
84
- g = window;
85
- }
86
-
87
- // g can still be undefined, but nothing to do about it...
88
- // We return undefined, instead of nothing here, so it's
89
- // easier to handle this case. if(!global) { ...}
90
-
91
- module.exports = g;
92
-
93
-
94
- /***/ }),
95
-
96
- /***/ 1:
97
- /***/ (function(module, exports, __webpack_require__) {
98
-
99
- "use strict";
100
-
101
-
102
- /**
103
- * Copyright (C) 2014-2018 ServMask Inc.
104
- *
105
- * This program is free software: you can redistribute it and/or modify
106
- * it under the terms of the GNU General Public License as published by
107
- * the Free Software Foundation, either version 3 of the License, or
108
- * (at your option) any later version.
109
- *
110
- * This program is distributed in the hope that it will be useful,
111
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
112
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
113
- * GNU General Public License for more details.
114
- *
115
- * You should have received a copy of the GNU General Public License
116
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
117
- *
118
- * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗
119
- * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝
120
- * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝
121
- * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗
122
- * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗
123
- * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝
124
- */
125
-
126
- jQuery(document).ready(function ($) {
127
- 'use strict';
128
-
129
- // Review
130
-
131
- $('#ai1wm-feedback-type-link-1').click(function (e) {
132
- var radio = $('#ai1wm-feedback-type-1');
133
- if (radio.is(':checked')) {
134
- radio.attr('checked', false);
135
- } else {
136
- radio.attr('checked', true);
137
- }
138
- });
139
-
140
- // Idea
141
- $('#ai1wm-feedback-type-link-2').click(function (e) {
142
- var radio = $('#ai1wm-feedback-type-2');
143
- if (radio.is(':checked')) {
144
- radio.attr('checked', false);
145
- } else {
146
- radio.attr('checked', true);
147
- }
148
- });
149
-
150
- // Help
151
- $('#ai1wm-feedback-type-3').click(function () {
152
- // Hide other options
153
- $('#ai1wm-feedback-type-1, #ai1wm-feedback-type-2').closest('li').hide();
154
-
155
- // Change placeholder message
156
- $('.ai1wm-feedback-form').find('.ai1wm-feedback-message').attr('placeholder', ai1wm_locale.how_may_we_help_you);
157
-
158
- // Show feedback form
159
- $('.ai1wm-feedback-form').fadeIn();
160
- });
161
-
162
- // Cancel feedback form
163
- $('#ai1wm-feedback-cancel').click(function (e) {
164
- $('.ai1wm-feedback-form').fadeOut(function () {
165
- $('.ai1wm-feedback-type').attr('checked', false).closest('li').show();
166
- });
167
-
168
- e.preventDefault();
169
- });
170
-
171
- // Send feedback form
172
- $('#ai1wm-feedback-submit').click(function (e) {
173
- var self = $(this);
174
-
175
- var spinner = self.next();
176
- var type = $('.ai1wm-feedback-type:checked').val();
177
- var email = $('.ai1wm-feedback-email').val();
178
- var message = $('.ai1wm-feedback-message').val();
179
- var terms = $('.ai1wm-feedback-terms').is(':checked');
180
-
181
- self.attr('disabled', true);
182
- spinner.css('visibility', 'visible');
183
-
184
- $.ajax({
185
- url: ai1wm_feedback.ajax.url,
186
- type: 'POST',
187
- dataType: 'json',
188
- async: true,
189
- data: {
190
- 'secret_key': ai1wm_feedback.secret_key,
191
- 'ai1wm_type': type,
192
- 'ai1wm_email': email,
193
- 'ai1wm_message': message,
194
- 'ai1wm_terms': +terms
195
- },
196
- dataFilter: function dataFilter(data, type) {
197
- return Ai1wm.Util.json(data);
198
- }
199
- }).done(function (data) {
200
- self.attr('disabled', false);
201
- spinner.css('visibility', 'hidden');
202
-
203
- if (data.errors.length > 0) {
204
- $('.ai1wm-feedback .ai1wm-message').remove();
205
-
206
- var errorMessage = $('<div />').addClass('ai1wm-message ai1wm-error-message');
207
- $.each(data.errors, function (key, value) {
208
- errorMessage.append($('<p />').text(value));
209
- });
210
-
211
- $('.ai1wm-feedback').prepend(errorMessage);
212
- } else {
213
- var successMessage = $('<div />').addClass('ai1wm-message ai1wm-success-message');
214
- successMessage.append($('<p />').text(ai1wm_locale.thanks_for_submitting_your_feedback));
215
-
216
- $('.ai1wm-feedback').html(successMessage);
217
- }
218
- });
219
-
220
- e.preventDefault();
221
- });
222
- });
223
-
224
- /***/ }),
225
-
226
- /***/ 12:
227
- /***/ (function(module, exports, __webpack_require__) {
228
-
229
- "use strict";
230
- /* WEBPACK VAR INJECTION */(function(global) {
231
-
232
- /**
233
- * Copyright (C) 2014-2018 ServMask Inc.
234
- *
235
- * This program is free software: you can redistribute it and/or modify
236
- * it under the terms of the GNU General Public License as published by
237
- * the Free Software Foundation, either version 3 of the License, or
238
- * (at your option) any later version.
239
- *
240
- * This program is distributed in the hope that it will be useful,
241
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
242
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
243
- * GNU General Public License for more details.
244
- *
245
- * You should have received a copy of the GNU General Public License
246
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
247
- *
248
- * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗
249
- * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝
250
- * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝
251
- * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗
252
- * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗
253
- * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝
254
- */
255
-
256
- var Feedback = __webpack_require__(1);
257
-
258
- global.Ai1wm = jQuery.extend({}, global.Ai1wm, { Feedback: Feedback });
259
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))
260
-
261
- /***/ })
262
-
263
- /******/ });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
lib/view/assets/javascript/report.min.js DELETED
@@ -1,235 +0,0 @@
1
- /******/ (function(modules) { // webpackBootstrap
2
- /******/ // The module cache
3
- /******/ var installedModules = {};
4
- /******/
5
- /******/ // The require function
6
- /******/ function __webpack_require__(moduleId) {
7
- /******/
8
- /******/ // Check if module is in cache
9
- /******/ if(installedModules[moduleId]) {
10
- /******/ return installedModules[moduleId].exports;
11
- /******/ }
12
- /******/ // Create a new module (and put it into the cache)
13
- /******/ var module = installedModules[moduleId] = {
14
- /******/ i: moduleId,
15
- /******/ l: false,
16
- /******/ exports: {}
17
- /******/ };
18
- /******/
19
- /******/ // Execute the module function
20
- /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
21
- /******/
22
- /******/ // Flag the module as loaded
23
- /******/ module.l = true;
24
- /******/
25
- /******/ // Return the exports of the module
26
- /******/ return module.exports;
27
- /******/ }
28
- /******/
29
- /******/
30
- /******/ // expose the modules object (__webpack_modules__)
31
- /******/ __webpack_require__.m = modules;
32
- /******/
33
- /******/ // expose the module cache
34
- /******/ __webpack_require__.c = installedModules;
35
- /******/
36
- /******/ // define getter function for harmony exports
37
- /******/ __webpack_require__.d = function(exports, name, getter) {
38
- /******/ if(!__webpack_require__.o(exports, name)) {
39
- /******/ Object.defineProperty(exports, name, {
40
- /******/ configurable: false,
41
- /******/ enumerable: true,
42
- /******/ get: getter
43
- /******/ });
44
- /******/ }
45
- /******/ };
46
- /******/
47
- /******/ // getDefaultExport function for compatibility with non-harmony modules
48
- /******/ __webpack_require__.n = function(module) {
49
- /******/ var getter = module && module.__esModule ?
50
- /******/ function getDefault() { return module['default']; } :
51
- /******/ function getModuleExports() { return module; };
52
- /******/ __webpack_require__.d(getter, 'a', getter);
53
- /******/ return getter;
54
- /******/ };
55
- /******/
56
- /******/ // Object.prototype.hasOwnProperty.call
57
- /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
58
- /******/
59
- /******/ // __webpack_public_path__
60
- /******/ __webpack_require__.p = "";
61
- /******/
62
- /******/ // Load entry module and return exports
63
- /******/ return __webpack_require__(__webpack_require__.s = 15);
64
- /******/ })
65
- /************************************************************************/
66
- /******/ ({
67
-
68
- /***/ 0:
69
- /***/ (function(module, exports) {
70
-
71
- var g;
72
-
73
- // This works in non-strict mode
74
- g = (function() {
75
- return this;
76
- })();
77
-
78
- try {
79
- // This works if eval is allowed (see CSP)
80
- g = g || Function("return this")() || (1,eval)("this");
81
- } catch(e) {
82
- // This works if the window reference is available
83
- if(typeof window === "object")
84
- g = window;
85
- }
86
-
87
- // g can still be undefined, but nothing to do about it...
88
- // We return undefined, instead of nothing here, so it's
89
- // easier to handle this case. if(!global) { ...}
90
-
91
- module.exports = g;
92
-
93
-
94
- /***/ }),
95
-
96
- /***/ 15:
97
- /***/ (function(module, exports, __webpack_require__) {
98
-
99
- "use strict";
100
- /* WEBPACK VAR INJECTION */(function(global) {
101
-
102
- /**
103
- * Copyright (C) 2014-2018 ServMask Inc.
104
- *
105
- * This program is free software: you can redistribute it and/or modify
106
- * it under the terms of the GNU General Public License as published by
107
- * the Free Software Foundation, either version 3 of the License, or
108
- * (at your option) any later version.
109
- *
110
- * This program is distributed in the hope that it will be useful,
111
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
112
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
113
- * GNU General Public License for more details.
114
- *
115
- * You should have received a copy of the GNU General Public License
116
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
117
- *
118
- * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗
119
- * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝
120
- * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝
121
- * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗
122
- * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗
123
- * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝
124
- */
125
-
126
- var Report = __webpack_require__(2);
127
-
128
- global.Ai1wm = jQuery.extend({}, global.Ai1wm, { Report: Report });
129
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))
130
-
131
- /***/ }),
132
-
133
- /***/ 2:
134
- /***/ (function(module, exports, __webpack_require__) {
135
-
136
- "use strict";
137
-
138
-
139
- /**
140
- * Copyright (C) 2014-2018 ServMask Inc.
141
- *
142
- * This program is free software: you can redistribute it and/or modify
143
- * it under the terms of the GNU General Public License as published by
144
- * the Free Software Foundation, either version 3 of the License, or
145
- * (at your option) any later version.
146
- *
147
- * This program is distributed in the hope that it will be useful,
148
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
149
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
150
- * GNU General Public License for more details.
151
- *
152
- * You should have received a copy of the GNU General Public License
153
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
154
- *
155
- * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗
156
- * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝
157
- * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝
158
- * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗
159
- * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗
160
- * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝
161
- */
162
-
163
- jQuery(document).ready(function ($) {
164
- 'use strict';
165
-
166
- $('#ai1wm-report-problem-button').click(function (e) {
167
- $(this).next('.ai1wm-report-problem-dialog').toggleClass('ai1wm-report-active');
168
-
169
- e.preventDefault();
170
- });
171
-
172
- $('#ai1wm-report-cancel').click(function (e) {
173
- $(this).closest('.ai1wm-report-problem-dialog').removeClass('ai1wm-report-active');
174
-
175
- e.preventDefault();
176
- });
177
-
178
- $('#ai1wm-report-submit').click(function (r) {
179
- var self = $(this);
180
-
181
- var spinner = self.next();
182
- var email = $('.ai1wm-report-email').val();
183
- var message = $('.ai1wm-report-message').val();
184
- var terms = $('.ai1wm-report-terms').is(':checked');
185
-
186
- self.attr('disabled', true);
187
- spinner.css('visibility', 'visible');
188
-
189
- $.ajax({
190
- url: ai1wm_report.ajax.url,
191
- type: 'POST',
192
- dataType: 'json',
193
- async: true,
194
- data: {
195
- 'secret_key': ai1wm_report.secret_key,
196
- 'ai1wm_email': email,
197
- 'ai1wm_message': message,
198
- 'ai1wm_terms': +terms
199
- },
200
- dataFilter: function dataFilter(data, type) {
201
- return Ai1wm.Util.json(data);
202
- }
203
- }).done(function (data) {
204
- self.attr('disabled', false);
205
- spinner.css('visibility', 'hidden');
206
-
207
- if (data.errors.length > 0) {
208
- $('.ai1wm-report-problem-dialog .ai1wm-message').remove();
209
-
210
- var errorMessage = $('<div />').addClass('ai1wm-message ai1wm-error-message');
211
- $.each(data.errors, function (key, value) {
212
- errorMessage.append($('<p />').text(value));
213
- });
214
-
215
- $('.ai1wm-report-problem-dialog').prepend(errorMessage);
216
- } else {
217
- var successMessage = $('<div />').addClass('ai1wm-message ai1wm-success-message');
218
- successMessage.append($('<p />').text(ai1wm_locale.thanks_for_submitting_your_request));
219
-
220
- $('.ai1wm-report-problem-dialog').html(successMessage);
221
-
222
- // Hide message
223
- setTimeout(function () {
224
- $('.ai1wm-report-problem-dialog').removeClass('ai1wm-report-active');
225
- }, 2000);
226
- }
227
- });
228
-
229
- e.preventDefault();
230
- });
231
- });
232
-
233
- /***/ })
234
-
235
- /******/ });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
lib/view/backups/backups-list.php ADDED
@@ -0,0 +1,101 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Copyright (C) 2014-2019 ServMask Inc.
4
+ *
5
+ * This program is free software: you can redistribute it and/or modify
6
+ * it under the terms of the GNU General Public License as published by
7
+ * the Free Software Foundation, either version 3 of the License, or
8
+ * (at your option) any later version.
9
+ *
10
+ * This program is distributed in the hope that it will be useful,
11
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ * GNU General Public License for more details.
14
+ *
15
+ * You should have received a copy of the GNU General Public License
16
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
17
+ *
18
+ * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗
19
+ * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝
20
+ * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝
21
+ * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗
22
+ * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗
23
+ * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝
24
+ */
25
+
26
+ if ( ! defined( 'ABSPATH' ) ) {
27
+ die( 'Kangaroos cannot jump here' );
28
+ }
29
+ ?>
30
+
31
+ <?php if ( $backups ) : ?>
32
+ <form action="" method="post" id="ai1wm-backups-form" class="ai1wm-clear">
33
+ <table class="ai1wm-backups">
34
+ <thead>
35
+ <tr>
36
+ <th class="ai1wm-column-name"><?php _e( 'Name', AI1WM_PLUGIN_NAME ); ?></th>
37
+ <th class="ai1wm-column-date"><?php _e( 'Date', AI1WM_PLUGIN_NAME ); ?></th>
38
+ <th class="ai1wm-column-size"><?php _e( 'Size', AI1WM_PLUGIN_NAME ); ?></th>
39
+ <th class="ai1wm-column-actions"></th>
40
+ </tr>
41
+ </thead>
42
+ <tbody>
43
+ <?php foreach ( $backups as $backup ) : ?>
44
+ <tr>
45
+ <td class="ai1wm-column-name">
46
+ <?php if ( $backup['path'] ) : ?>
47
+ <i class="ai1wm-icon-folder"></i>
48
+ <?php echo esc_html( $backup['path'] ); ?>
49
+ <br />
50
+ <?php endif; ?>
51
+ <i class="ai1wm-icon-file-zip"></i>
52
+ <span class="ai1wm-backup-filename">
53
+ <?php echo esc_html( basename( $backup['filename'] ) ); ?>
54
+ </span>
55
+ <?php if ( isset( $backups_labels[ basename( $backup['filename'] ) ] ) ) : ?>
56
+ <span class="ai1wm-backup-label">
57
+ <br />
58
+ <span class="ai1wm-backup-label-colored">
59
+ <?php echo esc_html( $backups_labels[ basename( $backup['filename'] ) ] ); ?>
60
+ </span>
61
+ <i class="ai1wm-icon-edit-pencil"></i>
62
+ </span>
63
+ <?php else : ?>
64
+ <span class="ai1wm-add-description">
65
+ <br />
66
+ <?php _e( 'Click to set a label for this backup', AI1WM_PLUGIN_NAME ); ?>
67
+ <i class="ai1wm-icon-edit-pencil"></i>
68
+ </span>
69
+ <?php endif; ?>
70
+ </td>
71
+ <td class="ai1wm-column-date">
72
+ <?php echo esc_html( sprintf( __( '%s ago', AI1WM_PLUGIN_NAME ), human_time_diff( $backup['mtime'] ) ) ); ?>
73
+ </td>
74
+ <td class="ai1wm-column-size">
75
+ <?php if ( is_null( $backup['size'] ) ) : ?>
76
+ <?php _e( '2GB+', AI1WM_PLUGIN_NAME ); ?>
77
+ <?php else : ?>
78
+ <?php echo size_format( $backup['size'], 2 ); ?>
79
+ <?php endif; ?>
80
+ </td>
81
+ <td class="ai1wm-column-actions ai1wm-backup-actions">
82
+ <a href="<?php echo ai1wm_backup_url( array( 'archive' => esc_attr( $backup['filename'] ) ) ); ?>" class="ai1wm-button-green ai1wm-backup-download" download="<?php echo esc_attr( $backup['filename'] ); ?>" aria-label="<?php _e( 'Download backup', AI1WM_PLUGIN_NAME ); ?>">
83
+ <i class="ai1wm-icon-arrow-down"></i>
84
+ <span><?php _e( 'Download', AI1WM_PLUGIN_NAME ); ?></span>
85
+ </a>
86
+ <a href="#" data-archive="<?php echo esc_attr( $backup['filename'] ); ?>" class="ai1wm-button-gray ai1wm-backup-restore" aria-label="<?php _e( 'Restore backup', AI1WM_PLUGIN_NAME ); ?>">
87
+ <i class="ai1wm-icon-cloud-upload"></i>
88
+ <span><?php _e( 'Restore', AI1WM_PLUGIN_NAME ); ?></span>
89
+ </a>
90
+ <a href="#" data-archive="<?php echo esc_attr( $backup['filename'] ); ?>" class="ai1wm-button-red ai1wm-backup-delete" aria-label="<?php _e( 'Delete backup', AI1WM_PLUGIN_NAME ); ?>">
91
+ <i class="ai1wm-icon-close"></i>
92
+ <span><?php _e( 'Delete', AI1WM_PLUGIN_NAME ); ?></span>
93
+ </a>
94
+ </td>
95
+ </tr>
96
+ <?php endforeach; ?>
97
+ </tbody>
98
+ </table>
99
+ <input type="hidden" name="ai1wm_manual_restore" value="1" />
100
+ </form>
101
+ <?php endif; ?>
lib/view/backups/backups-permissions.php ADDED
@@ -0,0 +1,43 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Copyright (C) 2014-2019 ServMask Inc.
4
+ *
5
+ * This program is free software: you can redistribute it and/or modify
6
+ * it under the terms of the GNU General Public License as published by
7
+ * the Free Software Foundation, either version 3 of the License, or
8
+ * (at your option) any later version.
9
+ *
10
+ * This program is distributed in the hope that it will be useful,
11
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ * GNU General Public License for more details.
14
+ *
15
+ * You should have received a copy of the GNU General Public License
16
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
17
+ *
18
+ * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗
19
+ * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝
20
+ * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝
21
+ * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗
22
+ * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗
23
+ * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝
24
+ */
25
+
26
+ if ( ! defined( 'ABSPATH' ) ) {
27
+ die( 'Kangaroos cannot jump here' );
28
+ }
29
+ ?>
30
+
31
+ <div class="ai1wm-message ai1wm-red-message ai1wm-clear" style="margin-top: 4em;">
32
+ <?php
33
+ printf(
34
+ __(
35
+ '<h3>Site could not be restored</h3>' .
36
+ '<p>Please make sure that storage directory <strong>%s</strong> has read and write permissions.</p>' .
37
+ '<p><a href="https://help.servmask.com/knowledgebase/invalid-file-permissions/" target="_blank">Technical details</a></p>',
38
+ AI1WM_PLUGIN_NAME
39
+ ),
40
+ AI1WM_BACKUPS_PATH
41
+ );
42
+ ?>
43
+ </div>
lib/view/backups/index.php CHANGED
@@ -39,108 +39,33 @@ if ( ! defined( 'ABSPATH' ) ) {
39
 
40
  <?php include AI1WM_TEMPLATES_PATH . '/common/report-problem.php'; ?>
41
 
42
- <form action="" method="post" id="ai1wm-backups-form" class="ai1wm-clear">
 
 
 
43
 
44
- <?php if ( is_readable( AI1WM_BACKUPS_PATH ) && is_writable( AI1WM_BACKUPS_PATH ) ) : ?>
45
- <?php if ( $backups ) : ?>
46
- <table class="ai1wm-backups">
47
- <thead>
48
- <tr>
49
- <th class="ai1wm-column-name"><?php _e( 'Name', AI1WM_PLUGIN_NAME ); ?></th>
50
- <th class="ai1wm-column-date"><?php _e( 'Date', AI1WM_PLUGIN_NAME ); ?></th>
51
- <th class="ai1wm-column-size"><?php _e( 'Size', AI1WM_PLUGIN_NAME ); ?></th>
52
- <th class="ai1wm-column-actions"></th>
53
- </tr>
54
- </thead>
55
- <tbody>
56
- <?php foreach ( $backups as $backup ) : ?>
57
- <tr>
58
- <td class="ai1wm-column-name">
59
- <?php if ( $backup['path'] ) : ?>
60
- <i class="ai1wm-icon-folder"></i>
61
- <?php echo esc_html( $backup['path'] ); ?>
62
- <br />
63
- <?php endif; ?>
64
- <i class="ai1wm-icon-file-zip"></i>
65
- <span class="ai1wm-backup-filename">
66
- <?php echo esc_html( basename( $backup['filename'] ) ); ?>
67
- </span>
68
- <?php if ( isset( $backups_labels[ basename( $backup['filename'] ) ] ) ) : ?>
69
- <span class="ai1wm-backup-label">
70
- <br />
71
- <span class="ai1wm-backup-label-colored">
72
- <?php echo esc_html( $backups_labels[ basename( $backup['filename'] ) ] ); ?>
73
- </span>
74
- <i class="ai1wm-icon-edit-pencil"></i>
75
- </span>
76
- <?php else : ?>
77
- <span class="ai1wm-add-description">
78
- <br />
79
- <?php _e( 'Click to set a label for this backup', AI1WM_PLUGIN_NAME ); ?>
80
- <i class="ai1wm-icon-edit-pencil"></i>
81
- </span>
82
- <?php endif; ?>
83
- </td>
84
- <td class="ai1wm-column-date">
85
- <?php echo esc_html( sprintf( __( '%s ago', AI1WM_PLUGIN_NAME ), human_time_diff( $backup['mtime'] ) ) ); ?>
86
- </td>
87
- <td class="ai1wm-column-size">
88
- <?php if ( is_null( $backup['size'] ) ) : ?>
89
- <?php _e( '2GB+', AI1WM_PLUGIN_NAME ); ?>
90
- <?php else : ?>
91
- <?php echo size_format( $backup['size'], 2 ); ?>
92
- <?php endif; ?>
93
- </td>
94
- <td class="ai1wm-column-actions ai1wm-backup-actions">
95
- <a href="<?php echo ai1wm_backup_url( array( 'archive' => esc_attr( $backup['filename'] ) ) ); ?>" class="ai1wm-button-green ai1wm-backup-download" download="<?php echo esc_attr( $backup['filename'] ); ?>" aria-label="<?php _e( 'Download backup', AI1WM_PLUGIN_NAME ); ?>">
96
- <i class="ai1wm-icon-arrow-down"></i>
97
- <span><?php _e( 'Download', AI1WM_PLUGIN_NAME ); ?></span>
98
- </a>
99
- <a href="#" data-archive="<?php echo esc_attr( $backup['filename'] ); ?>" class="ai1wm-button-gray ai1wm-backup-restore" aria-label="<?php _e( 'Restore backup', AI1WM_PLUGIN_NAME ); ?>">
100
- <i class="ai1wm-icon-cloud-upload"></i>
101
- <span><?php _e( 'Restore', AI1WM_PLUGIN_NAME ); ?></span>
102
- </a>
103
- <a href="#" data-archive="<?php echo esc_attr( $backup['filename'] ); ?>" class="ai1wm-button-red ai1wm-backup-delete" aria-label="<?php _e( 'Delete backup', AI1WM_PLUGIN_NAME ); ?>">
104
- <i class="ai1wm-icon-close"></i>
105
- <span><?php _e( 'Delete', AI1WM_PLUGIN_NAME ); ?></span>
106
- </a>
107
- </td>
108
- </tr>
109
- <?php endforeach; ?>
110
- </tbody>
111
- </table>
112
- <?php endif; ?>
113
  <div class="ai1wm-backups-create">
114
- <p class="ai1wm-backups-empty <?php echo $backups ? 'ai1wm-hide' : null; ?>">
115
  <?php _e( 'There are no backups available at this time, why not create a new one?', AI1WM_PLUGIN_NAME ); ?>
116
  </p>
117
  <p>
118
- <a href="<?php echo esc_url( network_admin_url( 'admin.php?page=ai1wm_export' ) ); ?>" class="ai1wm-button-green">
119
  <i class="ai1wm-icon-export"></i>
120
  <?php _e( 'Create backup', AI1WM_PLUGIN_NAME ); ?>
121
  </a>
122
  </p>
123
  </div>
124
- <?php else : ?>
125
- <div class="ai1wm-clear ai1wm-message ai1wm-red-message">
126
- <?php
127
- printf(
128
- __(
129
- '<h3>Site could not create backups!</h3>' .
130
- '<p>Please make sure that storage directory <strong>%s</strong> has read and write permissions.</p>',
131
- AI1WM_PLUGIN_NAME
132
- ),
133
- AI1WM_STORAGE_PATH
134
- );
135
- ?>
136
- </div>
137
- <?php endif; ?>
138
 
139
  <?php do_action( 'ai1wm_backups_left_end' ); ?>
140
 
141
- <input type="hidden" name="ai1wm_manual_restore" value="1" />
 
 
142
 
143
- </form>
144
  </div>
145
  </div>
146
  <div class="ai1wm-right">
39
 
40
  <?php include AI1WM_TEMPLATES_PATH . '/common/report-problem.php'; ?>
41
 
42
+ <?php if ( is_readable( AI1WM_BACKUPS_PATH ) && is_writable( AI1WM_BACKUPS_PATH ) ) : ?>
43
+ <div id="ai1wm-backups-list">
44
+ <?php include AI1WM_TEMPLATES_PATH . '/backups/backups-list.php'; ?>
45
+ </div>
46
 
47
+ <form action="" method="post" id="ai1wm-export-form" class="ai1wm-clear">
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
48
  <div class="ai1wm-backups-create">
49
+ <p class="ai1wm-backups-empty <?php echo empty( $backups ) ? null : 'ai1wm-hide'; ?>">
50
  <?php _e( 'There are no backups available at this time, why not create a new one?', AI1WM_PLUGIN_NAME ); ?>
51
  </p>
52
  <p>
53
+ <a href="#" id="ai1wm-create-backup" class="ai1wm-button-green">
54
  <i class="ai1wm-icon-export"></i>
55
  <?php _e( 'Create backup', AI1WM_PLUGIN_NAME ); ?>
56
  </a>
57
  </p>
58
  </div>
59
+ <input type="hidden" name="ai1wm_manual_export" value="1" />
60
+ </form>
 
 
 
 
 
 
 
 
 
 
 
 
61
 
62
  <?php do_action( 'ai1wm_backups_left_end' ); ?>
63
 
64
+ <?php else : ?>
65
+
66
+ <?php include AI1WM_TEMPLATES_PATH . '/backups/backups-permissions.php'; ?>
67
 
68
+ <?php endif; ?>
69
  </div>
70
  </div>
71
  <div class="ai1wm-right">
lib/view/export/export-permissions.php ADDED
@@ -0,0 +1,43 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Copyright (C) 2014-2019 ServMask Inc.
4
+ *
5
+ * This program is free software: you can redistribute it and/or modify
6
+ * it under the terms of the GNU General Public License as published by
7
+ * the Free Software Foundation, either version 3 of the License, or
8
+ * (at your option) any later version.
9
+ *
10
+ * This program is distributed in the hope that it will be useful,
11
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ * GNU General Public License for more details.
14
+ *
15
+ * You should have received a copy of the GNU General Public License
16
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
17
+ *
18
+ * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗
19
+ * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝
20
+ * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝
21
+ * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗
22
+ * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗
23
+ * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝
24
+ */
25
+
26
+ if ( ! defined( 'ABSPATH' ) ) {
27
+ die( 'Kangaroos cannot jump here' );
28
+ }
29
+ ?>
30
+
31
+ <div class="ai1wm-message ai1wm-red-message ai1wm-clear" style="margin-top: 4em;">
32
+ <?php
33
+ printf(
34
+ __(
35
+ '<h3>Site could not be exported</h3>' .
36
+ '<p>Please make sure that storage directory <strong>%s</strong> has read and write permissions.</p>' .
37
+ '<p><a href="https://help.servmask.com/knowledgebase/invalid-file-permissions/" target="_blank">Technical details</a></p>',
38
+ AI1WM_PLUGIN_NAME
39
+ ),
40
+ AI1WM_STORAGE_PATH
41
+ );
42
+ ?>
43
+ </div>
lib/view/export/index.php CHANGED
@@ -39,22 +39,29 @@ if ( ! defined( 'ABSPATH' ) ) {
39
 
40
  <?php include AI1WM_TEMPLATES_PATH . '/common/report-problem.php'; ?>
41
 
42
- <form action="" method="post" id="ai1wm-export-form" class="ai1wm-clear">
43
 
44
- <?php include AI1WM_TEMPLATES_PATH . '/export/find-replace.php'; ?>
45
 
46
- <?php do_action( 'ai1wm_export_left_options' ); ?>
47
 
48
- <?php include AI1WM_TEMPLATES_PATH . '/export/advanced-settings.php'; ?>
49
 
50
- <?php include AI1WM_TEMPLATES_PATH . '/export/export-buttons.php'; ?>
51
 
52
- <input type="hidden" name="ai1wm_manual_export" value="1" />
53
 
54
- </form>
55
 
56
- <?php do_action( 'ai1wm_export_left_end' ); ?>
57
 
 
 
 
 
 
 
 
58
  </div>
59
  </div>
60
  <div class="ai1wm-right">
39
 
40
  <?php include AI1WM_TEMPLATES_PATH . '/common/report-problem.php'; ?>
41
 
42
+ <?php if ( is_readable( AI1WM_STORAGE_PATH ) && is_writable( AI1WM_STORAGE_PATH ) ) : ?>
43
 
44
+ <form action="" method="post" id="ai1wm-export-form" class="ai1wm-clear">
45
 
46
+ <?php include AI1WM_TEMPLATES_PATH . '/export/find-replace.php'; ?>
47
 
48
+ <?php do_action( 'ai1wm_export_left_options' ); ?>
49
 
50
+ <?php include AI1WM_TEMPLATES_PATH . '/export/advanced-settings.php'; ?>
51
 
52
+ <?php include AI1WM_TEMPLATES_PATH . '/export/export-buttons.php'; ?>
53
 
54
+ <input type="hidden" name="ai1wm_manual_export" value="1" />
55
 
56
+ </form>
57
 
58
+ <?php do_action( 'ai1wm_export_left_end' ); ?>
59
+
60
+ <?php else : ?>
61
+
62
+ <?php include AI1WM_TEMPLATES_PATH . '/export/export-permissions.php'; ?>
63
+
64
+ <?php endif; ?>
65
  </div>
66
  </div>
67
  <div class="ai1wm-right">
lib/view/import/import-buttons.php CHANGED
@@ -28,52 +28,36 @@ if ( ! defined( 'ABSPATH' ) ) {
28
  }
29
  ?>
30
 
31
- <?php if ( is_readable( AI1WM_STORAGE_PATH ) && is_writable( AI1WM_STORAGE_PATH ) ) : ?>
32
- <div class="ai1wm-import-messages"></div>
33
 
34
- <div class="ai1wm-import-form">
35
- <div class="hide-if-no-js">
36
- <div class="ai1wm-drag-drop-area" id="ai1wm-drag-drop-area">
37
- <div id="ai1wm-import-init">
38
- <p>
39
- <i class="ai1wm-icon-cloud-upload"></i><br />
40
- <?php _e( 'Drag & Drop a backup to import it', AI1WM_PLUGIN_NAME ); ?>
41
- </p>
42
- <div class="ai1wm-button-group ai1wm-button-import ai1wm-expandable">
43
- <div class="ai1wm-button-main">
44
- <span role="list" aria-label="<?php _e( 'Import From', AI1WM_PLUGIN_NAME ); ?>"><?php _e( 'Import From', AI1WM_PLUGIN_NAME ); ?></span>
45
- <span class="ai1mw-lines">
46
- <span class="ai1wm-line ai1wm-line-first"></span>
47
- <span class="ai1wm-line ai1wm-line-second"></span>
48
- <span class="ai1wm-line ai1wm-line-third"></span>
49
- </span>
50
- </div>
51
- <ul class="ai1wm-dropdown-menu ai1wm-import-providers">
52
- <?php foreach ( apply_filters( 'ai1wm_import_buttons', array() ) as $button ) : ?>
53
- <li>
54
- <?php echo $button; ?>
55
- </li>
56
- <?php endforeach; ?>
57
- </ul>
58
  </div>
 
 
 
 
 
 
 
59
  </div>
60
  </div>
61
  </div>
62
  </div>
 
63
 
64
- <p style="margin: 0;"><?php echo apply_filters( 'ai1wm_pro', '' ); ?></p>
65
-
66
- <?php else : ?>
67
- <div class="ai1wm-message ai1wm-red-message">
68
- <?php
69
- printf(
70
- __(
71
- '<h3>Site could not be imported!</h3>' .
72
- '<p>Please make sure that storage directory <strong>%s</strong> has read and write permissions.</p>',
73
- AI1WM_PLUGIN_NAME
74
- ),
75
- AI1WM_STORAGE_PATH
76
- );
77
- ?>
78
- </div>
79
- <?php endif; ?>
28
  }
29
  ?>
30
 
31
+ <div class="ai1wm-import-messages"></div>
 
32
 
33
+ <div class="ai1wm-import-form">
34
+ <div class="hide-if-no-js">
35
+ <div class="ai1wm-drag-drop-area" id="ai1wm-drag-drop-area">
36
+ <div id="ai1wm-import-init">
37
+ <p>
38
+ <i class="ai1wm-icon-cloud-upload"></i><br />
39
+ <?php _e( 'Drag & Drop a backup to import it', AI1WM_PLUGIN_NAME ); ?>
40
+ </p>
41
+ <div class="ai1wm-button-group ai1wm-button-import ai1wm-expandable">
42
+ <div class="ai1wm-button-main">
43
+ <span role="list" aria-label="<?php _e( 'Import From', AI1WM_PLUGIN_NAME ); ?>"><?php _e( 'Import From', AI1WM_PLUGIN_NAME ); ?></span>
44
+ <span class="ai1mw-lines">
45
+ <span class="ai1wm-line ai1wm-line-first"></span>
46
+ <span class="ai1wm-line ai1wm-line-second"></span>
47
+ <span class="ai1wm-line ai1wm-line-third"></span>
48
+ </span>
 
 
 
 
 
 
 
 
49
  </div>
50
+ <ul class="ai1wm-dropdown-menu ai1wm-import-providers">
51
+ <?php foreach ( apply_filters( 'ai1wm_import_buttons', array() ) as $button ) : ?>
52
+ <li>
53
+ <?php echo $button; ?>
54
+ </li>
55
+ <?php endforeach; ?>
56
+ </ul>
57
  </div>
58
  </div>
59
  </div>
60
  </div>
61
+ </div>
62
 
63
+ <p style="margin: 0;"><?php echo apply_filters( 'ai1wm_pro', '' ); ?></p>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
lib/view/import/import-permissions.php ADDED
@@ -0,0 +1,43 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Copyright (C) 2014-2019 ServMask Inc.
4
+ *
5
+ * This program is free software: you can redistribute it and/or modify
6
+ * it under the terms of the GNU General Public License as published by
7
+ * the Free Software Foundation, either version 3 of the License, or
8
+ * (at your option) any later version.
9
+ *
10
+ * This program is distributed in the hope that it will be useful,
11
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ * GNU General Public License for more details.
14
+ *
15
+ * You should have received a copy of the GNU General Public License
16
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
17
+ *
18
+ * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗
19
+ * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝
20
+ * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝
21
+ * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗
22
+ * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗
23
+ * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝
24
+ */
25
+
26
+ if ( ! defined( 'ABSPATH' ) ) {
27
+ die( 'Kangaroos cannot jump here' );
28
+ }
29
+ ?>
30
+
31
+ <div class="ai1wm-message ai1wm-red-message ai1wm-clear" style="margin-top: 4em;">
32
+ <?php
33
+ printf(
34
+ __(
35
+ '<h3>Site could not be imported</h3>' .
36
+ '<p>Please make sure that storage directory <strong>%s</strong> has read and write permissions.</p>' .
37
+ '<p><a href="https://help.servmask.com/knowledgebase/invalid-file-permissions/" target="_blank">Technical details</a></p>',
38
+ AI1WM_PLUGIN_NAME
39
+ ),
40
+ AI1WM_STORAGE_PATH
41
+ );
42
+ ?>
43
+ </div>
lib/view/import/index.php CHANGED
@@ -39,23 +39,31 @@ if ( ! defined( 'ABSPATH' ) ) {
39
 
40
  <?php include AI1WM_TEMPLATES_PATH . '/common/report-problem.php'; ?>
41
 
42
- <form action="" method="post" id="ai1wm-import-form" class="ai1wm-clear" enctype="multipart/form-data">
43
 
44
- <?php do_action( 'ai1wm_import_left_options' ); ?>
45
 
46
- <?php include AI1WM_TEMPLATES_PATH . '/import/import-buttons.php'; ?>
47
 
48
- <input type="hidden" name="ai1wm_manual_import" value="1" />
49
 
50
- </form>
51
 
52
- <?php do_action( 'ai1wm_import_left_end' ); ?>
53
 
 
 
 
 
 
 
 
54
  </div>
55
  </div>
56
  <div class="ai1wm-right">
57
  <div class="ai1wm-sidebar">
58
  <div class="ai1wm-segment">
 
59
  <?php if ( ! AI1WM_DEBUG ) : ?>
60
  <?php include AI1WM_TEMPLATES_PATH . '/common/share-buttons.php'; ?>
61
  <?php endif; ?>
@@ -63,6 +71,7 @@ if ( ! defined( 'ABSPATH' ) ) {
63
  <h2><?php _e( 'Leave Feedback', AI1WM_PLUGIN_NAME ); ?></h2>
64
 
65
  <?php include AI1WM_TEMPLATES_PATH . '/common/leave-feedback.php'; ?>
 
66
  </div>
67
  </div>
68
  </div>
39
 
40
  <?php include AI1WM_TEMPLATES_PATH . '/common/report-problem.php'; ?>
41
 
42
+ <?php if ( is_readable( AI1WM_STORAGE_PATH ) && is_writable( AI1WM_STORAGE_PATH ) ) : ?>
43
 
44
+ <form action="" method="post" id="ai1wm-import-form" class="ai1wm-clear" enctype="multipart/form-data">
45
 
46
+ <?php do_action( 'ai1wm_import_left_options' ); ?>
47
 
48
+ <?php include AI1WM_TEMPLATES_PATH . '/import/import-buttons.php'; ?>
49
 
50
+ <input type="hidden" name="ai1wm_manual_import" value="1" />
51
 
52
+ </form>
53
 
54
+ <?php do_action( 'ai1wm_import_left_end' ); ?>
55
+
56
+ <?php else : ?>
57
+
58
+ <?php include AI1WM_TEMPLATES_PATH . '/import/import-permissions.php'; ?>
59
+
60
+ <?php endif; ?>
61
  </div>
62
  </div>
63
  <div class="ai1wm-right">
64
  <div class="ai1wm-sidebar">
65
  <div class="ai1wm-segment">
66
+
67
  <?php if ( ! AI1WM_DEBUG ) : ?>
68
  <?php include AI1WM_TEMPLATES_PATH . '/common/share-buttons.php'; ?>
69
  <?php endif; ?>
71
  <h2><?php _e( 'Leave Feedback', AI1WM_PLUGIN_NAME ); ?></h2>
72
 
73
  <?php include AI1WM_TEMPLATES_PATH . '/common/leave-feedback.php'; ?>
74
+
75
  </div>
76
  </div>
77
  </div>
lib/view/main/missing-role-capability-notice.php ADDED
@@ -0,0 +1,41 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Copyright (C) 2014-2019 ServMask Inc.
4
+ *
5
+ * This program is free software: you can redistribute it and/or modify
6
+ * it under the terms of the GNU General Public License as published by
7
+ * the Free Software Foundation, either version 3 of the License, or
8
+ * (at your option) any later version.
9
+ *
10
+ * This program is distributed in the hope that it will be useful,
11
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ * GNU General Public License for more details.
14
+ *
15
+ * You should have received a copy of the GNU General Public License
16
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
17
+ *
18
+ * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗
19
+ * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝
20
+ * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝
21
+ * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗
22
+ * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗
23
+ * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝
24
+ */
25
+
26
+ if ( ! defined( 'ABSPATH' ) ) {
27
+ die( 'Kangaroos cannot jump here' );
28
+ }
29
+ ?>
30
+
31
+ <div class="error">
32
+ <p>
33
+ <?php
34
+ _e(
35
+ 'All-in-One WP Migration: Your current profile role does not have Export/Import capabilities enabled. ' .
36
+ '<a href="https://help.servmask.com/knowledgebase/how-to-add-import-and-export-capabilities-to-wordpress-users/" target="_blank">Technical details</a>',
37
+ AI1WM_PLUGIN_NAME
38
+ );
39
+ ?>
40
+ </p>
41
+ </div>
readme.txt CHANGED
@@ -4,7 +4,7 @@ Tags: move, transfer, copy, migrate, backup, clone, restore, db migration, wordp
4
  Requires at least: 3.3
5
  Tested up to: 5.2
6
  Requires PHP: 5.2.17
7
- Stable tag: 6.97
8
  License: GPLv2 or later
9
 
10
  Move, transfer, copy, migrate, and backup a site with 1-click. Quick, easy, and reliable.
@@ -108,6 +108,20 @@ Alternatively you can download the plugin using the download button on this page
108
  All-in-One WP Migration **asks for your consent** to collect **requester's email address** when filling plugin's contact form. [GDPR Compliant Privacy Policy](https://www.iubenda.com/privacy-policy/946881)
109
 
110
  == Changelog ==
 
 
 
 
 
 
 
 
 
 
 
 
 
 
111
  = 6.97 =
112
  **Added**
113
 
@@ -213,439 +227,3 @@ All-in-One WP Migration **asks for your consent** to collect **requester's email
213
  **Fixed**
214
 
215
  * Support for WordPress 3.3
216
-
217
- = 6.82 =
218
- **Added**
219
-
220
- * Support for PHP 7.3
221
-
222
- **Fixed**
223
-
224
- * Feedback form on settings page
225
-
226
- = 6.81 =
227
- **Added**
228
-
229
- * Support for S3 Compatible Storage Providers
230
-
231
- **Fixed**
232
-
233
- * Design issue with localized download button
234
-
235
- = 6.80 =
236
- **Added**
237
-
238
- * Additional escape characters from folder names
239
-
240
- **Fixed**
241
-
242
- * Corner case table prefix on export
243
-
244
- **Changed**
245
-
246
- * Tested up to WordPress 5.0
247
-
248
- = 6.79 =
249
- **Added**
250
-
251
- * File import has been re-added with limits imposed by server using wp_max_upload_size(). This article describes how to adjust the limits [How-to: Increase maximum upload file size](https://help.servmask.com/2018/10/27/how-to-increase-maximum-upload-file-size-in-wordpress/)
252
- * Clean storage directory of files and folders created more than 24 hours ago
253
- * Support for force-https-littlebizzy plugin
254
- * Support for wp-simple-firewall
255
-
256
- **Fixed**
257
-
258
- * The restore a backup message explains to users how to restore their backups without having to use an premium extension
259
-
260
- = 6.78 =
261
- **Added**
262
-
263
- * Support for WebDAV
264
- * Support for Muffin Builder 2.0
265
- * Display processed database records on large tables
266
-
267
- **Removed**
268
-
269
- * File import has been moved to its own free extension
270
- * WP CLI support is now in Unlimited Extension
271
- * Restore a backup is now in Unlimited Extension
272
-
273
- = 6.77 =
274
- **Added**
275
-
276
- * Support for pCloud
277
-
278
- **Fixed**
279
-
280
- * Respect user's profile language choice when localizing the plugin
281
-
282
- **Removed**
283
-
284
- * sanitize_option_siteurl and sanitize_option_home filters during import
285
-
286
- = 6.76 =
287
- **Added**
288
-
289
- * Support for Amazon Glacier
290
- * Support for BeTheme Responsive
291
-
292
- = 6.75 =
293
- **Fixed**
294
-
295
- * WP-CLI export/import missing data
296
- * Serialization in PHP 7.2
297
- * Missing <staticContent> entry in the web.config file
298
-
299
- = 6.74 =
300
- **Added**
301
-
302
- * Support for LiteSpeed web server
303
- * Fully localized the export, import, and restore processes
304
-
305
- **Fixed**
306
-
307
- * Table prefix replacement on import in limited corner cases
308
- * URL replacement in Bitnami
309
-
310
- = 6.73 =
311
- **Fixed**
312
-
313
- * Improvements to the export and import process
314
-
315
- = 6.72 =
316
- **Added**
317
-
318
- * Support for Microsoft Azure Storage
319
-
320
- **Fixed**
321
-
322
- * The plugin incorrectly reports Disk is full on some hostings
323
-
324
- = 6.71 =
325
- **Added**
326
-
327
- * Support for Google Cloud Storage
328
-
329
- **Fixed**
330
-
331
- * Improvements to the export and import process
332
-
333
- = 6.70 =
334
- **Added**
335
-
336
- * Support for Backblaze B2
337
-
338
- **Fixed**
339
-
340
- * Small improvements to the export process
341
-
342
- = 6.69 =
343
- **Added**
344
-
345
- * Support for RTL languages
346
- * Disable My Custom Widgets, WPS Hide Login and Endurance Page Cache plugins after restoring a backup
347
-
348
- **Changed**
349
-
350
- * Text on import steps
351
-
352
- = 6.68 =
353
- **Added**
354
-
355
- * Privacy policy section and link to GDPR Compliant Privacy Policy
356
-
357
- = 6.67 =
358
- **Changed**
359
-
360
- * Rename DigitalOcean to DigitalOcean Spaces Extension
361
-
362
- = 6.66 =
363
- **Added**
364
-
365
- * Notification class for sending emails on error (export/import)
366
- * Support for DigitalOcean Extension
367
-
368
- **Fixed**
369
-
370
- * Database regex pattern for parsing SQL queries
371
-
372
- = 6.65 =
373
- **Added**
374
-
375
- * New plugin icons on WP Admin Updates page
376
-
377
- **Fixed**
378
-
379
- * Table prefix replacement of subsite options table on export
380
-
381
- = 6.64 =
382
- **Added**
383
-
384
- * Deactivate Jetpack SSO module on import
385
- * Deactivate Invisible reCaptcha plugin on import
386
-
387
- = 6.63 =
388
- **Added**
389
-
390
- * Responsive design on export/import dropdown
391
- * Warning message when export site is using PHP 5.x and import site is using PHP 7.x
392
-
393
- **Fixed**
394
-
395
- * Wrong next backup date on Settings page
396
- * 🇯🇵 Japanese translation on Backups page
397
-
398
- **Changed**
399
-
400
- * Remove disabled cancel button on import
401
-
402
- = 6.62 =
403
- **Added**
404
-
405
- * Technical message if PHP is 32bit and backup is larger than 2GB on export
406
- * Technical message if db server is SQL Server on export/import
407
-
408
- **Fixed**
409
-
410
- * SQL regex pattern on import
411
-
412
- **Changed**
413
-
414
- * Confirmation message on import
415
-
416
- = 6.61 =
417
- **Added**
418
-
419
- * Disable wp-force-ssl plugin if current site is not SSL based on import
420
- * Support for Mega Extension
421
-
422
- = 6.60 =
423
- **Added**
424
-
425
- * Tested up to WordPress 4.9
426
-
427
- = 6.59 =
428
- **Added**
429
-
430
- * Disable wordpress-https plugin if current site is not SSL based on import
431
- * Support for Azure db on import
432
- * New button icons for cloud extensions
433
-
434
- = 6.58 =
435
- **Fixed**
436
-
437
- * Remove WP CLI commands on PHP 5.2 and below
438
- * Issue with files on export
439
-
440
- = 6.57 =
441
- **Added**
442
-
443
- * Disable really-simple-ssl plugin if current site is not SSL based on import
444
- * Support for WP-CLI
445
-
446
- = 6.56 =
447
- **Added**
448
-
449
- * Symlink directories on export
450
- * Support sub directories on Backups page
451
- * A cancel button on import confirm step
452
-
453
- **Fixed**
454
-
455
- * Support IE11
456
- * Wrong blogs.dir URL replacement
457
- * Wrong path network drive replacement (Windows)
458
- * Text placeholders of first find/replace inputs on export
459
-
460
- **Changed**
461
-
462
- * Added loading indicator to feedback and report a problem forms
463
- * Do not clear cache on export
464
- * Skip files that contain new line on export
465
-
466
- = 6.55 =
467
- **Added**
468
-
469
- * Percentage indicator on "Unpacking archive" step
470
- * Chunking mechanism when adding database.sql to wpress file on export
471
-
472
- **Changed**
473
-
474
- * Display 2GB+ value if file size cannot be obtained on Backups page
475
- * Move COMMIT condition after processing all table records
476
-
477
- **Fixed**
478
-
479
- * Directory separator of archiver on Windows
480
-
481
- = 6.54 =
482
- **Changed**
483
-
484
- * Use late row lookup to perform database export
485
-
486
- = 6.53 =
487
- **Added**
488
-
489
- * Warn the user when web server configuration files are not created
490
-
491
- **Changed**
492
-
493
- * Buffered queries instead of unbuffered queries
494
- * Relative URLs instead of absolute URLs when loading fonts and images
495
-
496
- = 6.52 =
497
- **Changed**
498
-
499
- * Remove temporary files on error
500
-
501
- **Fixed**
502
-
503
- * Incorrect subsite path replacement on import
504
-
505
- = 6.51 =
506
- **Added**
507
-
508
- * Validation on leave feedback, report issue and delete backup actions
509
- * More descriptive wpress file names on export
510
-
511
- **Changed**
512
-
513
- * Remove "Unable to authenticate with secret key" message
514
-
515
- **Fixed**
516
-
517
- * Wrong file size in wpress file on export
518
-
519
- = 6.50 =
520
- **Fixed**
521
-
522
- * Stuck on preparing to import
523
-
524
- = 6.49 =
525
- **Changed**
526
-
527
- * Plugin description in readme.txt
528
-
529
- = 6.48 =
530
- **Fixed**
531
-
532
- * Escape Find/Replace values on import
533
- * Unable to load CSS and JS when event hook contains capital letters
534
-
535
- = 6.47 =
536
- **Added**
537
-
538
- * Elementor plugin support
539
-
540
- **Fixed**
541
-
542
- * Site URL and Home URL replacement in JSON data
543
-
544
- = 6.46 =
545
- **Fixed**
546
-
547
- * Domain replacement on import
548
- * Invalid secret key check on import
549
-
550
- = 6.45 =
551
- **Changed**
552
-
553
- * Better mechanism when enumerating files on import
554
-
555
- **Fixed**
556
-
557
- * Validation mechanism on export/import
558
-
559
- = 6.44 =
560
- **Added**
561
-
562
- * PHP and DB version metadata in package.json
563
- * Find/Replace values in package.json
564
- * Internal Site URL and Internal Home URL in package.json
565
- * Confirmation mechanism when uploading chunk by chunk on import
566
- * Progress indicator on database export/import
567
- * Shutdown handler to catch fatal errors
568
-
569
- **Changed**
570
-
571
- * Replace TYPE with ENGINE keyword on database export
572
- * Detect Site URL and Home URL in Find/Replace values
573
- * Activate template and stylesheet on import
574
- * Import database chunk by chunk to avoid timeout limitation
575
-
576
- **Fixed**
577
-
578
- * An issue on export/import when using HipHop for PHP
579
-
580
- = 6.43 =
581
- **Changed**
582
-
583
- * Plugin tags and description
584
-
585
- = 6.42 =
586
- **Changed**
587
-
588
- * Improved performance when exporting database
589
-
590
- = 6.41 =
591
- **Added**
592
-
593
- * Support Visual Composer plugin
594
- * Support Jetpack Photon module
595
-
596
- **Changed**
597
-
598
- * Improved Maria DB support
599
- * Disable WordPress authentication checking during migration
600
- * Clean any temporary files after migration
601
-
602
- = 6.40 =
603
- **Added**
604
-
605
- * Separate action hook in advanced settings called "ai1wm_export_advanced_settings" to allow custom checkbox options on export
606
-
607
- **Changed**
608
-
609
- * Do not extract dropins files on import
610
- * Do not exclude active plugins in package.json and multisite.json on export
611
- * Do not show "Resolving URL address..." on export/import
612
-
613
- **Fixed**
614
-
615
- * An issue with large files on import
616
- * An issue with inactive plugins option in advanced settings on export
617
-
618
- = 6.39 =
619
- **Added**
620
-
621
- * Support for MariaDB
622
-
623
- **Changed**
624
-
625
- * Do not include package.json, multisite.json, blogs.json, database.sql and filemap.list files on export
626
- * Remove HTTP Basic authentication from Backups page
627
-
628
- **Fixed**
629
-
630
- * An issue with unpacking archive on import
631
- * An issue with inactivated plugins on import
632
-
633
- = 6.38 =
634
- **Added**
635
-
636
- * Support for HyperDB plugin
637
- * Support for RevSlider plugin
638
- * Check available disk space during export/import
639
- * Support very restricted hosting environments
640
- * WPRESS mime-type to web.config when the server is IIS
641
-
642
- **Changed**
643
-
644
- * Switch to AJAX from cURL on export/import
645
- * Respect WordPress constants FS_CHMOD_DIR and FS_CHMOD_FILE on import
646
- * Remove misleading available disk space information on "Backups" page
647
-
648
- **Fixed**
649
-
650
- * An issue related to generating archive and folder names
651
- * An issue related to CSS styles on export page
4
  Requires at least: 3.3
5
  Tested up to: 5.2
6
  Requires PHP: 5.2.17
7
+ Stable tag: 7.0
8
  License: GPLv2 or later
9
 
10
  Move, transfer, copy, migrate, and backup a site with 1-click. Quick, easy, and reliable.
108
  All-in-One WP Migration **asks for your consent** to collect **requester's email address** when filling plugin's contact form. [GDPR Compliant Privacy Policy](https://www.iubenda.com/privacy-policy/946881)
109
 
110
  == Changelog ==
111
+ = 7.0 =
112
+ **Added**
113
+
114
+ * DB_CHARSET and DB_COLLATE are stored in the backup
115
+ * Display a notice when logged in user is administrator without export/import capabilities
116
+
117
+ **Fixed**
118
+
119
+ * Escape backup labels. (Thanks to Connum for reporting)
120
+
121
+ **Changed**
122
+
123
+ * Create backup button on Backups page starts a full export.
124
+
125
  = 6.97 =
126
  **Added**
127
 
227
  **Fixed**
228
 
229
  * Support for WordPress 3.3