Version Description
Download this release
Release Info
Developer | willmot |
Plugin | The WP Remote WordPress Plugin |
Version | 2.4 |
Comparing to | |
See all releases |
Code changes from version 2.3.1 to 2.4
- backupwordpress/admin/actions.php +403 -0
- backupwordpress/admin/backups.php +74 -0
- backupwordpress/admin/constants.php +30 -0
- backupwordpress/admin/menu.php +86 -0
- backupwordpress/admin/page.php +19 -0
- backupwordpress/admin/schedule-form-excludes.php +123 -0
- backupwordpress/admin/schedule-form.php +60 -0
- backupwordpress/admin/schedule.php +100 -0
- backupwordpress/assets/fancyBox/CHANGELOG.md +55 -0
- backupwordpress/assets/fancyBox/README.md +199 -0
- backupwordpress/assets/fancyBox/demo/1_b.jpg +0 -0
- backupwordpress/assets/fancyBox/demo/1_s.jpg +0 -0
- backupwordpress/assets/fancyBox/demo/2_b.jpg +0 -0
- backupwordpress/assets/fancyBox/demo/2_s.jpg +0 -0
- backupwordpress/assets/fancyBox/demo/3_b.jpg +0 -0
- backupwordpress/assets/fancyBox/demo/3_s.jpg +0 -0
- backupwordpress/assets/fancyBox/demo/4_b.jpg +0 -0
- backupwordpress/assets/fancyBox/demo/4_s.jpg +0 -0
- backupwordpress/assets/fancyBox/demo/5_b.jpg +0 -0
- backupwordpress/assets/fancyBox/demo/5_s.jpg +0 -0
- backupwordpress/assets/fancyBox/demo/ajax.txt +15 -0
- backupwordpress/assets/fancyBox/demo/iframe.html +22 -0
- backupwordpress/assets/fancyBox/demo/index.html +302 -0
- backupwordpress/assets/fancyBox/lib/jquery-1.7.2.min.js +4 -0
- backupwordpress/assets/fancyBox/lib/jquery.mousewheel-3.0.6.pack.js +13 -0
- backupwordpress/assets/fancyBox/source/blank.gif +0 -0
- backupwordpress/assets/fancyBox/source/fancybox_loading.gif +0 -0
- backupwordpress/assets/fancyBox/source/fancybox_sprite.png +0 -0
- backupwordpress/assets/fancyBox/source/helpers/fancybox_buttons.png +0 -0
- backupwordpress/assets/fancyBox/source/helpers/jquery.fancybox-buttons.css +85 -0
- backupwordpress/assets/fancyBox/source/helpers/jquery.fancybox-buttons.js +115 -0
- backupwordpress/assets/fancyBox/source/helpers/jquery.fancybox-media.js +86 -0
- backupwordpress/assets/fancyBox/source/helpers/jquery.fancybox-thumbs.css +54 -0
- backupwordpress/assets/fancyBox/source/helpers/jquery.fancybox-thumbs.js +157 -0
- backupwordpress/assets/fancyBox/source/jquery.fancybox.css +226 -0
- backupwordpress/assets/fancyBox/source/jquery.fancybox.js +1449 -0
- backupwordpress/assets/fancyBox/source/jquery.fancybox.pack.js +35 -0
- backupwordpress/assets/hmbkp.css +81 -0
- backupwordpress/assets/hmbkp.js +351 -0
- backupwordpress/assets/icon_backupwordpress_16x16.png +0 -0
- backupwordpress/assets/icon_backupwordpress_16x16_hover.png +0 -0
- backupwordpress/assets/icon_backupwordpress_32x32.png +0 -0
- backupwordpress/assets/wpspin_light.gif +0 -0
- backupwordpress/backupwordpress.mo +0 -0
- backupwordpress/backupwordpress.po +564 -0
- backupwordpress/classes/email.php +164 -0
- backupwordpress/classes/schedule.php +773 -0
- backupwordpress/classes/schedules.php +70 -0
- backupwordpress/classes/services.php +233 -0
- backupwordpress/classes/wp-cli.php +95 -0
- backupwordpress/functions/core.php +363 -0
- backupwordpress/functions/interface.php +284 -0
- {hm-backup → backupwordpress/hm-backup}/hm-backup.php +98 -78
- backupwordpress/icon.png +0 -0
- backupwordpress/languages/hmbkp-de_DE.mo +0 -0
- backupwordpress/languages/hmbkp-de_DE.po +754 -0
- backupwordpress/languages/hmbkp-es_ES.mo +0 -0
- backupwordpress/languages/hmbkp-es_ES.po +540 -0
- backupwordpress/languages/hmbkp-eu.mo +0 -0
- backupwordpress/languages/hmbkp-eu.po +432 -0
- backupwordpress/languages/hmbkp-fr_FR.mo +0 -0
- backupwordpress/languages/hmbkp-fr_FR.po +542 -0
- backupwordpress/languages/hmbkp-lt.mo +0 -0
- backupwordpress/languages/hmbkp-lt.po +432 -0
- backupwordpress/languages/hmbkp-lt_LT.mo +0 -0
- backupwordpress/languages/hmbkp-lt_LT.po +546 -0
- backupwordpress/languages/hmbkp-nl.mo +0 -0
- backupwordpress/languages/hmbkp-nl.po +432 -0
- backupwordpress/languages/hmbkp-ro_RO.mo +0 -0
- backupwordpress/languages/hmbkp-ro_RO.po +544 -0
- backupwordpress/languages/hmbkp-ru_RU.mo +0 -0
- backupwordpress/languages/hmbkp-ru_RU.po +545 -0
- backupwordpress/languages/hmbkp-sr_SR.mo +0 -0
- backupwordpress/languages/hmbkp-sr_SR.po +524 -0
- backupwordpress/plugin.php +168 -0
- backupwordpress/readme.txt +391 -0
- plugin.php +48 -7
- readme.txt +7 -1
- wprp.admin.php +15 -2
- wprp.api.php +3 -1
- wprp.backups.php +218 -135
backupwordpress/admin/actions.php
ADDED
@@ -0,0 +1,403 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Delete the backup and then redirect
|
5 |
+
* back to the backups page
|
6 |
+
*/
|
7 |
+
function hmbkp_request_delete_backup() {
|
8 |
+
|
9 |
+
if ( empty( $_GET['hmbkp_delete_backup'] ) || ! check_admin_referer( 'hmbkp-delete_backup' ) )
|
10 |
+
return;
|
11 |
+
|
12 |
+
$schedule = new HMBKP_Scheduled_Backup( urldecode( $_GET['hmbkp_schedule_id'] ) );
|
13 |
+
$schedule->delete_backup( base64_decode( urldecode( $_GET['hmbkp_delete_backup'] ) ) );
|
14 |
+
|
15 |
+
wp_redirect( remove_query_arg( array( 'hmbkp_delete_backup', '_wpnonce' ) ), 303 );
|
16 |
+
|
17 |
+
exit;
|
18 |
+
|
19 |
+
}
|
20 |
+
add_action( 'load-tools_page_' . HMBKP_PLUGIN_SLUG, 'hmbkp_request_delete_backup' );
|
21 |
+
|
22 |
+
/**
|
23 |
+
* Delete a schedule and all it's backups and then redirect
|
24 |
+
* back to the backups page
|
25 |
+
*/
|
26 |
+
function hmbkp_request_delete_schedule() {
|
27 |
+
|
28 |
+
if ( empty( $_GET['action'] ) || $_GET['action'] !== 'hmbkp_delete_schedule' || ! check_admin_referer( 'hmbkp-delete_schedule' ) )
|
29 |
+
return;
|
30 |
+
|
31 |
+
$schedule = new HMBKP_Scheduled_Backup( urldecode( $_GET['hmbkp_schedule_id'] ) );
|
32 |
+
$schedule->cancel( true );
|
33 |
+
|
34 |
+
wp_redirect( remove_query_arg( array( 'hmbkp_schedule_id', 'action', '_wpnonce' ) ), 303 );
|
35 |
+
|
36 |
+
exit;
|
37 |
+
|
38 |
+
}
|
39 |
+
add_action( 'load-tools_page_' . HMBKP_PLUGIN_SLUG, 'hmbkp_request_delete_schedule' );
|
40 |
+
|
41 |
+
/**
|
42 |
+
* Perform a manual backup via ajax
|
43 |
+
*/
|
44 |
+
function hmbkp_ajax_request_do_backup() {
|
45 |
+
|
46 |
+
if ( empty( $_GET['hmbkp_schedule_id'] ) )
|
47 |
+
return;
|
48 |
+
|
49 |
+
ignore_user_abort( true );
|
50 |
+
|
51 |
+
hmbkp_cleanup();
|
52 |
+
|
53 |
+
$schedule = new HMBKP_Scheduled_Backup( urldecode( $_GET['hmbkp_schedule_id'] ) );
|
54 |
+
|
55 |
+
$schedule->run();
|
56 |
+
|
57 |
+
hmbkp_schedule_actions( $schedule );
|
58 |
+
|
59 |
+
exit;
|
60 |
+
|
61 |
+
}
|
62 |
+
add_action( 'wp_ajax_hmbkp_run_schedule', 'hmbkp_ajax_request_do_backup' );
|
63 |
+
|
64 |
+
/**
|
65 |
+
* Send the download file to the browser and
|
66 |
+
* then redirect back to the backups page
|
67 |
+
*/
|
68 |
+
function hmbkp_request_download_backup() {
|
69 |
+
|
70 |
+
if ( empty( $_GET['hmbkp_download_backup'] ) || ! check_admin_referer( 'hmbkp-download_backup' ) )
|
71 |
+
return;
|
72 |
+
|
73 |
+
wp_redirect( str_replace( realpath( HM_Backup::conform_dir( HM_Backup::get_home_path() ) ), home_url(), base64_decode( $_GET['hmbkp_download_backup'] ) ), 303 );
|
74 |
+
|
75 |
+
exit;
|
76 |
+
|
77 |
+
}
|
78 |
+
add_action( 'load-tools_page_' . HMBKP_PLUGIN_SLUG, 'hmbkp_request_download_backup' );
|
79 |
+
|
80 |
+
/**
|
81 |
+
* cancels a running backup then redirect
|
82 |
+
* back to the backups page
|
83 |
+
*/
|
84 |
+
function hmbkp_request_cancel_backup() {
|
85 |
+
|
86 |
+
if ( ! isset( $_GET['action'] ) || $_GET['action'] !== 'hmbkp_cancel' )
|
87 |
+
return;
|
88 |
+
|
89 |
+
$schedule = new HMBKP_Scheduled_Backup( urldecode( $_GET['hmbkp_schedule_id'] ) );
|
90 |
+
|
91 |
+
// Delete the running backup
|
92 |
+
if ( $schedule->get_running_backup_filename() && file_exists( trailingslashit( hmbkp_path() ) . $schedule->get_running_backup_filename() ) )
|
93 |
+
unlink( trailingslashit( hmbkp_path() ) . $schedule->get_running_backup_filename() );
|
94 |
+
|
95 |
+
hmbkp_cleanup();
|
96 |
+
|
97 |
+
wp_redirect( remove_query_arg( array( 'action' ) ), 303 );
|
98 |
+
|
99 |
+
exit;
|
100 |
+
|
101 |
+
}
|
102 |
+
add_action( 'load-tools_page_' . HMBKP_PLUGIN_SLUG, 'hmbkp_request_cancel_backup' );
|
103 |
+
|
104 |
+
/**
|
105 |
+
* Dismiss an error and then redirect
|
106 |
+
* back to the backups page
|
107 |
+
*/
|
108 |
+
function hmbkp_dismiss_error() {
|
109 |
+
|
110 |
+
if ( empty( $_GET['action'] ) || $_GET['action'] !== 'hmbkp_dismiss_error' )
|
111 |
+
return;
|
112 |
+
|
113 |
+
hmbkp_cleanup();
|
114 |
+
|
115 |
+
wp_redirect( remove_query_arg( 'action' ), 303 );
|
116 |
+
|
117 |
+
exit;
|
118 |
+
|
119 |
+
}
|
120 |
+
add_action( 'admin_init', 'hmbkp_dismiss_error' );
|
121 |
+
|
122 |
+
/**
|
123 |
+
* Display the running status via ajax
|
124 |
+
*/
|
125 |
+
function hmbkp_ajax_is_backup_in_progress() {
|
126 |
+
|
127 |
+
if ( empty( $_GET['hmbkp_schedule_id'] ) )
|
128 |
+
return;
|
129 |
+
|
130 |
+
$schedule = new HMBKP_Scheduled_Backup( urldecode( $_GET['hmbkp_schedule_id'] ) );
|
131 |
+
|
132 |
+
if ( ! $schedule->get_status() )
|
133 |
+
echo 0;
|
134 |
+
|
135 |
+
else
|
136 |
+
hmbkp_schedule_actions( $schedule );
|
137 |
+
|
138 |
+
exit;
|
139 |
+
|
140 |
+
}
|
141 |
+
add_action( 'wp_ajax_hmbkp_is_in_progress', 'hmbkp_ajax_is_backup_in_progress' );
|
142 |
+
|
143 |
+
/**
|
144 |
+
* Display the calculated size via ajax
|
145 |
+
*/
|
146 |
+
function hmbkp_ajax_calculate_backup_size() {
|
147 |
+
|
148 |
+
if ( empty( $_GET['hmbkp_schedule_id'] ) )
|
149 |
+
return;
|
150 |
+
|
151 |
+
$schedule = new HMBKP_Scheduled_Backup( urldecode( $_GET['hmbkp_schedule_id'] ) );
|
152 |
+
|
153 |
+
$recalculate_filesize = true;
|
154 |
+
|
155 |
+
include_once( HMBKP_PLUGIN_PATH . '/admin/schedule.php' );
|
156 |
+
|
157 |
+
exit;
|
158 |
+
|
159 |
+
}
|
160 |
+
add_action( 'wp_ajax_hmbkp_calculate', 'hmbkp_ajax_calculate_backup_size' );
|
161 |
+
|
162 |
+
/**
|
163 |
+
* Test the cron response and if it's not 200 show a warning message
|
164 |
+
*/
|
165 |
+
function hmbkp_ajax_cron_test() {
|
166 |
+
|
167 |
+
$response = wp_remote_get( site_url( 'wp-cron.php' ) );
|
168 |
+
|
169 |
+
if ( is_wp_error( $response ) )
|
170 |
+
echo '<div id="hmbkp-warning" class="updated fade"><p><strong>' . __( 'BackUpWordPress has detected a problem.', 'hmbkp' ) . '</strong> ' . sprintf( __( '%1$s is returning a %2$s response which could mean cron jobs aren\'t getting fired properly. BackUpWordPress relies on wp-cron to run scheduled back ups. See the %3$s for more details.', 'hmbkp' ), '<code>wp-cron.php</code>', '<code>' . $response->get_error_message() . '</code>', '<a href="http://wordpress.org/extend/plugins/backupwordpress/faq/">FAQ</a>' ) . '</p></div>';
|
171 |
+
|
172 |
+
else if ( $response['response']['code'] != 200 )
|
173 |
+
echo '<div id="hmbkp-warning" class="updated fade"><p><strong>' . __( 'BackUpWordPress has detected a problem.', 'hmbkp' ) . '</strong> ' . sprintf( __( '%1$s is returning a %2$s response which could mean cron jobs aren\'t getting fired properly. BackUpWordPress relies on wp-cron to run scheduled back ups. See the %3$s for more details.', 'hmbkp' ), '<code>wp-cron.php</code>', '<code>' . $response['response']['code'] . '</code>', '<a href="http://wordpress.org/extend/plugins/backupwordpress/faq/">FAQ</a>' ) . '</p></div>';
|
174 |
+
|
175 |
+
else
|
176 |
+
echo 1;
|
177 |
+
|
178 |
+
exit;
|
179 |
+
|
180 |
+
}
|
181 |
+
add_action( 'wp_ajax_hmbkp_cron_test', 'hmbkp_ajax_cron_test' );
|
182 |
+
|
183 |
+
/**
|
184 |
+
* Load the edit schedule form
|
185 |
+
*/
|
186 |
+
function hmbkp_edit_schedule_load() {
|
187 |
+
|
188 |
+
$schedule = new HMBKP_Scheduled_Backup( esc_attr( $_GET['hmbkp_schedule_id'] ) );
|
189 |
+
|
190 |
+
require( HMBKP_PLUGIN_PATH . '/admin/schedule-form.php' );
|
191 |
+
|
192 |
+
exit;
|
193 |
+
|
194 |
+
}
|
195 |
+
add_action( 'wp_ajax_hmbkp_edit_schedule_load', 'hmbkp_edit_schedule_load' );
|
196 |
+
|
197 |
+
/**
|
198 |
+
* Load the edit schedule excludes form
|
199 |
+
*/
|
200 |
+
function hmbkp_edit_schedule_excludes_load() {
|
201 |
+
|
202 |
+
$schedule = new HMBKP_Scheduled_Backup( esc_attr( $_GET['hmbkp_schedule_id'] ) );
|
203 |
+
|
204 |
+
require( HMBKP_PLUGIN_PATH . '/admin/schedule-form-excludes.php' );
|
205 |
+
|
206 |
+
exit;
|
207 |
+
|
208 |
+
}
|
209 |
+
add_action( 'wp_ajax_hmbkp_edit_schedule_excludes_load', 'hmbkp_edit_schedule_excludes_load' );
|
210 |
+
|
211 |
+
/**
|
212 |
+
* Load the add schedule form
|
213 |
+
*/
|
214 |
+
function hmbkp_add_schedule_load() {
|
215 |
+
|
216 |
+
$schedule = new HMBKP_Scheduled_Backup( date( 'U' ) );
|
217 |
+
$is_new_schedule = true;
|
218 |
+
|
219 |
+
require( HMBKP_PLUGIN_PATH . '/admin/schedule-form.php' );
|
220 |
+
|
221 |
+
exit;
|
222 |
+
|
223 |
+
}
|
224 |
+
add_action( 'wp_ajax_hmbkp_add_schedule_load', 'hmbkp_add_schedule_load' );
|
225 |
+
|
226 |
+
/**
|
227 |
+
* Catch the edit schedule form
|
228 |
+
*
|
229 |
+
* Validate and either return errors or update the schedule
|
230 |
+
*/
|
231 |
+
function hmnkp_edit_schedule_submit() {
|
232 |
+
|
233 |
+
if ( empty( $_GET['hmbkp_schedule_id'] ) )
|
234 |
+
return;
|
235 |
+
|
236 |
+
$schedule = new HMBKP_Scheduled_Backup( esc_attr( $_GET['hmbkp_schedule_id'] ) );
|
237 |
+
|
238 |
+
$errors = array();
|
239 |
+
|
240 |
+
if ( isset( $_GET['hmbkp_schedule_type'] ) ) {
|
241 |
+
|
242 |
+
if ( ! trim( $_GET['hmbkp_schedule_type'] ) )
|
243 |
+
$errors['hmbkp_schedule_type'] = __( 'Backup type cannot be empty', 'hmbkp' );
|
244 |
+
|
245 |
+
elseif ( ! in_array( $_GET['hmbkp_schedule_type'], array( 'complete', 'file', 'database' ) ) )
|
246 |
+
$errors['hmbkp_schedule_type'] = __( 'Invalid backup type', 'hmbkp' );
|
247 |
+
|
248 |
+
else
|
249 |
+
$schedule->set_type( $_GET['hmbkp_schedule_type'] );
|
250 |
+
|
251 |
+
}
|
252 |
+
|
253 |
+
if ( isset( $_GET['hmbkp_schedule_reoccurrence'] ) ) {
|
254 |
+
|
255 |
+
if ( empty( $_GET['hmbkp_schedule_reoccurrence'] ) )
|
256 |
+
$errors['hmbkp_schedule_reoccurrence'] = __( 'Schedule cannot be empty', 'hmbkp' );
|
257 |
+
|
258 |
+
elseif ( ! in_array( $_GET['hmbkp_schedule_reoccurrence'], array_keys( wp_get_schedules() ) ) && $_GET['hmbkp_schedule_reoccurrence'] !== 'manually' )
|
259 |
+
$errors['hmbkp_schedule_reoccurrence'] = __( 'Invalid schedule', 'hmbkp' );
|
260 |
+
|
261 |
+
else
|
262 |
+
$schedule->set_reoccurrence( $_GET['hmbkp_schedule_reoccurrence'] );
|
263 |
+
|
264 |
+
}
|
265 |
+
|
266 |
+
if ( isset( $_GET['hmbkp_schedule_max_backups'] ) ) {
|
267 |
+
|
268 |
+
if ( empty( $_GET['hmbkp_schedule_max_backups'] ) )
|
269 |
+
$errors['hmbkp_schedule_max_backups'] = __( 'Max backups can\'t be empty', 'hmbkp' );
|
270 |
+
|
271 |
+
elseif ( ! is_numeric( $_GET['hmbkp_schedule_max_backups'] ) )
|
272 |
+
$errors['hmbkp_schedule_max_backups'] = __( 'Max backups must be a number', 'hmbkp' );
|
273 |
+
|
274 |
+
elseif ( ! ( $_GET['hmbkp_schedule_max_backups'] >= 1 ) )
|
275 |
+
$errors['hmbkp_schedule_max_backups'] = __( 'Max backups must be greater than 0', 'hmbkp' );
|
276 |
+
|
277 |
+
else
|
278 |
+
$schedule->set_max_backups( (int) $_GET['hmbkp_schedule_max_backups'] );
|
279 |
+
|
280 |
+
$schedule->delete_old_backups();
|
281 |
+
|
282 |
+
}
|
283 |
+
|
284 |
+
foreach ( HMBKP_Services::get_services( $schedule ) as $service )
|
285 |
+
$errors = array_merge( $errors, $service->save() );
|
286 |
+
|
287 |
+
$schedule->save();
|
288 |
+
|
289 |
+
if ( $errors )
|
290 |
+
echo json_encode( $errors );
|
291 |
+
|
292 |
+
exit;
|
293 |
+
|
294 |
+
}
|
295 |
+
add_action( 'wp_ajax_hmnkp_edit_schedule_submit', 'hmnkp_edit_schedule_submit' );
|
296 |
+
|
297 |
+
|
298 |
+
/**
|
299 |
+
* Add an exclude rule
|
300 |
+
*
|
301 |
+
* @access public
|
302 |
+
* @return void
|
303 |
+
*/
|
304 |
+
function hmbkp_add_exclude_rule() {
|
305 |
+
|
306 |
+
$schedule = new HMBKP_Scheduled_Backup( esc_attr( $_POST['hmbkp_schedule_id'] ) );
|
307 |
+
|
308 |
+
$schedule->set_excludes( $_POST['hmbkp_exclude_rule'], true );
|
309 |
+
|
310 |
+
$schedule->save();
|
311 |
+
|
312 |
+
include( HMBKP_PLUGIN_PATH . '/admin/schedule-form-excludes.php' );
|
313 |
+
|
314 |
+
exit;
|
315 |
+
|
316 |
+
}
|
317 |
+
add_action( 'wp_ajax_hmbkp_add_exclude_rule', 'hmbkp_add_exclude_rule' );
|
318 |
+
|
319 |
+
|
320 |
+
/**
|
321 |
+
* Delete an exclude rule
|
322 |
+
*
|
323 |
+
* @access public
|
324 |
+
* @return void
|
325 |
+
*/
|
326 |
+
function hmbkp_delete_exclude_rule() {
|
327 |
+
|
328 |
+
$schedule = new HMBKP_Scheduled_Backup( esc_attr( $_POST['hmbkp_schedule_id'] ) );
|
329 |
+
|
330 |
+
$excludes = $schedule->get_excludes();
|
331 |
+
|
332 |
+
$schedule->set_excludes( array_diff( $excludes, (array) $_POST['hmbkp_exclude_rule'] ) );
|
333 |
+
|
334 |
+
$schedule->save();
|
335 |
+
|
336 |
+
include( HMBKP_PLUGIN_PATH . '/admin/schedule-form-excludes.php' );
|
337 |
+
|
338 |
+
exit;
|
339 |
+
|
340 |
+
}
|
341 |
+
add_action( 'wp_ajax_hmbkp_delete_exclude_rule', 'hmbkp_delete_exclude_rule' );
|
342 |
+
|
343 |
+
|
344 |
+
/**
|
345 |
+
* Ajax action for previewing an exclude rule.
|
346 |
+
*
|
347 |
+
* @access public
|
348 |
+
* @return void
|
349 |
+
*/
|
350 |
+
function hmbkp_preview_exclude_rule() {
|
351 |
+
|
352 |
+
if ( ! empty( $_POST['hmbkp_schedule_id'] ) )
|
353 |
+
$schedule = new HMBKP_Scheduled_Backup( $_POST['hmbkp_schedule_id'] );
|
354 |
+
|
355 |
+
if ( ! empty( $_POST['hmbkp_schedule_excludes'] ) )
|
356 |
+
$excludes = explode( ',', $_POST['hmbkp_schedule_excludes'] );
|
357 |
+
|
358 |
+
if ( ! empty( $_POST['hmbkp_file_method'] ) )
|
359 |
+
$file_method = $_POST['hmbkp_file_method'];
|
360 |
+
|
361 |
+
hmbkp_file_list( $schedule, $excludes, $file_method );
|
362 |
+
|
363 |
+
foreach( $schedule->get_excluded_files() as $key => $excluded_file )
|
364 |
+
if ( strpos( $excluded_file, $schedule->get_path() ) === false )
|
365 |
+
$excluded_files[] = $excluded_file;
|
366 |
+
|
367 |
+
if ( ! empty( $excluded_files) ) { ?>
|
368 |
+
|
369 |
+
<p><?php printf( _n( '%s matches 1 file.', '%1$s matches %2$d files.', count( $excluded_files ), 'hmbkp' ), '<code>' . implode( '</code>, <code>', $excludes ) . '</code>', count( $excluded_files ) ); ?></p>
|
370 |
+
|
371 |
+
<?php } else { ?>
|
372 |
+
|
373 |
+
<p><?php printf( __( '%s didn\'t match any files.', 'hmbkp' ), '<code>' . implode( '</code>, <code>', $excludes ) . '</code>' ); ?></p>
|
374 |
+
|
375 |
+
<?php } ?>
|
376 |
+
|
377 |
+
<p><button type="button" class="button-primary hmbkp_save_exclude_rule"><?php _e( 'Exclude', 'hmbkp' ); ?></button> <button type="button" class="button-secondary hmbkp_cancel_save_exclude_rule"><?php _e( 'Cancel', 'hmbkp' ); ?></button></p>
|
378 |
+
|
379 |
+
<?php exit;
|
380 |
+
|
381 |
+
}
|
382 |
+
add_action( 'wp_ajax_hmbkp_file_list', 'hmbkp_preview_exclude_rule', 10, 0 );
|
383 |
+
|
384 |
+
/**
|
385 |
+
* Handles changes in the defined Constants
|
386 |
+
* that users can define to control advanced
|
387 |
+
* settings
|
388 |
+
*/
|
389 |
+
function hmbkp_constant_changes() {
|
390 |
+
|
391 |
+
// If a custom backup path has been set or changed
|
392 |
+
if ( defined( 'HMBKP_PATH' ) && HMBKP_PATH && HM_Backup::conform_dir( HMBKP_PATH ) !== ( $from = HM_Backup::conform_dir( get_option( 'hmbkp_path' ) ) ) )
|
393 |
+
hmbkp_path_move( $from, HMBKP_PATH );
|
394 |
+
|
395 |
+
// If a custom backup path has been removed
|
396 |
+
if ( ( ( defined( 'HMBKP_PATH' ) && ! HMBKP_PATH ) || ! defined( 'HMBKP_PATH' ) && HM_Backup::conform_dir( hmbkp_path_default() ) != ( $from = HM_Backup::conform_dir( get_option( 'hmbkp_path' ) ) ) ) )
|
397 |
+
hmbkp_path_move( $from, hmbkp_path_default() );
|
398 |
+
|
399 |
+
// If the custom path has changed and the new directory isn't writable
|
400 |
+
if ( defined( 'HMBKP_PATH' ) && HMBKP_PATH && HM_Backup::conform_dir( HMBKP_PATH ) != ( $from = HM_Backup::conform_dir( get_option( 'hmbkp_path' ) ) ) && $from != hmbkp_path_default() && !is_writable( HMBKP_PATH ) && is_dir( $from ) )
|
401 |
+
hmbkp_path_move( $from, hmbkp_path_default() );
|
402 |
+
|
403 |
+
}
|
backupwordpress/admin/backups.php
ADDED
@@ -0,0 +1,74 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php $schedules = new HMBKP_Schedules; ?>
|
2 |
+
|
3 |
+
<div>
|
4 |
+
|
5 |
+
<ul class="subsubsub">
|
6 |
+
|
7 |
+
<?php foreach ( $schedules->get_schedules() as $schedule ) : ?>
|
8 |
+
|
9 |
+
<li><a<?php if ( ! empty ( $_GET['hmbkp_schedule_id'] ) && $schedule->get_id() == $_GET['hmbkp_schedule_id'] ) { ?> class="current"<?php } ?> href="<?php echo esc_url( add_query_arg( 'hmbkp_schedule_id', $schedule->get_id(), HMBKP_ADMIN_URL ) ); ?> "><?php echo esc_attr( $schedule->get_name() ); ?> <span class="count">(<?php echo count( $schedule->get_backups() ); ?>)</span></a></li>
|
10 |
+
|
11 |
+
<?php endforeach; ?>
|
12 |
+
|
13 |
+
<li><a class="fancybox" href="<?php echo esc_url( add_query_arg( array( 'action' => 'hmbkp_add_schedule_load' ), admin_url( 'admin-ajax.php' ) ) ); ?>"> + <?php _e( 'add schedule', 'hmbkp' ); ?></a></li>
|
14 |
+
|
15 |
+
</ul>
|
16 |
+
|
17 |
+
<?php if ( ! empty( $_GET['hmbkp_schedule_id'] ) )
|
18 |
+
$schedule = new HMBKP_Scheduled_Backup( $_GET['hmbkp_schedule_id'] );
|
19 |
+
|
20 |
+
else
|
21 |
+
$schedule = reset( $schedules->get_schedules() );
|
22 |
+
|
23 |
+
if ( ! $schedule )
|
24 |
+
return; ?>
|
25 |
+
|
26 |
+
<div data-hmbkp-schedule-id="<?php echo esc_attr( $schedule->get_id() ); ?>" class="hmbkp_schedule">
|
27 |
+
|
28 |
+
<?php require( HMBKP_PLUGIN_PATH . '/admin/schedule.php' ); ?>
|
29 |
+
|
30 |
+
<table class="widefat">
|
31 |
+
|
32 |
+
<thead>
|
33 |
+
|
34 |
+
<tr>
|
35 |
+
|
36 |
+
<th scope="col"><?php printf( _n( '1 backup completed', '%d backups completed', count( $schedule->get_backups() ), 'hmbkp' ), count( $schedule->get_backups() ) ); ?></th>
|
37 |
+
<th scope="col"><?php _e( 'Size', 'hmbkp' ); ?></th>
|
38 |
+
<th scope="col"><?php _e( 'Type', 'hmbkp' ); ?></th>
|
39 |
+
<th scope="col"><?php _e( 'Actions', 'hmbkp' ); ?></th>
|
40 |
+
|
41 |
+
</tr>
|
42 |
+
|
43 |
+
</thead>
|
44 |
+
|
45 |
+
<tbody>
|
46 |
+
|
47 |
+
<?php if ( $schedule->get_backups() ) :
|
48 |
+
|
49 |
+
foreach ( $schedule->get_backups() as $file ) :
|
50 |
+
|
51 |
+
if ( ! file_exists( $file ) )
|
52 |
+
continue;
|
53 |
+
|
54 |
+
hmbkp_get_backup_row( $file, $schedule );
|
55 |
+
|
56 |
+
endforeach;
|
57 |
+
|
58 |
+
else : ?>
|
59 |
+
|
60 |
+
<tr>
|
61 |
+
|
62 |
+
<td class="hmbkp-no-backups" colspan="3"><?php _e( 'This is where your backups will appear once you have one.', 'hmbkp' ); ?></td>
|
63 |
+
|
64 |
+
</tr>
|
65 |
+
|
66 |
+
<?php endif; ?>
|
67 |
+
|
68 |
+
</tbody>
|
69 |
+
|
70 |
+
</table>
|
71 |
+
|
72 |
+
</div>
|
73 |
+
|
74 |
+
</div>
|
backupwordpress/admin/constants.php
ADDED
@@ -0,0 +1,30 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<div id="hmbkp-constants">
|
2 |
+
|
3 |
+
<p><?php printf( __( 'You can %1$s any of the following %2$s in your %3$s to control advanced settings. %4$s. Defined %5$s will be highlighted.', 'hmbkp' ), '<code>define</code>', '<code>' . __( 'Constants', 'hmbkp' ) . '</code>', '<code>wp-config.php</code>', '<a href="http://codex.wordpress.org/Editing_wp-config.php">' . __( 'The Codex can help', 'hmbkp' ) . '</a>', '<code>' . __( 'Constants', 'hmbkp' ) . '</code>' ); ?></p>
|
4 |
+
|
5 |
+
<dl>
|
6 |
+
|
7 |
+
<dt<?php if ( defined( 'HMBKP_PATH' ) ) { ?> class="hmbkp_active"<?php } ?>><code>HMBKP_PATH</code></dt>
|
8 |
+
<dd><p><?php printf( __( 'The path to folder you would like to store your backup files in, defaults to %s.', 'hmbkp' ), '<code>' . hmbkp_path_default() . '</code>' ); ?></p><p class="example"><?php _e( 'e.g.', 'hmbkp' ); ?> <code>define( 'HMBKP_PATH', '/home/willmot/backups' );</code></p></dd>
|
9 |
+
|
10 |
+
<dt<?php if ( defined( 'HMBKP_MYSQLDUMP_PATH' ) ) { ?> class="hmbkp_active"<?php } ?>><code>HMBKP_MYSQLDUMP_PATH</code></dt>
|
11 |
+
<dd><p><?php printf( __( 'The path to your %1$s executable. Will be used for the %2$s part of the back up if available.', 'hmbkp' ), '<code>mysqldump</code>', '<code>' . __( 'database', 'hmbkp' ) . '</code>' ); ?></p><p class="example"><?php _e( 'e.g.', 'hmbkp' ); ?> <code>define( 'HMBKP_MYSQLDUMP_PATH', '/opt/local/bin/mysqldump' );</code></p></dd>
|
12 |
+
|
13 |
+
<dt<?php if ( defined( 'HMBKP_ZIP_PATH' ) ) { ?> class="hmbkp_active"<?php } ?>><code>HMBKP_ZIP_PATH</code></dt>
|
14 |
+
<dd><p><?php printf( __( 'The path to your %1$s executable. Will be used to zip up your %2$s and %3$s if available.', 'hmbkp' ), '<code>zip</code>', '<code>' . __( 'files', 'hmbkp' ) . '</code>', '<code>' . __( 'database', 'hmbkp' ) . '</code>' ); ?><p class="example"><?php _e( 'e.g.', 'hmbkp' ); ?> <code>define( 'HMBKP_ZIP_PATH', '/opt/local/bin/zip' );</code></p></dd>
|
15 |
+
|
16 |
+
<dt<?php if ( defined( 'HMBKP_EMAIL' ) ) { ?> class="hmbkp_active"<?php } ?>><code>HMBKP_EMAIL</code></dt>
|
17 |
+
<dd><p><?php printf( __( 'Attempt to email a copy of your backups. Value should be email address to send backups to. Defaults to %s.', 'hmbkp' ), '<code>(bool) false</code>' ); ?><p class="example"><?php _e( 'e.g.', 'hmbkp' ); ?> <code>define( 'HMBKP_EMAIL', 'email@example.com' );</code></p></dd>
|
18 |
+
|
19 |
+
<dt<?php if ( defined( 'HMBKP_EXCLUDE' ) ) { ?> class="hmbkp_active"<?php } ?>><code>HMBKP_EXCLUDE</code></dt>
|
20 |
+
<dd><p><?php _e( 'Comma separated list of files or directories to exclude, the backups directory is automatically excluded.', 'hmbkp' ); ?><p class="example"><?php _e( 'e.g.', 'hmbkp' ); ?> <code>define( 'HMBKP_EXCLUDE', '/wp-content/uploads/, /stats/, .svn/, *.txt' );</code></p></dd>
|
21 |
+
|
22 |
+
<dt<?php if ( defined( 'HMBKP_CAPABILITY' ) ) { ?> class="hmbkp_active"<?php } ?>><code>HMBKP_CAPABILITY</code></dt>
|
23 |
+
<dd><p><?php printf( __( 'The capability to use when calling %1$s. Defaults to %2$s.', 'hmbkp' ), '<code>add_menu_page</code>', '<code>manage_options</code>' ); ?><p class="example"><?php _e( 'e.g.', 'hmbkp' ); ?> <code>define( 'HMBKP_CAPABILITY', 'edit_posts' );</code></p></dd>
|
24 |
+
|
25 |
+
<dt<?php if ( defined( 'HMBKP_ROOT' ) ) { ?> class="hmbkp_active"<?php } ?>><code>HMBKP_ROOT</code></dt>
|
26 |
+
<dd><p><?php printf( __( 'The root directory that is backed up. Defaults to %s.', 'hmbkp' ), '<code>' . HM_Backup::get_home_path() . '</code>' ); ?><p class="example"><?php _e( 'e.g.', 'hmbkp' ); ?> <code>define( 'HMBKP_ROOT', ABSPATH . 'wp/' );</code></p></dd>
|
27 |
+
|
28 |
+
</dl>
|
29 |
+
|
30 |
+
</div>
|
backupwordpress/admin/menu.php
ADDED
@@ -0,0 +1,86 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Add the backups menu item
|
5 |
+
* to the tools menu
|
6 |
+
*
|
7 |
+
* @return null
|
8 |
+
*/
|
9 |
+
function hmbkp_admin_menu() {
|
10 |
+
add_management_page( __( 'Manage Backups','hmbkp' ), __( 'Backups','hmbkp' ), ( defined( 'HMBKP_CAPABILITY' ) && HMBKP_CAPABILITY ) ? HMBKP_CAPABILITY : 'manage_options', HMBKP_PLUGIN_SLUG, 'hmbkp_manage_backups' );
|
11 |
+
}
|
12 |
+
add_action( 'admin_menu', 'hmbkp_admin_menu' );
|
13 |
+
|
14 |
+
/**
|
15 |
+
* Load the backups admin page
|
16 |
+
* when the menu option is clicked
|
17 |
+
*
|
18 |
+
* @return null
|
19 |
+
*/
|
20 |
+
function hmbkp_manage_backups() {
|
21 |
+
require_once( HMBKP_PLUGIN_PATH . '/admin/page.php' );
|
22 |
+
}
|
23 |
+
|
24 |
+
/**
|
25 |
+
* Add a link to the backups page to the plugin action links.
|
26 |
+
*
|
27 |
+
* @param array $links
|
28 |
+
* @param string $file
|
29 |
+
* @return array $links
|
30 |
+
*/
|
31 |
+
function hmbkp_plugin_action_link( $links, $file ) {
|
32 |
+
|
33 |
+
if ( strpos( $file, HMBKP_PLUGIN_SLUG ) !== false )
|
34 |
+
array_push( $links, '<a href="tools.php?page=' . esc_attr( HMBKP_PLUGIN_SLUG ) . '">' . __( 'Backups', 'hmbkp' ) . '</a>' );
|
35 |
+
|
36 |
+
return $links;
|
37 |
+
|
38 |
+
}
|
39 |
+
add_filter( 'plugin_action_links', 'hmbkp_plugin_action_link', 10, 2 );
|
40 |
+
|
41 |
+
/**
|
42 |
+
* Add Contextual Help to Backups tools page.
|
43 |
+
*
|
44 |
+
* Help is pulled from the readme FAQ.
|
45 |
+
*
|
46 |
+
* @return null
|
47 |
+
*/
|
48 |
+
function hmbkp_contextual_help() {
|
49 |
+
|
50 |
+
// Pre WordPress 3.3 compat
|
51 |
+
if ( ! method_exists( get_current_screen(), 'add_help_tab' ) )
|
52 |
+
return;
|
53 |
+
|
54 |
+
require_once( ABSPATH . 'wp-admin/includes/plugin-install.php' );
|
55 |
+
|
56 |
+
if ( ! $plugin = get_transient( 'hmbkp_plugin_data' ) ) {
|
57 |
+
|
58 |
+
$plugin = plugins_api( 'plugin_information', array( 'slug' => HMBKP_PLUGIN_SLUG ) );
|
59 |
+
|
60 |
+
// Cache for one day
|
61 |
+
set_transient( 'hmbkp_plugin_data', $plugin, 86400 );
|
62 |
+
|
63 |
+
}
|
64 |
+
|
65 |
+
$warning = '';
|
66 |
+
|
67 |
+
// Check if help is for the right version.
|
68 |
+
if ( ! empty( $plugin->version ) && version_compare( HMBKP_VERSION, $plugin->version, '!=' ) )
|
69 |
+
$warning = sprintf( '<div id="message" class="updated inline"><p><strong>' . __( 'You are not using the latest stable version of BackUpWordPress', 'hmbkp' ) . '</strong> — ' . __( 'The information below is for version %1$s. View the %2$s file for help specific to version %3$s.', 'hmbkp' ) . '</p></div>', '<code>' . esc_attr( $plugin->version ) . '</code>', '<code>readme.txt</code>', '<code>' . esc_attr( HMBKP_VERSION ) . '</code>' );
|
70 |
+
|
71 |
+
ob_start();
|
72 |
+
require_once( HMBKP_PLUGIN_PATH . '/admin/constants.php' );
|
73 |
+
$constants = ob_get_clean();
|
74 |
+
|
75 |
+
get_current_screen()->add_help_tab( array( 'title' => __( 'FAQ', 'hmbkp' ), 'id' => 'hmbkp_faq', 'content' => $warning . $plugin->sections['faq'] ) );
|
76 |
+
get_current_screen()->add_help_tab( array( 'title' => __( 'Constants', 'hmbkp' ), 'id' => 'hmbkp_constants', 'content' => $warning . $constants ) );
|
77 |
+
|
78 |
+
get_current_screen()->set_help_sidebar(
|
79 |
+
'<p><strong>' . __( 'For more information:', 'hmbkp' ) . '</strong></p>' .
|
80 |
+
'<p><a href="https://github.com/humanmade/backupwordpress" target="_blank">GitHub</a></p>' .
|
81 |
+
'<p><a href="http://wordpress.org/tags/backupwordpress?forum_id=10" target="_blank">' . __( 'Support Forums', 'hmbkp' ) .'</a></p>' .
|
82 |
+
'<p><a href="http://translate.hmn.md/" target="_blank">' . __( 'Help with translation', 'hmbkp' ) .'</a></p>'
|
83 |
+
);
|
84 |
+
|
85 |
+
}
|
86 |
+
add_filter( 'load-tools_page_' . HMBKP_PLUGIN_SLUG, 'hmbkp_contextual_help' );
|
backupwordpress/admin/page.php
ADDED
@@ -0,0 +1,19 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<div class="wrap">
|
2 |
+
|
3 |
+
<?php screen_icon( HMBKP_PLUGIN_SLUG ); ?>
|
4 |
+
|
5 |
+
<h2><?php _e( 'Manage Backups', 'hmbkp' ); ?></h2>
|
6 |
+
|
7 |
+
<?php if ( hmbkp_possible() ) : ?>
|
8 |
+
|
9 |
+
<?php include_once( HMBKP_PLUGIN_PATH . '/admin/backups.php' ); ?>
|
10 |
+
|
11 |
+
<?php else : ?>
|
12 |
+
|
13 |
+
<p><strong><?php _e( 'You need to fix the issues detailed above before BackUpWordPress can start.', 'hmbkp' ); ?></strong></p>
|
14 |
+
|
15 |
+
<?php endif; ?>
|
16 |
+
|
17 |
+
<p class="howto"><?php printf( __( 'If you need help getting things working you are more than welcome to email us at %s and we\'ll do what we can.', 'hmbkp' ), '<a href="mailto:support@hmn.md">support@hmn.md</a>' ); ?></p>
|
18 |
+
|
19 |
+
</div>
|
backupwordpress/admin/schedule-form-excludes.php
ADDED
@@ -0,0 +1,123 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<form method="post" class="hmbkp-form">
|
2 |
+
|
3 |
+
<input type="hidden" name="hmbkp_schedule_id" value="<?php echo esc_attr( $schedule->get_id() ); ?>" />
|
4 |
+
|
5 |
+
<fieldset class="hmbkp-edit-schedule-excludes-form">
|
6 |
+
|
7 |
+
<legend><?php _e( 'Manage Excludes', 'hmbkp' ); ?></legend>
|
8 |
+
|
9 |
+
<div class="hmbkp_add_exclude_rule">
|
10 |
+
|
11 |
+
<label for="hmbkp-new-exclude-rule">
|
12 |
+
|
13 |
+
<?php _e( 'New Exclude Rule', 'hmbkp' ); ?>
|
14 |
+
|
15 |
+
<input id="hmbkp-new-exclude-rule" type="text" class="code" placeholder=".git/, *.mp3, wp-content/uploads/" />
|
16 |
+
|
17 |
+
<button type="button" class="button-secondary hmbkp_preview_exclude_rule"><?php _e( 'Preview', 'hmbkp' ); ?></button>
|
18 |
+
|
19 |
+
</label>
|
20 |
+
|
21 |
+
</div>
|
22 |
+
|
23 |
+
<table class="widefat fixed">
|
24 |
+
|
25 |
+
<thead>
|
26 |
+
<tr>
|
27 |
+
<th><?php _e( 'Exclude Rules', 'hmbkp' ); ?></th>
|
28 |
+
</tr>
|
29 |
+
</thead>
|
30 |
+
|
31 |
+
<tbody>
|
32 |
+
|
33 |
+
<?php foreach( $schedule->get_excludes() as $key => $exclude ) : ?>
|
34 |
+
|
35 |
+
<tr>
|
36 |
+
<td data-hmbkp-exclude-rule="<?php echo esc_attr( $exclude ); ?>">
|
37 |
+
|
38 |
+
<span class="code"><?php echo esc_attr( str_ireplace( untrailingslashit( $schedule->get_root() ), '', $exclude ) ); ?></span>
|
39 |
+
|
40 |
+
<?php if ( strpos( $schedule->get_path(), untrailingslashit( $exclude ) ) !== false ) : ?>
|
41 |
+
|
42 |
+
<span class="reason"><?php _e( 'default', 'hmbkp' ); ?></span>
|
43 |
+
|
44 |
+
<?php elseif ( defined( 'HMBKP_EXCLUDE' ) && strpos( HMBKP_EXCLUDE, $exclude ) !== false ) : ?>
|
45 |
+
|
46 |
+
<span class="reason"><?php _e( 'defined', 'hmbkp' ); ?></span>
|
47 |
+
|
48 |
+
<?php else : ?>
|
49 |
+
|
50 |
+
<a href="#" class="delete-action"><?php _e( 'Remove', 'hmbkp' ); ?></a>
|
51 |
+
|
52 |
+
<?php endif; ?>
|
53 |
+
|
54 |
+
</td>
|
55 |
+
</tr>
|
56 |
+
|
57 |
+
<?php endforeach; ?>
|
58 |
+
|
59 |
+
</tbody>
|
60 |
+
|
61 |
+
</table>
|
62 |
+
|
63 |
+
<div class="hmbkp-tabs">
|
64 |
+
|
65 |
+
<ul class="subsubsub">
|
66 |
+
|
67 |
+
<?php if ( $schedule->get_excluded_files() ) : ?>
|
68 |
+
|
69 |
+
<li><a href="#hmbkp_excluded_files"><?php _e( 'Excluded', 'hmbkp' ); ?></a>(<?php echo count( $schedule->get_excluded_files() ); ?>)</li>
|
70 |
+
|
71 |
+
<?php endif; ?>
|
72 |
+
|
73 |
+
<li><a href="#hmbkp_included_files"><?php _e( 'Included', 'hmbkp' ); ?></a>(<?php echo count( $schedule->get_included_files() ); ?>)</li>
|
74 |
+
|
75 |
+
<?php if ( $schedule->get_unreadable_files() ) : ?>
|
76 |
+
|
77 |
+
<li><a href="#hmbkp_unreadable_files"><?php _e( 'Unreadable', 'hmbkp' ); ?></a>(<?php echo count( $schedule->get_unreadable_files() ); ?>)</li>
|
78 |
+
|
79 |
+
<?php endif; ?>
|
80 |
+
|
81 |
+
</ul>
|
82 |
+
|
83 |
+
<?php if ( $schedule->get_excluded_files() ) : ?>
|
84 |
+
|
85 |
+
<div id="hmbkp_excluded_files">
|
86 |
+
|
87 |
+
<?php hmbkp_file_list( $schedule, null, 'get_excluded_files' ); ?>
|
88 |
+
|
89 |
+
</div>
|
90 |
+
|
91 |
+
<?php endif; ?>
|
92 |
+
|
93 |
+
<div id="hmbkp_included_files">
|
94 |
+
|
95 |
+
<?php hmbkp_file_list( $schedule, null, 'get_included_files' ); ?>
|
96 |
+
|
97 |
+
</div>
|
98 |
+
|
99 |
+
<?php if ( $schedule->get_unreadable_files() ) : ?>
|
100 |
+
|
101 |
+
<div id="hmbkp_unreadable_files">
|
102 |
+
|
103 |
+
<?php hmbkp_file_list( $schedule, null, 'get_unreadable_files' ); ?>
|
104 |
+
|
105 |
+
<p class="description"><?php _e( 'Unreadable files can\'t be backed up', 'hmbkp' ); ?></p>
|
106 |
+
|
107 |
+
</div>
|
108 |
+
|
109 |
+
<?php endif; ?>
|
110 |
+
|
111 |
+
<p><?php printf( __( 'Your site is %s. Backups will be compressed and so will be smaller.', 'hmbkp' ), '<code>' . $schedule->get_filesize( false ) . '</code>' ); ?></p>
|
112 |
+
|
113 |
+
</div>
|
114 |
+
|
115 |
+
<p class="submit">
|
116 |
+
|
117 |
+
<button type="submit" class="button-primary"><?php _e( 'Close', 'hmbkp' ); ?></button>
|
118 |
+
|
119 |
+
</p>
|
120 |
+
|
121 |
+
</fieldset>
|
122 |
+
|
123 |
+
</form>
|
backupwordpress/admin/schedule-form.php
ADDED
@@ -0,0 +1,60 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<form method="post" class="hmbkp-form" novalidate data-schedule-action="<?php if ( isset( $is_new_schedule ) ) { ?>add<?php } else { ?>edit<?php } ?>">
|
2 |
+
|
3 |
+
<input type="hidden" name="hmbkp_schedule_id" value="<?php echo esc_attr( $schedule->get_id() ); ?>" />
|
4 |
+
|
5 |
+
<fieldset class="hmbkp-edit-schedule-form">
|
6 |
+
|
7 |
+
<legend><?php _e( 'Schedule Settings', 'hmbkp' ); ?></legend>
|
8 |
+
|
9 |
+
<label>
|
10 |
+
|
11 |
+
<?php _e( 'Backup', 'hmbkp' ); ?>
|
12 |
+
|
13 |
+
<select name="hmbkp_schedule_type" id="hmbkp_schedule_type">
|
14 |
+
<option<?php selected( $schedule->get_type(), 'complete'); ?> value="complete"><?php _e( 'Both Database & files', 'hmbkp' ); ?></option>
|
15 |
+
<option<?php selected( $schedule->get_type(), 'file'); ?> value="file"><?php _e( 'Files only', 'hmbkp' ); ?></option>
|
16 |
+
<option<?php selected( $schedule->get_type(), 'database'); ?> value="database"><?php _e( 'Database only', 'hmbkp' ); ?></option>
|
17 |
+
</select>
|
18 |
+
|
19 |
+
</label>
|
20 |
+
|
21 |
+
<label>
|
22 |
+
|
23 |
+
<?php _e( 'Schedule', 'hmbkp' ); ?>
|
24 |
+
|
25 |
+
<select name="hmbkp_schedule_reoccurrence" id="hmbkp_schedule_reoccurrence">
|
26 |
+
|
27 |
+
<option value="manually"><?php _e( 'Manual Only', 'hmbkp' ); ?></option>
|
28 |
+
|
29 |
+
<?php foreach( wp_get_schedules() as $cron_schedule => $cron_details ) : ?>
|
30 |
+
|
31 |
+
<option<?php selected( $schedule->get_reoccurrence(), $cron_schedule ); ?> value="<?php echo esc_attr( $cron_schedule ); ?>"><?php echo esc_attr( $cron_details['display'] ); ?></option>
|
32 |
+
|
33 |
+
<?php endforeach; ?>
|
34 |
+
|
35 |
+
</select>
|
36 |
+
|
37 |
+
</label>
|
38 |
+
|
39 |
+
<label>
|
40 |
+
|
41 |
+
<?php _e( 'Number of backups to store on this server', 'hmbkp' ); ?>
|
42 |
+
|
43 |
+
<input type="number" name="hmbkp_schedule_max_backups" min="1" step="1" value="<?php echo esc_attr( $schedule->get_max_backups() ); ?>" />
|
44 |
+
|
45 |
+
<p class="description"><?php _e( 'The number of previous backups to store on the server. past this limit older backups will be deleted automatically.', 'hmbkp' ); ?></p>
|
46 |
+
|
47 |
+
</label>
|
48 |
+
|
49 |
+
<?php foreach ( HMBKP_Services::get_services( $schedule ) as $service )
|
50 |
+
$service->field(); ?>
|
51 |
+
|
52 |
+
<p class="submit">
|
53 |
+
|
54 |
+
<button type="submit" class="button-primary"><?php _e( 'Update', 'hmbkp' ); ?></button>
|
55 |
+
|
56 |
+
</p>
|
57 |
+
|
58 |
+
</fieldset>
|
59 |
+
|
60 |
+
</form>
|
backupwordpress/admin/schedule.php
ADDED
@@ -0,0 +1,100 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
// Calculated filesize
|
4 |
+
$filesize = $schedule->is_filesize_cached() || isset( $recalculate_filesize ) ? '<code title="' . __( 'Backups will be compressed and should be smaller than this.', 'hmbkp' ) . '">' . esc_attr( $schedule->get_filesize() ) . '</code>' : '<code class="calculating" title="' . __( 'this shouldn\'t take long…', 'hmbkp' ) . '">' . __( 'calculating the size of your site…', 'hmbkp' ) . '</code>';
|
5 |
+
|
6 |
+
// Backup Type
|
7 |
+
$type = strtolower( hmbkp_human_get_type( $schedule->get_type() ) );
|
8 |
+
|
9 |
+
// Backup Time
|
10 |
+
$day = date_i18n( 'l', $schedule->get_next_occurrence() );
|
11 |
+
|
12 |
+
$next_backup = 'title="' . sprintf( __( 'The next backup will be on %1$s at %2$s', 'hmbkp' ), date_i18n( get_option( 'date_format' ), $schedule->get_next_occurrence() ), date_i18n( get_option( 'time_format' ), $schedule->get_next_occurrence() ) ) . '"';
|
13 |
+
|
14 |
+
// Backup Re-occurrence
|
15 |
+
switch ( $schedule->get_reoccurrence() ) :
|
16 |
+
|
17 |
+
case 'hourly' :
|
18 |
+
|
19 |
+
$reoccurrence = date_i18n( get_option( 'time_format' ), $schedule->get_next_occurrence() ) === '00' ? sprintf( __( 'hourly on the hour', 'hmbkp' ) ) : sprintf( __( 'hourly at %s minutes past the hour', 'hmbkp' ), '<span ' . $next_backup . '>' . str_replace( '0', '', date_i18n( 'i', $schedule->get_next_occurrence() ) ) ) . '</span>';
|
20 |
+
|
21 |
+
break;
|
22 |
+
|
23 |
+
case 'daily' :
|
24 |
+
|
25 |
+
$reoccurrence = sprintf( __( 'daily at %s', 'hmbkp' ), '<span ' . $next_backup . '>' . date_i18n( get_option( 'time_format' ), $schedule->get_next_occurrence() ) . '</span>' );
|
26 |
+
|
27 |
+
break;
|
28 |
+
|
29 |
+
|
30 |
+
case 'twicedaily' :
|
31 |
+
|
32 |
+
$times[] = date_i18n( get_option( 'time_format' ), $schedule->get_next_occurrence() );
|
33 |
+
$times[] = date_i18n( get_option( 'time_format' ), strtotime( '+ 12 hours', $schedule->get_next_occurrence() ) );
|
34 |
+
|
35 |
+
sort( $times );
|
36 |
+
|
37 |
+
$reoccurrence = sprintf( __( 'every 12 hours at %1$s & %2$s', 'hmbkp' ), '<span ' . $next_backup . '>' . reset( $times ) . '</span>', '<span>' . end( $times ) ) . '</span>';
|
38 |
+
|
39 |
+
break;
|
40 |
+
|
41 |
+
case 'weekly' :
|
42 |
+
|
43 |
+
$reoccurrence = sprintf( __( 'weekly on %1$s at %2$s', 'hmbkp' ), '<span ' . $next_backup . '>' . $day . '</span>', '<span>' . date_i18n( get_option( 'time_format' ), $schedule->get_next_occurrence() ) . '</span>' );
|
44 |
+
|
45 |
+
break;
|
46 |
+
|
47 |
+
case 'fortnightly' :
|
48 |
+
|
49 |
+
$reoccurrence = sprintf( __( 'fortnightly on %1$s at %2$s', 'hmbkp' ), '<span ' . $next_backup . '>' . $day . '</span>', '<span>' . date_i18n( get_option( 'time_format' ), $schedule->get_next_occurrence() ) . '</span>' );
|
50 |
+
|
51 |
+
break;
|
52 |
+
|
53 |
+
|
54 |
+
case 'monthly' :
|
55 |
+
|
56 |
+
$reoccurrence = sprintf( __( 'on the %1$s of each month at %2$s', 'hmbkp' ), '<span ' . $next_backup . '>' . date_i18n( 'jS', $schedule->get_next_occurrence() ) . '</span>', '<span>' . date_i18n( get_option( 'time_format' ), $schedule->get_next_occurrence() ) . '</span>' );
|
57 |
+
|
58 |
+
break;
|
59 |
+
|
60 |
+
case 'manually' :
|
61 |
+
|
62 |
+
$reoccurrence = __( 'manually', 'hmbkp' );
|
63 |
+
|
64 |
+
break;
|
65 |
+
|
66 |
+
endswitch;
|
67 |
+
|
68 |
+
$server = '<span title="' . esc_attr( hmbkp_path() ) . '">' . __( 'this server', 'hmbkp' ) . '</span>';
|
69 |
+
|
70 |
+
// Backup to keep
|
71 |
+
switch ( $schedule->get_max_backups() ) :
|
72 |
+
|
73 |
+
case 1 :
|
74 |
+
|
75 |
+
$backup_to_keep = sprintf( __( 'store the only the last backup on %s', 'hmbkp' ), $server );
|
76 |
+
|
77 |
+
break;
|
78 |
+
|
79 |
+
case 0 :
|
80 |
+
|
81 |
+
$backup_to_keep = sprintf( __( 'don\'t store any backups on %s', 'hmbkp' ), $server );
|
82 |
+
|
83 |
+
break;
|
84 |
+
|
85 |
+
default :
|
86 |
+
|
87 |
+
$backup_to_keep = sprintf( __( 'store only the last %1$s backups on %2$s', 'hmbkp' ), esc_attr( $schedule->get_max_backups() ), $server );
|
88 |
+
|
89 |
+
endswitch;
|
90 |
+
|
91 |
+
foreach ( HMBKP_Services::get_services( $schedule ) as $file => $service )
|
92 |
+
$services[] = $service->display(); ?>
|
93 |
+
|
94 |
+
<div class="hmbkp-schedule-sentence<?php if ( $schedule->get_status() ) { ?> hmbkp-running<?php } ?>">
|
95 |
+
|
96 |
+
<?php printf( __( 'Backup my %1$s %2$s %3$s, %4$s. %5$s', 'hmbkp' ), $filesize, '<span>' . $type . '</span>', $reoccurrence, $backup_to_keep, implode( '. ', $services ) ); ?>
|
97 |
+
|
98 |
+
<?php hmbkp_schedule_actions( $schedule ); ?>
|
99 |
+
|
100 |
+
</div>
|
backupwordpress/assets/fancyBox/CHANGELOG.md
ADDED
@@ -0,0 +1,55 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
fancyBox - Changelog
|
2 |
+
=========
|
3 |
+
|
4 |
+
### Version 2.0.5 - February 21, 2012
|
5 |
+
|
6 |
+
* Fixed #155 - easing for prev/next animations
|
7 |
+
* Fixed #153 - overriding "keys" options
|
8 |
+
* Fixed #147 - IE7 problem with #hash links
|
9 |
+
* Fixed #130 - changing dynamically data-fancybox-group
|
10 |
+
* Fixed #126 - obey minWidth/minHeight
|
11 |
+
* Fixed #118 - placement of loading icon and navigation arrows
|
12 |
+
* Fixed #101 - "index" option not working
|
13 |
+
* Fixed #94 - "orig" option not working
|
14 |
+
* Fixed #80 - does not work on IE6
|
15 |
+
* Fixed #72 - can't set overlay opacity to 0
|
16 |
+
* Fixed #63 - properly set gallery index
|
17 |
+
* New option "autoCenter" - toggles centering on window resize or scroll, disabled for mobile devices by default
|
18 |
+
* New option "autoResize" - toggles responsivity, disabled for mobile devices by default
|
19 |
+
* New option "preload" - number of images to preload
|
20 |
+
* New feature to target mobile/desktop browsers using CSS, see #108
|
21 |
+
* Changed ajax option defaults to "{ dataType: 'html', headers: { 'X-fancyBox': true } }", see #150 and #128
|
22 |
+
* Updated loading icon for IE7, IE8
|
23 |
+
* Calculates height of the iframe if 'autoSize' is set to 'true' and the iframe is on the same domain as the main page
|
24 |
+
|
25 |
+
### Version 2.0.4 - December 12, 2011
|
26 |
+
|
27 |
+
* Fixed #47 - fix overriding properties
|
28 |
+
* New option "position" to thumbnail and button helpers
|
29 |
+
|
30 |
+
|
31 |
+
### Version 2.0.3 - November 29, 2011
|
32 |
+
|
33 |
+
* Fixed #29 - broken elastic transitions
|
34 |
+
|
35 |
+
|
36 |
+
### Version 2.0.2 - November 28, 2011
|
37 |
+
|
38 |
+
* Fixed slidshow
|
39 |
+
* Fixed scrollbar issue when displayed a very tall image
|
40 |
+
* New option "nextClick" - navigate to next gallery item when user clicks the content
|
41 |
+
* New option "modal" - to disable navigation and closing
|
42 |
+
* Add 'metadata' plugin support
|
43 |
+
* Add ability to create groups using 'data-fancybox-group' attribute
|
44 |
+
* Updated manual usage to match earlier releases
|
45 |
+
|
46 |
+
|
47 |
+
### Version 2.0.1 - November 23, 2011
|
48 |
+
|
49 |
+
* Fixed keyboard events inside form elements
|
50 |
+
* Fixed manual usage
|
51 |
+
|
52 |
+
|
53 |
+
### Version 2.0.0 - November 21, 2011
|
54 |
+
|
55 |
+
First release - completely rewritten, many new features and updated graphics.
|
backupwordpress/assets/fancyBox/README.md
ADDED
@@ -0,0 +1,199 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
fancyBox
|
2 |
+
========
|
3 |
+
|
4 |
+
fancyBox is a tool that offers a nice and elegant way to add zooming functionality for images, html content and multi-media on your webpages.
|
5 |
+
|
6 |
+
More information and examples: http://www.fancyapps.com/fancybox/
|
7 |
+
|
8 |
+
License: http://www.fancyapps.com/fancybox/#license
|
9 |
+
|
10 |
+
Copyright (c) 2012 Janis Skarnelis - janis@fancyapps.com
|
11 |
+
|
12 |
+
|
13 |
+
How to use
|
14 |
+
----------
|
15 |
+
|
16 |
+
To get started, download the plugin, unzip it and copy files to your website/application directory.
|
17 |
+
Load files in the <head> section of your HTML document. Make sure you also add the jQuery library.
|
18 |
+
|
19 |
+
<head>
|
20 |
+
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.min.js"></script>
|
21 |
+
<link rel="stylesheet" href="/fancybox/jquery.fancybox.css" type="text/css" media="screen" />
|
22 |
+
<script type="text/javascript" src="/fancybox/jquery.fancybox.pack.js"></script>
|
23 |
+
</head>
|
24 |
+
|
25 |
+
Create your links with a `title` if you want a title to be shown, and add a class:
|
26 |
+
|
27 |
+
<a href="large_image.jpg" class="fancybox" title="Sample title"><img src="small_image.jpg" /></a>
|
28 |
+
|
29 |
+
If you have a set of related items that you would like to group,
|
30 |
+
additionally include a group name in the `rel` (or `data-fancybox-group`) attribute:
|
31 |
+
|
32 |
+
<a href="large_1.jpg" class="fancybox" rel="gallery" title="Sample title 1"><img src="small_1.jpg" /></a>
|
33 |
+
<a href="large_2.jpg" class="fancybox" rel="gallery" title="Sample title 1"><img src="small_2.jpg" /></a>
|
34 |
+
|
35 |
+
Initialise the script like this:
|
36 |
+
|
37 |
+
<script>
|
38 |
+
$(document).ready(function() {
|
39 |
+
$('.fancybox').fancybox();
|
40 |
+
});
|
41 |
+
</script>
|
42 |
+
|
43 |
+
May also be passed an optional options object which will extend the default values. Example:
|
44 |
+
|
45 |
+
<script>
|
46 |
+
$(document).ready(function() {
|
47 |
+
$('.fancybox').fancybox({
|
48 |
+
padding : 5,
|
49 |
+
loop : false
|
50 |
+
});
|
51 |
+
});
|
52 |
+
</script>
|
53 |
+
|
54 |
+
Script uses the `href` attribute of the matched elements to obtain the location of the content and to figure out content type you want to display.
|
55 |
+
You can specify type directly by adding classname (fancybox.image, fancybox.iframe, etc).
|
56 |
+
|
57 |
+
//Ajax:
|
58 |
+
<a href="/example.html" class="fancybox fancybox.ajax">Example</a>
|
59 |
+
|
60 |
+
//Iframe:
|
61 |
+
<a href="example.html" class="fancybox fancybox.iframe">Example</a>
|
62 |
+
|
63 |
+
//Inline:
|
64 |
+
<a href="#example" class="fancybox">Example</a>
|
65 |
+
|
66 |
+
//SWF:
|
67 |
+
<a href="example.swf" class="fancybox">Example</a>
|
68 |
+
|
69 |
+
//Image:
|
70 |
+
<a href="example.jpg" class="fancybox">Example</a>
|
71 |
+
|
72 |
+
Note, ajax requests are subject to the [same origin policy](http://en.wikipedia.org/wiki/Same_origin_policy).
|
73 |
+
If fancyBox will not be able to get content type, error message will be displayed (this is different from previsous versions where 'ajax' was used as default type).
|
74 |
+
|
75 |
+
Advanced
|
76 |
+
--------
|
77 |
+
|
78 |
+
### Helpers
|
79 |
+
|
80 |
+
Helpers provide a simple mechanism to extend the capabilities of fancyBox. There are two built-in helpers - 'overlay' and 'title'.
|
81 |
+
You can disable them, set custom options or enable other helpers. Examples:
|
82 |
+
|
83 |
+
//Disable title helper
|
84 |
+
$(".fancybox").fancybox({
|
85 |
+
helpers: {
|
86 |
+
title: null
|
87 |
+
}
|
88 |
+
});
|
89 |
+
|
90 |
+
//Disable overlay helper
|
91 |
+
$(".fancybox").fancybox({
|
92 |
+
helpers: {
|
93 |
+
overlay : null
|
94 |
+
}
|
95 |
+
});
|
96 |
+
|
97 |
+
//Change title position and overlay color
|
98 |
+
$(".fancybox").fancybox({
|
99 |
+
helpers: {
|
100 |
+
title : {
|
101 |
+
type : 'inside'
|
102 |
+
},
|
103 |
+
overlay : {
|
104 |
+
css : {
|
105 |
+
'background-color' : '#fff'
|
106 |
+
}
|
107 |
+
}
|
108 |
+
}
|
109 |
+
});
|
110 |
+
|
111 |
+
//Enable thumbnail helper and set custom options
|
112 |
+
$(".fancybox").fancybox({
|
113 |
+
helpers: {
|
114 |
+
thumbs : {
|
115 |
+
width: 50,
|
116 |
+
height: 50
|
117 |
+
}
|
118 |
+
}
|
119 |
+
});
|
120 |
+
|
121 |
+
|
122 |
+
### API
|
123 |
+
|
124 |
+
Also available are event driven callback methods. The `this` keyword refers to the current or upcoming object (depends on callback method). Here is how you can change title:
|
125 |
+
|
126 |
+
$(".fancybox").fancybox({
|
127 |
+
beforeLoad : function() {
|
128 |
+
this.title = 'Image ' + (this.index + 1) + ' of ' + this.group.length + (this.title ? ' - ' + this.title : '');
|
129 |
+
|
130 |
+
/*
|
131 |
+
"this.element" refers to current element, so you can, for example, use the "alt" attribute of the image to store the title:
|
132 |
+
this.title = $(this.element).find('img').attr('alt');
|
133 |
+
*/
|
134 |
+
}
|
135 |
+
});
|
136 |
+
|
137 |
+
It`s possible to open fancyBox programmatically in various ways:
|
138 |
+
|
139 |
+
//HTML content:
|
140 |
+
$.fancybox( '<div><h1>Lorem Lipsum</h1><p>Lorem lipsum</p></div>', {
|
141 |
+
title : 'Custom Title'
|
142 |
+
});
|
143 |
+
|
144 |
+
//DOM element:
|
145 |
+
$.fancybox( $("#inline"), {
|
146 |
+
title : 'Custom Title'
|
147 |
+
});
|
148 |
+
|
149 |
+
//Custom object:
|
150 |
+
$.fancybox({
|
151 |
+
href: 'example.jpg',
|
152 |
+
title : 'Custom Title'
|
153 |
+
});
|
154 |
+
|
155 |
+
//Array of objects:
|
156 |
+
$.fancybox([
|
157 |
+
{
|
158 |
+
href: 'example1.jpg',
|
159 |
+
title : 'Custom Title 1'
|
160 |
+
},
|
161 |
+
{
|
162 |
+
href: 'example2.jpg',
|
163 |
+
title : 'Custom Title 2'
|
164 |
+
}
|
165 |
+
], {
|
166 |
+
padding: 0
|
167 |
+
});
|
168 |
+
|
169 |
+
There are several methods that allow you to interact with and manipulate fancyBox, example:
|
170 |
+
|
171 |
+
//Close fancybox:
|
172 |
+
$.fancybox.close();
|
173 |
+
|
174 |
+
There is a simply way to access wrapping elements using JS:
|
175 |
+
|
176 |
+
$.fancybox.wrap
|
177 |
+
$.fancybox.outer
|
178 |
+
$.fancybox.inner
|
179 |
+
|
180 |
+
You can override CSS to customize the look. For example, make navigation arrows always visible
|
181 |
+
and move them outside of area (use this snippet after including fancybox.css):
|
182 |
+
|
183 |
+
.fancybox-nav span {
|
184 |
+
visibility: visible;
|
185 |
+
}
|
186 |
+
|
187 |
+
.fancybox-prev {
|
188 |
+
left: -50px;
|
189 |
+
}
|
190 |
+
|
191 |
+
.fancybox-next {
|
192 |
+
right: 50px;
|
193 |
+
}
|
194 |
+
|
195 |
+
|
196 |
+
Bug tracker
|
197 |
+
-----------
|
198 |
+
|
199 |
+
Have a bug? Please create an issue on GitHub at https://github.com/fancyapps/fancyBox/issues
|
backupwordpress/assets/fancyBox/demo/1_b.jpg
ADDED
Binary file
|
backupwordpress/assets/fancyBox/demo/1_s.jpg
ADDED
Binary file
|
backupwordpress/assets/fancyBox/demo/2_b.jpg
ADDED
Binary file
|
backupwordpress/assets/fancyBox/demo/2_s.jpg
ADDED
Binary file
|
backupwordpress/assets/fancyBox/demo/3_b.jpg
ADDED
Binary file
|
backupwordpress/assets/fancyBox/demo/3_s.jpg
ADDED
Binary file
|
backupwordpress/assets/fancyBox/demo/4_b.jpg
ADDED
Binary file
|
backupwordpress/assets/fancyBox/demo/4_s.jpg
ADDED
Binary file
|
backupwordpress/assets/fancyBox/demo/5_b.jpg
ADDED
Binary file
|
backupwordpress/assets/fancyBox/demo/5_s.jpg
ADDED
Binary file
|
backupwordpress/assets/fancyBox/demo/ajax.txt
ADDED
@@ -0,0 +1,15 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<div style="max-width:700px;">
|
2 |
+
<h2>Lorem ipsum dolor sit amet3</h2>
|
3 |
+
<p>
|
4 |
+
<a href="javascript:jQuery.fancybox.close();">Close me</a>
|
5 |
+
</p>
|
6 |
+
<p>
|
7 |
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas fermentum ante et sapien dignissim in viverra magna feugiat. Donec tempus ipsum nec neque dignissim quis eleifend eros gravida. Praesent nisi massa, sodales quis tincidunt ac, semper quis risus. In suscipit nisl sed leo aliquet consequat. Integer vitae augue in risus porttitor pellentesque eu eget odio. Fusce ut sagittis quam. Morbi aliquam interdum blandit. Integer pharetra tempor velit, aliquam dictum justo tempus sed. Morbi congue fringilla justo a feugiat. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent quis metus et nisl consectetur pharetra. Nam bibendum turpis eu metus luctus eu volutpat sem molestie. Nam sollicitudin porttitor lorem, ac ultricies est venenatis eu. Ut dignissim elit et orci feugiat ac placerat purus euismod. Ut mi lorem, cursus et sagittis elementum, luctus ac massa.
|
8 |
+
</p>
|
9 |
+
<p>
|
10 |
+
Phasellus et ligula vel diam ullamcorper volutpat. Integer rhoncus rhoncus aliquam. Aliquam erat volutpat. Aenean luctus vestibulum placerat. Quisque quam neque, lacinia aliquet eleifend ac, aliquet blandit felis. Curabitur porta ultricies dui, sit amet mattis quam euismod a. Ut eleifend scelerisque neque, sit amet accumsan odio consequat ut. Proin facilisis auctor elit sed accumsan. Cras dapibus nisl in nisi rhoncus laoreet. Nullam pellentesque tortor libero, eget facilisis ipsum. Donec ultricies tellus tellus, in tincidunt purus. Nullam in est aliquam velit scelerisque blandit. In tincidunt, magna a dapibus imperdiet, quam urna elementum leo, vitae rhoncus nisl velit cursus velit. In dignissim sem ac mauris rhoncus ornare.
|
11 |
+
</p>
|
12 |
+
<p>
|
13 |
+
Duis imperdiet velit vel quam malesuada suscipit imperdiet tellus hendrerit. Mauris vestibulum odio mauris, ut placerat leo. Mauris quis neque at tellus feugiat congue id non enim. Nam vehicula posuere nulla eget vehicula. Donec pretium purus nec ligula porta eu laoreet sapien venenatis. Nulla facilisi. Phasellus eget mi enim. Phasellus molestie tincidunt ultrices. Aenean id sem a tellus lobortis tincidunt. Nam laoreet nulla vel velit tincidunt ac rutrum libero malesuada. Nulla consequat dolor quis nisl tempor fermentum. Integer sodales pretium varius. Aenean a leo vitae odio dictum dignissim malesuada nec dolor. Phasellus adipiscing viverra est, ac sagittis libero sagittis quis. Sed interdum dapibus nunc et fringilla. Nunc vel velit et urna laoreet bibendum.
|
14 |
+
</p>
|
15 |
+
</div>
|
backupwordpress/assets/fancyBox/demo/iframe.html
ADDED
@@ -0,0 +1,22 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<!DOCTYPE html>
|
2 |
+
<html>
|
3 |
+
<head>
|
4 |
+
<title>fancyBox - iframe demo</title>
|
5 |
+
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
6 |
+
</head>
|
7 |
+
<body>
|
8 |
+
<h1>fancyBox - iframe demo</h1>
|
9 |
+
|
10 |
+
<p>
|
11 |
+
<a href="javascript:parent.jQuery.fancybox.close();">Close iframe parent</a>
|
12 |
+
</p>
|
13 |
+
|
14 |
+
<p>
|
15 |
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam scelerisque justo ac eros consectetur bibendum. In hac habitasse platea dictumst. Nulla aliquam turpis et tellus elementum luctus. Duis sit amet rhoncus velit. Duis nisl ligula, mattis interdum blandit laoreet, mattis id ante. Cras pulvinar lacus vitae nisi egestas non euismod neque bibendum. Vestibulum faucibus libero id ante molestie ultricies. Vestibulum quis nibh felis. Vestibulum libero nisl, vehicula vel ullamcorper sit amet, tristique sit amet augue. Etiam urna neque, porttitor sed sodales lacinia, posuere a nisl. Vestibulum blandit neque in sapien volutpat ac condimentum sapien auctor. Ut imperdiet venenatis ultricies. Phasellus accumsan, sem eu placerat commodo, felis purus commodo ipsum, sit amet vulputate orci est viverra est.
|
16 |
+
</p>
|
17 |
+
|
18 |
+
<p>
|
19 |
+
Aenean velit est, condimentum ut iaculis ut, accumsan at mi. Maecenas velit mi, venenatis ut condimentum at, ultrices vel tortor. Curabitur pharetra ornare dapibus. Ut volutpat cursus semper. In hac habitasse platea dictumst. Donec eu iaculis ipsum. Morbi eu dolor velit, a semper nunc.
|
20 |
+
</p>
|
21 |
+
</body>
|
22 |
+
</html>
|
backupwordpress/assets/fancyBox/demo/index.html
ADDED
@@ -0,0 +1,302 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<!DOCTYPE html>
|
2 |
+
<html>
|
3 |
+
<head>
|
4 |
+
<title>fancyBox - Fancy jQuery Lightbox Alternative | Demonstration</title>
|
5 |
+
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
6 |
+
|
7 |
+
<!-- Add jQuery library -->
|
8 |
+
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.min.js"></script>
|
9 |
+
|
10 |
+
<!-- Add mousewheel plugin (this is optional) -->
|
11 |
+
<script type="text/javascript" src="../lib/jquery.mousewheel-3.0.6.pack.js"></script>
|
12 |
+
|
13 |
+
<!-- Add fancyBox main JS and CSS files -->
|
14 |
+
<script type="text/javascript" src="../source/jquery.fancybox.js"></script>
|
15 |
+
<link rel="stylesheet" type="text/css" href="../source/jquery.fancybox.css" media="screen" />
|
16 |
+
|
17 |
+
<!-- Add Button helper (this is optional) -->
|
18 |
+
<link rel="stylesheet" type="text/css" href="../source/helpers/jquery.fancybox-buttons.css?v=1.0.2" />
|
19 |
+
<script type="text/javascript" src="../source/helpers/jquery.fancybox-buttons.js?v=1.0.2"></script>
|
20 |
+
|
21 |
+
<!-- Add Thumbnail helper (this is optional) -->
|
22 |
+
<link rel="stylesheet" type="text/css" href="../source/helpers/jquery.fancybox-thumbs.css?v=1.0.2" />
|
23 |
+
<script type="text/javascript" src="../source/helpers/jquery.fancybox-thumbs.js?v=1.0.2"></script>
|
24 |
+
|
25 |
+
<!-- Add Media helper (this is optional) -->
|
26 |
+
<script type="text/javascript" src="../source/helpers/jquery.fancybox-media.js?v=1.0.0"></script>
|
27 |
+
|
28 |
+
<script type="text/javascript">
|
29 |
+
$(document).ready(function() {
|
30 |
+
/*
|
31 |
+
* Simple image gallery. Uses default settings
|
32 |
+
*/
|
33 |
+
|
34 |
+
$('.fancybox').fancybox();
|
35 |
+
|
36 |
+
/*
|
37 |
+
* Different effects
|
38 |
+
*/
|
39 |
+
|
40 |
+
// Change title type, overlay opening speed and opacity
|
41 |
+
$(".fancybox-effects-a").fancybox({
|
42 |
+
helpers: {
|
43 |
+
title : {
|
44 |
+
type : 'outside'
|
45 |
+
},
|
46 |
+
overlay : {
|
47 |
+
speedIn : 500,
|
48 |
+
opacity : 0.95
|
49 |
+
}
|
50 |
+
}
|
51 |
+
});
|
52 |
+
|
53 |
+
// Disable opening and closing animations, change title type
|
54 |
+
$(".fancybox-effects-b").fancybox({
|
55 |
+
openEffect : 'none',
|
56 |
+
closeEffect : 'none',
|
57 |
+
|
58 |
+
helpers : {
|
59 |
+
title : {
|
60 |
+
type : 'over'
|
61 |
+
}
|
62 |
+
}
|
63 |
+
});
|
64 |
+
|
65 |
+
// Set custom style, close if clicked, change title type and overlay color
|
66 |
+
$(".fancybox-effects-c").fancybox({
|
67 |
+
wrapCSS : 'fancybox-custom',
|
68 |
+
closeClick : true,
|
69 |
+
|
70 |
+
helpers : {
|
71 |
+
title : {
|
72 |
+
type : 'inside'
|
73 |
+
},
|
74 |
+
overlay : {
|
75 |
+
css : {
|
76 |
+
'background-color' : '#eee'
|
77 |
+
}
|
78 |
+
}
|
79 |
+
}
|
80 |
+
});
|
81 |
+
|
82 |
+
// Remove padding, set opening and closing animations, close if clicked and disable overlay
|
83 |
+
$(".fancybox-effects-d").fancybox({
|
84 |
+
padding: 0,
|
85 |
+
|
86 |
+
openEffect : 'elastic',
|
87 |
+
openSpeed : 150,
|
88 |
+
|
89 |
+
closeEffect : 'elastic',
|
90 |
+
closeSpeed : 150,
|
91 |
+
|
92 |
+
closeClick : true,
|
93 |
+
|
94 |
+
helpers : {
|
95 |
+
overlay : null
|
96 |
+
}
|
97 |
+
});
|
98 |
+
|
99 |
+
/*
|
100 |
+
* Button helper. Disable animations, hide close button, change title type and content
|
101 |
+
*/
|
102 |
+
|
103 |
+
$('.fancybox-buttons').fancybox({
|
104 |
+
openEffect : 'none',
|
105 |
+
closeEffect : 'none',
|
106 |
+
|
107 |
+
prevEffect : 'none',
|
108 |
+
nextEffect : 'none',
|
109 |
+
|
110 |
+
closeBtn : false,
|
111 |
+
|
112 |
+
helpers : {
|
113 |
+
title : {
|
114 |
+
type : 'inside'
|
115 |
+
},
|
116 |
+
buttons : {}
|
117 |
+
},
|
118 |
+
|
119 |
+
afterLoad : function() {
|
120 |
+
this.title = 'Image ' + (this.index + 1) + ' of ' + this.group.length + (this.title ? ' - ' + this.title : '');
|
121 |
+
}
|
122 |
+
});
|
123 |
+
|
124 |
+
|
125 |
+
/*
|
126 |
+
* Thumbnail helper. Disable animations, hide close button, arrows and slide to next gallery item if clicked
|
127 |
+
*/
|
128 |
+
|
129 |
+
$('.fancybox-thumbs').fancybox({
|
130 |
+
prevEffect : 'none',
|
131 |
+
nextEffect : 'none',
|
132 |
+
|
133 |
+
closeBtn : false,
|
134 |
+
arrows : false,
|
135 |
+
nextClick : true,
|
136 |
+
|
137 |
+
helpers : {
|
138 |
+
thumbs : {
|
139 |
+
width : 50,
|
140 |
+
height : 50
|
141 |
+
}
|
142 |
+
}
|
143 |
+
});
|
144 |
+
|
145 |
+
/*
|
146 |
+
* Media helper. Group items, disable animations, hide arrows, enable media and button helpers.
|
147 |
+
*/
|
148 |
+
$('.fancybox-media')
|
149 |
+
.attr('rel', 'media-gallery')
|
150 |
+
.fancybox({
|
151 |
+
openEffect : 'none',
|
152 |
+
closeEffect : 'none',
|
153 |
+
prevEffect : 'none',
|
154 |
+
nextEffect : 'none',
|
155 |
+
|
156 |
+
arrows : false,
|
157 |
+
helpers : {
|
158 |
+
media : {},
|
159 |
+
buttons : {}
|
160 |
+
}
|
161 |
+
});
|
162 |
+
|
163 |
+
/*
|
164 |
+
* Open manually
|
165 |
+
*/
|
166 |
+
|
167 |
+
$("#fancybox-manual-a").click(function() {
|
168 |
+
$.fancybox.open('1_b.jpg');
|
169 |
+
});
|
170 |
+
|
171 |
+
$("#fancybox-manual-b").click(function() {
|
172 |
+
$.fancybox.open({
|
173 |
+
href : 'iframe.html',
|
174 |
+
type : 'iframe',
|
175 |
+
padding : 5
|
176 |
+
});
|
177 |
+
});
|
178 |
+
|
179 |
+
$("#fancybox-manual-c").click(function() {
|
180 |
+
$.fancybox.open([
|
181 |
+
{
|
182 |
+
href : '1_b.jpg',
|
183 |
+
title : 'My title'
|
184 |
+
}, {
|
185 |
+
href : '2_b.jpg',
|
186 |
+
title : '2nd title'
|
187 |
+
}, {
|
188 |
+
href : '3_b.jpg'
|
189 |
+
}
|
190 |
+
], {
|
191 |
+
helpers : {
|
192 |
+
thumbs : {
|
193 |
+
width: 75,
|
194 |
+
height: 50
|
195 |
+
}
|
196 |
+
}
|
197 |
+
});
|
198 |
+
});
|
199 |
+
|
200 |
+
|
201 |
+
});
|
202 |
+
</script>
|
203 |
+
<style type="text/css">
|
204 |
+
.fancybox-custom .fancybox-outer {
|
205 |
+
box-shadow: 0 0 50px #222;
|
206 |
+
}
|
207 |
+
</style>
|
208 |
+
</head>
|
209 |
+
<body>
|
210 |
+
<h1>fancyBox</h1>
|
211 |
+
|
212 |
+
<p>This is a demonstration. More information and examples: <a href="http://fancyapps.com/fancybox/">www.fancyapps.com/fancybox/</a></p>
|
213 |
+
|
214 |
+
<h3>Simple image gallery</h3>
|
215 |
+
<p>
|
216 |
+
<a class="fancybox" href="1_b.jpg" data-fancybox-group="gallery" title="Lorem ipsum dolor sit amet"><img src="1_s.jpg" alt="" /></a>
|
217 |
+
|
218 |
+
<a class="fancybox" href="2_b.jpg" data-fancybox-group="gallery" title="Etiam quis mi eu elit temp"><img src="2_s.jpg" alt="" /></a>
|
219 |
+
|
220 |
+
<a class="fancybox" href="3_b.jpg" data-fancybox-group="gallery" title="Cras neque mi, semper leon"><img src="3_s.jpg" alt="" /></a>
|
221 |
+
|
222 |
+
<a class="fancybox" href="4_b.jpg" data-fancybox-group="gallery" title="Sed vel sapien vel sem uno"><img src="4_s.jpg" alt="" /></a>
|
223 |
+
</p>
|
224 |
+
|
225 |
+
<h3>Different effects</h3>
|
226 |
+
<p>
|
227 |
+
<a class="fancybox-effects-a" href="5_b.jpg" title="Lorem ipsum dolor sit amet, consectetur adipiscing elit"><img src="5_s.jpg" alt="" /></a>
|
228 |
+
|
229 |
+
<a class="fancybox-effects-b" href="5_b.jpg" title="Lorem ipsum dolor sit amet, consectetur adipiscing elit"><img src="5_s.jpg" alt="" /></a>
|
230 |
+
|
231 |
+
<a class="fancybox-effects-c" href="5_b.jpg" title="Lorem ipsum dolor sit amet, consectetur adipiscing elit"><img src="5_s.jpg" alt="" /></a>
|
232 |
+
|
233 |
+
<a class="fancybox-effects-d" href="5_b.jpg" title="Lorem ipsum dolor sit amet, consectetur adipiscing elit"><img src="5_s.jpg" alt="" /></a>
|
234 |
+
</p>
|
235 |
+
|
236 |
+
<h3>Various types</h3>
|
237 |
+
<p>
|
238 |
+
fancyBox will try to guess content type from href attribute but you can specify it directly by adding classname (fancybox.image, fancybox.iframe, etc).
|
239 |
+
</p>
|
240 |
+
<ul>
|
241 |
+
<li><a class="fancybox" href="#inline1" title="Lorem ipsum dolor sit amet">Inline</a></li>
|
242 |
+
<li><a class="fancybox fancybox.ajax" href="ajax.txt">Ajax</a></li>
|
243 |
+
<li><a class="fancybox fancybox.iframe" href="iframe.html">Iframe</a></li>
|
244 |
+
<li><a class="fancybox" href="http://www.adobe.com/jp/events/cs3_web_edition_tour/swfs/perform.swf">Swf</a></li>
|
245 |
+
</ul>
|
246 |
+
|
247 |
+
<div id="inline1" style="width:400px;display: none;">
|
248 |
+
<h3>Etiam quis mi eu elit</h3>
|
249 |
+
<p>
|
250 |
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam quis mi eu elit tempor facilisis id et neque. Nulla sit amet sem sapien. Vestibulum imperdiet porta ante ac ornare. Nulla et lorem eu nibh adipiscing ultricies nec at lacus. Cras laoreet ultricies sem, at blandit mi eleifend aliquam. Nunc enim ipsum, vehicula non pretium varius, cursus ac tortor. Vivamus fringilla congue laoreet. Quisque ultrices sodales orci, quis rhoncus justo auctor in. Phasellus dui eros, bibendum eu feugiat ornare, faucibus eu mi. Nunc aliquet tempus sem, id aliquam diam varius ac. Maecenas nisl nunc, molestie vitae eleifend vel, iaculis sed magna. Aenean tempus lacus vitae orci posuere porttitor eget non felis. Donec lectus elit, aliquam nec eleifend sit amet, vestibulum sed nunc.
|
251 |
+
</p>
|
252 |
+
</div>
|
253 |
+
|
254 |
+
<p>
|
255 |
+
Ajax example will not run from your local computer and requires a server to run.
|
256 |
+
</p>
|
257 |
+
|
258 |
+
<h3>Button helper</h3>
|
259 |
+
<p>
|
260 |
+
<a class="fancybox-buttons" data-fancybox-group="button" href="1_b.jpg"><img src="1_s.jpg" alt="" /></a>
|
261 |
+
|
262 |
+
<a class="fancybox-buttons" data-fancybox-group="button" href="2_b.jpg"><img src="2_s.jpg" alt="" /></a>
|
263 |
+
|
264 |
+
<a class="fancybox-buttons" data-fancybox-group="button" href="3_b.jpg"><img src="3_s.jpg" alt="" /></a>
|
265 |
+
|
266 |
+
<a class="fancybox-buttons" data-fancybox-group="button" href="4_b.jpg"><img src="4_s.jpg" alt="" /></a>
|
267 |
+
</p>
|
268 |
+
|
269 |
+
<h3>Thumbnail helper</h3>
|
270 |
+
<p>
|
271 |
+
<a class="fancybox-thumbs" data-fancybox-group="thumb" href="4_b.jpg"><img src="4_s.jpg" alt="" /></a>
|
272 |
+
|
273 |
+
<a class="fancybox-thumbs" data-fancybox-group="thumb" href="3_b.jpg"><img src="3_s.jpg" alt="" /></a>
|
274 |
+
|
275 |
+
<a class="fancybox-thumbs" data-fancybox-group="thumb" href="2_b.jpg"><img src="2_s.jpg" alt="" /></a>
|
276 |
+
|
277 |
+
<a class="fancybox-thumbs" data-fancybox-group="thumb" href="1_b.jpg"><img src="1_s.jpg" alt="" /></a>
|
278 |
+
</p>
|
279 |
+
|
280 |
+
<h3>Media helper</h3>
|
281 |
+
<ul>
|
282 |
+
<li><a class="fancybox-media" href="http://www.youtube.com/watch?v=opj24KnzrWo">Youtube</a></li>
|
283 |
+
<li><a class="fancybox-media" href="http://vimeo.com/25634903">Vimeo</a></li>
|
284 |
+
<li><a class="fancybox-media" href="http://www.metacafe.com/watch/7635964/">Metacafe</a></li>
|
285 |
+
<li><a class="fancybox-media" href="http://www.dailymotion.com/video/xoeylt_electric-guest-this-head-i-hold_music">Dailymotion</a></li>
|
286 |
+
<li><a class="fancybox-media" href="http://twitvid.com/QY7MD">Twitvid</a></li>
|
287 |
+
<li><a class="fancybox-media" href="http://twitpic.com/7p93st">Twitpic</a></li>
|
288 |
+
<li><a class="fancybox-media" href="http://instagr.am/p/IejkuUGxQn">Instagram</a></li>
|
289 |
+
</ul>
|
290 |
+
|
291 |
+
<h3>Open manually</h3>
|
292 |
+
<ul>
|
293 |
+
<li><a id="fancybox-manual-a" href="javascript:;">Open single item</a></li>
|
294 |
+
<li><a id="fancybox-manual-b" href="javascript:;">Open single item, custom options</a></li>
|
295 |
+
<li><a id="fancybox-manual-c" href="javascript:;">Open gallery</a></li>
|
296 |
+
</ul>
|
297 |
+
|
298 |
+
<p>
|
299 |
+
Photo Credit: Instagrammer @whitjohns
|
300 |
+
</p>
|
301 |
+
</body>
|
302 |
+
</html>
|
backupwordpress/assets/fancyBox/lib/jquery-1.7.2.min.js
ADDED
@@ -0,0 +1,4 @@
|
|
|
|
|
|
|
|
|
1 |
+
/*! jQuery v1.7.2 jquery.com | jquery.org/license */
|
2 |
+
(function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cu(a){if(!cj[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){ck||(ck=c.createElement("iframe"),ck.frameBorder=ck.width=ck.height=0),b.appendChild(ck);if(!cl||!ck.createElement)cl=(ck.contentWindow||ck.contentDocument).document,cl.write((f.support.boxModel?"<!doctype html>":"")+"<html><body>"),cl.close();d=cl.createElement(a),cl.body.appendChild(d),e=f.css(d,"display"),b.removeChild(ck)}cj[a]=e}return cj[a]}function ct(a,b){var c={};f.each(cp.concat.apply([],cp.slice(0,b)),function(){c[this]=a});return c}function cs(){cq=b}function cr(){setTimeout(cs,0);return cq=f.now()}function ci(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ch(){try{return new a.XMLHttpRequest}catch(b){}}function cb(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g<i;g++){if(g===1)for(h in a.converters)typeof h=="string"&&(e[h.toLowerCase()]=a.converters[h]);l=k,k=d[g];if(k==="*")k=l;else if(l!=="*"&&l!==k){m=l+" "+k,n=e[m]||e["* "+k];if(!n){p=b;for(o in e){j=o.split(" ");if(j[0]===l||j[0]==="*"){p=e[j[1]+" "+k];if(p){o=e[o],o===!0?n=p:p===!0&&(n=o);break}}}}!n&&!p&&f.error("No conversion from "+m.replace(" "," to ")),n!==!0&&(c=n?n(c):p(o(c)))}}return c}function ca(a,c,d){var e=a.contents,f=a.dataTypes,g=a.responseFields,h,i,j,k;for(i in g)i in d&&(c[g[i]]=d[i]);while(f[0]==="*")f.shift(),h===b&&(h=a.mimeType||c.getResponseHeader("content-type"));if(h)for(i in e)if(e[i]&&e[i].test(h)){f.unshift(i);break}if(f[0]in d)j=f[0];else{for(i in d){if(!f[0]||a.converters[i+" "+f[0]]){j=i;break}k||(k=i)}j=j||k}if(j){j!==f[0]&&f.unshift(j);return d[j]}}function b_(a,b,c,d){if(f.isArray(b))f.each(b,function(b,e){c||bD.test(a)?d(a,e):b_(a+"["+(typeof e=="object"?b:"")+"]",e,c,d)});else if(!c&&f.type(b)==="object")for(var e in b)b_(a+"["+e+"]",b[e],c,d);else d(a,b)}function b$(a,c){var d,e,g=f.ajaxSettings.flatOptions||{};for(d in c)c[d]!==b&&((g[d]?a:e||(e={}))[d]=c[d]);e&&f.extend(!0,a,e)}function bZ(a,c,d,e,f,g){f=f||c.dataTypes[0],g=g||{},g[f]=!0;var h=a[f],i=0,j=h?h.length:0,k=a===bS,l;for(;i<j&&(k||!l);i++)l=h[i](c,d,e),typeof l=="string"&&(!k||g[l]?l=b:(c.dataTypes.unshift(l),l=bZ(a,c,d,e,l,g)));(k||!l)&&!g["*"]&&(l=bZ(a,c,d,e,"*",g));return l}function bY(a){return function(b,c){typeof b!="string"&&(c=b,b="*");if(f.isFunction(c)){var d=b.toLowerCase().split(bO),e=0,g=d.length,h,i,j;for(;e<g;e++)h=d[e],j=/^\+/.test(h),j&&(h=h.substr(1)||"*"),i=a[h]=a[h]||[],i[j?"unshift":"push"](c)}}}function bB(a,b,c){var d=b==="width"?a.offsetWidth:a.offsetHeight,e=b==="width"?1:0,g=4;if(d>0){if(c!=="border")for(;e<g;e+=2)c||(d-=parseFloat(f.css(a,"padding"+bx[e]))||0),c==="margin"?d+=parseFloat(f.css(a,c+bx[e]))||0:d-=parseFloat(f.css(a,"border"+bx[e]+"Width"))||0;return d+"px"}d=by(a,b);if(d<0||d==null)d=a.style[b];if(bt.test(d))return d;d=parseFloat(d)||0;if(c)for(;e<g;e+=2)d+=parseFloat(f.css(a,"padding"+bx[e]))||0,c!=="padding"&&(d+=parseFloat(f.css(a,"border"+bx[e]+"Width"))||0),c==="margin"&&(d+=parseFloat(f.css(a,c+bx[e]))||0);return d+"px"}function bo(a){var b=c.createElement("div");bh.appendChild(b),b.innerHTML=a.outerHTML;return b.firstChild}function bn(a){var b=(a.nodeName||"").toLowerCase();b==="input"?bm(a):b!=="script"&&typeof a.getElementsByTagName!="undefined"&&f.grep(a.getElementsByTagName("input"),bm)}function bm(a){if(a.type==="checkbox"||a.type==="radio")a.defaultChecked=a.checked}function bl(a){return typeof a.getElementsByTagName!="undefined"?a.getElementsByTagName("*"):typeof a.querySelectorAll!="undefined"?a.querySelectorAll("*"):[]}function bk(a,b){var c;b.nodeType===1&&(b.clearAttributes&&b.clearAttributes(),b.mergeAttributes&&b.mergeAttributes(a),c=b.nodeName.toLowerCase(),c==="object"?b.outerHTML=a.outerHTML:c!=="input"||a.type!=="checkbox"&&a.type!=="radio"?c==="option"?b.selected=a.defaultSelected:c==="input"||c==="textarea"?b.defaultValue=a.defaultValue:c==="script"&&b.text!==a.text&&(b.text=a.text):(a.checked&&(b.defaultChecked=b.checked=a.checked),b.value!==a.value&&(b.value=a.value)),b.removeAttribute(f.expando),b.removeAttribute("_submit_attached"),b.removeAttribute("_change_attached"))}function bj(a,b){if(b.nodeType===1&&!!f.hasData(a)){var c,d,e,g=f._data(a),h=f._data(b,g),i=g.events;if(i){delete h.handle,h.events={};for(c in i)for(d=0,e=i[c].length;d<e;d++)f.event.add(b,c,i[c][d])}h.data&&(h.data=f.extend({},h.data))}}function bi(a,b){return f.nodeName(a,"table")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function U(a){var b=V.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}function T(a,b,c){b=b||0;if(f.isFunction(b))return f.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return f.grep(a,function(a,d){return a===b===c});if(typeof b=="string"){var d=f.grep(a,function(a){return a.nodeType===1});if(O.test(b))return f.filter(b,d,!c);b=f.filter(b,d)}return f.grep(a,function(a,d){return f.inArray(a,b)>=0===c})}function S(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function K(){return!0}function J(){return!1}function n(a,b,c){var d=b+"defer",e=b+"queue",g=b+"mark",h=f._data(a,d);h&&(c==="queue"||!f._data(a,e))&&(c==="mark"||!f._data(a,g))&&setTimeout(function(){!f._data(a,e)&&!f._data(a,g)&&(f.removeData(a,d,!0),h.fire())},0)}function m(a){for(var b in a){if(b==="data"&&f.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function l(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(k,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNumeric(d)?+d:j.test(d)?f.parseJSON(d):d}catch(g){}f.data(a,c,d)}else d=b}return d}function h(a){var b=g[a]={},c,d;a=a.split(/\s+/);for(c=0,d=a.length;c<d;c++)b[a[c]]=!0;return b}var c=a.document,d=a.navigator,e=a.location,f=function(){function J(){if(!e.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(J,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,n=/^[\],:{}\s]*$/,o=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,q=/(?:^|:|,)(?:\s*\[)+/g,r=/(webkit)[ \/]([\w.]+)/,s=/(opera)(?:.*version)?[ \/]([\w.]+)/,t=/(msie) ([\w.]+)/,u=/(mozilla)(?:.*? rv:([\w.]+))?/,v=/-([a-z]|[0-9])/ig,w=/^-ms-/,x=function(a,b){return(b+"").toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=m.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.7.2",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.add(a);return this},eq:function(a){a=+a;return a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j<k;j++)if((a=arguments[j])!=null)for(c in a){d=i[c],f=a[c];if(i===f)continue;l&&f&&(e.isPlainObject(f)||(g=e.isArray(f)))?(g?(g=!1,h=d&&e.isArray(d)?d:[]):h=d&&e.isPlainObject(d)?d:{},i[c]=e.extend(l,h,f)):f!==b&&(i[c]=f)}return i},e.extend({noConflict:function(b){a.$===e&&(a.$=g),b&&a.jQuery===e&&(a.jQuery=f);return e},isReady:!1,readyWait:1,holdReady:function(a){a?e.readyWait++:e.ready(!0)},ready:function(a){if(a===!0&&!--e.readyWait||a!==!0&&!e.isReady){if(!c.body)return setTimeout(e.ready,1);e.isReady=!0;if(a!==!0&&--e.readyWait>0)return;A.fireWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").off("ready")}},bindReady:function(){if(!A){A=e.Callbacks("once memory");if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a!=null&&a==a.window},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||D.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw new Error(a)},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){if(typeof c!="string"||!c)return null;var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,"ms-").replace(v,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g<h;)if(c.apply(a[g++],d)===!1)break}else if(i){for(f in a)if(c.call(a[f],f,a[f])===!1)break}else for(;g<h;)if(c.call(a[g],g,a[g++])===!1)break;return a},trim:G?function(a){return a==null?"":G.call(a)}:function(a){return a==null?"":(a+"").replace(k,"").replace(l,"")},makeArray:function(a,b){var c=b||[];if(a!=null){var d=e.type(a);a.length==null||d==="string"||d==="function"||d==="regexp"||e.isWindow(a)?E.call(c,a):e.merge(c,a)}return c},inArray:function(a,b,c){var d;if(b){if(H)return H.call(b,a,c);d=b.length,c=c?c<0?Math.max(0,d+c):c:0;for(;c<d;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,c){var d=a.length,e=0;if(typeof c.length=="number")for(var f=c.length;e<f;e++)a[d++]=c[e];else while(c[e]!==b)a[d++]=c[e++];a.length=d;return a},grep:function(a,b,c){var d=[],e;c=!!c;for(var f=0,g=a.length;f<g;f++)e=!!b(a[f],f),c!==e&&d.push(a[f]);return d},map:function(a,c,d){var f,g,h=[],i=0,j=a.length,k=a instanceof e||j!==b&&typeof j=="number"&&(j>0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i<j;i++)f=c(a[i],i,d),f!=null&&(h[h.length]=f);else for(g in a)f=c(a[g],g,d),f!=null&&(h[h.length]=f);return h.concat.apply([],h)},guid:1,proxy:function(a,c){if(typeof c=="string"){var d=a[c];c=a,a=d}if(!e.isFunction(a))return b;var f=F.call(arguments,2),g=function(){return a.apply(c,f.concat(F.call(arguments)))};g.guid=a.guid=a.guid||g.guid||e.guid++;return g},access:function(a,c,d,f,g,h,i){var j,k=d==null,l=0,m=a.length;if(d&&typeof d=="object"){for(l in d)e.access(a,c,l,d[l],1,h,f);g=1}else if(f!==b){j=i===b&&e.isFunction(f),k&&(j?(j=c,c=function(a,b,c){return j.call(e(a),c)}):(c.call(a,f),c=null));if(c)for(;l<m;l++)c(a[l],d,j?f.call(a[l],l,c(a[l],d)):f,i);g=1}return g?a:k?c.call(a):m?c(a[0],d):h},now:function(){return(new Date).getTime()},uaMatch:function(a){a=a.toLowerCase();var b=r.exec(a)||s.exec(a)||t.exec(a)||a.indexOf("compatible")<0&&u.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},sub:function(){function a(b,c){return new a.fn.init(b,c)}e.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function(d,f){f&&f instanceof e&&!(f instanceof a)&&(f=a(f));return e.fn.init.call(this,d,f,b)},a.fn.init.prototype=a.fn;var b=a(c);return a},browser:{}}),e.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(a,b){I["[object "+b+"]"]=b.toLowerCase()}),z=e.uaMatch(y),z.browser&&(e.browser[z.browser]=!0,e.browser.version=z.version),e.browser.webkit&&(e.browser.safari=!0),j.test(" ")&&(k=/^[\s\xA0]+/,l=/[\s\xA0]+$/),h=e(c),c.addEventListener?B=function(){c.removeEventListener("DOMContentLoaded",B,!1),e.ready()}:c.attachEvent&&(B=function(){c.readyState==="complete"&&(c.detachEvent("onreadystatechange",B),e.ready())});return e}(),g={};f.Callbacks=function(a){a=a?g[a]||h(a):{};var c=[],d=[],e,i,j,k,l,m,n=function(b){var d,e,g,h,i;for(d=0,e=b.length;d<e;d++)g=b[d],h=f.type(g),h==="array"?n(g):h==="function"&&(!a.unique||!p.has(g))&&c.push(g)},o=function(b,f){f=f||[],e=!a.memory||[b,f],i=!0,j=!0,m=k||0,k=0,l=c.length;for(;c&&m<l;m++)if(c[m].apply(b,f)===!1&&a.stopOnFalse){e=!0;break}j=!1,c&&(a.once?e===!0?p.disable():c=[]:d&&d.length&&(e=d.shift(),p.fireWith(e[0],e[1])))},p={add:function(){if(c){var a=c.length;n(arguments),j?l=c.length:e&&e!==!0&&(k=a,o(e[0],e[1]))}return this},remove:function(){if(c){var b=arguments,d=0,e=b.length;for(;d<e;d++)for(var f=0;f<c.length;f++)if(b[d]===c[f]){j&&f<=l&&(l--,f<=m&&m--),c.splice(f--,1);if(a.unique)break}}return this},has:function(a){if(c){var b=0,d=c.length;for(;b<d;b++)if(a===c[b])return!0}return!1},empty:function(){c=[];return this},disable:function(){c=d=e=b;return this},disabled:function(){return!c},lock:function(){d=b,(!e||e===!0)&&p.disable();return this},locked:function(){return!d},fireWith:function(b,c){d&&(j?a.once||d.push([b,c]):(!a.once||!e)&&o(b,c));return this},fire:function(){p.fireWith(this,arguments);return this},fired:function(){return!!i}};return p};var i=[].slice;f.extend({Deferred:function(a){var b=f.Callbacks("once memory"),c=f.Callbacks("once memory"),d=f.Callbacks("memory"),e="pending",g={resolve:b,reject:c,notify:d},h={done:b.add,fail:c.add,progress:d.add,state:function(){return e},isResolved:b.fired,isRejected:c.fired,then:function(a,b,c){i.done(a).fail(b).progress(c);return this},always:function(){i.done.apply(i,arguments).fail.apply(i,arguments);return this},pipe:function(a,b,c){return f.Deferred(function(d){f.each({done:[a,"resolve"],fail:[b,"reject"],progress:[c,"notify"]},function(a,b){var c=b[0],e=b[1],g;f.isFunction(c)?i[a](function(){g=c.apply(this,arguments),g&&f.isFunction(g.promise)?g.promise().then(d.resolve,d.reject,d.notify):d[e+"With"](this===i?d:this,[g])}):i[a](d[e])})}).promise()},promise:function(a){if(a==null)a=h;else for(var b in h)a[b]=h[b];return a}},i=h.promise({}),j;for(j in g)i[j]=g[j].fire,i[j+"With"]=g[j].fireWith;i.done(function(){e="resolved"},c.disable,d.lock).fail(function(){e="rejected"},b.disable,d.lock),a&&a.call(i,i);return i},when:function(a){function m(a){return function(b){e[a]=arguments.length>1?i.call(arguments,0):b,j.notifyWith(k,e)}}function l(a){return function(c){b[a]=arguments.length>1?i.call(arguments,0):c,--g||j.resolveWith(j,b)}}var b=i.call(arguments,0),c=0,d=b.length,e=Array(d),g=d,h=d,j=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred(),k=j.promise();if(d>1){for(;c<d;c++)b[c]&&b[c].promise&&f.isFunction(b[c].promise)?b[c].promise().then(l(c),j.reject,m(c)):--g;g||j.resolveWith(j,b)}else j!==a&&j.resolveWith(j,d?[a]:[]);return k}}),f.support=function(){var b,d,e,g,h,i,j,k,l,m,n,o,p=c.createElement("div"),q=c.documentElement;p.setAttribute("className","t"),p.innerHTML=" <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>",d=p.getElementsByTagName("*"),e=p.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=p.getElementsByTagName("input")[0],b={leadingWhitespace:p.firstChild.nodeType===3,tbody:!p.getElementsByTagName("tbody").length,htmlSerialize:!!p.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:p.className!=="t",enctype:!!c.createElement("form").enctype,html5Clone:c.createElement("nav").cloneNode(!0).outerHTML!=="<:nav></:nav>",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,pixelMargin:!0},f.boxModel=b.boxModel=c.compatMode==="CSS1Compat",i.checked=!0,b.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,b.optDisabled=!h.disabled;try{delete p.test}catch(r){b.deleteExpando=!1}!p.addEventListener&&p.attachEvent&&p.fireEvent&&(p.attachEvent("onclick",function(){b.noCloneEvent=!1}),p.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),b.radioValue=i.value==="t",i.setAttribute("checked","checked"),i.setAttribute("name","t"),p.appendChild(i),j=c.createDocumentFragment(),j.appendChild(p.lastChild),b.checkClone=j.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=i.checked,j.removeChild(i),j.appendChild(p);if(p.attachEvent)for(n in{submit:1,change:1,focusin:1})m="on"+n,o=m in p,o||(p.setAttribute(m,"return;"),o=typeof p[m]=="function"),b[n+"Bubbles"]=o;j.removeChild(p),j=g=h=p=i=null,f(function(){var d,e,g,h,i,j,l,m,n,q,r,s,t,u=c.getElementsByTagName("body")[0];!u||(m=1,t="padding:0;margin:0;border:",r="position:absolute;top:0;left:0;width:1px;height:1px;",s=t+"0;visibility:hidden;",n="style='"+r+t+"5px solid #000;",q="<div "+n+"display:block;'><div style='"+t+"0;display:block;overflow:hidden;'></div></div>"+"<table "+n+"' cellpadding='0' cellspacing='0'>"+"<tr><td></td></tr></table>",d=c.createElement("div"),d.style.cssText=s+"width:0;height:0;position:static;top:0;margin-top:"+m+"px",u.insertBefore(d,u.firstChild),p=c.createElement("div"),d.appendChild(p),p.innerHTML="<table><tr><td style='"+t+"0;display:none'></td><td>t</td></tr></table>",k=p.getElementsByTagName("td"),o=k[0].offsetHeight===0,k[0].style.display="",k[1].style.display="none",b.reliableHiddenOffsets=o&&k[0].offsetHeight===0,a.getComputedStyle&&(p.innerHTML="",l=c.createElement("div"),l.style.width="0",l.style.marginRight="0",p.style.width="2px",p.appendChild(l),b.reliableMarginRight=(parseInt((a.getComputedStyle(l,null)||{marginRight:0}).marginRight,10)||0)===0),typeof p.style.zoom!="undefined"&&(p.innerHTML="",p.style.width=p.style.padding="1px",p.style.border=0,p.style.overflow="hidden",p.style.display="inline",p.style.zoom=1,b.inlineBlockNeedsLayout=p.offsetWidth===3,p.style.display="block",p.style.overflow="visible",p.innerHTML="<div style='width:5px;'></div>",b.shrinkWrapBlocks=p.offsetWidth!==3),p.style.cssText=r+s,p.innerHTML=q,e=p.firstChild,g=e.firstChild,i=e.nextSibling.firstChild.firstChild,j={doesNotAddBorder:g.offsetTop!==5,doesAddBorderForTableAndCells:i.offsetTop===5},g.style.position="fixed",g.style.top="20px",j.fixedPosition=g.offsetTop===20||g.offsetTop===15,g.style.position=g.style.top="",e.style.overflow="hidden",e.style.position="relative",j.subtractsBorderForOverflowNotVisible=g.offsetTop===-5,j.doesNotIncludeMarginInBodyOffset=u.offsetTop!==m,a.getComputedStyle&&(p.style.marginTop="1%",b.pixelMargin=(a.getComputedStyle(p,null)||{marginTop:0}).marginTop!=="1%"),typeof d.style.zoom!="undefined"&&(d.style.zoom=1),u.removeChild(d),l=p=d=null,f.extend(b,j))});return b}();var j=/^(?:\{.*\}|\[.*\])$/,k=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expando,k=typeof c=="string",l=a.nodeType,m=l?f.cache:a,n=l?a[j]:a[j]&&j,o=c==="events";if((!n||!m[n]||!o&&!e&&!m[n].data)&&k&&d===b)return;n||(l?a[j]=n=++f.uuid:n=j),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[n].data,c);g=h=m[n],e||(h.data||(h.data={}),h=h.data),d!==b&&(h[f.camelCase(c)]=d);if(o&&!h[c])return g.events;k?(i=h[c],i==null&&(i=h[f.camelCase(c)])):i=h;return i}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j=i?f.cache:a,k=i?a[h]:h;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArray(b)||(b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,g=b.length;e<g;e++)delete d[b[e]];if(!(c?m:f.isEmptyObject)(d))return}}if(!c){delete j[k].data;if(!m(j[k]))return}f.support.deleteExpando||!j.setInterval?delete j[k]:j[k]=null,i&&(f.support.deleteExpando?delete a[h]:a.removeAttribute?a.removeAttribute(h):a[h]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),f.fn.extend({data:function(a,c){var d,e,g,h,i,j=this[0],k=0,m=null;if(a===b){if(this.length){m=f.data(j);if(j.nodeType===1&&!f._data(j,"parsedAttrs")){g=j.attributes;for(i=g.length;k<i;k++)h=g[k].name,h.indexOf("data-")===0&&(h=f.camelCase(h.substring(5)),l(j,h,m[h]));f._data(j,"parsedAttrs",!0)}}return m}if(typeof a=="object")return this.each(function(){f.data(this,a)});d=a.split(".",2),d[1]=d[1]?"."+d[1]:"",e=d[1]+"!";return f.access(this,function(c){if(c===b){m=this.triggerHandler("getData"+e,[d[0]]),m===b&&j&&(m=f.data(j,a),m=l(j,a,m));return m===b&&d[1]?this.data(d[0]):m}d[1]=c,this.each(function(){var b=f(this);b.triggerHandler("setData"+e,d),f.data(this,a,c),b.triggerHandler("changeData"+e,d)})},null,c,arguments.length>1,null,!1)},removeData:function(a){return this.each(function(){f.removeData(this,a)})}}),f.extend({_mark:function(a,b){a&&(b=(b||"fx")+"mark",f._data(a,b,(f._data(a,b)||0)+1))},_unmark:function(a,b,c){a!==!0&&(c=b,b=a,a=!1);if(b){c=c||"fx";var d=c+"mark",e=a?0:(f._data(b,d)||1)-1;e?f._data(b,d,e):(f.removeData(b,d,!0),n(b,c,"mark"))}},queue:function(a,b,c){var d;if(a){b=(b||"fx")+"queue",d=f._data(a,b),c&&(!d||f.isArray(c)?d=f._data(a,b,f.makeArray(c)):d.push(c));return d||[]}},dequeue:function(a,b){b=b||"fx";var c=f.queue(a,b),d=c.shift(),e={};d==="inprogress"&&(d=c.shift()),d&&(b==="fx"&&c.unshift("inprogress"),f._data(a,b+".run",e),d.call(a,function(){f.dequeue(a,b)},e)),c.length||(f.removeData(a,b+"queue "+b+".run",!0),n(a,b,"queue"))}}),f.fn.extend({queue:function(a,c){var d=2;typeof a!="string"&&(c=a,a="fx",d--);if(arguments.length<d)return f.queue(this[0],a);return c===b?this:this.each(function(){var b=f.queue(this,a,c);a==="fx"&&b[0]!=="inprogress"&&f.dequeue(this,a)})},dequeue:function(a){return this.each(function(){f.dequeue(this,a)})},delay:function(a,b){a=f.fx?f.fx.speeds[a]||a:a,b=b||"fx";return this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,c){function m(){--h||d.resolveWith(e,[e])}typeof a!="string"&&(c=a,a=b),a=a||"fx";var d=f.Deferred(),e=this,g=e.length,h=1,i=a+"defer",j=a+"queue",k=a+"mark",l;while(g--)if(l=f.data(e[g],i,b,!0)||(f.data(e[g],j,b,!0)||f.data(e[g],k,b,!0))&&f.data(e[g],i,f.Callbacks("once memory"),!0))h++,l.add(m);m();return d.promise(c)}});var o=/[\n\t\r]/g,p=/\s+/,q=/\r/g,r=/^(?:button|input)$/i,s=/^(?:button|input|object|select|textarea)$/i,t=/^a(?:rea)?$/i,u=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,v=f.support.getSetAttribute,w,x,y;f.fn.extend({attr:function(a,b){return f.access(this,f.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){f.removeAttr(this,a)})},prop:function(a,b){return f.access(this,f.prop,a,b,arguments.length>1)},removeProp:function(a){a=f.propFix[a]||a;return this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,g,h,i;if(f.isFunction(a))return this.each(function(b){f(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(p);for(c=0,d=this.length;c<d;c++){e=this[c];if(e.nodeType===1)if(!e.className&&b.length===1)e.className=a;else{g=" "+e.className+" ";for(h=0,i=b.length;h<i;h++)~g.indexOf(" "+b[h]+" ")||(g+=b[h]+" ");e.className=f.trim(g)}}}return this},removeClass:function(a){var c,d,e,g,h,i,j;if(f.isFunction(a))return this.each(function(b){f(this).removeClass(a.call(this,b,this.className))});if(a&&typeof a=="string"||a===b){c=(a||"").split(p);for(d=0,e=this.length;d<e;d++){g=this[d];if(g.nodeType===1&&g.className)if(a){h=(" "+g.className+" ").replace(o," ");for(i=0,j=c.length;i<j;i++)h=h.replace(" "+c[i]+" "," ");g.className=f.trim(h)}else g.className=""}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b=="boolean";if(f.isFunction(a))return this.each(function(c){f(this).toggleClass(a.call(this,c,this.className,b),b)});return this.each(function(){if(c==="string"){var e,g=0,h=f(this),i=b,j=a.split(p);while(e=j[g++])i=d?i:!h.hasClass(e),h[i?"addClass":"removeClass"](e)}else if(c==="undefined"||c==="boolean")this.className&&f._data(this,"__className__",this.className),this.className=this.className||a===!1?"":f._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ",c=0,d=this.length;for(;c<d;c++)if(this[c].nodeType===1&&(" "+this[c].className+" ").replace(o," ").indexOf(b)>-1)return!0;return!1},val:function(a){var c,d,e,g=this[0];{if(!!arguments.length){e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.type]||f.valHooks[this.nodeName.toLowerCase()];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}if(g){c=f.valHooks[g.type]||f.valHooks[g.nodeName.toLowerCase()];if(c&&"get"in c&&(d=c.get(g,"value"))!==b)return d;d=g.value;return typeof d=="string"?d.replace(q,""):d==null?"":d}}}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selectedIndex,h=[],i=a.options,j=a.type==="select-one";if(g<0)return null;c=j?g:0,d=j?g+1:i.length;for(;c<d;c++){e=i[c];if(e.selected&&(f.support.optDisabled?!e.disabled:e.getAttribute("disabled")===null)&&(!e.parentNode.disabled||!f.nodeName(e.parentNode,"optgroup"))){b=f(e).val();if(j)return b;h.push(b)}}if(j&&!h.length&&i.length)return f(i[g]).val();return h},set:function(a,b){var c=f.makeArray(b);f(a).find("option").each(function(){this.selected=f.inArray(f(this).val(),c)>=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var g,h,i,j=a.nodeType;if(!!a&&j!==3&&j!==8&&j!==2){if(e&&c in f.attrFn)return f(a)[c](d);if(typeof a.getAttribute=="undefined")return f.prop(a,c,d);i=j!==1||!f.isXMLDoc(a),i&&(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b){if(d===null){f.removeAttr(a,c);return}if(h&&"set"in h&&i&&(g=h.set(a,d,c))!==b)return g;a.setAttribute(c,""+d);return d}if(h&&"get"in h&&i&&(g=h.get(a,c))!==null)return g;g=a.getAttribute(c);return g===null?b:g}},removeAttr:function(a,b){var c,d,e,g,h,i=0;if(b&&a.nodeType===1){d=b.toLowerCase().split(p),g=d.length;for(;i<g;i++)e=d[i],e&&(c=f.propFix[e]||e,h=u.test(e),h||f.attr(a,e,""),a.removeAttribute(v?e:c),h&&c in a&&(a[c]=!1))}},attrHooks:{type:{set:function(a,b){if(r.test(a.nodeName)&&a.parentNode)f.error("type property can't be changed");else if(!f.support.radioValue&&b==="radio"&&f.nodeName(a,"input")){var c=a.value;a.setAttribute("type",b),c&&(a.value=c);return b}}},value:{get:function(a,b){if(w&&f.nodeName(a,"button"))return w.get(a,b);return b in a?a.value:null},set:function(a,b,c){if(w&&f.nodeName(a,"button"))return w.set(a,b,c);a.value=b}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(a,c,d){var e,g,h,i=a.nodeType;if(!!a&&i!==3&&i!==8&&i!==2){h=i!==1||!f.isXMLDoc(a),h&&(c=f.propFix[c]||c,g=f.propHooks[c]);return d!==b?g&&"set"in g&&(e=g.set(a,d,c))!==b?e:a[c]=d:g&&"get"in g&&(e=g.get(a,c))!==null?e:a[c]}},propHooks:{tabIndex:{get:function(a){var c=a.getAttributeNode("tabindex");return c&&c.specified?parseInt(c.value,10):s.test(a.nodeName)||t.test(a.nodeName)&&a.href?0:b}}}}),f.attrHooks.tabindex=f.propHooks.tabIndex,x={get:function(a,c){var d,e=f.prop(a,c);return e===!0||typeof e!="boolean"&&(d=a.getAttributeNode(c))&&d.nodeValue!==!1?c.toLowerCase():b},set:function(a,b,c){var d;b===!1?f.removeAttr(a,c):(d=f.propFix[c]||c,d in a&&(a[d]=!0),a.setAttribute(c,c.toLowerCase()));return c}},v||(y={name:!0,id:!0,coords:!0},w=f.valHooks.button={get:function(a,c){var d;d=a.getAttributeNode(c);return d&&(y[c]?d.nodeValue!=="":d.specified)?d.nodeValue:b},set:function(a,b,d){var e=a.getAttributeNode(d);e||(e=c.createAttribute(d),a.setAttributeNode(e));return e.nodeValue=b+""}},f.attrHooks.tabindex.set=w.set,f.each(["width","height"],function(a,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===""){a.setAttribute(b,"auto");return c}}})}),f.attrHooks.contenteditable={get:w.get,set:function(a,b,c){b===""&&(b="false"),w.set(a,b,c)}}),f.support.hrefNormalized||f.each(["href","src","width","height"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=""+b}}),f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex);return null}})),f.support.enctype||(f.propFix.enctype="encoding"),f.support.checkOn||f.each(["radio","checkbox"],function(){f.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}}),f.each(["radio","checkbox"],function(){f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(),b)>=0}})});var z=/^(?:textarea|input|select)$/i,A=/^([^\.]*)?(?:\.(.+))?$/,B=/(?:^|\s)hover(\.\S+)?\b/,C=/^key/,D=/^(?:mouse|contextmenu)|click/,E=/^(?:focusinfocus|focusoutblur)$/,F=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,G=function(
|
3 |
+
a){var b=F.exec(a);b&&(b[1]=(b[1]||"").toLowerCase(),b[3]=b[3]&&new RegExp("(?:^|\\s)"+b[3]+"(?:\\s|$)"));return b},H=function(a,b){var c=a.attributes||{};return(!b[1]||a.nodeName.toLowerCase()===b[1])&&(!b[2]||(c.id||{}).value===b[2])&&(!b[3]||b[3].test((c["class"]||{}).value))},I=function(a){return f.event.special.hover?a:a.replace(B,"mouseenter$1 mouseleave$1")};f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler&&(p=d,d=p.handler,g=p.selector),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(h.handle=i=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=f.trim(I(c)).split(" ");for(k=0;k<c.length;k++){l=A.exec(c[k])||[],m=l[1],n=(l[2]||"").split(".").sort(),s=f.event.special[m]||{},m=(g?s.delegateType:s.bindType)||m,s=f.event.special[m]||{},o=f.extend({type:m,origType:l[1],data:e,handler:d,guid:d.guid,selector:g,quick:g&&G(g),namespace:n.join(".")},p),r=j[m];if(!r){r=j[m]=[],r.delegateCount=0;if(!s.setup||s.setup.call(a,e,n,i)===!1)a.addEventListener?a.addEventListener(m,i,!1):a.attachEvent&&a.attachEvent("on"+m,i)}s.add&&(s.add.call(a,o),o.handler.guid||(o.handler.guid=d.guid)),g?r.splice(r.delegateCount++,0,o):r.push(o),f.event.global[m]=!0}a=null}},global:{},remove:function(a,b,c,d,e){var g=f.hasData(a)&&f._data(a),h,i,j,k,l,m,n,o,p,q,r,s;if(!!g&&!!(o=g.events)){b=f.trim(I(b||"")).split(" ");for(h=0;h<b.length;h++){i=A.exec(b[h])||[],j=k=i[1],l=i[2];if(!j){for(j in o)f.event.remove(a,j+b[h],c,d,!0);continue}p=f.event.special[j]||{},j=(d?p.delegateType:p.bindType)||j,r=o[j]||[],m=r.length,l=l?new RegExp("(^|\\.)"+l.split(".").sort().join("\\.(?:.*\\.)?")+"(\\.|$)"):null;for(n=0;n<r.length;n++)s=r[n],(e||k===s.origType)&&(!c||c.guid===s.guid)&&(!l||l.test(s.namespace))&&(!d||d===s.selector||d==="**"&&s.selector)&&(r.splice(n--,1),s.selector&&r.delegateCount--,p.remove&&p.remove.call(a,s));r.length===0&&m!==r.length&&((!p.teardown||p.teardown.call(a,l)===!1)&&f.removeEvent(a,j,g.handle),delete o[j])}f.isEmptyObject(o)&&(q=g.handle,q&&(q.elem=null),f.removeData(a,["events","handle"],!0))}},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(c,d,e,g){if(!e||e.nodeType!==3&&e.nodeType!==8){var h=c.type||c,i=[],j,k,l,m,n,o,p,q,r,s;if(E.test(h+f.event.triggered))return;h.indexOf("!")>=0&&(h=h.slice(0,-1),k=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if((!e||f.event.customEvent[h])&&!f.event.global[h])return;c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)"):null,o=h.indexOf(":")<0?"on"+h:"";if(!e){j=f.cache;for(l in j)j[l].events&&j[l].events[h]&&f.event.trigger(c,d,j[l].handle.elem,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.unshift(c),p=f.event.special[h]||{};if(p.trigger&&p.trigger.apply(e,d)===!1)return;r=[[e,p.bindType||h]];if(!g&&!p.noBubble&&!f.isWindow(e)){s=p.delegateType||h,m=E.test(s+h)?e:e.parentNode,n=null;for(;m;m=m.parentNode)r.push([m,s]),n=m;n&&n===e.ownerDocument&&r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;l<r.length&&!c.isPropagationStopped();l++)m=r[l][0],c.type=r[l][1],q=(f._data(m,"events")||{})[c.type]&&f._data(m,"handle"),q&&q.apply(m,d),q=o&&m[o],q&&f.acceptData(m)&&q.apply(m,d)===!1&&c.preventDefault();c.type=h,!g&&!c.isDefaultPrevented()&&(!p._default||p._default.apply(e.ownerDocument,d)===!1)&&(h!=="click"||!f.nodeName(e,"a"))&&f.acceptData(e)&&o&&e[h]&&(h!=="focus"&&h!=="blur"||c.target.offsetWidth!==0)&&!f.isWindow(e)&&(n=e[o],n&&(e[o]=null),f.event.triggered=h,e[h](),f.event.triggered=b,n&&(e[o]=n));return c.result}},dispatch:function(c){c=f.event.fix(c||a.event);var d=(f._data(this,"events")||{})[c.type]||[],e=d.delegateCount,g=[].slice.call(arguments,0),h=!c.exclusive&&!c.namespace,i=f.event.special[c.type]||{},j=[],k,l,m,n,o,p,q,r,s,t,u;g[0]=c,c.delegateTarget=this;if(!i.preDispatch||i.preDispatch.call(this,c)!==!1){if(e&&(!c.button||c.type!=="click")){n=f(this),n.context=this.ownerDocument||this;for(m=c.target;m!=this;m=m.parentNode||this)if(m.disabled!==!0){p={},r=[],n[0]=m;for(k=0;k<e;k++)s=d[k],t=s.selector,p[t]===b&&(p[t]=s.quick?H(m,s.quick):n.is(t)),p[t]&&r.push(s);r.length&&j.push({elem:m,matches:r})}}d.length>e&&j.push({elem:this,matches:d.slice(e)});for(k=0;k<j.length&&!c.isPropagationStopped();k++){q=j[k],c.currentTarget=q.elem;for(l=0;l<q.matches.length&&!c.isImmediatePropagationStopped();l++){s=q.matches[l];if(h||!c.namespace&&!s.namespace||c.namespace_re&&c.namespace_re.test(s.namespace))c.data=s.data,c.handleObj=s,o=((f.event.special[s.origType]||{}).handle||s.handler).apply(q.elem,g),o!==b&&(c.result=o,o===!1&&(c.preventDefault(),c.stopPropagation()))}}i.postDispatch&&i.postDispatch.call(this,c);return c.result}},props:"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){a.which==null&&(a.which=b.charCode!=null?b.charCode:b.keyCode);return a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,d){var e,f,g,h=d.button,i=d.fromElement;a.pageX==null&&d.clientX!=null&&(e=a.target.ownerDocument||c,f=e.documentElement,g=e.body,a.pageX=d.clientX+(f&&f.scrollLeft||g&&g.scrollLeft||0)-(f&&f.clientLeft||g&&g.clientLeft||0),a.pageY=d.clientY+(f&&f.scrollTop||g&&g.scrollTop||0)-(f&&f.clientTop||g&&g.clientTop||0)),!a.relatedTarget&&i&&(a.relatedTarget=i===a.target?d.toElement:i),!a.which&&h!==b&&(a.which=h&1?1:h&2?3:h&4?2:0);return a}},fix:function(a){if(a[f.expando])return a;var d,e,g=a,h=f.event.fixHooks[a.type]||{},i=h.props?this.props.concat(h.props):this.props;a=f.Event(g);for(d=i.length;d;)e=i[--d],a[e]=g[e];a.target||(a.target=g.srcElement||c),a.target.nodeType===3&&(a.target=a.target.parentNode),a.metaKey===b&&(a.metaKey=a.ctrlKey);return h.filter?h.filter(a,g):a},special:{ready:{setup:f.bindReady},load:{noBubble:!0},focus:{delegateType:"focusin"},blur:{delegateType:"focusout"},beforeunload:{setup:function(a,b,c){f.isWindow(this)&&(this.onbeforeunload=c)},teardown:function(a,b){this.onbeforeunload===b&&(this.onbeforeunload=null)}}},simulate:function(a,b,c,d){var e=f.extend(new f.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?f.event.trigger(e,null,b):f.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},f.event.handle=f.event.dispatch,f.removeEvent=c.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){a.detachEvent&&a.detachEvent("on"+b,c)},f.Event=function(a,b){if(!(this instanceof f.Event))return new f.Event(a,b);a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault()?K:J):this.type=a,b&&f.extend(this,b),this.timeStamp=a&&a.timeStamp||f.now(),this[f.expando]=!0},f.Event.prototype={preventDefault:function(){this.isDefaultPrevented=K;var a=this.originalEvent;!a||(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){this.isPropagationStopped=K;var a=this.originalEvent;!a||(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=K,this.stopPropagation()},isDefaultPrevented:J,isPropagationStopped:J,isImmediatePropagationStopped:J},f.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){f.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c=this,d=a.relatedTarget,e=a.handleObj,g=e.selector,h;if(!d||d!==c&&!f.contains(c,d))a.type=e.origType,h=e.handler.apply(this,arguments),a.type=b;return h}}}),f.support.submitBubbles||(f.event.special.submit={setup:function(){if(f.nodeName(this,"form"))return!1;f.event.add(this,"click._submit keypress._submit",function(a){var c=a.target,d=f.nodeName(c,"input")||f.nodeName(c,"button")?c.form:b;d&&!d._submit_attached&&(f.event.add(d,"submit._submit",function(a){a._submit_bubble=!0}),d._submit_attached=!0)})},postDispatch:function(a){a._submit_bubble&&(delete a._submit_bubble,this.parentNode&&!a.isTrigger&&f.event.simulate("submit",this.parentNode,a,!0))},teardown:function(){if(f.nodeName(this,"form"))return!1;f.event.remove(this,"._submit")}}),f.support.changeBubbles||(f.event.special.change={setup:function(){if(z.test(this.nodeName)){if(this.type==="checkbox"||this.type==="radio")f.event.add(this,"propertychange._change",function(a){a.originalEvent.propertyName==="checked"&&(this._just_changed=!0)}),f.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1,f.event.simulate("change",this,a,!0))});return!1}f.event.add(this,"beforeactivate._change",function(a){var b=a.target;z.test(b.nodeName)&&!b._change_attached&&(f.event.add(b,"change._change",function(a){this.parentNode&&!a.isSimulated&&!a.isTrigger&&f.event.simulate("change",this.parentNode,a,!0)}),b._change_attached=!0)})},handle:function(a){var b=a.target;if(this!==b||a.isSimulated||a.isTrigger||b.type!=="radio"&&b.type!=="checkbox")return a.handleObj.handler.apply(this,arguments)},teardown:function(){f.event.remove(this,"._change");return z.test(this.nodeName)}}),f.support.focusinBubbles||f.each({focus:"focusin",blur:"focusout"},function(a,b){var d=0,e=function(a){f.event.simulate(b,a.target,f.event.fix(a),!0)};f.event.special[b]={setup:function(){d++===0&&c.addEventListener(a,e,!0)},teardown:function(){--d===0&&c.removeEventListener(a,e,!0)}}}),f.fn.extend({on:function(a,c,d,e,g){var h,i;if(typeof a=="object"){typeof c!="string"&&(d=d||c,c=b);for(i in a)this.on(i,c,d,a[i],g);return this}d==null&&e==null?(e=c,d=c=b):e==null&&(typeof c=="string"?(e=d,d=b):(e=d,d=c,c=b));if(e===!1)e=J;else if(!e)return this;g===1&&(h=e,e=function(a){f().off(a);return h.apply(this,arguments)},e.guid=h.guid||(h.guid=f.guid++));return this.each(function(){f.event.add(this,a,e,d,c)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,c,d){if(a&&a.preventDefault&&a.handleObj){var e=a.handleObj;f(a.delegateTarget).off(e.namespace?e.origType+"."+e.namespace:e.origType,e.selector,e.handler);return this}if(typeof a=="object"){for(var g in a)this.off(g,c,a[g]);return this}if(c===!1||typeof c=="function")d=c,c=b;d===!1&&(d=J);return this.each(function(){f.event.remove(this,a,d,c)})},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},live:function(a,b,c){f(this.context).on(a,this.selector,b,c);return this},die:function(a,b){f(this.context).off(a,this.selector||"**",b);return this},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return arguments.length==1?this.off(a,"**"):this.off(b,a,c)},trigger:function(a,b){return this.each(function(){f.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0])return f.event.trigger(a,b,this[0],!0)},toggle:function(a){var b=arguments,c=a.guid||f.guid++,d=0,e=function(c){var e=(f._data(this,"lastToggle"+a.guid)||0)%d;f._data(this,"lastToggle"+a.guid,e+1),c.preventDefault();return b[e].apply(this,arguments)||!1};e.guid=c;while(d<b.length)b[d++].guid=c;return this.click(e)},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),f.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){f.fn[b]=function(a,c){c==null&&(c=a,a=null);return arguments.length>0?this.on(b,null,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0),C.test(b)&&(f.event.fixHooks[b]=f.event.keyHooks),D.test(b)&&(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(a,b,c,e,f,g){for(var h=0,i=e.length;h<i;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}if(j.nodeType===1){g||(j[d]=c,j.sizset=h);if(typeof b!="string"){if(j===b){k=!0;break}}else if(m.filter(b,[j]).length>0){k=j;break}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length;h<i;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}j.nodeType===1&&!g&&(j[d]=c,j.sizset=h);if(j.nodeName.toLowerCase()===b){k=j;break}j=j[a]}e[h]=k}}}var a=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d="sizcache"+(Math.random()+"").replace(".",""),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\/g,k=/\r\n/g,l=/\W/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return e;var i,j,k,l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(""),i=a.exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length>1&&p.exec(b))if(w.length===2&&o.relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.relative[w[0]]?[d]:m(w.shift(),d);while(w.length)b=w.shift(),o.relative[b]&&(b+=w.shift()),j=y(b,j,f)}else{!f&&w.length>1&&d.nodeType===9&&!v&&o.match.ID.test(w[0])&&!o.match.ID.test(w[w.length-1])&&(n=m.find(w.shift(),d,v),d=n.expr?m.filter(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.length===1&&(w[0]==="~"||w[0]==="+")&&d.parentNode?d.parentNode:d,v),j=n.expr?m.filter(n.expr,n.set):n.set,w.length>0?k=s(j):u=!1;while(w.length)q=w.pop(),r=q,o.relative[q]?r=w.pop():q="",r==null&&(r=d),o.relative[q](k,r,v)}else k=w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)==="[object Array]")if(!u)e.push.apply(e,k);else if(d&&d.nodeType===1)for(t=0;k[t]!=null;t++)k[t]&&(k[t]===!0||k[t].nodeType===1&&m.contains(d,k[t]))&&e.push(j[t]);else for(t=0;k[t]!=null;t++)k[t]&&k[t].nodeType===1&&e.push(j[t]);else s(k,e);l&&(m(l,h,e,f),m.uniqueSort(e));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var b=1;b<a.length;b++)a[b]===a[b-1]&&a.splice(b--,1)}return a},m.matches=function(a,b){return m(a,null,null,b)},m.matchesSelector=function(a,b){return m(b,null,null,[a]).length>0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.order.length;e<f;e++){h=o.order[e];if(g=o.leftMatch[h].exec(a)){i=g[1],g.splice(1,1);if(i.substr(i.length-1)!=="\\"){g[1]=(g[1]||"").replace(j,""),d=o.find[h](g,b,c);if(d!=null){a=a.replace(o.match[h],"");break}}}}d||(d=typeof b.getElementsByTagName!="undefined"?b.getElementsByTagName("*"):[]);return{set:d,expr:a}},m.filter=function(a,c,d,e){var f,g,h,i,j,k,l,n,p,q=a,r=[],s=c,t=c&&c[0]&&m.isXML(c[0]);while(a&&c.length){for(h in o.filter)if((f=o.leftMatch[h].exec(a))!=null&&f[2]){k=o.filter[h],l=f[1],g=!1,f.splice(1,1);if(l.substr(l.length-1)==="\\")continue;s===r&&(r=[]);if(o.preFilter[h]){f=o.preFilter[h](f,s,d,r,e,t);if(!f)g=i=!0;else if(f===!0)continue}if(f)for(n=0;(j=s[n])!=null;n++)j&&(i=k(j,f,n,s),p=e^i,d&&i!=null?p?g=!0:s[n]=!1:p&&(r.push(j),g=!0));if(i!==b){d||(s=r),a=a.replace(o.match[h],"");if(!g)return[];break}}if(a===q)if(g==null)m.error(a);else break;q=a}return s},m.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)};var n=m.getText=function(a){var b,c,d=a.nodeType,e="";if(d){if(d===1||d===9||d===11){if(typeof a.textContent=="string")return a.textContent;if(typeof a.innerText=="string")return a.innerText.replace(k,"");for(a=a.firstChild;a;a=a.nextSibling)e+=n(a)}else if(d===3||d===4)return a.nodeValue}else for(b=0;c=a[b];b++)c.nodeType!==8&&(e+=n(c));return e},o=m.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(a){return a.getAttribute("href")},type:function(a){return a.getAttribute("type")}},relative:{"+":function(a,b){var c=typeof b=="string",d=c&&!l.test(b),e=c&&!d;d&&(b=b.toLowerCase());for(var f=0,g=a.length,h;f<g;f++)if(h=a[f]){while((h=h.previousSibling)&&h.nodeType!==1);a[f]=e||h&&h.nodeName.toLowerCase()===b?h||!1:h===b}e&&m.filter(b,a,!0)},">":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!l.test(b)){b=b.toLowerCase();for(;e<f;e++){c=a[e];if(c){var g=c.parentNode;a[e]=g.nodeName.toLowerCase()===b?g:!1}}}else{for(;e<f;e++)c=a[e],c&&(a[e]=d?c.parentNode:c.parentNode===b);d&&m.filter(b,a,!0)}},"":function(a,b,c){var d,f=e++,g=x;typeof b=="string"&&!l.test(b)&&(b=b.toLowerCase(),d=b,g=w),g("parentNode",b,f,a,d,c)},"~":function(a,b,c){var d,f=e++,g=x;typeof b=="string"&&!l.test(b)&&(b=b.toLowerCase(),d=b,g=w),g("previousSibling",b,f,a,d,c)}},find:{ID:function(a,b,c){if(typeof b.getElementById!="undefined"&&!c){var d=b.getElementById(a[1]);return d&&d.parentNode?[d]:[]}},NAME:function(a,b){if(typeof b.getElementsByName!="undefined"){var c=[],d=b.getElementsByName(a[1]);for(var e=0,f=d.length;e<f;e++)d[e].getAttribute("name")===a[1]&&c.push(d[e]);return c.length===0?null:c}},TAG:function(a,b){if(typeof b.getElementsByTagName!="undefined")return b.getElementsByTagName(a[1])}},preFilter:{CLASS:function(a,b,c,d,e,f){a=" "+a[1].replace(j,"")+" ";if(f)return a;for(var g=0,h;(h=b[g])!=null;g++)h&&(e^(h.className&&(" "+h.className+" ").replace(/[\t\n\r]/g," ").indexOf(a)>=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(j,"")},TAG:function(a,b){return a[1].replace(j,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||m.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&m.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(j,"");!f&&o.attrMap[g]&&(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(j,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=m(b[3],null,null,c);else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(o.match.POS.test(b[0])||o.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!m(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return b<c[3]-0},gt:function(a,b,c){return b>c[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=o.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||n([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h<i;h++)if(g[h]===a)return!1;return!0}m.error(e)},CHILD:function(a,b){var c,e,f,g,h,i,j,k=b[1],l=a;switch(k){case"only":case"first":while(l=l.previousSibling)if(l.nodeType===1)return!1;if(k==="first")return!0;l=a;case"last":while(l=l.nextSibling)if(l.nodeType===1)return!1;return!0;case"nth":c=b[2],e=b[3];if(c===1&&e===0)return!0;f=b[0],g=a.parentNode;if(g&&(g[d]!==f||!a.nodeIndex)){i=0;for(l=g.firstChild;l;l=l.nextSibling)l.nodeType===1&&(l.nodeIndex=++i);g[d]=f}j=a.nodeIndex-e;return c===0?j===0:j%c===0&&j/c>=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||!!a.nodeName&&a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":!f&&m.attr?d!=null:f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=o.setFilters[e];if(f)return f(a,c,b,d)}}},p=o.match.POS,q=function(a,b){return"\\"+(b-0+1)};for(var r in o.match)o.match[r]=new RegExp(o.match[r].source+/(?![^\[]*\])(?![^\(]*\))/.source),o.leftMatch[r]=new RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[r].source.replace(/\\(\d+)/g,q));o.match.globalPOS=p;var s=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(t){s=function(a,b){var c=0,d=b||[];if(g.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var e=a.length;c<e;c++)d.push(a[c]);else for(;a[c];c++)d.push(a[c]);return d}}var u,v;c.documentElement.compareDocumentPosition?u=function(a,b){if(a===b){h=!0;return 0}if(!a.compareDocumentPosition||!b.compareDocumentPosition)return a.compareDocumentPosition?-1:1;return a.compareDocumentPosition(b)&4?-1:1}:(u=function(a,b){if(a===b){h=!0;return 0}if(a.sourceIndex&&b.sourceIndex)return a.sourceIndex-b.sourceIndex;var c,d,e=[],f=[],g=a.parentNode,i=b.parentNode,j=g;if(g===i)return v(a,b);if(!g)return-1;if(!i)return 1;while(j)e.unshift(j),j=j.parentNode;j=i;while(j)f.unshift(j),j=j.parentNode;c=e.length,d=f.length;for(var k=0;k<c&&k<d;k++)if(e[k]!==f[k])return v(e[k],f[k]);return k===c?v(a,f[k],-1):v(e[k],b,1)},v=function(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}),function(){var a=c.createElement("div"),d="script"+(new Date).getTime(),e=c.documentElement;a.innerHTML="<a name='"+d+"'/>",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(o.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},o.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(o.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="<a href='#'></a>",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(o.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=m,b=c.createElement("div"),d="__sizzle__";b.innerHTML="<p class='TEST'></p>";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){m=function(b,e,f,g){e=e||c;if(!g&&!m.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.getElementsByTagName(b),f);if(h[2]&&o.find.CLASS&&e.getElementsByClassName)return s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return s([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return s([],f);if(i.id===h[3])return s([i],f)}try{return s(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var k=e,l=e.getAttribute("id"),n=l||d,p=e.parentNode,q=/^\s*[+~]/.test(b);l?n=n.replace(/'/g,"\\$&"):e.setAttribute("id",n),q&&p&&(e=e.parentNode);try{if(!q||p)return s(e.querySelectorAll("[id='"+n+"'] "+b),f)}catch(r){}finally{l||k.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)m[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return m(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="<div class='test e'></div><div class='test'></div>";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;o.order.splice(1,0,"CLASS"),o.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?m.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:m.contains=function(){return!1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var y=function(a,b,c){var d,e=[],f="",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace(o.match.PSEUDO,"");a=o.relative[a]?a+"*":a;for(var h=0,i=g.length;h<i;h++)m(a,g[h],e,c);return m.filter(f,e)};m.attr=f.attr,m.selectors.attrMap={},f.find=m,f.expr=m.selectors,f.expr[":"]=f.expr.filters,f.unique=m.uniqueSort,f.text=m.getText,f.isXMLDoc=m.isXML,f.contains=m.contains}();var L=/Until$/,M=/^(?:parents|prevUntil|prevAll)/,N=/,/,O=/^.[^:#\[\.,]*$/,P=Array.prototype.slice,Q=f.expr.match.globalPOS,R={children:!0,contents:!0,next:!0,prev:!0};f.fn.extend({find:function(a){var b=this,c,d;if(typeof a!="string")return f(a).filter(function(){for(c=0,d=b.length;c<d;c++)if(f.contains(b[c],this))return!0});var e=this.pushStack("","find",a),g,h,i;for(c=0,d=this.length;c<d;c++){g=e.length,f.find(a,this[c],e);if(c>0)for(h=g;h<e.length;h++)for(i=0;i<g;i++)if(e[i]===e[h]){e.splice(h--,1);break}}return e},has:function(a){var b=f(a);return this.filter(function(){for(var a=0,c=b.length;a<c;a++)if(f.contains(this,b[a]))return!0})},not:function(a){return this.pushStack(T(this,a,!1),"not",a)},filter:function(a){return this.pushStack(T(this,a,!0),"filter",a)},is:function(a){return!!a&&(typeof a=="string"?Q.test(a)?f(a,this.context).index(this[0])>=0:f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h=1;while(g&&g.ownerDocument&&g!==b){for(d=0;d<a.length;d++)f(g).is(a[d])&&c.push({selector:a[d],elem:g,level:h});g=g.parentNode,h++}return c}var i=Q.test(a)||typeof a!="string"?f(a,b||this.context):0;for(d=0,e=this.length;d<e;d++){g=this[d];while(g){if(i?i.index(g)>-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(S(c[0])||S(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c);L.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!R[a]?f.unique(e):e,(this.length>1||N.test(d))&&M.test(a)&&(e=e.reverse());return this.pushStack(e,a,P.call(arguments).join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var V="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",W=/ jQuery\d+="(?:\d+|null)"/g,X=/^\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Z=/<([\w:]+)/,$=/<tbody/i,_=/<|&#?\w+;/,ba=/<(?:script|style)/i,bb=/<(?:script|object|embed|option|style)/i,bc=new RegExp("<(?:"+V+")[\\s/>]","i"),bd=/checked\s*(?:[^=]|=\s*.checked.)/i,be=/\/(java|ecma)script/i,bf=/^\s*<!(?:\[CDATA\[|\-\-)/,bg={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]},bh=U(c);bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,"div<div>","</div>"]),f.fn.extend({text:function(a){return f.access(this,function(a){return a===b?f.text(this):this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a))},null,a,arguments.length)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=f.isFunction(a);return this.each(function(c){f(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f
|
4 |
+
.clean(arguments);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f.clean(arguments));return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){return f.access(this,function(a){var c=this[0]||{},d=0,e=this.length;if(a===b)return c.nodeType===1?c.innerHTML.replace(W,""):null;if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!bg[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1></$2>");try{for(;d<e;d++)c=this[d]||{},c.nodeType===1&&(f.cleanData(c.getElementsByTagName("*")),c.innerHTML=a);c=0}catch(g){}}c&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(a){if(this[0]&&this[0].parentNode){if(f.isFunction(a))return this.each(function(b){var c=f(this),d=c.html();c.replaceWith(a.call(this,b,d))});typeof a!="string"&&(a=f(a).detach());return this.each(function(){var b=this.nextSibling,c=this.parentNode;f(this).remove(),b?f(b).before(a):f(c).append(a)})}return this.length?this.pushStack(f(f.isFunction(a)?a():a),"replaceWith",a):this},detach:function(a){return this.remove(a,!0)},domManip:function(a,c,d){var e,g,h,i,j=a[0],k=[];if(!f.support.checkClone&&arguments.length===3&&typeof j=="string"&&bd.test(j))return this.each(function(){f(this).domManip(a,c,d,!0)});if(f.isFunction(j))return this.each(function(e){var g=f(this);a[0]=j.call(this,e,c?g.html():b),g.domManip(a,c,d)});if(this[0]){i=j&&j.parentNode,f.support.parentNode&&i&&i.nodeType===11&&i.childNodes.length===this.length?e={fragment:i}:e=f.buildFragment(a,this,k),h=e.fragment,h.childNodes.length===1?g=h=h.firstChild:g=h.firstChild;if(g){c=c&&f.nodeName(g,"tr");for(var l=0,m=this.length,n=m-1;l<m;l++)d.call(c?bi(this[l],g):this[l],e.cacheable||m>1&&l<n?f.clone(h,!0,!0):h)}k.length&&f.each(k,function(a,b){b.src?f.ajax({type:"GET",global:!1,url:b.src,async:!1,dataType:"script"}):f.globalEval((b.text||b.textContent||b.innerHTML||"").replace(bf,"/*$0*/")),b.parentNode&&b.parentNode.removeChild(b)})}return this}}),f.buildFragment=function(a,b,d){var e,g,h,i,j=a[0];b&&b[0]&&(i=b[0].ownerDocument||b[0]),i.createDocumentFragment||(i=c),a.length===1&&typeof j=="string"&&j.length<512&&i===c&&j.charAt(0)==="<"&&!bb.test(j)&&(f.support.checkClone||!bd.test(j))&&(f.support.html5Clone||!bc.test(j))&&(g=!0,h=f.fragments[j],h&&h!==1&&(e=h)),e||(e=i.createDocumentFragment(),f.clean(a,i,e,d)),g&&(f.fragments[j]=h?e:1);return{fragment:e,cacheable:g}},f.fragments={},f.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){f.fn[a]=function(c){var d=[],e=f(c),g=this.length===1&&this[0].parentNode;if(g&&g.nodeType===11&&g.childNodes.length===1&&e.length===1){e[b](this[0]);return this}for(var h=0,i=e.length;h<i;h++){var j=(h>0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d,e,g,h=f.support.html5Clone||f.isXMLDoc(a)||!bc.test("<"+a.nodeName+">")?a.cloneNode(!0):bo(a);if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bk(a,h),d=bl(a),e=bl(h);for(g=0;d[g];++g)e[g]&&bk(d[g],e[g])}if(b){bj(a,h);if(c){d=bl(a),e=bl(h);for(g=0;d[g];++g)bj(d[g],e[g])}}d=e=null;return h},clean:function(a,b,d,e){var g,h,i,j=[];b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);for(var k=0,l;(l=a[k])!=null;k++){typeof l=="number"&&(l+="");if(!l)continue;if(typeof l=="string")if(!_.test(l))l=b.createTextNode(l);else{l=l.replace(Y,"<$1></$2>");var m=(Z.exec(l)||["",""])[1].toLowerCase(),n=bg[m]||bg._default,o=n[0],p=b.createElement("div"),q=bh.childNodes,r;b===c?bh.appendChild(p):U(b).appendChild(p),p.innerHTML=n[1]+l+n[2];while(o--)p=p.lastChild;if(!f.support.tbody){var s=$.test(l),t=m==="table"&&!s?p.firstChild&&p.firstChild.childNodes:n[1]==="<table>"&&!s?p.childNodes:[];for(i=t.length-1;i>=0;--i)f.nodeName(t[i],"tbody")&&!t[i].childNodes.length&&t[i].parentNode.removeChild(t[i])}!f.support.leadingWhitespace&&X.test(l)&&p.insertBefore(b.createTextNode(X.exec(l)[0]),p.firstChild),l=p.childNodes,p&&(p.parentNode.removeChild(p),q.length>0&&(r=q[q.length-1],r&&r.parentNode&&r.parentNode.removeChild(r)))}var u;if(!f.support.appendChecked)if(l[0]&&typeof (u=l.length)=="number")for(i=0;i<u;i++)bn(l[i]);else bn(l);l.nodeType?j.push(l):j=f.merge(j,l)}if(d){g=function(a){return!a.type||be.test(a.type)};for(k=0;j[k];k++){h=j[k];if(e&&f.nodeName(h,"script")&&(!h.type||be.test(h.type)))e.push(h.parentNode?h.parentNode.removeChild(h):h);else{if(h.nodeType===1){var v=f.grep(h.getElementsByTagName("script"),g);j.splice.apply(j,[k+1,0].concat(v))}d.appendChild(h)}}}return j},cleanData:function(a){var b,c,d=f.cache,e=f.event.special,g=f.support.deleteExpando;for(var h=0,i;(i=a[h])!=null;h++){if(i.nodeName&&f.noData[i.nodeName.toLowerCase()])continue;c=i[f.expando];if(c){b=d[c];if(b&&b.events){for(var j in b.events)e[j]?f.event.remove(i,j):f.removeEvent(i,j,b.handle);b.handle&&(b.handle.elem=null)}g?delete i[f.expando]:i.removeAttribute&&i.removeAttribute(f.expando),delete d[c]}}}});var bp=/alpha\([^)]*\)/i,bq=/opacity=([^)]*)/,br=/([A-Z]|^ms)/g,bs=/^[\-+]?(?:\d*\.)?\d+$/i,bt=/^-?(?:\d*\.)?\d+(?!px)[^\d\s]+$/i,bu=/^([\-+])=([\-+.\de]+)/,bv=/^margin/,bw={position:"absolute",visibility:"hidden",display:"block"},bx=["Top","Right","Bottom","Left"],by,bz,bA;f.fn.css=function(a,c){return f.access(this,function(a,c,d){return d!==b?f.style(a,c,d):f.css(a,c)},a,c,arguments.length>1)},f.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=by(a,"opacity");return c===""?"1":c}return a.style.opacity}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":f.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!!a&&a.nodeType!==3&&a.nodeType!==8&&!!a.style){var g,h,i=f.camelCase(c),j=a.style,k=f.cssHooks[i];c=f.cssProps[i]||i;if(d===b){if(k&&"get"in k&&(g=k.get(a,!1,e))!==b)return g;return j[c]}h=typeof d,h==="string"&&(g=bu.exec(d))&&(d=+(g[1]+1)*+g[2]+parseFloat(f.css(a,c)),h="number");if(d==null||h==="number"&&isNaN(d))return;h==="number"&&!f.cssNumber[i]&&(d+="px");if(!k||!("set"in k)||(d=k.set(a,d))!==b)try{j[c]=d}catch(l){}}},css:function(a,c,d){var e,g;c=f.camelCase(c),g=f.cssHooks[c],c=f.cssProps[c]||c,c==="cssFloat"&&(c="float");if(g&&"get"in g&&(e=g.get(a,!0,d))!==b)return e;if(by)return by(a,c)},swap:function(a,b,c){var d={},e,f;for(f in b)d[f]=a.style[f],a.style[f]=b[f];e=c.call(a);for(f in b)a.style[f]=d[f];return e}}),f.curCSS=f.css,c.defaultView&&c.defaultView.getComputedStyle&&(bz=function(a,b){var c,d,e,g,h=a.style;b=b.replace(br,"-$1").toLowerCase(),(d=a.ownerDocument.defaultView)&&(e=d.getComputedStyle(a,null))&&(c=e.getPropertyValue(b),c===""&&!f.contains(a.ownerDocument.documentElement,a)&&(c=f.style(a,b))),!f.support.pixelMargin&&e&&bv.test(b)&&bt.test(c)&&(g=h.width,h.width=c,c=e.width,h.width=g);return c}),c.documentElement.currentStyle&&(bA=function(a,b){var c,d,e,f=a.currentStyle&&a.currentStyle[b],g=a.style;f==null&&g&&(e=g[b])&&(f=e),bt.test(f)&&(c=g.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),g.left=b==="fontSize"?"1em":f,f=g.pixelLeft+"px",g.left=c,d&&(a.runtimeStyle.left=d));return f===""?"auto":f}),by=bz||bA,f.each(["height","width"],function(a,b){f.cssHooks[b]={get:function(a,c,d){if(c)return a.offsetWidth!==0?bB(a,b,d):f.swap(a,bw,function(){return bB(a,b,d)})},set:function(a,b){return bs.test(b)?b+"px":b}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return bq.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNumeric(b)?"alpha(opacity="+b*100+")":"",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bp,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bp.test(g)?g.replace(bp,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){return f.swap(a,{display:"inline-block"},function(){return b?by(a,"margin-right"):a.style.marginRight})}})}),f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style&&a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)}),f.each({margin:"",padding:"",border:"Width"},function(a,b){f.cssHooks[a+b]={expand:function(c){var d,e=typeof c=="string"?c.split(" "):[c],f={};for(d=0;d<4;d++)f[a+bx[d]+b]=e[d]||e[d-2]||e[0];return f}}});var bC=/%20/g,bD=/\[\]$/,bE=/\r?\n/g,bF=/#.*$/,bG=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bH=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bI=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bJ=/^(?:GET|HEAD)$/,bK=/^\/\//,bL=/\?/,bM=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,bN=/^(?:select|textarea)/i,bO=/\s+/,bP=/([?&])_=[^&]*/,bQ=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bR=f.fn.load,bS={},bT={},bU,bV,bW=["*/"]+["*"];try{bU=e.href}catch(bX){bU=c.createElement("a"),bU.href="",bU=bU.href}bV=bQ.exec(bU.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bR)return bR.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("<div>").append(c.replace(bM,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bN.test(this.nodeName)||bH.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bE,"\r\n")}}):{name:b.name,value:c.replace(bE,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.on(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?b$(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),b$(a,b);return a},ajaxSettings:{url:bU,isLocal:bI.test(bV[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded; charset=UTF-8",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bW},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bY(bS),ajaxTransport:bY(bT),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?ca(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=cb(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.fireWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f.Callbacks("once memory"),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bG.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.add,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bF,"").replace(bK,bV[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bO),d.crossDomain==null&&(r=bQ.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bV[1]&&r[2]==bV[2]&&(r[3]||(r[1]==="http:"?80:443))==(bV[3]||(bV[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),bZ(bS,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bJ.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bL.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bP,"$1_="+x);d.url=y+(y===d.url?(bL.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bW+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=bZ(bT,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){if(s<2)w(-1,z);else throw z}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)b_(g,a[g],c,e);return d.join("&").replace(bC,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cc=f.now(),cd=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cc++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=typeof b.data=="string"&&/^application\/x\-www\-form\-urlencoded/.test(b.contentType);if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(cd.test(b.url)||e&&cd.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(cd,l),b.url===j&&(e&&(k=k.replace(cd,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var ce=a.ActiveXObject?function(){for(var a in cg)cg[a](0,1)}:!1,cf=0,cg;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ch()||ci()}:ch,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,ce&&delete cg[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n);try{m.text=h.responseText}catch(a){}try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cf,ce&&(cg||(cg={},f(a).unload(ce)),cg[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var cj={},ck,cl,cm=/^(?:toggle|show|hide)$/,cn=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,co,cp=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cq;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(ct("show",3),a,b,c);for(var g=0,h=this.length;g<h;g++)d=this[g],d.style&&(e=d.style.display,!f._data(d,"olddisplay")&&e==="none"&&(e=d.style.display=""),(e===""&&f.css(d,"display")==="none"||!f.contains(d.ownerDocument.documentElement,d))&&f._data(d,"olddisplay",cu(d.nodeName)));for(g=0;g<h;g++){d=this[g];if(d.style){e=d.style.display;if(e===""||e==="none")d.style.display=f._data(d,"olddisplay")||""}}return this},hide:function(a,b,c){if(a||a===0)return this.animate(ct("hide",3),a,b,c);var d,e,g=0,h=this.length;for(;g<h;g++)d=this[g],d.style&&(e=f.css(d,"display"),e!=="none"&&!f._data(d,"olddisplay")&&f._data(d,"olddisplay",e));for(g=0;g<h;g++)this[g].style&&(this[g].style.display="none");return this},_toggle:f.fn.toggle,toggle:function(a,b,c){var d=typeof a=="boolean";f.isFunction(a)&&f.isFunction(b)?this._toggle.apply(this,arguments):a==null||d?this.each(function(){var b=d?a:f(this).is(":hidden");f(this)[b?"show":"hide"]()}):this.animate(ct("toggle",3),a,b,c);return this},fadeTo:function(a,b,c,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){function g(){e.queue===!1&&f._mark(this);var b=f.extend({},e),c=this.nodeType===1,d=c&&f(this).is(":hidden"),g,h,i,j,k,l,m,n,o,p,q;b.animatedProperties={};for(i in a){g=f.camelCase(i),i!==g&&(a[g]=a[i],delete a[i]);if((k=f.cssHooks[g])&&"expand"in k){l=k.expand(a[g]),delete a[g];for(i in l)i in a||(a[i]=l[i])}}for(g in a){h=a[g],f.isArray(h)?(b.animatedProperties[g]=h[1],h=a[g]=h[0]):b.animatedProperties[g]=b.specialEasing&&b.specialEasing[g]||b.easing||"swing";if(h==="hide"&&d||h==="show"&&!d)return b.complete.call(this);c&&(g==="height"||g==="width")&&(b.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY],f.css(this,"display")==="inline"&&f.css(this,"float")==="none"&&(!f.support.inlineBlockNeedsLayout||cu(this.nodeName)==="inline"?this.style.display="inline-block":this.style.zoom=1))}b.overflow!=null&&(this.style.overflow="hidden");for(i in a)j=new f.fx(this,b,i),h=a[i],cm.test(h)?(q=f._data(this,"toggle"+i)||(h==="toggle"?d?"show":"hide":0),q?(f._data(this,"toggle"+i,q==="show"?"hide":"show"),j[q]()):j[h]()):(m=cn.exec(h),n=j.cur(),m?(o=parseFloat(m[2]),p=m[3]||(f.cssNumber[i]?"":"px"),p!=="px"&&(f.style(this,i,(o||1)+p),n=(o||1)/j.cur()*n,f.style(this,i,n+p)),m[1]&&(o=(m[1]==="-="?-1:1)*o+n),j.custom(n,o,p)):j.custom(n,h,""));return!0}var e=f.speed(b,c,d);if(f.isEmptyObject(a))return this.each(e.complete,[!1]);a=f.extend({},a);return e.queue===!1?this.each(g):this.queue(e.queue,g)},stop:function(a,c,d){typeof a!="string"&&(d=c,c=a,a=b),c&&a!==!1&&this.queue(a||"fx",[]);return this.each(function(){function h(a,b,c){var e=b[c];f.removeData(a,c,!0),e.stop(d)}var b,c=!1,e=f.timers,g=f._data(this);d||f._unmark(!0,this);if(a==null)for(b in g)g[b]&&g[b].stop&&b.indexOf(".run")===b.length-4&&h(this,g,b);else g[b=a+".run"]&&g[b].stop&&h(this,g,b);for(b=e.length;b--;)e[b].elem===this&&(a==null||e[b].queue===a)&&(d?e[b](!0):e[b].saveState(),c=!0,e.splice(b,1));(!d||!c)&&f.dequeue(this,a)})}}),f.each({slideDown:ct("show",1),slideUp:ct("hide",1),slideToggle:ct("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){f.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),f.extend({speed:function(a,b,c){var d=a&&typeof a=="object"?f.extend({},a):{complete:c||!c&&b||f.isFunction(a)&&a,duration:a,easing:c&&b||b&&!f.isFunction(b)&&b};d.duration=f.fx.off?0:typeof d.duration=="number"?d.duration:d.duration in f.fx.speeds?f.fx.speeds[d.duration]:f.fx.speeds._default;if(d.queue==null||d.queue===!0)d.queue="fx";d.old=d.complete,d.complete=function(a){f.isFunction(d.old)&&d.old.call(this),d.queue?f.dequeue(this,d.queue):a!==!1&&f._unmark(this)};return d},easing:{linear:function(a){return a},swing:function(a){return-Math.cos(a*Math.PI)/2+.5}},timers:[],fx:function(a,b,c){this.options=b,this.elem=a,this.prop=c,b.orig=b.orig||{}}}),f.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this),(f.fx.step[this.prop]||f.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a,b=f.css(this.elem,this.prop);return isNaN(a=parseFloat(b))?!b||b==="auto"?0:b:a},custom:function(a,c,d){function h(a){return e.step(a)}var e=this,g=f.fx;this.startTime=cq||cr(),this.end=c,this.now=this.start=a,this.pos=this.state=0,this.unit=d||this.unit||(f.cssNumber[this.prop]?"":"px"),h.queue=this.options.queue,h.elem=this.elem,h.saveState=function(){f._data(e.elem,"fxshow"+e.prop)===b&&(e.options.hide?f._data(e.elem,"fxshow"+e.prop,e.start):e.options.show&&f._data(e.elem,"fxshow"+e.prop,e.end))},h()&&f.timers.push(h)&&!co&&(co=setInterval(g.tick,g.interval))},show:function(){var a=f._data(this.elem,"fxshow"+this.prop);this.options.orig[this.prop]=a||f.style(this.elem,this.prop),this.options.show=!0,a!==b?this.custom(this.cur(),a):this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur()),f(this.elem).show()},hide:function(){this.options.orig[this.prop]=f._data(this.elem,"fxshow"+this.prop)||f.style(this.elem,this.prop),this.options.hide=!0,this.custom(this.cur(),0)},step:function(a){var b,c,d,e=cq||cr(),g=!0,h=this.elem,i=this.options;if(a||e>=i.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),i.animatedProperties[this.prop]=!0;for(b in i.animatedProperties)i.animatedProperties[b]!==!0&&(g=!1);if(g){i.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){h.style["overflow"+b]=i.overflow[a]}),i.hide&&f(h).hide();if(i.hide||i.show)for(b in i.animatedProperties)f.style(h,b,i.orig[b]),f.removeData(h,"fxshow"+b,!0),f.removeData(h,"toggle"+b,!0);d=i.complete,d&&(i.complete=!1,d.call(h))}return!1}i.duration==Infinity?this.now=e:(c=e-this.startTime,this.state=c/i.duration,this.pos=f.easing[i.animatedProperties[this.prop]](this.state,c,0,1,i.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){var a,b=f.timers,c=0;for(;c<b.length;c++)a=b[c],!a()&&b[c]===a&&b.splice(c--,1);b.length||f.fx.stop()},interval:13,stop:function(){clearInterval(co),co=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){f.style(a.elem,"opacity",a.now)},_default:function(a){a.elem.style&&a.elem.style[a.prop]!=null?a.elem.style[a.prop]=a.now+a.unit:a.elem[a.prop]=a.now}}}),f.each(cp.concat.apply([],cp),function(a,b){b.indexOf("margin")&&(f.fx.step[b]=function(a){f.style(a.elem,b,Math.max(0,a.now)+a.unit)})}),f.expr&&f.expr.filters&&(f.expr.filters.animated=function(a){return f.grep(f.timers,function(b){return a===b.elem}).length});var cv,cw=/^t(?:able|d|h)$/i,cx=/^(?:body|html)$/i;"getBoundingClientRect"in c.documentElement?cv=function(a,b,c,d){try{d=a.getBoundingClientRect()}catch(e){}if(!d||!f.contains(c,a))return d?{top:d.top,left:d.left}:{top:0,left:0};var g=b.body,h=cy(b),i=c.clientTop||g.clientTop||0,j=c.clientLeft||g.clientLeft||0,k=h.pageYOffset||f.support.boxModel&&c.scrollTop||g.scrollTop,l=h.pageXOffset||f.support.boxModel&&c.scrollLeft||g.scrollLeft,m=d.top+k-i,n=d.left+l-j;return{top:m,left:n}}:cv=function(a,b,c){var d,e=a.offsetParent,g=a,h=b.body,i=b.defaultView,j=i?i.getComputedStyle(a,null):a.currentStyle,k=a.offsetTop,l=a.offsetLeft;while((a=a.parentNode)&&a!==h&&a!==c){if(f.support.fixedPosition&&j.position==="fixed")break;d=i?i.getComputedStyle(a,null):a.currentStyle,k-=a.scrollTop,l-=a.scrollLeft,a===e&&(k+=a.offsetTop,l+=a.offsetLeft,f.support.doesNotAddBorder&&(!f.support.doesAddBorderForTableAndCells||!cw.test(a.nodeName))&&(k+=parseFloat(d.borderTopWidth)||0,l+=parseFloat(d.borderLeftWidth)||0),g=e,e=a.offsetParent),f.support.subtractsBorderForOverflowNotVisible&&d.overflow!=="visible"&&(k+=parseFloat(d.borderTopWidth)||0,l+=parseFloat(d.borderLeftWidth)||0),j=d}if(j.position==="relative"||j.position==="static")k+=h.offsetTop,l+=h.offsetLeft;f.support.fixedPosition&&j.position==="fixed"&&(k+=Math.max(c.scrollTop,h.scrollTop),l+=Math.max(c.scrollLeft,h.scrollLeft));return{top:k,left:l}},f.fn.offset=function(a){if(arguments.length)return a===b?this:this.each(function(b){f.offset.setOffset(this,a,b)});var c=this[0],d=c&&c.ownerDocument;if(!d)return null;if(c===d.body)return f.offset.bodyOffset(c);return cv(c,d,d.documentElement)},f.offset={bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;f.support.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(f.css(a,"marginTop"))||0,c+=parseFloat(f.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var d=f.css(a,"position");d==="static"&&(a.style.position="relative");var e=f(a),g=e.offset(),h=f.css(a,"top"),i=f.css(a,"left"),j=(d==="absolute"||d==="fixed")&&f.inArray("auto",[h,i])>-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cx.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,c){var d=/Y/.test(c);f.fn[a]=function(e){return f.access(this,function(a,e,g){var h=cy(a);if(g===b)return h?c in h?h[c]:f.support.boxModel&&h.document.documentElement[e]||h.document.body[e]:a[e];h?h.scrollTo(d?f(h).scrollLeft():g,d?g:f(h).scrollTop()):a[e]=g},a,e,arguments.length,null)}}),f.each({Height:"height",Width:"width"},function(a,c){var d="client"+a,e="scroll"+a,g="offset"+a;f.fn["inner"+a]=function(){var a=this[0];return a?a.style?parseFloat(f.css(a,c,"padding")):this[c]():null},f.fn["outer"+a]=function(a){var b=this[0];return b?b.style?parseFloat(f.css(b,c,a?"margin":"border")):this[c]():null},f.fn[c]=function(a){return f.access(this,function(a,c,h){var i,j,k,l;if(f.isWindow(a)){i=a.document,j=i.documentElement[d];return f.support.boxModel&&j||i.body&&i.body[d]||j}if(a.nodeType===9){i=a.documentElement;if(i[d]>=i[e])return i[d];return Math.max(a.body[e],i[e],a.body[g],i[g])}if(h===b){k=f.css(a,c),l=parseFloat(k);return f.isNumeric(l)?l:k}f(a).css(c,h)},c,a,arguments.length,null)}}),a.jQuery=a.$=f,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return f})})(window);
|
backupwordpress/assets/fancyBox/lib/jquery.mousewheel-3.0.6.pack.js
ADDED
@@ -0,0 +1,13 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*! Copyright (c) 2011 Brandon Aaron (http://brandonaaron.net)
|
2 |
+
* Licensed under the MIT License (LICENSE.txt).
|
3 |
+
*
|
4 |
+
* Thanks to: http://adomas.org/javascript-mouse-wheel/ for some pointers.
|
5 |
+
* Thanks to: Mathias Bank(http://www.mathias-bank.de) for a scope bug fix.
|
6 |
+
* Thanks to: Seamus Leahy for adding deltaX and deltaY
|
7 |
+
*
|
8 |
+
* Version: 3.0.6
|
9 |
+
*
|
10 |
+
* Requires: 1.2.2+
|
11 |
+
*/
|
12 |
+
(function(d){function e(a){var b=a||window.event,c=[].slice.call(arguments,1),f=0,e=0,g=0,a=d.event.fix(b);a.type="mousewheel";b.wheelDelta&&(f=b.wheelDelta/120);b.detail&&(f=-b.detail/3);g=f;b.axis!==void 0&&b.axis===b.HORIZONTAL_AXIS&&(g=0,e=-1*f);b.wheelDeltaY!==void 0&&(g=b.wheelDeltaY/120);b.wheelDeltaX!==void 0&&(e=-1*b.wheelDeltaX/120);c.unshift(a,f,e,g);return(d.event.dispatch||d.event.handle).apply(this,c)}var c=["DOMMouseScroll","mousewheel"];if(d.event.fixHooks)for(var h=c.length;h;)d.event.fixHooks[c[--h]]=
|
13 |
+
d.event.mouseHooks;d.event.special.mousewheel={setup:function(){if(this.addEventListener)for(var a=c.length;a;)this.addEventListener(c[--a],e,false);else this.onmousewheel=e},teardown:function(){if(this.removeEventListener)for(var a=c.length;a;)this.removeEventListener(c[--a],e,false);else this.onmousewheel=null}};d.fn.extend({mousewheel:function(a){return a?this.bind("mousewheel",a):this.trigger("mousewheel")},unmousewheel:function(a){return this.unbind("mousewheel",a)}})})(jQuery);
|
backupwordpress/assets/fancyBox/source/blank.gif
ADDED
Binary file
|
backupwordpress/assets/fancyBox/source/fancybox_loading.gif
ADDED
Binary file
|
backupwordpress/assets/fancyBox/source/fancybox_sprite.png
ADDED
Binary file
|
backupwordpress/assets/fancyBox/source/helpers/fancybox_buttons.png
ADDED
Binary file
|
backupwordpress/assets/fancyBox/source/helpers/jquery.fancybox-buttons.css
ADDED
@@ -0,0 +1,85 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
#fancybox-buttons {
|
2 |
+
position: fixed;
|
3 |
+
left: 0;
|
4 |
+
width: 100%;
|
5 |
+
z-index: 1005;
|
6 |
+
}
|
7 |
+
|
8 |
+
#fancybox-buttons.top {
|
9 |
+
top: 10px;
|
10 |
+
}
|
11 |
+
|
12 |
+
#fancybox-buttons.bottom {
|
13 |
+
bottom: 10px;
|
14 |
+
}
|
15 |
+
|
16 |
+
#fancybox-buttons ul {
|
17 |
+
display: block;
|
18 |
+
width: 170px;
|
19 |
+
height: 30px;
|
20 |
+
margin: 0 auto;
|
21 |
+
padding: 0;
|
22 |
+
list-style: none;
|
23 |
+
background: #111;
|
24 |
+
-webkit-box-shadow: 0 1px 3px #000,0 0 0 1px rgba(0,0,0,.7),inset 0 0 0 1px rgba(255,255,255,.05);
|
25 |
+
-moz-box-shadow: 0 1px 3px #000,0 0 0 1px rgba(0,0,0,.7),inset 0 0 0 1px rgba(255,255,255,.05);
|
26 |
+
background: #111 -webkit-gradient(linear,0% 0%,0% 100%,from(rgba(255,255,255,.2)),color-stop(.5,rgba(255,255,255,.15)),color-stop(.5,rgba(255,255,255,.1)),to(rgba(255,255,255,.15)));
|
27 |
+
background: #111 -moz-linear-gradient(top,rgba(255,255,255,.2) 0%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.1) 50%,rgba(255,255,255,.15) 100%);
|
28 |
+
border-radius: 3px;
|
29 |
+
}
|
30 |
+
|
31 |
+
#fancybox-buttons ul li {
|
32 |
+
float: left;
|
33 |
+
margin: 0;
|
34 |
+
padding: 0;
|
35 |
+
}
|
36 |
+
|
37 |
+
#fancybox-buttons a {
|
38 |
+
display: block;
|
39 |
+
width: 30px;
|
40 |
+
height: 30px;
|
41 |
+
text-indent: -9999px;
|
42 |
+
background-image: url('fancybox_buttons.png');
|
43 |
+
background-repeat: no-repeat;
|
44 |
+
outline: none;
|
45 |
+
}
|
46 |
+
|
47 |
+
#fancybox-buttons a.btnPrev {
|
48 |
+
width: 32px;
|
49 |
+
background-position: 6px 0;
|
50 |
+
}
|
51 |
+
|
52 |
+
#fancybox-buttons a.btnNext {
|
53 |
+
background-position: -33px 0;
|
54 |
+
border-right: 1px solid #3e3e3e;
|
55 |
+
}
|
56 |
+
|
57 |
+
#fancybox-buttons a.btnPlay {
|
58 |
+
background-position: 0 -30px;
|
59 |
+
}
|
60 |
+
|
61 |
+
#fancybox-buttons a.btnPlayOn {
|
62 |
+
background-position: -30px -30px;
|
63 |
+
}
|
64 |
+
|
65 |
+
#fancybox-buttons a.btnToggle {
|
66 |
+
background-position: 3px -60px;
|
67 |
+
border-left: 1px solid #111;
|
68 |
+
border-right: 1px solid #3e3e3e;
|
69 |
+
width: 35px
|
70 |
+
}
|
71 |
+
|
72 |
+
#fancybox-buttons a.btnToggleOn {
|
73 |
+
background-position: -27px -60px;
|
74 |
+
}
|
75 |
+
|
76 |
+
#fancybox-buttons a.btnClose {
|
77 |
+
border-left: 1px solid #111;
|
78 |
+
width: 38px;
|
79 |
+
background-position: -57px 0px;
|
80 |
+
}
|
81 |
+
|
82 |
+
#fancybox-buttons a.btnDisabled {
|
83 |
+
opacity : 0.5;
|
84 |
+
cursor: default;
|
85 |
+
}
|
backupwordpress/assets/fancyBox/source/helpers/jquery.fancybox-buttons.js
ADDED
@@ -0,0 +1,115 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* Buttons helper for fancyBox
|
3 |
+
* version: 1.0.2
|
4 |
+
* @requires fancyBox v2.0 or later
|
5 |
+
*
|
6 |
+
* Usage:
|
7 |
+
* $(".fancybox").fancybox({
|
8 |
+
* buttons: {
|
9 |
+
* position : 'top'
|
10 |
+
* }
|
11 |
+
* });
|
12 |
+
*
|
13 |
+
* Options:
|
14 |
+
* tpl - HTML template
|
15 |
+
* position - 'top' or 'bottom'
|
16 |
+
*
|
17 |
+
*/
|
18 |
+
(function ($) {
|
19 |
+
//Shortcut for fancyBox object
|
20 |
+
var F = $.fancybox;
|
21 |
+
|
22 |
+
//Add helper object
|
23 |
+
F.helpers.buttons = {
|
24 |
+
tpl: '<div id="fancybox-buttons"><ul><li><a class="btnPrev" title="Previous" href="javascript:;"></a></li><li><a class="btnPlay" title="Start slideshow" href="javascript:;"></a></li><li><a class="btnNext" title="Next" href="javascript:;"></a></li><li><a class="btnToggle" title="Toggle size" href="javascript:;"></a></li><li><a class="btnClose" title="Close" href="javascript:jQuery.fancybox.close();"></a></li></ul></div>',
|
25 |
+
list: null,
|
26 |
+
buttons: {},
|
27 |
+
|
28 |
+
update: function () {
|
29 |
+
var toggle = this.buttons.toggle.removeClass('btnDisabled btnToggleOn');
|
30 |
+
|
31 |
+
//Size toggle button
|
32 |
+
if (F.current.canShrink) {
|
33 |
+
toggle.addClass('btnToggleOn');
|
34 |
+
|
35 |
+
} else if (!F.current.canExpand) {
|
36 |
+
toggle.addClass('btnDisabled');
|
37 |
+
}
|
38 |
+
},
|
39 |
+
|
40 |
+
beforeLoad: function (opts) {
|
41 |
+
//Remove self if gallery do not have at least two items
|
42 |
+
if (F.group.length < 2) {
|
43 |
+
F.coming.helpers.buttons = false;
|
44 |
+
F.coming.closeBtn = true;
|
45 |
+
|
46 |
+
return;
|
47 |
+
}
|
48 |
+
|
49 |
+
//Increase top margin to give space for buttons
|
50 |
+
F.coming.margin[ opts.position === 'bottom' ? 2 : 0 ] += 30;
|
51 |
+
},
|
52 |
+
|
53 |
+
onPlayStart: function () {
|
54 |
+
if (this.list) {
|
55 |
+
this.buttons.play.attr('title', 'Pause slideshow').addClass('btnPlayOn');
|
56 |
+
}
|
57 |
+
},
|
58 |
+
|
59 |
+
onPlayEnd: function () {
|
60 |
+
if (this.list) {
|
61 |
+
this.buttons.play.attr('title', 'Start slideshow').removeClass('btnPlayOn');
|
62 |
+
}
|
63 |
+
},
|
64 |
+
|
65 |
+
afterShow: function (opts) {
|
66 |
+
var buttons;
|
67 |
+
|
68 |
+
if (!this.list) {
|
69 |
+
this.list = $(opts.tpl || this.tpl).addClass(opts.position || 'top').appendTo('body');
|
70 |
+
|
71 |
+
this.buttons = {
|
72 |
+
prev : this.list.find('.btnPrev').click( F.prev ),
|
73 |
+
next : this.list.find('.btnNext').click( F.next ),
|
74 |
+
play : this.list.find('.btnPlay').click( F.play ),
|
75 |
+
toggle : this.list.find('.btnToggle').click( F.toggle )
|
76 |
+
}
|
77 |
+
}
|
78 |
+
|
79 |
+
buttons = this.buttons;
|
80 |
+
|
81 |
+
//Prev
|
82 |
+
if (F.current.index > 0 || F.current.loop) {
|
83 |
+
buttons.prev.removeClass('btnDisabled');
|
84 |
+
} else {
|
85 |
+
buttons.prev.addClass('btnDisabled');
|
86 |
+
}
|
87 |
+
|
88 |
+
//Next / Play
|
89 |
+
if (F.current.loop || F.current.index < F.group.length - 1) {
|
90 |
+
buttons.next.removeClass('btnDisabled');
|
91 |
+
buttons.play.removeClass('btnDisabled');
|
92 |
+
|
93 |
+
} else {
|
94 |
+
buttons.next.addClass('btnDisabled');
|
95 |
+
buttons.play.addClass('btnDisabled');
|
96 |
+
}
|
97 |
+
|
98 |
+
this.update();
|
99 |
+
},
|
100 |
+
|
101 |
+
onUpdate: function () {
|
102 |
+
this.update();
|
103 |
+
},
|
104 |
+
|
105 |
+
beforeClose: function () {
|
106 |
+
if (this.list) {
|
107 |
+
this.list.remove();
|
108 |
+
}
|
109 |
+
|
110 |
+
this.list = null;
|
111 |
+
this.buttons = {};
|
112 |
+
}
|
113 |
+
};
|
114 |
+
|
115 |
+
}(jQuery));
|
backupwordpress/assets/fancyBox/source/helpers/jquery.fancybox-media.js
ADDED
@@ -0,0 +1,86 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* Media helper for fancyBox
|
3 |
+
* version: 1.0.0
|
4 |
+
* @requires fancyBox v2.0 or later
|
5 |
+
*
|
6 |
+
* Usage:
|
7 |
+
* $(".fancybox").fancybox({
|
8 |
+
* media: {}
|
9 |
+
* });
|
10 |
+
*
|
11 |
+
* Supports:
|
12 |
+
* Youtube
|
13 |
+
* http://www.youtube.com/watch?v=opj24KnzrWo
|
14 |
+
* http://youtu.be/opj24KnzrWo
|
15 |
+
* Vimeo
|
16 |
+
* http://vimeo.com/25634903
|
17 |
+
* Metacafe
|
18 |
+
* http://www.metacafe.com/watch/7635964/dr_seuss_the_lorax_movie_trailer/
|
19 |
+
* http://www.metacafe.com/watch/7635964/
|
20 |
+
* Dailymotion
|
21 |
+
* http://www.dailymotion.com/video/xoytqh_dr-seuss-the-lorax-premiere_people
|
22 |
+
* Twitvid
|
23 |
+
* http://twitvid.com/QY7MD
|
24 |
+
* Twitpic
|
25 |
+
* http://twitpic.com/7p93st
|
26 |
+
* Instagram
|
27 |
+
* http://instagr.am/p/IejkuUGxQn/
|
28 |
+
* http://instagram.com/p/IejkuUGxQn/
|
29 |
+
* Google maps
|
30 |
+
* http://maps.google.com/maps?q=Eiffel+Tower,+Avenue+Gustave+Eiffel,+Paris,+France&t=h&z=17
|
31 |
+
* http://maps.google.com/?ll=48.857995,2.294297&spn=0.007666,0.021136&t=m&z=16
|
32 |
+
* http://maps.google.com/?ll=48.859463,2.292626&spn=0.000965,0.002642&t=m&z=19&layer=c&cbll=48.859524,2.292532&panoid=YJ0lq28OOy3VT2IqIuVY0g&cbp=12,151.58,,0,-15.56
|
33 |
+
*/
|
34 |
+
(function ($) {
|
35 |
+
//Shortcut for fancyBox object
|
36 |
+
var F = $.fancybox;
|
37 |
+
|
38 |
+
//Add helper object
|
39 |
+
F.helpers.media = {
|
40 |
+
beforeLoad : function(opts, obj) {
|
41 |
+
var href = obj.href || '',
|
42 |
+
type = false,
|
43 |
+
rez;
|
44 |
+
|
45 |
+
if ((rez = href.match(/(youtube\.com|youtu\.be)\/(v\/|u\/|embed\/|watch\?v=)?([^#\&\?]*).*/i))) {
|
46 |
+
href = '//www.youtube.com/embed/' + rez[3] + '?autoplay=1&fs=1&rel=0&modestbranding=1&enablejsapi=1';
|
47 |
+
type = 'iframe';
|
48 |
+
|
49 |
+
} else if ((rez = href.match(/vimeo.com\/(\d+)\/?(.*)/))) {
|
50 |
+
href = '//player.vimeo.com/video/' + rez[1] + '?hd=1&autoplay=1&show_title=1&show_byline=1&show_portrait=0&color=&fullscreen=1';
|
51 |
+
type = 'iframe';
|
52 |
+
|
53 |
+
} else if ((rez = href.match(/metacafe.com\/watch\/(\d+)\/?(.*)/))) {
|
54 |
+
href = '//www.metacafe.com/fplayer/' + rez[1] + '/.swf?playerVars=autoPlay=yes';
|
55 |
+
type = 'swf';
|
56 |
+
|
57 |
+
} else if ((rez = href.match(/dailymotion.com\/video\/(.*)\/?(.*)/))) {
|
58 |
+
href = '//www.dailymotion.com/swf/video/' + rez[1] + '?additionalInfos=0&autoStart=1';
|
59 |
+
type = 'swf';
|
60 |
+
|
61 |
+
} else if ((rez = href.match(/twitvid\.com\/([a-zA-Z0-9_\-\?\=]+)/i))) {
|
62 |
+
href = '//www.twitvid.com/embed.php?autoplay=0&guid=' + rez[1];
|
63 |
+
type = 'iframe';
|
64 |
+
|
65 |
+
} else if ((rez = href.match(/twitpic\.com\/(?!(?:place|photos|events)\/)([a-zA-Z0-9\?\=\-]+)/i))) {
|
66 |
+
href = '//twitpic.com/show/full/' + rez[1];
|
67 |
+
type = 'image';
|
68 |
+
|
69 |
+
} else if ((rez = href.match(/(instagr\.am|instagram\.com)\/p\/([a-zA-Z0-9_\-]+)\/?/i))) {
|
70 |
+
href = '//' + rez[1] + '/p/' + rez[2] + '/media/?size=l';
|
71 |
+
type = 'image';
|
72 |
+
|
73 |
+
} else if ((rez = href.match(/maps\.google\.com\/(\?ll=|maps\/?\?q=)(.*)/i))) {
|
74 |
+
href = '//maps.google.com/' + rez[1] + '' + rez[2] + '&output=' + (rez[2].indexOf('layer=c') ? 'svembed' : 'embed');
|
75 |
+
type = 'iframe';
|
76 |
+
}
|
77 |
+
|
78 |
+
if (type) {
|
79 |
+
obj.href = href;
|
80 |
+
obj.type = type;
|
81 |
+
obj.autoSize = false;
|
82 |
+
}
|
83 |
+
}
|
84 |
+
}
|
85 |
+
|
86 |
+
}(jQuery));
|
backupwordpress/assets/fancyBox/source/helpers/jquery.fancybox-thumbs.css
ADDED
@@ -0,0 +1,54 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
#fancybox-thumbs {
|
2 |
+
position: fixed;
|
3 |
+
left: 0px;
|
4 |
+
width: 100%;
|
5 |
+
overflow: hidden;
|
6 |
+
z-index: 1005;
|
7 |
+
}
|
8 |
+
|
9 |
+
#fancybox-thumbs.bottom {
|
10 |
+
bottom: 2px;
|
11 |
+
}
|
12 |
+
|
13 |
+
#fancybox-thumbs.top {
|
14 |
+
top: 2px;
|
15 |
+
}
|
16 |
+
|
17 |
+
#fancybox-thumbs ul {
|
18 |
+
position: relative;
|
19 |
+
list-style: none;
|
20 |
+
margin: 0;
|
21 |
+
padding: 0;
|
22 |
+
}
|
23 |
+
|
24 |
+
#fancybox-thumbs ul li {
|
25 |
+
float: left;
|
26 |
+
padding: 1px;
|
27 |
+
opacity: 0.5;
|
28 |
+
}
|
29 |
+
|
30 |
+
#fancybox-thumbs ul li.active {
|
31 |
+
opacity: 0.75;
|
32 |
+
padding: 0;
|
33 |
+
border: 1px solid #fff;
|
34 |
+
}
|
35 |
+
|
36 |
+
#fancybox-thumbs ul li:hover {
|
37 |
+
opacity: 1;
|
38 |
+
}
|
39 |
+
|
40 |
+
#fancybox-thumbs ul li a {
|
41 |
+
display: block;
|
42 |
+
position: relative;
|
43 |
+
overflow: hidden;
|
44 |
+
border: 1px solid #222;
|
45 |
+
background: #111;
|
46 |
+
outline: none;
|
47 |
+
}
|
48 |
+
|
49 |
+
#fancybox-thumbs ul li img {
|
50 |
+
display: block;
|
51 |
+
position: relative;
|
52 |
+
border: 0;
|
53 |
+
padding: 0;
|
54 |
+
}
|
backupwordpress/assets/fancyBox/source/helpers/jquery.fancybox-thumbs.js
ADDED
@@ -0,0 +1,157 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* Thumbnail helper for fancyBox
|
3 |
+
* version: 1.0.4
|
4 |
+
* @requires fancyBox v2.0 or later
|
5 |
+
*
|
6 |
+
* Usage:
|
7 |
+
* $(".fancybox").fancybox({
|
8 |
+
* thumbs: {
|
9 |
+
* width : 50,
|
10 |
+
* height : 50
|
11 |
+
* }
|
12 |
+
* });
|
13 |
+
*
|
14 |
+
* Options:
|
15 |
+
* width - thumbnail width
|
16 |
+
* height - thumbnail height
|
17 |
+
* source - function to obtain the URL of the thumbnail image
|
18 |
+
* position - 'top' or 'bottom'
|
19 |
+
*
|
20 |
+
*/
|
21 |
+
(function ($) {
|
22 |
+
//Shortcut for fancyBox object
|
23 |
+
var F = $.fancybox;
|
24 |
+
|
25 |
+
//Add helper object
|
26 |
+
F.helpers.thumbs = {
|
27 |
+
wrap: null,
|
28 |
+
list: null,
|
29 |
+
width: 0,
|
30 |
+
|
31 |
+
//Default function to obtain the URL of the thumbnail image
|
32 |
+
source: function (el) {
|
33 |
+
var img;
|
34 |
+
|
35 |
+
if ($.type(el) === 'string') {
|
36 |
+
return el;
|
37 |
+
}
|
38 |
+
|
39 |
+
img = $(el).find('img');
|
40 |
+
|
41 |
+
return img.length ? img.attr('src') : el.href;
|
42 |
+
},
|
43 |
+
|
44 |
+
init: function (opts) {
|
45 |
+
var that = this,
|
46 |
+
list,
|
47 |
+
thumbWidth = opts.width || 50,
|
48 |
+
thumbHeight = opts.height || 50,
|
49 |
+
thumbSource = opts.source || this.source;
|
50 |
+
|
51 |
+
//Build list structure
|
52 |
+
list = '';
|
53 |
+
|
54 |
+
for (var n = 0; n < F.group.length; n++) {
|
55 |
+
list += '<li><a style="width:' + thumbWidth + 'px;height:' + thumbHeight + 'px;" href="javascript:jQuery.fancybox.jumpto(' + n + ');"></a></li>';
|
56 |
+
}
|
57 |
+
|
58 |
+
this.wrap = $('<div id="fancybox-thumbs"></div>').addClass(opts.position || 'bottom').appendTo('body');
|
59 |
+
this.list = $('<ul>' + list + '</ul>').appendTo(this.wrap);
|
60 |
+
|
61 |
+
//Load each thumbnail
|
62 |
+
$.each(F.group, function (i) {
|
63 |
+
$("<img />").load(function () {
|
64 |
+
var width = this.width,
|
65 |
+
height = this.height,
|
66 |
+
widthRatio, heightRatio, parent;
|
67 |
+
|
68 |
+
if (!that.list || !width || !height) {
|
69 |
+
return;
|
70 |
+
}
|
71 |
+
|
72 |
+
//Calculate thumbnail width/height and center it
|
73 |
+
widthRatio = width / thumbWidth;
|
74 |
+
heightRatio = height / thumbHeight;
|
75 |
+
parent = that.list.children().eq(i).find('a');
|
76 |
+
|
77 |
+
if (widthRatio >= 1 && heightRatio >= 1) {
|
78 |
+
if (widthRatio > heightRatio) {
|
79 |
+
width = Math.floor(width / heightRatio);
|
80 |
+
height = thumbHeight;
|
81 |
+
|
82 |
+
} else {
|
83 |
+
width = thumbWidth;
|
84 |
+
height = Math.floor(height / widthRatio);
|
85 |
+
}
|
86 |
+
}
|
87 |
+
|
88 |
+
$(this).css({
|
89 |
+
width: width,
|
90 |
+
height: height,
|
91 |
+
top: Math.floor(thumbHeight / 2 - height / 2),
|
92 |
+
left: Math.floor(thumbWidth / 2 - width / 2)
|
93 |
+
});
|
94 |
+
|
95 |
+
parent.width(thumbWidth).height(thumbHeight);
|
96 |
+
|
97 |
+
$(this).hide().appendTo(parent).fadeIn(300);
|
98 |
+
|
99 |
+
}).attr('src', thumbSource( F.group[ i ] ));
|
100 |
+
});
|
101 |
+
|
102 |
+
//Set initial width
|
103 |
+
this.width = this.list.children().eq(0).outerWidth(true);
|
104 |
+
|
105 |
+
this.list.width(this.width * (F.group.length + 1)).css('left', Math.floor($(window).width() * 0.5 - (F.current.index * this.width + this.width * 0.5)));
|
106 |
+
},
|
107 |
+
|
108 |
+
//Center list
|
109 |
+
update: function (opts) {
|
110 |
+
if (this.list) {
|
111 |
+
this.list.stop(true).animate({
|
112 |
+
'left': Math.floor($(window).width() * 0.5 - (F.current.index * this.width + this.width * 0.5))
|
113 |
+
}, 150);
|
114 |
+
}
|
115 |
+
},
|
116 |
+
|
117 |
+
beforeLoad: function (opts) {
|
118 |
+
//Remove self if gallery do not have at least two items
|
119 |
+
if (F.group.length < 2) {
|
120 |
+
F.coming.helpers.thumbs = false;
|
121 |
+
|
122 |
+
return;
|
123 |
+
}
|
124 |
+
|
125 |
+
//Increase bottom margin to give space for thumbs
|
126 |
+
F.coming.margin[ opts.position === 'top' ? 0 : 2 ] = opts.height + 30;
|
127 |
+
},
|
128 |
+
|
129 |
+
afterShow: function (opts) {
|
130 |
+
//Check if exists and create or update list
|
131 |
+
if (this.list) {
|
132 |
+
this.update(opts);
|
133 |
+
|
134 |
+
} else {
|
135 |
+
this.init(opts);
|
136 |
+
}
|
137 |
+
|
138 |
+
//Set active element
|
139 |
+
this.list.children().removeClass('active').eq(F.current.index).addClass('active');
|
140 |
+
},
|
141 |
+
|
142 |
+
onUpdate: function () {
|
143 |
+
this.update();
|
144 |
+
},
|
145 |
+
|
146 |
+
beforeClose: function () {
|
147 |
+
if (this.wrap) {
|
148 |
+
this.wrap.remove();
|
149 |
+
}
|
150 |
+
|
151 |
+
this.wrap = null;
|
152 |
+
this.list = null;
|
153 |
+
this.width = 0;
|
154 |
+
}
|
155 |
+
}
|
156 |
+
|
157 |
+
}(jQuery));
|
backupwordpress/assets/fancyBox/source/jquery.fancybox.css
ADDED
@@ -0,0 +1,226 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*! fancyBox v2.0.5 fancyapps.com | fancyapps.com/fancybox/#license */
|
2 |
+
.fancybox-tmp iframe, .fancybox-tmp object {
|
3 |
+
vertical-align: top;
|
4 |
+
padding: 0;
|
5 |
+
margin: 0;
|
6 |
+
}
|
7 |
+
|
8 |
+
.fancybox-wrap {
|
9 |
+
position: absolute;
|
10 |
+
top: 0;
|
11 |
+
left: 0;
|
12 |
+
z-index: 1002;
|
13 |
+
}
|
14 |
+
|
15 |
+
.fancybox-outer {
|
16 |
+
position: relative;
|
17 |
+
padding: 0;
|
18 |
+
margin: 0;
|
19 |
+
background: #f9f9f9;
|
20 |
+
color: #444;
|
21 |
+
text-shadow: none;
|
22 |
+
-webkit-border-radius: 4px;
|
23 |
+
-moz-border-radius: 4px;
|
24 |
+
border-radius: 4px;
|
25 |
+
}
|
26 |
+
|
27 |
+
.fancybox-opened {
|
28 |
+
z-index: 1003;
|
29 |
+
}
|
30 |
+
|
31 |
+
.fancybox-opened .fancybox-outer {
|
32 |
+
-webkit-box-shadow: 0 10px 25px rgba(0, 0, 0, 0.5);
|
33 |
+
-moz-box-shadow: 0 10px 25px rgba(0, 0, 0, 0.5);
|
34 |
+
box-shadow: 0 10px 25px rgba(0, 0, 0, 0.5);
|
35 |
+
}
|
36 |
+
|
37 |
+
.fancybox-inner {
|
38 |
+
width: 100%;
|
39 |
+
height: 100%;
|
40 |
+
padding: 0;
|
41 |
+
margin: 0;
|
42 |
+
position: relative;
|
43 |
+
outline: none;
|
44 |
+
overflow: hidden;
|
45 |
+
}
|
46 |
+
|
47 |
+
.fancybox-type-iframe .fancybox-inner {
|
48 |
+
-webkit-overflow-scrolling: touch
|
49 |
+
}
|
50 |
+
|
51 |
+
.fancybox-error {
|
52 |
+
color: #444;
|
53 |
+
font: 14px/20px "Helvetica Neue",Helvetica,Arial,sans-serif;
|
54 |
+
margin: 0;
|
55 |
+
padding: 10px;
|
56 |
+
}
|
57 |
+
|
58 |
+
.fancybox-image, .fancybox-iframe {
|
59 |
+
display: block;
|
60 |
+
width: 100%;
|
61 |
+
height: 100%;
|
62 |
+
border: 0;
|
63 |
+
padding: 0;
|
64 |
+
margin: 0;
|
65 |
+
vertical-align: top;
|
66 |
+
}
|
67 |
+
|
68 |
+
.fancybox-image {
|
69 |
+
max-width: 100%;
|
70 |
+
max-height: 100%;
|
71 |
+
}
|
72 |
+
|
73 |
+
#fancybox-loading, .fancybox-close, .fancybox-prev span, .fancybox-next span {
|
74 |
+
background-image: url('fancybox_sprite.png');
|
75 |
+
}
|
76 |
+
|
77 |
+
#fancybox-loading {
|
78 |
+
position: fixed;
|
79 |
+
top: 50%;
|
80 |
+
left: 50%;
|
81 |
+
margin-top: -22px;
|
82 |
+
margin-left: -22px;
|
83 |
+
background-position: 0 -108px;
|
84 |
+
opacity: 0.8;
|
85 |
+
cursor: pointer;
|
86 |
+
z-index: 1010;
|
87 |
+
}
|
88 |
+
|
89 |
+
#fancybox-loading div {
|
90 |
+
width: 44px;
|
91 |
+
height: 44px;
|
92 |
+
background: url('fancybox_loading.gif') center center no-repeat;
|
93 |
+
}
|
94 |
+
|
95 |
+
.fancybox-close {
|
96 |
+
position: absolute;
|
97 |
+
top: -18px;
|
98 |
+
right: -18px;
|
99 |
+
width: 36px;
|
100 |
+
height: 36px;
|
101 |
+
cursor: pointer;
|
102 |
+
z-index: 1004;
|
103 |
+
}
|
104 |
+
|
105 |
+
.fancybox-nav {
|
106 |
+
position: absolute;
|
107 |
+
top: 0;
|
108 |
+
width: 40%;
|
109 |
+
height: 100%;
|
110 |
+
cursor: pointer;
|
111 |
+
background: transparent url('blank.gif'); /* helps IE */
|
112 |
+
z-index: 1003;
|
113 |
+
}
|
114 |
+
|
115 |
+
.fancybox-prev {
|
116 |
+
left: 0;
|
117 |
+
}
|
118 |
+
|
119 |
+
.fancybox-next {
|
120 |
+
right: 0;
|
121 |
+
}
|
122 |
+
|
123 |
+
.fancybox-nav span {
|
124 |
+
position: absolute;
|
125 |
+
top: 50%;
|
126 |
+
width: 36px;
|
127 |
+
height: 36px;
|
128 |
+
margin-top: -18px;
|
129 |
+
cursor: pointer;
|
130 |
+
z-index: 1003;
|
131 |
+
visibility: hidden;
|
132 |
+
}
|
133 |
+
|
134 |
+
.fancybox-prev span {
|
135 |
+
left: 20px;
|
136 |
+
background-position: 0 -36px;
|
137 |
+
}
|
138 |
+
|
139 |
+
.fancybox-next span {
|
140 |
+
right: 20px;
|
141 |
+
background-position: 0 -72px;
|
142 |
+
}
|
143 |
+
|
144 |
+
.fancybox-nav:hover span {
|
145 |
+
visibility: visible;
|
146 |
+
}
|
147 |
+
|
148 |
+
.fancybox-tmp {
|
149 |
+
position: absolute;
|
150 |
+
top: -9999px;
|
151 |
+
left: -9999px;
|
152 |
+
padding: 0;
|
153 |
+
overflow: visible;
|
154 |
+
visibility: hidden;
|
155 |
+
}
|
156 |
+
|
157 |
+
/* Overlay helper */
|
158 |
+
|
159 |
+
#fancybox-overlay {
|
160 |
+
position: absolute;
|
161 |
+
top: 0;
|
162 |
+
left: 0;
|
163 |
+
overflow: hidden;
|
164 |
+
display: none;
|
165 |
+
z-index: 1001;
|
166 |
+
background: #000;
|
167 |
+
}
|
168 |
+
|
169 |
+
/* Title helper */
|
170 |
+
|
171 |
+
.fancybox-title {
|
172 |
+
visibility: hidden;
|
173 |
+
font: normal 13px/20px "Helvetica Neue",Helvetica,Arial,sans-serif;
|
174 |
+
position: relative;
|
175 |
+
text-shadow: none;
|
176 |
+
z-index: 1005;
|
177 |
+
}
|
178 |
+
|
179 |
+
.fancybox-opened .fancybox-title {
|
180 |
+
visibility: visible;
|
181 |
+
}
|
182 |
+
|
183 |
+
.fancybox-title-float-wrap {
|
184 |
+
position: absolute;
|
185 |
+
bottom: 0;
|
186 |
+
right: 50%;
|
187 |
+
margin-bottom: -35px;
|
188 |
+
z-index: 1003;
|
189 |
+
text-align: center;
|
190 |
+
}
|
191 |
+
|
192 |
+
.fancybox-title-float-wrap .child {
|
193 |
+
display: inline-block;
|
194 |
+
margin-right: -100%;
|
195 |
+
padding: 2px 20px;
|
196 |
+
background: transparent; /* Fallback for web browsers that doesn't support RGBa */
|
197 |
+
background: rgba(0, 0, 0, 0.8);
|
198 |
+
-webkit-border-radius: 15px;
|
199 |
+
-moz-border-radius: 15px;
|
200 |
+
border-radius: 15px;
|
201 |
+
text-shadow: 0 1px 2px #222;
|
202 |
+
color: #FFF;
|
203 |
+
font-weight: bold;
|
204 |
+
line-height: 24px;
|
205 |
+
white-space: nowrap;
|
206 |
+
}
|
207 |
+
|
208 |
+
.fancybox-title-outside-wrap {
|
209 |
+
position: relative;
|
210 |
+
margin-top: 10px;
|
211 |
+
color: #fff;
|
212 |
+
}
|
213 |
+
|
214 |
+
.fancybox-title-inside-wrap {
|
215 |
+
margin-top: 10px;
|
216 |
+
}
|
217 |
+
|
218 |
+
.fancybox-title-over-wrap {
|
219 |
+
position: absolute;
|
220 |
+
bottom: 0;
|
221 |
+
left: 0;
|
222 |
+
color: #fff;
|
223 |
+
padding: 10px;
|
224 |
+
background: #000;
|
225 |
+
background: rgba(0, 0, 0, .8);
|
226 |
+
}
|
backupwordpress/assets/fancyBox/source/jquery.fancybox.js
ADDED
@@ -0,0 +1,1449 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* fancyBox - jQuery Plugin
|
3 |
+
* version: 2.0.5 (27/03/2012)
|
4 |
+
* @requires jQuery v1.6 or later
|
5 |
+
*
|
6 |
+
* Examples at http://fancyapps.com/fancybox/
|
7 |
+
* License: www.fancyapps.com/fancybox/#license
|
8 |
+
*
|
9 |
+
* Copyright 2012 Janis Skarnelis - janis@fancyapps.com
|
10 |
+
*
|
11 |
+
*/
|
12 |
+
(function (window, document, undefined) {
|
13 |
+
"use strict";
|
14 |
+
|
15 |
+
var $ = window.jQuery,
|
16 |
+
W = $(window),
|
17 |
+
D = $(document),
|
18 |
+
F = $.fancybox = function () {
|
19 |
+
F.open.apply( this, arguments );
|
20 |
+
},
|
21 |
+
didResize = false,
|
22 |
+
resizeTimer = null,
|
23 |
+
isMobile = document.createTouch !== undefined,
|
24 |
+
isString = function(str) {
|
25 |
+
return $.type(str) === "string";
|
26 |
+
},
|
27 |
+
isPercentage = function(str) {
|
28 |
+
return isString(str) && str.indexOf('%') > -1;
|
29 |
+
};
|
30 |
+
|
31 |
+
$.extend(F, {
|
32 |
+
// The current version of fancyBox
|
33 |
+
version: '2.0.5',
|
34 |
+
|
35 |
+
defaults: {
|
36 |
+
padding: 15,
|
37 |
+
margin: 20,
|
38 |
+
|
39 |
+
width: 800,
|
40 |
+
height: 600,
|
41 |
+
minWidth: 100,
|
42 |
+
minHeight: 100,
|
43 |
+
maxWidth: 9999,
|
44 |
+
maxHeight: 9999,
|
45 |
+
|
46 |
+
autoSize: true,
|
47 |
+
autoResize: !isMobile,
|
48 |
+
autoCenter : !isMobile,
|
49 |
+
fitToView: true,
|
50 |
+
aspectRatio: false,
|
51 |
+
topRatio: 0.5,
|
52 |
+
|
53 |
+
fixed: !($.browser.msie && $.browser.version <= 6) && !isMobile,
|
54 |
+
scrolling: 'auto', // 'auto', 'yes' or 'no'
|
55 |
+
wrapCSS: 'fancybox-default',
|
56 |
+
|
57 |
+
arrows: true,
|
58 |
+
closeBtn: true,
|
59 |
+
closeClick: false,
|
60 |
+
nextClick : false,
|
61 |
+
mouseWheel: true,
|
62 |
+
autoPlay: false,
|
63 |
+
playSpeed: 3000,
|
64 |
+
preload : 3,
|
65 |
+
|
66 |
+
modal: false,
|
67 |
+
loop: true,
|
68 |
+
ajax: { dataType: 'html', headers: { 'X-fancyBox': true } },
|
69 |
+
keys: {
|
70 |
+
next: [13, 32, 34, 39, 40], // enter, space, page down, right arrow, down arrow
|
71 |
+
prev: [8, 33, 37, 38], // backspace, page up, left arrow, up arrow
|
72 |
+
close: [27] // escape key
|
73 |
+
},
|
74 |
+
|
75 |
+
// Override some properties
|
76 |
+
index: 0,
|
77 |
+
type: null,
|
78 |
+
href: null,
|
79 |
+
content: null,
|
80 |
+
title: null,
|
81 |
+
|
82 |
+
// HTML templates
|
83 |
+
tpl: {
|
84 |
+
wrap: '<div class="fancybox-wrap"><div class="fancybox-outer"><div class="fancybox-inner"></div></div></div>',
|
85 |
+
image: '<img class="fancybox-image" src="{href}" alt="" />',
|
86 |
+
iframe: '<iframe class="fancybox-iframe" name="fancybox-frame{rnd}" frameborder="0" hspace="0"' + ($.browser.msie ? ' allowtransparency="true"' : '') + '></iframe>',
|
87 |
+
swf: '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="100%" height="100%"><param name="wmode" value="transparent" /><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="{href}" /><embed src="{href}" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="100%" height="100%" wmode="transparent"></embed></object>',
|
88 |
+
error: '<p class="fancybox-error">The requested content cannot be loaded.<br/>Please try again later.</p>',
|
89 |
+
closeBtn: '<div title="Close" class="fancybox-item fancybox-close"></div>',
|
90 |
+
next: '<a title="Next" class="fancybox-nav fancybox-next"><span></span></a>',
|
91 |
+
prev: '<a title="Previous" class="fancybox-nav fancybox-prev"><span></span></a>'
|
92 |
+
},
|
93 |
+
|
94 |
+
// Properties for each animation type
|
95 |
+
// Opening fancyBox
|
96 |
+
openEffect: 'fade', // 'elastic', 'fade' or 'none'
|
97 |
+
openSpeed: 250,
|
98 |
+
openEasing: 'swing',
|
99 |
+
openOpacity: true,
|
100 |
+
openMethod: 'zoomIn',
|
101 |
+
|
102 |
+
// Closing fancyBox
|
103 |
+
closeEffect: 'fade', // 'elastic', 'fade' or 'none'
|
104 |
+
closeSpeed: 250,
|
105 |
+
closeEasing: 'swing',
|
106 |
+
closeOpacity: true,
|
107 |
+
closeMethod: 'zoomOut',
|
108 |
+
|
109 |
+
// Changing next gallery item
|
110 |
+
nextEffect: 'elastic', // 'elastic', 'fade' or 'none'
|
111 |
+
nextSpeed: 300,
|
112 |
+
nextEasing: 'swing',
|
113 |
+
nextMethod: 'changeIn',
|
114 |
+
|
115 |
+
// Changing previous gallery item
|
116 |
+
prevEffect: 'elastic', // 'elastic', 'fade' or 'none'
|
117 |
+
prevSpeed: 300,
|
118 |
+
prevEasing: 'swing',
|
119 |
+
prevMethod: 'changeOut',
|
120 |
+
|
121 |
+
// Enabled helpers
|
122 |
+
helpers: {
|
123 |
+
overlay: {
|
124 |
+
speedIn: 0,
|
125 |
+
speedOut: 300,
|
126 |
+
opacity: 0.8,
|
127 |
+
css: {
|
128 |
+
cursor: 'pointer'
|
129 |
+
},
|
130 |
+
closeClick: true
|
131 |
+
},
|
132 |
+
title: {
|
133 |
+
type: 'float' // 'float', 'inside', 'outside' or 'over'
|
134 |
+
}
|
135 |
+
},
|
136 |
+
|
137 |
+
// Callbacks
|
138 |
+
onCancel: $.noop, // If canceling
|
139 |
+
beforeLoad: $.noop, // Before loading
|
140 |
+
afterLoad: $.noop, // After loading
|
141 |
+
beforeShow: $.noop, // Before changing in current item
|
142 |
+
afterShow: $.noop, // After opening
|
143 |
+
beforeClose: $.noop, // Before closing
|
144 |
+
afterClose: $.noop // After closing
|
145 |
+
},
|
146 |
+
|
147 |
+
//Current state
|
148 |
+
group: {}, // Selected group
|
149 |
+
opts: {}, // Group options
|
150 |
+
coming: null, // Element being loaded
|
151 |
+
current: null, // Currently loaded element
|
152 |
+
isOpen: false, // Is currently open
|
153 |
+
isOpened: false, // Have been fully opened at least once
|
154 |
+
wrap: null,
|
155 |
+
outer: null,
|
156 |
+
inner: null,
|
157 |
+
|
158 |
+
player: {
|
159 |
+
timer: null,
|
160 |
+
isActive: false
|
161 |
+
},
|
162 |
+
|
163 |
+
// Loaders
|
164 |
+
ajaxLoad: null,
|
165 |
+
imgPreload: null,
|
166 |
+
|
167 |
+
// Some collections
|
168 |
+
transitions: {},
|
169 |
+
helpers: {},
|
170 |
+
|
171 |
+
/*
|
172 |
+
* Static methods
|
173 |
+
*/
|
174 |
+
|
175 |
+
open: function (group, opts) {
|
176 |
+
//Kill existing instances
|
177 |
+
F.close(true);
|
178 |
+
|
179 |
+
//Normalize group
|
180 |
+
if (group && !$.isArray(group)) {
|
181 |
+
group = group instanceof $ ? $(group).get() : [group];
|
182 |
+
}
|
183 |
+
|
184 |
+
F.isActive = true;
|
185 |
+
|
186 |
+
//Extend the defaults
|
187 |
+
F.opts = $.extend(true, {}, F.defaults, opts);
|
188 |
+
|
189 |
+
//All options are merged recursive except keys
|
190 |
+
if ($.isPlainObject(opts) && opts.keys !== undefined) {
|
191 |
+
F.opts.keys = opts.keys ? $.extend({}, F.defaults.keys, opts.keys) : false;
|
192 |
+
}
|
193 |
+
|
194 |
+
F.group = group;
|
195 |
+
|
196 |
+
F._start(F.opts.index || 0);
|
197 |
+
},
|
198 |
+
|
199 |
+
cancel: function () {
|
200 |
+
if (F.coming && false === F.trigger('onCancel')) {
|
201 |
+
return;
|
202 |
+
}
|
203 |
+
|
204 |
+
F.coming = null;
|
205 |
+
|
206 |
+
F.hideLoading();
|
207 |
+
|
208 |
+
if (F.ajaxLoad) {
|
209 |
+
F.ajaxLoad.abort();
|
210 |
+
}
|
211 |
+
|
212 |
+
F.ajaxLoad = null;
|
213 |
+
|
214 |
+
if (F.imgPreload) {
|
215 |
+
F.imgPreload.onload = F.imgPreload.onabort = F.imgPreload.onerror = null;
|
216 |
+
}
|
217 |
+
},
|
218 |
+
|
219 |
+
close: function (a) {
|
220 |
+
F.cancel();
|
221 |
+
|
222 |
+
if (!F.current || false === F.trigger('beforeClose')) {
|
223 |
+
return;
|
224 |
+
}
|
225 |
+
|
226 |
+
F.unbindEvents();
|
227 |
+
|
228 |
+
//If forced or is still opening then remove immediately
|
229 |
+
if (!F.isOpen || (a && a[0] === true)) {
|
230 |
+
$(".fancybox-wrap").stop().trigger('onReset').remove();
|
231 |
+
|
232 |
+
F._afterZoomOut();
|
233 |
+
|
234 |
+
} else {
|
235 |
+
F.isOpen = F.isOpened = false;
|
236 |
+
|
237 |
+
$(".fancybox-item, .fancybox-nav").remove();
|
238 |
+
|
239 |
+
F.wrap.stop(true).removeClass('fancybox-opened');
|
240 |
+
F.inner.css('overflow', 'hidden');
|
241 |
+
|
242 |
+
F.transitions[F.current.closeMethod]();
|
243 |
+
}
|
244 |
+
},
|
245 |
+
|
246 |
+
// Start/stop slideshow
|
247 |
+
play: function (a) {
|
248 |
+
var clear = function () {
|
249 |
+
clearTimeout(F.player.timer);
|
250 |
+
},
|
251 |
+
set = function () {
|
252 |
+
clear();
|
253 |
+
|
254 |
+
if (F.current && F.player.isActive) {
|
255 |
+
F.player.timer = setTimeout(F.next, F.current.playSpeed);
|
256 |
+
}
|
257 |
+
},
|
258 |
+
stop = function () {
|
259 |
+
clear();
|
260 |
+
|
261 |
+
$('body').unbind('.player');
|
262 |
+
|
263 |
+
F.player.isActive = false;
|
264 |
+
|
265 |
+
F.trigger('onPlayEnd');
|
266 |
+
},
|
267 |
+
start = function () {
|
268 |
+
if (F.current && (F.current.loop || F.current.index < F.group.length - 1)) {
|
269 |
+
F.player.isActive = true;
|
270 |
+
|
271 |
+
$('body').bind({
|
272 |
+
'afterShow.player onUpdate.player': set,
|
273 |
+
'onCancel.player beforeClose.player': stop,
|
274 |
+
'beforeLoad.player': clear
|
275 |
+
});
|
276 |
+
|
277 |
+
set();
|
278 |
+
|
279 |
+
F.trigger('onPlayStart');
|
280 |
+
}
|
281 |
+
};
|
282 |
+
|
283 |
+
if (F.player.isActive || (a && a[0] === false)) {
|
284 |
+
stop();
|
285 |
+
} else {
|
286 |
+
start();
|
287 |
+
}
|
288 |
+
},
|
289 |
+
|
290 |
+
next: function () {
|
291 |
+
if (F.current) {
|
292 |
+
F.jumpto(F.current.index + 1);
|
293 |
+
}
|
294 |
+
},
|
295 |
+
|
296 |
+
prev: function () {
|
297 |
+
if (F.current) {
|
298 |
+
F.jumpto(F.current.index - 1);
|
299 |
+
}
|
300 |
+
},
|
301 |
+
|
302 |
+
jumpto: function (index) {
|
303 |
+
if (!F.current) {
|
304 |
+
return;
|
305 |
+
}
|
306 |
+
|
307 |
+
index = parseInt(index, 10);
|
308 |
+
|
309 |
+
if (F.group.length > 1 && F.current.loop) {
|
310 |
+
if (index >= F.group.length) {
|
311 |
+
index = 0;
|
312 |
+
|
313 |
+
} else if (index < 0) {
|
314 |
+
index = F.group.length - 1;
|
315 |
+
}
|
316 |
+
}
|
317 |
+
|
318 |
+
if (F.group[index] !== undefined) {
|
319 |
+
F.cancel();
|
320 |
+
|
321 |
+
F._start(index);
|
322 |
+
}
|
323 |
+
},
|
324 |
+
|
325 |
+
reposition: function (absolute, e) {
|
326 |
+
if (F.isOpen) {
|
327 |
+
if (e && e.type === 'scroll') {
|
328 |
+
F.wrap.stop().animate(F._getPosition(absolute), 200);
|
329 |
+
} else {
|
330 |
+
F.wrap.css(F._getPosition(absolute));
|
331 |
+
}
|
332 |
+
}
|
333 |
+
},
|
334 |
+
|
335 |
+
update: function (e) {
|
336 |
+
if (F.isOpen) {
|
337 |
+
// It's a very bad idea to attach handlers to the window scroll event, run this code after a delay
|
338 |
+
if (!didResize) {
|
339 |
+
resizeTimer = setTimeout(function () {
|
340 |
+
var current = F.current;
|
341 |
+
|
342 |
+
if (didResize) {
|
343 |
+
didResize = false;
|
344 |
+
|
345 |
+
if (current) {
|
346 |
+
if (!e || (e && (e.type === 'orientationchange' || (current.autoResize && e.type === 'resize')))) {
|
347 |
+
if (current.autoSize && current.type !== 'iframe') {
|
348 |
+
F.inner.height('auto');
|
349 |
+
current.height = F.inner.height();
|
350 |
+
}
|
351 |
+
|
352 |
+
F._setDimension();
|
353 |
+
|
354 |
+
if (current.canGrow && current.type !== 'iframe') {
|
355 |
+
F.inner.height('auto');
|
356 |
+
}
|
357 |
+
}
|
358 |
+
|
359 |
+
if (current.autoCenter) {
|
360 |
+
F.reposition(null, e);
|
361 |
+
}
|
362 |
+
|
363 |
+
F.trigger('onUpdate');
|
364 |
+
}
|
365 |
+
}
|
366 |
+
}, 100);
|
367 |
+
}
|
368 |
+
|
369 |
+
didResize = true;
|
370 |
+
}
|
371 |
+
},
|
372 |
+
|
373 |
+
toggle: function () {
|
374 |
+
if (F.isOpen) {
|
375 |
+
F.current.fitToView = !F.current.fitToView;
|
376 |
+
|
377 |
+
F.update();
|
378 |
+
}
|
379 |
+
},
|
380 |
+
|
381 |
+
hideLoading: function () {
|
382 |
+
D.unbind('keypress.fb');
|
383 |
+
|
384 |
+
$("#fancybox-loading").remove();
|
385 |
+
},
|
386 |
+
|
387 |
+
showLoading: function () {
|
388 |
+
F.hideLoading();
|
389 |
+
|
390 |
+
//If user will press the escape-button, the request will be canceled
|
391 |
+
D.bind('keypress.fb', function(e) {
|
392 |
+
if (e.keyCode === 27) {
|
393 |
+
e.preventDefault();
|
394 |
+
F.cancel();
|
395 |
+
}
|
396 |
+
});
|
397 |
+
|
398 |
+
$('<div id="fancybox-loading"><div></div></div>').click(F.cancel).appendTo('body');
|
399 |
+
},
|
400 |
+
|
401 |
+
getViewport: function () {
|
402 |
+
return {
|
403 |
+
x: W.scrollLeft(),
|
404 |
+
y: W.scrollTop(),
|
405 |
+
w: window.innerWidth ? window.innerWidth : W.width(),
|
406 |
+
h: window.innerHeight ? window.innerHeight : W.height()
|
407 |
+
};
|
408 |
+
},
|
409 |
+
|
410 |
+
// Unbind the keyboard / clicking actions
|
411 |
+
unbindEvents: function () {
|
412 |
+
if (F.wrap) {
|
413 |
+
F.wrap.unbind('.fb');
|
414 |
+
}
|
415 |
+
|
416 |
+
D.unbind('.fb');
|
417 |
+
W.unbind('.fb');
|
418 |
+
},
|
419 |
+
|
420 |
+
bindEvents: function () {
|
421 |
+
var current = F.current,
|
422 |
+
keys = current.keys;
|
423 |
+
|
424 |
+
if (!current) {
|
425 |
+
return;
|
426 |
+
}
|
427 |
+
|
428 |
+
W.bind('resize.fb, orientationchange.fb', F.update);
|
429 |
+
|
430 |
+
if (!current.fixed && current.autoCenter) {
|
431 |
+
W.bind("scroll.fb", F.update);
|
432 |
+
}
|
433 |
+
|
434 |
+
if (keys) {
|
435 |
+
D.bind('keydown.fb', function (e) {
|
436 |
+
var code;
|
437 |
+
|
438 |
+
// Ignore key combinations and key events within form elements
|
439 |
+
if (!e.ctrlKey && !e.altKey && !e.shiftKey && !e.metaKey && $.inArray(e.target.tagName.toLowerCase(), ['input', 'textarea', 'select', 'button']) < 0 && !$(e.target).is('[contenteditable]')) {
|
440 |
+
code = e.keyCode;
|
441 |
+
|
442 |
+
if ($.inArray(code, keys.close) > -1) {
|
443 |
+
F.close();
|
444 |
+
e.preventDefault();
|
445 |
+
|
446 |
+
} else if ($.inArray(code, keys.next) > -1) {
|
447 |
+
F.next();
|
448 |
+
e.preventDefault();
|
449 |
+
|
450 |
+
} else if ($.inArray(code, keys.prev) > -1) {
|
451 |
+
F.prev();
|
452 |
+
e.preventDefault();
|
453 |
+
}
|
454 |
+
}
|
455 |
+
});
|
456 |
+
}
|
457 |
+
|
458 |
+
if ($.fn.mousewheel && current.mouseWheel && F.group.length > 1) {
|
459 |
+
F.wrap.bind('mousewheel.fb', function (e, delta) {
|
460 |
+
var target = e.target || null;
|
461 |
+
|
462 |
+
if (delta !== 0 && (!target || target.clientHeight === 0 || (target.scrollHeight === target.clientHeight && target.scrollWidth === target.clientWidth))) {
|
463 |
+
e.preventDefault();
|
464 |
+
|
465 |
+
F[delta > 0 ? 'prev' : 'next']();
|
466 |
+
}
|
467 |
+
});
|
468 |
+
}
|
469 |
+
},
|
470 |
+
|
471 |
+
trigger: function (event) {
|
472 |
+
var ret, obj = F[ $.inArray(event, ['onCancel', 'beforeLoad', 'afterLoad']) > -1 ? 'coming' : 'current' ];
|
473 |
+
|
474 |
+
if (!obj) {
|
475 |
+
return;
|
476 |
+
}
|
477 |
+
|
478 |
+
if ($.isFunction( obj[event] )) {
|
479 |
+
ret = obj[event].apply(obj, Array.prototype.slice.call(arguments, 1));
|
480 |
+
}
|
481 |
+
|
482 |
+
if (ret === false) {
|
483 |
+
return false;
|
484 |
+
}
|
485 |
+
|
486 |
+
if (obj.helpers) {
|
487 |
+
$.each(obj.helpers, function (helper, opts) {
|
488 |
+
if (opts && $.isPlainObject(F.helpers[helper]) && $.isFunction(F.helpers[helper][event])) {
|
489 |
+
F.helpers[helper][event](opts, obj);
|
490 |
+
}
|
491 |
+
});
|
492 |
+
}
|
493 |
+
|
494 |
+
$.event.trigger(event + '.fb');
|
495 |
+
},
|
496 |
+
|
497 |
+
isImage: function (str) {
|
498 |
+
return isString(str) && str.match(/\.(jpg|gif|png|bmp|jpeg)(.*)?$/i);
|
499 |
+
},
|
500 |
+
|
501 |
+
isSWF: function (str) {
|
502 |
+
return isString(str) && str.match(/\.(swf)(.*)?$/i);
|
503 |
+
},
|
504 |
+
|
505 |
+
_start: function (index) {
|
506 |
+
var coming = {},
|
507 |
+
element = F.group[index] || null,
|
508 |
+
isDom,
|
509 |
+
href,
|
510 |
+
type,
|
511 |
+
rez,
|
512 |
+
hrefParts;
|
513 |
+
|
514 |
+
if (element && (element.nodeType || element instanceof $)) {
|
515 |
+
isDom = true;
|
516 |
+
|
517 |
+
if ($.metadata) {
|
518 |
+
coming = $(element).metadata();
|
519 |
+
}
|
520 |
+
}
|
521 |
+
|
522 |
+
coming = $.extend(true, {}, F.opts, {index : index, element : element}, ($.isPlainObject(element) ? element : coming));
|
523 |
+
|
524 |
+
// Re-check overridable options
|
525 |
+
$.each(['href', 'title', 'content', 'type'], function(i,v) {
|
526 |
+
coming[v] = F.opts[ v ] || (isDom && $(element).attr( v )) || coming[ v ] || null;
|
527 |
+
});
|
528 |
+
|
529 |
+
// Convert margin property to array - top, right, bottom, left
|
530 |
+
if (typeof coming.margin === 'number') {
|
531 |
+
coming.margin = [coming.margin, coming.margin, coming.margin, coming.margin];
|
532 |
+
}
|
533 |
+
|
534 |
+
// 'modal' propery is just a shortcut
|
535 |
+
if (coming.modal) {
|
536 |
+
$.extend(true, coming, {
|
537 |
+
closeBtn : false,
|
538 |
+
closeClick: false,
|
539 |
+
nextClick : false,
|
540 |
+
arrows : false,
|
541 |
+
mouseWheel : false,
|
542 |
+
keys : null,
|
543 |
+
helpers: {
|
544 |
+
overlay : {
|
545 |
+
css: {
|
546 |
+
cursor : 'auto'
|
547 |
+
},
|
548 |
+
closeClick : false
|
549 |
+
}
|
550 |
+
}
|
551 |
+
});
|
552 |
+
}
|
553 |
+
|
554 |
+
//Give a chance for callback or helpers to update coming item (type, title, etc)
|
555 |
+
F.coming = coming;
|
556 |
+
|
557 |
+
if (false === F.trigger('beforeLoad')) {
|
558 |
+
F.coming = null;
|
559 |
+
return;
|
560 |
+
}
|
561 |
+
|
562 |
+
type = coming.type;
|
563 |
+
href = coming.href || element;
|
564 |
+
|
565 |
+
///Check if content type is set, if not, try to get
|
566 |
+
if (!type) {
|
567 |
+
if (isDom) {
|
568 |
+
rez = $(element).data('fancybox-type');
|
569 |
+
|
570 |
+
if (!rez && element.className) {
|
571 |
+
rez = element.className.match(/fancybox\.(\w+)/);
|
572 |
+
type = rez ? rez[1] : null;
|
573 |
+
}
|
574 |
+
}
|
575 |
+
|
576 |
+
if (!type && isString(href)) {
|
577 |
+
if (F.isImage(href)) {
|
578 |
+
type = 'image';
|
579 |
+
|
580 |
+
} else if (F.isSWF(href)) {
|
581 |
+
type = 'swf';
|
582 |
+
|
583 |
+
} else if (href.match(/^#/)) {
|
584 |
+
type = 'inline';
|
585 |
+
}
|
586 |
+
}
|
587 |
+
|
588 |
+
// ...if not - display element itself
|
589 |
+
if (!type) {
|
590 |
+
type = isDom ? 'inline' : 'html';
|
591 |
+
}
|
592 |
+
|
593 |
+
coming.type = type;
|
594 |
+
}
|
595 |
+
|
596 |
+
// Check before try to load; 'inline' and 'html' types need content, others - href
|
597 |
+
if (type === 'inline' || type === 'html') {
|
598 |
+
if (!coming.content) {
|
599 |
+
if (type === 'inline') {
|
600 |
+
coming.content = $( isString(href) ? href.replace(/.*(?=#[^\s]+$)/, '') : href ); //strip for ie7
|
601 |
+
|
602 |
+
} else {
|
603 |
+
coming.content = element;
|
604 |
+
}
|
605 |
+
}
|
606 |
+
|
607 |
+
if (!coming.content || !coming.content.length) {
|
608 |
+
type = null;
|
609 |
+
}
|
610 |
+
|
611 |
+
} else if (!href) {
|
612 |
+
type = null;
|
613 |
+
}
|
614 |
+
|
615 |
+
/*
|
616 |
+
* Add reference to the group, so it`s possible to access from callbacks, example:
|
617 |
+
* afterLoad : function() {
|
618 |
+
* this.title = 'Image ' + (this.index + 1) + ' of ' + this.group.length + (this.title ? ' - ' + this.title : '');
|
619 |
+
* }
|
620 |
+
*/
|
621 |
+
|
622 |
+
if (type === 'ajax' && isString(href)) {
|
623 |
+
hrefParts = href.split(/\s+/, 2);
|
624 |
+
|
625 |
+
href = hrefParts.shift();
|
626 |
+
coming.selector = hrefParts.shift();
|
627 |
+
}
|
628 |
+
|
629 |
+
coming.href = href;
|
630 |
+
coming.group = F.group;
|
631 |
+
coming.isDom = isDom;
|
632 |
+
|
633 |
+
if (type === 'image') {
|
634 |
+
F._loadImage();
|
635 |
+
|
636 |
+
} else if (type === 'ajax') {
|
637 |
+
F._loadAjax();
|
638 |
+
|
639 |
+
} else if (type) {
|
640 |
+
F._afterLoad();
|
641 |
+
|
642 |
+
} else {
|
643 |
+
F._error( 'type' );
|
644 |
+
}
|
645 |
+
},
|
646 |
+
|
647 |
+
_error: function ( type ) {
|
648 |
+
F.hideLoading();
|
649 |
+
|
650 |
+
$.extend(F.coming, {
|
651 |
+
type : 'html',
|
652 |
+
autoSize : true,
|
653 |
+
minHeight : 0,
|
654 |
+
hasError : type,
|
655 |
+
content : F.coming.tpl.error
|
656 |
+
});
|
657 |
+
|
658 |
+
F._afterLoad();
|
659 |
+
},
|
660 |
+
|
661 |
+
_loadImage: function () {
|
662 |
+
// Reset preload image so it is later possible to check "complete" property
|
663 |
+
var img = F.imgPreload = new Image();
|
664 |
+
|
665 |
+
img.onload = function () {
|
666 |
+
this.onload = this.onerror = null;
|
667 |
+
|
668 |
+
F.coming.width = this.width;
|
669 |
+
F.coming.height = this.height;
|
670 |
+
|
671 |
+
F._afterLoad();
|
672 |
+
};
|
673 |
+
|
674 |
+
img.onerror = function () {
|
675 |
+
this.onload = this.onerror = null;
|
676 |
+
|
677 |
+
F._error( 'image' );
|
678 |
+
};
|
679 |
+
|
680 |
+
img.src = F.coming.href;
|
681 |
+
|
682 |
+
if (!img.width) {
|
683 |
+
F.showLoading();
|
684 |
+
}
|
685 |
+
},
|
686 |
+
|
687 |
+
_loadAjax: function () {
|
688 |
+
F.showLoading();
|
689 |
+
|
690 |
+
F.ajaxLoad = $.ajax($.extend({}, F.coming.ajax, {
|
691 |
+
url: F.coming.href,
|
692 |
+
error: function (jqXHR, textStatus) {
|
693 |
+
if (F.coming && textStatus !== 'abort') {
|
694 |
+
F._error( 'ajax', jqXHR );
|
695 |
+
|
696 |
+
} else {
|
697 |
+
F.hideLoading();
|
698 |
+
}
|
699 |
+
},
|
700 |
+
success: function (data, textStatus) {
|
701 |
+
if (textStatus === 'success') {
|
702 |
+
F.coming.content = data;
|
703 |
+
|
704 |
+
F._afterLoad();
|
705 |
+
}
|
706 |
+
}
|
707 |
+
}));
|
708 |
+
},
|
709 |
+
|
710 |
+
_preloadImages: function() {
|
711 |
+
var group = F.group,
|
712 |
+
current = F.current,
|
713 |
+
len = group.length,
|
714 |
+
item,
|
715 |
+
href,
|
716 |
+
i,
|
717 |
+
cnt = Math.min(current.preload, len - 1);
|
718 |
+
|
719 |
+
if (!current.preload || group.length < 2) {
|
720 |
+
return;
|
721 |
+
}
|
722 |
+
|
723 |
+
for (i = 1; i <= cnt; i += 1) {
|
724 |
+
item = group[ (current.index + i ) % len ];
|
725 |
+
href = $( item ).attr('href') || item;
|
726 |
+
|
727 |
+
if (item.type === 'image' || F.isImage(href)) {
|
728 |
+
new Image().src = href;
|
729 |
+
}
|
730 |
+
}
|
731 |
+
},
|
732 |
+
|
733 |
+
_afterLoad: function () {
|
734 |
+
F.hideLoading();
|
735 |
+
|
736 |
+
if (!F.coming || false === F.trigger('afterLoad', F.current)) {
|
737 |
+
F.coming = false;
|
738 |
+
|
739 |
+
return;
|
740 |
+
}
|
741 |
+
|
742 |
+
if (F.isOpened) {
|
743 |
+
$(".fancybox-item").remove();
|
744 |
+
|
745 |
+
F.wrap.stop(true).removeClass('fancybox-opened');
|
746 |
+
F.inner.css('overflow', 'hidden');
|
747 |
+
|
748 |
+
F.transitions[F.current.prevMethod]();
|
749 |
+
|
750 |
+
} else {
|
751 |
+
$(".fancybox-wrap").stop().trigger('onReset').remove();
|
752 |
+
|
753 |
+
F.trigger('afterClose');
|
754 |
+
}
|
755 |
+
|
756 |
+
F.unbindEvents();
|
757 |
+
|
758 |
+
F.isOpen = false;
|
759 |
+
F.current = F.coming;
|
760 |
+
|
761 |
+
//Build the neccessary markup
|
762 |
+
F.wrap = $(F.current.tpl.wrap).addClass('fancybox-' + (isMobile ? 'mobile' : 'desktop') + ' fancybox-type-' + F.current.type + ' fancybox-tmp ' + F.current.wrapCSS).appendTo('body');
|
763 |
+
F.outer = $('.fancybox-outer', F.wrap).css('padding', F.current.padding + 'px');
|
764 |
+
F.inner = $('.fancybox-inner', F.wrap);
|
765 |
+
|
766 |
+
F._setContent();
|
767 |
+
},
|
768 |
+
|
769 |
+
_setContent: function () {
|
770 |
+
var current = F.current,
|
771 |
+
content = current.content,
|
772 |
+
type = current.type,
|
773 |
+
loadingBay,
|
774 |
+
minWidth = current.minWidth,
|
775 |
+
minHeight = current.minHeight,
|
776 |
+
maxWidth = current.maxWidth,
|
777 |
+
maxHeight = current.maxHeight;
|
778 |
+
|
779 |
+
switch (type) {
|
780 |
+
case 'inline':
|
781 |
+
case 'ajax':
|
782 |
+
case 'html':
|
783 |
+
if (current.selector) {
|
784 |
+
content = $('<div>').html(content).find(current.selector);
|
785 |
+
|
786 |
+
} else if (content instanceof $) {
|
787 |
+
if (content.parent().hasClass('fancybox-inner')) {
|
788 |
+
content.parents('.fancybox-wrap').unbind('onReset');
|
789 |
+
}
|
790 |
+
|
791 |
+
content = content.show().detach();
|
792 |
+
|
793 |
+
$(F.wrap).bind('onReset', function () {
|
794 |
+
content.appendTo('body').hide();
|
795 |
+
});
|
796 |
+
}
|
797 |
+
|
798 |
+
if (current.autoSize) {
|
799 |
+
loadingBay = $('<div class="fancybox-wrap ' + F.current.wrapCSS + ' fancybox-tmp"></div>')
|
800 |
+
.appendTo('body')
|
801 |
+
.css({
|
802 |
+
minWidth : isPercentage(minWidth) ? minWidth : minWidth + 'px',
|
803 |
+
minHeight : isPercentage(minHeight) ? minHeight : minHeight + 'px',
|
804 |
+
maxWidth : isPercentage(maxWidth) ? maxWidth : maxWidth + 'px',
|
805 |
+
maxHeight : isPercentage(maxHeight) ? maxHeight : maxHeight + 'px'
|
806 |
+
})
|
807 |
+
.append(content);
|
808 |
+
|
809 |
+
current.width = loadingBay.width();
|
810 |
+
current.height = loadingBay.height();
|
811 |
+
|
812 |
+
// Re-check to fix 1px bug in some browsers
|
813 |
+
loadingBay.width( F.current.width );
|
814 |
+
|
815 |
+
if (loadingBay.height() > current.height) {
|
816 |
+
loadingBay.width(current.width + 1);
|
817 |
+
|
818 |
+
current.width = loadingBay.width();
|
819 |
+
current.height = loadingBay.height();
|
820 |
+
}
|
821 |
+
|
822 |
+
content = loadingBay.contents().detach();
|
823 |
+
|
824 |
+
loadingBay.remove();
|
825 |
+
}
|
826 |
+
|
827 |
+
break;
|
828 |
+
|
829 |
+
case 'image':
|
830 |
+
content = current.tpl.image.replace('{href}', current.href);
|
831 |
+
|
832 |
+
current.aspectRatio = true;
|
833 |
+
break;
|
834 |
+
|
835 |
+
case 'swf':
|
836 |
+
content = current.tpl.swf.replace(/\{width\}/g, current.width).replace(/\{height\}/g, current.height).replace(/\{href\}/g, current.href);
|
837 |
+
break;
|
838 |
+
|
839 |
+
case 'iframe':
|
840 |
+
content = $(current.tpl.iframe.replace('{rnd}', new Date().getTime()) )
|
841 |
+
.attr('scrolling', current.scrolling)
|
842 |
+
.attr('src', current.href);
|
843 |
+
|
844 |
+
current.scrolling = isMobile ? 'scroll' : 'auto';
|
845 |
+
|
846 |
+
break;
|
847 |
+
}
|
848 |
+
|
849 |
+
if (type === 'image' || type === 'swf') {
|
850 |
+
current.autoSize = false;
|
851 |
+
current.scrolling = 'visible';
|
852 |
+
}
|
853 |
+
|
854 |
+
if (type === 'iframe' && current.autoSize) {
|
855 |
+
F.showLoading();
|
856 |
+
|
857 |
+
F.inner
|
858 |
+
.width(current.width)
|
859 |
+
.height(current.height)
|
860 |
+
.css('overflow', current.scrolling);
|
861 |
+
|
862 |
+
content.bind({
|
863 |
+
onCancel : function() {
|
864 |
+
$(this).unbind();
|
865 |
+
|
866 |
+
F._afterZoomOut();
|
867 |
+
},
|
868 |
+
load : function() {
|
869 |
+
F.hideLoading();
|
870 |
+
|
871 |
+
try {
|
872 |
+
if (this.contentWindow.document.location) {
|
873 |
+
F.current.height = $(this).contents().find('body').height();
|
874 |
+
}
|
875 |
+
} catch (e) {
|
876 |
+
F.current.autoSize = false;
|
877 |
+
}
|
878 |
+
|
879 |
+
if (F.isOpened) {
|
880 |
+
F.update();
|
881 |
+
|
882 |
+
} else {
|
883 |
+
F._beforeShow();
|
884 |
+
}
|
885 |
+
}
|
886 |
+
}).appendTo(F.inner);
|
887 |
+
|
888 |
+
} else {
|
889 |
+
F.inner.append(content);
|
890 |
+
|
891 |
+
F._beforeShow();
|
892 |
+
}
|
893 |
+
},
|
894 |
+
|
895 |
+
_beforeShow : function() {
|
896 |
+
F.coming = null;
|
897 |
+
|
898 |
+
//Give a chance for helpers or callbacks to update elements
|
899 |
+
F.trigger('beforeShow');
|
900 |
+
|
901 |
+
//Set initial dimensions and hide
|
902 |
+
F._setDimension();
|
903 |
+
F.wrap.hide().removeClass('fancybox-tmp');
|
904 |
+
|
905 |
+
F.bindEvents();
|
906 |
+
|
907 |
+
F._preloadImages();
|
908 |
+
|
909 |
+
F.transitions[ F.isOpened ? F.current.nextMethod : F.current.openMethod ]();
|
910 |
+
},
|
911 |
+
|
912 |
+
_setDimension: function () {
|
913 |
+
var wrap = F.wrap,
|
914 |
+
outer = F.outer,
|
915 |
+
inner = F.inner,
|
916 |
+
current = F.current,
|
917 |
+
viewport = F.getViewport(),
|
918 |
+
margin = current.margin,
|
919 |
+
padding2 = current.padding * 2,
|
920 |
+
width = current.width,
|
921 |
+
height = current.height,
|
922 |
+
maxWidth = current.maxWidth + padding2,
|
923 |
+
maxHeight = current.maxHeight + padding2,
|
924 |
+
minWidth = current.minWidth + padding2,
|
925 |
+
minHeight = current.minHeight + padding2,
|
926 |
+
ratio,
|
927 |
+
height_,
|
928 |
+
space;
|
929 |
+
|
930 |
+
viewport.w -= (margin[1] + margin[3]);
|
931 |
+
viewport.h -= (margin[0] + margin[2]);
|
932 |
+
|
933 |
+
if (isPercentage(width)) {
|
934 |
+
width = (((viewport.w - padding2) * parseFloat(width)) / 100);
|
935 |
+
}
|
936 |
+
|
937 |
+
if (isPercentage(height)) {
|
938 |
+
height = (((viewport.h - padding2) * parseFloat(height)) / 100);
|
939 |
+
}
|
940 |
+
|
941 |
+
ratio = width / height;
|
942 |
+
width += padding2;
|
943 |
+
height += padding2;
|
944 |
+
|
945 |
+
if (current.fitToView) {
|
946 |
+
maxWidth = Math.min(viewport.w, maxWidth);
|
947 |
+
maxHeight = Math.min(viewport.h, maxHeight);
|
948 |
+
}
|
949 |
+
|
950 |
+
if (current.aspectRatio) {
|
951 |
+
if (width > maxWidth) {
|
952 |
+
width = maxWidth;
|
953 |
+
height = ((width - padding2) / ratio) + padding2;
|
954 |
+
}
|
955 |
+
|
956 |
+
if (height > maxHeight) {
|
957 |
+
height = maxHeight;
|
958 |
+
width = ((height - padding2) * ratio) + padding2;
|
959 |
+
}
|
960 |
+
|
961 |
+
if (width < minWidth) {
|
962 |
+
width = minWidth;
|
963 |
+
height = ((width - padding2) / ratio) + padding2;
|
964 |
+
}
|
965 |
+
|
966 |
+
if (height < minHeight) {
|
967 |
+
height = minHeight;
|
968 |
+
width = ((height - padding2) * ratio) + padding2;
|
969 |
+
}
|
970 |
+
|
971 |
+
} else {
|
972 |
+
width = Math.max(minWidth, Math.min(width, maxWidth));
|
973 |
+
height = Math.max(minHeight, Math.min(height, maxHeight));
|
974 |
+
}
|
975 |
+
|
976 |
+
width = Math.round(width);
|
977 |
+
height = Math.round(height);
|
978 |
+
|
979 |
+
//Reset dimensions
|
980 |
+
$(wrap.add(outer).add(inner)).width('auto').height('auto');
|
981 |
+
|
982 |
+
inner.width(width - padding2).height(height - padding2);
|
983 |
+
wrap.width(width);
|
984 |
+
|
985 |
+
height_ = wrap.height(); // Real wrap height
|
986 |
+
|
987 |
+
//Fit wrapper inside
|
988 |
+
if (width > maxWidth || height_ > maxHeight) {
|
989 |
+
while ((width > maxWidth || height_ > maxHeight) && width > minWidth && height_ > minHeight) {
|
990 |
+
height = height - 10;
|
991 |
+
|
992 |
+
if (current.aspectRatio) {
|
993 |
+
width = Math.round(((height - padding2) * ratio) + padding2);
|
994 |
+
|
995 |
+
if (width < minWidth) {
|
996 |
+
width = minWidth;
|
997 |
+
height = ((width - padding2) / ratio) + padding2;
|
998 |
+
}
|
999 |
+
|
1000 |
+
} else {
|
1001 |
+
width = width - 10;
|
1002 |
+
}
|
1003 |
+
|
1004 |
+
inner.width(width - padding2).height(height - padding2);
|
1005 |
+
wrap.width(width);
|
1006 |
+
|
1007 |
+
height_ = wrap.height();
|
1008 |
+
}
|
1009 |
+
}
|
1010 |
+
|
1011 |
+
current.dim = {
|
1012 |
+
width: width,
|
1013 |
+
height: height_
|
1014 |
+
};
|
1015 |
+
|
1016 |
+
current.canGrow = current.autoSize && height > minHeight && height < maxHeight;
|
1017 |
+
current.canShrink = false;
|
1018 |
+
current.canExpand = false;
|
1019 |
+
|
1020 |
+
if ((width - padding2) < current.width || (height - padding2) < current.height) {
|
1021 |
+
current.canExpand = true;
|
1022 |
+
|
1023 |
+
} else if ((width > viewport.w || height_ > viewport.h) && width > minWidth && height > minHeight) {
|
1024 |
+
current.canShrink = true;
|
1025 |
+
}
|
1026 |
+
|
1027 |
+
space = height_ - padding2;
|
1028 |
+
|
1029 |
+
F.innerSpace = space - inner.height();
|
1030 |
+
F.outerSpace = space - outer.height();
|
1031 |
+
},
|
1032 |
+
|
1033 |
+
_getPosition: function (a) {
|
1034 |
+
var current = F.current,
|
1035 |
+
viewport = F.getViewport(),
|
1036 |
+
margin = current.margin,
|
1037 |
+
width = F.wrap.width() + margin[1] + margin[3],
|
1038 |
+
height = F.wrap.height() + margin[0] + margin[2],
|
1039 |
+
rez = {
|
1040 |
+
position: 'absolute',
|
1041 |
+
top: margin[0] + viewport.y,
|
1042 |
+
left: margin[3] + viewport.x
|
1043 |
+
};
|
1044 |
+
|
1045 |
+
if (current.autoCenter && current.fixed && (!a || a[0] === false) && height <= viewport.h && width <= viewport.w) {
|
1046 |
+
rez = {
|
1047 |
+
position: 'fixed',
|
1048 |
+
top: margin[0],
|
1049 |
+
left: margin[3]
|
1050 |
+
};
|
1051 |
+
}
|
1052 |
+
|
1053 |
+
rez.top = Math.ceil(Math.max(rez.top, rez.top + ((viewport.h - height) * current.topRatio))) + 'px';
|
1054 |
+
rez.left = Math.ceil(Math.max(rez.left, rez.left + ((viewport.w - width) * 0.5))) + 'px';
|
1055 |
+
|
1056 |
+
return rez;
|
1057 |
+
},
|
1058 |
+
|
1059 |
+
_afterZoomIn: function () {
|
1060 |
+
var current = F.current, scrolling = current ? current.scrolling : 'no';
|
1061 |
+
|
1062 |
+
if (!current) {
|
1063 |
+
return;
|
1064 |
+
}
|
1065 |
+
|
1066 |
+
F.isOpen = F.isOpened = true;
|
1067 |
+
|
1068 |
+
F.wrap.addClass('fancybox-opened').css('overflow', 'visible');
|
1069 |
+
|
1070 |
+
F.inner.css('overflow', scrolling === 'yes' ? 'scroll' : (scrolling === 'no' ? 'hidden' : scrolling));
|
1071 |
+
|
1072 |
+
//Assign a click event
|
1073 |
+
if (current.closeClick || current.nextClick) {
|
1074 |
+
//This is not the perfect solution but arrows have to be next to content so their height will match
|
1075 |
+
// and I do not want another wrapper around content
|
1076 |
+
F.inner.css('cursor', 'pointer').bind('click.fb', function(e) {
|
1077 |
+
if (!$(e.target).is('a') && !$(e.target).parent().is('a')) {
|
1078 |
+
F[ current.closeClick ? 'close' : 'next' ]();
|
1079 |
+
}
|
1080 |
+
});
|
1081 |
+
}
|
1082 |
+
|
1083 |
+
//Create a close button
|
1084 |
+
if (current.closeBtn) {
|
1085 |
+
$(current.tpl.closeBtn).appendTo(F.outer).bind('click.fb', F.close);
|
1086 |
+
}
|
1087 |
+
|
1088 |
+
//Create navigation arrows
|
1089 |
+
if (current.arrows && F.group.length > 1) {
|
1090 |
+
if (current.loop || current.index > 0) {
|
1091 |
+
$(current.tpl.prev).appendTo(F.inner).bind('click.fb', F.prev);
|
1092 |
+
}
|
1093 |
+
|
1094 |
+
if (current.loop || current.index < F.group.length - 1) {
|
1095 |
+
$(current.tpl.next).appendTo(F.inner).bind('click.fb', F.next);
|
1096 |
+
}
|
1097 |
+
}
|
1098 |
+
|
1099 |
+
F.trigger('afterShow');
|
1100 |
+
|
1101 |
+
F.update();
|
1102 |
+
|
1103 |
+
if (F.opts.autoPlay && !F.player.isActive) {
|
1104 |
+
F.opts.autoPlay = false;
|
1105 |
+
|
1106 |
+
F.play();
|
1107 |
+
}
|
1108 |
+
},
|
1109 |
+
|
1110 |
+
_afterZoomOut: function () {
|
1111 |
+
F.trigger('afterClose');
|
1112 |
+
|
1113 |
+
F.wrap.trigger('onReset').remove();
|
1114 |
+
|
1115 |
+
$.extend(F, {
|
1116 |
+
group: {},
|
1117 |
+
opts: {},
|
1118 |
+
current: null,
|
1119 |
+
isActive: false,
|
1120 |
+
isOpened: false,
|
1121 |
+
isOpen: false,
|
1122 |
+
wrap: null,
|
1123 |
+
outer: null,
|
1124 |
+
inner: null
|
1125 |
+
});
|
1126 |
+
}
|
1127 |
+
});
|
1128 |
+
|
1129 |
+
/*
|
1130 |
+
* Default transitions
|
1131 |
+
*/
|
1132 |
+
|
1133 |
+
F.transitions = {
|
1134 |
+
getOrigPosition: function () {
|
1135 |
+
var current = F.current,
|
1136 |
+
element = current.element,
|
1137 |
+
padding = current.padding,
|
1138 |
+
orig = $(current.orig),
|
1139 |
+
pos = {},
|
1140 |
+
width = 50,
|
1141 |
+
height = 50,
|
1142 |
+
viewport;
|
1143 |
+
|
1144 |
+
if (!orig.length && current.isDom && $(element).is(':visible')) {
|
1145 |
+
orig = $(element).find('img:first');
|
1146 |
+
|
1147 |
+
if (!orig.length) {
|
1148 |
+
orig = $(element);
|
1149 |
+
}
|
1150 |
+
}
|
1151 |
+
|
1152 |
+
if (orig.length) {
|
1153 |
+
pos = orig.offset();
|
1154 |
+
|
1155 |
+
if (orig.is('img')) {
|
1156 |
+
width = orig.outerWidth();
|
1157 |
+
height = orig.outerHeight();
|
1158 |
+
}
|
1159 |
+
|
1160 |
+
} else {
|
1161 |
+
viewport = F.getViewport();
|
1162 |
+
|
1163 |
+
pos.top = viewport.y + (viewport.h - height) * 0.5;
|
1164 |
+
pos.left = viewport.x + (viewport.w - width) * 0.5;
|
1165 |
+
}
|
1166 |
+
|
1167 |
+
pos = {
|
1168 |
+
top: Math.ceil(pos.top - padding) + 'px',
|
1169 |
+
left: Math.ceil(pos.left - padding) + 'px',
|
1170 |
+
width: Math.ceil(width + padding * 2) + 'px',
|
1171 |
+
height: Math.ceil(height + padding * 2) + 'px'
|
1172 |
+
};
|
1173 |
+
|
1174 |
+
return pos;
|
1175 |
+
},
|
1176 |
+
|
1177 |
+
step: function (now, fx) {
|
1178 |
+
var ratio, innerValue, outerValue;
|
1179 |
+
|
1180 |
+
if (fx.prop === 'width' || fx.prop === 'height') {
|
1181 |
+
innerValue = outerValue = Math.ceil(now - (F.current.padding * 2));
|
1182 |
+
|
1183 |
+
if (fx.prop === 'height') {
|
1184 |
+
ratio = (now - fx.start) / (fx.end - fx.start);
|
1185 |
+
|
1186 |
+
if (fx.start > fx.end) {
|
1187 |
+
ratio = 1 - ratio;
|
1188 |
+
}
|
1189 |
+
|
1190 |
+
innerValue -= F.innerSpace * ratio;
|
1191 |
+
outerValue -= F.outerSpace * ratio;
|
1192 |
+
}
|
1193 |
+
|
1194 |
+
F.inner[fx.prop](innerValue);
|
1195 |
+
F.outer[fx.prop](outerValue);
|
1196 |
+
}
|
1197 |
+
},
|
1198 |
+
|
1199 |
+
zoomIn: function () {
|
1200 |
+
var wrap = F.wrap,
|
1201 |
+
current = F.current,
|
1202 |
+
effect = current.openEffect,
|
1203 |
+
elastic = effect === 'elastic',
|
1204 |
+
dim = current.dim,
|
1205 |
+
startPos = $.extend({}, dim, F._getPosition( elastic )),
|
1206 |
+
endPos = $.extend({opacity : 1}, startPos);
|
1207 |
+
|
1208 |
+
//Remove "position" property that breaks older IE
|
1209 |
+
delete endPos.position;
|
1210 |
+
|
1211 |
+
if (elastic) {
|
1212 |
+
startPos = this.getOrigPosition();
|
1213 |
+
|
1214 |
+
if (current.openOpacity) {
|
1215 |
+
startPos.opacity = 0;
|
1216 |
+
}
|
1217 |
+
|
1218 |
+
F.outer.add(F.inner).width('auto').height('auto');
|
1219 |
+
} else if (effect === 'fade') {
|
1220 |
+
startPos.opacity = 0;
|
1221 |
+
}
|
1222 |
+
|
1223 |
+
wrap.css(startPos)
|
1224 |
+
.show()
|
1225 |
+
.animate(endPos, {
|
1226 |
+
duration : effect === 'none' ? 0 : current.openSpeed,
|
1227 |
+
easing : current.openEasing,
|
1228 |
+
step: elastic ? this.step : null,
|
1229 |
+
complete: F._afterZoomIn
|
1230 |
+
});
|
1231 |
+
},
|
1232 |
+
|
1233 |
+
zoomOut: function () {
|
1234 |
+
var wrap = F.wrap,
|
1235 |
+
current = F.current,
|
1236 |
+
effect = current.openEffect,
|
1237 |
+
elastic = effect === 'elastic',
|
1238 |
+
endPos = {opacity : 0};
|
1239 |
+
|
1240 |
+
if (elastic) {
|
1241 |
+
if (wrap.css('position') === 'fixed') {
|
1242 |
+
wrap.css(F._getPosition(true));
|
1243 |
+
}
|
1244 |
+
|
1245 |
+
endPos = this.getOrigPosition();
|
1246 |
+
|
1247 |
+
if (current.closeOpacity) {
|
1248 |
+
endPos.opacity = 0;
|
1249 |
+
}
|
1250 |
+
}
|
1251 |
+
|
1252 |
+
wrap.animate(endPos, {
|
1253 |
+
duration: effect === 'none' ? 0 : current.closeSpeed,
|
1254 |
+
easing: current.closeEasing,
|
1255 |
+
step: elastic ? this.step : null,
|
1256 |
+
complete: F._afterZoomOut
|
1257 |
+
});
|
1258 |
+
},
|
1259 |
+
|
1260 |
+
changeIn: function () {
|
1261 |
+
var wrap = F.wrap,
|
1262 |
+
current = F.current,
|
1263 |
+
effect = current.nextEffect,
|
1264 |
+
startPos = F._getPosition( effect === 'elastic' ),
|
1265 |
+
endPos = { opacity : 1 };
|
1266 |
+
|
1267 |
+
if (effect === 'elastic') {
|
1268 |
+
startPos.top = (parseInt(startPos.top, 10) - 200) + 'px';
|
1269 |
+
endPos.top = '+=200px';
|
1270 |
+
startPos.opacity = 0;
|
1271 |
+
}
|
1272 |
+
|
1273 |
+
wrap.css(startPos)
|
1274 |
+
.show()
|
1275 |
+
.animate(endPos, {
|
1276 |
+
duration : effect === 'none' ? 0 : current.nextSpeed,
|
1277 |
+
easing : current.nextEasing,
|
1278 |
+
complete: function() {
|
1279 |
+
//Somehow this helps to restore overflow
|
1280 |
+
setTimeout( F._afterZoomIn, 1);
|
1281 |
+
}
|
1282 |
+
});
|
1283 |
+
},
|
1284 |
+
|
1285 |
+
changeOut: function () {
|
1286 |
+
var wrap = F.wrap,
|
1287 |
+
current = F.current,
|
1288 |
+
effect = current.nextEffect,
|
1289 |
+
endPos = { opacity : 0 },
|
1290 |
+
cleanUp = function () {
|
1291 |
+
$(this).trigger('onReset').remove();
|
1292 |
+
};
|
1293 |
+
|
1294 |
+
wrap.removeClass('fancybox-opened');
|
1295 |
+
|
1296 |
+
if (effect === 'elastic') {
|
1297 |
+
endPos.top = '+=200px';
|
1298 |
+
}
|
1299 |
+
|
1300 |
+
wrap.animate(endPos, {
|
1301 |
+
duration: effect === 'none' ? 0 : current.prevSpeed,
|
1302 |
+
easing: current.prevEasing,
|
1303 |
+
complete: cleanUp
|
1304 |
+
});
|
1305 |
+
}
|
1306 |
+
};
|
1307 |
+
|
1308 |
+
/*
|
1309 |
+
* Overlay helper
|
1310 |
+
*/
|
1311 |
+
|
1312 |
+
F.helpers.overlay = {
|
1313 |
+
overlay: null,
|
1314 |
+
|
1315 |
+
update: function () {
|
1316 |
+
var width, scrollWidth, offsetWidth;
|
1317 |
+
|
1318 |
+
if (!isMobile) {
|
1319 |
+
//Reset width/height so it will not mess
|
1320 |
+
this.overlay.width(0).height(0);
|
1321 |
+
}
|
1322 |
+
|
1323 |
+
if ($.browser.msie) {
|
1324 |
+
scrollWidth = Math.max(document.documentElement.scrollWidth, document.body.scrollWidth);
|
1325 |
+
offsetWidth = Math.max(document.documentElement.offsetWidth, document.body.offsetWidth);
|
1326 |
+
|
1327 |
+
width = scrollWidth < offsetWidth ? W.width() : scrollWidth;
|
1328 |
+
|
1329 |
+
} else {
|
1330 |
+
width = D.width();
|
1331 |
+
}
|
1332 |
+
|
1333 |
+
this.overlay.width(width).height(D.height());
|
1334 |
+
},
|
1335 |
+
|
1336 |
+
beforeShow: function (opts) {
|
1337 |
+
if (this.overlay) {
|
1338 |
+
return;
|
1339 |
+
}
|
1340 |
+
|
1341 |
+
opts = $.extend(true, {
|
1342 |
+
speedIn : 'fast',
|
1343 |
+
closeClick : true,
|
1344 |
+
opacity : 1,
|
1345 |
+
css : {
|
1346 |
+
background: 'black'
|
1347 |
+
}
|
1348 |
+
}, opts);
|
1349 |
+
|
1350 |
+
this.overlay = $('<div id="fancybox-overlay"></div>').css(opts.css).appendTo('body');
|
1351 |
+
|
1352 |
+
this.update();
|
1353 |
+
|
1354 |
+
if (opts.closeClick) {
|
1355 |
+
this.overlay.bind('click.fb', F.close);
|
1356 |
+
}
|
1357 |
+
|
1358 |
+
W.bind("resize.fb", $.proxy(this.update, this));
|
1359 |
+
|
1360 |
+
this.overlay.fadeTo(opts.speedIn, opts.opacity);
|
1361 |
+
},
|
1362 |
+
|
1363 |
+
onUpdate: function () {
|
1364 |
+
//Update as content may change document dimensions
|
1365 |
+
this.update();
|
1366 |
+
},
|
1367 |
+
|
1368 |
+
afterClose: function (opts) {
|
1369 |
+
if (this.overlay) {
|
1370 |
+
this.overlay.fadeOut(opts.speedOut || 0, function () {
|
1371 |
+
$(this).remove();
|
1372 |
+
});
|
1373 |
+
}
|
1374 |
+
|
1375 |
+
this.overlay = null;
|
1376 |
+
}
|
1377 |
+
};
|
1378 |
+
|
1379 |
+
/*
|
1380 |
+
* Title helper
|
1381 |
+
*/
|
1382 |
+
|
1383 |
+
F.helpers.title = {
|
1384 |
+
beforeShow: function (opts) {
|
1385 |
+
var title, text = F.current.title;
|
1386 |
+
|
1387 |
+
if (text) {
|
1388 |
+
title = $('<div class="fancybox-title fancybox-title-' + opts.type + '-wrap">' + text + '</div>').appendTo('body');
|
1389 |
+
|
1390 |
+
if (opts.type === 'float') {
|
1391 |
+
//This helps for some browsers
|
1392 |
+
title.width(title.width());
|
1393 |
+
|
1394 |
+
title.wrapInner('<span class="child"></span>');
|
1395 |
+
|
1396 |
+
//Increase bottom margin so this title will also fit into viewport
|
1397 |
+
F.current.margin[2] += Math.abs(parseInt(title.css('margin-bottom'), 10));
|
1398 |
+
}
|
1399 |
+
|
1400 |
+
title.appendTo(opts.type === 'over' ? F.inner : (opts.type === 'outside' ? F.wrap : F.outer));
|
1401 |
+
}
|
1402 |
+
}
|
1403 |
+
};
|
1404 |
+
|
1405 |
+
// jQuery plugin initialization
|
1406 |
+
$.fn.fancybox = function (options) {
|
1407 |
+
var that = $(this),
|
1408 |
+
selector = this.selector || '',
|
1409 |
+
index,
|
1410 |
+
run = function(e) {
|
1411 |
+
var what = this, idx = index, relType, relVal;
|
1412 |
+
|
1413 |
+
if (!(e.ctrlKey || e.altKey || e.shiftKey || e.metaKey)) {
|
1414 |
+
e.preventDefault();
|
1415 |
+
|
1416 |
+
relType = options.groupAttr || 'data-fancybox-group';
|
1417 |
+
relVal = $(what).attr(relType);
|
1418 |
+
|
1419 |
+
if (!relVal) {
|
1420 |
+
relType = 'rel';
|
1421 |
+
relVal = what[ relType ];
|
1422 |
+
}
|
1423 |
+
|
1424 |
+
if (relVal && relVal !== '' && relVal !== 'nofollow') {
|
1425 |
+
what = selector.length ? $(selector) : that;
|
1426 |
+
what = what.filter('[' + relType + '="' + relVal + '"]');
|
1427 |
+
idx = what.index(this);
|
1428 |
+
}
|
1429 |
+
|
1430 |
+
options.index = idx;
|
1431 |
+
|
1432 |
+
F.open(what, options);
|
1433 |
+
}
|
1434 |
+
};
|
1435 |
+
|
1436 |
+
options = options || {};
|
1437 |
+
index = options.index || 0;
|
1438 |
+
|
1439 |
+
if (selector) {
|
1440 |
+
D.undelegate(selector, 'click.fb-start').delegate(selector, 'click.fb-start', run);
|
1441 |
+
|
1442 |
+
} else {
|
1443 |
+
that.unbind('click.fb-start').bind('click.fb-start', run);
|
1444 |
+
}
|
1445 |
+
|
1446 |
+
return this;
|
1447 |
+
};
|
1448 |
+
|
1449 |
+
}(window, document));
|
backupwordpress/assets/fancyBox/source/jquery.fancybox.pack.js
ADDED
@@ -0,0 +1,35 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*! fancyBox v2.0.5 fancyapps.com | fancyapps.com/fancybox/#license */
|
2 |
+
(function(n,q,v){var d=n.jQuery,l=d(n),m=d(q),a=d.fancybox=function(){a.open.apply(this,arguments)},u=!1,r=q.createTouch!==v,s=function(a){return"string"===d.type(a)},t=function(a){return s(a)&&-1<a.indexOf("%")};d.extend(a,{version:"2.0.5",defaults:{padding:15,margin:20,width:800,height:600,minWidth:100,minHeight:100,maxWidth:9999,maxHeight:9999,autoSize:!0,autoResize:!r,autoCenter:!r,fitToView:!0,aspectRatio:!1,topRatio:0.5,fixed:!(d.browser.msie&&6>=d.browser.version)&&!r,scrolling:"auto",wrapCSS:"fancybox-default",
|
3 |
+
arrows:!0,closeBtn:!0,closeClick:!1,nextClick:!1,mouseWheel:!0,autoPlay:!1,playSpeed:3E3,preload:3,modal:!1,loop:!0,ajax:{dataType:"html",headers:{"X-fancyBox":!0}},keys:{next:[13,32,34,39,40],prev:[8,33,37,38],close:[27]},tpl:{wrap:'<div class="fancybox-wrap"><div class="fancybox-outer"><div class="fancybox-inner"></div></div></div>',image:'<img class="fancybox-image" src="{href}" alt="" />',iframe:'<iframe class="fancybox-iframe" name="fancybox-frame{rnd}" frameborder="0" hspace="0"'+(d.browser.msie?
|
4 |
+
' allowtransparency="true"':"")+"></iframe>",swf:'<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="100%" height="100%"><param name="wmode" value="transparent" /><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="{href}" /><embed src="{href}" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="100%" height="100%" wmode="transparent"></embed></object>',error:'<p class="fancybox-error">The requested content cannot be loaded.<br/>Please try again later.</p>',
|
5 |
+
closeBtn:'<div title="Close" class="fancybox-item fancybox-close"></div>',next:'<a title="Next" class="fancybox-nav fancybox-next"><span></span></a>',prev:'<a title="Previous" class="fancybox-nav fancybox-prev"><span></span></a>'},openEffect:"fade",openSpeed:250,openEasing:"swing",openOpacity:!0,openMethod:"zoomIn",closeEffect:"fade",closeSpeed:250,closeEasing:"swing",closeOpacity:!0,closeMethod:"zoomOut",nextEffect:"elastic",nextSpeed:300,nextEasing:"swing",nextMethod:"changeIn",prevEffect:"elastic",
|
6 |
+
prevSpeed:300,prevEasing:"swing",prevMethod:"changeOut",helpers:{overlay:{speedIn:0,speedOut:300,opacity:0.8,css:{cursor:"pointer"},closeClick:!0},title:{type:"float"}}},group:{},opts:{},coming:null,current:null,isOpen:!1,isOpened:!1,wrap:null,outer:null,inner:null,player:{timer:null,isActive:!1},ajaxLoad:null,imgPreload:null,transitions:{},helpers:{},open:function(b,c){a.close(!0);b&&!d.isArray(b)&&(b=b instanceof d?d(b).get():[b]);a.isActive=!0;a.opts=d.extend(!0,{},a.defaults,c);d.isPlainObject(c)&&
|
7 |
+
c.keys!==v&&(a.opts.keys=c.keys?d.extend({},a.defaults.keys,c.keys):!1);a.group=b;a._start(a.opts.index||0)},cancel:function(){a.coming&&!1===a.trigger("onCancel")||(a.coming=null,a.hideLoading(),a.ajaxLoad&&a.ajaxLoad.abort(),a.ajaxLoad=null,a.imgPreload&&(a.imgPreload.onload=a.imgPreload.onabort=a.imgPreload.onerror=null))},close:function(b){a.cancel();a.current&&!1!==a.trigger("beforeClose")&&(a.unbindEvents(),!a.isOpen||b&&!0===b[0]?(d(".fancybox-wrap").stop().trigger("onReset").remove(),a._afterZoomOut()):
|
8 |
+
(a.isOpen=a.isOpened=!1,d(".fancybox-item, .fancybox-nav").remove(),a.wrap.stop(!0).removeClass("fancybox-opened"),a.inner.css("overflow","hidden"),a.transitions[a.current.closeMethod]()))},play:function(b){var c=function(){clearTimeout(a.player.timer)},g=function(){c();a.current&&a.player.isActive&&(a.player.timer=setTimeout(a.next,a.current.playSpeed))},e=function(){c();d("body").unbind(".player");a.player.isActive=!1;a.trigger("onPlayEnd")};if(a.player.isActive||b&&!1===b[0])e();else if(a.current&&
|
9 |
+
(a.current.loop||a.current.index<a.group.length-1))a.player.isActive=!0,d("body").bind({"afterShow.player onUpdate.player":g,"onCancel.player beforeClose.player":e,"beforeLoad.player":c}),g(),a.trigger("onPlayStart")},next:function(){a.current&&a.jumpto(a.current.index+1)},prev:function(){a.current&&a.jumpto(a.current.index-1)},jumpto:function(b){a.current&&(b=parseInt(b,10),1<a.group.length&&a.current.loop&&(b>=a.group.length?b=0:0>b&&(b=a.group.length-1)),a.group[b]!==v&&(a.cancel(),a._start(b)))},
|
10 |
+
reposition:function(b,c){a.isOpen&&(c&&"scroll"===c.type?a.wrap.stop().animate(a._getPosition(b),200):a.wrap.css(a._getPosition(b)))},update:function(b){a.isOpen&&(u||setTimeout(function(){var c=a.current;if(u&&(u=!1,c)){if(!b||b&&("orientationchange"===b.type||c.autoResize&&"resize"===b.type))c.autoSize&&"iframe"!==c.type&&(a.inner.height("auto"),c.height=a.inner.height()),a._setDimension(),c.canGrow&&"iframe"!==c.type&&a.inner.height("auto");c.autoCenter&&a.reposition(null,b);a.trigger("onUpdate")}},
|
11 |
+
100),u=!0)},toggle:function(){a.isOpen&&(a.current.fitToView=!a.current.fitToView,a.update())},hideLoading:function(){m.unbind("keypress.fb");d("#fancybox-loading").remove()},showLoading:function(){a.hideLoading();m.bind("keypress.fb",function(b){27===b.keyCode&&(b.preventDefault(),a.cancel())});d('<div id="fancybox-loading"><div></div></div>').click(a.cancel).appendTo("body")},getViewport:function(){return{x:l.scrollLeft(),y:l.scrollTop(),w:n.innerWidth?n.innerWidth:l.width(),h:n.innerHeight?n.innerHeight:
|
12 |
+
l.height()}},unbindEvents:function(){a.wrap&&a.wrap.unbind(".fb");m.unbind(".fb");l.unbind(".fb")},bindEvents:function(){var b=a.current,c=b.keys;b&&(l.bind("resize.fb, orientationchange.fb",a.update),!b.fixed&&b.autoCenter&&l.bind("scroll.fb",a.update),c&&m.bind("keydown.fb",function(b){var e;!b.ctrlKey&&!b.altKey&&!b.shiftKey&&!b.metaKey&&0>d.inArray(b.target.tagName.toLowerCase(),["input","textarea","select","button"])&&!d(b.target).is("[contenteditable]")&&(e=b.keyCode,-1<d.inArray(e,c.close)?
|
13 |
+
(a.close(),b.preventDefault()):-1<d.inArray(e,c.next)?(a.next(),b.preventDefault()):-1<d.inArray(e,c.prev)&&(a.prev(),b.preventDefault()))}),d.fn.mousewheel&&b.mouseWheel&&1<a.group.length&&a.wrap.bind("mousewheel.fb",function(b,c){var d=b.target||null;if(0!==c&&(!d||0===d.clientHeight||d.scrollHeight===d.clientHeight&&d.scrollWidth===d.clientWidth))b.preventDefault(),a[0<c?"prev":"next"]()}))},trigger:function(b){var c,g=a[-1<d.inArray(b,["onCancel","beforeLoad","afterLoad"])?"coming":"current"];
|
14 |
+
if(g){d.isFunction(g[b])&&(c=g[b].apply(g,Array.prototype.slice.call(arguments,1)));if(!1===c)return!1;g.helpers&&d.each(g.helpers,function(c,f){if(f&&d.isPlainObject(a.helpers[c])&&d.isFunction(a.helpers[c][b]))a.helpers[c][b](f,g)});d.event.trigger(b+".fb")}},isImage:function(a){return s(a)&&a.match(/\.(jpg|gif|png|bmp|jpeg)(.*)?$/i)},isSWF:function(a){return s(a)&&a.match(/\.(swf)(.*)?$/i)},_start:function(b){var c={},g=a.group[b]||null,e,f,i;if(g&&(g.nodeType||g instanceof d))e=!0,d.metadata&&
|
15 |
+
(c=d(g).metadata());c=d.extend(!0,{},a.opts,{index:b,element:g},d.isPlainObject(g)?g:c);d.each(["href","title","content","type"],function(b,f){c[f]=a.opts[f]||e&&d(g).attr(f)||c[f]||null});"number"===typeof c.margin&&(c.margin=[c.margin,c.margin,c.margin,c.margin]);c.modal&&d.extend(!0,c,{closeBtn:!1,closeClick:!1,nextClick:!1,arrows:!1,mouseWheel:!1,keys:null,helpers:{overlay:{css:{cursor:"auto"},closeClick:!1}}});a.coming=c;if(!1===a.trigger("beforeLoad"))a.coming=null;else{f=c.type;b=c.href||g;
|
16 |
+
f||(e&&(i=d(g).data("fancybox-type"),!i&&g.className&&(f=(i=g.className.match(/fancybox\.(\w+)/))?i[1]:null)),!f&&s(b)&&(a.isImage(b)?f="image":a.isSWF(b)?f="swf":b.match(/^#/)&&(f="inline")),f||(f=e?"inline":"html"),c.type=f);if("inline"===f||"html"===f){if(c.content||(c.content="inline"===f?d(s(b)?b.replace(/.*(?=#[^\s]+$)/,""):b):g),!c.content||!c.content.length)f=null}else b||(f=null);"ajax"===f&&s(b)&&(i=b.split(/\s+/,2),b=i.shift(),c.selector=i.shift());c.href=b;c.group=a.group;c.isDom=e;"image"===
|
17 |
+
f?a._loadImage():"ajax"===f?a._loadAjax():f?a._afterLoad():a._error("type")}},_error:function(b){a.hideLoading();d.extend(a.coming,{type:"html",autoSize:!0,minHeight:0,hasError:b,content:a.coming.tpl.error});a._afterLoad()},_loadImage:function(){var b=a.imgPreload=new Image;b.onload=function(){this.onload=this.onerror=null;a.coming.width=this.width;a.coming.height=this.height;a._afterLoad()};b.onerror=function(){this.onload=this.onerror=null;a._error("image")};b.src=a.coming.href;b.width||a.showLoading()},
|
18 |
+
_loadAjax:function(){a.showLoading();a.ajaxLoad=d.ajax(d.extend({},a.coming.ajax,{url:a.coming.href,error:function(b,c){a.coming&&"abort"!==c?a._error("ajax",b):a.hideLoading()},success:function(b,c){"success"===c&&(a.coming.content=b,a._afterLoad())}}))},_preloadImages:function(){var b=a.group,c=a.current,g=b.length,e,f,i,h=Math.min(c.preload,g-1);if(c.preload&&!(2>b.length))for(i=1;i<=h;i+=1)if(e=b[(c.index+i)%g],f=d(e).attr("href")||e,"image"===e.type||a.isImage(f))(new Image).src=f},_afterLoad:function(){a.hideLoading();
|
19 |
+
!a.coming||!1===a.trigger("afterLoad",a.current)?a.coming=!1:(a.isOpened?(d(".fancybox-item").remove(),a.wrap.stop(!0).removeClass("fancybox-opened"),a.inner.css("overflow","hidden"),a.transitions[a.current.prevMethod]()):(d(".fancybox-wrap").stop().trigger("onReset").remove(),a.trigger("afterClose")),a.unbindEvents(),a.isOpen=!1,a.current=a.coming,a.wrap=d(a.current.tpl.wrap).addClass("fancybox-"+(r?"mobile":"desktop")+" fancybox-type-"+a.current.type+" fancybox-tmp "+a.current.wrapCSS).appendTo("body"),
|
20 |
+
a.outer=d(".fancybox-outer",a.wrap).css("padding",a.current.padding+"px"),a.inner=d(".fancybox-inner",a.wrap),a._setContent())},_setContent:function(){var b=a.current,c=b.content,g=b.type,e;e=b.minWidth;var f=b.minHeight,i=b.maxWidth,h=b.maxHeight;switch(g){case "inline":case "ajax":case "html":b.selector?c=d("<div>").html(c).find(b.selector):c instanceof d&&(c.parent().hasClass("fancybox-inner")&&c.parents(".fancybox-wrap").unbind("onReset"),c=c.show().detach(),d(a.wrap).bind("onReset",function(){c.appendTo("body").hide()}));
|
21 |
+
b.autoSize&&(e=d('<div class="fancybox-wrap '+a.current.wrapCSS+' fancybox-tmp"></div>').appendTo("body").css({minWidth:t(e)?e:e+"px",minHeight:t(f)?f:f+"px",maxWidth:t(i)?i:i+"px",maxHeight:t(h)?h:h+"px"}).append(c),b.width=e.width(),b.height=e.height(),e.width(a.current.width),e.height()>b.height&&(e.width(b.width+1),b.width=e.width(),b.height=e.height()),c=e.contents().detach(),e.remove());break;case "image":c=b.tpl.image.replace("{href}",b.href);b.aspectRatio=!0;break;case "swf":c=b.tpl.swf.replace(/\{width\}/g,
|
22 |
+
b.width).replace(/\{height\}/g,b.height).replace(/\{href\}/g,b.href);break;case "iframe":c=d(b.tpl.iframe.replace("{rnd}",(new Date).getTime())).attr("scrolling",b.scrolling).attr("src",b.href),b.scrolling=r?"scroll":"auto"}if("image"===g||"swf"===g)b.autoSize=!1,b.scrolling="visible";"iframe"===g&&b.autoSize?(a.showLoading(),a.inner.width(b.width).height(b.height).css("overflow",b.scrolling),c.bind({onCancel:function(){d(this).unbind();a._afterZoomOut()},load:function(){a.hideLoading();try{this.contentWindow.document.location&&
|
23 |
+
(a.current.height=d(this).contents().find("body").height())}catch(b){a.current.autoSize=!1}a.isOpened?a.update():a._beforeShow()}}).appendTo(a.inner)):(a.inner.append(c),a._beforeShow())},_beforeShow:function(){a.coming=null;a.trigger("beforeShow");a._setDimension();a.wrap.hide().removeClass("fancybox-tmp");a.bindEvents();a._preloadImages();a.transitions[a.isOpened?a.current.nextMethod:a.current.openMethod]()},_setDimension:function(){var b=a.wrap,c=a.outer,g=a.inner,e=a.current,f=a.getViewport(),
|
24 |
+
i=e.margin,h=2*e.padding,j=e.width,k=e.height,l=e.maxWidth+h,o=e.maxHeight+h,m=e.minWidth+h,n=e.minHeight+h,p;f.w-=i[1]+i[3];f.h-=i[0]+i[2];t(j)&&(j=(f.w-h)*parseFloat(j)/100);t(k)&&(k=(f.h-h)*parseFloat(k)/100);i=j/k;j+=h;k+=h;e.fitToView&&(l=Math.min(f.w,l),o=Math.min(f.h,o));if(e.aspectRatio){if(j>l&&(j=l,k=(j-h)/i+h),k>o&&(k=o,j=(k-h)*i+h),j<m&&(j=m,k=(j-h)/i+h),k<n)k=n,j=(k-h)*i+h}else j=Math.max(m,Math.min(j,l)),k=Math.max(n,Math.min(k,o));j=Math.round(j);k=Math.round(k);d(b.add(c).add(g)).width("auto").height("auto");
|
25 |
+
g.width(j-h).height(k-h);b.width(j);p=b.height();if(j>l||p>o)for(;(j>l||p>o)&&j>m&&p>n;)k-=10,e.aspectRatio?(j=Math.round((k-h)*i+h),j<m&&(j=m,k=(j-h)/i+h)):j-=10,g.width(j-h).height(k-h),b.width(j),p=b.height();e.dim={width:j,height:p};e.canGrow=e.autoSize&&k>n&&k<o;e.canShrink=!1;e.canExpand=!1;if(j-h<e.width||k-h<e.height)e.canExpand=!0;else if((j>f.w||p>f.h)&&j>m&&k>n)e.canShrink=!0;b=p-h;a.innerSpace=b-g.height();a.outerSpace=b-c.height()},_getPosition:function(b){var c=a.current,d=a.getViewport(),
|
26 |
+
e=c.margin,f=a.wrap.width()+e[1]+e[3],i=a.wrap.height()+e[0]+e[2],h={position:"absolute",top:e[0]+d.y,left:e[3]+d.x};if(c.autoCenter&&c.fixed&&(!b||!1===b[0])&&i<=d.h&&f<=d.w)h={position:"fixed",top:e[0],left:e[3]};h.top=Math.ceil(Math.max(h.top,h.top+(d.h-i)*c.topRatio))+"px";h.left=Math.ceil(Math.max(h.left,h.left+0.5*(d.w-f)))+"px";return h},_afterZoomIn:function(){var b=a.current,c=b?b.scrolling:"no";if(b&&(a.isOpen=a.isOpened=!0,a.wrap.addClass("fancybox-opened").css("overflow","visible"),a.inner.css("overflow",
|
27 |
+
"yes"===c?"scroll":"no"===c?"hidden":c),(b.closeClick||b.nextClick)&&a.inner.css("cursor","pointer").bind("click.fb",function(c){if(!d(c.target).is("a")&&!d(c.target).parent().is("a"))a[b.closeClick?"close":"next"]()}),b.closeBtn&&d(b.tpl.closeBtn).appendTo(a.outer).bind("click.fb",a.close),b.arrows&&1<a.group.length&&((b.loop||0<b.index)&&d(b.tpl.prev).appendTo(a.inner).bind("click.fb",a.prev),(b.loop||b.index<a.group.length-1)&&d(b.tpl.next).appendTo(a.inner).bind("click.fb",a.next)),a.trigger("afterShow"),
|
28 |
+
a.update(),a.opts.autoPlay&&!a.player.isActive))a.opts.autoPlay=!1,a.play()},_afterZoomOut:function(){a.trigger("afterClose");a.wrap.trigger("onReset").remove();d.extend(a,{group:{},opts:{},current:null,isActive:!1,isOpened:!1,isOpen:!1,wrap:null,outer:null,inner:null})}});a.transitions={getOrigPosition:function(){var b=a.current,c=b.element,g=b.padding,e=d(b.orig),f={},i=50,h=50;!e.length&&b.isDom&&d(c).is(":visible")&&(e=d(c).find("img:first"),e.length||(e=d(c)));e.length?(f=e.offset(),e.is("img")&&
|
29 |
+
(i=e.outerWidth(),h=e.outerHeight())):(b=a.getViewport(),f.top=b.y+0.5*(b.h-h),f.left=b.x+0.5*(b.w-i));return f={top:Math.ceil(f.top-g)+"px",left:Math.ceil(f.left-g)+"px",width:Math.ceil(i+2*g)+"px",height:Math.ceil(h+2*g)+"px"}},step:function(b,c){var d,e,f;if("width"===c.prop||"height"===c.prop)e=f=Math.ceil(b-2*a.current.padding),"height"===c.prop&&(d=(b-c.start)/(c.end-c.start),c.start>c.end&&(d=1-d),e-=a.innerSpace*d,f-=a.outerSpace*d),a.inner[c.prop](e),a.outer[c.prop](f)},zoomIn:function(){var b=
|
30 |
+
a.wrap,c=a.current,g=c.openEffect,e="elastic"===g,f=d.extend({},c.dim,a._getPosition(e)),i=d.extend({opacity:1},f);delete i.position;e?(f=this.getOrigPosition(),c.openOpacity&&(f.opacity=0),a.outer.add(a.inner).width("auto").height("auto")):"fade"===g&&(f.opacity=0);b.css(f).show().animate(i,{duration:"none"===g?0:c.openSpeed,easing:c.openEasing,step:e?this.step:null,complete:a._afterZoomIn})},zoomOut:function(){var b=a.wrap,c=a.current,d=c.openEffect,e="elastic"===d,f={opacity:0};e&&("fixed"===b.css("position")&&
|
31 |
+
b.css(a._getPosition(!0)),f=this.getOrigPosition(),c.closeOpacity&&(f.opacity=0));b.animate(f,{duration:"none"===d?0:c.closeSpeed,easing:c.closeEasing,step:e?this.step:null,complete:a._afterZoomOut})},changeIn:function(){var b=a.wrap,c=a.current,d=c.nextEffect,e=a._getPosition("elastic"===d),f={opacity:1};"elastic"===d&&(e.top=parseInt(e.top,10)-200+"px",f.top="+=200px",e.opacity=0);b.css(e).show().animate(f,{duration:"none"===d?0:c.nextSpeed,easing:c.nextEasing,complete:function(){setTimeout(a._afterZoomIn,
|
32 |
+
1)}})},changeOut:function(){var b=a.wrap,c=a.current,g=c.nextEffect,e={opacity:0};b.removeClass("fancybox-opened");"elastic"===g&&(e.top="+=200px");b.animate(e,{duration:"none"===g?0:c.prevSpeed,easing:c.prevEasing,complete:function(){d(this).trigger("onReset").remove()}})}};a.helpers.overlay={overlay:null,update:function(){var a,c;r||this.overlay.width(0).height(0);d.browser.msie?(a=Math.max(q.documentElement.scrollWidth,q.body.scrollWidth),c=Math.max(q.documentElement.offsetWidth,q.body.offsetWidth),
|
33 |
+
a=a<c?l.width():a):a=m.width();this.overlay.width(a).height(m.height())},beforeShow:function(b){this.overlay||(b=d.extend(!0,{speedIn:"fast",closeClick:!0,opacity:1,css:{background:"black"}},b),this.overlay=d('<div id="fancybox-overlay"></div>').css(b.css).appendTo("body"),this.update(),b.closeClick&&this.overlay.bind("click.fb",a.close),l.bind("resize.fb",d.proxy(this.update,this)),this.overlay.fadeTo(b.speedIn,b.opacity))},onUpdate:function(){this.update()},afterClose:function(a){this.overlay&&
|
34 |
+
this.overlay.fadeOut(a.speedOut||0,function(){d(this).remove()});this.overlay=null}};a.helpers.title={beforeShow:function(b){var c;if(c=a.current.title)c=d('<div class="fancybox-title fancybox-title-'+b.type+'-wrap">'+c+"</div>").appendTo("body"),"float"===b.type&&(c.width(c.width()),c.wrapInner('<span class="child"></span>'),a.current.margin[2]+=Math.abs(parseInt(c.css("margin-bottom"),10))),c.appendTo("over"===b.type?a.inner:"outside"===b.type?a.wrap:a.outer)}};d.fn.fancybox=function(b){var c=d(this),
|
35 |
+
g=this.selector||"",e,f=function(f){var h=this,j=e,k;!f.ctrlKey&&!f.altKey&&!f.shiftKey&&!f.metaKey&&(f.preventDefault(),f=b.groupAttr||"data-fancybox-group",k=d(h).attr(f),k||(f="rel",k=h[f]),k&&""!==k&&"nofollow"!==k&&(h=g.length?d(g):c,h=h.filter("["+f+'="'+k+'"]'),j=h.index(this)),b.index=j,a.open(h,b))},b=b||{};e=b.index||0;g?m.undelegate(g,"click.fb-start").delegate(g,"click.fb-start",f):c.unbind("click.fb-start").bind("click.fb-start",f);return this}})(window,document);
|
backupwordpress/assets/hmbkp.css
ADDED
@@ -0,0 +1,81 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
#icon-backupwordpress.icon32 { background: url(icon_backupwordpress_32x32.png); }
|
2 |
+
|
3 |
+
tfoot p { margin: 0; font-weight: normal; }
|
4 |
+
#hmbkp-constants dl { overflow: hidden; margin: 20px 0; }
|
5 |
+
#hmbkp-constants dt { float: left; min-width: 250px; clear: both; padding: 6px; margin: 1px 0; cursor: pointer; }
|
6 |
+
#hmbkp-constants dd { color: #666; padding: 7px 0 7px 250px; border-top: 1px solid #DFDFDF; margin: 0; cursor: pointer; min-height: 40px; }
|
7 |
+
#hmbkp-constants dd:last-child { border-bottom: 1px solid #DFDFDF; }
|
8 |
+
#hmbkp-constants dt:not(.hmbkp_active) + dd { background: #F9F9F9; }
|
9 |
+
#hmbkp-constants dd .example { white-space: nowrap; display: none; }
|
10 |
+
#hmbkp-constants dd p { margin: 0; }
|
11 |
+
#hmbkp-constants dt:not(.hmbkp_active):hover + dd, #hmbkp-constants dt:not(.hmbkp_active) + dd:hover { background-color: #FFF; }
|
12 |
+
#hmbkp-constants dd:hover p, #hmbkp-constants dt:hover + dd p { display: none; }
|
13 |
+
#hmbkp-constants dd:hover .example, #hmbkp-constants dt:hover + dd .example { display: inline; }
|
14 |
+
|
15 |
+
.completed th, .completed td { background-color: #FFFFE0; }
|
16 |
+
.hmbkp_active:before { content: "\00a0 \2713 "; font-size: 11px; }
|
17 |
+
.hmbkp_active, .hmbkp_active code, #hmbkp-constants .hmbkp_active + dd { background: #E5F7E8; }
|
18 |
+
.contextual-help-tabs-wrap .updated { margin: 15px 0 0; }
|
19 |
+
|
20 |
+
.subsubsub { width: 100%; margin: 20px 0px 0px 0px; border-bottom: 1px solid #EEE; }
|
21 |
+
.subsubsub li + li::before { content: "| "; }
|
22 |
+
.subsubsub .add-new-h2 { top: 0; }
|
23 |
+
|
24 |
+
.ui-tabs-nav .ui-tabs-selected a, .ui-tabs-nav .ui-state-active a { font-weight: bold; color: #000; }
|
25 |
+
.hmbkp_schedule { clear: both; overflow: hidden; }
|
26 |
+
|
27 |
+
.fancybox-inner { overflow-x: hidden !important; }
|
28 |
+
.fancybox-inner fieldset { max-width: 100%; }
|
29 |
+
.hmbkp-form fieldset { float: left; }
|
30 |
+
.js .hmbkp-form fieldset + fieldset { display: none; margin-right: -100%; }
|
31 |
+
|
32 |
+
.hmbkp-form label { display: block; line-height: 25px; padding-bottom: 20px; border-bottom: 1px dotted #CCC; margin-bottom: 20px; width: 320px; position: relative; }
|
33 |
+
|
34 |
+
.hmbkp-form legend { padding: 0 0 20px; font-size: 1.17em; font-weight: bold; }
|
35 |
+
.hmbkp-form label > * { float: right; }
|
36 |
+
.hmbkp-form label.hidden { display: none; }
|
37 |
+
.hmbkp-form label > input, .hmbkp-form label > select { min-width: 200px; }
|
38 |
+
.hmbkp-form label .description { line-height: 16px; margin-top: 10px; float: none; }
|
39 |
+
.hmbkp-form p.submit { margin: 20px 0 0; padding: 0; }
|
40 |
+
.hmbkp-form .button-primary { float: right; }
|
41 |
+
.hmbkp-form [type="number"] { min-width: 40px; width: 40px; }
|
42 |
+
.hmbkp-error span { position: absolute; top: -18px; left: 0; color: red; }
|
43 |
+
.hmbkp-error input[type], .hmbkp-error select { border-color: red; }
|
44 |
+
|
45 |
+
.hmbkp-form ul { width: 320px; overflow: hidden; }
|
46 |
+
.hmbkp-form ul.hmbkp_file_list { background-color: #FFF; max-height: 200px; overflow-y: scroll; display: block; border-radius: 4px; box-sizing: border-box; clear: both; box-shadow: inset 0px 0px 2px #CCC; font-size: 11px; }
|
47 |
+
.hmbkp_file_list li { margin: 0; padding: 5px; max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; line-height: 16px; }
|
48 |
+
.hmbkp_file_list li + li { border-top: 1px dotted #CCC; }
|
49 |
+
|
50 |
+
.hmbkp-schedule-sentence { margin: 0; font-size: 16px; font-weight: lighter; margin: 30px 0 10px; clear: both; margin-left: 10px; }
|
51 |
+
.hmbkp-schedule-sentence::before { content: "\2714"; margin-right: 10px; width: 16px; height: 47px; display: block; float: left; }
|
52 |
+
.hmbkp-schedule-sentence.hmbkp-running::before { background-image: url('wpspin_light.gif'); background-repeat: no-repeat; margin-right: 10px; content: " "; }
|
53 |
+
.hmbkp-schedule-sentence .hmbkp-status { display: block; font-size: 12px; color: #666; margin: 2px 0 0 26px; }
|
54 |
+
.hmbkp-schedule-sentence [title] { border-bottom: 1px dotted #CCC; cursor: help; }
|
55 |
+
|
56 |
+
.hmbkp-schedule-sentence .hmbkp-schedule-actions { visibility: visible; }
|
57 |
+
.hmbkp-schedule-actions { font-size: 12px; font-weight: normal; margin: 0 0 0 26px; }
|
58 |
+
|
59 |
+
button.hmbkp-ajax-loading { padding-left: 20px; }
|
60 |
+
button.hmbkp-ajax-loading::before { background-image: url('wpspin_light.gif'); background-repeat: no-repeat; background-position: 1px -1px; margin-left: -20px; display: inline-block; width: 16px; height: 16px; content: " "; vertical-align: middle; padding-right: 3px; }
|
61 |
+
|
62 |
+
button { height: 14px; }
|
63 |
+
|
64 |
+
.delete-action { color: #BC0B0B; }
|
65 |
+
.delete-action:hover .delete-action:focus { color: red; }
|
66 |
+
|
67 |
+
label[for="hmbkp-new-exclude-rule"] { overflow: hidden; }
|
68 |
+
.hmbkp_preview_exclude_rule { float: right; margin-top: 1px; }
|
69 |
+
.hmbkp_preview_exclude_rule.hmbkp-ajax-loading { width: 44px; }
|
70 |
+
div.hmbkp_add_exclude_rule { display: block; line-height: 25px; width: 320px; overflow: hidden; }
|
71 |
+
div.hmbkp_add_exclude_rule input { min-width: 240px; float: left; }
|
72 |
+
.hmbkp_preview_exclude_rule { float: right; width: 56px; }
|
73 |
+
.hmbkp_save_exclude_rule, .hmbkp_cancel_save_exclude_rule { float: right; }
|
74 |
+
|
75 |
+
.hmbkp-exclude-preview-open table, .hmbkp-exclude-preview-open .hmbkp-tabs, .hmbkp-exclude-preview-open p.submit { display: none; }
|
76 |
+
.hmbkp-exclude-preview-open .hmbkp_add_exclude_rule { margin: 0; }
|
77 |
+
|
78 |
+
table.widefat tbody td { padding: 8px 7px; }
|
79 |
+
.hmbkp-edit-schedule-excludes-form td a, .hmbkp-edit-schedule-excludes-form td span.reason { float: right; }
|
80 |
+
.hmbkp-edit-schedule-excludes-form td span.reason { color: #CCC; }
|
81 |
+
input[type="datetime-local"] { border-radius: 3px; border-width: 1px; border-style: solid; box-sizing: border-box; border-color: #DFDFDF; background-color: white; }
|
backupwordpress/assets/hmbkp.js
ADDED
@@ -0,0 +1,351 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
jQuery( document ).ready( function( $ ) {
|
2 |
+
|
3 |
+
// Don't ever cache ajax requests
|
4 |
+
$.ajaxSetup( { 'cache' : false } );
|
5 |
+
|
6 |
+
// Remove the loading class when ajax requests complete
|
7 |
+
$( document ).ajaxComplete( function() {
|
8 |
+
$( '.hmbkp-ajax-loading' ).removeClass( 'hmbkp-ajax-loading' );
|
9 |
+
} );
|
10 |
+
|
11 |
+
// Setup the tabs
|
12 |
+
$( '.hmbkp-tabs' ).tabs();
|
13 |
+
|
14 |
+
// Set the first tab to be active
|
15 |
+
if ( ! $( '.subsubsub a.current' ).size() )
|
16 |
+
$( '.subsubsub li:first a').addClass( 'current' );
|
17 |
+
|
18 |
+
// Initialize fancybox
|
19 |
+
$( '.fancybox' ).fancybox( {
|
20 |
+
|
21 |
+
'modal' : true,
|
22 |
+
'type' : 'ajax',
|
23 |
+
'maxWidth' : 320,
|
24 |
+
'afterShow' : function() {
|
25 |
+
|
26 |
+
$( '.hmbkp-tabs' ).tabs();
|
27 |
+
|
28 |
+
if ( $( '.hmbkp-form p.submit:contains(\'Update\')' ).size() )
|
29 |
+
$( '<button type="button" class="button-secondary hmbkp_cancel">' + objectL10n.cancel + '</button></p>' ).appendTo( '.hmbkp-form p.submit' );
|
30 |
+
|
31 |
+
$( '.hmbkp_cancel' ).click( function() {
|
32 |
+
$.fancybox.close();
|
33 |
+
} );
|
34 |
+
|
35 |
+
}
|
36 |
+
|
37 |
+
} );
|
38 |
+
|
39 |
+
// Show delete confirm message for delete schedule
|
40 |
+
$( document ).on( 'click', '.hmbkp-schedule-actions .delete-action', function( e ) {
|
41 |
+
|
42 |
+
if ( ! confirm( objectL10n.delete_schedule ) )
|
43 |
+
e.preventDefault();
|
44 |
+
|
45 |
+
} );
|
46 |
+
|
47 |
+
// Show delete confirm message for delete backup
|
48 |
+
$( document ).on( 'click', '.hmbkp_manage_backups_row .delete-action', function( e ) {
|
49 |
+
|
50 |
+
if ( ! confirm( objectL10n.delete_backup ) )
|
51 |
+
e.preventDefault();
|
52 |
+
|
53 |
+
} );
|
54 |
+
|
55 |
+
// Show delete confirm message for remove exclude rule
|
56 |
+
$( document ).on( 'click', '.hmbkp-edit-schedule-excludes-form .delete-action', function( e ) {
|
57 |
+
|
58 |
+
if ( ! confirm( objectL10n.remove_exclude_rule ) )
|
59 |
+
e.preventDefault();
|
60 |
+
|
61 |
+
} );
|
62 |
+
|
63 |
+
// Preview exclude rule
|
64 |
+
$( document ).on( 'click', '.hmbkp_preview_exclude_rule', function() {
|
65 |
+
|
66 |
+
if ( ! $( '.hmbkp_add_exclude_rule input' ).val() ) {
|
67 |
+
$( '.hmbkp_add_exclude_rule ul' ).remove();
|
68 |
+
$( '.hmbkp_add_exclude_rule p' ).remove();
|
69 |
+
return;
|
70 |
+
}
|
71 |
+
|
72 |
+
$( this ).addClass( 'hmbkp-ajax-loading' );
|
73 |
+
|
74 |
+
$.post(
|
75 |
+
ajaxurl,
|
76 |
+
{ 'action' : 'hmbkp_file_list', 'hmbkp_schedule_excludes' : $( '.hmbkp_add_exclude_rule input' ).val(), 'hmbkp_schedule_id' : $( '[name="hmbkp_schedule_id"]' ).val(), 'hmbkp_file_method' : 'get_excluded_files' },
|
77 |
+
function( data ) {
|
78 |
+
|
79 |
+
$( '.hmbkp_add_exclude_rule ul' ).remove();
|
80 |
+
$( '.hmbkp_add_exclude_rule p' ).remove();
|
81 |
+
|
82 |
+
if ( data.indexOf( 'hmbkp_file_list' ) != -1 )
|
83 |
+
$( '.hmbkp_add_exclude_rule' ).append( data );
|
84 |
+
|
85 |
+
else
|
86 |
+
$( '.hmbkp_add_exclude_rule' ).append( '<p>There was an error previewing the exclude rule.</p>' );
|
87 |
+
|
88 |
+
$( '.hmbkp-edit-schedule-excludes-form' ).addClass( 'hmbkp-exclude-preview-open' );
|
89 |
+
|
90 |
+
}
|
91 |
+
).error( function() {
|
92 |
+
|
93 |
+
|
94 |
+
|
95 |
+
} );
|
96 |
+
|
97 |
+
} );
|
98 |
+
|
99 |
+
// Fire the preview button when the enter key is pressed in the preview input
|
100 |
+
$( document ).on( 'keypress', '.hmbkp_add_exclude_rule input', function( e ) {
|
101 |
+
|
102 |
+
if ( ! $( '.hmbkp_add_exclude_rule input' ).val() )
|
103 |
+
return true;
|
104 |
+
|
105 |
+
var code = ( e.keyCode ? e.keyCode : e.which );
|
106 |
+
|
107 |
+
if ( code != 13 )
|
108 |
+
return true;
|
109 |
+
|
110 |
+
$( '.hmbkp_preview_exclude_rule' ).click();
|
111 |
+
|
112 |
+
e.preventDefault();
|
113 |
+
|
114 |
+
} );
|
115 |
+
|
116 |
+
// Cancel add exclude rule
|
117 |
+
$( document ).on( 'click', '.hmbkp_cancel_save_exclude_rule, .hmbkp-edit-schedule-excludes-form .submit button', function() {
|
118 |
+
|
119 |
+
$( '.hmbkp_add_exclude_rule ul' ).remove();
|
120 |
+
$( '.hmbkp_add_exclude_rule p' ).remove();
|
121 |
+
|
122 |
+
$( '.hmbkp-edit-schedule-excludes-form' ).removeClass( 'hmbkp-exclude-preview-open' );
|
123 |
+
|
124 |
+
} );
|
125 |
+
|
126 |
+
// Toggle additional fieldsets on
|
127 |
+
$( document ).on( 'click', '.hmbkp-toggle-fieldset', function() {
|
128 |
+
|
129 |
+
// Get the current fieldset
|
130 |
+
var fromFieldset = 'fieldset.' + $( this ).closest( 'fieldset' ).attr( 'class' );
|
131 |
+
var toFieldset = 'fieldset.' + $( this ).attr( 'data-hmbkp-fieldset' );
|
132 |
+
|
133 |
+
// Show the one we are moving too
|
134 |
+
$( toFieldset ).show().find( 'p.submit button' ).data( 'hmbkp-previous-fieldset', fromFieldset );
|
135 |
+
|
136 |
+
// Animate
|
137 |
+
$( fromFieldset ).animate( {
|
138 |
+
marginLeft : '-100%'
|
139 |
+
}, 'fast', function() {
|
140 |
+
$( this ).hide();
|
141 |
+
} );
|
142 |
+
|
143 |
+
} );
|
144 |
+
|
145 |
+
// Toggle additional fieldsets off
|
146 |
+
$( document ).on( 'click', '.hmbkp-form fieldset + fieldset p.submit button', function() {
|
147 |
+
|
148 |
+
// Get the current fieldset
|
149 |
+
var fromFieldset = 'fieldset.' + $( this ).closest( 'fieldset' ).attr( 'class' );
|
150 |
+
var toFieldset = $( this ).data( 'hmbkp-previous-fieldset' );
|
151 |
+
|
152 |
+
// Show the one we are moving too
|
153 |
+
$( toFieldset ).show();
|
154 |
+
|
155 |
+
$( toFieldset ).animate( {
|
156 |
+
marginLeft : '0'
|
157 |
+
}, 'fast', function() {
|
158 |
+
$( fromFieldset ).hide();
|
159 |
+
}
|
160 |
+
);
|
161 |
+
|
162 |
+
} );
|
163 |
+
|
164 |
+
// Add exclude rule
|
165 |
+
$( document ).on( 'click', '.hmbkp_save_exclude_rule', function() {
|
166 |
+
|
167 |
+
$( this ).addClass( 'hmbkp-ajax-loading' );
|
168 |
+
|
169 |
+
$.post(
|
170 |
+
ajaxurl,
|
171 |
+
{ 'action' : 'hmbkp_add_exclude_rule', 'hmbkp_exclude_rule' : $( '.hmbkp_add_exclude_rule input' ).val(), 'hmbkp_schedule_id' : $( '[name="hmbkp_schedule_id"]' ).val() },
|
172 |
+
function( data ) {
|
173 |
+
$( '.hmbkp-edit-schedule-excludes-form' ).replaceWith( data );
|
174 |
+
$( '.hmbkp-edit-schedule-excludes-form' ).show();
|
175 |
+
$( '.hmbkp-tabs' ).tabs();
|
176 |
+
}
|
177 |
+
);
|
178 |
+
|
179 |
+
} );
|
180 |
+
|
181 |
+
// Remove exclude rule
|
182 |
+
$( document ).on( 'click', '.hmbkp-edit-schedule-excludes-form td a', function( e ) {
|
183 |
+
|
184 |
+
$( this ).addClass( 'hmbkp-ajax-loading' );
|
185 |
+
|
186 |
+
e.preventDefault();
|
187 |
+
|
188 |
+
$.post(
|
189 |
+
ajaxurl,
|
190 |
+
{ 'action' : 'hmbkp_delete_exclude_rule', 'hmbkp_exclude_rule' : $( this ).closest( 'td' ).attr( 'data-hmbkp-exclude-rule' ), 'hmbkp_schedule_id' : $( '[name="hmbkp_schedule_id"]' ).val() },
|
191 |
+
function( data ) {
|
192 |
+
$( '.hmbkp-edit-schedule-excludes-form' ).replaceWith( data );
|
193 |
+
$( '.hmbkp-edit-schedule-excludes-form' ).show();
|
194 |
+
$( '.hmbkp-tabs' ).tabs();
|
195 |
+
}
|
196 |
+
);
|
197 |
+
|
198 |
+
} );
|
199 |
+
|
200 |
+
// Edit schedule form submit
|
201 |
+
$( document ).on( 'submit', 'form.hmbkp-form', function( e ) {
|
202 |
+
|
203 |
+
isNewSchedule = $( this ).closest( 'form' ).attr( 'data-schedule-action' ) == 'add' ? true : false;
|
204 |
+
scheduleId = $( this ).closest( 'form' ).find( '[name="hmbkp_schedule_id"]' ).val();
|
205 |
+
|
206 |
+
// Warn that backups will be deleted if max backups has been set to less than the number of backups currently stored
|
207 |
+
if ( ! isNewSchedule && Number( $( 'input[name="hmbkp_schedule_max_backups"]' ).val() ) < Number( $( '.hmbkp_manage_backups_row' ).size() ) && ! confirm( objectL10n.remove_old_backups ) )
|
208 |
+
return false;
|
209 |
+
|
210 |
+
$( this ).find( 'button[type="submit"]' ).addClass( 'hmbkp-ajax-loading' );
|
211 |
+
|
212 |
+
$( '.hmbkp-error span' ).remove();
|
213 |
+
$( '.hmbkp-error' ).removeClass( 'hmbkp-error' );
|
214 |
+
|
215 |
+
e.preventDefault();
|
216 |
+
|
217 |
+
$.post(
|
218 |
+
ajaxurl + '?' + $( this ).serialize(),
|
219 |
+
{ 'action' : 'hmnkp_edit_schedule_submit' },
|
220 |
+
function( data ) {
|
221 |
+
|
222 |
+
// Assume success if no data passed back
|
223 |
+
if ( ! data ) {
|
224 |
+
|
225 |
+
$.fancybox.close();
|
226 |
+
|
227 |
+
// Reload the page so we see changes
|
228 |
+
if ( isNewSchedule )
|
229 |
+
location.replace( '//' + location.host + location.pathname + '?page=backupwordpress&hmbkp_schedule_id=' + scheduleId );
|
230 |
+
|
231 |
+
else
|
232 |
+
location.reload( true );
|
233 |
+
|
234 |
+
} else {
|
235 |
+
|
236 |
+
// Get the errors json string
|
237 |
+
errors = JSON.parse( data );
|
238 |
+
|
239 |
+
// Loop through the errors
|
240 |
+
$.each( errors, function( key, value ) {
|
241 |
+
|
242 |
+
// Focus the first field that errored
|
243 |
+
if ( typeof( hmbkp_focused ) == 'undefined' ) {
|
244 |
+
|
245 |
+
$( '[name="' + key + '"]' ).focus();
|
246 |
+
|
247 |
+
hmbkp_focused = true;
|
248 |
+
|
249 |
+
}
|
250 |
+
|
251 |
+
// Add an error class to all fields with errors
|
252 |
+
$( '[name="' + key + '"]' ).closest( 'label' ).addClass( 'hmbkp-error' );
|
253 |
+
|
254 |
+
// Add the error message
|
255 |
+
$( '[name="' + key + '"]' ).after( '<span>' + value + '</span>' );
|
256 |
+
|
257 |
+
} );
|
258 |
+
|
259 |
+
}
|
260 |
+
|
261 |
+
}
|
262 |
+
);
|
263 |
+
|
264 |
+
} );
|
265 |
+
|
266 |
+
// Text the cron response using ajax
|
267 |
+
$.get( ajaxurl, { 'action' : 'hmbkp_cron_test' },
|
268 |
+
function( data ) {
|
269 |
+
if ( data != 1 ) {
|
270 |
+
$( '.wrap > h2' ).after( data );
|
271 |
+
}
|
272 |
+
}
|
273 |
+
);
|
274 |
+
|
275 |
+
// Calculate the estimated backup size
|
276 |
+
if ( $( '.hmbkp-schedule-sentence .calculating' ).size() ) {
|
277 |
+
$.get( ajaxurl, { 'action' : 'hmbkp_calculate', 'hmbkp_schedule_id' : $( '[data-hmbkp-schedule-id]' ).attr( 'data-hmbkp-schedule-id' ) },
|
278 |
+
function( data ) {
|
279 |
+
|
280 |
+
if ( data.indexOf( 'title' ) != -1 )
|
281 |
+
$( '.hmbkp-schedule-sentence' ).replaceWith( data );
|
282 |
+
|
283 |
+
// Fail silently for now
|
284 |
+
else
|
285 |
+
$( '.calculating' ).remove();
|
286 |
+
|
287 |
+
}
|
288 |
+
).error( function() {
|
289 |
+
|
290 |
+
// Fail silently for now
|
291 |
+
$( '.calculating' ).remove();
|
292 |
+
|
293 |
+
} );
|
294 |
+
}
|
295 |
+
|
296 |
+
if ( $( '.hmbkp-running' ).size() )
|
297 |
+
hmbkpRedirectOnBackupComplete();
|
298 |
+
|
299 |
+
$( '.hmbkp-run' ).live( 'click', function( e ) {
|
300 |
+
|
301 |
+
scheduleId = $( '[data-hmbkp-schedule-id]' ).attr( 'data-hmbkp-schedule-id' );
|
302 |
+
|
303 |
+
ajaxRequest = $.get(
|
304 |
+
ajaxurl,
|
305 |
+
{ 'action' : 'hmbkp_run_schedule', 'hmbkp_schedule_id' : scheduleId },
|
306 |
+
function( data ) {
|
307 |
+
|
308 |
+
if ( data.indexOf( 'hmbkp-schedule-actions' ) != -1 )
|
309 |
+
location.reload( true );
|
310 |
+
|
311 |
+
// The backup failed so just redirect back
|
312 |
+
else
|
313 |
+
location.replace( '//' + location.host + location.pathname + '?page=backupwordpress&action=hmbkp_cancel&reason=broken&hmbkp_schedule_id=' + scheduleId );
|
314 |
+
|
315 |
+
}
|
316 |
+
).error( function() {
|
317 |
+
location.replace( '//' + location.host + location.pathname + '?page=backupwordpress&action=hmbkp_cancel&reason=broken&hmbkp_schedule_id=' + scheduleId );
|
318 |
+
} );
|
319 |
+
|
320 |
+
$( this ).closest( '.hmbkp-schedule-sentence' ).addClass( 'hmbkp-running' );
|
321 |
+
|
322 |
+
hmbkpRedirectOnBackupComplete();
|
323 |
+
|
324 |
+
e.preventDefault();
|
325 |
+
|
326 |
+
} );
|
327 |
+
|
328 |
+
} );
|
329 |
+
|
330 |
+
function hmbkpRedirectOnBackupComplete( schedule_id ) {
|
331 |
+
|
332 |
+
jQuery.get(
|
333 |
+
ajaxurl,
|
334 |
+
{ 'action' : 'hmbkp_is_in_progress', 'hmbkp_schedule_id' : jQuery( '[data-hmbkp-schedule-id]' ).attr( 'data-hmbkp-schedule-id' ) },
|
335 |
+
function( data ) {
|
336 |
+
|
337 |
+
if ( data == 0 ) {
|
338 |
+
|
339 |
+
location.reload( true );
|
340 |
+
|
341 |
+
} else {
|
342 |
+
|
343 |
+
setTimeout( 'hmbkpRedirectOnBackupComplete();', 500 );
|
344 |
+
|
345 |
+
jQuery( '.hmbkp-schedule-actions' ).replaceWith( data );
|
346 |
+
|
347 |
+
}
|
348 |
+
}
|
349 |
+
);
|
350 |
+
|
351 |
+
}
|
backupwordpress/assets/icon_backupwordpress_16x16.png
ADDED
Binary file
|
backupwordpress/assets/icon_backupwordpress_16x16_hover.png
ADDED
Binary file
|
backupwordpress/assets/icon_backupwordpress_32x32.png
ADDED
Binary file
|
backupwordpress/assets/wpspin_light.gif
ADDED
Binary file
|
backupwordpress/backupwordpress.mo
ADDED
Binary file
|
backupwordpress/backupwordpress.po
ADDED
@@ -0,0 +1,564 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
msgid ""
|
2 |
+
msgstr ""
|
3 |
+
"Project-Id-Version: BackUpWordPress\n"
|
4 |
+
"Report-Msgid-Bugs-To: \n"
|
5 |
+
"POT-Creation-Date: 2012-08-22 15:46-0000\n"
|
6 |
+
"PO-Revision-Date: 2012-08-22 15:47-0000\n"
|
7 |
+
"Last-Translator: Tom Willmot <tom@humanmade.co.uk>\n"
|
8 |
+
"Language-Team: Human Made Limited <support@humanmade.co.uk>\n"
|
9 |
+
"Language: en_GB\n"
|
10 |
+
"MIME-Version: 1.0\n"
|
11 |
+
"Content-Type: text/plain; charset=UTF-8\n"
|
12 |
+
"Content-Transfer-Encoding: 8bit\n"
|
13 |
+
"X-Poedit-KeywordsList: __;_e\n"
|
14 |
+
"X-Poedit-Basepath: .\n"
|
15 |
+
"X-Poedit-SearchPath-0: .\n"
|
16 |
+
|
17 |
+
#: plugin.php:52
|
18 |
+
msgid "BackUpWordPress requires PHP version 5.2.4 or greater."
|
19 |
+
msgstr ""
|
20 |
+
|
21 |
+
#: plugin.php:63
|
22 |
+
#, php-format
|
23 |
+
msgid "BackUpWordPress requires WordPress version %s or greater."
|
24 |
+
msgstr ""
|
25 |
+
|
26 |
+
#: plugin.php:95 admin/schedule-form.php:52
|
27 |
+
msgid "Update"
|
28 |
+
msgstr ""
|
29 |
+
|
30 |
+
#: plugin.php:96
|
31 |
+
msgid "Cancel"
|
32 |
+
msgstr ""
|
33 |
+
|
34 |
+
#: plugin.php:97
|
35 |
+
msgid ""
|
36 |
+
"Are you sure you want to delete this schedule? All of it's backups will also "
|
37 |
+
"be deleted.\n"
|
38 |
+
"\n"
|
39 |
+
"'Cancel' to go back, 'OK' to delete.\n"
|
40 |
+
msgstr ""
|
41 |
+
|
42 |
+
#: plugin.php:98
|
43 |
+
msgid ""
|
44 |
+
"Are you sure you want to delete this backup?\n"
|
45 |
+
"\n"
|
46 |
+
"'Cancel' to go back, 'OK' to delete.\n"
|
47 |
+
msgstr ""
|
48 |
+
|
49 |
+
#: plugin.php:99
|
50 |
+
msgid ""
|
51 |
+
"Are you sure you want to remove this exclude rule?\n"
|
52 |
+
"\n"
|
53 |
+
"'Cancel' to go back, 'OK' to delete.\n"
|
54 |
+
msgstr ""
|
55 |
+
|
56 |
+
#: plugin.php:100
|
57 |
+
msgid ""
|
58 |
+
"Reducing the number of backups that are stored on this server will cause "
|
59 |
+
"some of your existing backups to be deleted, are you sure that's what you "
|
60 |
+
"want?\n"
|
61 |
+
"\n"
|
62 |
+
"'Cancel' to go back, 'OK' to delete.\n"
|
63 |
+
msgstr ""
|
64 |
+
|
65 |
+
#: admin/actions.php:163 functions/interface.php:72 functions/interface.php:82
|
66 |
+
#: functions/interface.php:92
|
67 |
+
msgid "BackUpWordPress has detected a problem."
|
68 |
+
msgstr ""
|
69 |
+
|
70 |
+
#: admin/actions.php:163
|
71 |
+
#, php-format
|
72 |
+
msgid ""
|
73 |
+
"%1$s is returning a %2$s response which could mean cron jobs aren't getting "
|
74 |
+
"fired properly. BackUpWordPress relies on wp-cron to run scheduled back ups. "
|
75 |
+
"See the %3$s for more details."
|
76 |
+
msgstr ""
|
77 |
+
|
78 |
+
#: admin/actions.php:232
|
79 |
+
msgid "Backup type cannot be empty"
|
80 |
+
msgstr ""
|
81 |
+
|
82 |
+
#: admin/actions.php:235
|
83 |
+
msgid "Invalid backup type"
|
84 |
+
msgstr ""
|
85 |
+
|
86 |
+
#: admin/actions.php:245
|
87 |
+
msgid "Schedule cannot be empty"
|
88 |
+
msgstr ""
|
89 |
+
|
90 |
+
#: admin/actions.php:248
|
91 |
+
msgid "Invalid schedule"
|
92 |
+
msgstr ""
|
93 |
+
|
94 |
+
#: admin/actions.php:258
|
95 |
+
msgid "Max backups must be more than 1"
|
96 |
+
msgstr ""
|
97 |
+
|
98 |
+
#: admin/actions.php:261
|
99 |
+
msgid "Max backups must be a number"
|
100 |
+
msgstr ""
|
101 |
+
|
102 |
+
#: admin/actions.php:338
|
103 |
+
#, php-format
|
104 |
+
msgid "%s didn't match any files."
|
105 |
+
msgstr ""
|
106 |
+
|
107 |
+
#: admin/backups.php:13
|
108 |
+
msgid "add schedule"
|
109 |
+
msgstr ""
|
110 |
+
|
111 |
+
#: admin/backups.php:37
|
112 |
+
msgid "Size"
|
113 |
+
msgstr ""
|
114 |
+
|
115 |
+
#: admin/backups.php:38
|
116 |
+
msgid "Type"
|
117 |
+
msgstr ""
|
118 |
+
|
119 |
+
#: admin/backups.php:39
|
120 |
+
msgid "Actions"
|
121 |
+
msgstr ""
|
122 |
+
|
123 |
+
#: admin/backups.php:62
|
124 |
+
msgid "This is where your backups will appear once you have one."
|
125 |
+
msgstr ""
|
126 |
+
|
127 |
+
#: admin/constants.php:3
|
128 |
+
#, php-format
|
129 |
+
msgid ""
|
130 |
+
"You can %1$s any of the following %2$s in your %3$s to control advanced "
|
131 |
+
"settings. %4$s. Defined %5$s will be highlighted."
|
132 |
+
msgstr ""
|
133 |
+
|
134 |
+
#: admin/constants.php:3 admin/menu.php:76
|
135 |
+
msgid "Constants"
|
136 |
+
msgstr ""
|
137 |
+
|
138 |
+
#: admin/constants.php:3
|
139 |
+
msgid "The Codex can help"
|
140 |
+
msgstr ""
|
141 |
+
|
142 |
+
#: admin/constants.php:8
|
143 |
+
#, php-format
|
144 |
+
msgid ""
|
145 |
+
"The path to folder you would like to store your backup files in, defaults to "
|
146 |
+
"%s."
|
147 |
+
msgstr ""
|
148 |
+
|
149 |
+
#: admin/constants.php:8 admin/constants.php:11 admin/constants.php:14
|
150 |
+
#: admin/constants.php:17 admin/constants.php:20 admin/constants.php:23
|
151 |
+
#: admin/constants.php:26 admin/constants.php:29 admin/constants.php:32
|
152 |
+
#: admin/constants.php:35 admin/constants.php:38 admin/constants.php:41
|
153 |
+
msgid "e.g."
|
154 |
+
msgstr ""
|
155 |
+
|
156 |
+
#: admin/constants.php:11
|
157 |
+
#, php-format
|
158 |
+
msgid ""
|
159 |
+
"The path to your %1$s executable. Will be used for the %2$s part of the back "
|
160 |
+
"up if available."
|
161 |
+
msgstr ""
|
162 |
+
|
163 |
+
#: admin/constants.php:11 admin/constants.php:14 admin/constants.php:23
|
164 |
+
#: admin/constants.php:26
|
165 |
+
msgid "database"
|
166 |
+
msgstr ""
|
167 |
+
|
168 |
+
#: admin/constants.php:14
|
169 |
+
#, php-format
|
170 |
+
msgid ""
|
171 |
+
"The path to your %1$s executable. Will be used to zip up your %2$s and %3$s "
|
172 |
+
"if available."
|
173 |
+
msgstr ""
|
174 |
+
|
175 |
+
#: admin/constants.php:14 admin/constants.php:23 admin/constants.php:26
|
176 |
+
msgid "files"
|
177 |
+
msgstr ""
|
178 |
+
|
179 |
+
#: admin/constants.php:17
|
180 |
+
#, php-format
|
181 |
+
msgid ""
|
182 |
+
"Completely disables the automatic back up. You can still back up using the "
|
183 |
+
"\"Back Up Now\" button. Defaults to %s."
|
184 |
+
msgstr ""
|
185 |
+
|
186 |
+
#: admin/constants.php:20
|
187 |
+
#, php-format
|
188 |
+
msgid ""
|
189 |
+
"Number of backups to keep, older backups will be deleted automatically when "
|
190 |
+
"a new backup is completed. Defaults to %s."
|
191 |
+
msgstr ""
|
192 |
+
|
193 |
+
#: admin/constants.php:23 admin/constants.php:26
|
194 |
+
#, php-format
|
195 |
+
msgid "Backup %1$s only, your %2$s won't be backed up. Defaults to %3$s."
|
196 |
+
msgstr ""
|
197 |
+
|
198 |
+
#: admin/constants.php:29
|
199 |
+
#, php-format
|
200 |
+
msgid "The time that the daily back up should run. Defaults to %s."
|
201 |
+
msgstr ""
|
202 |
+
|
203 |
+
#: admin/constants.php:32
|
204 |
+
#, php-format
|
205 |
+
msgid ""
|
206 |
+
"Attempt to email a copy of your backups. Value should be email address to "
|
207 |
+
"send backups to. Defaults to %s."
|
208 |
+
msgstr ""
|
209 |
+
|
210 |
+
#: admin/constants.php:35
|
211 |
+
msgid ""
|
212 |
+
"Comma separated list of files or directories to exclude, the backups "
|
213 |
+
"directory is automatically excluded."
|
214 |
+
msgstr ""
|
215 |
+
|
216 |
+
#: admin/constants.php:38
|
217 |
+
#, php-format
|
218 |
+
msgid "The capability to use when calling %1$s. Defaults to %2$s."
|
219 |
+
msgstr ""
|
220 |
+
|
221 |
+
#: admin/constants.php:41
|
222 |
+
#, php-format
|
223 |
+
msgid "The root directory that is backed up. Defaults to %s."
|
224 |
+
msgstr ""
|
225 |
+
|
226 |
+
#: admin/menu.php:10 admin/page.php:5
|
227 |
+
msgid "Manage Backups"
|
228 |
+
msgstr ""
|
229 |
+
|
230 |
+
#: admin/menu.php:10 admin/menu.php:34
|
231 |
+
msgid "Backups"
|
232 |
+
msgstr ""
|
233 |
+
|
234 |
+
#: admin/menu.php:69
|
235 |
+
msgid "You are not using the latest stable version of BackUpWordPress"
|
236 |
+
msgstr ""
|
237 |
+
|
238 |
+
#: admin/menu.php:69
|
239 |
+
#, php-format
|
240 |
+
msgid ""
|
241 |
+
"The information below is for version %1$s. View the %2$s file for help "
|
242 |
+
"specific to version %3$s."
|
243 |
+
msgstr ""
|
244 |
+
|
245 |
+
#: admin/menu.php:75
|
246 |
+
msgid "FAQ"
|
247 |
+
msgstr ""
|
248 |
+
|
249 |
+
#: admin/menu.php:79
|
250 |
+
msgid "For more information:"
|
251 |
+
msgstr ""
|
252 |
+
|
253 |
+
#: admin/menu.php:81
|
254 |
+
msgid "Support Forums"
|
255 |
+
msgstr ""
|
256 |
+
|
257 |
+
#: admin/menu.php:82
|
258 |
+
msgid "Help with translation"
|
259 |
+
msgstr ""
|
260 |
+
|
261 |
+
#: admin/page.php:13
|
262 |
+
msgid ""
|
263 |
+
"You need to fix the issues detailed above before BackUpWordPress can start."
|
264 |
+
msgstr ""
|
265 |
+
|
266 |
+
#: admin/page.php:17
|
267 |
+
#, php-format
|
268 |
+
msgid ""
|
269 |
+
"If you need help getting things working you are more than welcome to email "
|
270 |
+
"us at %s and we'll do what we can."
|
271 |
+
msgstr ""
|
272 |
+
|
273 |
+
#: admin/schedule-form-excludes.php:7
|
274 |
+
msgid "Manage Exclude"
|
275 |
+
msgstr ""
|
276 |
+
|
277 |
+
#: admin/schedule-form-excludes.php:13
|
278 |
+
msgid "New Exclude Rule"
|
279 |
+
msgstr ""
|
280 |
+
|
281 |
+
#: admin/schedule-form-excludes.php:17
|
282 |
+
msgid "Preview"
|
283 |
+
msgstr ""
|
284 |
+
|
285 |
+
#: admin/schedule-form-excludes.php:27
|
286 |
+
msgid "Exclude Rules"
|
287 |
+
msgstr ""
|
288 |
+
|
289 |
+
#: admin/schedule-form-excludes.php:42
|
290 |
+
msgid "Remove"
|
291 |
+
msgstr ""
|
292 |
+
|
293 |
+
#: admin/schedule-form-excludes.php:59
|
294 |
+
msgid "Excluded"
|
295 |
+
msgstr ""
|
296 |
+
|
297 |
+
#: admin/schedule-form-excludes.php:60
|
298 |
+
msgid "Included"
|
299 |
+
msgstr ""
|
300 |
+
|
301 |
+
#: admin/schedule-form-excludes.php:63
|
302 |
+
msgid "Unreadable"
|
303 |
+
msgstr ""
|
304 |
+
|
305 |
+
#: admin/schedule-form-excludes.php:86
|
306 |
+
msgid "Unreadable files can't be backed up"
|
307 |
+
msgstr ""
|
308 |
+
|
309 |
+
#: admin/schedule-form-excludes.php:92
|
310 |
+
#, php-format
|
311 |
+
msgid "Your site is %s. Backups will be compressed and so will be smaller."
|
312 |
+
msgstr ""
|
313 |
+
|
314 |
+
#: admin/schedule-form-excludes.php:98
|
315 |
+
msgid "Close"
|
316 |
+
msgstr ""
|
317 |
+
|
318 |
+
#: admin/schedule-form.php:7
|
319 |
+
msgid "Schedule Settings"
|
320 |
+
msgstr ""
|
321 |
+
|
322 |
+
#: admin/schedule-form.php:11
|
323 |
+
msgid "Backup"
|
324 |
+
msgstr ""
|
325 |
+
|
326 |
+
#: admin/schedule-form.php:14
|
327 |
+
msgid "Both Database & files"
|
328 |
+
msgstr ""
|
329 |
+
|
330 |
+
#: admin/schedule-form.php:15
|
331 |
+
msgid "Files only"
|
332 |
+
msgstr ""
|
333 |
+
|
334 |
+
#: admin/schedule-form.php:16
|
335 |
+
msgid "Database only"
|
336 |
+
msgstr ""
|
337 |
+
|
338 |
+
#: admin/schedule-form.php:23
|
339 |
+
msgid "Schedule"
|
340 |
+
msgstr ""
|
341 |
+
|
342 |
+
#: admin/schedule-form.php:39
|
343 |
+
msgid "Number of backups to store on this server"
|
344 |
+
msgstr ""
|
345 |
+
|
346 |
+
#: admin/schedule-form.php:43
|
347 |
+
msgid ""
|
348 |
+
"The number of previous backups to store on the server. past this limit the "
|
349 |
+
"oldest backups will be deleted automatically."
|
350 |
+
msgstr ""
|
351 |
+
|
352 |
+
#: admin/schedule.php:16
|
353 |
+
msgid "hourly on the hour"
|
354 |
+
msgstr ""
|
355 |
+
|
356 |
+
#: admin/schedule.php:16
|
357 |
+
#, php-format
|
358 |
+
msgid "hourly at %s minutes past the hour"
|
359 |
+
msgstr ""
|
360 |
+
|
361 |
+
#: admin/schedule.php:22
|
362 |
+
#, php-format
|
363 |
+
msgid "daily at %s"
|
364 |
+
msgstr ""
|
365 |
+
|
366 |
+
#: admin/schedule.php:34
|
367 |
+
#, php-format
|
368 |
+
msgid "every 12 hours at %s & %s"
|
369 |
+
msgstr ""
|
370 |
+
|
371 |
+
#: admin/schedule.php:40
|
372 |
+
#, php-format
|
373 |
+
msgid "weekly on %s at %s"
|
374 |
+
msgstr ""
|
375 |
+
|
376 |
+
#: admin/schedule.php:46
|
377 |
+
#, php-format
|
378 |
+
msgid "fortnightly on %s at %s"
|
379 |
+
msgstr ""
|
380 |
+
|
381 |
+
#: admin/schedule.php:53
|
382 |
+
#, php-format
|
383 |
+
msgid "on the %s of each month at %s"
|
384 |
+
msgstr ""
|
385 |
+
|
386 |
+
#: admin/schedule.php:59
|
387 |
+
msgid "server"
|
388 |
+
msgstr ""
|
389 |
+
|
390 |
+
#: admin/schedule.php:66
|
391 |
+
#, php-format
|
392 |
+
msgid "store the only the last backup %s"
|
393 |
+
msgstr ""
|
394 |
+
|
395 |
+
#: admin/schedule.php:72
|
396 |
+
#, php-format
|
397 |
+
msgid "don't store any backups %s"
|
398 |
+
msgstr ""
|
399 |
+
|
400 |
+
#: admin/schedule.php:78
|
401 |
+
#, php-format
|
402 |
+
msgid "store only the last %s backups %s"
|
403 |
+
msgstr ""
|
404 |
+
|
405 |
+
#: admin/schedule.php:87
|
406 |
+
#, php-format
|
407 |
+
msgid "Backup my %s %s %s, %s. %s"
|
408 |
+
msgstr ""
|
409 |
+
|
410 |
+
#: admin/schedule.php:87
|
411 |
+
msgid "Backups will be compressed and should be smaller than this."
|
412 |
+
msgstr ""
|
413 |
+
|
414 |
+
#: classes/email.php:19
|
415 |
+
msgid "Email notification"
|
416 |
+
msgstr ""
|
417 |
+
|
418 |
+
#: classes/email.php:50
|
419 |
+
#, php-format
|
420 |
+
msgid "Send an email notification to %s"
|
421 |
+
msgstr ""
|
422 |
+
|
423 |
+
#: classes/email.php:72
|
424 |
+
#, php-format
|
425 |
+
msgid "%s isn't a valid email"
|
426 |
+
msgstr ""
|
427 |
+
|
428 |
+
#: classes/email.php:127
|
429 |
+
#, php-format
|
430 |
+
msgid "Backup of %s Failed"
|
431 |
+
msgstr ""
|
432 |
+
|
433 |
+
#: classes/email.php:137
|
434 |
+
#, php-format
|
435 |
+
msgid "Backup of %s"
|
436 |
+
msgstr ""
|
437 |
+
|
438 |
+
#: classes/schedule.php:460
|
439 |
+
msgid "Backup started"
|
440 |
+
msgstr ""
|
441 |
+
|
442 |
+
#: classes/schedule.php:511
|
443 |
+
msgid "Creating zip archive"
|
444 |
+
msgstr ""
|
445 |
+
|
446 |
+
#: classes/schedule.php:517
|
447 |
+
msgid "Dumping database"
|
448 |
+
msgstr ""
|
449 |
+
|
450 |
+
#: functions/core.php:192
|
451 |
+
msgid "BackUpWordPress has setup your default schedules."
|
452 |
+
msgstr ""
|
453 |
+
|
454 |
+
#: functions/core.php:192
|
455 |
+
msgid ""
|
456 |
+
"By default BackUpWordPress performs a daily backup of your database and a "
|
457 |
+
"weekly backup of your database & files. You can modify these schedules "
|
458 |
+
"below."
|
459 |
+
msgstr ""
|
460 |
+
|
461 |
+
#: functions/core.php:273
|
462 |
+
#, php-format
|
463 |
+
msgid ""
|
464 |
+
"This %s file ensures that other people cannot download your backup files."
|
465 |
+
msgstr ""
|
466 |
+
|
467 |
+
#: functions/interface.php:27
|
468 |
+
msgid "Download"
|
469 |
+
msgstr ""
|
470 |
+
|
471 |
+
#: functions/interface.php:28 functions/interface.php:215
|
472 |
+
msgid "Delete"
|
473 |
+
msgstr ""
|
474 |
+
|
475 |
+
#: functions/interface.php:50 functions/interface.php:62
|
476 |
+
msgid "BackUpWordPress is almost ready."
|
477 |
+
msgstr ""
|
478 |
+
|
479 |
+
#: functions/interface.php:50
|
480 |
+
#, php-format
|
481 |
+
msgid ""
|
482 |
+
"The backups directory can't be created because your %1$s directory isn't "
|
483 |
+
"writable, run %2$s or %3$s or create the folder yourself."
|
484 |
+
msgstr ""
|
485 |
+
|
486 |
+
#: functions/interface.php:62
|
487 |
+
#, php-format
|
488 |
+
msgid ""
|
489 |
+
"Your backups directory isn't writable, run %1$s or %2$s or set the "
|
490 |
+
"permissions yourself."
|
491 |
+
msgstr ""
|
492 |
+
|
493 |
+
#: functions/interface.php:72
|
494 |
+
#, php-format
|
495 |
+
msgid ""
|
496 |
+
"%1$s is running in %2$s. Please contact your host and ask them to disable "
|
497 |
+
"%3$s."
|
498 |
+
msgstr ""
|
499 |
+
|
500 |
+
#: functions/interface.php:72
|
501 |
+
msgid "http://php.net/manual/en/features.safe-mode.php"
|
502 |
+
msgstr ""
|
503 |
+
|
504 |
+
#: functions/interface.php:72
|
505 |
+
msgid "Safe Mode"
|
506 |
+
msgstr ""
|
507 |
+
|
508 |
+
#: functions/interface.php:82
|
509 |
+
#, php-format
|
510 |
+
msgid ""
|
511 |
+
"Your custom backups directory %1$s doesn't exist and can't be created, your "
|
512 |
+
"backups will be saved to %2$s instead."
|
513 |
+
msgstr ""
|
514 |
+
|
515 |
+
#: functions/interface.php:92
|
516 |
+
#, php-format
|
517 |
+
msgid ""
|
518 |
+
"Your custom backups directory %1$s isn't writable, new backups will be saved "
|
519 |
+
"to %2$s instead."
|
520 |
+
msgstr ""
|
521 |
+
|
522 |
+
#: functions/interface.php:102
|
523 |
+
msgid "BackUpWordPress detected issues with your last backup."
|
524 |
+
msgstr ""
|
525 |
+
|
526 |
+
#: functions/interface.php:182
|
527 |
+
msgid "Database and Files"
|
528 |
+
msgstr ""
|
529 |
+
|
530 |
+
#: functions/interface.php:185
|
531 |
+
msgid "Files"
|
532 |
+
msgstr ""
|
533 |
+
|
534 |
+
#: functions/interface.php:188
|
535 |
+
msgid "Database"
|
536 |
+
msgstr ""
|
537 |
+
|
538 |
+
#: functions/interface.php:193
|
539 |
+
msgid "Unknown"
|
540 |
+
msgstr ""
|
541 |
+
|
542 |
+
#: functions/interface.php:201
|
543 |
+
msgid "cancel"
|
544 |
+
msgstr ""
|
545 |
+
|
546 |
+
#: functions/interface.php:207
|
547 |
+
msgid "Settings"
|
548 |
+
msgstr ""
|
549 |
+
|
550 |
+
#: functions/interface.php:210
|
551 |
+
msgid "Excludes"
|
552 |
+
msgstr ""
|
553 |
+
|
554 |
+
#: functions/interface.php:213
|
555 |
+
msgid "Run now"
|
556 |
+
msgstr ""
|
557 |
+
|
558 |
+
#: hm-backup/hm-backup.php:892
|
559 |
+
msgid "The backup file was not created"
|
560 |
+
msgstr ""
|
561 |
+
|
562 |
+
#: hm-backup/hm-backup.php:963
|
563 |
+
msgid "The following files are unreadable and couldn't be backed up: "
|
564 |
+
msgstr ""
|
backupwordpress/classes/email.php
ADDED
@@ -0,0 +1,164 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Email notifications for backups
|
5 |
+
*
|
6 |
+
* @extends HMBKP_Service
|
7 |
+
*/
|
8 |
+
class HMBKP_Email_Service extends HMBKP_Service {
|
9 |
+
|
10 |
+
/**
|
11 |
+
* Output the email form field
|
12 |
+
*
|
13 |
+
* @access public
|
14 |
+
*/
|
15 |
+
public function field() { ?>
|
16 |
+
|
17 |
+
<label>
|
18 |
+
|
19 |
+
<?php _e( 'Email notification', 'hmbkp' ); ?>
|
20 |
+
|
21 |
+
<input type="email" name="<?php echo $this->get_field_name( 'email' ); ?>" value="<?php echo $this->get_field_value( 'email' ); ?>" />
|
22 |
+
|
23 |
+
<p class="description"><?php _e( 'Receive a notification email when a backup completes, if the backup is small enough (< 10mb) then it will be attached to the email. Separate multiple email address\'s with a comma.', 'hmbkp' ); ?></p>
|
24 |
+
|
25 |
+
</label>
|
26 |
+
|
27 |
+
<?php }
|
28 |
+
|
29 |
+
/**
|
30 |
+
* Not used as we only need a field
|
31 |
+
*
|
32 |
+
* @see field
|
33 |
+
* @return string Empty string
|
34 |
+
*/
|
35 |
+
public function form() {
|
36 |
+
return '';
|
37 |
+
}
|
38 |
+
|
39 |
+
/**
|
40 |
+
* The sentence fragment that is output as part of the schedule sentence
|
41 |
+
*
|
42 |
+
* @return string The sentence fragment
|
43 |
+
*/
|
44 |
+
public function display() {
|
45 |
+
|
46 |
+
if ( $emails = $this->get_email_address_array() ) {
|
47 |
+
|
48 |
+
$email = '<code>' . implode( '</code>, <code>', $emails ) . '</code>';
|
49 |
+
|
50 |
+
return sprintf( __( 'Send an email notification to %s', 'hmbkp' ), $email );
|
51 |
+
|
52 |
+
}
|
53 |
+
|
54 |
+
}
|
55 |
+
|
56 |
+
/**
|
57 |
+
* Validate the email and return an error if validation fails
|
58 |
+
*
|
59 |
+
* @param array &$new_data Array of new data, passed by reference
|
60 |
+
* @param array $old_data The data we are replacing
|
61 |
+
* @return null|array Null on success, array of errors if validation failed
|
62 |
+
*/
|
63 |
+
public function update( &$new_data, $old_data ) {
|
64 |
+
|
65 |
+
$errors = array();
|
66 |
+
|
67 |
+
if ( isset( $new_data['email'] ) ) {
|
68 |
+
|
69 |
+
if ( ! empty( $new_data['email'] ) )
|
70 |
+
foreach( explode( ',', $new_data['email'] ) as $email )
|
71 |
+
if ( ! is_email( trim( $email ) ) )
|
72 |
+
$errors['email'] = sprintf( __( '%s isn\'t a valid email', 'hmbkp' ), esc_attr( $email ) );
|
73 |
+
|
74 |
+
|
75 |
+
if ( ! empty( $errors['email'] ) )
|
76 |
+
$new_data['email'] = '';
|
77 |
+
|
78 |
+
}
|
79 |
+
|
80 |
+
return $errors;
|
81 |
+
|
82 |
+
}
|
83 |
+
|
84 |
+
/**
|
85 |
+
* Get an array or validated email address's
|
86 |
+
* @return array An array of validated email address's
|
87 |
+
*/
|
88 |
+
private function get_email_address_array() {
|
89 |
+
|
90 |
+
$emails = array_map( 'trim', explode( ',', $this->get_field_value( 'email' ) ) );
|
91 |
+
|
92 |
+
return array_filter( array_unique( $emails ), 'is_email' );
|
93 |
+
|
94 |
+
}
|
95 |
+
|
96 |
+
/**
|
97 |
+
* Fire the email notification on the hmbkp_backup_complete
|
98 |
+
*
|
99 |
+
* @see HM_Backup::do_action
|
100 |
+
* @param string $action The action received from the backup
|
101 |
+
* @return void
|
102 |
+
*/
|
103 |
+
public function action( $action ) {
|
104 |
+
|
105 |
+
if ( $action == 'hmbkp_backup_complete' && $this->get_email_address_array() ) {
|
106 |
+
|
107 |
+
$file = $this->schedule->get_archive_filepath();
|
108 |
+
|
109 |
+
$sent = false;
|
110 |
+
|
111 |
+
$download = add_query_arg( 'hmbkp_download', base64_encode( $file ), HMBKP_ADMIN_URL );
|
112 |
+
$domain = parse_url( home_url(), PHP_URL_HOST ) . parse_url( home_url(), PHP_URL_PATH );
|
113 |
+
|
114 |
+
$headers = 'From: BackUpWordPress <' . get_bloginfo( 'admin_email' ) . '>' . "\r\n";
|
115 |
+
|
116 |
+
// The backup failed, send a message saying as much
|
117 |
+
if ( ! file_exists( $file ) && ( $errors = array_merge( $this->schedule->get_errors(), $this->schedule->get_warnings() ) ) ) {
|
118 |
+
|
119 |
+
$error_message = '';
|
120 |
+
|
121 |
+
foreach ( $errors as $error_set )
|
122 |
+
$error_message .= implode( "\n - ", $error_set );
|
123 |
+
|
124 |
+
if ( $error_message )
|
125 |
+
$error_message = ' - ' . $error_message;
|
126 |
+
|
127 |
+
$subject = sprintf( __( 'Backup of %s Failed', 'hmbkp' ), $domain );
|
128 |
+
|
129 |
+
$message = sprintf( __( 'BackUpWordPress was unable to backup your site %1$s.', 'hmbkp' ) . "\n\n" . __( 'Here are the errors that we\'re encountered:', 'hmbkp' ) . "\n\n" . '%2$s' . "\n\n" . __( 'If the errors above look like Martian, forward this email to %3$s and we\'ll take a look', 'hmbkp' ) . "\n\n" . __( "Kind Regards,\nThe Apologetic BackUpWordPress Backup Emailing Robot", 'hmbkp' ), home_url(), $error_message, 'support@hmn.md' );
|
130 |
+
|
131 |
+
$sent = wp_mail( $this->get_email_address_array(), $subject, $message, $headers );
|
132 |
+
|
133 |
+
return;
|
134 |
+
|
135 |
+
}
|
136 |
+
|
137 |
+
$subject = sprintf( __( 'Backup of %s', 'hmbkp' ), $domain );
|
138 |
+
|
139 |
+
// If it's larger than 10MB assume it's not going to be able to send the backup
|
140 |
+
if ( filesize( $file ) < 1000 * 1000 * 10 ) {
|
141 |
+
|
142 |
+
$message = sprintf( __( 'BackUpWordPress has completed a backup of your site %1$s.', 'hmbkp' ) . "\n\n" . __( 'The backup file should be attached to this email.', 'hmbkp' ) . "\n\n" . __( 'You can download the backup file by clicking the link below:', 'hmbkp' ) . "\n\n" . '%2$s' . "\n\n" . __( "Kind Regards,\nThe Happy BackUpWordPress Backup Emailing Robot", 'hmbkp' ), home_url(), $download );
|
143 |
+
|
144 |
+
$sent = wp_mail( $this->get_email_address_array(), $subject, $message, $headers, $file );
|
145 |
+
|
146 |
+
}
|
147 |
+
|
148 |
+
// If we didn't send the email above then send just the notification
|
149 |
+
if ( ! $sent ) {
|
150 |
+
|
151 |
+
$message = sprintf( __( 'BackUpWordPress has completed a backup of your site %1$s.', 'hmbkp' ) . "\n\n" . __( 'Unfortunately the backup file was too large to attach to this email.', 'hmbkp' ) . "\n\n" . __( 'You can download the backup file by clicking the link below:', 'hmbkp' ) . "\n\n" . '%2$s' . "\n\n" . __( "Kind Regards,\nThe Happy BackUpWordPress Backup Emailing Robot", 'hmbkp' ), home_url(), $download );
|
152 |
+
|
153 |
+
$sent = wp_mail( $this->get_email_address_array(), $subject, $message, $headers );
|
154 |
+
|
155 |
+
}
|
156 |
+
|
157 |
+
}
|
158 |
+
|
159 |
+
}
|
160 |
+
|
161 |
+
}
|
162 |
+
|
163 |
+
// Register the service
|
164 |
+
HMBKP_Services::register( __FILE__, 'HMBKP_Email_Service' );
|
backupwordpress/classes/schedule.php
ADDED
@@ -0,0 +1,773 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Extend HM Backup with scheduling and backup file management
|
5 |
+
*
|
6 |
+
* @extends HM_Backup
|
7 |
+
*/
|
8 |
+
class HMBKP_Scheduled_Backup extends HM_Backup {
|
9 |
+
|
10 |
+
/**
|
11 |
+
* The unique schedule id
|
12 |
+
*
|
13 |
+
* @var string
|
14 |
+
* @access private
|
15 |
+
*/
|
16 |
+
private $id = '';
|
17 |
+
|
18 |
+
/**
|
19 |
+
* The slugified version of the schedule name
|
20 |
+
*
|
21 |
+
* @var string
|
22 |
+
* @access private
|
23 |
+
*/
|
24 |
+
private $slug = '';
|
25 |
+
|
26 |
+
/**
|
27 |
+
* The raw schedule options from the database
|
28 |
+
*
|
29 |
+
* @var array
|
30 |
+
* @access private
|
31 |
+
*/
|
32 |
+
private $options = array();
|
33 |
+
|
34 |
+
/**
|
35 |
+
* The filepath for the .running file which
|
36 |
+
* is used to track whether a backup is currently in
|
37 |
+
* progress
|
38 |
+
*/
|
39 |
+
private $schedule_running_filepath = '';
|
40 |
+
|
41 |
+
/**
|
42 |
+
* The schedule start time
|
43 |
+
*
|
44 |
+
* (default value: current_time( 'timestamp' ))
|
45 |
+
*
|
46 |
+
* @var mixed
|
47 |
+
* @access private
|
48 |
+
*/
|
49 |
+
private $schedule_start_time = 0;
|
50 |
+
|
51 |
+
/**
|
52 |
+
* Take a file size and return a human readable
|
53 |
+
* version
|
54 |
+
*
|
55 |
+
* @access public
|
56 |
+
* @static
|
57 |
+
* @param int $size
|
58 |
+
* @param string $unit. (default: null)
|
59 |
+
* @param string $format. (default: '%01.2f %s')
|
60 |
+
* @param bool $si. (default: true)
|
61 |
+
* @return int
|
62 |
+
*/
|
63 |
+
public static function human_filesize( $size, $unit = null, $format = '%01.2f %s', $si = true ) {
|
64 |
+
|
65 |
+
// Units
|
66 |
+
if ( $si === true ) :
|
67 |
+
$sizes = array( 'B', 'kB', 'MB', 'GB', 'TB', 'PB' );
|
68 |
+
$mod = 1000;
|
69 |
+
|
70 |
+
else :
|
71 |
+
$sizes = array('B', 'KiB', 'MiB', 'GiB', 'TiB', 'PiB');
|
72 |
+
$mod = 1024;
|
73 |
+
|
74 |
+
endif;
|
75 |
+
|
76 |
+
$ii = count( $sizes ) - 1;
|
77 |
+
|
78 |
+
// Max unit
|
79 |
+
$unit = array_search( (string) $unit, $sizes );
|
80 |
+
|
81 |
+
if ( is_null( $unit ) || $unit === false )
|
82 |
+
$unit = $ii;
|
83 |
+
|
84 |
+
// Loop
|
85 |
+
$i = 0;
|
86 |
+
|
87 |
+
while ( $unit != $i && $size >= 1024 && $i < $ii ) {
|
88 |
+
$size /= $mod;
|
89 |
+
$i++;
|
90 |
+
}
|
91 |
+
|
92 |
+
return sprintf( $format, $size, $sizes[$i] );
|
93 |
+
|
94 |
+
}
|
95 |
+
|
96 |
+
/**
|
97 |
+
* Setup the schedule object
|
98 |
+
*
|
99 |
+
* Loads the options from the database and populates properties
|
100 |
+
*
|
101 |
+
* @access public
|
102 |
+
* @param string $id
|
103 |
+
*/
|
104 |
+
public function __construct( $id ) {
|
105 |
+
|
106 |
+
// Verify the schedule id
|
107 |
+
if ( ! is_string( $id ) || ! trim( $id ) || ! is_string( $id ) )
|
108 |
+
throw new Exception( 'Argument 1 for ' . __METHOD__ . ' must be a non empty string' );
|
109 |
+
|
110 |
+
// Setup HM Backup
|
111 |
+
parent::__construct();
|
112 |
+
|
113 |
+
// Store id for later
|
114 |
+
$this->id = $id;
|
115 |
+
|
116 |
+
// Load the options
|
117 |
+
$this->options = array_filter( (array) get_option( 'hmbkp_schedule_' . $this->get_id() ) );
|
118 |
+
|
119 |
+
// Some properties can be overridden with defines
|
120 |
+
if ( defined( 'HMBKP_ROOT' ) && HMBKP_ROOT )
|
121 |
+
$this->set_root( HMBKP_ROOT );
|
122 |
+
|
123 |
+
if ( defined( 'HMBKP_PATH' ) && HMBKP_PATH )
|
124 |
+
$this->set_path( HMBKP_PATH );
|
125 |
+
|
126 |
+
if ( defined( 'HMBKP_EXCLUDE' ) && HMBKP_EXCLUDE )
|
127 |
+
parent::set_excludes( HMBKP_EXCLUDE, true );
|
128 |
+
|
129 |
+
if ( defined( 'HMBKP_MYSQLDUMP_PATH' ) )
|
130 |
+
$this->set_mysqldump_command_path( HMBKP_MYSQLDUMP_PATH );
|
131 |
+
|
132 |
+
if ( defined( 'HMBKP_ZIP_PATH' ) )
|
133 |
+
$this->set_zip_command_path( HMBKP_ZIP_PATH );
|
134 |
+
|
135 |
+
if ( defined( 'HMBKP_ZIP_PATH' ) && HMBKP_ZIP_PATH === 'PclZip' && $this->skip_zip_archive = true )
|
136 |
+
$this->set_zip_command_path( false );
|
137 |
+
|
138 |
+
// Set the path - TODO remove external function dependancy
|
139 |
+
$this->set_path( hmbkp_path() );
|
140 |
+
|
141 |
+
// Set the archive filename to site name + schedule slug + date
|
142 |
+
$this->set_archive_filename( implode( '-', array( get_bloginfo( 'name' ), $this->get_id(), $this->get_type(), date( 'Y-m-d-H-i-s', current_time( 'timestamp' ) ) ) ) . '.zip' );
|
143 |
+
|
144 |
+
}
|
145 |
+
|
146 |
+
/**
|
147 |
+
* Get the id for this schedule
|
148 |
+
*
|
149 |
+
* @access public
|
150 |
+
*/
|
151 |
+
public function get_id() {
|
152 |
+
return esc_attr( $this->id );
|
153 |
+
}
|
154 |
+
|
155 |
+
/**
|
156 |
+
* Get a slugified version of name
|
157 |
+
*
|
158 |
+
* @access public
|
159 |
+
*/
|
160 |
+
public function get_slug() {
|
161 |
+
|
162 |
+
// We cache slug in $this to save expensive calls to sanitize_title
|
163 |
+
if ( isset( $this->slug ) )
|
164 |
+
return $this->slug;
|
165 |
+
|
166 |
+
return $this->slug = sanitize_title( $this->get_name() );
|
167 |
+
|
168 |
+
}
|
169 |
+
|
170 |
+
/**
|
171 |
+
* Get the name of this backup schedule
|
172 |
+
*
|
173 |
+
* @access public
|
174 |
+
* @return string
|
175 |
+
*/
|
176 |
+
public function get_name() {
|
177 |
+
|
178 |
+
return ucwords( $this->get_type() ) . ' ' . $this->get_reoccurrence();
|
179 |
+
|
180 |
+
}
|
181 |
+
|
182 |
+
/**
|
183 |
+
* Get the type of backup
|
184 |
+
*
|
185 |
+
* @access public
|
186 |
+
* @return string
|
187 |
+
*/
|
188 |
+
public function get_type() {
|
189 |
+
|
190 |
+
if ( empty( $this->options['type'] ) )
|
191 |
+
$this->set_type( 'complete' );
|
192 |
+
|
193 |
+
return $this->options['type'];
|
194 |
+
|
195 |
+
}
|
196 |
+
|
197 |
+
/**
|
198 |
+
* Set the type of backup
|
199 |
+
*
|
200 |
+
* @access public
|
201 |
+
* @param string $type
|
202 |
+
*/
|
203 |
+
public function set_type( $type ) {
|
204 |
+
|
205 |
+
parent::set_type( $type );
|
206 |
+
|
207 |
+
$this->options['type'] = $type;
|
208 |
+
|
209 |
+
$this->clear_filesize_cache();
|
210 |
+
|
211 |
+
}
|
212 |
+
|
213 |
+
/**
|
214 |
+
* Get the exclude rules
|
215 |
+
*
|
216 |
+
* @access public
|
217 |
+
* @return array
|
218 |
+
*/
|
219 |
+
public function get_excludes() {
|
220 |
+
|
221 |
+
if ( ! empty( $this->options['excludes'] ) )
|
222 |
+
parent::set_excludes( $this->options['excludes'] );
|
223 |
+
|
224 |
+
return parent::get_excludes();
|
225 |
+
|
226 |
+
}
|
227 |
+
|
228 |
+
/**
|
229 |
+
* Set the exclude rules
|
230 |
+
*
|
231 |
+
* @access public
|
232 |
+
* @param mixed $excludes A comma separated list or array of exclude rules
|
233 |
+
* @param bool $append Whether to replace or append to existing rules
|
234 |
+
* @return string
|
235 |
+
*/
|
236 |
+
public function set_excludes( $excludes, $append = false ) {
|
237 |
+
|
238 |
+
// Use the validation from HM_Backup::set_excludes
|
239 |
+
parent::set_excludes( $excludes, $append );
|
240 |
+
|
241 |
+
// If these are valid excludes and they are different save them
|
242 |
+
if ( parent::get_excludes() && ( empty( $this->options['excludes'] ) || $this->options['excludes'] !== parent::get_excludes() ) ) {
|
243 |
+
|
244 |
+
$this->options['excludes'] = $append && ! empty( $this->options['excludes'] ) ? array_merge( (array) $this->options['excludes'], parent::get_excludes() ) : parent::get_excludes();;
|
245 |
+
|
246 |
+
parent::set_excludes( $this->options['excludes'] );
|
247 |
+
|
248 |
+
$this->clear_filesize_cache();
|
249 |
+
|
250 |
+
}
|
251 |
+
|
252 |
+
}
|
253 |
+
|
254 |
+
/**
|
255 |
+
* Get the maximum number of backups to keep
|
256 |
+
*
|
257 |
+
* @access public
|
258 |
+
*/
|
259 |
+
public function get_max_backups() {
|
260 |
+
|
261 |
+
if ( empty( $this->options['max_backups'] ) )
|
262 |
+
$this->set_max_backups( 10 );
|
263 |
+
|
264 |
+
return (int) esc_attr( $this->options['max_backups'] );
|
265 |
+
|
266 |
+
}
|
267 |
+
|
268 |
+
/**
|
269 |
+
* Set the maximum number of backups to keep
|
270 |
+
*
|
271 |
+
* @access public
|
272 |
+
* @param int $max
|
273 |
+
*/
|
274 |
+
public function set_max_backups( $max ) {
|
275 |
+
|
276 |
+
if ( empty( $max ) || ! is_int( $max ) )
|
277 |
+
throw new Exception( 'Argument 1 for ' . __METHOD__ . ' must be a valid integer' );
|
278 |
+
|
279 |
+
$this->options['max_backups'] = $max;
|
280 |
+
|
281 |
+
}
|
282 |
+
|
283 |
+
/**
|
284 |
+
* Get the array of services options for this schedule
|
285 |
+
*
|
286 |
+
* @access public
|
287 |
+
* @return array
|
288 |
+
*/
|
289 |
+
public function get_service_options( $service, $option = null ) {
|
290 |
+
|
291 |
+
if ( ! is_null( $option ) && isset( $this->options[$service][$option] ) )
|
292 |
+
return $this->options[$service][$option];
|
293 |
+
|
294 |
+
if ( isset( $this->options[$service] ) )
|
295 |
+
return $this->options[$service];
|
296 |
+
|
297 |
+
return array();
|
298 |
+
|
299 |
+
}
|
300 |
+
|
301 |
+
/**
|
302 |
+
* Set the service options for this schedule
|
303 |
+
*
|
304 |
+
* @access public
|
305 |
+
*/
|
306 |
+
public function set_service_options( $service, Array $options ) {
|
307 |
+
|
308 |
+
$this->options[$service] = $options;
|
309 |
+
|
310 |
+
}
|
311 |
+
|
312 |
+
/**
|
313 |
+
* Calculate the size of the backup
|
314 |
+
*
|
315 |
+
* Doesn't account for
|
316 |
+
* compression
|
317 |
+
*
|
318 |
+
* @access public
|
319 |
+
* @param bool $cached Whether to return from cache
|
320 |
+
* @return string
|
321 |
+
*/
|
322 |
+
public function get_filesize( $cached = true ) {
|
323 |
+
|
324 |
+
if ( ! $cached || ! $filesize = get_transient( 'hmbkp_schedule_' . $this->get_id() . '_filesize' ) ) {
|
325 |
+
|
326 |
+
$filesize = 0;
|
327 |
+
|
328 |
+
// Don't include database if file only
|
329 |
+
if ( $this->get_type() != 'file' ) {
|
330 |
+
|
331 |
+
global $wpdb;
|
332 |
+
|
333 |
+
$res = $wpdb->get_results( 'SHOW TABLE STATUS FROM `' . DB_NAME . '`', ARRAY_A );
|
334 |
+
|
335 |
+
foreach ( $res as $r )
|
336 |
+
$filesize += (float) $r['Data_length'];
|
337 |
+
|
338 |
+
}
|
339 |
+
|
340 |
+
// Don't include files if database only
|
341 |
+
if ( $this->get_type() != 'database' ) {
|
342 |
+
|
343 |
+
// Get rid of any cached filesizes
|
344 |
+
clearstatcache();
|
345 |
+
|
346 |
+
$excludes = $this->exclude_string( 'regex' );
|
347 |
+
|
348 |
+
foreach ( $this->get_files() as $file ) {
|
349 |
+
|
350 |
+
if ( $file === '.' || $file === '..' || ! $file->isReadable() )
|
351 |
+
continue;
|
352 |
+
|
353 |
+
// Excludes
|
354 |
+
if ( $excludes && preg_match( '(' . $excludes . ')', str_ireplace( trailingslashit( $this->get_root() ), '', $this->conform_dir( $file->getPathname() ) ) ) )
|
355 |
+
continue;
|
356 |
+
|
357 |
+
$filesize += (float) $file->getSize();
|
358 |
+
|
359 |
+
}
|
360 |
+
|
361 |
+
}
|
362 |
+
|
363 |
+
// Cache for a day
|
364 |
+
set_transient( 'hmbkp_schedule_' . $this->get_id() . '_filesize', $filesize, time() + 60 * 60 * 24 );
|
365 |
+
|
366 |
+
}
|
367 |
+
|
368 |
+
return self::human_filesize( $filesize, null, '%01u %s' );
|
369 |
+
|
370 |
+
}
|
371 |
+
|
372 |
+
/**
|
373 |
+
* Check whether the filesize has already been calculated and cached.
|
374 |
+
*
|
375 |
+
* @access public
|
376 |
+
* @return void
|
377 |
+
*/
|
378 |
+
public function is_filesize_cached() {
|
379 |
+
return (bool) get_transient( 'hmbkp_schedule_' . $this->get_id() . '_filesize' );
|
380 |
+
}
|
381 |
+
|
382 |
+
/**
|
383 |
+
* Clear the cached filesize, forces the filesize to be re-calculated the next
|
384 |
+
* time get_filesize is called
|
385 |
+
*
|
386 |
+
* @access public
|
387 |
+
* @return void
|
388 |
+
*/
|
389 |
+
public function clear_filesize_cache() {
|
390 |
+
delete_transient( 'hmbkp_schedule_' . $this->get_id() . '_filesize' );
|
391 |
+
}
|
392 |
+
|
393 |
+
/**
|
394 |
+
* Get the start time for the schedule
|
395 |
+
*
|
396 |
+
* @access public
|
397 |
+
* @return int timestamp || 0 for manual only schedules
|
398 |
+
*/
|
399 |
+
public function get_schedule_start_time() {
|
400 |
+
|
401 |
+
if ( $this->get_reoccurrence() === 'manually' )
|
402 |
+
return 0;
|
403 |
+
|
404 |
+
if ( ! $this->schedule_start_time ) {
|
405 |
+
|
406 |
+
if ( strtotime( '11pm' ) < strtotime( 'now' ) )
|
407 |
+
$date = strtotime( 'tomorrow 11pm' );
|
408 |
+
else
|
409 |
+
$date = strtotime( '11pm' );
|
410 |
+
|
411 |
+
$date -= ( get_option( 'gmt_offset' ) * 3600 );
|
412 |
+
|
413 |
+
$this->set_schedule_start_time( $date );
|
414 |
+
}
|
415 |
+
return $this->schedule_start_time;
|
416 |
+
|
417 |
+
}
|
418 |
+
|
419 |
+
/**
|
420 |
+
* Set the schedule start time.
|
421 |
+
*
|
422 |
+
* @access public
|
423 |
+
* @param int $timestamp
|
424 |
+
* @return void
|
425 |
+
*/
|
426 |
+
public function set_schedule_start_time( $timestamp ) {
|
427 |
+
|
428 |
+
if ( (string) (int) $timestamp !== (string) $timestamp )
|
429 |
+
throw new Exception( 'Argument 1 for ' . __METHOD__ . ' must be a valid UNIX timestamp' );
|
430 |
+
|
431 |
+
$this->schedule_start_time = $timestamp;
|
432 |
+
|
433 |
+
}
|
434 |
+
|
435 |
+
/**
|
436 |
+
* Get the schedule reoccurrence
|
437 |
+
*
|
438 |
+
* @access public
|
439 |
+
*/
|
440 |
+
public function get_reoccurrence() {
|
441 |
+
|
442 |
+
// Default to no reoccurrence
|
443 |
+
if ( empty( $this->options['reoccurrence'] ) )
|
444 |
+
$this->set_reoccurrence( 'manually' );
|
445 |
+
|
446 |
+
return esc_attr( $this->options['reoccurrence'] );
|
447 |
+
|
448 |
+
}
|
449 |
+
|
450 |
+
/**
|
451 |
+
* Set the schedule reoccurrence
|
452 |
+
*
|
453 |
+
* @access public
|
454 |
+
* @param string $reoccurrence
|
455 |
+
*/
|
456 |
+
public function set_reoccurrence( $reoccurrence ) {
|
457 |
+
|
458 |
+
// Check it's valid
|
459 |
+
if ( ! is_string( $reoccurrence ) || ! trim( $reoccurrence ) || ( ! in_array( $reoccurrence, array_keys( wp_get_schedules() ) ) ) && $reoccurrence !== 'manually' )
|
460 |
+
throw new Exception( 'Argument 1 for ' . __METHOD__ . ' must be a valid cron reoccurrence or "manually"' );
|
461 |
+
|
462 |
+
if ( isset( $this->options['reoccurrence'] ) && $this->options['reoccurrence'] === $reoccurrence )
|
463 |
+
return;
|
464 |
+
|
465 |
+
$this->options['reoccurrence'] = $reoccurrence;
|
466 |
+
|
467 |
+
if ( $reoccurrence === 'manually' )
|
468 |
+
$this->unschedule();
|
469 |
+
|
470 |
+
else
|
471 |
+
$this->schedule();
|
472 |
+
|
473 |
+
}
|
474 |
+
|
475 |
+
/**
|
476 |
+
* Get the interval between backups
|
477 |
+
*
|
478 |
+
* @access public
|
479 |
+
* @return int
|
480 |
+
*/
|
481 |
+
public function get_interval() {
|
482 |
+
|
483 |
+
$schedules = wp_get_schedules();
|
484 |
+
|
485 |
+
if ( $this->get_reoccurrence() === 'manually' )
|
486 |
+
return 0;
|
487 |
+
|
488 |
+
return $schedules[$this->get_reoccurrence()]['interval'];
|
489 |
+
|
490 |
+
}
|
491 |
+
|
492 |
+
/**
|
493 |
+
* Get the next occurrence of this scheduled backup
|
494 |
+
*
|
495 |
+
* @access public
|
496 |
+
*/
|
497 |
+
public function get_next_occurrence() {
|
498 |
+
|
499 |
+
return wp_next_scheduled( 'hmbkp_schedule_hook', array( 'id' => $this->get_id() ) );
|
500 |
+
|
501 |
+
}
|
502 |
+
|
503 |
+
private function get_schedule_running_path() {
|
504 |
+
return $this->get_path() . '/.schedule-' . $this->get_id() . '-running';
|
505 |
+
}
|
506 |
+
|
507 |
+
/**
|
508 |
+
* Schedule the cron
|
509 |
+
*
|
510 |
+
* @access public
|
511 |
+
*/
|
512 |
+
public function schedule() {
|
513 |
+
|
514 |
+
// Clear any existing hooks
|
515 |
+
$this->unschedule();
|
516 |
+
|
517 |
+
wp_schedule_event( $this->get_schedule_start_time(), $this->get_reoccurrence(), 'hmbkp_schedule_hook', array( 'id' => $this->get_id() ) );
|
518 |
+
}
|
519 |
+
|
520 |
+
public function unschedule() {
|
521 |
+
wp_clear_scheduled_hook( 'hmbkp_schedule_hook', array( 'id' => $this->get_id() ) );
|
522 |
+
}
|
523 |
+
|
524 |
+
/**
|
525 |
+
* Run the backup
|
526 |
+
*
|
527 |
+
* @access public
|
528 |
+
*/
|
529 |
+
public function run() {
|
530 |
+
|
531 |
+
// Mark the backup as started
|
532 |
+
$this->set_status( __( 'Backup started', 'hmbkp' ) );
|
533 |
+
|
534 |
+
$this->backup();
|
535 |
+
|
536 |
+
// Delete the backup running file
|
537 |
+
if ( file_exists( $this->get_schedule_running_path() ) )
|
538 |
+
unlink( $this->get_schedule_running_path() );
|
539 |
+
|
540 |
+
$this->delete_old_backups();
|
541 |
+
|
542 |
+
}
|
543 |
+
|
544 |
+
/**
|
545 |
+
* Get the status of the running backup.
|
546 |
+
*
|
547 |
+
* @access public
|
548 |
+
* @return string
|
549 |
+
*/
|
550 |
+
public function get_status() {
|
551 |
+
|
552 |
+
if ( ! file_exists( $this->get_schedule_running_path() ) )
|
553 |
+
return '';
|
554 |
+
|
555 |
+
return end( explode( '::', file_get_contents( $this->get_schedule_running_path() ) ) );
|
556 |
+
|
557 |
+
}
|
558 |
+
|
559 |
+
/**
|
560 |
+
* Get the filename that the running status is stored in.
|
561 |
+
*
|
562 |
+
* @access public
|
563 |
+
* @return string
|
564 |
+
*/
|
565 |
+
public function get_running_backup_filename() {
|
566 |
+
|
567 |
+
if ( ! file_exists( $this->get_schedule_running_path() ) )
|
568 |
+
return '';
|
569 |
+
|
570 |
+
return reset( explode( '::', file_get_contents( $this->get_schedule_running_path() ) ) );
|
571 |
+
}
|
572 |
+
|
573 |
+
/**
|
574 |
+
* Set the status of the running backup
|
575 |
+
*
|
576 |
+
* @access public
|
577 |
+
* @param string $message
|
578 |
+
* @return void
|
579 |
+
*/
|
580 |
+
protected function set_status( $message ) {
|
581 |
+
|
582 |
+
if ( ! $handle = fopen( $this->get_schedule_running_path(), 'w' ) )
|
583 |
+
return;
|
584 |
+
|
585 |
+
fwrite( $handle, $this->get_archive_filename() . '::' . $message );
|
586 |
+
|
587 |
+
fclose( $handle );
|
588 |
+
|
589 |
+
}
|
590 |
+
|
591 |
+
/**
|
592 |
+
* Hook into the actions fired in HM Backup and set the status
|
593 |
+
*
|
594 |
+
* @return null
|
595 |
+
*/
|
596 |
+
protected function do_action( $action ) {
|
597 |
+
|
598 |
+
switch ( $action ) :
|
599 |
+
|
600 |
+
case 'hmbkp_archive_started' :
|
601 |
+
|
602 |
+
$this->set_status( __( 'Creating zip archive', 'hmbkp' ) );
|
603 |
+
|
604 |
+
break;
|
605 |
+
|
606 |
+
case 'hmbkp_mysqldump_started' :
|
607 |
+
|
608 |
+
$this->set_status( __( 'Dumping database', 'hmbkp' ) );
|
609 |
+
|
610 |
+
break;
|
611 |
+
|
612 |
+
case 'hmbkp_backup_complete' :
|
613 |
+
|
614 |
+
if ( $this->get_errors() ) {
|
615 |
+
|
616 |
+
$file = $this->get_path() . '/.backup_errors';
|
617 |
+
|
618 |
+
if ( file_exists( $file ) )
|
619 |
+
unlink( $file );
|
620 |
+
|
621 |
+
if ( ! $handle = @fopen( $file, 'w' ) )
|
622 |
+
return;
|
623 |
+
|
624 |
+
fwrite( $handle, json_encode( $this->get_errors() ) );
|
625 |
+
|
626 |
+
fclose( $handle );
|
627 |
+
|
628 |
+
}
|
629 |
+
|
630 |
+
if ( $this->get_warnings() ) {
|
631 |
+
|
632 |
+
$file = $this->get_path() . '/.backup_warnings';
|
633 |
+
|
634 |
+
if ( file_exists( $file ) )
|
635 |
+
unlink( $file );
|
636 |
+
|
637 |
+
if ( ! $handle = @fopen( $file, 'w' ) )
|
638 |
+
return;
|
639 |
+
|
640 |
+
fwrite( $handle, json_encode( $this->get_warnings() ) );
|
641 |
+
|
642 |
+
fclose( $handle );
|
643 |
+
|
644 |
+
}
|
645 |
+
|
646 |
+
break;
|
647 |
+
|
648 |
+
endswitch;
|
649 |
+
|
650 |
+
// Pass the actions to all the services
|
651 |
+
foreach ( HMBKP_Services::get_services( $this ) as $service )
|
652 |
+
$service->action( $action );
|
653 |
+
|
654 |
+
// Fire the parent function as well
|
655 |
+
parent::do_action( $action );
|
656 |
+
|
657 |
+
}
|
658 |
+
|
659 |
+
/**
|
660 |
+
* Get the backups created by this schedule
|
661 |
+
*
|
662 |
+
* @todo look into using recursiveDirectoryIterator and recursiveRegexIterator
|
663 |
+
* @access public
|
664 |
+
* @return string[] - file paths of the backups
|
665 |
+
*/
|
666 |
+
public function get_backups() {
|
667 |
+
|
668 |
+
$files = array();
|
669 |
+
|
670 |
+
if ( $handle = @opendir( $this->get_path() ) ) {
|
671 |
+
|
672 |
+
while ( false !== ( $file = readdir( $handle ) ) )
|
673 |
+
if ( pathinfo( $file, PATHINFO_EXTENSION ) === 'zip' && strpos( $file, $this->get_id() ) !== false && $this->get_running_backup_filename() != $file )
|
674 |
+
$files[@filemtime( trailingslashit( $this->get_path() ) . $file )] = trailingslashit( $this->get_path() ) . $file;
|
675 |
+
|
676 |
+
closedir( $handle );
|
677 |
+
|
678 |
+
}
|
679 |
+
|
680 |
+
krsort( $files );
|
681 |
+
|
682 |
+
return $files;
|
683 |
+
|
684 |
+
}
|
685 |
+
|
686 |
+
/**
|
687 |
+
* Delete old backups
|
688 |
+
*
|
689 |
+
* @access private
|
690 |
+
*/
|
691 |
+
public function delete_old_backups() {
|
692 |
+
|
693 |
+
if ( count( $this->get_backups() ) <= $this->get_max_backups() )
|
694 |
+
return;
|
695 |
+
|
696 |
+
array_map( array( $this, 'delete_backup' ), array_slice( $this->get_backups(), $this->get_max_backups() ) );
|
697 |
+
|
698 |
+
}
|
699 |
+
|
700 |
+
/**
|
701 |
+
* Delete a specific back up file created by this schedule
|
702 |
+
*
|
703 |
+
* @access public
|
704 |
+
* @param string $filepath
|
705 |
+
*/
|
706 |
+
public function delete_backup( $filepath ) {
|
707 |
+
|
708 |
+
// Check that it's a valid filepath
|
709 |
+
if ( empty( $filepath ) || ! is_string( $filepath ) )
|
710 |
+
throw new Exception( 'Argument 1 for ' . __METHOD__ . ' must be a non empty string' );
|
711 |
+
|
712 |
+
// Make sure it exists
|
713 |
+
if ( ! file_exists( $filepath ) )
|
714 |
+
throw new Exception( $filepath . ' doesn\'t exist' );
|
715 |
+
|
716 |
+
// Make sure it was created by this schedule
|
717 |
+
if ( strpos( $filepath, $this->get_id() ) === false )
|
718 |
+
throw new Exception( 'That backup wasn\'t created by this schedule' );
|
719 |
+
|
720 |
+
unlink( $filepath );
|
721 |
+
|
722 |
+
}
|
723 |
+
|
724 |
+
/**
|
725 |
+
* Delete all back up files created by this schedule
|
726 |
+
*
|
727 |
+
* @access public
|
728 |
+
*/
|
729 |
+
public function delete_backups() {
|
730 |
+
|
731 |
+
array_map( array( $this, 'delete_backup' ), $this->get_backups() );
|
732 |
+
|
733 |
+
}
|
734 |
+
|
735 |
+
/**
|
736 |
+
* Save the schedules options.
|
737 |
+
*
|
738 |
+
* @access public
|
739 |
+
*/
|
740 |
+
public function save() {
|
741 |
+
|
742 |
+
// Only save them if they have changed
|
743 |
+
if ( $this->options !== get_option( 'hmbkp_schedule_' . $this->get_id() ) )
|
744 |
+
update_option( 'hmbkp_schedule_' . $this->get_id(), $this->options );
|
745 |
+
|
746 |
+
}
|
747 |
+
|
748 |
+
/**
|
749 |
+
* Cancel this schedule
|
750 |
+
*
|
751 |
+
* Cancels the cron job, removes the schedules options
|
752 |
+
* and optionally deletes all backups crated by
|
753 |
+
* this schedule.
|
754 |
+
*
|
755 |
+
* @access public
|
756 |
+
*/
|
757 |
+
public function cancel() {
|
758 |
+
|
759 |
+
// Delete the schedule options
|
760 |
+
delete_option( 'hmbkp_schedule_' . $this->get_id() );
|
761 |
+
|
762 |
+
// Clear any existing schedules
|
763 |
+
$this->unschedule();
|
764 |
+
|
765 |
+
// Clear the filesize transient
|
766 |
+
$this->clear_filesize_cache();
|
767 |
+
|
768 |
+
// Delete it's backups
|
769 |
+
$this->delete_backups();
|
770 |
+
|
771 |
+
}
|
772 |
+
|
773 |
+
}
|
backupwordpress/classes/schedules.php
ADDED
@@ -0,0 +1,70 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* A simple class for loading schedules
|
5 |
+
*/
|
6 |
+
class HMBKP_Schedules {
|
7 |
+
|
8 |
+
/**
|
9 |
+
* An array of schedules
|
10 |
+
*
|
11 |
+
* @var mixed
|
12 |
+
* @access private
|
13 |
+
*/
|
14 |
+
private $schedules;
|
15 |
+
|
16 |
+
/**
|
17 |
+
* Load the schedules from wp_options and store in $this->schedules
|
18 |
+
*
|
19 |
+
* @access public
|
20 |
+
*/
|
21 |
+
public function __construct() {
|
22 |
+
|
23 |
+
global $wpdb;
|
24 |
+
|
25 |
+
// Load all schedule options from the database
|
26 |
+
$schedules = $wpdb->get_col( "SELECT option_name from $wpdb->options WHERE option_name LIKE 'hmbkp\_schedule\_%'" );
|
27 |
+
|
28 |
+
// Instantiate each one as a HMBKP_Scheduled_Backup
|
29 |
+
$this->schedules = array_map( array( $this, 'instantiate' ), array_filter( (array) $schedules ) );
|
30 |
+
|
31 |
+
}
|
32 |
+
|
33 |
+
/**
|
34 |
+
* Get an array of schedules
|
35 |
+
*
|
36 |
+
* @access public
|
37 |
+
* @return array
|
38 |
+
*/
|
39 |
+
public function get_schedules() {
|
40 |
+
return $this->schedules;
|
41 |
+
}
|
42 |
+
|
43 |
+
/**
|
44 |
+
* Get a schedule by ID
|
45 |
+
*
|
46 |
+
* @return HMBKP_Scheduled_Backup
|
47 |
+
*/
|
48 |
+
public function get_schedule( $id ) {
|
49 |
+
|
50 |
+
foreach ( $this->schedules as $schedule )
|
51 |
+
if ( $schedule->get_id() == $id )
|
52 |
+
return $schedule;
|
53 |
+
|
54 |
+
return null;
|
55 |
+
}
|
56 |
+
|
57 |
+
/**
|
58 |
+
* Instantiate the individual scheduled backup objects
|
59 |
+
*
|
60 |
+
* @access private
|
61 |
+
* @param string $id
|
62 |
+
* @return array An array of HMBKP_Scheduled_Backup objects
|
63 |
+
*/
|
64 |
+
private function instantiate( $id ) {
|
65 |
+
|
66 |
+
return new HMBKP_Scheduled_Backup( str_replace( 'hmbkp_schedule_', '', $id ) );
|
67 |
+
|
68 |
+
}
|
69 |
+
|
70 |
+
}
|
backupwordpress/classes/services.php
ADDED
@@ -0,0 +1,233 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* An abstract service class, individual services should
|
5 |
+
* extend this class
|
6 |
+
*/
|
7 |
+
abstract class HMBKP_Service {
|
8 |
+
|
9 |
+
/**
|
10 |
+
* The instance HMBKP_Backup_Schedule that this service is
|
11 |
+
* is currently working with
|
12 |
+
*/
|
13 |
+
protected $schedule;
|
14 |
+
|
15 |
+
/**
|
16 |
+
* The form to output as part of the schedule settings
|
17 |
+
*
|
18 |
+
* If you don't want a whole form return ''; here and use @field instead
|
19 |
+
*/
|
20 |
+
abstract protected function form();
|
21 |
+
|
22 |
+
/**
|
23 |
+
* The field to output as part of the schedule settings
|
24 |
+
*
|
25 |
+
* If you don't want a field return ''; here and use @field instead
|
26 |
+
*/
|
27 |
+
abstract protected function field();
|
28 |
+
|
29 |
+
/**
|
30 |
+
* Validate and sanitize data before it's saved.
|
31 |
+
*
|
32 |
+
* @param array &$new_data An array or data from $_GET, passed by reference so it can be modified,
|
33 |
+
* @param array $old_data The old data thats going to be overwritten
|
34 |
+
* @return array $error Array of validation errors e.g. return array( 'email' => 'not valid' );
|
35 |
+
*/
|
36 |
+
abstract protected function update( &$new_data, $old_data );
|
37 |
+
|
38 |
+
/**
|
39 |
+
* The string to be output as part of the schedule sentence
|
40 |
+
*
|
41 |
+
* @return string
|
42 |
+
*/
|
43 |
+
abstract protected function display();
|
44 |
+
|
45 |
+
/**
|
46 |
+
* Receives actions from the backup
|
47 |
+
*
|
48 |
+
* This is where the service should do it's thing
|
49 |
+
*
|
50 |
+
* @see HM_Backup::do_action for a list of the actions
|
51 |
+
*/
|
52 |
+
abstract protected function action( $action );
|
53 |
+
|
54 |
+
/**
|
55 |
+
* Utility for getting a formated html input name attribute
|
56 |
+
*
|
57 |
+
* @param string $name The name of the field
|
58 |
+
* @return string The formated name
|
59 |
+
*/
|
60 |
+
protected function get_field_name( $name ) {
|
61 |
+
return esc_attr( get_class( $this ) . '[' . $name . ']' );
|
62 |
+
}
|
63 |
+
|
64 |
+
/**
|
65 |
+
* Get the value of a field
|
66 |
+
* @param string $name The name of the field
|
67 |
+
* @return string The field value
|
68 |
+
*/
|
69 |
+
protected function get_field_value( $name, $esc = 'esc_attr' ) {
|
70 |
+
|
71 |
+
if ( $this->schedule->get_service_options( get_class( $this ), $name ) )
|
72 |
+
return $esc( $this->schedule->get_service_options( get_class( $this ), $name ) );
|
73 |
+
|
74 |
+
return '';
|
75 |
+
|
76 |
+
}
|
77 |
+
|
78 |
+
/**
|
79 |
+
* Save the settings for this service
|
80 |
+
*
|
81 |
+
* @return null|array returns null on success, array of errors on failure
|
82 |
+
*/
|
83 |
+
public function save() {
|
84 |
+
|
85 |
+
$classname = get_class( $this );
|
86 |
+
|
87 |
+
$old_data = $this->schedule->get_service_options( $classname );
|
88 |
+
|
89 |
+
$new_data = isset( $_GET[$classname] ) ? $_GET[$classname] : $old_data;
|
90 |
+
|
91 |
+
$errors = $this->update( $new_data, $old_data );
|
92 |
+
|
93 |
+
if ( $errors && $errors = array_flip( $errors ) ) {
|
94 |
+
|
95 |
+
foreach( $errors as $error => &$field )
|
96 |
+
$field = get_class( $this ) . '[' . $field . ']';
|
97 |
+
|
98 |
+
return array_flip( $errors );
|
99 |
+
|
100 |
+
}
|
101 |
+
|
102 |
+
$this->schedule->set_service_options( $classname, $new_data );
|
103 |
+
|
104 |
+
return array();
|
105 |
+
|
106 |
+
}
|
107 |
+
|
108 |
+
/**
|
109 |
+
* Set the current schedule object
|
110 |
+
*
|
111 |
+
* @param HMBKP_Scheduled_Backup $schedule An instantiated schedule object
|
112 |
+
*/
|
113 |
+
public function set_schedule( HMBKP_Scheduled_Backup $schedule ) {
|
114 |
+
$this->schedule = $schedule;
|
115 |
+
}
|
116 |
+
|
117 |
+
}
|
118 |
+
|
119 |
+
/**
|
120 |
+
* A singleton to handle the registering, unregistering
|
121 |
+
* and storage of services
|
122 |
+
*/
|
123 |
+
class HMBKP_Services {
|
124 |
+
|
125 |
+
/**
|
126 |
+
* Store the current instance
|
127 |
+
*
|
128 |
+
* @access private
|
129 |
+
* @var object HMBKP_Services
|
130 |
+
* @static
|
131 |
+
*/
|
132 |
+
private static $instance;
|
133 |
+
|
134 |
+
/**
|
135 |
+
* The array of services
|
136 |
+
*
|
137 |
+
* Should be of the format array( __FILE__ => __CLASS__ );
|
138 |
+
*
|
139 |
+
* @access private
|
140 |
+
* @var array
|
141 |
+
* @static
|
142 |
+
*/
|
143 |
+
private $services = array();
|
144 |
+
|
145 |
+
/**
|
146 |
+
* The current schedule object
|
147 |
+
*
|
148 |
+
* @access private
|
149 |
+
* @var object HMBKP_Scheduled_Backup
|
150 |
+
*/
|
151 |
+
private $schedule;
|
152 |
+
|
153 |
+
/**
|
154 |
+
* Get the current instance
|
155 |
+
*
|
156 |
+
* @access public
|
157 |
+
* @static
|
158 |
+
*/
|
159 |
+
public static function instance() {
|
160 |
+
|
161 |
+
if ( ! isset( self::$instance ) )
|
162 |
+
self::$instance = new HMBKP_Services;
|
163 |
+
|
164 |
+
return self::$instance;
|
165 |
+
|
166 |
+
}
|
167 |
+
|
168 |
+
/**
|
169 |
+
* Get the array of registered services
|
170 |
+
*
|
171 |
+
* @access public
|
172 |
+
*/
|
173 |
+
public function get_services( HMBKP_Scheduled_Backup $schedule = null ) {
|
174 |
+
|
175 |
+
if ( is_null( $schedule ) )
|
176 |
+
return self::instance()->services;
|
177 |
+
|
178 |
+
self::instance()->schedule = $schedule;
|
179 |
+
|
180 |
+
return array_map( array( self::instance(), 'instantiate' ), self::instance()->services );
|
181 |
+
|
182 |
+
}
|
183 |
+
|
184 |
+
/**
|
185 |
+
* Register a new service
|
186 |
+
*
|
187 |
+
* @access public
|
188 |
+
*/
|
189 |
+
public function register( $filepath, $classname ) {
|
190 |
+
|
191 |
+
if ( ! file_exists( $filepath ) )
|
192 |
+
throw new Exception( 'Argument 1 for ' . __METHOD__ . ' must be a valid filepath' );
|
193 |
+
|
194 |
+
self::instance()->services[$filepath] = $classname;
|
195 |
+
|
196 |
+
}
|
197 |
+
|
198 |
+
/**
|
199 |
+
* Unregister an existing service
|
200 |
+
*
|
201 |
+
* @access public
|
202 |
+
*/
|
203 |
+
public function unregister( $filepath ) {
|
204 |
+
|
205 |
+
if ( ! isset( self::instance()->services[$filepath] ) )
|
206 |
+
throw new Exception( 'Argument 1 for ' . __METHOD__ . ' must be a registered service' );
|
207 |
+
|
208 |
+
unset( self::instance()->services[$filepath] );
|
209 |
+
|
210 |
+
}
|
211 |
+
|
212 |
+
/**
|
213 |
+
* Instantiate the individual service classes
|
214 |
+
*
|
215 |
+
* @access private
|
216 |
+
* @param string $class
|
217 |
+
* @return array An array of instantiated classes
|
218 |
+
*/
|
219 |
+
private function instantiate( $class ) {
|
220 |
+
|
221 |
+
if ( ! class_exists( $class ) )
|
222 |
+
throw new Exception( 'Argument 1 for ' . __METHOD__ . ' must be a valid class' );
|
223 |
+
|
224 |
+
$$class = new $class;
|
225 |
+
|
226 |
+
if ( self::instance()->schedule )
|
227 |
+
$$class->set_schedule( self::instance()->schedule );
|
228 |
+
|
229 |
+
return $$class;
|
230 |
+
|
231 |
+
}
|
232 |
+
|
233 |
+
}
|
backupwordpress/classes/wp-cli.php
ADDED
@@ -0,0 +1,95 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Implement backup command
|
5 |
+
*
|
6 |
+
* @todo fix
|
7 |
+
* @package wp-cli
|
8 |
+
* @subpackage commands/third-party
|
9 |
+
*/
|
10 |
+
class BackUpCommand extends WP_CLI_Command {
|
11 |
+
|
12 |
+
public function __construct( $args, $assoc_args ) {
|
13 |
+
|
14 |
+
// Make sure it's possible to do a backup
|
15 |
+
if ( HM_Backup::is_safe_mode_active() ) {
|
16 |
+
WP_CLI::error( __( 'Backup not possible when php is running safe_mode on', 'hmbkp' ) );
|
17 |
+
return false;
|
18 |
+
}
|
19 |
+
|
20 |
+
add_action( 'hmbkp_mysqldump_started', function() {
|
21 |
+
WP_CLI::line( __( 'Backup: Dumping database...', 'hmbkp' ) );
|
22 |
+
} );
|
23 |
+
|
24 |
+
add_action( 'hmbkp_archive_started', function() {
|
25 |
+
WP_CLI::line( __( 'Backup: Zipping everything up...', 'hmbkp' ) );
|
26 |
+
} );
|
27 |
+
|
28 |
+
// Clean up any mess left by a previous backup
|
29 |
+
hmbkp_cleanup();
|
30 |
+
|
31 |
+
$hm_backup = new HM_Backup();
|
32 |
+
|
33 |
+
if ( ! empty( $assoc_args['path'] ) )
|
34 |
+
$hm_backup->set_path( $assoc_args['path'] );
|
35 |
+
|
36 |
+
if ( ! empty( $assoc_args['root'] ) )
|
37 |
+
$hm_backup->set_root( $assoc_args['root'] );
|
38 |
+
|
39 |
+
if ( ( ! is_dir( $hm_backup->get_path() ) && ( ! is_writable( dirname( $hm_backup->get_path() ) ) || ! mkdir( $hm_backup->get_path() ) ) ) || ! is_writable( $hm_backup->get_path() ) ) {
|
40 |
+
WP_CLI::error( __( 'Invalid backup path', 'hmbkp' ) );
|
41 |
+
return false;
|
42 |
+
}
|
43 |
+
|
44 |
+
if ( ! is_dir( $hm_backup->get_root() ) || ! is_readable( $hm_backup->get_root() ) ) {
|
45 |
+
WP_CLI::error( __( 'Invalid root path', 'hmbkp' ) );
|
46 |
+
return false;
|
47 |
+
}
|
48 |
+
|
49 |
+
if ( ! empty( $assoc_args['files_only'] ) )
|
50 |
+
$hm_backup->set_type( 'file' );
|
51 |
+
|
52 |
+
if ( ! empty( $assoc_args['database_only'] ) )
|
53 |
+
$hm_backup->set_type( 'database' );
|
54 |
+
|
55 |
+
if ( isset( $assoc_args['mysqldump_command_path'] ) )
|
56 |
+
$hm_backup->set_mysqldump_command_path( $assoc_args['mysqldump_command_path'] );
|
57 |
+
|
58 |
+
if ( isset( $assoc_args['zip_command_path'] ) )
|
59 |
+
$hm_backup->set_zip_command_path( $assoc_args['zip_command_path'] );
|
60 |
+
|
61 |
+
if ( ! empty( $assoc_args['excludes'] ) )
|
62 |
+
$hm_backup->set_excludes( $assoc_args['excludes'] );
|
63 |
+
|
64 |
+
$hm_backup->backup();
|
65 |
+
|
66 |
+
// Delete any old backup files
|
67 |
+
//hmbkp_delete_old_backups();
|
68 |
+
|
69 |
+
if ( file_exists( $hm_backup->get_archive_filepath() ) )
|
70 |
+
WP_CLI::success( __( 'Backup Complete: ', 'hmbkp' ) . $hm_backup->get_archive_filepath() );
|
71 |
+
|
72 |
+
else
|
73 |
+
WP_CLI::error( __( 'Backup Failed', 'hmbkp' ) );
|
74 |
+
|
75 |
+
}
|
76 |
+
|
77 |
+
static function help() {
|
78 |
+
|
79 |
+
WP_CLI::line( <<<EOB
|
80 |
+
usage: wp backup [--files_only] [--database_only] [--path<dir>] [--root<dir>] [--zip_command_path=<path>] [--mysqldump_command_path=<path>]
|
81 |
+
|
82 |
+
--files_only Backup files only, default to off
|
83 |
+
--database_only Backup database only, defaults to off
|
84 |
+
--path dir that the backup should be save in, defaults to wp-content/backups/
|
85 |
+
--root dir that should be backed up, defaults to site root.
|
86 |
+
--zip_command_path path to your zip binary, standard locations are automatically used
|
87 |
+
--mysqldump_command_path path to your mysqldump binary, standard locations are automatically used
|
88 |
+
|
89 |
+
EOB
|
90 |
+
);
|
91 |
+
|
92 |
+
}
|
93 |
+
|
94 |
+
}
|
95 |
+
WP_CLI::addCommand( 'backup', 'BackUpCommand' );
|
backupwordpress/functions/core.php
ADDED
@@ -0,0 +1,363 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Setup the plugin defaults on activation
|
5 |
+
*/
|
6 |
+
function hmbkp_activate() {
|
7 |
+
|
8 |
+
hmbkp_deactivate();
|
9 |
+
|
10 |
+
}
|
11 |
+
|
12 |
+
/**
|
13 |
+
* Cleanup on plugin deactivation
|
14 |
+
*
|
15 |
+
* Removes options and clears all cron schedules
|
16 |
+
*/
|
17 |
+
function hmbkp_deactivate() {
|
18 |
+
|
19 |
+
// Options to delete
|
20 |
+
$options = array(
|
21 |
+
'hmbkp_zip_path',
|
22 |
+
'hmbkp_mysqldump_path',
|
23 |
+
'hmbkp_path',
|
24 |
+
'hmbkp_running',
|
25 |
+
'hmbkp_status',
|
26 |
+
'hmbkp_complete',
|
27 |
+
'hmbkp_email_error'
|
28 |
+
);
|
29 |
+
|
30 |
+
foreach ( $options as $option )
|
31 |
+
delete_option( $option );
|
32 |
+
|
33 |
+
delete_transient( 'hmbkp_running' );
|
34 |
+
delete_transient( 'hmbkp_estimated_filesize' );
|
35 |
+
|
36 |
+
// Clear cron
|
37 |
+
wp_clear_scheduled_hook( 'hmbkp_schedule_backup_hook' );
|
38 |
+
wp_clear_scheduled_hook( 'hmbkp_schedule_single_backup_hook' );
|
39 |
+
|
40 |
+
hmbkp_cleanup();
|
41 |
+
|
42 |
+
}
|
43 |
+
|
44 |
+
/**
|
45 |
+
* Handles anything that needs to be
|
46 |
+
* done when the plugin is updated
|
47 |
+
*/
|
48 |
+
function hmbkp_update() {
|
49 |
+
|
50 |
+
// Update from backUpWordPress 0.4.5
|
51 |
+
if ( get_option( 'bkpwp_max_backups' ) ) {
|
52 |
+
|
53 |
+
// Carry over the custom path
|
54 |
+
if ( $legacy_path = get_option( 'bkpwppath' ) )
|
55 |
+
update_option( 'hmbkp_path', $legacy_path );
|
56 |
+
|
57 |
+
// Options to remove
|
58 |
+
$legacy_options = array(
|
59 |
+
'bkpwp_archive_types',
|
60 |
+
'bkpwp_automail_from',
|
61 |
+
'bkpwp_domain',
|
62 |
+
'bkpwp_domain_path',
|
63 |
+
'bkpwp_easy_mode',
|
64 |
+
'bkpwp_excludelists',
|
65 |
+
'bkpwp_install_user',
|
66 |
+
'bkpwp_listmax_backups',
|
67 |
+
'bkpwp_max_backups',
|
68 |
+
'bkpwp_presets',
|
69 |
+
'bkpwp_reccurrences',
|
70 |
+
'bkpwp_schedules',
|
71 |
+
'bkpwp_calculation',
|
72 |
+
'bkpwppath',
|
73 |
+
'bkpwp_status_config',
|
74 |
+
'bkpwp_status'
|
75 |
+
);
|
76 |
+
|
77 |
+
foreach ( $legacy_options as $option )
|
78 |
+
delete_option( $option );
|
79 |
+
|
80 |
+
global $wp_roles;
|
81 |
+
|
82 |
+
$wp_roles->remove_cap( 'administrator','manage_backups' );
|
83 |
+
$wp_roles->remove_cap( 'administrator','download_backups' );
|
84 |
+
|
85 |
+
wp_clear_scheduled_hook( 'bkpwp_schedule_bkpwp_hook' );
|
86 |
+
|
87 |
+
}
|
88 |
+
|
89 |
+
// Version 1 to 2
|
90 |
+
if ( version_compare ( '2.0' , get_option( 'hmbkp_plugin_version' ) ) ) {
|
91 |
+
|
92 |
+
/**
|
93 |
+
* Setup a backwards compatible schedule
|
94 |
+
*/
|
95 |
+
$legacy_schedule = new HMBKP_Scheduled_Backup( 'backup' );
|
96 |
+
|
97 |
+
// Backup type
|
98 |
+
if ( ( defined( 'HMBKP_FILES_ONLY' ) && HMBKP_FILES_ONLY ) || get_option( 'hmbkp_files_only' ) )
|
99 |
+
$legacy_schedule->set_type( 'file' );
|
100 |
+
|
101 |
+
elseif ( ( defined( 'HMBKP_DATABASE_ONLY' ) && HMBKP_DATABASE_ONLY ) || get_option( 'hmbkp_database_only' ) )
|
102 |
+
$legacy_schedule->set_type( 'database' );
|
103 |
+
|
104 |
+
else
|
105 |
+
$legacy_schedule->set_type( 'complete' );
|
106 |
+
|
107 |
+
// Daily schedule time
|
108 |
+
if ( defined( 'HMBKP_DAILY_SCHEDULE_TIME' ) && HMBKP_DAILY_SCHEDULE_TIME )
|
109 |
+
$legacy_schedule->set_schedule_start_time( strtotime( HMBKP_DAILY_SCHEDULE_TIME ) );
|
110 |
+
|
111 |
+
// Backup schedule
|
112 |
+
$legacy_schedule->set_reoccurrence( str_replace( 'hmbkp_', '', get_option( 'hmbkp_schedule_frequency', 'daily' ) ) );
|
113 |
+
|
114 |
+
// Automatic backups disabled?
|
115 |
+
if ( ( defined( 'HMBKP_DISABLE_AUTOMATIC_BACKUP' ) && HMBKP_DISABLE_AUTOMATIC_BACKUP ) || get_option( 'hmbkp_disable_automatic_backup' ) )
|
116 |
+
$legacy_schedule->set_reoccurrence( 'manually' );
|
117 |
+
|
118 |
+
// Max backups
|
119 |
+
if ( defined( 'HMBKP_MAX_BACKUPS' ) && is_numeric( HMBKP_MAX_BACKUPS ) )
|
120 |
+
$legacy_schedule->set_max_backups( (int) HMBKP_MAX_BACKUPS );
|
121 |
+
|
122 |
+
else
|
123 |
+
$legacy_schedule->set_max_backups( (int) get_option( 'hmbkp_max_backups', 10 ) );
|
124 |
+
|
125 |
+
// Excludes
|
126 |
+
if ( get_option( 'hmbkp_excludes' ) )
|
127 |
+
$legacy_schedule->set_excludes( get_option( 'hmbkp_excludes' ) );
|
128 |
+
|
129 |
+
// Backup email
|
130 |
+
if ( defined( 'HMBKP_EMAIL' ) && is_email( HMBKP_EMAIL ) )
|
131 |
+
$legacy_schedule->set_service_options( 'HMBKP_Email_Service', array( 'email' => HMBKP_EMAIL ) );
|
132 |
+
|
133 |
+
elseif ( is_email( get_option( 'hmbkp_email_address' ) ) )
|
134 |
+
$legacy_schedule->set_service_options( 'HMBKP_Email_Service', array( 'email' => get_option( 'hmbkp_email_address' ) ) );
|
135 |
+
|
136 |
+
// Set the archive filename to what it used to be
|
137 |
+
$legacy_schedule->set_archive_filename( implode( '-', array( get_bloginfo( 'name' ), 'backup', date( 'Y-m-d-H-i-s', current_time( 'timestamp' ) ) ) ) . '.zip' );
|
138 |
+
|
139 |
+
$legacy_schedule->save();
|
140 |
+
|
141 |
+
// Remove the legacy options
|
142 |
+
foreach ( array( 'hmbkp_email', 'hmbkp_database_only', 'hmbkp_files_only', 'hmbkp_max_backups', 'hmbkp_email_address', 'hmbkp_email', 'hmbkp_schedule_frequency', 'hmbkp_disable_automatic_backup' ) as $option_name )
|
143 |
+
delete_option( $option_name );
|
144 |
+
|
145 |
+
|
146 |
+
}
|
147 |
+
|
148 |
+
// Every update
|
149 |
+
if ( version_compare( HMBKP_VERSION, get_option( 'hmbkp_plugin_version' ), '>' ) ) {
|
150 |
+
|
151 |
+
hmbkp_deactivate();
|
152 |
+
|
153 |
+
// Force .htaccess to be re-written
|
154 |
+
if ( file_exists( hmbkp_path() . '/.htaccess' ) )
|
155 |
+
unlink( hmbkp_path() . '/.htaccess' );
|
156 |
+
|
157 |
+
}
|
158 |
+
|
159 |
+
// Update the stored version
|
160 |
+
if ( get_option( 'hmbkp_plugin_version' ) !== HMBKP_VERSION )
|
161 |
+
update_option( 'hmbkp_plugin_version', HMBKP_VERSION );
|
162 |
+
|
163 |
+
}
|
164 |
+
|
165 |
+
/**
|
166 |
+
* Setup the default backup schedules
|
167 |
+
*/
|
168 |
+
function hmbkp_setup_default_schedules() {
|
169 |
+
|
170 |
+
$schedules = new HMBKP_Schedules;
|
171 |
+
|
172 |
+
if ( $schedules->get_schedules() )
|
173 |
+
return;
|
174 |
+
|
175 |
+
/**
|
176 |
+
* Schedule a database backup daily and store backups
|
177 |
+
* for the last 2 weeks
|
178 |
+
*/
|
179 |
+
$database_daily = new HMBKP_Scheduled_Backup( 'default-1' );
|
180 |
+
$database_daily->set_type( 'database' );
|
181 |
+
$database_daily->set_reoccurrence( 'daily' );
|
182 |
+
$database_daily->set_max_backups( 14 );
|
183 |
+
$database_daily->save();
|
184 |
+
|
185 |
+
/**
|
186 |
+
* Schedule a complete backup to run weekly and store backups for
|
187 |
+
* the last 3 months
|
188 |
+
*/
|
189 |
+
$complete_weekly = new HMBKP_Scheduled_Backup( 'default-2' );
|
190 |
+
$complete_weekly->set_type( 'complete' );
|
191 |
+
$complete_weekly->set_reoccurrence( 'weekly' );
|
192 |
+
$complete_weekly->set_max_backups( 12 );
|
193 |
+
$complete_weekly->save();
|
194 |
+
|
195 |
+
function hmbkp_default_schedules_setup_warning() {
|
196 |
+
echo '<div id="hmbkp-warning" class="updated fade"><p><strong>' . __( 'BackUpWordPress has setup your default schedules.', 'hmbkp' ) . '</strong> ' . __( 'By default BackUpWordPress performs a daily backup of your database and a weekly backup of your database & files. You can modify these schedules.', 'hmbkp' ) . '</p></div>';
|
197 |
+
}
|
198 |
+
add_action( 'admin_notices', 'hmbkp_default_schedules_setup_warning' );
|
199 |
+
|
200 |
+
}
|
201 |
+
add_action( 'admin_init', 'hmbkp_setup_default_schedules' );
|
202 |
+
|
203 |
+
/**
|
204 |
+
* Add weekly, fortnightly and monthly as a cron schedule choices
|
205 |
+
*
|
206 |
+
* @param array $reccurrences
|
207 |
+
* @return array $reccurrences
|
208 |
+
*/
|
209 |
+
function hmbkp_more_reccurences( $reccurrences ) {
|
210 |
+
|
211 |
+
return array_merge( $reccurrences, array(
|
212 |
+
'weekly' => array( 'interval' => 604800, 'display' => 'Once Weekly' ),
|
213 |
+
'fortnightly' => array( 'interval' => 1209600, 'display' => 'Once Fortnightly' ),
|
214 |
+
'monthly' => array( 'interval' => 2629743.83 , 'display' => 'Once Monthly' )
|
215 |
+
) );
|
216 |
+
}
|
217 |
+
add_filter( 'cron_schedules', 'hmbkp_more_reccurences' );
|
218 |
+
|
219 |
+
/**
|
220 |
+
* Recursively delete a directory including
|
221 |
+
* all the files and sub-directories.
|
222 |
+
*
|
223 |
+
* @param string $dir
|
224 |
+
*/
|
225 |
+
function hmbkp_rmdirtree( $dir ) {
|
226 |
+
|
227 |
+
if ( is_file( $dir ) )
|
228 |
+
@unlink( $dir );
|
229 |
+
|
230 |
+
if ( ! is_dir( $dir ) )
|
231 |
+
return false;
|
232 |
+
|
233 |
+
$files = new RecursiveIteratorIterator( new RecursiveDirectoryIterator( $dir ), RecursiveIteratorIterator::CHILD_FIRST, RecursiveIteratorIterator::CATCH_GET_CHILD );
|
234 |
+
|
235 |
+
foreach ( $files as $file ) {
|
236 |
+
|
237 |
+
if ( $file->isDir() )
|
238 |
+
@rmdir( $file->getPathname() );
|
239 |
+
|
240 |
+
else
|
241 |
+
@unlink( $file->getPathname() );
|
242 |
+
|
243 |
+
}
|
244 |
+
|
245 |
+
@rmdir( $dir );
|
246 |
+
|
247 |
+
}
|
248 |
+
|
249 |
+
/**
|
250 |
+
* Get the path to the backups directory
|
251 |
+
*
|
252 |
+
* Will try to create it if it doesn't exist
|
253 |
+
* and will fallback to default if a custom dir
|
254 |
+
* isn't writable.
|
255 |
+
*/
|
256 |
+
function hmbkp_path() {
|
257 |
+
|
258 |
+
$path = get_option( 'hmbkp_path' );
|
259 |
+
|
260 |
+
// Allow the backups path to be defined
|
261 |
+
if ( defined( 'HMBKP_PATH' ) && HMBKP_PATH )
|
262 |
+
$path = HMBKP_PATH;
|
263 |
+
|
264 |
+
// If the dir doesn't exist or isn't writable then use wp-content/backups instead
|
265 |
+
if ( ( ! $path || ! is_writable( $path ) ) && HM_Backup::conform_dir( $path ) !== hmbkp_path_default() )
|
266 |
+
$path = hmbkp_path_default();
|
267 |
+
|
268 |
+
// Create the backups directory if it doesn't exist
|
269 |
+
if ( is_writable( dirname( $path ) ) && ! is_dir( $path ) )
|
270 |
+
mkdir( $path, 0755 );
|
271 |
+
|
272 |
+
if ( get_option( 'hmbkp_path' ) !== $path )
|
273 |
+
update_option( 'hmbkp_path', $path );
|
274 |
+
|
275 |
+
// Protect against directory browsing by including a index.html file
|
276 |
+
$index = $path . '/index.html';
|
277 |
+
|
278 |
+
if ( ! file_exists( $index ) && is_writable( $path ) )
|
279 |
+
file_put_contents( $index, '' );
|
280 |
+
|
281 |
+
return HM_Backup::conform_dir( $path );
|
282 |
+
|
283 |
+
}
|
284 |
+
|
285 |
+
/**
|
286 |
+
* Return the default backup path
|
287 |
+
*
|
288 |
+
* @return string path
|
289 |
+
*/
|
290 |
+
function hmbkp_path_default() {
|
291 |
+
return HM_Backup::conform_dir( WP_CONTENT_DIR . '/backups' );
|
292 |
+
}
|
293 |
+
|
294 |
+
/**
|
295 |
+
* Move the backup directory and all existing backup files to a new
|
296 |
+
* location
|
297 |
+
*
|
298 |
+
* @param string $from path to move the backups dir from
|
299 |
+
* @param string $to path to move the backups dir to
|
300 |
+
* @return void
|
301 |
+
*/
|
302 |
+
function hmbkp_path_move( $from, $to ) {
|
303 |
+
|
304 |
+
// Create the custom backups directory if it doesn't exist
|
305 |
+
if ( is_writable( dirname( $to ) ) && ! is_dir( $to ) )
|
306 |
+
mkdir( $to, 0755 );
|
307 |
+
|
308 |
+
if ( ! is_dir( $to ) || ! is_writable( $to ) || ! is_dir( $from ) )
|
309 |
+
return false;
|
310 |
+
|
311 |
+
hmbkp_cleanup();
|
312 |
+
|
313 |
+
if ( $handle = opendir( $from ) ) :
|
314 |
+
|
315 |
+
while ( false !== ( $file = readdir( $handle ) ) )
|
316 |
+
if ( $file !== '.' && $file !== '..' )
|
317 |
+
rename( trailingslashit( $from ) . $file, trailingslashit( $to ) . $file );
|
318 |
+
|
319 |
+
closedir( $handle );
|
320 |
+
|
321 |
+
endif;
|
322 |
+
|
323 |
+
hmbkp_rmdirtree( $from );
|
324 |
+
|
325 |
+
}
|
326 |
+
|
327 |
+
/**
|
328 |
+
* Check if a backup is possible with regards to file
|
329 |
+
* permissions etc.
|
330 |
+
*
|
331 |
+
* @return bool
|
332 |
+
*/
|
333 |
+
function hmbkp_possible() {
|
334 |
+
|
335 |
+
if ( ! is_writable( hmbkp_path() ) || ! is_dir( hmbkp_path() ) || HM_Backup::is_safe_mode_active() )
|
336 |
+
return false;
|
337 |
+
|
338 |
+
return true;
|
339 |
+
}
|
340 |
+
|
341 |
+
/**
|
342 |
+
* Remove any non backup.zip files from the backups dir.
|
343 |
+
*
|
344 |
+
* @return void
|
345 |
+
*/
|
346 |
+
function hmbkp_cleanup() {
|
347 |
+
|
348 |
+
$hmbkp_path = hmbkp_path();
|
349 |
+
|
350 |
+
if ( ! is_dir( $hmbkp_path ) )
|
351 |
+
return;
|
352 |
+
|
353 |
+
if ( $handle = opendir( $hmbkp_path ) ) :
|
354 |
+
|
355 |
+
while ( false !== ( $file = readdir( $handle ) ) )
|
356 |
+
if ( ! in_array( $file, array( '.', '..', 'index.html' ) ) && pathinfo( $file, PATHINFO_EXTENSION ) !== 'zip' )
|
357 |
+
hmbkp_rmdirtree( trailingslashit( $hmbkp_path ) . $file );
|
358 |
+
|
359 |
+
closedir( $handle );
|
360 |
+
|
361 |
+
endif;
|
362 |
+
|
363 |
+
}
|
backupwordpress/functions/interface.php
ADDED
@@ -0,0 +1,284 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Displays a row in the manage backups table
|
5 |
+
*
|
6 |
+
* @param string $file
|
7 |
+
*/
|
8 |
+
function hmbkp_get_backup_row( $file, HMBKP_Scheduled_Backup $schedule ) {
|
9 |
+
|
10 |
+
$encoded_file = urlencode( base64_encode( $file ) );
|
11 |
+
$offset = current_time( 'timestamp' ) - time(); ?>
|
12 |
+
|
13 |
+
<tr class="hmbkp_manage_backups_row<?php if ( file_exists( hmbkp_path() . '/.backup_complete' ) ) : ?> completed<?php unlink( hmbkp_path() . '/.backup_complete' ); endif; ?>">
|
14 |
+
|
15 |
+
<th scope="row">
|
16 |
+
<?php echo esc_attr( date_i18n( get_option( 'date_format' ) . ' - ' . get_option( 'time_format' ), @filemtime( $file ) + $offset ) ); ?>
|
17 |
+
</th>
|
18 |
+
|
19 |
+
<td class="code">
|
20 |
+
<?php echo esc_attr( HMBKP_Scheduled_Backup::human_filesize( @filesize( $file ) ) ); ?>
|
21 |
+
</td>
|
22 |
+
|
23 |
+
<td><?php echo esc_attr( hmbkp_human_get_type( $file, $schedule ) ); ?></td>
|
24 |
+
|
25 |
+
<td>
|
26 |
+
|
27 |
+
<a href="<?php echo wp_nonce_url( admin_url( 'tools.php?page=' . HMBKP_PLUGIN_SLUG . '&hmbkp_download_backup=' . $encoded_file . '&hmbkp_schedule_id=' . $schedule->get_id() ), 'hmbkp-download_backup' ); ?>"><?php _e( 'Download', 'hmbkp' ); ?></a> |
|
28 |
+
<a href="<?php echo wp_nonce_url( admin_url( 'tools.php?page=' . HMBKP_PLUGIN_SLUG . '&hmbkp_delete_backup=' . $encoded_file . '&hmbkp_schedule_id=' . $schedule->get_id() ), 'hmbkp-delete_backup' ); ?>" class="delete-action"><?php _e( 'Delete', 'hmbkp' ); ?></a>
|
29 |
+
|
30 |
+
</td>
|
31 |
+
|
32 |
+
</tr>
|
33 |
+
|
34 |
+
<?php }
|
35 |
+
|
36 |
+
/**
|
37 |
+
* Displays admin notices for various error / warning
|
38 |
+
* conditions
|
39 |
+
*
|
40 |
+
* @return void
|
41 |
+
*/
|
42 |
+
function hmbkp_admin_notices() {
|
43 |
+
|
44 |
+
// If the backups directory doesn't exist and can't be automatically created
|
45 |
+
if ( ! is_dir( hmbkp_path() ) ) :
|
46 |
+
|
47 |
+
function hmbkp_path_exists_warning() {
|
48 |
+
$php_user = exec( 'whoami' );
|
49 |
+
$php_group = reset( explode( ' ', exec( 'groups' ) ) );
|
50 |
+
echo '<div id="hmbkp-warning" class="updated fade"><p><strong>' . __( 'BackUpWordPress is almost ready.', 'hmbkp' ) . '</strong> ' . sprintf( __( 'The backups directory can\'t be created because your %1$s directory isn\'t writable, run %2$s or %3$s or create the folder yourself.', 'hmbkp' ), '<code>wp-content</code>', '<code>chown ' . $php_user . ':' . $php_group . ' ' . WP_CONTENT_DIR . '</code>', '<code>chmod 777 ' . WP_CONTENT_DIR . '</code>' ) . '</p></div>';
|
51 |
+
}
|
52 |
+
add_action( 'admin_notices', 'hmbkp_path_exists_warning' );
|
53 |
+
|
54 |
+
endif;
|
55 |
+
|
56 |
+
// If the backups directory exists but isn't writable
|
57 |
+
if ( is_dir( hmbkp_path() ) && ! is_writable( hmbkp_path() ) ) :
|
58 |
+
|
59 |
+
function hmbkp_writable_path_warning() {
|
60 |
+
$php_user = exec( 'whoami' );
|
61 |
+
$php_group = reset( explode( ' ', exec( 'groups' ) ) );
|
62 |
+
echo '<div id="hmbkp-warning" class="updated fade"><p><strong>' . __( 'BackUpWordPress is almost ready.', 'hmbkp' ) . '</strong> ' . sprintf( __( 'Your backups directory isn\'t writable, run %1$s or %2$s or set the permissions yourself.', 'hmbkp' ), '<code>chown -R ' . esc_attr( $php_user ) . ':' . esc_attr( $php_group ) . ' ' . esc_attr( hmbkp_path() ) . '</code>', '<code>chmod -R 777 ' . esc_attr( hmbkp_path() ) . '</code>' ) . '</p></div>';
|
63 |
+
}
|
64 |
+
add_action( 'admin_notices', 'hmbkp_writable_path_warning' );
|
65 |
+
|
66 |
+
endif;
|
67 |
+
|
68 |
+
// If safe mode is active
|
69 |
+
if ( HM_Backup::is_safe_mode_active() ) :
|
70 |
+
|
71 |
+
function hmbkp_safe_mode_warning() {
|
72 |
+
echo '<div id="hmbkp-warning" class="updated fade"><p><strong>' . __( 'BackUpWordPress has detected a problem.', 'hmbkp' ) . '</strong> ' . sprintf( __( '%1$s is running in %2$s. Please contact your host and ask them to disable %3$s.', 'hmbkp' ), '<code>PHP</code>', sprintf( '<a href="%1$s">%2$s</a>', __( 'http://php.net/manual/en/features.safe-mode.php', 'hmbkp' ), __( 'Safe Mode', 'hmbkp' ) ), '<code>' . __( 'Safe Mode', 'hmbkp' ) . '</code>' ) . '</p></div>';
|
73 |
+
}
|
74 |
+
add_action( 'admin_notices', 'hmbkp_safe_mode_warning' );
|
75 |
+
|
76 |
+
endif;
|
77 |
+
|
78 |
+
// If a custom backups directory is defined and it doesn't exist and can't be created
|
79 |
+
if ( defined( 'HMBKP_PATH' ) && HMBKP_PATH && ! is_dir( HMBKP_PATH ) ) :
|
80 |
+
|
81 |
+
function hmbkp_custom_path_exists_warning() {
|
82 |
+
echo '<div id="hmbkp-warning" class="updated fade"><p><strong>' . __( 'BackUpWordPress has detected a problem.', 'hmbkp' ) . '</strong> ' . sprintf( __( 'Your custom backups directory %1$s doesn\'t exist and can\'t be created, your backups will be saved to %2$s instead.', 'hmbkp' ), '<code>' . esc_attr( HMBKP_PATH ) . '</code>', '<code>' . esc_attr( hmbkp_path() ) . '</code>' ) . '</p></div>';
|
83 |
+
}
|
84 |
+
add_action( 'admin_notices', 'hmbkp_custom_path_exists_warning' );
|
85 |
+
|
86 |
+
endif;
|
87 |
+
|
88 |
+
// If a custom backups directory is defined and exists but isn't writable
|
89 |
+
if ( defined( 'HMBKP_PATH' ) && HMBKP_PATH && is_dir( HMBKP_PATH ) && ! is_writable( HMBKP_PATH ) ) :
|
90 |
+
|
91 |
+
function hmbkp_custom_path_writable_notice() {
|
92 |
+
echo '<div id="hmbkp-warning" class="updated fade"><p><strong>' . __( 'BackUpWordPress has detected a problem.', 'hmbkp' ) . '</strong> ' . sprintf( __( 'Your custom backups directory %1$s isn\'t writable, new backups will be saved to %2$s instead.', 'hmbkp' ), '<code>' . esc_attr( HMBKP_PATH ) . '</code>', '<code>' . esc_attr( hmbkp_path() ) . '</code>' ) . '</p></div>';
|
93 |
+
}
|
94 |
+
add_action( 'admin_notices', 'hmbkp_custom_path_writable_notice' );
|
95 |
+
|
96 |
+
endif;
|
97 |
+
|
98 |
+
// If there are any errors reported in the backup
|
99 |
+
if ( hmbkp_backup_errors_message() ) :
|
100 |
+
|
101 |
+
function hmbkp_backup_errors_notice() {
|
102 |
+
echo '<div id="hmbkp-warning" class="updated fade"><p><strong>' . __( 'BackUpWordPress detected issues with your last backup.', 'hmbkp' ) . '</strong><a href="' . add_query_arg( 'action', 'hmbkp_dismiss_error' ) . '" style="float: right;" class="button">Dismiss</a></p>' . hmbkp_backup_errors_message() . '</div>';
|
103 |
+
}
|
104 |
+
add_action( 'admin_notices', 'hmbkp_backup_errors_notice' );
|
105 |
+
|
106 |
+
endif;
|
107 |
+
|
108 |
+
if ( ! empty( $_GET['reason'] ) ) :
|
109 |
+
|
110 |
+
function hmbkp_backup_failed_notice() {
|
111 |
+
echo '<div id="hmbkp-warning" class="updated fade"><p><strong>' . __( 'BackUpWordPress failed to perform the backup.', 'hmbkp' ) . '</strong> ' . __( 'You have likely hit a memory limit.', 'hmbkp' ) . '<a href="' . add_query_arg( 'action', 'hmbkp_dismiss_error' ) . '" style="float: right;" class="button">Dismiss</a></p></div>';
|
112 |
+
}
|
113 |
+
//add_action( 'admin_notices', 'hmbkp_backup_failed_notice' );
|
114 |
+
|
115 |
+
endif;
|
116 |
+
|
117 |
+
}
|
118 |
+
add_action( 'admin_head', 'hmbkp_admin_notices' );
|
119 |
+
|
120 |
+
/**
|
121 |
+
* Hook in an change the plugin description when BackUpWordPress is activated
|
122 |
+
*
|
123 |
+
* @param array $plugins
|
124 |
+
* @return $plugins
|
125 |
+
*/
|
126 |
+
function hmbkp_plugin_row( $plugins ) {
|
127 |
+
|
128 |
+
if ( isset( $plugins[HMBKP_PLUGIN_SLUG . '/plugin.php'] ) )
|
129 |
+
$plugins[HMBKP_PLUGIN_SLUG . '/plugin.php']['Description'] = str_replace( 'Once activated you\'ll find me under <strong>Tools → Backups</strong>', 'Find me under <strong><a href="' . admin_url( 'tools.php?page=' . HMBKP_PLUGIN_SLUG ) . '">Tools → Backups</a></strong>', $plugins[HMBKP_PLUGIN_SLUG . '/plugin.php']['Description'] );
|
130 |
+
|
131 |
+
return $plugins;
|
132 |
+
|
133 |
+
}
|
134 |
+
add_filter( 'all_plugins', 'hmbkp_plugin_row', 10 );
|
135 |
+
|
136 |
+
/**
|
137 |
+
* Parse the json string of errors and
|
138 |
+
* output as a human readable message
|
139 |
+
*
|
140 |
+
* @access public
|
141 |
+
* @return null
|
142 |
+
*/
|
143 |
+
function hmbkp_backup_errors_message() {
|
144 |
+
|
145 |
+
$message = '';
|
146 |
+
|
147 |
+
foreach ( (array) json_decode( hmbkp_backup_errors() ) as $key => $errors )
|
148 |
+
foreach ( $errors as $error )
|
149 |
+
$message .= '<p><strong>' . $key . '</strong>: <code>' . implode( ':', (array) $error ) . '</code></p>';
|
150 |
+
|
151 |
+
return $message;
|
152 |
+
|
153 |
+
}
|
154 |
+
|
155 |
+
/**
|
156 |
+
* Display a html list of files
|
157 |
+
*
|
158 |
+
* @param HMBKP_Scheduled_Backup $schedule
|
159 |
+
* @param mixed $excludes (default: null)
|
160 |
+
* @param string $file_method (default: 'get_included_files')
|
161 |
+
* @return void
|
162 |
+
*/
|
163 |
+
function hmbkp_file_list( HMBKP_Scheduled_Backup $schedule, $excludes = null, $file_method = 'get_included_files' ) {
|
164 |
+
|
165 |
+
if ( ! is_null( $excludes ) )
|
166 |
+
$schedule->set_excludes( $excludes );
|
167 |
+
|
168 |
+
$files = $schedule->$file_method();
|
169 |
+
|
170 |
+
if ( $files ) : ?>
|
171 |
+
|
172 |
+
<ul class="hmbkp_file_list code">
|
173 |
+
|
174 |
+
<?php foreach( $files as $file ) :
|
175 |
+
|
176 |
+
if ( ! is_null( $excludes ) && strpos( $file, str_ireplace( $schedule->get_root(), '', $schedule->get_path() ) ) !== false )
|
177 |
+
continue; ?>
|
178 |
+
|
179 |
+
<?php if ( $file->isDir() ) { ?>
|
180 |
+
|
181 |
+
<li title="<?php echo esc_attr( HM_Backup::conform_dir( trailingslashit( $file->getPathName() ) ) ); ?>"><?php echo trailingslashit( str_ireplace( HM_Backup::conform_dir( trailingslashit( $schedule->get_root() ) ), '', HM_Backup::conform_dir( $file->getPathName() ) ) ); ?></li>
|
182 |
+
|
183 |
+
<?php } else { ?>
|
184 |
+
|
185 |
+
<li title="<?php echo esc_attr( HM_Backup::conform_dir( $file->getPathName() ) ); ?>"><?php echo str_ireplace( HM_Backup::conform_dir( trailingslashit( $schedule->get_root() ) ), '', HM_Backup::conform_dir( $file->getPathName() ) ); ?></li>
|
186 |
+
|
187 |
+
<?php }
|
188 |
+
|
189 |
+
endforeach; ?>
|
190 |
+
|
191 |
+
</ul>
|
192 |
+
|
193 |
+
<?php endif;
|
194 |
+
|
195 |
+
}
|
196 |
+
|
197 |
+
|
198 |
+
/**
|
199 |
+
* Get the human readable backup type in.
|
200 |
+
*
|
201 |
+
* @access public
|
202 |
+
* @param string $type
|
203 |
+
* @param HMBKP_Scheduled_Backup $schedule (default: null)
|
204 |
+
* @return string
|
205 |
+
*/
|
206 |
+
function hmbkp_human_get_type( $type, HMBKP_Scheduled_Backup $schedule = null ) {
|
207 |
+
|
208 |
+
if ( strpos( $type, 'complete' ) !== false )
|
209 |
+
return __( 'Database and Files', 'hmbkp' );
|
210 |
+
|
211 |
+
if ( strpos( $type, 'file' ) !== false )
|
212 |
+
return __( 'Files', 'hmbkp' );
|
213 |
+
|
214 |
+
if ( strpos( $type, 'database' ) !== false )
|
215 |
+
return __( 'Database', 'hmbkp' );
|
216 |
+
|
217 |
+
if ( ! is_null( $schedule ) )
|
218 |
+
return hmbkp_human_get_type( $schedule->get_type() );
|
219 |
+
|
220 |
+
return __( 'Legacy', 'hmbkp' );
|
221 |
+
|
222 |
+
}
|
223 |
+
|
224 |
+
|
225 |
+
/**
|
226 |
+
* Display the row of actions for a schedule
|
227 |
+
*
|
228 |
+
* @access public
|
229 |
+
* @param HMBKP_Scheduled_Backup $schedule
|
230 |
+
* @return void
|
231 |
+
*/
|
232 |
+
function hmbkp_schedule_actions( HMBKP_Scheduled_Backup $schedule ) {
|
233 |
+
|
234 |
+
if ( $status = $schedule->get_status() ) { ?>
|
235 |
+
|
236 |
+
<span class="hmbkp-status"><?php echo $status; ?> <a href="<?php echo add_query_arg( array( 'action' => 'hmbkp_cancel', 'hmbkp_schedule_id' => $schedule->get_id() ), HMBKP_ADMIN_URL ); ?>"><?php _e( 'cancel', 'hmbkp' ); ?></a></span>
|
237 |
+
|
238 |
+
<?php } else { ?>
|
239 |
+
|
240 |
+
<div class="hmbkp-schedule-actions row-actions">
|
241 |
+
|
242 |
+
<a class="fancybox" href="<?php echo add_query_arg( array( 'action' => 'hmbkp_edit_schedule_load', 'hmbkp_schedule_id' => $schedule->get_id() ), admin_url( 'admin-ajax.php' ) ); ?>"><?php _e( 'Settings', 'hmbkp' ); ?></a> |
|
243 |
+
|
244 |
+
<?php if ( $schedule->get_type() !== 'database' ) { ?>
|
245 |
+
<a class="fancybox" href="<?php echo add_query_arg( array( 'action' => 'hmbkp_edit_schedule_excludes_load', 'hmbkp_schedule_id' => $schedule->get_id() ), admin_url( 'admin-ajax.php' ) ); ?>"><?php _e( 'Excludes', 'hmbkp' ); ?></a> |
|
246 |
+
<?php } ?>
|
247 |
+
|
248 |
+
<a class="hmbkp-run" href="<?php echo add_query_arg( array( 'action' => 'hmbkp_run_schedule', 'hmbkp_schedule_id' => $schedule->get_id() ), admin_url( 'admin-ajax.php' ) ); ?>"><?php _e( 'Run now', 'hmbkp' ); ?></a> |
|
249 |
+
|
250 |
+
<a class="delete-action" href="<?php echo wp_nonce_url( add_query_arg( array( 'action' => 'hmbkp_delete_schedule', 'hmbkp_schedule_id' => $schedule->get_id() ), HMBKP_ADMIN_URL ), 'hmbkp-delete_schedule' ); ?>"><?php _e( 'Delete', 'hmbkp' ); ?></a>
|
251 |
+
|
252 |
+
</div>
|
253 |
+
|
254 |
+
<?php }
|
255 |
+
|
256 |
+
}
|
257 |
+
|
258 |
+
/**
|
259 |
+
* Load the backup errors file
|
260 |
+
*
|
261 |
+
* @return string
|
262 |
+
*/
|
263 |
+
function hmbkp_backup_errors() {
|
264 |
+
|
265 |
+
if ( ! file_exists( hmbkp_path() . '/.backup_errors' ) )
|
266 |
+
return '';
|
267 |
+
|
268 |
+
return file_get_contents( hmbkp_path() . '/.backup_errors' );
|
269 |
+
|
270 |
+
}
|
271 |
+
|
272 |
+
/**
|
273 |
+
* Load the backup warnings file
|
274 |
+
*
|
275 |
+
* @return string
|
276 |
+
*/
|
277 |
+
function hmbkp_backup_warnings() {
|
278 |
+
|
279 |
+
if ( ! file_exists( hmbkp_path() . '/.backup_warnings' ) )
|
280 |
+
return '';
|
281 |
+
|
282 |
+
return file_get_contents( hmbkp_path() . '/.backup_warnings' );
|
283 |
+
|
284 |
+
}
|
{hm-backup → backupwordpress/hm-backup}/hm-backup.php
RENAMED
@@ -3,9 +3,9 @@
|
|
3 |
/**
|
4 |
* Generic file and database backup class
|
5 |
*
|
6 |
-
* @version 2.0
|
7 |
*/
|
8 |
-
class
|
9 |
|
10 |
/**
|
11 |
* The path where the backup file should be saved
|
@@ -270,7 +270,7 @@ class WPR_HM_Backup {
|
|
270 |
public function get_archive_filename() {
|
271 |
|
272 |
if ( empty( $this->archive_filename ) )
|
273 |
-
$this->set_archive_filename(
|
274 |
|
275 |
return $this->archive_filename;
|
276 |
|
@@ -315,7 +315,7 @@ class WPR_HM_Backup {
|
|
315 |
public function get_database_dump_filename() {
|
316 |
|
317 |
if ( empty( $this->database_dump_filename ) )
|
318 |
-
$this->set_database_dump_filename(
|
319 |
|
320 |
return $this->database_dump_filename;
|
321 |
|
@@ -608,7 +608,7 @@ class WPR_HM_Backup {
|
|
608 |
*/
|
609 |
public function backup() {
|
610 |
|
611 |
-
$this->do_action( '
|
612 |
|
613 |
// Backup database
|
614 |
if ( $this->get_type() !== 'file' )
|
@@ -617,7 +617,7 @@ class WPR_HM_Backup {
|
|
617 |
// Zip everything up
|
618 |
$this->archive();
|
619 |
|
620 |
-
$this->do_action( '
|
621 |
|
622 |
}
|
623 |
|
@@ -631,7 +631,7 @@ class WPR_HM_Backup {
|
|
631 |
*/
|
632 |
public function dump_database() {
|
633 |
|
634 |
-
$this->do_action( '
|
635 |
|
636 |
if ( $this->get_mysqldump_command_path() )
|
637 |
$this->mysqldump();
|
@@ -639,7 +639,7 @@ class WPR_HM_Backup {
|
|
639 |
if ( empty( $this->mysqldump_verified ) )
|
640 |
$this->mysqldump_fallback();
|
641 |
|
642 |
-
$this->do_action( '
|
643 |
|
644 |
}
|
645 |
|
@@ -741,7 +741,7 @@ class WPR_HM_Backup {
|
|
741 |
*/
|
742 |
public function archive() {
|
743 |
|
744 |
-
$this->do_action( '
|
745 |
|
746 |
// Do we have the path to the zip command
|
747 |
if ( $this->get_zip_command_path() )
|
@@ -759,7 +759,7 @@ class WPR_HM_Backup {
|
|
759 |
if ( file_exists( $this->get_database_dump_filepath() ) )
|
760 |
unlink( $this->get_database_dump_filepath() );
|
761 |
|
762 |
-
$this->do_action( '
|
763 |
|
764 |
}
|
765 |
|
@@ -805,12 +805,21 @@ class WPR_HM_Backup {
|
|
805 |
if ( ! class_exists( 'ZipArchive' ) || ! $zip->open( $this->get_archive_filepath(), ZIPARCHIVE::CREATE ) )
|
806 |
return;
|
807 |
|
|
|
|
|
808 |
if ( $this->get_type() !== 'database' ) {
|
809 |
|
810 |
$files_added = 0;
|
811 |
|
812 |
foreach ( $this->get_files() as $file ) {
|
813 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
814 |
if ( $file->isDir() )
|
815 |
$zip->addEmptyDir( trailingslashit( str_ireplace( trailingslashit( $this->get_root() ), '', $this->conform_dir( $file->getPathname() ) ) ) );
|
816 |
|
@@ -865,7 +874,7 @@ class WPR_HM_Backup {
|
|
865 |
|
866 |
// Zip up everything
|
867 |
if ( $this->get_type() !== 'database' )
|
868 |
-
if ( ! $archive->add( $this->get_root(), PCLZIP_OPT_REMOVE_PATH, $this->get_root(), PCLZIP_CB_PRE_ADD, '
|
869 |
$this->warning( $this->archive_method, $archive->errorInfo( true ) );
|
870 |
|
871 |
// Add the database
|
@@ -928,13 +937,15 @@ class WPR_HM_Backup {
|
|
928 |
if ( $this->get_errors( $this->get_archive_method() ) )
|
929 |
return false;
|
930 |
|
|
|
|
|
|
|
931 |
return $this->archive_verified = true;
|
932 |
|
933 |
}
|
934 |
|
935 |
/**
|
936 |
-
*
|
937 |
-
* root, ignore unreadable files and excludes
|
938 |
*
|
939 |
* @access public
|
940 |
* @return array
|
@@ -946,44 +957,11 @@ class WPR_HM_Backup {
|
|
946 |
|
947 |
$this->files = array();
|
948 |
|
949 |
-
if ( defined( 'RecursiveDirectoryIterator::FOLLOW_SYMLINKS' ) )
|
950 |
-
|
951 |
-
$filesystem = new RecursiveIteratorIterator( new RecursiveDirectoryIterator( $this->get_root(), RecursiveDirectoryIterator::FOLLOW_SYMLINKS ), RecursiveIteratorIterator::SELF_FIRST, RecursiveIteratorIterator::CATCH_GET_CHILD );
|
952 |
-
|
953 |
-
$excludes = $this->exclude_string( 'regex' );
|
954 |
-
|
955 |
-
foreach ( $filesystem as $file ) {
|
956 |
-
|
957 |
-
/*
|
958 |
-
* Ignore current dir and containing dir
|
959 |
-
*
|
960 |
-
* Required because in PHP 5.2 these aren't skipped automatically by RecursiveDirectoryIterator, they are skipped in PHP > 5.3
|
961 |
-
*/
|
962 |
-
if ( $file === '.' || $file === '..' )
|
963 |
-
continue;
|
964 |
-
|
965 |
-
// Track & skip unreadable files
|
966 |
-
if ( ! $file->isReadable() && $this->unreadable_files[] = $file )
|
967 |
-
continue;
|
968 |
-
|
969 |
-
$pathname = str_ireplace( trailingslashit( $this->get_root() ), '', $this->conform_dir( $file->getPathname() ) );
|
970 |
-
|
971 |
-
// Excludes
|
972 |
-
if ( $excludes && preg_match( '(' . $excludes . ')', $pathname ) && $this->excluded_files[] = $file )
|
973 |
-
continue;
|
974 |
-
|
975 |
-
$this->files[] = $file;
|
976 |
-
|
977 |
-
}
|
978 |
-
|
979 |
-
} else {
|
980 |
-
|
981 |
-
$this->files = $this->files_fallback( $this->get_root() );
|
982 |
|
983 |
-
|
984 |
-
|
985 |
-
if ( ! empty( $this->unreadable_files ) )
|
986 |
-
$this->warning( $this->get_archive_method(), __( 'The following files are unreadable and couldn\'t be backed up: ', 'hmbkp' ) . implode( ', ', $this->unreadable_files ) );
|
987 |
|
988 |
return $this->files;
|
989 |
|
@@ -1000,7 +978,7 @@ class WPR_HM_Backup {
|
|
1000 |
* @param array $files. (default: array())
|
1001 |
* @return array
|
1002 |
*/
|
1003 |
-
private function
|
1004 |
|
1005 |
$handle = opendir( $dir );
|
1006 |
|
@@ -1015,18 +993,10 @@ class WPR_HM_Backup {
|
|
1015 |
$filepath = $this->conform_dir( trailingslashit( $dir ) . $file );
|
1016 |
$file = str_ireplace( trailingslashit( $this->get_root() ), '', $filepath );
|
1017 |
|
1018 |
-
// Track & skip unreadable files
|
1019 |
-
if ( ! is_readable( $filepath ) && $this->unreadable_files[] = new SplFileInfo( $filepath ) )
|
1020 |
-
continue;
|
1021 |
-
|
1022 |
-
// Skip the backups dir and any excluded paths
|
1023 |
-
if ( ( $excludes && preg_match( '(' . $excludes . ')', $file ) ) && $this->excluded_files[] = new SplFileInfo( $filepath ) )
|
1024 |
-
continue;
|
1025 |
-
|
1026 |
$files[] = new SplFileInfo( $filepath );
|
1027 |
|
1028 |
if ( is_dir( $filepath ) )
|
1029 |
-
$files = $this->
|
1030 |
|
1031 |
endwhile;
|
1032 |
|
@@ -1034,6 +1004,38 @@ class WPR_HM_Backup {
|
|
1034 |
|
1035 |
}
|
1036 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1037 |
/**
|
1038 |
* Returns an array of files that match the exclude rules.
|
1039 |
*
|
@@ -1042,13 +1044,25 @@ class WPR_HM_Backup {
|
|
1042 |
*/
|
1043 |
public function get_excluded_files() {
|
1044 |
|
1045 |
-
if ( empty( $this->files ) )
|
1046 |
-
$this->get_files();
|
1047 |
-
|
1048 |
if ( ! empty( $this->excluded_files ) )
|
1049 |
return $this->excluded_files;
|
1050 |
|
1051 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1052 |
|
1053 |
}
|
1054 |
|
@@ -1060,13 +1074,22 @@ class WPR_HM_Backup {
|
|
1060 |
*/
|
1061 |
public function get_unreadable_files() {
|
1062 |
|
1063 |
-
if ( empty( $this->files ) )
|
1064 |
-
$this->get_files();
|
1065 |
-
|
1066 |
if ( ! empty( $this->unreadable_files ) )
|
1067 |
return $this->unreadable_files;
|
1068 |
|
1069 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1070 |
|
1071 |
}
|
1072 |
|
@@ -1097,7 +1120,7 @@ class WPR_HM_Backup {
|
|
1097 |
|
1098 |
// If path() is inside root(), exclude it
|
1099 |
if ( strpos( $this->get_path(), $this->get_root() ) !== false )
|
1100 |
-
$excludes
|
1101 |
|
1102 |
return array_unique( $excludes );
|
1103 |
|
@@ -1132,7 +1155,7 @@ class WPR_HM_Backup {
|
|
1132 |
* @param string $context. (default: 'zip')
|
1133 |
* @return string
|
1134 |
*/
|
1135 |
-
|
1136 |
|
1137 |
// Return a comma separated list by default
|
1138 |
$separator = ', ';
|
@@ -1210,7 +1233,7 @@ class WPR_HM_Backup {
|
|
1210 |
}
|
1211 |
|
1212 |
/**
|
1213 |
-
* Add backquotes to tables and db-names
|
1214 |
*
|
1215 |
* @access private
|
1216 |
* @param mixed $a_name
|
@@ -1419,7 +1442,7 @@ class WPR_HM_Backup {
|
|
1419 |
// Actually write the sql file
|
1420 |
if ( is_writable( $sqlname ) || ! file_exists( $sqlname ) ) {
|
1421 |
|
1422 |
-
if ( ! $handle = fopen( $sqlname, 'a' ) )
|
1423 |
return;
|
1424 |
|
1425 |
if ( ! fwrite( $handle, $sql ) )
|
@@ -1447,7 +1470,6 @@ class WPR_HM_Backup {
|
|
1447 |
|
1448 |
}
|
1449 |
|
1450 |
-
|
1451 |
/**
|
1452 |
* Add an error to the errors stack
|
1453 |
*
|
@@ -1503,7 +1525,6 @@ class WPR_HM_Backup {
|
|
1503 |
|
1504 |
}
|
1505 |
|
1506 |
-
|
1507 |
/**
|
1508 |
* Add an warning to the warnings stack
|
1509 |
*
|
@@ -1520,7 +1541,6 @@ class WPR_HM_Backup {
|
|
1520 |
|
1521 |
}
|
1522 |
|
1523 |
-
|
1524 |
/**
|
1525 |
* Custom error handler for catching errors
|
1526 |
*
|
@@ -1555,16 +1575,16 @@ class WPR_HM_Backup {
|
|
1555 |
* @param array &$file
|
1556 |
* @return bool
|
1557 |
*/
|
1558 |
-
function
|
1559 |
|
1560 |
-
global $
|
1561 |
|
1562 |
// Don't try to add unreadable files.
|
1563 |
if ( ! is_readable( $file['filename'] ) || ! file_exists( $file['filename'] ) )
|
1564 |
return false;
|
1565 |
|
1566 |
// Match everything else past the exclude list
|
1567 |
-
elseif ( $
|
1568 |
return false;
|
1569 |
|
1570 |
return true;
|
3 |
/**
|
4 |
* Generic file and database backup class
|
5 |
*
|
6 |
+
* @version 2.0
|
7 |
*/
|
8 |
+
class HM_Backup {
|
9 |
|
10 |
/**
|
11 |
* The path where the backup file should be saved
|
270 |
public function get_archive_filename() {
|
271 |
|
272 |
if ( empty( $this->archive_filename ) )
|
273 |
+
$this->set_archive_filename( implode( '-', array( get_bloginfo( 'name' ), 'backup', date( 'Y-m-d-H-i-s', current_time( 'timestamp' ) ) ) ) . '.zip' );
|
274 |
|
275 |
return $this->archive_filename;
|
276 |
|
315 |
public function get_database_dump_filename() {
|
316 |
|
317 |
if ( empty( $this->database_dump_filename ) )
|
318 |
+
$this->set_database_dump_filename( 'database_' . DB_NAME . '.sql' );
|
319 |
|
320 |
return $this->database_dump_filename;
|
321 |
|
608 |
*/
|
609 |
public function backup() {
|
610 |
|
611 |
+
$this->do_action( 'hmbkp_backup_started' );
|
612 |
|
613 |
// Backup database
|
614 |
if ( $this->get_type() !== 'file' )
|
617 |
// Zip everything up
|
618 |
$this->archive();
|
619 |
|
620 |
+
$this->do_action( 'hmbkp_backup_complete' );
|
621 |
|
622 |
}
|
623 |
|
631 |
*/
|
632 |
public function dump_database() {
|
633 |
|
634 |
+
$this->do_action( 'hmbkp_mysqldump_started' );
|
635 |
|
636 |
if ( $this->get_mysqldump_command_path() )
|
637 |
$this->mysqldump();
|
639 |
if ( empty( $this->mysqldump_verified ) )
|
640 |
$this->mysqldump_fallback();
|
641 |
|
642 |
+
$this->do_action( 'hmbkp_mysqldump_finished' );
|
643 |
|
644 |
}
|
645 |
|
741 |
*/
|
742 |
public function archive() {
|
743 |
|
744 |
+
$this->do_action( 'hmbkp_archive_started' );
|
745 |
|
746 |
// Do we have the path to the zip command
|
747 |
if ( $this->get_zip_command_path() )
|
759 |
if ( file_exists( $this->get_database_dump_filepath() ) )
|
760 |
unlink( $this->get_database_dump_filepath() );
|
761 |
|
762 |
+
$this->do_action( 'hmbkp_archive_finished' );
|
763 |
|
764 |
}
|
765 |
|
805 |
if ( ! class_exists( 'ZipArchive' ) || ! $zip->open( $this->get_archive_filepath(), ZIPARCHIVE::CREATE ) )
|
806 |
return;
|
807 |
|
808 |
+
$excludes = $this->exclude_string( 'regex' );
|
809 |
+
|
810 |
if ( $this->get_type() !== 'database' ) {
|
811 |
|
812 |
$files_added = 0;
|
813 |
|
814 |
foreach ( $this->get_files() as $file ) {
|
815 |
|
816 |
+
if ( $file === '.' || $file === '..' || ! $file->isReadable() )
|
817 |
+
continue;
|
818 |
+
|
819 |
+
// Excludes
|
820 |
+
if ( $excludes && preg_match( '(' . $excludes . ')', str_ireplace( trailingslashit( $this->get_root() ), '', $this->conform_dir( $file->getPathname() ) ) ) )
|
821 |
+
continue;
|
822 |
+
|
823 |
if ( $file->isDir() )
|
824 |
$zip->addEmptyDir( trailingslashit( str_ireplace( trailingslashit( $this->get_root() ), '', $this->conform_dir( $file->getPathname() ) ) ) );
|
825 |
|
874 |
|
875 |
// Zip up everything
|
876 |
if ( $this->get_type() !== 'database' )
|
877 |
+
if ( ! $archive->add( $this->get_root(), PCLZIP_OPT_REMOVE_PATH, $this->get_root(), PCLZIP_CB_PRE_ADD, 'hmbkp_pclzip_callback' ) )
|
878 |
$this->warning( $this->archive_method, $archive->errorInfo( true ) );
|
879 |
|
880 |
// Add the database
|
937 |
if ( $this->get_errors( $this->get_archive_method() ) )
|
938 |
return false;
|
939 |
|
940 |
+
if ( $this->get_unreadable_files() )
|
941 |
+
$this->warning( $this->get_archive_method(), __( 'The following files are unreadable and couldn\'t be backed up: ', 'hmbkp' ) . implode( ', ', $this->get_unreadable_files() ) );
|
942 |
+
|
943 |
return $this->archive_verified = true;
|
944 |
|
945 |
}
|
946 |
|
947 |
/**
|
948 |
+
* Return an array of all files in the filesystem
|
|
|
949 |
*
|
950 |
* @access public
|
951 |
* @return array
|
957 |
|
958 |
$this->files = array();
|
959 |
|
960 |
+
if ( defined( 'RecursiveDirectoryIterator::FOLLOW_SYMLINKS' ) )
|
961 |
+
$this->files = new RecursiveIteratorIterator( new RecursiveDirectoryIterator( $this->get_root(), RecursiveDirectoryIterator::FOLLOW_SYMLINKS ), RecursiveIteratorIterator::SELF_FIRST, RecursiveIteratorIterator::CATCH_GET_CHILD );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
962 |
|
963 |
+
else
|
964 |
+
$this->files = $this->get_files_fallback( $this->get_root() );
|
|
|
|
|
965 |
|
966 |
return $this->files;
|
967 |
|
978 |
* @param array $files. (default: array())
|
979 |
* @return array
|
980 |
*/
|
981 |
+
private function get_files_fallback( $dir, $files = array() ) {
|
982 |
|
983 |
$handle = opendir( $dir );
|
984 |
|
993 |
$filepath = $this->conform_dir( trailingslashit( $dir ) . $file );
|
994 |
$file = str_ireplace( trailingslashit( $this->get_root() ), '', $filepath );
|
995 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
996 |
$files[] = new SplFileInfo( $filepath );
|
997 |
|
998 |
if ( is_dir( $filepath ) )
|
999 |
+
$files = $this->get_files_fallback( $filepath, $files );
|
1000 |
|
1001 |
endwhile;
|
1002 |
|
1004 |
|
1005 |
}
|
1006 |
|
1007 |
+
/**
|
1008 |
+
* Returns an array of files that will be included in the backup.
|
1009 |
+
*
|
1010 |
+
* @access public
|
1011 |
+
* @return array
|
1012 |
+
*/
|
1013 |
+
public function get_included_files() {
|
1014 |
+
|
1015 |
+
if ( ! empty( $this->included_files ) )
|
1016 |
+
return $this->included_files;
|
1017 |
+
|
1018 |
+
$this->included_files = array();
|
1019 |
+
|
1020 |
+
$excludes = $this->exclude_string( 'regex' );
|
1021 |
+
|
1022 |
+
foreach ( $this->get_files() as $file ) {
|
1023 |
+
|
1024 |
+
if ( $file === '.' || $file === '..' || ! $file->isReadable() )
|
1025 |
+
continue;
|
1026 |
+
|
1027 |
+
// Excludes
|
1028 |
+
if ( $excludes && preg_match( '(' . $excludes . ')', str_ireplace( trailingslashit( $this->get_root() ), '', $this->conform_dir( $file->getPathname() ) ) ) )
|
1029 |
+
continue;
|
1030 |
+
|
1031 |
+
$this->included_files[] = $file;
|
1032 |
+
|
1033 |
+
}
|
1034 |
+
|
1035 |
+
return $this->included_files;
|
1036 |
+
|
1037 |
+
}
|
1038 |
+
|
1039 |
/**
|
1040 |
* Returns an array of files that match the exclude rules.
|
1041 |
*
|
1044 |
*/
|
1045 |
public function get_excluded_files() {
|
1046 |
|
|
|
|
|
|
|
1047 |
if ( ! empty( $this->excluded_files ) )
|
1048 |
return $this->excluded_files;
|
1049 |
|
1050 |
+
$this->excluded_files = array();
|
1051 |
+
|
1052 |
+
$excludes = $this->exclude_string( 'regex' );
|
1053 |
+
|
1054 |
+
foreach ( $this->get_files() as $file ) {
|
1055 |
+
|
1056 |
+
if ( $file === '.' || $file === '..' || ! $file->isReadable() )
|
1057 |
+
continue;
|
1058 |
+
|
1059 |
+
// Excludes
|
1060 |
+
if ( $excludes && preg_match( '(' . $excludes . ')', str_ireplace( trailingslashit( $this->get_root() ), '', $this->conform_dir( $file->getPathname() ) ) ) )
|
1061 |
+
$this->excluded_files[] = $file;
|
1062 |
+
|
1063 |
+
}
|
1064 |
+
|
1065 |
+
return $this->excluded_files;
|
1066 |
|
1067 |
}
|
1068 |
|
1074 |
*/
|
1075 |
public function get_unreadable_files() {
|
1076 |
|
|
|
|
|
|
|
1077 |
if ( ! empty( $this->unreadable_files ) )
|
1078 |
return $this->unreadable_files;
|
1079 |
|
1080 |
+
$this->unreadable_files = array();
|
1081 |
+
|
1082 |
+
foreach ( $this->get_files() as $file ) {
|
1083 |
+
|
1084 |
+
if ( $file === '.' || $file === '..' )
|
1085 |
+
continue;
|
1086 |
+
|
1087 |
+
if ( ! $file->isReadable() )
|
1088 |
+
$this->unreadable_files[] = $file;
|
1089 |
+
|
1090 |
+
}
|
1091 |
+
|
1092 |
+
return $this->unreadable_files;
|
1093 |
|
1094 |
}
|
1095 |
|
1120 |
|
1121 |
// If path() is inside root(), exclude it
|
1122 |
if ( strpos( $this->get_path(), $this->get_root() ) !== false )
|
1123 |
+
array_unshift( $excludes, trailingslashit( $this->get_path() ) );
|
1124 |
|
1125 |
return array_unique( $excludes );
|
1126 |
|
1155 |
* @param string $context. (default: 'zip')
|
1156 |
* @return string
|
1157 |
*/
|
1158 |
+
protected function exclude_string( $context = 'zip' ) {
|
1159 |
|
1160 |
// Return a comma separated list by default
|
1161 |
$separator = ', ';
|
1233 |
}
|
1234 |
|
1235 |
/**
|
1236 |
+
* Add backquotes to tables and db-names in SQL queries. Taken from phpMyAdmin.
|
1237 |
*
|
1238 |
* @access private
|
1239 |
* @param mixed $a_name
|
1442 |
// Actually write the sql file
|
1443 |
if ( is_writable( $sqlname ) || ! file_exists( $sqlname ) ) {
|
1444 |
|
1445 |
+
if ( ! $handle = @fopen( $sqlname, 'a' ) )
|
1446 |
return;
|
1447 |
|
1448 |
if ( ! fwrite( $handle, $sql ) )
|
1470 |
|
1471 |
}
|
1472 |
|
|
|
1473 |
/**
|
1474 |
* Add an error to the errors stack
|
1475 |
*
|
1525 |
|
1526 |
}
|
1527 |
|
|
|
1528 |
/**
|
1529 |
* Add an warning to the warnings stack
|
1530 |
*
|
1541 |
|
1542 |
}
|
1543 |
|
|
|
1544 |
/**
|
1545 |
* Custom error handler for catching errors
|
1546 |
*
|
1575 |
* @param array &$file
|
1576 |
* @return bool
|
1577 |
*/
|
1578 |
+
function hmbkp_pclzip_callback( $event, &$file ) {
|
1579 |
|
1580 |
+
global $_hmbkp_exclude_string;
|
1581 |
|
1582 |
// Don't try to add unreadable files.
|
1583 |
if ( ! is_readable( $file['filename'] ) || ! file_exists( $file['filename'] ) )
|
1584 |
return false;
|
1585 |
|
1586 |
// Match everything else past the exclude list
|
1587 |
+
elseif ( $_hmbkp_exclude_string && preg_match( '(' . $_hmbkp_exclude_string . ')', $file['stored_filename'] ) )
|
1588 |
return false;
|
1589 |
|
1590 |
return true;
|
backupwordpress/icon.png
ADDED
Binary file
|
backupwordpress/languages/hmbkp-de_DE.mo
ADDED
Binary file
|
backupwordpress/languages/hmbkp-de_DE.po
ADDED
@@ -0,0 +1,754 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
msgid ""
|
2 |
+
msgstr ""
|
3 |
+
"Project-Id-Version: BackUpWordPress\n"
|
4 |
+
"Report-Msgid-Bugs-To: \n"
|
5 |
+
"POT-Creation-Date: 2012-08-22 15:49+0100\n"
|
6 |
+
"PO-Revision-Date: 2012-08-22 15:49+0100\n"
|
7 |
+
"Last-Translator: Flo Edelmann <florian-edelmann@online.de>\n"
|
8 |
+
"Language-Team: Flo Edelmann <florian-edelmann@online.de>\n"
|
9 |
+
"Language: \n"
|
10 |
+
"MIME-Version: 1.0\n"
|
11 |
+
"Content-Type: text/plain; charset=UTF-8\n"
|
12 |
+
"Content-Transfer-Encoding: 8bit\n"
|
13 |
+
"X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2\n"
|
14 |
+
"X-Poedit-Basepath: ..\n"
|
15 |
+
"X-Poedit-Language: German\n"
|
16 |
+
"X-Poedit-Country: GERMANY\n"
|
17 |
+
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
18 |
+
"X-Poedit-SourceCharset: utf-8\n"
|
19 |
+
"X-Poedit-SearchPath-0: .\n"
|
20 |
+
|
21 |
+
#: plugin.php:52
|
22 |
+
msgid "BackUpWordPress requires PHP version 5.2.4 or greater."
|
23 |
+
msgstr "BackUpWordPress benötigt PHP Version 5.2.4 oder höher."
|
24 |
+
|
25 |
+
#: plugin.php:63
|
26 |
+
#, php-format
|
27 |
+
msgid "BackUpWordPress requires WordPress version %s or greater."
|
28 |
+
msgstr "BackUpWordPress benötigt WordPress Version %s oder größer."
|
29 |
+
|
30 |
+
#: plugin.php:95
|
31 |
+
#: admin/schedule-form.php:52
|
32 |
+
msgid "Update"
|
33 |
+
msgstr "Update"
|
34 |
+
|
35 |
+
#: plugin.php:96
|
36 |
+
msgid "Cancel"
|
37 |
+
msgstr "Abbrechen"
|
38 |
+
|
39 |
+
#: plugin.php:97
|
40 |
+
msgid ""
|
41 |
+
"Are you sure you want to delete this schedule? All of it's backups will also be deleted.\n"
|
42 |
+
"\n"
|
43 |
+
"'Cancel' to go back, 'OK' to delete.\n"
|
44 |
+
msgstr ""
|
45 |
+
"Bist du sicher, dass du diesen Plan löschen möchtest? Alle enthaltenen Backups werden ebenfalls gelöscht.\n"
|
46 |
+
"\n"
|
47 |
+
"Drücke auf 'Abbrechen' zum Zurückgehen, 'OK' zum Löschen.\n"
|
48 |
+
|
49 |
+
#: plugin.php:98
|
50 |
+
msgid ""
|
51 |
+
"Are you sure you want to delete this backup?\n"
|
52 |
+
"\n"
|
53 |
+
"'Cancel' to go back, 'OK' to delete.\n"
|
54 |
+
msgstr ""
|
55 |
+
"Bist du sicher, dass du dieses Backup löschen möchtest?\n"
|
56 |
+
"\n"
|
57 |
+
"Drücke auf 'Abbrechen' zum Zurückgehen, 'OK' zum Löschen.\n"
|
58 |
+
|
59 |
+
#: plugin.php:99
|
60 |
+
msgid ""
|
61 |
+
"Are you sure you want to remove this exclude rule?\n"
|
62 |
+
"\n"
|
63 |
+
"'Cancel' to go back, 'OK' to delete.\n"
|
64 |
+
msgstr ""
|
65 |
+
"Bist du sicher, dass du diese Ausnahmeregel entfernen möchtest?\n"
|
66 |
+
"\n"
|
67 |
+
"Drücke auf 'Abbrechen' zum Zurückgehen, 'OK' zum Löschen.\n"
|
68 |
+
|
69 |
+
#: plugin.php:100
|
70 |
+
msgid ""
|
71 |
+
"Reducing the number of backups that are stored on this server will cause some of your existing backups to be deleted, are you sure that's what you want?\n"
|
72 |
+
"\n"
|
73 |
+
"'Cancel' to go back, 'OK' to delete.\n"
|
74 |
+
msgstr ""
|
75 |
+
"Wenn du die Anzahl der Backups, die auf diesem Server gespeichert werden, reduzierst, werden einige deiner existierenden Backups gelöscht. Bist du sicher, dass du das willst?\n"
|
76 |
+
"\n"
|
77 |
+
"Drücke auf 'Abbrechen' zum Zurückgehen, 'OK' zum Löschen.\n"
|
78 |
+
|
79 |
+
#: classes/schedule.php:460
|
80 |
+
msgid "Backup started"
|
81 |
+
msgstr "Backup gestartet"
|
82 |
+
|
83 |
+
#: classes/schedule.php:511
|
84 |
+
msgid "Creating zip archive"
|
85 |
+
msgstr "ZIP-Archiv wird erstellt"
|
86 |
+
|
87 |
+
#: classes/schedule.php:517
|
88 |
+
msgid "Dumping database"
|
89 |
+
msgstr "Datenbank wird gedump"
|
90 |
+
|
91 |
+
#: classes/email.php:19
|
92 |
+
msgid "Email notification"
|
93 |
+
msgstr "E-Mail-Benachrichtigung"
|
94 |
+
|
95 |
+
#: classes/email.php:50
|
96 |
+
#, php-format
|
97 |
+
msgid "Send an email notification to %s"
|
98 |
+
msgstr "Sende E-Mail-Benachrichtigungen an %s"
|
99 |
+
|
100 |
+
#: classes/email.php:72
|
101 |
+
#, php-format
|
102 |
+
msgid "%s isn't a valid email"
|
103 |
+
msgstr "%s ist keine gültige E-Mail-Adresse"
|
104 |
+
|
105 |
+
#: classes/email.php:127
|
106 |
+
#, php-format
|
107 |
+
msgid "Backup of %s Failed"
|
108 |
+
msgstr "Backup von %s fehlgeschlagen"
|
109 |
+
|
110 |
+
#: classes/email.php:137
|
111 |
+
#, php-format
|
112 |
+
msgid "Backup of %s"
|
113 |
+
msgstr "Backup von %s"
|
114 |
+
|
115 |
+
#: hm-backup/hm-backup.php:532
|
116 |
+
msgid "The backup file was not created"
|
117 |
+
msgstr "Die Backup-Datei wurde nicht angelegt"
|
118 |
+
|
119 |
+
#: hm-backup/hm-backup.php:603
|
120 |
+
msgid "The following files are unreadable and couldn't be backed up: "
|
121 |
+
msgstr "Die folgenden Dateien sind nicht lesbar und konnten nicht gesichert werden:"
|
122 |
+
|
123 |
+
#: admin/constants.php:3
|
124 |
+
#, php-format
|
125 |
+
msgid "You can %1$s any of the following %2$s in your %3$s to control advanced settings. %4$s. Defined %5$s will be highlighted."
|
126 |
+
msgstr "Du kannst jede der folgenden %2$s in deinem %3$s %1$sn, um erweiterte Einstellungen vorzunehmen. %4$s. Definierte %5$s werden hervorgehoben."
|
127 |
+
|
128 |
+
#: admin/constants.php:3
|
129 |
+
msgid "Constants"
|
130 |
+
msgstr "Konstanten"
|
131 |
+
|
132 |
+
#: admin/constants.php:3
|
133 |
+
msgid "The Codex can help"
|
134 |
+
msgstr "Der Codex kann helfen"
|
135 |
+
|
136 |
+
#: admin/constants.php:8
|
137 |
+
#, php-format
|
138 |
+
msgid "The path to folder you would like to store your backup files in, defaults to %s."
|
139 |
+
msgstr "Der Pfad zum Verzeichnis, in dem du die Backups speichern möchtest. Standard: %s"
|
140 |
+
|
141 |
+
#: admin/constants.php:8
|
142 |
+
#: admin/constants.php:11
|
143 |
+
#: admin/constants.php:14
|
144 |
+
#: admin/constants.php:17
|
145 |
+
#: admin/constants.php:20
|
146 |
+
#: admin/constants.php:23
|
147 |
+
#: admin/constants.php:26
|
148 |
+
#: admin/constants.php:29
|
149 |
+
#: admin/constants.php:32
|
150 |
+
#: admin/constants.php:35
|
151 |
+
#: admin/constants.php:38
|
152 |
+
#: admin/constants.php:41
|
153 |
+
msgid "e.g."
|
154 |
+
msgstr "z.B."
|
155 |
+
|
156 |
+
#: admin/constants.php:11
|
157 |
+
#, php-format
|
158 |
+
msgid "The path to your %1$s executable. Will be used for the %2$s part of the back up if available."
|
159 |
+
msgstr "Der Pfad zur ausführbaren %1$s-Datei. Wird für den %2$s-Teil des Backups genutzt, wenn verfügbar."
|
160 |
+
|
161 |
+
#: admin/constants.php:11
|
162 |
+
#: admin/constants.php:14
|
163 |
+
#: admin/constants.php:23
|
164 |
+
#: admin/constants.php:26
|
165 |
+
msgid "database"
|
166 |
+
msgstr "Datenbank"
|
167 |
+
|
168 |
+
#: admin/constants.php:14
|
169 |
+
#, php-format
|
170 |
+
msgid "The path to your %1$s executable. Will be used to zip up your %2$s and %3$s if available."
|
171 |
+
msgstr "Der Pfad zur ausführbaren %1$s-Datei. Wird genutzt, um deine %2$s und %3$s als ZIP-Archiv zu komprimieren, wenn verfügbar."
|
172 |
+
|
173 |
+
#: admin/constants.php:14
|
174 |
+
#: admin/constants.php:23
|
175 |
+
#: admin/constants.php:26
|
176 |
+
msgid "files"
|
177 |
+
msgstr "Dateien"
|
178 |
+
|
179 |
+
#: admin/constants.php:17
|
180 |
+
#, php-format
|
181 |
+
msgid "Completely disables the automatic back up. You can still back up using the \"Back Up Now\" button. Defaults to %s."
|
182 |
+
msgstr "Deaktiviert die automatischen Backups vollständig. Du kannst trotzdem Backups erstellen, indem du den \"Jetzt sichern\"-Button verwendest. Standard: %s"
|
183 |
+
|
184 |
+
#: admin/constants.php:20
|
185 |
+
#, php-format
|
186 |
+
msgid "Number of backups to keep, older backups will be deleted automatically when a new backup is completed. Defaults to %s."
|
187 |
+
msgstr "Anzahl der zu behaltenden Backups. Ältere Backups werden automatisch gelöscht, sobald ein neues Backup fertiggestellt ist. Standard: %s"
|
188 |
+
|
189 |
+
#: admin/constants.php:23
|
190 |
+
#: admin/constants.php:26
|
191 |
+
#, php-format
|
192 |
+
msgid "Backup %1$s only, your %2$s won't be backed up. Defaults to %3$s."
|
193 |
+
msgstr "Nur die %1$s sichern, deine %2$s werden nicht gesichert. Standard: %3$s"
|
194 |
+
|
195 |
+
#: admin/constants.php:29
|
196 |
+
#, php-format
|
197 |
+
msgid "The time that the daily back up should run. Defaults to %s."
|
198 |
+
msgstr "Die Zeit, zu der das tägliche Backup laufen soll. Standard: %s"
|
199 |
+
|
200 |
+
#: admin/constants.php:32
|
201 |
+
#, php-format
|
202 |
+
msgid "Attempt to email a copy of your backups. Value should be email address to send backups to. Defaults to %s."
|
203 |
+
msgstr "Versuche, eine Kopie des Backups per E-Mail zu senden. Der Wert sollte eine E-Mail-Adresse sein. Standard: %s"
|
204 |
+
|
205 |
+
#: admin/constants.php:35
|
206 |
+
msgid "Comma separated list of files or directories to exclude, the backups directory is automatically excluded."
|
207 |
+
msgstr "Kommagetrennte Liste von Dateien oder Verzeichnissen, die ausgeschlossen werden sollen (das Backup-Verzeichnis ist automatisch ausgeschlossen)."
|
208 |
+
|
209 |
+
#: admin/constants.php:38
|
210 |
+
#, php-format
|
211 |
+
msgid "The capability to use when calling %1$s. Defaults to %2$s."
|
212 |
+
msgstr "Die Rolle, die beim Aufrufen von %1$s benutzt wird. Standard: %2$s"
|
213 |
+
|
214 |
+
#: admin/constants.php:41
|
215 |
+
#, php-format
|
216 |
+
msgid "The root directory that is backed up. Defaults to %s."
|
217 |
+
msgstr "Das Wurzelverzeichnis, das gesichert wird. Standard: %s"
|
218 |
+
|
219 |
+
#: admin/schedule-form.php:7
|
220 |
+
msgid "Schedule Settings"
|
221 |
+
msgstr "Plan-Einstellungen"
|
222 |
+
|
223 |
+
#: admin/schedule-form.php:11
|
224 |
+
msgid "Backup"
|
225 |
+
msgstr "Backup"
|
226 |
+
|
227 |
+
#: admin/schedule-form.php:14
|
228 |
+
msgid "Both Database & files"
|
229 |
+
msgstr "Datenbank & Dateien"
|
230 |
+
|
231 |
+
#: admin/schedule-form.php:15
|
232 |
+
msgid "Files only"
|
233 |
+
msgstr "Dateien"
|
234 |
+
|
235 |
+
#: admin/schedule-form.php:16
|
236 |
+
msgid "Database only"
|
237 |
+
msgstr "Datenbank"
|
238 |
+
|
239 |
+
#: admin/schedule-form.php:23
|
240 |
+
msgid "Schedule"
|
241 |
+
msgstr "Plan"
|
242 |
+
|
243 |
+
#: admin/schedule-form.php:39
|
244 |
+
msgid "Number of backups to store on this server"
|
245 |
+
msgstr "Anzahl der Backups, die auf dem Server gespeichert bleiben"
|
246 |
+
|
247 |
+
#: admin/schedule-form.php:43
|
248 |
+
msgid "The number of previous backups to store on the server. past this limit the oldest backups will be deleted automatically."
|
249 |
+
msgstr "Die Anzahl der vorherigen Backups, die auf dem Server gespeichert bleiben sollen. Über diesem Limit werden die ältesten Backups automatisch gelöscht."
|
250 |
+
|
251 |
+
#: admin/schedule.php:16
|
252 |
+
msgid "hourly on the hour"
|
253 |
+
msgstr ""
|
254 |
+
|
255 |
+
#: admin/schedule.php:16
|
256 |
+
#, php-format
|
257 |
+
msgid "hourly at %s minutes past the hour"
|
258 |
+
msgstr ""
|
259 |
+
|
260 |
+
#: admin/schedule.php:22
|
261 |
+
#, php-format
|
262 |
+
msgid "daily at %s"
|
263 |
+
msgstr ""
|
264 |
+
|
265 |
+
#: admin/schedule.php:34
|
266 |
+
#, php-format
|
267 |
+
msgid "every 12 hours at %s & %s"
|
268 |
+
msgstr ""
|
269 |
+
|
270 |
+
#: admin/schedule.php:40
|
271 |
+
#, php-format
|
272 |
+
msgid "weekly on %s at %s"
|
273 |
+
msgstr ""
|
274 |
+
|
275 |
+
#: admin/schedule.php:46
|
276 |
+
#, php-format
|
277 |
+
msgid "fortnightly on %s at %s"
|
278 |
+
msgstr ""
|
279 |
+
|
280 |
+
#: admin/schedule.php:53
|
281 |
+
#, php-format
|
282 |
+
msgid "on the %s of each month at %s"
|
283 |
+
msgstr ""
|
284 |
+
|
285 |
+
#: admin/schedule.php:59
|
286 |
+
msgid "server"
|
287 |
+
msgstr "Server"
|
288 |
+
|
289 |
+
#: admin/schedule.php:66
|
290 |
+
#, php-format
|
291 |
+
msgid "store the only the last backup %s"
|
292 |
+
msgstr ""
|
293 |
+
|
294 |
+
#: admin/schedule.php:72
|
295 |
+
#, php-format
|
296 |
+
msgid "don't store any backups %s"
|
297 |
+
msgstr ""
|
298 |
+
|
299 |
+
#: admin/schedule.php:78
|
300 |
+
#, php-format
|
301 |
+
msgid "store only the last %s backups %s"
|
302 |
+
msgstr ""
|
303 |
+
|
304 |
+
#: admin/schedule.php:87
|
305 |
+
#, php-format
|
306 |
+
msgid "Backup my %s %s %s, %s. %s"
|
307 |
+
msgstr ""
|
308 |
+
|
309 |
+
#: admin/schedule.php:87
|
310 |
+
msgid "Backups will be compressed and should be smaller than this."
|
311 |
+
msgstr "Die Backups werden komprimiert und sollten kleiner sein."
|
312 |
+
|
313 |
+
#: admin/schedule-form-excludes.php:7
|
314 |
+
msgid "Manage Exclude"
|
315 |
+
msgstr "Ausnahmen verwalten"
|
316 |
+
|
317 |
+
#: admin/schedule-form-excludes.php:13
|
318 |
+
msgid "New Exclude Rule"
|
319 |
+
msgstr "Neue Ausnahmeregel"
|
320 |
+
|
321 |
+
#: admin/schedule-form-excludes.php:17
|
322 |
+
msgid "Preview"
|
323 |
+
msgstr "Vorschau"
|
324 |
+
|
325 |
+
#: admin/schedule-form-excludes.php:27
|
326 |
+
msgid "Exclude Rules"
|
327 |
+
msgstr "Ausnahmeregeln"
|
328 |
+
|
329 |
+
#: admin/schedule-form-excludes.php:42
|
330 |
+
msgid "Remove"
|
331 |
+
msgstr "Entfernen"
|
332 |
+
|
333 |
+
#: admin/schedule-form-excludes.php:59
|
334 |
+
msgid "Excluded"
|
335 |
+
msgstr "Ausnehmen"
|
336 |
+
|
337 |
+
#: admin/schedule-form-excludes.php:60
|
338 |
+
msgid "Included"
|
339 |
+
msgstr "Einschließen"
|
340 |
+
|
341 |
+
#: admin/schedule-form-excludes.php:63
|
342 |
+
msgid "Unreadable"
|
343 |
+
msgstr "Nicht lesbar"
|
344 |
+
|
345 |
+
#: admin/schedule-form-excludes.php:86
|
346 |
+
msgid "Unreadable files can't be backed up"
|
347 |
+
msgstr "Nicht lesbare Dateien können nicht gesichert werden"
|
348 |
+
|
349 |
+
#: admin/schedule-form-excludes.php:92
|
350 |
+
#, php-format
|
351 |
+
msgid "Your site is %s. Backups will be compressed and so will be smaller."
|
352 |
+
msgstr "Deine Seite ist %s groß. Die Backups werden komprimiert und sollten kleiner sein."
|
353 |
+
|
354 |
+
#: admin/schedule-form-excludes.php:98
|
355 |
+
msgid "Close"
|
356 |
+
msgstr "Schließen"
|
357 |
+
|
358 |
+
#: admin/actions.php:163
|
359 |
+
msgid "BackUpWordPress has detected a problem."
|
360 |
+
msgstr "BackUpWordPress hat ein Problem entdeckt."
|
361 |
+
|
362 |
+
#: admin/actions.php:163
|
363 |
+
#, php-format
|
364 |
+
msgid "%1$s is returning a %2$s response which could mean cron jobs aren't getting fired properly. BackUpWordPress relies on wp-cron to run scheduled back ups. See the %3$s for more details."
|
365 |
+
msgstr "%1$s gibt eine %2$s-Antwort zurück. Das könnte bedeuten, dass deine Cron-Jobs nicht richtig aufgerufen werden. BackUpWordPress benutzt wp-cron, um geplante Backups auszuführen. Sieh dir das %3$s an für mehr Details."
|
366 |
+
|
367 |
+
#: admin/actions.php:232
|
368 |
+
msgid "Backup type cannot be empty"
|
369 |
+
msgstr "Backup-Typ kann nicht leer sein"
|
370 |
+
|
371 |
+
#: admin/actions.php:235
|
372 |
+
msgid "Invalid backup type"
|
373 |
+
msgstr "Ungültiger Backup-Typ"
|
374 |
+
|
375 |
+
#: admin/actions.php:245
|
376 |
+
msgid "Schedule cannot be empty"
|
377 |
+
msgstr "Aufgaben können nicht leer sein"
|
378 |
+
|
379 |
+
#: admin/actions.php:248
|
380 |
+
msgid "Invalid schedule"
|
381 |
+
msgstr "Ungültige Aufgaben"
|
382 |
+
|
383 |
+
#: admin/actions.php:258
|
384 |
+
msgid "Max backups must be more than 1"
|
385 |
+
msgstr "Maximale Anzahl der Backups muss größer als 1 sein"
|
386 |
+
|
387 |
+
#: admin/actions.php:261
|
388 |
+
msgid "Max backups must be a number"
|
389 |
+
msgstr "Maximale Anzahl der Backups muss eine Nummer sein"
|
390 |
+
|
391 |
+
#: admin/actions.php:334
|
392 |
+
#, php-format
|
393 |
+
msgid "%s matches 1 file."
|
394 |
+
msgid_plural "%s matches %d files"
|
395 |
+
msgstr[0] "%s passt auf eine Datei."
|
396 |
+
msgstr[1] "%s passt auf %d Dateien."
|
397 |
+
|
398 |
+
#: admin/actions.php:338
|
399 |
+
#, php-format
|
400 |
+
msgid "%s didn't match any files."
|
401 |
+
msgstr "%s passt auf keine Dateien."
|
402 |
+
|
403 |
+
#: admin/page.php:5
|
404 |
+
msgid "Manage Backups"
|
405 |
+
msgstr "Backups verwalten"
|
406 |
+
|
407 |
+
#: admin/page.php:13
|
408 |
+
msgid "You need to fix the issues detailed above before BackUpWordPress can start."
|
409 |
+
msgstr "Du musst die Probleme, die oben beschrieben werden, beheben, bevor BackUpWordPress starten kann."
|
410 |
+
|
411 |
+
#: admin/page.php:17
|
412 |
+
#, php-format
|
413 |
+
msgid "If you need help getting things working you are more than welcome to email us at %s and we'll do what we can."
|
414 |
+
msgstr "Wenn du Hilfe brauchst, sende uns ruhig eine E-Mail an %s (am besten auf Englisch) und wir werden tun, was wir können."
|
415 |
+
|
416 |
+
#: admin/backups.php:13
|
417 |
+
msgid "add schedule"
|
418 |
+
msgstr "Aufgabe hinzufügen"
|
419 |
+
|
420 |
+
#: admin/backups.php:36
|
421 |
+
#, php-format
|
422 |
+
msgid "1 backup completed"
|
423 |
+
msgid_plural "%d backups completed"
|
424 |
+
msgstr[0] "1 Backup fertiggestellt"
|
425 |
+
msgstr[1] "%d Backups fertiggestellt"
|
426 |
+
|
427 |
+
#: admin/backups.php:37
|
428 |
+
msgid "Size"
|
429 |
+
msgstr "Größe"
|
430 |
+
|
431 |
+
#: admin/backups.php:38
|
432 |
+
msgid "Type"
|
433 |
+
msgstr "Typ"
|
434 |
+
|
435 |
+
#: admin/backups.php:39
|
436 |
+
msgid "Actions"
|
437 |
+
msgstr "Aktionen"
|
438 |
+
|
439 |
+
#: admin/backups.php:62
|
440 |
+
msgid "This is where your backups will appear once you have one."
|
441 |
+
msgstr "Hier erscheinen deine Backups, sobald du welche hast."
|
442 |
+
|
443 |
+
#: admin/menu.php:10
|
444 |
+
#: admin/menu.php:34
|
445 |
+
msgid "Backups"
|
446 |
+
msgstr "Backups"
|
447 |
+
|
448 |
+
#: admin/menu.php:69
|
449 |
+
msgid "You are not using the latest stable version of BackUpWordPress"
|
450 |
+
msgstr "Du benutzt nicht die neueste stabile BackUpWordPress-Version"
|
451 |
+
|
452 |
+
#: admin/menu.php:69
|
453 |
+
#, php-format
|
454 |
+
msgid "The information below is for version %1$s. View the %2$s file for help specific to version %3$s."
|
455 |
+
msgstr "Diese Informationen sind für Version %1$s. Sieh dir die %2$s-Datei für Hilfe speziell für Version %3$s an."
|
456 |
+
|
457 |
+
#: admin/menu.php:75
|
458 |
+
msgid "FAQ"
|
459 |
+
msgstr "FAQ"
|
460 |
+
|
461 |
+
#: admin/menu.php:79
|
462 |
+
msgid "For more information:"
|
463 |
+
msgstr "Für mehr Informationen:"
|
464 |
+
|
465 |
+
#: admin/menu.php:81
|
466 |
+
msgid "Support Forums"
|
467 |
+
msgstr "Support-Foren"
|
468 |
+
|
469 |
+
#: admin/menu.php:82
|
470 |
+
msgid "Help with translation"
|
471 |
+
msgstr "Beim Übersetzen helfen"
|
472 |
+
|
473 |
+
#: functions/core.php:192
|
474 |
+
msgid "BackUpWordPress has setup your default schedules."
|
475 |
+
msgstr "BackUpWordPress hat deine Standard-Pläne eingerichtet."
|
476 |
+
|
477 |
+
#: functions/core.php:192
|
478 |
+
msgid "By default BackUpWordPress performs a daily backup of your database and a weekly backup of your database & files. You can modify these schedules below."
|
479 |
+
msgstr "Standardmäßig macht BackUpWordPress täglich ein Backup deiner Datenbank und wöchentlich eines deiner Datenbank und deiner Dateien. Du kannst diese Pläne hier bearbeiten."
|
480 |
+
|
481 |
+
#: functions/core.php:273
|
482 |
+
#, php-format
|
483 |
+
msgid "This %s file ensures that other people cannot download your backup files."
|
484 |
+
msgstr "Diese %s-Datei garantiert, dass andere Leute nicht deine Backup-Dateien herunterladen können."
|
485 |
+
|
486 |
+
#: functions/interface.php:27
|
487 |
+
msgid "Download"
|
488 |
+
msgstr "Download"
|
489 |
+
|
490 |
+
#: functions/interface.php:28
|
491 |
+
#: functions/interface.php:215
|
492 |
+
msgid "Delete"
|
493 |
+
msgstr "Löschen"
|
494 |
+
|
495 |
+
#: functions/interface.php:50
|
496 |
+
#: functions/interface.php:62
|
497 |
+
msgid "BackUpWordPress is almost ready."
|
498 |
+
msgstr "BackUpWordPress ist fast fertig."
|
499 |
+
|
500 |
+
#: functions/interface.php:50
|
501 |
+
#, php-format
|
502 |
+
msgid "The backups directory can't be created because your %1$s directory isn't writable, run %2$s or %3$s or create the folder yourself."
|
503 |
+
msgstr "Das Backup-Verzeichnis kann nicht erstellt werden, weil dein %1$s-Verzeichnis nicht schreibbar ist. Führe %2$s oder %3$s aus oder erstelle das Verzeichnis selbst."
|
504 |
+
|
505 |
+
#: functions/interface.php:62
|
506 |
+
#, php-format
|
507 |
+
msgid "Your backups directory isn't writable, run %1$s or %2$s or set the permissions yourself."
|
508 |
+
msgstr "Dein Backup-Verzeichnis ist nicht schreibbar. Führe %1$s oder %2$s aus oder setze die Berechtigungen selbst."
|
509 |
+
|
510 |
+
#: functions/interface.php:72
|
511 |
+
#, php-format
|
512 |
+
msgid "%1$s is running in %2$s. Please contact your host and ask them to disable %3$s."
|
513 |
+
msgstr "%1$s läuft im %2$s. Bitte kontaktiere deinen Administrator und bitte ihn, den %3$s zu deaktivieren."
|
514 |
+
|
515 |
+
#: functions/interface.php:72
|
516 |
+
msgid "http://php.net/manual/en/features.safe-mode.php"
|
517 |
+
msgstr "http://php.net/manual/de/features.safe-mode.php"
|
518 |
+
|
519 |
+
#: functions/interface.php:72
|
520 |
+
msgid "Safe Mode"
|
521 |
+
msgstr "Safe Mode"
|
522 |
+
|
523 |
+
#: functions/interface.php:82
|
524 |
+
#, php-format
|
525 |
+
msgid "Your custom backups directory %1$s doesn't exist and can't be created, your backups will be saved to %2$s instead."
|
526 |
+
msgstr "Dein angepasstes Backup-Verzeichnis %1$s existiert nicht und kann nicht erstellt werden, neue Backups werden stattdessen nach %2$s gespeichert."
|
527 |
+
|
528 |
+
#: functions/interface.php:92
|
529 |
+
#, php-format
|
530 |
+
msgid "Your custom backups directory %1$s isn't writable, new backups will be saved to %2$s instead."
|
531 |
+
msgstr "Dein angepasstes Backup-Verzeichnis %1$s ist nicht schreibbar, neue Backups werden stattdessen nach %2$s gespeichert."
|
532 |
+
|
533 |
+
#: functions/interface.php:102
|
534 |
+
msgid "BackUpWordPress detected issues with your last backup."
|
535 |
+
msgstr "BackUpWordPress hat Probleme bei deinem letzten Backup bemerkt."
|
536 |
+
|
537 |
+
#: functions/interface.php:182
|
538 |
+
msgid "Database and Files"
|
539 |
+
msgstr "Datenbank und Dateien"
|
540 |
+
|
541 |
+
#: functions/interface.php:185
|
542 |
+
msgid "Files"
|
543 |
+
msgstr "Dateien"
|
544 |
+
|
545 |
+
#: functions/interface.php:188
|
546 |
+
msgid "Database"
|
547 |
+
msgstr "Datenbank"
|
548 |
+
|
549 |
+
#: functions/interface.php:193
|
550 |
+
msgid "Unknown"
|
551 |
+
msgstr "Unbekannt"
|
552 |
+
|
553 |
+
#: functions/interface.php:201
|
554 |
+
msgid "cancel"
|
555 |
+
msgstr "abbrechen"
|
556 |
+
|
557 |
+
#: functions/interface.php:207
|
558 |
+
msgid "Settings"
|
559 |
+
msgstr "Einstellungen"
|
560 |
+
|
561 |
+
#: functions/interface.php:210
|
562 |
+
msgid "Excludes"
|
563 |
+
msgstr "Ausnahmen"
|
564 |
+
|
565 |
+
#: functions/interface.php:213
|
566 |
+
msgid "Run now"
|
567 |
+
msgstr "Jetzt ausführen"
|
568 |
+
|
569 |
+
#~ msgid ""
|
570 |
+
#~ "You can define %1$s in your %2$s to control some settings. A full list of "
|
571 |
+
#~ "%3$s can be found in the %4$s. Defined settings will not be editable "
|
572 |
+
#~ "below."
|
573 |
+
#~ msgstr ""
|
574 |
+
#~ "Du kannst %1$s in deinem %2$s definieren, um einige Einstellungen "
|
575 |
+
#~ "vorzunehmen. Eine komplette Liste der %3$s kannst du im %4$s finden. "
|
576 |
+
#~ "Definierte Einstellungen sind unten nicht veränderbar."
|
577 |
+
|
578 |
+
#~ msgid "help panel"
|
579 |
+
#~ msgstr "Hilfe-Panel"
|
580 |
+
|
581 |
+
#~ msgid "Automatic Backups"
|
582 |
+
#~ msgstr "Automatische Backups"
|
583 |
+
|
584 |
+
#~ msgid "Backup my site automatically."
|
585 |
+
#~ msgstr "Sichere meine Seite automatisch."
|
586 |
+
|
587 |
+
#~ msgid "No automatic backups."
|
588 |
+
#~ msgstr "Keine automatischen Backups."
|
589 |
+
|
590 |
+
#~ msgid "Frequency of backups"
|
591 |
+
#~ msgstr "Häufigkeit der Backups"
|
592 |
+
|
593 |
+
#~ msgid "Automatic backups will occur"
|
594 |
+
#~ msgstr "Automatische Backups werden ausgeführt:"
|
595 |
+
|
596 |
+
#~ msgid "Daily"
|
597 |
+
#~ msgstr "Täglich"
|
598 |
+
|
599 |
+
#~ msgid "Weekly"
|
600 |
+
#~ msgstr "Wöchentlich"
|
601 |
+
|
602 |
+
#~ msgid "Fortnightly"
|
603 |
+
#~ msgstr "Vierzehntägig"
|
604 |
+
|
605 |
+
#~ msgid "Monthly"
|
606 |
+
#~ msgstr "Monatlich"
|
607 |
+
|
608 |
+
#~ msgid "What to Backup"
|
609 |
+
#~ msgstr "Zu sichernde Daten"
|
610 |
+
|
611 |
+
#~ msgid "Backup my"
|
612 |
+
#~ msgstr "Sichere meine"
|
613 |
+
|
614 |
+
#~ msgid "Number of backups"
|
615 |
+
#~ msgstr "Anzahl der Backups"
|
616 |
+
|
617 |
+
#~ msgid "Email backups"
|
618 |
+
#~ msgstr "Backup-E-Mail"
|
619 |
+
|
620 |
+
#~ msgid ""
|
621 |
+
#~ "A copy of the backup file will be emailed to this address. Disabled if "
|
622 |
+
#~ "left blank."
|
623 |
+
#~ msgstr ""
|
624 |
+
#~ "Eine Kopie der Backup-Datei wird per E-Mail an diese Adresse gesendet. "
|
625 |
+
#~ "Leerlassen zum deaktivieren."
|
626 |
+
|
627 |
+
#~ msgid ""
|
628 |
+
#~ "A comma separated list of file and directory paths that you do "
|
629 |
+
#~ "<strong>not</strong> want to backup."
|
630 |
+
#~ msgstr ""
|
631 |
+
#~ "Eine kommagetrennte Liste von Datei- und Verzeichnispfaden, die du "
|
632 |
+
#~ "<strong>nicht</strong> sichern möchtest."
|
633 |
+
|
634 |
+
#~ msgid "Save Changes"
|
635 |
+
#~ msgstr "Änderungen speichern"
|
636 |
+
|
637 |
+
#~ msgid "Only the most recent backup will be saved"
|
638 |
+
|
639 |
+
#~ msgid_plural "The %d most recent backups will be saved"
|
640 |
+
#~ msgstr[0] "Nur das neueste Backup wird gespeichert"
|
641 |
+
#~ msgstr[1] "Die %d neuesten Backups werden gespeichert"
|
642 |
+
|
643 |
+
#~ msgid "Total %s"
|
644 |
+
#~ msgstr "Insgesamt %s"
|
645 |
+
|
646 |
+
#~ msgid "Back Up Now"
|
647 |
+
#~ msgstr "Jetzt sichern"
|
648 |
+
|
649 |
+
#~ msgid "You have entered an invalid number of backups."
|
650 |
+
#~ msgstr "Du hast eine ungültige Anzahl von Backups eingegeben."
|
651 |
+
|
652 |
+
#~ msgid "Automatic backups are %s."
|
653 |
+
#~ msgstr "Automatische Backups sind %s."
|
654 |
+
|
655 |
+
#~ msgid "disabled"
|
656 |
+
#~ msgstr "deaktiviert"
|
657 |
+
|
658 |
+
#~ msgid "&"
|
659 |
+
#~ msgstr "&"
|
660 |
+
|
661 |
+
#~ msgid ""
|
662 |
+
#~ "Your %1$s will be automatically backed up %2$s. The next backup will "
|
663 |
+
#~ "occur at %3$s on %4$s and be saved to %5$s."
|
664 |
+
|
665 |
+
#~ msgid_plural ""
|
666 |
+
#~ "Your %1$s will be automatically backed up %2$s. The next backup will "
|
667 |
+
#~ "occur at %3$s on %4$s and be saved to %5$s."
|
668 |
+
#~ msgstr[0] ""
|
669 |
+
#~ "Deine %1$s wird automatisch %2$s gesichert. Das nächste Backup findet am "
|
670 |
+
#~ "%4$s um %3$s statt und wird nach %5$s gespeichert."
|
671 |
+
#~ msgstr[1] ""
|
672 |
+
#~ "Deine %1$s werden automatisch %2$s gesichert. Das nächste Backup findet "
|
673 |
+
#~ "am %3$s um %4$s statt und wird nach %5$s gespeichert."
|
674 |
+
|
675 |
+
#~ msgid "It's currently %s"
|
676 |
+
#~ msgstr "Es ist jetzt %s"
|
677 |
+
|
678 |
+
#~ msgid "Calculating Size..."
|
679 |
+
#~ msgstr "Größe berechnen..."
|
680 |
+
|
681 |
+
#~ msgid "A copy of each backup will be emailed to %s."
|
682 |
+
#~ msgstr "Eine Kopie jedes Backups wird an %s gesendet."
|
683 |
+
|
684 |
+
#~ msgid "The following paths will be excluded from your backups %s."
|
685 |
+
#~ msgstr ""
|
686 |
+
#~ "Die folgenden Pfade werden von deinen Backups ausgeschlossen sein: %s"
|
687 |
+
|
688 |
+
#~ msgid "Settings saved."
|
689 |
+
#~ msgstr "Einstellungen gespeichert."
|
690 |
+
|
691 |
+
#~ msgid ""
|
692 |
+
#~ "You have both %1$s and %2$s defined so there isn't anything to back up."
|
693 |
+
#~ msgstr ""
|
694 |
+
#~ "Du hast sowohl %1$s, als auch %2$s definiert. Deswegen gibt es nichts zu "
|
695 |
+
#~ "sichern."
|
696 |
+
|
697 |
+
#~ msgid "The following email address is not valid: %s."
|
698 |
+
|
699 |
+
#~ msgid_plural "The following email addresses are not valid: %s."
|
700 |
+
#~ msgstr[0] "Die folgende E-Mail-Adresse ist ungültig: %s"
|
701 |
+
#~ msgstr[1] "Die folgenden E-Mail-Adressen sind ungültig: %s"
|
702 |
+
|
703 |
+
#~ msgid ""
|
704 |
+
#~ "The last backup email failed to send. It's likely that the file is too "
|
705 |
+
#~ "large."
|
706 |
+
#~ msgstr ""
|
707 |
+
#~ "Das letzte Backup-E-Mail konnte nicht gesendet werden. Wahrscheinlich ist "
|
708 |
+
#~ "die Datei zu groß."
|
709 |
+
|
710 |
+
#~ msgid ""
|
711 |
+
#~ "You have defined a custom exclude list but the following paths don't "
|
712 |
+
#~ "exist %s, are you sure you entered them correctly?"
|
713 |
+
#~ msgstr ""
|
714 |
+
#~ "Du hast eine Ausnahmen-Liste definiert, aber die folgenden Pfade "
|
715 |
+
#~ "existieren nicht: %s. Bist du sicher, dass du sie korrekt eingegeben hast?"
|
716 |
+
|
717 |
+
#~ msgid "Removing old backups"
|
718 |
+
#~ msgstr "Alte Backups werden gelöscht"
|
719 |
+
|
720 |
+
#~ msgid ""
|
721 |
+
#~ "BackUpWordPress has completed a backup of your site %1$s.\\n\\nThe backup "
|
722 |
+
#~ "file should be attached to this email.\\n\\nYou can also download the "
|
723 |
+
#~ "backup file by clicking the link below:\\n\\n%2$s\\n\\nKind Regards\\n\\n "
|
724 |
+
#~ "The Happy BackUpWordPress Backup Emailing Robot"
|
725 |
+
#~ msgstr ""
|
726 |
+
#~ "BackUpWordPress hat ein Backup deiner Seite %1$s fertiggestellt.\n"
|
727 |
+
#~ "\n"
|
728 |
+
#~ "Die Backup-Datei sollte an diese E-Mail angehängt sein.\n"
|
729 |
+
#~ "\n"
|
730 |
+
#~ "Du kannst es auch herunterladen, indem du den folgenden Link anklickst:\n"
|
731 |
+
#~ "\n"
|
732 |
+
#~ "%2$s\n"
|
733 |
+
#~ "\n"
|
734 |
+
#~ "Liebe Grüße\n"
|
735 |
+
#~ "\n"
|
736 |
+
#~ " Der glückliche BackUpWordPress-Backup-E-Mail-Roboter"
|
737 |
+
|
738 |
+
#~ msgid ""
|
739 |
+
#~ "BackUpWordPress has completed a backup of your site %1$s.\\n"
|
740 |
+
#~ "\\nUnfortunately the backup file was too large to attach to this email.\\n"
|
741 |
+
#~ "\\nYou can download the backup file by clicking the link below:\\n\\n%2$s"
|
742 |
+
#~ "\\n\\nKind Regards\\n\\n The Happy BackUpWordPress Backup Emailing Robot"
|
743 |
+
#~ msgstr ""
|
744 |
+
#~ "BackUpWordPress hat ein Backup deiner Seite %1$s fertiggestellt.\n"
|
745 |
+
#~ "\n"
|
746 |
+
#~ "Leider war die Backup-Datei zu groß, um sie an dieses E-Mail anzuhängen.\n"
|
747 |
+
#~ "\n"
|
748 |
+
#~ "Du kannst es aber herunterladen, indem du den folgenden Link anklickst:\n"
|
749 |
+
#~ "\n"
|
750 |
+
#~ "%2$s\n"
|
751 |
+
#~ "\n"
|
752 |
+
#~ "Liebe Grüße\n"
|
753 |
+
#~ "\n"
|
754 |
+
#~ " Der glückliche BackUpWordPress-Backup-E-Mail-Roboter"
|
backupwordpress/languages/hmbkp-es_ES.mo
ADDED
Binary file
|
backupwordpress/languages/hmbkp-es_ES.po
ADDED
@@ -0,0 +1,540 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# Translation of 1.6.8 in Spanish (Spain)
|
2 |
+
# This file is distributed under the same license as the 1.6.8 package.
|
3 |
+
msgid ""
|
4 |
+
msgstr ""
|
5 |
+
"Project-Id-Version: 1.6.8\n"
|
6 |
+
"Report-Msgid-Bugs-To: \n"
|
7 |
+
"POT-Creation-Date: 2012-08-14 14:41+0100\n"
|
8 |
+
"PO-Revision-Date: 2012-08-14 14:41+0100\n"
|
9 |
+
"Last-Translator: Flo Edelmann <florian-edelmann@online.de>\n"
|
10 |
+
"Language-Team: \n"
|
11 |
+
"Language: \n"
|
12 |
+
"MIME-Version: 1.0\n"
|
13 |
+
"Content-Type: text/plain; charset=UTF-8\n"
|
14 |
+
"Content-Transfer-Encoding: 8bit\n"
|
15 |
+
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
16 |
+
"X-Generator: GlotPress/0.1\n"
|
17 |
+
"X-Poedit-Language: Spanish\n"
|
18 |
+
"X-Poedit-Country: SPAIN\n"
|
19 |
+
"X-Poedit-SourceCharset: utf-8\n"
|
20 |
+
"X-Poedit-KeywordsList: __;_e;_n:1,2\n"
|
21 |
+
"X-Poedit-Basepath: ..\n"
|
22 |
+
"X-Poedit-SearchPath-0: .\n"
|
23 |
+
|
24 |
+
#: admin.settings.php:3
|
25 |
+
#: admin.page.php:11
|
26 |
+
msgid "Settings"
|
27 |
+
msgstr "Opciones"
|
28 |
+
|
29 |
+
#: admin.settings.php:5
|
30 |
+
#, php-format
|
31 |
+
msgid "You can define %1$s in your %2$s to control some settings. A full list of %3$s can be found in the %4$s. Defined settings will not be editable below."
|
32 |
+
msgstr "Puedes establecer %1$s de %2$s para controlar algunas opciones de configuración. La lista completa de %3$s se encuentra en %4$s. No podrás cambiar las opciones de configuración predeterminadas."
|
33 |
+
|
34 |
+
#: admin.settings.php:5
|
35 |
+
#: admin.constants.php:3
|
36 |
+
#: admin.menus.php:76
|
37 |
+
msgid "Constants"
|
38 |
+
msgstr "Constantes"
|
39 |
+
|
40 |
+
#: admin.settings.php:5
|
41 |
+
msgid "help panel"
|
42 |
+
msgstr "panel de ayuda"
|
43 |
+
|
44 |
+
#: admin.settings.php:16
|
45 |
+
msgid "Automatic Backups"
|
46 |
+
msgstr "Copias de seguridad automáticas"
|
47 |
+
|
48 |
+
#: admin.settings.php:22
|
49 |
+
msgid "Backup my site automatically."
|
50 |
+
msgstr "Hacer copias de seguridad de mi sitio de manera automática."
|
51 |
+
|
52 |
+
#: admin.settings.php:27
|
53 |
+
msgid "No automatic backups."
|
54 |
+
msgstr "No hacer copias de seguridad de mi sitio de manera automática."
|
55 |
+
|
56 |
+
#: admin.settings.php:36
|
57 |
+
msgid "Frequency of backups"
|
58 |
+
msgstr "Frecuencia de las copias de seguridad"
|
59 |
+
|
60 |
+
#: admin.settings.php:40
|
61 |
+
msgid "Automatic backups will occur"
|
62 |
+
msgstr "Copias de seguridad automáticas se producirán"
|
63 |
+
|
64 |
+
#: admin.settings.php:43
|
65 |
+
msgid "Daily"
|
66 |
+
msgstr "Cada día"
|
67 |
+
|
68 |
+
#: admin.settings.php:44
|
69 |
+
msgid "Weekly"
|
70 |
+
msgstr "Cada semana"
|
71 |
+
|
72 |
+
#: admin.settings.php:45
|
73 |
+
msgid "Fortnightly"
|
74 |
+
msgstr "Cada dos semanas"
|
75 |
+
|
76 |
+
#: admin.settings.php:46
|
77 |
+
msgid "Monthly"
|
78 |
+
msgstr "Cada mes"
|
79 |
+
|
80 |
+
#: admin.settings.php:55
|
81 |
+
msgid "What to Backup"
|
82 |
+
msgstr "Incluir en la copia de seguridad"
|
83 |
+
|
84 |
+
#: admin.settings.php:59
|
85 |
+
msgid "Backup my"
|
86 |
+
msgstr "Hacer copia de seguridad de mi"
|
87 |
+
|
88 |
+
#: admin.settings.php:62
|
89 |
+
msgid "database & files"
|
90 |
+
msgstr "base de datos & archivos"
|
91 |
+
|
92 |
+
#: admin.settings.php:63
|
93 |
+
msgid "database only"
|
94 |
+
msgstr "sólo base de datos"
|
95 |
+
|
96 |
+
#: admin.settings.php:64
|
97 |
+
msgid "files only"
|
98 |
+
msgstr "sólo archivos"
|
99 |
+
|
100 |
+
#: admin.settings.php:72
|
101 |
+
msgid "Number of backups"
|
102 |
+
msgstr "Número de copias de seguridad"
|
103 |
+
|
104 |
+
#: admin.settings.php:73
|
105 |
+
#, php-format
|
106 |
+
msgid "The last %s backups will be stored on the server."
|
107 |
+
msgstr "Las %s últimas copias de seguridad se almacenarán en el servidor."
|
108 |
+
|
109 |
+
#: admin.settings.php:77
|
110 |
+
msgid "Email backups"
|
111 |
+
msgstr "Enviar copias de seguridad por correo electrónico"
|
112 |
+
|
113 |
+
#: admin.settings.php:78
|
114 |
+
msgid "A copy of the backup file will be emailed to this address. Disabled if left blank."
|
115 |
+
msgstr "Se enviará el archivo de copia de seguridad a esta dirección de correo electrónico. Dejar en blanco para desactivar."
|
116 |
+
|
117 |
+
#: admin.settings.php:82
|
118 |
+
msgid "Excludes"
|
119 |
+
msgstr "Excluir"
|
120 |
+
|
121 |
+
#: admin.settings.php:85
|
122 |
+
msgid "A comma separated list of file and directory paths that you do <strong>not</strong> want to backup."
|
123 |
+
msgstr "Lista de archivos y rutas de carpetas que <strong>no</strong> deseas incluir en la copia de seguridad."
|
124 |
+
|
125 |
+
#: admin.settings.php:86
|
126 |
+
#: admin.constants.php:8
|
127 |
+
#: admin.constants.php:11
|
128 |
+
#: admin.constants.php:14
|
129 |
+
#: admin.constants.php:17
|
130 |
+
#: admin.constants.php:20
|
131 |
+
#: admin.constants.php:23
|
132 |
+
#: admin.constants.php:26
|
133 |
+
#: admin.constants.php:29
|
134 |
+
#: admin.constants.php:32
|
135 |
+
#: admin.constants.php:35
|
136 |
+
#: admin.constants.php:38
|
137 |
+
#: admin.constants.php:41
|
138 |
+
msgid "e.g."
|
139 |
+
msgstr "por ejemplo"
|
140 |
+
|
141 |
+
#: admin.settings.php:94
|
142 |
+
msgid "Save Changes"
|
143 |
+
msgstr "Guardar los cambios"
|
144 |
+
|
145 |
+
#: admin.backups-table.php:12
|
146 |
+
#, php-format
|
147 |
+
msgid "1 backup completed"
|
148 |
+
msgid_plural "%d backups completed"
|
149 |
+
msgstr[0] ""
|
150 |
+
msgstr[1] ""
|
151 |
+
|
152 |
+
#: admin.backups-table.php:13
|
153 |
+
msgid "Size"
|
154 |
+
msgstr "Tamaño"
|
155 |
+
|
156 |
+
#: admin.backups-table.php:14
|
157 |
+
msgid "Actions"
|
158 |
+
msgstr "Acciones"
|
159 |
+
|
160 |
+
#: admin.backups-table.php:20
|
161 |
+
#, php-format
|
162 |
+
msgid "Only the most recent backup will be saved"
|
163 |
+
msgid_plural "The %d most recent backups will be saved"
|
164 |
+
msgstr[0] ""
|
165 |
+
msgstr[1] ""
|
166 |
+
|
167 |
+
#: admin.backups-table.php:21
|
168 |
+
#, php-format
|
169 |
+
msgid "Total %s"
|
170 |
+
msgstr "Total %s"
|
171 |
+
|
172 |
+
#: admin.page.php:7
|
173 |
+
#: admin.menus.php:10
|
174 |
+
msgid "Manage Backups"
|
175 |
+
msgstr "Gestionar copias de seguridad"
|
176 |
+
|
177 |
+
#: admin.page.php:23
|
178 |
+
msgid "You need to fix the issues detailed above before BackUpWordPress can start."
|
179 |
+
msgstr "Debes arreglar los problemas indicados arriba para que BackUpWordPress pueda iniciar."
|
180 |
+
|
181 |
+
#: admin.page.php:29
|
182 |
+
#, php-format
|
183 |
+
msgid "If you need help getting things working you are more than welcome to email us at %s and we'll do what we can to help."
|
184 |
+
msgstr "Si necesitas ayuda puedes contactarnos al correo electrónico %s y haremos todo lo posible para ayudarte."
|
185 |
+
|
186 |
+
#: admin.backup-button.php:3
|
187 |
+
msgid "cancel"
|
188 |
+
msgstr "cancelar"
|
189 |
+
|
190 |
+
#: admin.backup-button.php:7
|
191 |
+
msgid "Back Up Now"
|
192 |
+
msgstr "Hacer copia de seguridad ahora"
|
193 |
+
|
194 |
+
#: admin.constants.php:3
|
195 |
+
#, php-format
|
196 |
+
msgid "You can %1$s any of the following %2$s in your %3$s to control advanced settings. %4$s. Defined %5$s will be highlighted."
|
197 |
+
msgstr "Puedes %1$s cualquiera de los %2$s en tu %3$s para controlar opciones avanzadas. %4$s. %5$s establecidas verán destacadas."
|
198 |
+
|
199 |
+
#: admin.constants.php:3
|
200 |
+
msgid "The Codex can help"
|
201 |
+
msgstr "Busca ayuda en el Codex"
|
202 |
+
|
203 |
+
#: admin.constants.php:8
|
204 |
+
#, php-format
|
205 |
+
msgid "The path to folder you would like to store your backup files in, defaults to %s."
|
206 |
+
msgstr "La ruta hacia el directorio en el que deseas guardar tus copias de seguridad será por defecto %s."
|
207 |
+
|
208 |
+
#: admin.constants.php:11
|
209 |
+
#, php-format
|
210 |
+
msgid "The path to your %1$s executable. Will be used for the %2$s part of the back up if available."
|
211 |
+
msgstr "La ruta hacia tu %1$s ejecutable. Se utilizará para la parte %2$s de la copia de seguridad si está disponible."
|
212 |
+
|
213 |
+
#: admin.constants.php:11
|
214 |
+
#: admin.constants.php:14
|
215 |
+
#: admin.constants.php:23
|
216 |
+
#: admin.constants.php:26
|
217 |
+
#: admin.status.php:14
|
218 |
+
#: admin.status.php:18
|
219 |
+
msgid "database"
|
220 |
+
msgstr "base de datos"
|
221 |
+
|
222 |
+
#: admin.constants.php:14
|
223 |
+
#, php-format
|
224 |
+
msgid "The path to your %1$s executable. Will be used to zip up your %2$s and %3$s if available."
|
225 |
+
msgstr "La ruta hacia tu %1$s ejecutable. Se utilizará para hacer el archivo zip de tu %2$s y %3$s si está disponible."
|
226 |
+
|
227 |
+
#: admin.constants.php:14
|
228 |
+
#: admin.constants.php:23
|
229 |
+
#: admin.constants.php:26
|
230 |
+
#: admin.status.php:14
|
231 |
+
#: admin.status.php:22
|
232 |
+
msgid "files"
|
233 |
+
msgstr "archivos"
|
234 |
+
|
235 |
+
#: admin.constants.php:17
|
236 |
+
#, php-format
|
237 |
+
msgid "Completely disables the automatic back up. You can still back up using the \"Back Up Now\" button. Defaults to %s."
|
238 |
+
msgstr "Desactiva completamente las copias automáticas. Podrás hacer copias de seguridad de todas maneras utilizando el botón \"Hacer copia de seguridad ahora\". Valor predeterminado es %s."
|
239 |
+
|
240 |
+
#: admin.constants.php:20
|
241 |
+
#, fuzzy, php-format
|
242 |
+
msgid "Number of backups to keep, older backups will be deleted automatically when a new backup is completed. Defaults to %s."
|
243 |
+
msgstr "El numero de copias de seguridad que se guardarán; las copias más antiguas se borrarán automáticamente cuando se crea una nueva copia. Valor predeterminado es %s."
|
244 |
+
|
245 |
+
#: admin.constants.php:23
|
246 |
+
#: admin.constants.php:26
|
247 |
+
#, php-format
|
248 |
+
msgid "Backup %1$s only, your %2$s won't be backed up. Defaults to %3$s."
|
249 |
+
msgstr "Copiar sólo %1$s, %2$s no será incluido. Valor predeterminado %3$s."
|
250 |
+
|
251 |
+
#: admin.constants.php:29
|
252 |
+
#, php-format
|
253 |
+
msgid "The time that the daily back up should run. Defaults to %s."
|
254 |
+
msgstr "La hora a la que se creará la copia diaria. Valor predeterminado es %s."
|
255 |
+
|
256 |
+
#: admin.constants.php:32
|
257 |
+
#, php-format
|
258 |
+
msgid "Attempt to email a copy of your backups. Value should be email address to send backups to. Defaults to %s."
|
259 |
+
msgstr "Intento de enviar un correo con tu copia de de seguridad. El valor debería ser la dirección de correo de envíos. Valor predeterminado es %s."
|
260 |
+
|
261 |
+
#: admin.constants.php:35
|
262 |
+
msgid "Comma separated list of files or directories to exclude, the backups directory is automatically excluded."
|
263 |
+
msgstr "Listado de archivos o directorios para excluir de la copia de seguridad separados por coma."
|
264 |
+
|
265 |
+
#: admin.constants.php:38
|
266 |
+
#, php-format
|
267 |
+
msgid "The capability to use when calling %1$s. Defaults to %2$s."
|
268 |
+
msgstr "Capacidad que se usa al llamar %1$s. Valor predeterminado es %2$s."
|
269 |
+
|
270 |
+
#: admin.constants.php:41
|
271 |
+
#, fuzzy, php-format
|
272 |
+
msgid "The root directory that is backed up. Defaults to %s."
|
273 |
+
msgstr "La hora a la que se creará la copia diaria. Valor predeterminado es %s."
|
274 |
+
|
275 |
+
#: admin.actions.php:70
|
276 |
+
msgid "You have entered an invalid number of backups."
|
277 |
+
msgstr "Has introducido un número de copias de seguridad no válido."
|
278 |
+
|
279 |
+
#: admin.actions.php:79
|
280 |
+
#, php-format
|
281 |
+
msgid "%s is an invalid email address."
|
282 |
+
msgstr "%s no es una dirección de correo valida."
|
283 |
+
|
284 |
+
#: admin.actions.php:249
|
285 |
+
#: functions/interface.functions.php:89
|
286 |
+
#: functions/interface.functions.php:99
|
287 |
+
#: functions/interface.functions.php:110
|
288 |
+
#: functions/interface.functions.php:120
|
289 |
+
#: functions/interface.functions.php:130
|
290 |
+
#: functions/interface.functions.php:140
|
291 |
+
#: functions/interface.functions.php:150
|
292 |
+
msgid "BackUpWordPress has detected a problem."
|
293 |
+
msgstr "BackUpWordPress ha detectado un problema."
|
294 |
+
|
295 |
+
#: admin.actions.php:249
|
296 |
+
#, php-format
|
297 |
+
msgid "%1$s is returning a %2$s response which could mean cron jobs aren't getting fired properly. BackUpWordPress relies on wp-cron to run scheduled back ups. See the %3$s for more details."
|
298 |
+
msgstr "%1$s esta devolviendo una respuesta %2$s lo que podría significar que procesos cron no se están ejecutado correctamente. BackUpWordPress no puede funcionar sin que wp-cron haga copias de seguridad en un proceso aparte. Consultar %3$s para más información."
|
299 |
+
|
300 |
+
#: admin.menus.php:10
|
301 |
+
#: admin.menus.php:34
|
302 |
+
msgid "Backups"
|
303 |
+
msgstr "Copias de seguridad"
|
304 |
+
|
305 |
+
#: admin.menus.php:65
|
306 |
+
msgid "You are not using the latest stable version of BackUpWordPress"
|
307 |
+
msgstr "No estás usando la versión más reciente y estable de BackUpWordPress"
|
308 |
+
|
309 |
+
#: admin.menus.php:65
|
310 |
+
#, php-format
|
311 |
+
msgid "The information below is for version %1$s. View the <code>readme.txt</code> file for help specific to version %2$s."
|
312 |
+
msgstr "La información abajo es válida para la versión %1$s. Consulta el archivo <code>readme.txt</code> para ayuda especifica para la versión %2$s."
|
313 |
+
|
314 |
+
#: admin.menus.php:75
|
315 |
+
msgid "FAQ"
|
316 |
+
msgstr "Preguntas frecuentes"
|
317 |
+
|
318 |
+
#: admin.menus.php:79
|
319 |
+
msgid "For more information:"
|
320 |
+
msgstr "Para más información:"
|
321 |
+
|
322 |
+
#: admin.menus.php:81
|
323 |
+
msgid "Support Forums"
|
324 |
+
msgstr "Foros de soporte"
|
325 |
+
|
326 |
+
#: admin.menus.php:82
|
327 |
+
msgid "Help with translation"
|
328 |
+
msgstr "Ayuda con las traducciones"
|
329 |
+
|
330 |
+
#: plugin.php:47
|
331 |
+
msgid "BackUpWordPress requires PHP version 5.2.4 or greater."
|
332 |
+
msgstr "BackUpWordPress requiere PHP versión 5.2.4 o superior."
|
333 |
+
|
334 |
+
#: plugin.php:58
|
335 |
+
#, php-format
|
336 |
+
msgid "BackUpWordPress requires WordPress version %s."
|
337 |
+
msgstr "BackUpWordPress requiere la versión %s de Wordpress."
|
338 |
+
|
339 |
+
#: admin.status.php:9
|
340 |
+
#, php-format
|
341 |
+
msgid "Automatic backups are %s."
|
342 |
+
msgstr "Las copias automáticas están %s."
|
343 |
+
|
344 |
+
#: admin.status.php:9
|
345 |
+
msgid "disabled"
|
346 |
+
msgstr "desactivadas"
|
347 |
+
|
348 |
+
#: admin.status.php:14
|
349 |
+
msgid "&"
|
350 |
+
msgstr "&"
|
351 |
+
|
352 |
+
#: admin.status.php:32
|
353 |
+
#, php-format
|
354 |
+
msgid "Your %1$s will be automatically backed up %2$s. The next backup will occur at %3$s on %4$s and be saved to %5$s."
|
355 |
+
msgid_plural "Your %1$s will be automatically backed up %2$s. The next backup will occur at %3$s on %4$s and be saved to %5$s."
|
356 |
+
msgstr[0] "Tus %1$s se incluirán en la copia de seguridad automática %2$s. La siguiente copia de seguridad se producirá a las %3$s el %4$s y se guardará en %5$s."
|
357 |
+
msgstr[1] "Tus %1$s se incluirán en la copia de seguridad automática %2$s. La siguiente copia de seguridad se producirá a las %3$s el %4$s y se guardará en %5$s."
|
358 |
+
|
359 |
+
#: admin.status.php:39
|
360 |
+
#, php-format
|
361 |
+
msgid "It's currently %s"
|
362 |
+
msgstr "Actualmente son %s"
|
363 |
+
|
364 |
+
#: admin.status.php:47
|
365 |
+
#, php-format
|
366 |
+
msgid "Your site is %s. Backups will be compressed and should be smaller than this."
|
367 |
+
msgstr "Tu sitio web pesa %s. Las copias de seguridad serán comprimidas y deberían pesar menos."
|
368 |
+
|
369 |
+
#: admin.status.php:47
|
370 |
+
msgid "Calculating Size..."
|
371 |
+
msgstr "Calculando el tamaño..."
|
372 |
+
|
373 |
+
#: admin.status.php:50
|
374 |
+
#, php-format
|
375 |
+
msgid "A copy of each backup will be emailed to %s."
|
376 |
+
msgstr "Una de copia de seguridad será enviada por correo electrónico a %s."
|
377 |
+
|
378 |
+
#: admin.status.php:54
|
379 |
+
#, php-format
|
380 |
+
msgid "The following paths will be excluded from your backups %s."
|
381 |
+
msgstr "Las siguientes rutas se excluirán de tu copias de seguridad %s."
|
382 |
+
|
383 |
+
#: hm-backup/hm-backup.php:532
|
384 |
+
msgid "The backup file was not created"
|
385 |
+
msgstr "No se ha creado el archivo de copia de seguridad"
|
386 |
+
|
387 |
+
#: hm-backup/hm-backup.php:603
|
388 |
+
msgid "The following files are unreadable and couldn't be backed up: "
|
389 |
+
msgstr "Los siguientes archivos son ilegibles y no se ha incluido en la copia de seguridad: "
|
390 |
+
|
391 |
+
#: functions/interface.functions.php:25
|
392 |
+
msgid "Download"
|
393 |
+
msgstr "Descarga"
|
394 |
+
|
395 |
+
#: functions/interface.functions.php:26
|
396 |
+
msgid "Delete"
|
397 |
+
msgstr "Borrar"
|
398 |
+
|
399 |
+
#: functions/interface.functions.php:48
|
400 |
+
msgid "Settings saved."
|
401 |
+
msgstr "Configuración guardada."
|
402 |
+
|
403 |
+
#: functions/interface.functions.php:67
|
404 |
+
#: functions/interface.functions.php:79
|
405 |
+
msgid "BackUpWordPress is almost ready."
|
406 |
+
msgstr "BackUpWordPress está casi preparado."
|
407 |
+
|
408 |
+
#: functions/interface.functions.php:67
|
409 |
+
#, php-format
|
410 |
+
msgid "The backups directory can't be created because your %1$s directory isn't writable, run %2$s or %3$s or create the folder yourself."
|
411 |
+
msgstr "El directorio de copias de seguridad no se pudo crear porque tu directorio %1$s no tiene el permiso de escritura; ejecuta %2$s o %3$s o crea el directorio tu mismo."
|
412 |
+
|
413 |
+
#: functions/interface.functions.php:79
|
414 |
+
#, php-format
|
415 |
+
msgid "Your backups directory isn't writable, run %1$s or %2$s or set the permissions yourself."
|
416 |
+
msgstr "El directorio de tus copias de seguridad no tiene permiso de escritura, ejecuta %1$s o %2$s o configura los permisos tu mismo."
|
417 |
+
|
418 |
+
#: functions/interface.functions.php:89
|
419 |
+
#, php-format
|
420 |
+
msgid "%1$s is running in %2$s. Please contact your host and ask them to disable %3$s."
|
421 |
+
msgstr "%1$s se está ejecutando en %2$s. Por favor contacta con tu administrador de alojamiento para que pare el proceso %3$s."
|
422 |
+
|
423 |
+
#: functions/interface.functions.php:89
|
424 |
+
msgid "http://php.net/manual/en/features.safe-mode.php"
|
425 |
+
msgstr "http://php.net/manual/es/features.safe-mode.php"
|
426 |
+
|
427 |
+
#: functions/interface.functions.php:89
|
428 |
+
msgid "Safe Mode"
|
429 |
+
msgstr "Safe Mode"
|
430 |
+
|
431 |
+
#: functions/interface.functions.php:99
|
432 |
+
#, php-format
|
433 |
+
msgid "You have both %1$s and %2$s defined so there isn't anything to back up."
|
434 |
+
msgstr "Tienes %1$s y %2$s definidos - no hay archivos para hacer copias de seguridad."
|
435 |
+
|
436 |
+
#: functions/interface.functions.php:110
|
437 |
+
#, fuzzy, php-format
|
438 |
+
msgid "The following email address is not valid: %s."
|
439 |
+
msgid_plural "The following email addresses are not valid: %s."
|
440 |
+
msgstr[0] "La siguiente dirección de correo electrónico no es válida: %s."
|
441 |
+
msgstr[1] "La siguiente dirección de correo electrónico no es válida: %s."
|
442 |
+
|
443 |
+
#: functions/interface.functions.php:120
|
444 |
+
msgid "The last backup email failed to send. It's likely that the file is too large."
|
445 |
+
msgstr "No se pudo enviar el último correo electrónico con copia de seguridad. Es probable que el archivo sea demasiado grande."
|
446 |
+
|
447 |
+
#: functions/interface.functions.php:130
|
448 |
+
#, php-format
|
449 |
+
msgid "Your custom backups directory %1$s doesn't exist and can't be created, your backups will be saved to %2$s instead."
|
450 |
+
msgstr "No existe la carpeta de tus copias de seguridad %1$s y no se puede crear; tus copias se guardarán en %2$s."
|
451 |
+
|
452 |
+
#: functions/interface.functions.php:140
|
453 |
+
#, php-format
|
454 |
+
msgid "Your custom backups directory %1$s isn't writable, new backups will be saved to %2$s instead."
|
455 |
+
msgstr "La carpeta de tus copias de seguridad %1$s no tiene permisos de escritura; las nuevas copias se guardarán en %2$s."
|
456 |
+
|
457 |
+
#: functions/interface.functions.php:150
|
458 |
+
#, php-format
|
459 |
+
msgid "You have defined a custom exclude list but the following paths don't exist %s, are you sure you entered them correctly?"
|
460 |
+
msgstr "Has definido la lista de exclusión personalizada pero las rutas %s no existen; ¿estás seguro de que las escribiste correctamente?"
|
461 |
+
|
462 |
+
#: functions/interface.functions.php:160
|
463 |
+
msgid "BackUpWordPress detected issues with your last backup."
|
464 |
+
msgstr "BackUpWordPress ha detectado problemas con la última copia de seguridad."
|
465 |
+
|
466 |
+
#: functions/backup.actions.php:12
|
467 |
+
msgid "Dumping database"
|
468 |
+
msgstr "Guardando la base de datos"
|
469 |
+
|
470 |
+
#: functions/backup.actions.php:22
|
471 |
+
msgid "Creating zip archive"
|
472 |
+
msgstr "Creando archivo zip"
|
473 |
+
|
474 |
+
#: functions/backup.functions.php:19
|
475 |
+
msgid "Removing old backups"
|
476 |
+
msgstr "Borrando copias antiguas"
|
477 |
+
|
478 |
+
#: functions/backup.functions.php:147
|
479 |
+
#: functions/backup.functions.php:157
|
480 |
+
#, php-format
|
481 |
+
msgid "Backup of %s"
|
482 |
+
msgstr "Copia de %s"
|
483 |
+
|
484 |
+
#: functions/backup.functions.php:148
|
485 |
+
#, php-format
|
486 |
+
msgid ""
|
487 |
+
"BackUpWordPress has completed a backup of your site %1$s.\\n"
|
488 |
+
"\\n"
|
489 |
+
"The backup file should be attached to this email.\\n"
|
490 |
+
"\\n"
|
491 |
+
"You can also download the backup file by clicking the link below:\\n"
|
492 |
+
"\\n"
|
493 |
+
"%2$s\\n"
|
494 |
+
"\\n"
|
495 |
+
"Kind Regards\\n"
|
496 |
+
"\\n"
|
497 |
+
" The Happy BackUpWordPress Backup Emailing Robot"
|
498 |
+
msgstr ""
|
499 |
+
"BackUpWordpress ha completado una copia de seguridad de tu sito %1$s.\n"
|
500 |
+
"\n"
|
501 |
+
"El archivo de copia de seguridad se encuentra adjunto a este correo electrónico.\n"
|
502 |
+
"\n"
|
503 |
+
"También puedes descargarlo desde el enlace indicado más abajo:\n"
|
504 |
+
"\n"
|
505 |
+
"%2$s\n"
|
506 |
+
"\n"
|
507 |
+
"Un saludo\n"
|
508 |
+
"\n"
|
509 |
+
"El feliz robot de envíos de BackUpWordPress"
|
510 |
+
|
511 |
+
#: functions/backup.functions.php:158
|
512 |
+
#, php-format
|
513 |
+
msgid ""
|
514 |
+
"BackUpWordPress has completed a backup of your site %1$s.\\n"
|
515 |
+
"\\n"
|
516 |
+
"Unfortunately the backup file was too large to attach to this email.\\n"
|
517 |
+
"\\n"
|
518 |
+
"You can download the backup file by clicking the link below:\\n"
|
519 |
+
"\\n"
|
520 |
+
"%2$s\\n"
|
521 |
+
"\\n"
|
522 |
+
"Kind Regards\\n"
|
523 |
+
"\\n"
|
524 |
+
" The Happy BackUpWordPress Backup Emailing Robot"
|
525 |
+
msgstr ""
|
526 |
+
"BackUpWordpress ha completado una copia de seguridad de tu sito %1$s.\n"
|
527 |
+
"\n"
|
528 |
+
"Desafortunadamente el archivo de copia de seguridad creado es demasiado grande para enviar como archivo adjunto, pero puedes descargarlo desde enlace indicado aquí:\n"
|
529 |
+
"\n"
|
530 |
+
"%2$s\n"
|
531 |
+
"\n"
|
532 |
+
"Un saludo\n"
|
533 |
+
"\n"
|
534 |
+
"El feliz robot de envíos de BackUpWordPress"
|
535 |
+
|
536 |
+
#: functions/core.functions.php:339
|
537 |
+
#, php-format
|
538 |
+
msgid "This %s file ensures that other people cannot download your backup files."
|
539 |
+
msgstr "El archivo %s de seguridad hace que otras personas no pueden descargar tus copias de seguridad."
|
540 |
+
|
backupwordpress/languages/hmbkp-eu.mo
ADDED
Binary file
|
backupwordpress/languages/hmbkp-eu.po
ADDED
@@ -0,0 +1,432 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# Translation of 1.6.8 in Basque
|
2 |
+
# This file is distributed under the same license as the 1.6.8 package.
|
3 |
+
msgid ""
|
4 |
+
msgstr ""
|
5 |
+
"PO-Revision-Date: 2012-08-10 14:34:15+0000\n"
|
6 |
+
"MIME-Version: 1.0\n"
|
7 |
+
"Content-Type: text/plain; charset=UTF-8\n"
|
8 |
+
"Content-Transfer-Encoding: 8bit\n"
|
9 |
+
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
10 |
+
"X-Generator: GlotPress/0.1\n"
|
11 |
+
"Project-Id-Version: 1.6.8\n"
|
12 |
+
|
13 |
+
#: admin.menus.php:82
|
14 |
+
msgid "Help with translation"
|
15 |
+
msgstr "Itzulpenarekin lagundu"
|
16 |
+
|
17 |
+
#: admin.backup-button.php:3
|
18 |
+
msgid "cancel"
|
19 |
+
msgstr "ezeztatu"
|
20 |
+
|
21 |
+
#: admin.constants.php:23 admin.constants.php:26
|
22 |
+
msgid "Backup %s only, your %s won't be backed up. Defaults to %s."
|
23 |
+
msgstr "Honen %s babeskopia baino ez egin. %s honen babeskopiarik ez da egingo. %s lehenespen gisa."
|
24 |
+
|
25 |
+
#: admin.menus.php:65
|
26 |
+
msgid "The information below is for version %s. View the readme.txt file for help specific to version %s."
|
27 |
+
msgstr "Beheko informazioa %s bertsiorako da. %s bertsioko laguntza lortzeko, readme.txt fitxategia irakurri."
|
28 |
+
|
29 |
+
#: admin.menus.php:75
|
30 |
+
msgid "FAQ"
|
31 |
+
msgstr "MEG"
|
32 |
+
|
33 |
+
#: admin.constants.php:3 admin.menus.php:76 admin.settings.php:5
|
34 |
+
msgid "Constants"
|
35 |
+
msgstr "Iraunkorrak"
|
36 |
+
|
37 |
+
#: admin.menus.php:81
|
38 |
+
msgid "Support Forums"
|
39 |
+
msgstr "Laguntza-foroak"
|
40 |
+
|
41 |
+
#: admin.settings.php:5
|
42 |
+
msgid "You can define %s in your %s to control some settings. A full list of %s can be found in the %s. Defined settings will not be editable below."
|
43 |
+
msgstr "%s zehaztu dezakezu zeure %s ezarpen batzuk kontrolatzeko. %s-(r)en zerrenda oso bat aurki daiteke hemen: %s. Zehaztutako ezarpenak ezin izango dira azpian aldatu."
|
44 |
+
|
45 |
+
#: admin.settings.php:5
|
46 |
+
msgid "help panel"
|
47 |
+
msgstr "laguntza taula"
|
48 |
+
|
49 |
+
#: admin.settings.php:94
|
50 |
+
msgid "Save Changes"
|
51 |
+
msgstr "Aldaketak Gorde"
|
52 |
+
|
53 |
+
#: functions/core.functions.php:339
|
54 |
+
msgid "This %s file ensures that other people cannot download your backup files."
|
55 |
+
msgstr "Fitxategi %s hau, beste inork zeure babeskopiak jaisten ez dituelaz ziurtatzen da."
|
56 |
+
|
57 |
+
#: functions/interface.functions.php:48
|
58 |
+
msgid "Settings saved."
|
59 |
+
msgstr "Ezarpenak gordeta."
|
60 |
+
|
61 |
+
#: admin.actions.php:70
|
62 |
+
msgid "You have entered an invalid number of backups."
|
63 |
+
msgstr "Babeskopia kopuru oker bat idatzi duzu."
|
64 |
+
|
65 |
+
#: admin.actions.php:79
|
66 |
+
msgid "%s is an invalid email address."
|
67 |
+
msgstr "%s posta elektroniko helbide okerra da."
|
68 |
+
|
69 |
+
#: admin.actions.php:249 functions/interface.functions.php:89
|
70 |
+
#: functions/interface.functions.php:99 functions/interface.functions.php:109
|
71 |
+
#: functions/interface.functions.php:119 functions/interface.functions.php:129
|
72 |
+
#: functions/interface.functions.php:139 functions/interface.functions.php:149
|
73 |
+
msgid "BackUpWordPress has detected a problem."
|
74 |
+
msgstr "BackUpWordPress-ek arazo bat aurkitu du."
|
75 |
+
|
76 |
+
#: admin.actions.php:249
|
77 |
+
msgid "%s is returning a %s response which could mean cron jobs aren't getting fired properly. BackUpWordPress relies on wp-cron to run scheduled back ups. See the %s for more details."
|
78 |
+
msgstr "Hau (%s) honen (%s) erantzuna bilakatzen ari da, cron lanak zuzen bidaltzen ez direla esanahi ahal duena. BackUpWordPress wp-cron-en oinarritzen da antolatutako babeskopiak egiteko. %s ikusi xehetasun gehiagorako."
|
79 |
+
|
80 |
+
#: admin.backup-button.php:7
|
81 |
+
msgid "Back Up Now"
|
82 |
+
msgstr "Babeskopia Oraintxe Egin"
|
83 |
+
|
84 |
+
#: admin.backups-table.php:13
|
85 |
+
msgid "Size"
|
86 |
+
msgstr "Neurria"
|
87 |
+
|
88 |
+
#: admin.backups-table.php:14
|
89 |
+
msgid "Actions"
|
90 |
+
msgstr "Ekintzak"
|
91 |
+
|
92 |
+
#: admin.backups-table.php:21
|
93 |
+
msgid "Total %s"
|
94 |
+
msgstr "%s guztira"
|
95 |
+
|
96 |
+
#: admin.constants.php:3
|
97 |
+
msgid "You can %s any of the following %s in your %s to control advanced settings. %s. Defined %s will be highlighted."
|
98 |
+
msgstr "%s ahal duzu ondorengo edozein %s zeure %s ezarpen aurreratuak kontrolatzeko. %s. Zehaztutako %s nabarmenduta egongo dira."
|
99 |
+
|
100 |
+
#: admin.constants.php:3
|
101 |
+
msgid "The Codex can help"
|
102 |
+
msgstr "Kodizeak lagundu dezake"
|
103 |
+
|
104 |
+
#: admin.constants.php:8
|
105 |
+
msgid "The path to folder you would like to store your backup files in, defaults to %s."
|
106 |
+
msgstr "Zeure babeskopien fitxategiak gorde gura dituzun karpetaren bide-izena, %s da lehenespen gisa."
|
107 |
+
|
108 |
+
#: admin.constants.php:11
|
109 |
+
msgid "The path to your %s executable. Will be used for the %s part of the back up if available."
|
110 |
+
msgstr "Zeure egikaritutako %s-(e)rako bide-izena. Ahal bada, babeskopiaren %s atalerako erabiliko da. "
|
111 |
+
|
112 |
+
#: admin.constants.php:11 admin.constants.php:14 admin.constants.php:23
|
113 |
+
#: admin.constants.php:26 admin.status.php:14 admin.status.php:17
|
114 |
+
msgid "database"
|
115 |
+
msgstr "datu-basea"
|
116 |
+
|
117 |
+
#: admin.constants.php:14
|
118 |
+
msgid "The path to your %s executable. Will be used to zip up your %s and %s if available."
|
119 |
+
msgstr "Zeure egikaritutako %s-(e)rako bide-izena. Ahal bada, zeure %s eta %s konprimitzeko erabiliko da."
|
120 |
+
|
121 |
+
#: admin.constants.php:14 admin.constants.php:23 admin.constants.php:26
|
122 |
+
#: admin.status.php:14 admin.status.php:20
|
123 |
+
msgid "files"
|
124 |
+
msgstr "fitxategiak"
|
125 |
+
|
126 |
+
#: admin.constants.php:17
|
127 |
+
msgid "Completely disables the automatic back up. You can still back up using the \"Back Up Now\" button. Defaults to %s."
|
128 |
+
msgstr "Guztiz ezgaitzen du babeskopia automatikoa, baina \"Babeskopia Oraintxe Egin\" botoia erabiliz egin dezakezu. %s lehenespen gisa."
|
129 |
+
|
130 |
+
#: admin.constants.php:20
|
131 |
+
msgid "Number of backups to keep, older backups will be deleted automatically when a new backup is completed. Detaults to %s."
|
132 |
+
msgstr "Gorde behar den babeskopien kopurua. Babeskopia zaharrak automatikoki ezabatuko dira babeskopia berri bat sortzen denean. %s lehenespen gisa."
|
133 |
+
|
134 |
+
#: admin.constants.php:29
|
135 |
+
msgid "The time that the daily back up should run. Defaults to %s."
|
136 |
+
msgstr "Egunero babeskopia egiten hasten den ordua. %s lehenespen gisa."
|
137 |
+
|
138 |
+
#: admin.constants.php:32
|
139 |
+
msgid "Attempt to email a copy of your backups. Value should be email address to send backups to. Defaults to %s."
|
140 |
+
msgstr "Zeure babeskopien kopia bat posta elektronikora bidaltzen saiatu. Zeure posta elektronikoa sartu babeskopiak jasotzeko. %s lehenespen gisa."
|
141 |
+
|
142 |
+
#: admin.constants.php:35
|
143 |
+
msgid "Comma separated list of files or directories to exclude, the backups directory is automatically excluded."
|
144 |
+
msgstr "Komez bananduriko baztertzeko fitxategi eta direktorio bide-izenen zerrenda. Babeskopien direktorioa automatikoki baztertzen da."
|
145 |
+
|
146 |
+
#: admin.constants.php:38
|
147 |
+
msgid "The capability to use when calling %s. Defaults to %s."
|
148 |
+
msgstr "%s deitzerakoan erabiltzeko duen gaitasuna. %s lehenespen gisa."
|
149 |
+
|
150 |
+
#: admin.menus.php:10 admin.page.php:7
|
151 |
+
msgid "Manage Backups"
|
152 |
+
msgstr "Babeskopiak Kudeatu"
|
153 |
+
|
154 |
+
#: admin.menus.php:10 admin.menus.php:34
|
155 |
+
msgid "Backups"
|
156 |
+
msgstr "Babeskopiak"
|
157 |
+
|
158 |
+
#: admin.menus.php:65
|
159 |
+
msgid "You are not using the latest stable version of BackUpWordPress"
|
160 |
+
msgstr "Ez zaude BackUpWordPress-eko azken bertsioa erabiltzen"
|
161 |
+
|
162 |
+
#: admin.menus.php:79
|
163 |
+
msgid "For more information:"
|
164 |
+
msgstr "Informazio gehiagorako:"
|
165 |
+
|
166 |
+
#: admin.page.php:11 admin.settings.php:3
|
167 |
+
msgid "Settings"
|
168 |
+
msgstr "Ezarpenak"
|
169 |
+
|
170 |
+
#: admin.page.php:23
|
171 |
+
msgid "You need to fix the issues detailed above before BackUpWordPress can start."
|
172 |
+
msgstr "Aurretiaz azaldutako arazoak konpontzea beharrezkoa da BackUpWordPress martxan jartzeko."
|
173 |
+
|
174 |
+
#: admin.page.php:29
|
175 |
+
msgid "If you need help getting things working you are more than welcome to email us at %s and we'll do what we can to help."
|
176 |
+
msgstr "Laguntzarik behar baduzu gauzak martxan jartzeko, %s-era posta elektroniko bat bidal diezagukezu eta ahal dugun guztia egingo dugu laguntzeko."
|
177 |
+
|
178 |
+
#: admin.settings.php:16
|
179 |
+
msgid "Automatic Backups"
|
180 |
+
msgstr "Babeskopia automatikoak"
|
181 |
+
|
182 |
+
#: admin.settings.php:22
|
183 |
+
msgid "Backup my site automatically."
|
184 |
+
msgstr "Neure gunearen babeskopia automatikoki egin."
|
185 |
+
|
186 |
+
#: admin.settings.php:27
|
187 |
+
msgid "No automatic backups."
|
188 |
+
msgstr "Babeskopia automatikorik ez."
|
189 |
+
|
190 |
+
#: admin.settings.php:36
|
191 |
+
msgid "Frequency of backups"
|
192 |
+
msgstr "Babeskopien maiztasuna"
|
193 |
+
|
194 |
+
#: admin.settings.php:40
|
195 |
+
msgid "Automatic backups will occur"
|
196 |
+
msgstr "Babeskopia automatikoak egingo dira"
|
197 |
+
|
198 |
+
#: admin.settings.php:43
|
199 |
+
msgid "Daily"
|
200 |
+
msgstr "Egunero"
|
201 |
+
|
202 |
+
#: admin.settings.php:44
|
203 |
+
msgid "Weekly"
|
204 |
+
msgstr "Astero"
|
205 |
+
|
206 |
+
#: admin.settings.php:45
|
207 |
+
msgid "Fortnightly"
|
208 |
+
msgstr "Hamabost egunez behin"
|
209 |
+
|
210 |
+
#: admin.settings.php:46
|
211 |
+
msgid "Monthly"
|
212 |
+
msgstr "Hilero"
|
213 |
+
|
214 |
+
#: admin.settings.php:55
|
215 |
+
msgid "What to Backup"
|
216 |
+
msgstr "Zeren Babeskopia"
|
217 |
+
|
218 |
+
#: admin.settings.php:59
|
219 |
+
msgid "Backup my"
|
220 |
+
msgstr "Honen babeskopia egin"
|
221 |
+
|
222 |
+
#: admin.settings.php:62
|
223 |
+
msgid "database & files"
|
224 |
+
msgstr "datu-baseak eta fitxategiak"
|
225 |
+
|
226 |
+
#: admin.settings.php:63
|
227 |
+
msgid "database only"
|
228 |
+
msgstr "datu-basea bakarrik"
|
229 |
+
|
230 |
+
#: admin.settings.php:64
|
231 |
+
msgid "files only"
|
232 |
+
msgstr "fitxategiak bakarrik"
|
233 |
+
|
234 |
+
#: admin.settings.php:72
|
235 |
+
msgid "Number of backups"
|
236 |
+
msgstr "Babeskopia kopurua"
|
237 |
+
|
238 |
+
#: admin.settings.php:73
|
239 |
+
msgid "The last %s backups will be stored on the server."
|
240 |
+
msgstr "Azkenengo %s babeskopiak zerbitzarian gordeko dira."
|
241 |
+
|
242 |
+
#: admin.settings.php:77
|
243 |
+
msgid "Email backups"
|
244 |
+
msgstr "Babeskopiak posta elektronikoaz bidali"
|
245 |
+
|
246 |
+
#: admin.settings.php:78
|
247 |
+
msgid "A copy of the backup file will be emailed to this address. Disabled if left blank."
|
248 |
+
msgstr "Babeskopiaren kopia bat posta elektroniko honetara bidaliko da. Ezgaituta hutsik egotekotan."
|
249 |
+
|
250 |
+
#: admin.settings.php:82
|
251 |
+
msgid "Excludes"
|
252 |
+
msgstr "Baztertuak"
|
253 |
+
|
254 |
+
#: admin.settings.php:85
|
255 |
+
msgid "A comma separated list of file and directory paths that you do <strong>not</strong> want to backup."
|
256 |
+
msgstr "Babeskopia egin gura <strong>ez</strong> duzun fitxategi eta direktorio bide-izenen zerrenda, komez banandurikoa."
|
257 |
+
|
258 |
+
#: admin.settings.php:86
|
259 |
+
msgid "e.g."
|
260 |
+
msgstr "adibidez"
|
261 |
+
|
262 |
+
#: admin.status.php:9
|
263 |
+
msgid "Automatic backups are %s."
|
264 |
+
msgstr "%s babeskopia automatikoak dira."
|
265 |
+
|
266 |
+
#: admin.status.php:9
|
267 |
+
msgid "disabled"
|
268 |
+
msgstr "ezgaituta"
|
269 |
+
|
270 |
+
#: admin.status.php:14
|
271 |
+
msgid "&"
|
272 |
+
msgstr "eta"
|
273 |
+
|
274 |
+
#: admin.status.php:25
|
275 |
+
msgid "Your %s will be automatically backed up <code>%s</code>. The next backup will occur at %s on %s and be saved to %s."
|
276 |
+
msgstr "%s babeskopia <code>%s</code> automatikoki egingo da. Hurrengo babeskopia %s-(r)etan, %s-(e)an eta %s-(e)n gordeko da."
|
277 |
+
|
278 |
+
#: admin.status.php:25
|
279 |
+
msgid "It's currently %s"
|
280 |
+
msgstr "Orain %s da"
|
281 |
+
|
282 |
+
#: admin.status.php:31
|
283 |
+
msgid "Your site is %s. Backups will be compressed and should be smaller than this."
|
284 |
+
msgstr "Zeure gunea %s da. Babeskopiak konprimatu eta hau baino txikiagoak izan dira."
|
285 |
+
|
286 |
+
#: admin.status.php:31
|
287 |
+
msgid "Calculating Size..."
|
288 |
+
msgstr "Neurria Kalkulatzen..."
|
289 |
+
|
290 |
+
#: admin.status.php:34
|
291 |
+
msgid "A copy of each backup will be emailed to %s."
|
292 |
+
msgstr "Babeskopia bakoitzaren kopia bat %s posta elektronikora bidaliko da."
|
293 |
+
|
294 |
+
#: admin.status.php:38
|
295 |
+
msgid "The following paths will be excluded from your backups %s."
|
296 |
+
msgstr "Hurrengo bide-izenak babeskopiatik kanpo geratuko dira: %s."
|
297 |
+
|
298 |
+
#: functions/backup.actions.php:12
|
299 |
+
msgid "Dumping database"
|
300 |
+
msgstr "Datu-basera bidaltzen"
|
301 |
+
|
302 |
+
#: functions/backup.actions.php:22
|
303 |
+
msgid "Creating zip archive"
|
304 |
+
msgstr "Zip fitxategia sortzen"
|
305 |
+
|
306 |
+
#: functions/backup.functions.php:19
|
307 |
+
msgid "Removing old backups"
|
308 |
+
msgstr "Babeskopia zaharrak ezabatzen"
|
309 |
+
|
310 |
+
#: functions/backup.functions.php:147 functions/backup.functions.php:157
|
311 |
+
msgid "Backup of %s"
|
312 |
+
msgstr "%s-(r)en babeskopia"
|
313 |
+
|
314 |
+
#: functions/backup.functions.php:148
|
315 |
+
msgid ""
|
316 |
+
"BackUpWordPress has completed a backup of your site %s.\n"
|
317 |
+
"\n"
|
318 |
+
"The backup file should be attached to this email.\n"
|
319 |
+
"\n"
|
320 |
+
"You can also download the backup file by clicking the link below:\n"
|
321 |
+
"\n"
|
322 |
+
"%s\n"
|
323 |
+
"\n"
|
324 |
+
"Kind Regards\n"
|
325 |
+
"\n"
|
326 |
+
" The Happy BackUpWordPress Backup Emailing Robot"
|
327 |
+
msgstr ""
|
328 |
+
"BackUpWordPress-ek zeure %s gunearen babeskopia bat egiten amaitu du.\n"
|
329 |
+
"\n"
|
330 |
+
"Babeskopiaren fitxategia posta elektroniko honetara erantsiko da.\n"
|
331 |
+
"\n"
|
332 |
+
"Azpian dagoen estekan klik eginez, babeskopiaren fitxategia jaitsi dezakezu baita ere:\n"
|
333 |
+
"\n"
|
334 |
+
"%s\n"
|
335 |
+
"\n"
|
336 |
+
"Agur bero bat\n"
|
337 |
+
"\n"
|
338 |
+
"Posta Elektronikoak Bidaltzen Dituen BackUpWordPress-eko Errobot Zoriontsua"
|
339 |
+
|
340 |
+
#: functions/backup.functions.php:158
|
341 |
+
msgid ""
|
342 |
+
"BackUpWordPress has completed a backup of your site %s.\n"
|
343 |
+
"\n"
|
344 |
+
"Unfortunately the backup file was too large to attach to this email.\n"
|
345 |
+
"\n"
|
346 |
+
"You can download the backup file by clicking the link below:\n"
|
347 |
+
"\n"
|
348 |
+
"%s\n"
|
349 |
+
"\n"
|
350 |
+
"Kind Regards\n"
|
351 |
+
"\n"
|
352 |
+
" The Happy BackUpWordPress Backup Emailing Robot"
|
353 |
+
msgstr ""
|
354 |
+
"BackUpWordPress-ek zeure %s gunearen babeskopia bat egiten amaitu du.\n"
|
355 |
+
"\n"
|
356 |
+
"Zoritxarrez, babeskopiaren fitxategia handiegia da posta elektronikora eransteko.\n"
|
357 |
+
"\n"
|
358 |
+
"Azpian dagoen estekan klik eginez, babeskopiaren fitxategia jaitsi dezakezu:\n"
|
359 |
+
"\n"
|
360 |
+
"%s\n"
|
361 |
+
"\n"
|
362 |
+
"Agur bero bat\n"
|
363 |
+
"\n"
|
364 |
+
"Posta Elektronikoak Bidaltzen Dituen BackUpWordPress-eko Errobot Zoriontsua"
|
365 |
+
|
366 |
+
#: functions/interface.functions.php:25
|
367 |
+
msgid "Download"
|
368 |
+
msgstr "Jaitsi"
|
369 |
+
|
370 |
+
#: functions/interface.functions.php:26
|
371 |
+
msgid "Delete"
|
372 |
+
msgstr "Ezabatu"
|
373 |
+
|
374 |
+
#: functions/interface.functions.php:67 functions/interface.functions.php:79
|
375 |
+
msgid "BackUpWordPress is almost ready."
|
376 |
+
msgstr "BackUpWordPress ia prest dago."
|
377 |
+
|
378 |
+
#: functions/interface.functions.php:67
|
379 |
+
msgid "The backups directory can't be created because your %s directory isn't writable, run %s or %s or create the folder yourself."
|
380 |
+
msgstr "Babeskopien direktorioa ezin da sortu %s direktorioa idazgarria ez delako, %s edo %s egikaritu edo sortu karpeta zeure kabuz."
|
381 |
+
|
382 |
+
#: functions/interface.functions.php:79
|
383 |
+
msgid "Your backups directory isn't writable. run %s or %s or set the permissions yourself."
|
384 |
+
msgstr "Zeure babeskopien direktorioa ez da idazgarria. %s edo %s egikaritu edo baimenak zeure kabuz ezarri."
|
385 |
+
|
386 |
+
#: functions/interface.functions.php:89
|
387 |
+
msgid " %s is running in %s. Please contact your host and ask them to disable %s."
|
388 |
+
msgstr "%s %s-(e) egikaritzen ari da. Mesedez zeure ostalariarekin harremanetan jarri eta %s ezgaitzeko eskatu."
|
389 |
+
|
390 |
+
#: functions/interface.functions.php:99
|
391 |
+
msgid "You have both %s and %s defined so there isn't anything to back up."
|
392 |
+
msgstr "%s eta %s aukeratuak, beraz, ez dago ezeren babeskopiarik egiterik."
|
393 |
+
|
394 |
+
#: functions/interface.functions.php:109
|
395 |
+
msgid "The following email address's are not valid: %s."
|
396 |
+
msgstr "Hurrengo posta elektroniko helbideak ez dira zuzenak: %s."
|
397 |
+
|
398 |
+
#: functions/interface.functions.php:119
|
399 |
+
msgid "The last backup email failed to send. It's likely that the file is too large."
|
400 |
+
msgstr "Azkenengo babeskopiaren bidalketak huts egin du. Fitxategiaren neurria oso handia delako izan daiteke."
|
401 |
+
|
402 |
+
#: functions/interface.functions.php:129
|
403 |
+
msgid "Your custom backups directory %s doesn't exist and can't be created, your backups will be saved to %s instead."
|
404 |
+
msgstr "Babeskopiak gordetzeko ezarri duzun %s direktorioa ez da existitzen eta ezin da sortu, beraz, zeure babeskopiak hemen gordeko dira: %s."
|
405 |
+
|
406 |
+
#: functions/interface.functions.php:139
|
407 |
+
msgid "Your custom backups directory %s isn't writable, new backups will be saved to %s instead."
|
408 |
+
msgstr "Babeskopiak gordetzeko ezarri duzun %s direktorioa ez da idazgarria, beraz, babeskopia berriak hemen gordeko dira: %s. "
|
409 |
+
|
410 |
+
#: functions/interface.functions.php:149
|
411 |
+
msgid "You have defined a custom exclude list but the following paths don't exist %s, are you sure you entered them correctly?"
|
412 |
+
msgstr "Bazterketa-zerrenda egin duzu, baina hurrengo bide-izenak ez dira existitzen %s, zuzen idatzi dituzula ziur zaude?"
|
413 |
+
|
414 |
+
#: functions/interface.functions.php:159
|
415 |
+
msgid "BackUpWordPress detected issues with your last backup."
|
416 |
+
msgstr "BackUpWordPress-ek arazoak aurkitu ditu zeure azken babeskopian."
|
417 |
+
|
418 |
+
#: hm-backup/hm-backup.php:532
|
419 |
+
msgid "The backup file was not created"
|
420 |
+
msgstr "Babeskopiaren fitxategia ez da sortu"
|
421 |
+
|
422 |
+
#: hm-backup/hm-backup.php:603
|
423 |
+
msgid "The following files are unreadable and couldn't be backed up: "
|
424 |
+
msgstr "Hurrengo fitxategiak irakurtezinak dira eta ezin da hauen babeskopiarik egin:"
|
425 |
+
|
426 |
+
#: plugin.php:47
|
427 |
+
msgid "BackUpWordPress requires PHP version 5.2.4 or greater."
|
428 |
+
msgstr "BackUpWordPress-ek PHP-eko 5.2.4 bertsioa edo hobeagoa behar du."
|
429 |
+
|
430 |
+
#: plugin.php:58
|
431 |
+
msgid "BackUpWordPress requires WordPress version %s."
|
432 |
+
msgstr "BackUpWordPress-ek WordPress-eko %s bertsioa behar du."
|
backupwordpress/languages/hmbkp-fr_FR.mo
ADDED
Binary file
|
backupwordpress/languages/hmbkp-fr_FR.po
ADDED
@@ -0,0 +1,542 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# Translation of 1.6.8 in French (France)
|
2 |
+
# This file is distributed under the same license as the 1.6.8 package.
|
3 |
+
msgid ""
|
4 |
+
msgstr ""
|
5 |
+
"Project-Id-Version: 1.6.8\n"
|
6 |
+
"Report-Msgid-Bugs-To: \n"
|
7 |
+
"POT-Creation-Date: 2012-08-14 14:40+0100\n"
|
8 |
+
"PO-Revision-Date: 2012-08-14 14:41+0100\n"
|
9 |
+
"Last-Translator: Flo Edelmann <florian-edelmann@online.de>\n"
|
10 |
+
"Language-Team: \n"
|
11 |
+
"Language: \n"
|
12 |
+
"MIME-Version: 1.0\n"
|
13 |
+
"Content-Type: text/plain; charset=UTF-8\n"
|
14 |
+
"Content-Transfer-Encoding: 8bit\n"
|
15 |
+
"Plural-Forms: nplurals=2; plural=n > 1;\n"
|
16 |
+
"X-Generator: GlotPress/0.1\n"
|
17 |
+
"X-Poedit-Language: French\n"
|
18 |
+
"X-Poedit-Country: FRANCE\n"
|
19 |
+
"X-Poedit-SourceCharset: utf-8\n"
|
20 |
+
"X-Poedit-KeywordsList: __;_e;_n:1,2\n"
|
21 |
+
"X-Poedit-Basepath: ..\n"
|
22 |
+
"X-Poedit-SearchPath-0: .\n"
|
23 |
+
|
24 |
+
#: admin.settings.php:3
|
25 |
+
#: admin.page.php:11
|
26 |
+
msgid "Settings"
|
27 |
+
msgstr "Paramètres"
|
28 |
+
|
29 |
+
#: admin.settings.php:5
|
30 |
+
#, php-format
|
31 |
+
msgid "You can define %1$s in your %2$s to control some settings. A full list of %3$s can be found in the %4$s. Defined settings will not be editable below."
|
32 |
+
msgstr "Vous pouvez définir des %1$s dans votre %2$s pour contrôler certains paramètres. Une liste complète des %3$s est disponible dans le %4$s. La valeur des paramètres ne peut pas être modifié ici."
|
33 |
+
|
34 |
+
#: admin.settings.php:5
|
35 |
+
#: admin.constants.php:3
|
36 |
+
#: admin.menus.php:76
|
37 |
+
msgid "Constants"
|
38 |
+
msgstr "Constantes"
|
39 |
+
|
40 |
+
#: admin.settings.php:5
|
41 |
+
msgid "help panel"
|
42 |
+
msgstr "page d'aide"
|
43 |
+
|
44 |
+
#: admin.settings.php:16
|
45 |
+
msgid "Automatic Backups"
|
46 |
+
msgstr "Sauvegardes automatiques"
|
47 |
+
|
48 |
+
#: admin.settings.php:22
|
49 |
+
msgid "Backup my site automatically."
|
50 |
+
msgstr "Sauvegarder mon site automatiquement."
|
51 |
+
|
52 |
+
#: admin.settings.php:27
|
53 |
+
msgid "No automatic backups."
|
54 |
+
msgstr "Pas de sauvegardes automatiques."
|
55 |
+
|
56 |
+
#: admin.settings.php:36
|
57 |
+
msgid "Frequency of backups"
|
58 |
+
msgstr "Fréquences des sauvegardes"
|
59 |
+
|
60 |
+
#: admin.settings.php:40
|
61 |
+
msgid "Automatic backups will occur"
|
62 |
+
msgstr "Les sauvegardes automatiques auront lieu"
|
63 |
+
|
64 |
+
#: admin.settings.php:43
|
65 |
+
msgid "Daily"
|
66 |
+
msgstr "Quotidiennement"
|
67 |
+
|
68 |
+
#: admin.settings.php:44
|
69 |
+
msgid "Weekly"
|
70 |
+
msgstr "Hebdomadairement"
|
71 |
+
|
72 |
+
#: admin.settings.php:45
|
73 |
+
msgid "Fortnightly"
|
74 |
+
msgstr "Tous les quinze jours"
|
75 |
+
|
76 |
+
#: admin.settings.php:46
|
77 |
+
msgid "Monthly"
|
78 |
+
msgstr "Mensuellement"
|
79 |
+
|
80 |
+
#: admin.settings.php:55
|
81 |
+
msgid "What to Backup"
|
82 |
+
msgstr "Étendue de la sauvegarde"
|
83 |
+
|
84 |
+
#: admin.settings.php:59
|
85 |
+
msgid "Backup my"
|
86 |
+
msgstr "Sauvegardez"
|
87 |
+
|
88 |
+
#: admin.settings.php:62
|
89 |
+
msgid "database & files"
|
90 |
+
msgstr "la base de données et les fichiers"
|
91 |
+
|
92 |
+
#: admin.settings.php:63
|
93 |
+
msgid "database only"
|
94 |
+
msgstr "la base de données seule"
|
95 |
+
|
96 |
+
#: admin.settings.php:64
|
97 |
+
msgid "files only"
|
98 |
+
msgstr "les fichiers seuls"
|
99 |
+
|
100 |
+
#: admin.settings.php:72
|
101 |
+
msgid "Number of backups"
|
102 |
+
msgstr "Nombre de sauvegardes"
|
103 |
+
|
104 |
+
#: admin.settings.php:73
|
105 |
+
#, php-format
|
106 |
+
msgid "The last %s backups will be stored on the server."
|
107 |
+
msgstr "Les %s dernières sauvegardes seront conservées sur le serveur."
|
108 |
+
|
109 |
+
#: admin.settings.php:77
|
110 |
+
msgid "Email backups"
|
111 |
+
msgstr "Envoi par courriel"
|
112 |
+
|
113 |
+
#: admin.settings.php:78
|
114 |
+
msgid "A copy of the backup file will be emailed to this address. Disabled if left blank."
|
115 |
+
msgstr "Une copie de la sauvegarde sera envoyée par courriel à cette adresse. Laisser blanc pour désactiver l'envoi."
|
116 |
+
|
117 |
+
#: admin.settings.php:82
|
118 |
+
msgid "Excludes"
|
119 |
+
msgstr "Exclusions"
|
120 |
+
|
121 |
+
#: admin.settings.php:85
|
122 |
+
msgid "A comma separated list of file and directory paths that you do <strong>not</strong> want to backup."
|
123 |
+
msgstr "Liste de fichiers ou de répertoires, séparés par des virgules, que vous ne voulez <strong>pas</strong> sauvegarder."
|
124 |
+
|
125 |
+
#: admin.settings.php:86
|
126 |
+
#: admin.constants.php:8
|
127 |
+
#: admin.constants.php:11
|
128 |
+
#: admin.constants.php:14
|
129 |
+
#: admin.constants.php:17
|
130 |
+
#: admin.constants.php:20
|
131 |
+
#: admin.constants.php:23
|
132 |
+
#: admin.constants.php:26
|
133 |
+
#: admin.constants.php:29
|
134 |
+
#: admin.constants.php:32
|
135 |
+
#: admin.constants.php:35
|
136 |
+
#: admin.constants.php:38
|
137 |
+
#: admin.constants.php:41
|
138 |
+
msgid "e.g."
|
139 |
+
msgstr "exemple :"
|
140 |
+
|
141 |
+
#: admin.settings.php:94
|
142 |
+
msgid "Save Changes"
|
143 |
+
msgstr "Sauver les modifications"
|
144 |
+
|
145 |
+
#: admin.backups-table.php:12
|
146 |
+
#, php-format
|
147 |
+
msgid "1 backup completed"
|
148 |
+
msgid_plural "%d backups completed"
|
149 |
+
msgstr[0] ""
|
150 |
+
msgstr[1] ""
|
151 |
+
|
152 |
+
#: admin.backups-table.php:13
|
153 |
+
msgid "Size"
|
154 |
+
msgstr "Taille"
|
155 |
+
|
156 |
+
#: admin.backups-table.php:14
|
157 |
+
msgid "Actions"
|
158 |
+
msgstr "Actions"
|
159 |
+
|
160 |
+
#: admin.backups-table.php:20
|
161 |
+
#, php-format
|
162 |
+
msgid "Only the most recent backup will be saved"
|
163 |
+
msgid_plural "The %d most recent backups will be saved"
|
164 |
+
msgstr[0] ""
|
165 |
+
msgstr[1] ""
|
166 |
+
|
167 |
+
#: admin.backups-table.php:21
|
168 |
+
#, php-format
|
169 |
+
msgid "Total %s"
|
170 |
+
msgstr "%s au total"
|
171 |
+
|
172 |
+
#: admin.page.php:7
|
173 |
+
#: admin.menus.php:10
|
174 |
+
msgid "Manage Backups"
|
175 |
+
msgstr "Gestion des sauvegardes"
|
176 |
+
|
177 |
+
#: admin.page.php:23
|
178 |
+
msgid "You need to fix the issues detailed above before BackUpWordPress can start."
|
179 |
+
msgstr "Vous devez régler les problèmes ci dessus pour que BackUpWordPress puisse démarrer."
|
180 |
+
|
181 |
+
#: admin.page.php:29
|
182 |
+
#, php-format
|
183 |
+
msgid "If you need help getting things working you are more than welcome to email us at %s and we'll do what we can to help."
|
184 |
+
msgstr "Si vous avez besoin d'aide pour tout faire fonctionner, nous vous engourageons à nous écrire à %s et nous ferrons notre possible pour vous aider."
|
185 |
+
|
186 |
+
#: admin.backup-button.php:3
|
187 |
+
msgid "cancel"
|
188 |
+
msgstr "Abandon"
|
189 |
+
|
190 |
+
#: admin.backup-button.php:7
|
191 |
+
msgid "Back Up Now"
|
192 |
+
msgstr "Sauvegarder maintenant"
|
193 |
+
|
194 |
+
#: admin.constants.php:3
|
195 |
+
#, php-format
|
196 |
+
msgid "You can %1$s any of the following %2$s in your %3$s to control advanced settings. %4$s. Defined %5$s will be highlighted."
|
197 |
+
msgstr "Vous pouvez %1$s chacun des éléments suivants %2$s dans votre %3$s pour contrôler les options avancées. %4$s. Le %5$s défini sera mis en évidence."
|
198 |
+
|
199 |
+
#: admin.constants.php:3
|
200 |
+
msgid "The Codex can help"
|
201 |
+
msgstr "Le Codex peut vous aider"
|
202 |
+
|
203 |
+
#: admin.constants.php:8
|
204 |
+
#, php-format
|
205 |
+
msgid "The path to folder you would like to store your backup files in, defaults to %s."
|
206 |
+
msgstr "Le chemin du répertoire où vous souhaitez stocker vos sauvegardes, par défaut : %s"
|
207 |
+
|
208 |
+
#: admin.constants.php:11
|
209 |
+
#, php-format
|
210 |
+
msgid "The path to your %1$s executable. Will be used for the %2$s part of the back up if available."
|
211 |
+
msgstr "Chemin vers votre exécutable %1$s. Il sera utilisé pour réaliser la partie %2$s de la sauvegarde s'il est disponible."
|
212 |
+
|
213 |
+
#: admin.constants.php:11
|
214 |
+
#: admin.constants.php:14
|
215 |
+
#: admin.constants.php:23
|
216 |
+
#: admin.constants.php:26
|
217 |
+
#: admin.status.php:14
|
218 |
+
#: admin.status.php:18
|
219 |
+
msgid "database"
|
220 |
+
msgstr "base de données"
|
221 |
+
|
222 |
+
#: admin.constants.php:14
|
223 |
+
#, php-format
|
224 |
+
msgid "The path to your %1$s executable. Will be used to zip up your %2$s and %3$s if available."
|
225 |
+
msgstr "Chemin vers votre exécutable %1$s. Il sera utilisé pour compresser vos %2$s et votre %3$s s'il est disponible."
|
226 |
+
|
227 |
+
#: admin.constants.php:14
|
228 |
+
#: admin.constants.php:23
|
229 |
+
#: admin.constants.php:26
|
230 |
+
#: admin.status.php:14
|
231 |
+
#: admin.status.php:22
|
232 |
+
msgid "files"
|
233 |
+
msgstr "fichiers"
|
234 |
+
|
235 |
+
#: admin.constants.php:17
|
236 |
+
#, php-format
|
237 |
+
msgid "Completely disables the automatic back up. You can still back up using the \"Back Up Now\" button. Defaults to %s."
|
238 |
+
msgstr "Désactive totalement la sauvegarde automatique. Vous pouvez toujours faire une sauvagarde en utilisant le bouton \"Sauvegarder maintenant\". Par défaut à %s."
|
239 |
+
|
240 |
+
#: admin.constants.php:20
|
241 |
+
#, fuzzy, php-format
|
242 |
+
msgid "Number of backups to keep, older backups will be deleted automatically when a new backup is completed. Defaults to %s."
|
243 |
+
msgstr "Nombre de sauvegardes à conserver, les plus anciennes sont automatiquement effacées quand une nouvelle sauvegarde est effectuée. Par défaut à %s."
|
244 |
+
|
245 |
+
#: admin.constants.php:23
|
246 |
+
#: admin.constants.php:26
|
247 |
+
#, php-format
|
248 |
+
msgid "Backup %1$s only, your %2$s won't be backed up. Defaults to %3$s."
|
249 |
+
msgstr "Sauvegarde %1$s seulement, vos %2$s ne seront pas sauvegardés. Par défaut à %3$s."
|
250 |
+
|
251 |
+
#: admin.constants.php:29
|
252 |
+
#, php-format
|
253 |
+
msgid "The time that the daily back up should run. Defaults to %s."
|
254 |
+
msgstr "Heure à laquelle la sauvegarde quotidienne à lieu. Par défaut à %s heures."
|
255 |
+
|
256 |
+
#: admin.constants.php:32
|
257 |
+
#, php-format
|
258 |
+
msgid "Attempt to email a copy of your backups. Value should be email address to send backups to. Defaults to %s."
|
259 |
+
msgstr "Tente d'envoyer une copie de la sauvegarde par e-mail. Saisissez l'adresse e-mail où envoyer. Par défaut : %s."
|
260 |
+
|
261 |
+
#: admin.constants.php:35
|
262 |
+
msgid "Comma separated list of files or directories to exclude, the backups directory is automatically excluded."
|
263 |
+
msgstr "Liste des fichiers ou des répertoires à exclure, le répertoire des sauvegardes est automatiquement exclu."
|
264 |
+
|
265 |
+
#: admin.constants.php:38
|
266 |
+
#, php-format
|
267 |
+
msgid "The capability to use when calling %1$s. Defaults to %2$s."
|
268 |
+
msgstr "Capacité à utiliser lors de l'appel à %1$s. La valeur par défaut est %2$s."
|
269 |
+
|
270 |
+
#: admin.constants.php:41
|
271 |
+
#, fuzzy, php-format
|
272 |
+
msgid "The root directory that is backed up. Defaults to %s."
|
273 |
+
msgstr "Heure à laquelle la sauvegarde quotidienne à lieu. Par défaut à %s heures."
|
274 |
+
|
275 |
+
#: admin.actions.php:70
|
276 |
+
msgid "You have entered an invalid number of backups."
|
277 |
+
msgstr "Vous avez saisi un nombre de sauvegarde invalide."
|
278 |
+
|
279 |
+
#: admin.actions.php:79
|
280 |
+
#, php-format
|
281 |
+
msgid "%s is an invalid email address."
|
282 |
+
msgstr "%s est une adresse de courriel invalide."
|
283 |
+
|
284 |
+
#: admin.actions.php:249
|
285 |
+
#: functions/interface.functions.php:89
|
286 |
+
#: functions/interface.functions.php:99
|
287 |
+
#: functions/interface.functions.php:110
|
288 |
+
#: functions/interface.functions.php:120
|
289 |
+
#: functions/interface.functions.php:130
|
290 |
+
#: functions/interface.functions.php:140
|
291 |
+
#: functions/interface.functions.php:150
|
292 |
+
msgid "BackUpWordPress has detected a problem."
|
293 |
+
msgstr "BackUpWordPress a détecté un problème."
|
294 |
+
|
295 |
+
#: admin.actions.php:249
|
296 |
+
#, php-format
|
297 |
+
msgid "%1$s is returning a %2$s response which could mean cron jobs aren't getting fired properly. BackUpWordPress relies on wp-cron to run scheduled back ups. See the %3$s for more details."
|
298 |
+
msgstr "%1$s a renvoyé la réponse %2$s qui semble indiquer que les travaux cron ne s'achèvent pas correctement. BackUpWordPress ne fonctionne que si wp-cron peux lancer les sauvegardes programmées. Voir la %3$s pour plus de détails."
|
299 |
+
|
300 |
+
#: admin.menus.php:10
|
301 |
+
#: admin.menus.php:34
|
302 |
+
msgid "Backups"
|
303 |
+
msgstr "Sauvegardes"
|
304 |
+
|
305 |
+
#: admin.menus.php:65
|
306 |
+
msgid "You are not using the latest stable version of BackUpWordPress"
|
307 |
+
msgstr "Vous n'utilisez pas la dernière version de BackUpWordPress."
|
308 |
+
|
309 |
+
#: admin.menus.php:65
|
310 |
+
#, php-format
|
311 |
+
msgid "The information below is for version %1$s. View the <code>readme.txt</code> file for help specific to version %2$s."
|
312 |
+
msgstr "Les informations qui suivent concernent la version %1$s. Lisez le fichier <code>readme.txt</code> pour une aide spécifique à la version %2$s."
|
313 |
+
|
314 |
+
#: admin.menus.php:75
|
315 |
+
msgid "FAQ"
|
316 |
+
msgstr "FAQ"
|
317 |
+
|
318 |
+
#: admin.menus.php:79
|
319 |
+
msgid "For more information:"
|
320 |
+
msgstr "Pour plus d'informations :"
|
321 |
+
|
322 |
+
#: admin.menus.php:81
|
323 |
+
msgid "Support Forums"
|
324 |
+
msgstr "Forums de support"
|
325 |
+
|
326 |
+
#: admin.menus.php:82
|
327 |
+
msgid "Help with translation"
|
328 |
+
msgstr "Aide pour la traduction"
|
329 |
+
|
330 |
+
#: plugin.php:47
|
331 |
+
msgid "BackUpWordPress requires PHP version 5.2.4 or greater."
|
332 |
+
msgstr "BackUpWordPress nécessite PHP version 5.2.4 ou plus."
|
333 |
+
|
334 |
+
#: plugin.php:58
|
335 |
+
#, php-format
|
336 |
+
msgid "BackUpWordPress requires WordPress version %s."
|
337 |
+
msgstr "BackUpWordPress a besoin de la version %s de Wordpress."
|
338 |
+
|
339 |
+
#: admin.status.php:9
|
340 |
+
#, php-format
|
341 |
+
msgid "Automatic backups are %s."
|
342 |
+
msgstr "Les sauvegardes automatiques sont %s."
|
343 |
+
|
344 |
+
#: admin.status.php:9
|
345 |
+
msgid "disabled"
|
346 |
+
msgstr "désactivé"
|
347 |
+
|
348 |
+
#: admin.status.php:14
|
349 |
+
msgid "&"
|
350 |
+
msgstr "&"
|
351 |
+
|
352 |
+
#: admin.status.php:32
|
353 |
+
#, php-format
|
354 |
+
msgid "Your %1$s will be automatically backed up %2$s. The next backup will occur at %3$s on %4$s and be saved to %5$s."
|
355 |
+
msgid_plural "Your %1$s will be automatically backed up %2$s. The next backup will occur at %3$s on %4$s and be saved to %5$s."
|
356 |
+
msgstr[0] "La sauvegarde %1$s sera effectuée automatiquement %2$s. La prochaine aura lieu à %3$s le %4$s et sera sauvegardé sous %5$s."
|
357 |
+
msgstr[1] "La sauvegarde %1$s sera effectuée automatiquement %2$s. La prochaine aura lieu à %3$s le %4$s et sera sauvegardé sous %5$s."
|
358 |
+
|
359 |
+
#: admin.status.php:39
|
360 |
+
#, php-format
|
361 |
+
msgid "It's currently %s"
|
362 |
+
msgstr "Il est actuellement %s"
|
363 |
+
|
364 |
+
#: admin.status.php:47
|
365 |
+
#, php-format
|
366 |
+
msgid "Your site is %s. Backups will be compressed and should be smaller than this."
|
367 |
+
msgstr "Votre site web pèse %s. La sauvegarde sera compressée pour être plus petite que ça."
|
368 |
+
|
369 |
+
#: admin.status.php:47
|
370 |
+
msgid "Calculating Size..."
|
371 |
+
msgstr "Calcul du volume ..."
|
372 |
+
|
373 |
+
#: admin.status.php:50
|
374 |
+
#, php-format
|
375 |
+
msgid "A copy of each backup will be emailed to %s."
|
376 |
+
msgstr "Une copie des sauvegardes sera envoyée par e-mail à %s."
|
377 |
+
|
378 |
+
#: admin.status.php:54
|
379 |
+
#, php-format
|
380 |
+
msgid "The following paths will be excluded from your backups %s."
|
381 |
+
msgstr "Les répertoires suivants seront exclus des sauvegardes %s."
|
382 |
+
|
383 |
+
#: hm-backup/hm-backup.php:532
|
384 |
+
msgid "The backup file was not created"
|
385 |
+
msgstr "Le fichier de la sauvegarde n'a pas été créé."
|
386 |
+
|
387 |
+
#: hm-backup/hm-backup.php:603
|
388 |
+
msgid "The following files are unreadable and couldn't be backed up: "
|
389 |
+
msgstr "Les fichiers suivants ne sont pas lisibles et ne peuvent être sauvegardés :"
|
390 |
+
|
391 |
+
#: functions/interface.functions.php:25
|
392 |
+
msgid "Download"
|
393 |
+
msgstr "Téléchargement"
|
394 |
+
|
395 |
+
#: functions/interface.functions.php:26
|
396 |
+
msgid "Delete"
|
397 |
+
msgstr "Effacement"
|
398 |
+
|
399 |
+
#: functions/interface.functions.php:48
|
400 |
+
msgid "Settings saved."
|
401 |
+
msgstr "Modifications enregistrées"
|
402 |
+
|
403 |
+
#: functions/interface.functions.php:67
|
404 |
+
#: functions/interface.functions.php:79
|
405 |
+
msgid "BackUpWordPress is almost ready."
|
406 |
+
msgstr "BackUpWordPress est prêt."
|
407 |
+
|
408 |
+
#: functions/interface.functions.php:67
|
409 |
+
#, php-format
|
410 |
+
msgid "The backups directory can't be created because your %1$s directory isn't writable, run %2$s or %3$s or create the folder yourself."
|
411 |
+
msgstr "Le répertoire des sauvegardes ne peut pas être créé car vous il n'est pas possible d'écrire dans %1$s, lancez %2$s ou %3$s ou créez le répertoire vous même."
|
412 |
+
|
413 |
+
#: functions/interface.functions.php:79
|
414 |
+
#, php-format
|
415 |
+
msgid "Your backups directory isn't writable, run %1$s or %2$s or set the permissions yourself."
|
416 |
+
msgstr "Il n'est pas possible d'écrire dans le répertoire des sauvegardes, lancez %1$s ou %2$s ou changez les permissions vous même."
|
417 |
+
|
418 |
+
#: functions/interface.functions.php:89
|
419 |
+
#, php-format
|
420 |
+
msgid "%1$s is running in %2$s. Please contact your host and ask them to disable %3$s."
|
421 |
+
msgstr "%1$s est actif sur %2$s. Contactez votre administrateur et demandez lui de désactiver %3$s."
|
422 |
+
|
423 |
+
#: functions/interface.functions.php:89
|
424 |
+
msgid "http://php.net/manual/en/features.safe-mode.php"
|
425 |
+
msgstr "http://php.net/manual/fr/features.safe-mode.php"
|
426 |
+
|
427 |
+
#: functions/interface.functions.php:89
|
428 |
+
msgid "Safe Mode"
|
429 |
+
msgstr "Safe Mode"
|
430 |
+
|
431 |
+
#: functions/interface.functions.php:99
|
432 |
+
#, php-format
|
433 |
+
msgid "You have both %1$s and %2$s defined so there isn't anything to back up."
|
434 |
+
msgstr "Vous avez défini %1$s et %2$s mais il n'y a rien à sauvegarder."
|
435 |
+
|
436 |
+
#: functions/interface.functions.php:110
|
437 |
+
#, php-format
|
438 |
+
msgid "The following email address is not valid: %s."
|
439 |
+
msgid_plural "The following email addresses are not valid: %s."
|
440 |
+
msgstr[0] "L'adresse de courriel suivante n'est pas valide: %s"
|
441 |
+
msgstr[1] "Les adresses de courriel suivante ne sont pas valides: %s"
|
442 |
+
|
443 |
+
#: functions/interface.functions.php:120
|
444 |
+
msgid "The last backup email failed to send. It's likely that the file is too large."
|
445 |
+
msgstr "L'envoi de la dernière sauvegarde par courriel a échoué. C'est probablement que le fichier est trop volumineux."
|
446 |
+
|
447 |
+
#: functions/interface.functions.php:130
|
448 |
+
#, php-format
|
449 |
+
msgid "Your custom backups directory %1$s doesn't exist and can't be created, your backups will be saved to %2$s instead."
|
450 |
+
msgstr "Le répertoire de sauvegarde spécifié %1$s n'existe pas et ne peut être créé; les sauvegardes seront stockées dans %2$s à la place."
|
451 |
+
|
452 |
+
#: functions/interface.functions.php:140
|
453 |
+
#, php-format
|
454 |
+
msgid "Your custom backups directory %1$s isn't writable, new backups will be saved to %2$s instead."
|
455 |
+
msgstr "Il n'est pas possible d'écrire dans le répertoire de sauvegarde spécifié %1$s; les sauvegardes seront stockées dans %2$s à la place."
|
456 |
+
|
457 |
+
#: functions/interface.functions.php:150
|
458 |
+
#, php-format
|
459 |
+
msgid "You have defined a custom exclude list but the following paths don't exist %s, are you sure you entered them correctly?"
|
460 |
+
msgstr "Vous avez défini une liste d'exclusion avec un chemin qui n'existe pas %s; êtes vous sûr que vous l'avez correctement renseigné ?"
|
461 |
+
|
462 |
+
#: functions/interface.functions.php:160
|
463 |
+
msgid "BackUpWordPress detected issues with your last backup."
|
464 |
+
msgstr "BackUpWordPress à rencontré un problème lors de votre dernière sauvegarde."
|
465 |
+
|
466 |
+
#: functions/backup.actions.php:12
|
467 |
+
msgid "Dumping database"
|
468 |
+
msgstr "Export de la base de donnée"
|
469 |
+
|
470 |
+
#: functions/backup.actions.php:22
|
471 |
+
msgid "Creating zip archive"
|
472 |
+
msgstr "Création de l'archive ZIP"
|
473 |
+
|
474 |
+
#: functions/backup.functions.php:19
|
475 |
+
msgid "Removing old backups"
|
476 |
+
msgstr "Effacement des anciennes sauvegardes"
|
477 |
+
|
478 |
+
#: functions/backup.functions.php:147
|
479 |
+
#: functions/backup.functions.php:157
|
480 |
+
#, php-format
|
481 |
+
msgid "Backup of %s"
|
482 |
+
msgstr "Sauvegarde de %s"
|
483 |
+
|
484 |
+
#: functions/backup.functions.php:148
|
485 |
+
#, php-format
|
486 |
+
msgid ""
|
487 |
+
"BackUpWordPress has completed a backup of your site %1$s.\\n"
|
488 |
+
"\\n"
|
489 |
+
"The backup file should be attached to this email.\\n"
|
490 |
+
"\\n"
|
491 |
+
"You can also download the backup file by clicking the link below:\\n"
|
492 |
+
"\\n"
|
493 |
+
"%2$s\\n"
|
494 |
+
"\\n"
|
495 |
+
"Kind Regards\\n"
|
496 |
+
"\\n"
|
497 |
+
" The Happy BackUpWordPress Backup Emailing Robot"
|
498 |
+
msgstr ""
|
499 |
+
"BackUpWordPress a terminé la sauvegarde de votre site %1$s.\n"
|
500 |
+
"\n"
|
501 |
+
"Le fichier de sauvegarde est joint à cet email.\n"
|
502 |
+
"\n"
|
503 |
+
"Vous pouvez également télécharger cette sauvegarde en suivant le lien ci-dessous :\n"
|
504 |
+
"\n"
|
505 |
+
"%2$s\n"
|
506 |
+
"\n"
|
507 |
+
"Cordialement\n"
|
508 |
+
"\n"
|
509 |
+
"Votre toujours souriant Robot BackUpWordPress "
|
510 |
+
|
511 |
+
#: functions/backup.functions.php:158
|
512 |
+
#, php-format
|
513 |
+
msgid ""
|
514 |
+
"BackUpWordPress has completed a backup of your site %1$s.\\n"
|
515 |
+
"\\n"
|
516 |
+
"Unfortunately the backup file was too large to attach to this email.\\n"
|
517 |
+
"\\n"
|
518 |
+
"You can download the backup file by clicking the link below:\\n"
|
519 |
+
"\\n"
|
520 |
+
"%2$s\\n"
|
521 |
+
"\\n"
|
522 |
+
"Kind Regards\\n"
|
523 |
+
"\\n"
|
524 |
+
" The Happy BackUpWordPress Backup Emailing Robot"
|
525 |
+
msgstr ""
|
526 |
+
"BackUpWordPress a terminé la sauvegarde de votre site %1$s.\n"
|
527 |
+
"\n"
|
528 |
+
"Le fichier de sauvegarde est trop volumineux pour être joint à cet email.\n"
|
529 |
+
"\n"
|
530 |
+
"Vous pouvez le télécharger en suivant le lien ci-dessous :\n"
|
531 |
+
"\n"
|
532 |
+
"%2$s\n"
|
533 |
+
"\n"
|
534 |
+
"Cordialement\n"
|
535 |
+
"\n"
|
536 |
+
"Votre toujours souriant Robot BackUpWordPress "
|
537 |
+
|
538 |
+
#: functions/core.functions.php:339
|
539 |
+
#, php-format
|
540 |
+
msgid "This %s file ensures that other people cannot download your backup files."
|
541 |
+
msgstr "Ce fichier %s garanti qu'aucune autre personne ne peut télécharger vos sauvegardes."
|
542 |
+
|
backupwordpress/languages/hmbkp-lt.mo
ADDED
Binary file
|
backupwordpress/languages/hmbkp-lt.po
ADDED
@@ -0,0 +1,432 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# Translation of 1.6.8 in Lithuanian
|
2 |
+
# This file is distributed under the same license as the 1.6.8 package.
|
3 |
+
msgid ""
|
4 |
+
msgstr ""
|
5 |
+
"PO-Revision-Date: 2012-08-10 14:37:47+0000\n"
|
6 |
+
"MIME-Version: 1.0\n"
|
7 |
+
"Content-Type: text/plain; charset=UTF-8\n"
|
8 |
+
"Content-Transfer-Encoding: 8bit\n"
|
9 |
+
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
|
10 |
+
"X-Generator: GlotPress/0.1\n"
|
11 |
+
"Project-Id-Version: 1.6.8\n"
|
12 |
+
|
13 |
+
#: admin.menus.php:82
|
14 |
+
msgid "Help with translation"
|
15 |
+
msgstr ""
|
16 |
+
|
17 |
+
#: admin.backup-button.php:3
|
18 |
+
msgid "cancel"
|
19 |
+
msgstr ""
|
20 |
+
|
21 |
+
#: admin.constants.php:23 admin.constants.php:26
|
22 |
+
msgid "Backup %s only, your %s won't be backed up. Defaults to %s."
|
23 |
+
msgstr ""
|
24 |
+
|
25 |
+
#: admin.menus.php:65
|
26 |
+
msgid "The information below is for version %s. View the readme.txt file for help specific to version %s."
|
27 |
+
msgstr ""
|
28 |
+
|
29 |
+
#: admin.menus.php:75
|
30 |
+
msgid "FAQ"
|
31 |
+
msgstr ""
|
32 |
+
|
33 |
+
#: admin.constants.php:3 admin.menus.php:76 admin.settings.php:5
|
34 |
+
msgid "Constants"
|
35 |
+
msgstr ""
|
36 |
+
|
37 |
+
#: admin.menus.php:81
|
38 |
+
msgid "Support Forums"
|
39 |
+
msgstr ""
|
40 |
+
|
41 |
+
#: admin.settings.php:5
|
42 |
+
msgid "You can define %s in your %s to control some settings. A full list of %s can be found in the %s. Defined settings will not be editable below."
|
43 |
+
msgstr ""
|
44 |
+
|
45 |
+
#: admin.settings.php:5
|
46 |
+
msgid "help panel"
|
47 |
+
msgstr ""
|
48 |
+
|
49 |
+
#: admin.settings.php:94
|
50 |
+
msgid "Save Changes"
|
51 |
+
msgstr ""
|
52 |
+
|
53 |
+
#: functions/core.functions.php:339
|
54 |
+
msgid "This %s file ensures that other people cannot download your backup files."
|
55 |
+
msgstr ""
|
56 |
+
|
57 |
+
#: functions/interface.functions.php:48
|
58 |
+
msgid "Settings saved."
|
59 |
+
msgstr ""
|
60 |
+
|
61 |
+
#: admin.actions.php:70
|
62 |
+
msgid "You have entered an invalid number of backups."
|
63 |
+
msgstr ""
|
64 |
+
|
65 |
+
#: admin.actions.php:79
|
66 |
+
msgid "%s is an invalid email address."
|
67 |
+
msgstr ""
|
68 |
+
|
69 |
+
#: admin.actions.php:249 functions/interface.functions.php:89
|
70 |
+
#: functions/interface.functions.php:99 functions/interface.functions.php:109
|
71 |
+
#: functions/interface.functions.php:119 functions/interface.functions.php:129
|
72 |
+
#: functions/interface.functions.php:139 functions/interface.functions.php:149
|
73 |
+
msgid "BackUpWordPress has detected a problem."
|
74 |
+
msgstr "BackUpWordPress aptiko problemą."
|
75 |
+
|
76 |
+
#: admin.actions.php:249
|
77 |
+
msgid "%s is returning a %s response which could mean cron jobs aren't getting fired properly. BackUpWordPress relies on wp-cron to run scheduled back ups. See the %s for more details."
|
78 |
+
msgstr ""
|
79 |
+
|
80 |
+
#: admin.backup-button.php:7
|
81 |
+
msgid "Back Up Now"
|
82 |
+
msgstr "Kurti Atsarginę kopiją Dabar"
|
83 |
+
|
84 |
+
#: admin.backups-table.php:13
|
85 |
+
msgid "Size"
|
86 |
+
msgstr "Dydis"
|
87 |
+
|
88 |
+
#: admin.backups-table.php:14
|
89 |
+
msgid "Actions"
|
90 |
+
msgstr "Veiksmai"
|
91 |
+
|
92 |
+
#: admin.backups-table.php:21
|
93 |
+
msgid "Total %s"
|
94 |
+
msgstr "Iš viso %s"
|
95 |
+
|
96 |
+
#: admin.constants.php:3
|
97 |
+
msgid "You can %s any of the following %s in your %s to control advanced settings. %s. Defined %s will be highlighted."
|
98 |
+
msgstr ""
|
99 |
+
|
100 |
+
#: admin.constants.php:3
|
101 |
+
msgid "The Codex can help"
|
102 |
+
msgstr "The Codex gali pagelbėti"
|
103 |
+
|
104 |
+
#: admin.constants.php:8
|
105 |
+
msgid "The path to folder you would like to store your backup files in, defaults to %s."
|
106 |
+
msgstr "Aplanko, kuriame norėtumėte laikyti savo atsargines kopijas adresas. Pagal nutylėjimą %s."
|
107 |
+
|
108 |
+
#: admin.constants.php:11
|
109 |
+
msgid "The path to your %s executable. Will be used for the %s part of the back up if available."
|
110 |
+
msgstr "Adresas į Jūsų %s yra vykdomasis. Jis bus naudojamas %s atsarginės kopijos daliai, jeigu tik tai bus įmanoma."
|
111 |
+
|
112 |
+
#: admin.constants.php:11 admin.constants.php:14 admin.constants.php:23
|
113 |
+
#: admin.constants.php:26 admin.status.php:14 admin.status.php:17
|
114 |
+
msgid "database"
|
115 |
+
msgstr "duomenų bazė"
|
116 |
+
|
117 |
+
#: admin.constants.php:14
|
118 |
+
msgid "The path to your %s executable. Will be used to zip up your %s and %s if available."
|
119 |
+
msgstr "Adresas į Jūsų %s yra vykdomasis. Jis bus naudojamas suspaudžiant Jūsų %s ir %s, jeigu tik bus įmanoma."
|
120 |
+
|
121 |
+
#: admin.constants.php:14 admin.constants.php:23 admin.constants.php:26
|
122 |
+
#: admin.status.php:14 admin.status.php:20
|
123 |
+
msgid "files"
|
124 |
+
msgstr "rinkmenos"
|
125 |
+
|
126 |
+
#: admin.constants.php:17
|
127 |
+
msgid "Completely disables the automatic back up. You can still back up using the \"Back Up Now\" button. Defaults to %s."
|
128 |
+
msgstr "Visiškai panaikina automatinę atsarginių kopijų darymo funkciją. Jūs vis dar galite pasidaryti atsarginę kopiją, naudojant \"Daryti Atsarginę Kopiją Dabar\" mygtuką. Pagal nutylėjimą %s."
|
129 |
+
|
130 |
+
#: admin.constants.php:20
|
131 |
+
msgid "Number of backups to keep, older backups will be deleted automatically when a new backup is completed. Detaults to %s."
|
132 |
+
msgstr "Saugomų atsarginių kopijų kiekis, senesnės atsarginės kopijos bus ištrintos automatiškai, kuomet sėkmingai atliekamas naujos atsarginės kopijos sukūrimas. Pagal nutylėjimą %s."
|
133 |
+
|
134 |
+
#: admin.constants.php:29
|
135 |
+
msgid "The time that the daily back up should run. Defaults to %s."
|
136 |
+
msgstr "Laikas, kurį dieninės atsarginės kopijos kūrimas turėtų būti vykdomas. Pagal nutylėjimą %s."
|
137 |
+
|
138 |
+
#: admin.constants.php:32
|
139 |
+
msgid "Attempt to email a copy of your backups. Value should be email address to send backups to. Defaults to %s."
|
140 |
+
msgstr "Bandyti persiųsti Jūsų atsargines kopijas elektroniniu paštu. Reikšmė turėtų būti elektroninio pašto adresas, į kurį bus siunčiamos atsarginės kopijos. Pagal nutylėjimą %s."
|
141 |
+
|
142 |
+
#: admin.constants.php:35
|
143 |
+
msgid "Comma separated list of files or directories to exclude, the backups directory is automatically excluded."
|
144 |
+
msgstr "Išskiriamų rinkmenų ar direktorijų sąrašas (narius išskiriant kableliais), kurios nebus įtrauktos į automatinį atsarginių kopijų kūrimą."
|
145 |
+
|
146 |
+
#: admin.constants.php:38
|
147 |
+
msgid "The capability to use when calling %s. Defaults to %s."
|
148 |
+
msgstr ""
|
149 |
+
|
150 |
+
#: admin.menus.php:10 admin.page.php:7
|
151 |
+
msgid "Manage Backups"
|
152 |
+
msgstr "Valdyti Atsargines kopijas"
|
153 |
+
|
154 |
+
#: admin.menus.php:10 admin.menus.php:34
|
155 |
+
msgid "Backups"
|
156 |
+
msgstr "Atsarginės kopijos"
|
157 |
+
|
158 |
+
#: admin.menus.php:65
|
159 |
+
msgid "You are not using the latest stable version of BackUpWordPress"
|
160 |
+
msgstr "Jūsų nenaudojate paskutiniosios pilnos BackUpWordPress papildinio versijos."
|
161 |
+
|
162 |
+
#: admin.menus.php:79
|
163 |
+
msgid "For more information:"
|
164 |
+
msgstr ""
|
165 |
+
|
166 |
+
#: admin.page.php:11 admin.settings.php:3
|
167 |
+
msgid "Settings"
|
168 |
+
msgstr ""
|
169 |
+
|
170 |
+
#: admin.page.php:23
|
171 |
+
msgid "You need to fix the issues detailed above before BackUpWordPress can start."
|
172 |
+
msgstr "Jūs turite sutvarkyti problemas, aprašytas viršuje, prieš BackUpWordPress galimą paleidimą."
|
173 |
+
|
174 |
+
#: admin.page.php:29
|
175 |
+
msgid "If you need help getting things working you are more than welcome to email us at %s and we'll do what we can to help."
|
176 |
+
msgstr "Jeigu Jums reikia pagalbos sprendžiant bėdas, nesivaržykite parašyti mums elektroninio laiško į %s pašto dėžutę ir mes suteiksime Jums pagalbą, jeigu tik galėsime."
|
177 |
+
|
178 |
+
#: admin.settings.php:16
|
179 |
+
msgid "Automatic Backups"
|
180 |
+
msgstr ""
|
181 |
+
|
182 |
+
#: admin.settings.php:22
|
183 |
+
msgid "Backup my site automatically."
|
184 |
+
msgstr ""
|
185 |
+
|
186 |
+
#: admin.settings.php:27
|
187 |
+
msgid "No automatic backups."
|
188 |
+
msgstr ""
|
189 |
+
|
190 |
+
#: admin.settings.php:36
|
191 |
+
msgid "Frequency of backups"
|
192 |
+
msgstr ""
|
193 |
+
|
194 |
+
#: admin.settings.php:40
|
195 |
+
msgid "Automatic backups will occur"
|
196 |
+
msgstr ""
|
197 |
+
|
198 |
+
#: admin.settings.php:43
|
199 |
+
msgid "Daily"
|
200 |
+
msgstr ""
|
201 |
+
|
202 |
+
#: admin.settings.php:44
|
203 |
+
msgid "Weekly"
|
204 |
+
msgstr ""
|
205 |
+
|
206 |
+
#: admin.settings.php:45
|
207 |
+
msgid "Fortnightly"
|
208 |
+
msgstr ""
|
209 |
+
|
210 |
+
#: admin.settings.php:46
|
211 |
+
msgid "Monthly"
|
212 |
+
msgstr ""
|
213 |
+
|
214 |
+
#: admin.settings.php:55
|
215 |
+
msgid "What to Backup"
|
216 |
+
msgstr ""
|
217 |
+
|
218 |
+
#: admin.settings.php:59
|
219 |
+
msgid "Backup my"
|
220 |
+
msgstr ""
|
221 |
+
|
222 |
+
#: admin.settings.php:62
|
223 |
+
msgid "database & files"
|
224 |
+
msgstr ""
|
225 |
+
|
226 |
+
#: admin.settings.php:63
|
227 |
+
msgid "database only"
|
228 |
+
msgstr ""
|
229 |
+
|
230 |
+
#: admin.settings.php:64
|
231 |
+
msgid "files only"
|
232 |
+
msgstr ""
|
233 |
+
|
234 |
+
#: admin.settings.php:72
|
235 |
+
msgid "Number of backups"
|
236 |
+
msgstr ""
|
237 |
+
|
238 |
+
#: admin.settings.php:73
|
239 |
+
msgid "The last %s backups will be stored on the server."
|
240 |
+
msgstr ""
|
241 |
+
|
242 |
+
#: admin.settings.php:77
|
243 |
+
msgid "Email backups"
|
244 |
+
msgstr ""
|
245 |
+
|
246 |
+
#: admin.settings.php:78
|
247 |
+
msgid "A copy of the backup file will be emailed to this address. Disabled if left blank."
|
248 |
+
msgstr ""
|
249 |
+
|
250 |
+
#: admin.settings.php:82
|
251 |
+
msgid "Excludes"
|
252 |
+
msgstr ""
|
253 |
+
|
254 |
+
#: admin.settings.php:85
|
255 |
+
msgid "A comma separated list of file and directory paths that you do <strong>not</strong> want to backup."
|
256 |
+
msgstr ""
|
257 |
+
|
258 |
+
#: admin.settings.php:86
|
259 |
+
msgid "e.g."
|
260 |
+
msgstr ""
|
261 |
+
|
262 |
+
#: admin.status.php:9
|
263 |
+
msgid "Automatic backups are %s."
|
264 |
+
msgstr "Automatinių atsarginių kopijų kūrimas yra %s."
|
265 |
+
|
266 |
+
#: admin.status.php:9
|
267 |
+
msgid "disabled"
|
268 |
+
msgstr "išjungtas"
|
269 |
+
|
270 |
+
#: admin.status.php:14
|
271 |
+
msgid "&"
|
272 |
+
msgstr "&"
|
273 |
+
|
274 |
+
#: admin.status.php:25
|
275 |
+
msgid "Your %s will be automatically backed up <code>%s</code>. The next backup will occur at %s on %s and be saved to %s."
|
276 |
+
msgstr ""
|
277 |
+
|
278 |
+
#: admin.status.php:25
|
279 |
+
msgid "It's currently %s"
|
280 |
+
msgstr ""
|
281 |
+
|
282 |
+
#: admin.status.php:31
|
283 |
+
msgid "Your site is %s. Backups will be compressed and should be smaller than this."
|
284 |
+
msgstr "Jūsų tinklalapis yra %s. Atsarginės kopijos bus suspaustos ir turėtų būti mažesnės nei tai."
|
285 |
+
|
286 |
+
#: admin.status.php:31
|
287 |
+
msgid "Calculating Size..."
|
288 |
+
msgstr "Skaičiuojamas Dydis..."
|
289 |
+
|
290 |
+
#: admin.status.php:34
|
291 |
+
msgid "A copy of each backup will be emailed to %s."
|
292 |
+
msgstr "Kiekvienos atsarginės kopijos kopija bus išsiųsta elektroniniu paštu %s."
|
293 |
+
|
294 |
+
#: admin.status.php:38
|
295 |
+
msgid "The following paths will be excluded from your backups %s."
|
296 |
+
msgstr "Šie adresai bus išskirti iš Jūsų atsarginių kopijų %s."
|
297 |
+
|
298 |
+
#: functions/backup.actions.php:12
|
299 |
+
msgid "Dumping database"
|
300 |
+
msgstr "Duomenų bazės iškrovimas"
|
301 |
+
|
302 |
+
#: functions/backup.actions.php:22
|
303 |
+
msgid "Creating zip archive"
|
304 |
+
msgstr "Kuriamas zip archyvas"
|
305 |
+
|
306 |
+
#: functions/backup.functions.php:19
|
307 |
+
msgid "Removing old backups"
|
308 |
+
msgstr "Pašalinamos senos atsarginės kopijos"
|
309 |
+
|
310 |
+
#: functions/backup.functions.php:147 functions/backup.functions.php:157
|
311 |
+
msgid "Backup of %s"
|
312 |
+
msgstr "%s atsarginė kopija"
|
313 |
+
|
314 |
+
#: functions/backup.functions.php:148
|
315 |
+
msgid ""
|
316 |
+
"BackUpWordPress has completed a backup of your site %s.\n"
|
317 |
+
"\n"
|
318 |
+
"The backup file should be attached to this email.\n"
|
319 |
+
"\n"
|
320 |
+
"You can also download the backup file by clicking the link below:\n"
|
321 |
+
"\n"
|
322 |
+
"%s\n"
|
323 |
+
"\n"
|
324 |
+
"Kind Regards\n"
|
325 |
+
"\n"
|
326 |
+
" The Happy BackUpWordPress Backup Emailing Robot"
|
327 |
+
msgstr ""
|
328 |
+
"BackUpWordpress baigė kurti Jūsų tinklalapio %s atsarginę kopiją.\n"
|
329 |
+
"\n"
|
330 |
+
"Atsarginės kopijos rinkmena turėtų būti pridėta prie šio elektroninio laiško.\n"
|
331 |
+
"\n"
|
332 |
+
"Jūs taip pat galite parsisiųsti atsarginės kopijos rinkmeną, paspausdamas nuorodą žemiau:\n"
|
333 |
+
"\n"
|
334 |
+
"%s\n"
|
335 |
+
"\n"
|
336 |
+
"Pagarbiai\n"
|
337 |
+
"\n"
|
338 |
+
"Laimingas BackUpWordPress Elektroninių laiškų siuntimo Robotas"
|
339 |
+
|
340 |
+
#: functions/backup.functions.php:158
|
341 |
+
msgid ""
|
342 |
+
"BackUpWordPress has completed a backup of your site %s.\n"
|
343 |
+
"\n"
|
344 |
+
"Unfortunately the backup file was too large to attach to this email.\n"
|
345 |
+
"\n"
|
346 |
+
"You can download the backup file by clicking the link below:\n"
|
347 |
+
"\n"
|
348 |
+
"%s\n"
|
349 |
+
"\n"
|
350 |
+
"Kind Regards\n"
|
351 |
+
"\n"
|
352 |
+
" The Happy BackUpWordPress Backup Emailing Robot"
|
353 |
+
msgstr ""
|
354 |
+
"BackUpWordpress baigė kurti Jūsų tinklalapio %s atsarginę kopiją.\n"
|
355 |
+
"\n"
|
356 |
+
"Nelaimei, atsarginės kopijos rinkmena buvo per didelė, kad ją būtų galima prisegti prie šio elektroninio laiško.\n"
|
357 |
+
"\n"
|
358 |
+
"Jūs taip pat galite parsisiųsti atsarginės kopijos rinkmeną, paspausdamas nuorodą žemiau:\n"
|
359 |
+
"\n"
|
360 |
+
"%s\n"
|
361 |
+
"\n"
|
362 |
+
"Pagarbiai\n"
|
363 |
+
"\n"
|
364 |
+
"Laimingas BackUpWordPress Elektroninių laiškų siuntimo Robotas"
|
365 |
+
|
366 |
+
#: functions/interface.functions.php:25
|
367 |
+
msgid "Download"
|
368 |
+
msgstr "Parsisiųsti"
|
369 |
+
|
370 |
+
#: functions/interface.functions.php:26
|
371 |
+
msgid "Delete"
|
372 |
+
msgstr "Ištrinti"
|
373 |
+
|
374 |
+
#: functions/interface.functions.php:67 functions/interface.functions.php:79
|
375 |
+
msgid "BackUpWordPress is almost ready."
|
376 |
+
msgstr "BackUpWordPress beveik paruoštas."
|
377 |
+
|
378 |
+
#: functions/interface.functions.php:67
|
379 |
+
msgid "The backups directory can't be created because your %s directory isn't writable, run %s or %s or create the folder yourself."
|
380 |
+
msgstr "Atsarginių kopijų katalogas negali būti sukurtas, nes Jūsų %s katalogas nėra įrašytinas, paleiskite %s arba %s, arba sukurkite aplanką pats."
|
381 |
+
|
382 |
+
#: functions/interface.functions.php:79
|
383 |
+
msgid "Your backups directory isn't writable. run %s or %s or set the permissions yourself."
|
384 |
+
msgstr "Jūsų %s katalogas nėra įrašytinas, paleiskite %s arba %s, arba pakeiskite leidimus pats."
|
385 |
+
|
386 |
+
#: functions/interface.functions.php:89
|
387 |
+
msgid " %s is running in %s. Please contact your host and ask them to disable %s."
|
388 |
+
msgstr "%s vyksta %s. Prašome susisiekti su savo priglobos tiekėju ir paprašyti jo išjungti %s."
|
389 |
+
|
390 |
+
#: functions/interface.functions.php:99
|
391 |
+
msgid "You have both %s and %s defined so there isn't anything to back up."
|
392 |
+
msgstr "Jūs apibūdinote abudu - ir %s, ir %s , todėl nėra nieko, kieno atsarginę kopiją būtų galima sukurti."
|
393 |
+
|
394 |
+
#: functions/interface.functions.php:109
|
395 |
+
msgid "The following email address's are not valid: %s."
|
396 |
+
msgstr ""
|
397 |
+
|
398 |
+
#: functions/interface.functions.php:119
|
399 |
+
msgid "The last backup email failed to send. It's likely that the file is too large."
|
400 |
+
msgstr ""
|
401 |
+
|
402 |
+
#: functions/interface.functions.php:129
|
403 |
+
msgid "Your custom backups directory %s doesn't exist and can't be created, your backups will be saved to %s instead."
|
404 |
+
msgstr "Jūsų individualizuotas atsarginių kopijų katalogas %s neegzistuoja ir negali būti sukurtas, todėl Jūsų atsarginės kopijos bus įrašytos į %s, vietoje nurodytojo katalogo."
|
405 |
+
|
406 |
+
#: functions/interface.functions.php:139
|
407 |
+
msgid "Your custom backups directory %s isn't writable, new backups will be saved to %s instead."
|
408 |
+
msgstr "Jūsų individualizuotas atsarginių kopijų katalogas %s nėra įrašytinas, todėl naujos atsarginės kopijos bus įrašytos į %s, vietoje nurodytojo katalogo."
|
409 |
+
|
410 |
+
#: functions/interface.functions.php:149
|
411 |
+
msgid "You have defined a custom exclude list but the following paths don't exist %s, are you sure you entered them correctly?"
|
412 |
+
msgstr "Jūs nurodėte individualizuotą išskyrimų sąrašą, bet šie adresai neegzistuoja %s, ar esate tikras, jog įrašėte juos teisingai?"
|
413 |
+
|
414 |
+
#: functions/interface.functions.php:159
|
415 |
+
msgid "BackUpWordPress detected issues with your last backup."
|
416 |
+
msgstr ""
|
417 |
+
|
418 |
+
#: hm-backup/hm-backup.php:532
|
419 |
+
msgid "The backup file was not created"
|
420 |
+
msgstr ""
|
421 |
+
|
422 |
+
#: hm-backup/hm-backup.php:603
|
423 |
+
msgid "The following files are unreadable and couldn't be backed up: "
|
424 |
+
msgstr ""
|
425 |
+
|
426 |
+
#: plugin.php:47
|
427 |
+
msgid "BackUpWordPress requires PHP version 5.2.4 or greater."
|
428 |
+
msgstr ""
|
429 |
+
|
430 |
+
#: plugin.php:58
|
431 |
+
msgid "BackUpWordPress requires WordPress version %s."
|
432 |
+
msgstr "BackUpWordPress reikalauja WordPress versijos %s."
|
backupwordpress/languages/hmbkp-lt_LT.mo
ADDED
Binary file
|
backupwordpress/languages/hmbkp-lt_LT.po
ADDED
@@ -0,0 +1,546 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# Translation of 1.6.8 in Lithuanian
|
2 |
+
# This file is distributed under the same license as the 1.6.8 package.
|
3 |
+
msgid ""
|
4 |
+
msgstr ""
|
5 |
+
"Project-Id-Version: 1.6.8\n"
|
6 |
+
"Report-Msgid-Bugs-To: \n"
|
7 |
+
"POT-Creation-Date: 2012-08-14 14:41+0100\n"
|
8 |
+
"PO-Revision-Date: 2012-08-14 14:44+0100\n"
|
9 |
+
"Last-Translator: Flo Edelmann <florian-edelmann@online.de>\n"
|
10 |
+
"Language-Team: \n"
|
11 |
+
"Language: \n"
|
12 |
+
"MIME-Version: 1.0\n"
|
13 |
+
"Content-Type: text/plain; charset=UTF-8\n"
|
14 |
+
"Content-Transfer-Encoding: 8bit\n"
|
15 |
+
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
|
16 |
+
"X-Generator: GlotPress/0.1\n"
|
17 |
+
"X-Poedit-Language: Lithuanian\n"
|
18 |
+
"X-Poedit-Country: LITHUANIA\n"
|
19 |
+
"X-Poedit-SourceCharset: utf-8\n"
|
20 |
+
"X-Poedit-KeywordsList: __;_e;_n:1,2\n"
|
21 |
+
"X-Poedit-Basepath: ..\n"
|
22 |
+
"X-Poedit-SearchPath-0: .\n"
|
23 |
+
|
24 |
+
#: admin.settings.php:3
|
25 |
+
#: admin.page.php:11
|
26 |
+
msgid "Settings"
|
27 |
+
msgstr ""
|
28 |
+
|
29 |
+
#: admin.settings.php:5
|
30 |
+
#, php-format
|
31 |
+
msgid "You can define %1$s in your %2$s to control some settings. A full list of %3$s can be found in the %4$s. Defined settings will not be editable below."
|
32 |
+
msgstr ""
|
33 |
+
|
34 |
+
#: admin.settings.php:5
|
35 |
+
#: admin.constants.php:3
|
36 |
+
#: admin.menus.php:76
|
37 |
+
msgid "Constants"
|
38 |
+
msgstr ""
|
39 |
+
|
40 |
+
#: admin.settings.php:5
|
41 |
+
msgid "help panel"
|
42 |
+
msgstr ""
|
43 |
+
|
44 |
+
#: admin.settings.php:16
|
45 |
+
msgid "Automatic Backups"
|
46 |
+
msgstr ""
|
47 |
+
|
48 |
+
#: admin.settings.php:22
|
49 |
+
msgid "Backup my site automatically."
|
50 |
+
msgstr ""
|
51 |
+
|
52 |
+
#: admin.settings.php:27
|
53 |
+
msgid "No automatic backups."
|
54 |
+
msgstr ""
|
55 |
+
|
56 |
+
#: admin.settings.php:36
|
57 |
+
msgid "Frequency of backups"
|
58 |
+
msgstr ""
|
59 |
+
|
60 |
+
#: admin.settings.php:40
|
61 |
+
msgid "Automatic backups will occur"
|
62 |
+
msgstr ""
|
63 |
+
|
64 |
+
#: admin.settings.php:43
|
65 |
+
msgid "Daily"
|
66 |
+
msgstr ""
|
67 |
+
|
68 |
+
#: admin.settings.php:44
|
69 |
+
msgid "Weekly"
|
70 |
+
msgstr ""
|
71 |
+
|
72 |
+
#: admin.settings.php:45
|
73 |
+
msgid "Fortnightly"
|
74 |
+
msgstr ""
|
75 |
+
|
76 |
+
#: admin.settings.php:46
|
77 |
+
msgid "Monthly"
|
78 |
+
msgstr ""
|
79 |
+
|
80 |
+
#: admin.settings.php:55
|
81 |
+
msgid "What to Backup"
|
82 |
+
msgstr ""
|
83 |
+
|
84 |
+
#: admin.settings.php:59
|
85 |
+
msgid "Backup my"
|
86 |
+
msgstr ""
|
87 |
+
|
88 |
+
#: admin.settings.php:62
|
89 |
+
msgid "database & files"
|
90 |
+
msgstr ""
|
91 |
+
|
92 |
+
#: admin.settings.php:63
|
93 |
+
msgid "database only"
|
94 |
+
msgstr ""
|
95 |
+
|
96 |
+
#: admin.settings.php:64
|
97 |
+
msgid "files only"
|
98 |
+
msgstr ""
|
99 |
+
|
100 |
+
#: admin.settings.php:72
|
101 |
+
msgid "Number of backups"
|
102 |
+
msgstr ""
|
103 |
+
|
104 |
+
#: admin.settings.php:73
|
105 |
+
#, php-format
|
106 |
+
msgid "The last %s backups will be stored on the server."
|
107 |
+
msgstr ""
|
108 |
+
|
109 |
+
#: admin.settings.php:77
|
110 |
+
msgid "Email backups"
|
111 |
+
msgstr ""
|
112 |
+
|
113 |
+
#: admin.settings.php:78
|
114 |
+
msgid "A copy of the backup file will be emailed to this address. Disabled if left blank."
|
115 |
+
msgstr ""
|
116 |
+
|
117 |
+
#: admin.settings.php:82
|
118 |
+
msgid "Excludes"
|
119 |
+
msgstr ""
|
120 |
+
|
121 |
+
#: admin.settings.php:85
|
122 |
+
msgid "A comma separated list of file and directory paths that you do <strong>not</strong> want to backup."
|
123 |
+
msgstr ""
|
124 |
+
|
125 |
+
#: admin.settings.php:86
|
126 |
+
#: admin.constants.php:8
|
127 |
+
#: admin.constants.php:11
|
128 |
+
#: admin.constants.php:14
|
129 |
+
#: admin.constants.php:17
|
130 |
+
#: admin.constants.php:20
|
131 |
+
#: admin.constants.php:23
|
132 |
+
#: admin.constants.php:26
|
133 |
+
#: admin.constants.php:29
|
134 |
+
#: admin.constants.php:32
|
135 |
+
#: admin.constants.php:35
|
136 |
+
#: admin.constants.php:38
|
137 |
+
#: admin.constants.php:41
|
138 |
+
msgid "e.g."
|
139 |
+
msgstr ""
|
140 |
+
|
141 |
+
#: admin.settings.php:94
|
142 |
+
msgid "Save Changes"
|
143 |
+
msgstr ""
|
144 |
+
|
145 |
+
#: admin.backups-table.php:12
|
146 |
+
#, php-format
|
147 |
+
msgid "1 backup completed"
|
148 |
+
msgid_plural "%d backups completed"
|
149 |
+
msgstr[0] ""
|
150 |
+
msgstr[1] ""
|
151 |
+
msgstr[2] ""
|
152 |
+
|
153 |
+
#: admin.backups-table.php:13
|
154 |
+
msgid "Size"
|
155 |
+
msgstr "Dydis"
|
156 |
+
|
157 |
+
#: admin.backups-table.php:14
|
158 |
+
msgid "Actions"
|
159 |
+
msgstr "Veiksmai"
|
160 |
+
|
161 |
+
#: admin.backups-table.php:20
|
162 |
+
#, php-format
|
163 |
+
msgid "Only the most recent backup will be saved"
|
164 |
+
msgid_plural "The %d most recent backups will be saved"
|
165 |
+
msgstr[0] ""
|
166 |
+
msgstr[1] ""
|
167 |
+
msgstr[2] ""
|
168 |
+
|
169 |
+
#: admin.backups-table.php:21
|
170 |
+
#, php-format
|
171 |
+
msgid "Total %s"
|
172 |
+
msgstr "Iš viso %s"
|
173 |
+
|
174 |
+
#: admin.page.php:7
|
175 |
+
#: admin.menus.php:10
|
176 |
+
msgid "Manage Backups"
|
177 |
+
msgstr "Valdyti Atsargines kopijas"
|
178 |
+
|
179 |
+
#: admin.page.php:23
|
180 |
+
msgid "You need to fix the issues detailed above before BackUpWordPress can start."
|
181 |
+
msgstr "Jūs turite sutvarkyti problemas, aprašytas viršuje, prieš BackUpWordPress galimą paleidimą."
|
182 |
+
|
183 |
+
#: admin.page.php:29
|
184 |
+
#, php-format
|
185 |
+
msgid "If you need help getting things working you are more than welcome to email us at %s and we'll do what we can to help."
|
186 |
+
msgstr "Jeigu Jums reikia pagalbos sprendžiant bėdas, nesivaržykite parašyti mums elektroninio laiško į %s pašto dėžutę ir mes suteiksime Jums pagalbą, jeigu tik galėsime."
|
187 |
+
|
188 |
+
#: admin.backup-button.php:3
|
189 |
+
msgid "cancel"
|
190 |
+
msgstr ""
|
191 |
+
|
192 |
+
#: admin.backup-button.php:7
|
193 |
+
msgid "Back Up Now"
|
194 |
+
msgstr "Kurti Atsarginę kopiją Dabar"
|
195 |
+
|
196 |
+
#: admin.constants.php:3
|
197 |
+
#, php-format
|
198 |
+
msgid "You can %1$s any of the following %2$s in your %3$s to control advanced settings. %4$s. Defined %5$s will be highlighted."
|
199 |
+
msgstr ""
|
200 |
+
|
201 |
+
#: admin.constants.php:3
|
202 |
+
msgid "The Codex can help"
|
203 |
+
msgstr "The Codex gali pagelbėti"
|
204 |
+
|
205 |
+
#: admin.constants.php:8
|
206 |
+
#, php-format
|
207 |
+
msgid "The path to folder you would like to store your backup files in, defaults to %s."
|
208 |
+
msgstr "Aplanko, kuriame norėtumėte laikyti savo atsargines kopijas adresas. Pagal nutylėjimą %s."
|
209 |
+
|
210 |
+
#: admin.constants.php:11
|
211 |
+
#, php-format
|
212 |
+
msgid "The path to your %1$s executable. Will be used for the %2$s part of the back up if available."
|
213 |
+
msgstr "Adresas į Jūsų %1$s yra vykdomasis. Jis bus naudojamas %2$s atsarginės kopijos daliai, jeigu tik tai bus įmanoma."
|
214 |
+
|
215 |
+
#: admin.constants.php:11
|
216 |
+
#: admin.constants.php:14
|
217 |
+
#: admin.constants.php:23
|
218 |
+
#: admin.constants.php:26
|
219 |
+
#: admin.status.php:14
|
220 |
+
#: admin.status.php:18
|
221 |
+
msgid "database"
|
222 |
+
msgstr "duomenų bazė"
|
223 |
+
|
224 |
+
#: admin.constants.php:14
|
225 |
+
#, php-format
|
226 |
+
msgid "The path to your %1$s executable. Will be used to zip up your %2$s and %3$s if available."
|
227 |
+
msgstr "Adresas į Jūsų %1$s yra vykdomasis. Jis bus naudojamas suspaudžiant Jūsų %2$s ir %3$s, jeigu tik bus įmanoma."
|
228 |
+
|
229 |
+
#: admin.constants.php:14
|
230 |
+
#: admin.constants.php:23
|
231 |
+
#: admin.constants.php:26
|
232 |
+
#: admin.status.php:14
|
233 |
+
#: admin.status.php:22
|
234 |
+
msgid "files"
|
235 |
+
msgstr "rinkmenos"
|
236 |
+
|
237 |
+
#: admin.constants.php:17
|
238 |
+
#, php-format
|
239 |
+
msgid "Completely disables the automatic back up. You can still back up using the \"Back Up Now\" button. Defaults to %s."
|
240 |
+
msgstr "Visiškai panaikina automatinę atsarginių kopijų darymo funkciją. Jūs vis dar galite pasidaryti atsarginę kopiją, naudojant \"Daryti Atsarginę Kopiją Dabar\" mygtuką. Pagal nutylėjimą %s."
|
241 |
+
|
242 |
+
#: admin.constants.php:20
|
243 |
+
#, fuzzy, php-format
|
244 |
+
msgid "Number of backups to keep, older backups will be deleted automatically when a new backup is completed. Defaults to %s."
|
245 |
+
msgstr "Saugomų atsarginių kopijų kiekis, senesnės atsarginės kopijos bus ištrintos automatiškai, kuomet sėkmingai atliekamas naujos atsarginės kopijos sukūrimas. Pagal nutylėjimą %s."
|
246 |
+
|
247 |
+
#: admin.constants.php:23
|
248 |
+
#: admin.constants.php:26
|
249 |
+
#, php-format
|
250 |
+
msgid "Backup %1$s only, your %2$s won't be backed up. Defaults to %3$s."
|
251 |
+
msgstr ""
|
252 |
+
|
253 |
+
#: admin.constants.php:29
|
254 |
+
#, php-format
|
255 |
+
msgid "The time that the daily back up should run. Defaults to %s."
|
256 |
+
msgstr "Laikas, kurį dieninės atsarginės kopijos kūrimas turėtų būti vykdomas. Pagal nutylėjimą %s."
|
257 |
+
|
258 |
+
#: admin.constants.php:32
|
259 |
+
#, php-format
|
260 |
+
msgid "Attempt to email a copy of your backups. Value should be email address to send backups to. Defaults to %s."
|
261 |
+
msgstr "Bandyti persiųsti Jūsų atsargines kopijas elektroniniu paštu. Reikšmė turėtų būti elektroninio pašto adresas, į kurį bus siunčiamos atsarginės kopijos. Pagal nutylėjimą %s."
|
262 |
+
|
263 |
+
#: admin.constants.php:35
|
264 |
+
msgid "Comma separated list of files or directories to exclude, the backups directory is automatically excluded."
|
265 |
+
msgstr "Išskiriamų rinkmenų ar direktorijų sąrašas (narius išskiriant kableliais), kurios nebus įtrauktos į automatinį atsarginių kopijų kūrimą."
|
266 |
+
|
267 |
+
#: admin.constants.php:38
|
268 |
+
#, php-format
|
269 |
+
msgid "The capability to use when calling %1$s. Defaults to %2$s."
|
270 |
+
msgstr ""
|
271 |
+
|
272 |
+
#: admin.constants.php:41
|
273 |
+
#, fuzzy, php-format
|
274 |
+
msgid "The root directory that is backed up. Defaults to %s."
|
275 |
+
msgstr "Laikas, kurį dieninės atsarginės kopijos kūrimas turėtų būti vykdomas. Pagal nutylėjimą %s."
|
276 |
+
|
277 |
+
#: admin.actions.php:70
|
278 |
+
msgid "You have entered an invalid number of backups."
|
279 |
+
msgstr ""
|
280 |
+
|
281 |
+
#: admin.actions.php:79
|
282 |
+
#, php-format
|
283 |
+
msgid "%s is an invalid email address."
|
284 |
+
msgstr ""
|
285 |
+
|
286 |
+
#: admin.actions.php:249
|
287 |
+
#: functions/interface.functions.php:89
|
288 |
+
#: functions/interface.functions.php:99
|
289 |
+
#: functions/interface.functions.php:110
|
290 |
+
#: functions/interface.functions.php:120
|
291 |
+
#: functions/interface.functions.php:130
|
292 |
+
#: functions/interface.functions.php:140
|
293 |
+
#: functions/interface.functions.php:150
|
294 |
+
msgid "BackUpWordPress has detected a problem."
|
295 |
+
msgstr "BackUpWordPress aptiko problemą."
|
296 |
+
|
297 |
+
#: admin.actions.php:249
|
298 |
+
#, php-format
|
299 |
+
msgid "%1$s is returning a %2$s response which could mean cron jobs aren't getting fired properly. BackUpWordPress relies on wp-cron to run scheduled back ups. See the %3$s for more details."
|
300 |
+
msgstr ""
|
301 |
+
|
302 |
+
#: admin.menus.php:10
|
303 |
+
#: admin.menus.php:34
|
304 |
+
msgid "Backups"
|
305 |
+
msgstr "Atsarginės kopijos"
|
306 |
+
|
307 |
+
#: admin.menus.php:65
|
308 |
+
msgid "You are not using the latest stable version of BackUpWordPress"
|
309 |
+
msgstr "Jūsų nenaudojate paskutiniosios pilnos BackUpWordPress papildinio versijos."
|
310 |
+
|
311 |
+
#: admin.menus.php:65
|
312 |
+
#, php-format
|
313 |
+
msgid "The information below is for version %1$s. View the <code>readme.txt</code> file for help specific to version %2$s."
|
314 |
+
msgstr ""
|
315 |
+
|
316 |
+
#: admin.menus.php:75
|
317 |
+
msgid "FAQ"
|
318 |
+
msgstr ""
|
319 |
+
|
320 |
+
#: admin.menus.php:79
|
321 |
+
msgid "For more information:"
|
322 |
+
msgstr ""
|
323 |
+
|
324 |
+
#: admin.menus.php:81
|
325 |
+
msgid "Support Forums"
|
326 |
+
msgstr ""
|
327 |
+
|
328 |
+
#: admin.menus.php:82
|
329 |
+
msgid "Help with translation"
|
330 |
+
msgstr ""
|
331 |
+
|
332 |
+
#: plugin.php:47
|
333 |
+
msgid "BackUpWordPress requires PHP version 5.2.4 or greater."
|
334 |
+
msgstr ""
|
335 |
+
|
336 |
+
#: plugin.php:58
|
337 |
+
#, php-format
|
338 |
+
msgid "BackUpWordPress requires WordPress version %s."
|
339 |
+
msgstr "BackUpWordPress reikalauja WordPress versijos %s."
|
340 |
+
|
341 |
+
#: admin.status.php:9
|
342 |
+
#, php-format
|
343 |
+
msgid "Automatic backups are %s."
|
344 |
+
msgstr "Automatinių atsarginių kopijų kūrimas yra %s."
|
345 |
+
|
346 |
+
#: admin.status.php:9
|
347 |
+
msgid "disabled"
|
348 |
+
msgstr "išjungtas"
|
349 |
+
|
350 |
+
#: admin.status.php:14
|
351 |
+
msgid "&"
|
352 |
+
msgstr "&"
|
353 |
+
|
354 |
+
#: admin.status.php:32
|
355 |
+
#, php-format
|
356 |
+
msgid "Your %1$s will be automatically backed up %2$s. The next backup will occur at %3$s on %4$s and be saved to %5$s."
|
357 |
+
msgid_plural "Your %1$s will be automatically backed up %2$s. The next backup will occur at %3$s on %4$s and be saved to %5$s."
|
358 |
+
msgstr[0] ""
|
359 |
+
msgstr[1] ""
|
360 |
+
msgstr[2] ""
|
361 |
+
|
362 |
+
#: admin.status.php:39
|
363 |
+
#, php-format
|
364 |
+
msgid "It's currently %s"
|
365 |
+
msgstr ""
|
366 |
+
|
367 |
+
#: admin.status.php:47
|
368 |
+
#, php-format
|
369 |
+
msgid "Your site is %s. Backups will be compressed and should be smaller than this."
|
370 |
+
msgstr "Jūsų tinklalapis yra %s. Atsarginės kopijos bus suspaustos ir turėtų būti mažesnės nei tai."
|
371 |
+
|
372 |
+
#: admin.status.php:47
|
373 |
+
msgid "Calculating Size..."
|
374 |
+
msgstr "Skaičiuojamas Dydis..."
|
375 |
+
|
376 |
+
#: admin.status.php:50
|
377 |
+
#, php-format
|
378 |
+
msgid "A copy of each backup will be emailed to %s."
|
379 |
+
msgstr "Kiekvienos atsarginės kopijos kopija bus išsiųsta elektroniniu paštu %s."
|
380 |
+
|
381 |
+
#: admin.status.php:54
|
382 |
+
#, php-format
|
383 |
+
msgid "The following paths will be excluded from your backups %s."
|
384 |
+
msgstr "Šie adresai bus išskirti iš Jūsų atsarginių kopijų %s."
|
385 |
+
|
386 |
+
#: hm-backup/hm-backup.php:532
|
387 |
+
msgid "The backup file was not created"
|
388 |
+
msgstr ""
|
389 |
+
|
390 |
+
#: hm-backup/hm-backup.php:603
|
391 |
+
msgid "The following files are unreadable and couldn't be backed up: "
|
392 |
+
msgstr ""
|
393 |
+
|
394 |
+
#: functions/interface.functions.php:25
|
395 |
+
msgid "Download"
|
396 |
+
msgstr "Parsisiųsti"
|
397 |
+
|
398 |
+
#: functions/interface.functions.php:26
|
399 |
+
msgid "Delete"
|
400 |
+
msgstr "Ištrinti"
|
401 |
+
|
402 |
+
#: functions/interface.functions.php:48
|
403 |
+
msgid "Settings saved."
|
404 |
+
msgstr ""
|
405 |
+
|
406 |
+
#: functions/interface.functions.php:67
|
407 |
+
#: functions/interface.functions.php:79
|
408 |
+
msgid "BackUpWordPress is almost ready."
|
409 |
+
msgstr "BackUpWordPress beveik paruoštas."
|
410 |
+
|
411 |
+
#: functions/interface.functions.php:67
|
412 |
+
#, php-format
|
413 |
+
msgid "The backups directory can't be created because your %1$s directory isn't writable, run %2$s or %3$s or create the folder yourself."
|
414 |
+
msgstr "Atsarginių kopijų katalogas negali būti sukurtas, nes Jūsų %1$s katalogas nėra įrašytinas, paleiskite %2$s arba %3$s, arba sukurkite aplanką pats."
|
415 |
+
|
416 |
+
#: functions/interface.functions.php:79
|
417 |
+
#, php-format
|
418 |
+
msgid "Your backups directory isn't writable, run %1$s or %2$s or set the permissions yourself."
|
419 |
+
msgstr "Jūsų %s katalogas nėra įrašytinas, paleiskite %1$s arba %2$s, arba pakeiskite leidimus pats."
|
420 |
+
|
421 |
+
#: functions/interface.functions.php:89
|
422 |
+
#, php-format
|
423 |
+
msgid "%1$s is running in %2$s. Please contact your host and ask them to disable %3$s."
|
424 |
+
msgstr "%1$s vyksta %2$s. Prašome susisiekti su savo priglobos tiekėju ir paprašyti jo išjungti %3$s."
|
425 |
+
|
426 |
+
#: functions/interface.functions.php:89
|
427 |
+
msgid "http://php.net/manual/en/features.safe-mode.php"
|
428 |
+
msgstr "http://php.net/manual/en/features.safe-mode.php"
|
429 |
+
|
430 |
+
#: functions/interface.functions.php:89
|
431 |
+
msgid "Safe Mode"
|
432 |
+
msgstr "Safe Mode"
|
433 |
+
|
434 |
+
#: functions/interface.functions.php:99
|
435 |
+
#, php-format
|
436 |
+
msgid "You have both %1$s and %2$s defined so there isn't anything to back up."
|
437 |
+
msgstr "Jūs apibūdinote abudu - ir %1$s, ir %2$s , todėl nėra nieko, kieno atsarginę kopiją būtų galima sukurti."
|
438 |
+
|
439 |
+
#: functions/interface.functions.php:110
|
440 |
+
#, php-format
|
441 |
+
msgid "The following email address is not valid: %s."
|
442 |
+
msgid_plural "The following email addresses are not valid: %s."
|
443 |
+
msgstr[0] ""
|
444 |
+
msgstr[1] ""
|
445 |
+
msgstr[2] ""
|
446 |
+
|
447 |
+
#: functions/interface.functions.php:120
|
448 |
+
msgid "The last backup email failed to send. It's likely that the file is too large."
|
449 |
+
msgstr ""
|
450 |
+
|
451 |
+
#: functions/interface.functions.php:130
|
452 |
+
#, php-format
|
453 |
+
msgid "Your custom backups directory %1$s doesn't exist and can't be created, your backups will be saved to %2$s instead."
|
454 |
+
msgstr "Jūsų individualizuotas atsarginių kopijų katalogas %1$s neegzistuoja ir negali būti sukurtas, todėl Jūsų atsarginės kopijos bus įrašytos į %2$s, vietoje nurodytojo katalogo."
|
455 |
+
|
456 |
+
#: functions/interface.functions.php:140
|
457 |
+
#, php-format
|
458 |
+
msgid "Your custom backups directory %1$s isn't writable, new backups will be saved to %2$s instead."
|
459 |
+
msgstr "Jūsų individualizuotas atsarginių kopijų katalogas %1$s nėra įrašytinas, todėl naujos atsarginės kopijos bus įrašytos į %2$s, vietoje nurodytojo katalogo."
|
460 |
+
|
461 |
+
#: functions/interface.functions.php:150
|
462 |
+
#, php-format
|
463 |
+
msgid "You have defined a custom exclude list but the following paths don't exist %s, are you sure you entered them correctly?"
|
464 |
+
msgstr "Jūs nurodėte individualizuotą išskyrimų sąrašą, bet šie adresai neegzistuoja %s, ar esate tikras, jog įrašėte juos teisingai?"
|
465 |
+
|
466 |
+
#: functions/interface.functions.php:160
|
467 |
+
msgid "BackUpWordPress detected issues with your last backup."
|
468 |
+
msgstr ""
|
469 |
+
|
470 |
+
#: functions/backup.actions.php:12
|
471 |
+
msgid "Dumping database"
|
472 |
+
msgstr "Duomenų bazės iškrovimas"
|
473 |
+
|
474 |
+
#: functions/backup.actions.php:22
|
475 |
+
msgid "Creating zip archive"
|
476 |
+
msgstr "Kuriamas zip archyvas"
|
477 |
+
|
478 |
+
#: functions/backup.functions.php:19
|
479 |
+
msgid "Removing old backups"
|
480 |
+
msgstr "Pašalinamos senos atsarginės kopijos"
|
481 |
+
|
482 |
+
#: functions/backup.functions.php:147
|
483 |
+
#: functions/backup.functions.php:157
|
484 |
+
#, php-format
|
485 |
+
msgid "Backup of %s"
|
486 |
+
msgstr "%s atsarginė kopija"
|
487 |
+
|
488 |
+
#: functions/backup.functions.php:148
|
489 |
+
#, php-format
|
490 |
+
msgid ""
|
491 |
+
"BackUpWordPress has completed a backup of your site %1$s.\\n"
|
492 |
+
"\\n"
|
493 |
+
"The backup file should be attached to this email.\\n"
|
494 |
+
"\\n"
|
495 |
+
"You can also download the backup file by clicking the link below:\\n"
|
496 |
+
"\\n"
|
497 |
+
"%2$s\\n"
|
498 |
+
"\\n"
|
499 |
+
"Kind Regards\\n"
|
500 |
+
"\\n"
|
501 |
+
" The Happy BackUpWordPress Backup Emailing Robot"
|
502 |
+
msgstr ""
|
503 |
+
"BackUpWordpress baigė kurti Jūsų tinklalapio %1$s atsarginę kopiją.\n"
|
504 |
+
"\n"
|
505 |
+
"Atsarginės kopijos rinkmena turėtų būti pridėta prie šio elektroninio laiško.\n"
|
506 |
+
"\n"
|
507 |
+
"Jūs taip pat galite parsisiųsti atsarginės kopijos rinkmeną, paspausdamas nuorodą žemiau:\n"
|
508 |
+
"\n"
|
509 |
+
"%2$s\n"
|
510 |
+
"\n"
|
511 |
+
"Pagarbiai\n"
|
512 |
+
"\n"
|
513 |
+
"Laimingas BackUpWordPress Elektroninių laiškų siuntimo Robotas"
|
514 |
+
|
515 |
+
#: functions/backup.functions.php:158
|
516 |
+
#, php-format
|
517 |
+
msgid ""
|
518 |
+
"BackUpWordPress has completed a backup of your site %1$s.\\n"
|
519 |
+
"\\n"
|
520 |
+
"Unfortunately the backup file was too large to attach to this email.\\n"
|
521 |
+
"\\n"
|
522 |
+
"You can download the backup file by clicking the link below:\\n"
|
523 |
+
"\\n"
|
524 |
+
"%2$s\\n"
|
525 |
+
"\\n"
|
526 |
+
"Kind Regards\\n"
|
527 |
+
"\\n"
|
528 |
+
" The Happy BackUpWordPress Backup Emailing Robot"
|
529 |
+
msgstr ""
|
530 |
+
"BackUpWordpress baigė kurti Jūsų tinklalapio %1$s atsarginę kopiją.\n"
|
531 |
+
"\n"
|
532 |
+
"Nelaimei, atsarginės kopijos rinkmena buvo per didelė, kad ją būtų galima prisegti prie šio elektroninio laiško.\n"
|
533 |
+
"\n"
|
534 |
+
"Jūs taip pat galite parsisiųsti atsarginės kopijos rinkmeną, paspausdamas nuorodą žemiau:\n"
|
535 |
+
"\n"
|
536 |
+
"%2$s\n"
|
537 |
+
"\n"
|
538 |
+
"Pagarbiai\n"
|
539 |
+
"\n"
|
540 |
+
"Laimingas BackUpWordPress Elektroninių laiškų siuntimo Robotas"
|
541 |
+
|
542 |
+
#: functions/core.functions.php:339
|
543 |
+
#, php-format
|
544 |
+
msgid "This %s file ensures that other people cannot download your backup files."
|
545 |
+
msgstr ""
|
546 |
+
|
backupwordpress/languages/hmbkp-nl.mo
ADDED
Binary file
|
backupwordpress/languages/hmbkp-nl.po
ADDED
@@ -0,0 +1,432 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# Translation of 1.6.8 in Dutch
|
2 |
+
# This file is distributed under the same license as the 1.6.8 package.
|
3 |
+
msgid ""
|
4 |
+
msgstr ""
|
5 |
+
"PO-Revision-Date: 2012-08-10 14:35:04+0000\n"
|
6 |
+
"MIME-Version: 1.0\n"
|
7 |
+
"Content-Type: text/plain; charset=UTF-8\n"
|
8 |
+
"Content-Transfer-Encoding: 8bit\n"
|
9 |
+
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
10 |
+
"X-Generator: GlotPress/0.1\n"
|
11 |
+
"Project-Id-Version: 1.6.8\n"
|
12 |
+
|
13 |
+
#: admin.menus.php:82
|
14 |
+
msgid "Help with translation"
|
15 |
+
msgstr "Vertaal hulp"
|
16 |
+
|
17 |
+
#: admin.backup-button.php:3
|
18 |
+
msgid "cancel"
|
19 |
+
msgstr "Annuleren"
|
20 |
+
|
21 |
+
#: admin.constants.php:23 admin.constants.php:26
|
22 |
+
msgid "Backup %s only, your %s won't be backed up. Defaults to %s."
|
23 |
+
msgstr "Backup alleen %s, de %s zullen niet gebacked up worden. Standaard ingesteld op %s."
|
24 |
+
|
25 |
+
#: admin.menus.php:65
|
26 |
+
msgid "The information below is for version %s. View the readme.txt file for help specific to version %s."
|
27 |
+
msgstr "De informatie hier onder is voor versie %s. Bekijk de readme.txt voor hulp speciaal voor versie %s. "
|
28 |
+
|
29 |
+
#: admin.menus.php:75
|
30 |
+
msgid "FAQ"
|
31 |
+
msgstr "Veel gestelde vragen"
|
32 |
+
|
33 |
+
#: admin.constants.php:3 admin.menus.php:76 admin.settings.php:5
|
34 |
+
msgid "Constants"
|
35 |
+
msgstr "Constanten"
|
36 |
+
|
37 |
+
#: admin.menus.php:81
|
38 |
+
msgid "Support Forums"
|
39 |
+
msgstr "Ondersteunings forums"
|
40 |
+
|
41 |
+
#: admin.settings.php:5
|
42 |
+
msgid "You can define %s in your %s to control some settings. A full list of %s can be found in the %s. Defined settings will not be editable below."
|
43 |
+
msgstr "Je kunt %s definiëren in je %s om de instellingen te beheren. Een volledige lijst van %s is opgesomd in %s. Gedefinieerde instellingen zijn niet hieronder aan te passen."
|
44 |
+
|
45 |
+
#: admin.settings.php:5
|
46 |
+
msgid "help panel"
|
47 |
+
msgstr "Hulp scherm"
|
48 |
+
|
49 |
+
#: admin.settings.php:94
|
50 |
+
msgid "Save Changes"
|
51 |
+
msgstr "Wijzigingen opslaan"
|
52 |
+
|
53 |
+
#: functions/core.functions.php:339
|
54 |
+
msgid "This %s file ensures that other people cannot download your backup files."
|
55 |
+
msgstr "Dit %s bestand voorkomt dat ander gebruikers je back up bestanden downloaden."
|
56 |
+
|
57 |
+
#: functions/interface.functions.php:48
|
58 |
+
msgid "Settings saved."
|
59 |
+
msgstr "Instellingen opgeslagen."
|
60 |
+
|
61 |
+
#: admin.actions.php:70
|
62 |
+
msgid "You have entered an invalid number of backups."
|
63 |
+
msgstr "Je hebt een ongeldig aantal back ups ingevuld."
|
64 |
+
|
65 |
+
#: admin.actions.php:79
|
66 |
+
msgid "%s is an invalid email address."
|
67 |
+
msgstr "%s is een ongeldig email adres."
|
68 |
+
|
69 |
+
#: admin.actions.php:249 functions/interface.functions.php:89
|
70 |
+
#: functions/interface.functions.php:99 functions/interface.functions.php:109
|
71 |
+
#: functions/interface.functions.php:119 functions/interface.functions.php:129
|
72 |
+
#: functions/interface.functions.php:139 functions/interface.functions.php:149
|
73 |
+
msgid "BackUpWordPress has detected a problem."
|
74 |
+
msgstr "BackUpWordPress heeft een probleem ondervonden."
|
75 |
+
|
76 |
+
#: admin.actions.php:249
|
77 |
+
msgid "%s is returning a %s response which could mean cron jobs aren't getting fired properly. BackUpWordPress relies on wp-cron to run scheduled back ups. See the %s for more details."
|
78 |
+
msgstr ""
|
79 |
+
"%s geeft een %s antwoord welke kan betekenen dat cron jobs niet goed opgestart worden.\n"
|
80 |
+
"BackUpWordPress is afhankelijk van wp-cron om geplande back ups te maken. Zie de %s voor meer details."
|
81 |
+
|
82 |
+
#: admin.backup-button.php:7
|
83 |
+
msgid "Back Up Now"
|
84 |
+
msgstr "Back Up Nu."
|
85 |
+
|
86 |
+
#: admin.backups-table.php:13
|
87 |
+
msgid "Size"
|
88 |
+
msgstr "Grootte"
|
89 |
+
|
90 |
+
#: admin.backups-table.php:14
|
91 |
+
msgid "Actions"
|
92 |
+
msgstr "Acties"
|
93 |
+
|
94 |
+
#: admin.backups-table.php:21
|
95 |
+
msgid "Total %s"
|
96 |
+
msgstr "Totaal %s"
|
97 |
+
|
98 |
+
#: admin.constants.php:3
|
99 |
+
msgid "You can %s any of the following %s in your %s to control advanced settings. %s. Defined %s will be highlighted."
|
100 |
+
msgstr "Je kunt %s elke van de volgende %s in je %s om geavanceerde instellingen te beheren. %s. Gedefiniëerde %s zijn gemarkeerd."
|
101 |
+
|
102 |
+
#: admin.constants.php:3
|
103 |
+
msgid "The Codex can help"
|
104 |
+
msgstr "De Codex kan hulp bieden."
|
105 |
+
|
106 |
+
#: admin.constants.php:8
|
107 |
+
msgid "The path to folder you would like to store your backup files in, defaults to %s."
|
108 |
+
msgstr "Het pad naar de map waar je de back up bestanden wilt bewaren, standaard naar %s."
|
109 |
+
|
110 |
+
#: admin.constants.php:11
|
111 |
+
msgid "The path to your %s executable. Will be used for the %s part of the back up if available."
|
112 |
+
msgstr "Het pad naar je %s uitvoerbaar bestand. Wordt gebruikt voor het %s gedeelte van de back up indien beschikbaar."
|
113 |
+
|
114 |
+
#: admin.constants.php:11 admin.constants.php:14 admin.constants.php:23
|
115 |
+
#: admin.constants.php:26 admin.status.php:14 admin.status.php:17
|
116 |
+
msgid "database"
|
117 |
+
msgstr "database"
|
118 |
+
|
119 |
+
#: admin.constants.php:14
|
120 |
+
msgid "The path to your %s executable. Will be used to zip up your %s and %s if available."
|
121 |
+
msgstr "Het pad naar je %s uitvoerbaar bestand. Wordt gebruikt om het %s gedeelte in te pakken en %s indien beschikbaar. "
|
122 |
+
|
123 |
+
#: admin.constants.php:14 admin.constants.php:23 admin.constants.php:26
|
124 |
+
#: admin.status.php:14 admin.status.php:20
|
125 |
+
msgid "files"
|
126 |
+
msgstr "bestanden"
|
127 |
+
|
128 |
+
#: admin.constants.php:17
|
129 |
+
msgid "Completely disables the automatic back up. You can still back up using the \"Back Up Now\" button. Defaults to %s."
|
130 |
+
msgstr "Schakelt de automatische back-up volledig uit. Je kunt nog steeds een back-up maken met behulp van de \"Back Up Nu\" knop. Standaard naar %s."
|
131 |
+
|
132 |
+
#: admin.constants.php:20
|
133 |
+
msgid "Number of backups to keep, older backups will be deleted automatically when a new backup is completed. Detaults to %s."
|
134 |
+
msgstr "Aantal te bewaren back-ups, oudere back-ups worden automatisch verwijderd wanneer er een nieuwe back-up is voltooid. Standaard naar %s."
|
135 |
+
|
136 |
+
#: admin.constants.php:29
|
137 |
+
msgid "The time that the daily back up should run. Defaults to %s."
|
138 |
+
msgstr "De tijd waarop de dagelijkse back-up moet worden uitgevoerd. Standaard naar %s."
|
139 |
+
|
140 |
+
#: admin.constants.php:32
|
141 |
+
msgid "Attempt to email a copy of your backups. Value should be email address to send backups to. Defaults to %s."
|
142 |
+
msgstr "Poging om een kopie van uw back-ups e-mailen. Waarde moet het e-mailadres om back-ups naar toe te sturen zijn. Standaard naar %s."
|
143 |
+
|
144 |
+
#: admin.constants.php:35
|
145 |
+
msgid "Comma separated list of files or directories to exclude, the backups directory is automatically excluded."
|
146 |
+
msgstr "Een door komma's gescheiden lijst van bestanden of mappen die uitgesloten worden, de backup(s) map is automatisch uitgesloten."
|
147 |
+
|
148 |
+
#: admin.constants.php:38
|
149 |
+
msgid "The capability to use when calling %s. Defaults to %s."
|
150 |
+
msgstr "De mogelijkheid om te gebruiken bij het aanroepen van %s. Standaard naar %s."
|
151 |
+
|
152 |
+
#: admin.menus.php:10 admin.page.php:7
|
153 |
+
msgid "Manage Backups"
|
154 |
+
msgstr "Beheer back ups"
|
155 |
+
|
156 |
+
#: admin.menus.php:10 admin.menus.php:34
|
157 |
+
msgid "Backups"
|
158 |
+
msgstr "Back ups"
|
159 |
+
|
160 |
+
#: admin.menus.php:65
|
161 |
+
msgid "You are not using the latest stable version of BackUpWordPress"
|
162 |
+
msgstr "Je gebruikt niet de laatste stabiele versie van BackUpWordPress"
|
163 |
+
|
164 |
+
#: admin.menus.php:79
|
165 |
+
msgid "For more information:"
|
166 |
+
msgstr "Voor meer informatie:"
|
167 |
+
|
168 |
+
#: admin.page.php:11 admin.settings.php:3
|
169 |
+
msgid "Settings"
|
170 |
+
msgstr "Instellingen"
|
171 |
+
|
172 |
+
#: admin.page.php:23
|
173 |
+
msgid "You need to fix the issues detailed above before BackUpWordPress can start."
|
174 |
+
msgstr "Je moet de hierboven beschreven problemen oplossen voordat BackUpWordPress kan beginnen."
|
175 |
+
|
176 |
+
#: admin.page.php:29
|
177 |
+
msgid "If you need help getting things working you are more than welcome to email us at %s and we'll do what we can to help."
|
178 |
+
msgstr "Als u hulp nodig bent om dingen te laten werken bent u meer dan welkom om ons te e-mailen op %s en we zullen doen wat we kunnen om te helpen."
|
179 |
+
|
180 |
+
#: admin.settings.php:16
|
181 |
+
msgid "Automatic Backups"
|
182 |
+
msgstr "Automatische Backups"
|
183 |
+
|
184 |
+
#: admin.settings.php:22
|
185 |
+
msgid "Backup my site automatically."
|
186 |
+
msgstr "Backup mijn site automatisch"
|
187 |
+
|
188 |
+
#: admin.settings.php:27
|
189 |
+
msgid "No automatic backups."
|
190 |
+
msgstr "Geen automatische backups."
|
191 |
+
|
192 |
+
#: admin.settings.php:36
|
193 |
+
msgid "Frequency of backups"
|
194 |
+
msgstr "Frequentie van de backups"
|
195 |
+
|
196 |
+
#: admin.settings.php:40
|
197 |
+
msgid "Automatic backups will occur"
|
198 |
+
msgstr "Automatische backups ingesteld."
|
199 |
+
|
200 |
+
#: admin.settings.php:43
|
201 |
+
msgid "Daily"
|
202 |
+
msgstr "Dagelijks"
|
203 |
+
|
204 |
+
#: admin.settings.php:44
|
205 |
+
msgid "Weekly"
|
206 |
+
msgstr "Wekelijks"
|
207 |
+
|
208 |
+
#: admin.settings.php:45
|
209 |
+
msgid "Fortnightly"
|
210 |
+
msgstr "Alle veertien dagen"
|
211 |
+
|
212 |
+
#: admin.settings.php:46
|
213 |
+
msgid "Monthly"
|
214 |
+
msgstr "Maandelijks"
|
215 |
+
|
216 |
+
#: admin.settings.php:55
|
217 |
+
msgid "What to Backup"
|
218 |
+
msgstr "Wat te back uppen"
|
219 |
+
|
220 |
+
#: admin.settings.php:59
|
221 |
+
msgid "Backup my"
|
222 |
+
msgstr "Back up mijn"
|
223 |
+
|
224 |
+
#: admin.settings.php:62
|
225 |
+
msgid "database & files"
|
226 |
+
msgstr "database & bestanden"
|
227 |
+
|
228 |
+
#: admin.settings.php:63
|
229 |
+
msgid "database only"
|
230 |
+
msgstr "Alleen database"
|
231 |
+
|
232 |
+
#: admin.settings.php:64
|
233 |
+
msgid "files only"
|
234 |
+
msgstr "Alleen bestanden"
|
235 |
+
|
236 |
+
#: admin.settings.php:72
|
237 |
+
msgid "Number of backups"
|
238 |
+
msgstr "Aantal back ups"
|
239 |
+
|
240 |
+
#: admin.settings.php:73
|
241 |
+
msgid "The last %s backups will be stored on the server."
|
242 |
+
msgstr "De laatste %s backups zullen worden opgeslagen op de server."
|
243 |
+
|
244 |
+
#: admin.settings.php:77
|
245 |
+
msgid "Email backups"
|
246 |
+
msgstr "Email back ups."
|
247 |
+
|
248 |
+
#: admin.settings.php:78
|
249 |
+
msgid "A copy of the backup file will be emailed to this address. Disabled if left blank."
|
250 |
+
msgstr "Een kopie van de back up zal worden verzonden naar dit email adres. Uitgeschakeld indien niet ingevuld."
|
251 |
+
|
252 |
+
#: admin.settings.php:82
|
253 |
+
msgid "Excludes"
|
254 |
+
msgstr "Exclusief"
|
255 |
+
|
256 |
+
#: admin.settings.php:85
|
257 |
+
msgid "A comma separated list of file and directory paths that you do <strong>not</strong> want to backup."
|
258 |
+
msgstr "Een door komma's gescheiden lijst van bestanden en mappen die je <strong>niet</strong> wilt back uppen."
|
259 |
+
|
260 |
+
#: admin.settings.php:86
|
261 |
+
msgid "e.g."
|
262 |
+
msgstr "bijv."
|
263 |
+
|
264 |
+
#: admin.status.php:9
|
265 |
+
msgid "Automatic backups are %s."
|
266 |
+
msgstr "Automatische back-ups zijn %s."
|
267 |
+
|
268 |
+
#: admin.status.php:9
|
269 |
+
msgid "disabled"
|
270 |
+
msgstr "uitgeschakeld"
|
271 |
+
|
272 |
+
#: admin.status.php:14
|
273 |
+
msgid "&"
|
274 |
+
msgstr "&"
|
275 |
+
|
276 |
+
#: admin.status.php:25
|
277 |
+
msgid "Your %s will be automatically backed up <code>%s</code>. The next backup will occur at %s on %s and be saved to %s."
|
278 |
+
msgstr "Uw %s wordt automatisch geback-upped <code> %s</code>. De volgende back-up zal plaatsvinden op %s op %s en worden opgeslagen in %s."
|
279 |
+
|
280 |
+
#: admin.status.php:25
|
281 |
+
msgid "It's currently %s"
|
282 |
+
msgstr "Op dit moment %s"
|
283 |
+
|
284 |
+
#: admin.status.php:31
|
285 |
+
msgid "Your site is %s. Backups will be compressed and should be smaller than this."
|
286 |
+
msgstr "Je site is %s. Back ups worden gecomprimeerd (gezipt) en zouden kleiner moeten worden dan dit."
|
287 |
+
|
288 |
+
#: admin.status.php:31
|
289 |
+
msgid "Calculating Size..."
|
290 |
+
msgstr "Grootte berekenen..."
|
291 |
+
|
292 |
+
#: admin.status.php:34
|
293 |
+
msgid "A copy of each backup will be emailed to %s."
|
294 |
+
msgstr "Een kopie van elke back up zal worden gemaild naar %s."
|
295 |
+
|
296 |
+
#: admin.status.php:38
|
297 |
+
msgid "The following paths will be excluded from your backups %s."
|
298 |
+
msgstr "De volgende paden zullen worden uitgesloten van je back-ups %s."
|
299 |
+
|
300 |
+
#: functions/backup.actions.php:12
|
301 |
+
msgid "Dumping database"
|
302 |
+
msgstr "Database verwijderen"
|
303 |
+
|
304 |
+
#: functions/backup.actions.php:22
|
305 |
+
msgid "Creating zip archive"
|
306 |
+
msgstr "Een zip archief maken"
|
307 |
+
|
308 |
+
#: functions/backup.functions.php:19
|
309 |
+
msgid "Removing old backups"
|
310 |
+
msgstr "Oude back ups verwijderen"
|
311 |
+
|
312 |
+
#: functions/backup.functions.php:147 functions/backup.functions.php:157
|
313 |
+
msgid "Backup of %s"
|
314 |
+
msgstr "Back up van %s"
|
315 |
+
|
316 |
+
#: functions/backup.functions.php:148
|
317 |
+
msgid ""
|
318 |
+
"BackUpWordPress has completed a backup of your site %s.\n"
|
319 |
+
"\n"
|
320 |
+
"The backup file should be attached to this email.\n"
|
321 |
+
"\n"
|
322 |
+
"You can also download the backup file by clicking the link below:\n"
|
323 |
+
"\n"
|
324 |
+
"%s\n"
|
325 |
+
"\n"
|
326 |
+
"Kind Regards\n"
|
327 |
+
"\n"
|
328 |
+
" The Happy BackUpWordPress Backup Emailing Robot"
|
329 |
+
msgstr ""
|
330 |
+
"BackUpWordPress heeft een back up van je site %s gemaakt.\n"
|
331 |
+
"\n"
|
332 |
+
"Het back up bestand is als bijlage toegevoegd bij deze mail.\n"
|
333 |
+
"\n"
|
334 |
+
"Je kunt het back up bestand ook downloaden door op onderstaande link te klikken:\n"
|
335 |
+
"\n"
|
336 |
+
"%s\n"
|
337 |
+
"\n"
|
338 |
+
"Vriendelijke groet\n"
|
339 |
+
"\n"
|
340 |
+
"De \"Happy BackUpWordPress Backup Email Robot."
|
341 |
+
|
342 |
+
#: functions/backup.functions.php:158
|
343 |
+
msgid ""
|
344 |
+
"BackUpWordPress has completed a backup of your site %s.\n"
|
345 |
+
"\n"
|
346 |
+
"Unfortunately the backup file was too large to attach to this email.\n"
|
347 |
+
"\n"
|
348 |
+
"You can download the backup file by clicking the link below:\n"
|
349 |
+
"\n"
|
350 |
+
"%s\n"
|
351 |
+
"\n"
|
352 |
+
"Kind Regards\n"
|
353 |
+
"\n"
|
354 |
+
" The Happy BackUpWordPress Backup Emailing Robot"
|
355 |
+
msgstr ""
|
356 |
+
"BackUpWordPress heeft een back up van je site %s gemaakt. \n"
|
357 |
+
"\n"
|
358 |
+
"Het back up bestand is te groot om als bijlage toe te voegen bij deze mail.\n"
|
359 |
+
"\n"
|
360 |
+
"Je kunt het back up bestand downloaden door op onderstaande link te klikken:\n"
|
361 |
+
"\n"
|
362 |
+
" %s\n"
|
363 |
+
"\n"
|
364 |
+
"Vriendelijke groet De \"Happy BackUpWordPress Backup Email Robot. "
|
365 |
+
|
366 |
+
#: functions/interface.functions.php:25
|
367 |
+
msgid "Download"
|
368 |
+
msgstr "Download"
|
369 |
+
|
370 |
+
#: functions/interface.functions.php:26
|
371 |
+
msgid "Delete"
|
372 |
+
msgstr "Verwijderen"
|
373 |
+
|
374 |
+
#: functions/interface.functions.php:67 functions/interface.functions.php:79
|
375 |
+
msgid "BackUpWordPress is almost ready."
|
376 |
+
msgstr "BackUpWordPress is bijna klaar."
|
377 |
+
|
378 |
+
#: functions/interface.functions.php:67
|
379 |
+
msgid "The backups directory can't be created because your %s directory isn't writable, run %s or %s or create the folder yourself."
|
380 |
+
msgstr "Je Back Up map kan niet gemaakt worden omdat je %s map niet beschrijfbaar is, voer %s of %s uit om de map handmatig te creëren."
|
381 |
+
|
382 |
+
#: functions/interface.functions.php:79
|
383 |
+
msgid "Your backups directory isn't writable. run %s or %s or set the permissions yourself."
|
384 |
+
msgstr "Je Back Up map is beveiligd tegen schrijven, voer %s of %s uit of verander de permissies handmatig."
|
385 |
+
|
386 |
+
#: functions/interface.functions.php:89
|
387 |
+
msgid " %s is running in %s. Please contact your host and ask them to disable %s."
|
388 |
+
msgstr "%s wordt uitgevoerd in %s. Neem contact op met je host en vraag hem om %s uit te schakelen"
|
389 |
+
|
390 |
+
#: functions/interface.functions.php:99
|
391 |
+
msgid "You have both %s and %s defined so there isn't anything to back up."
|
392 |
+
msgstr "Je hebt zowel %s als %s gedefinieerd voor uitsluiting, dus er is niets om te back uppen."
|
393 |
+
|
394 |
+
#: functions/interface.functions.php:109
|
395 |
+
msgid "The following email address's are not valid: %s."
|
396 |
+
msgstr "De volgende email adressen zijn niet geldig: %s."
|
397 |
+
|
398 |
+
#: functions/interface.functions.php:119
|
399 |
+
msgid "The last backup email failed to send. It's likely that the file is too large."
|
400 |
+
msgstr "De laatste back up kon niet worden verzonden. Waarschijnlijk is het bestand te groot."
|
401 |
+
|
402 |
+
#: functions/interface.functions.php:129
|
403 |
+
msgid "Your custom backups directory %s doesn't exist and can't be created, your backups will be saved to %s instead."
|
404 |
+
msgstr "Je aangepaste back-ups map %s bestaat niet en kan niet worden gemaakt, in plaats daarvan zullen je back-ups worden opgeslagen in %s."
|
405 |
+
|
406 |
+
#: functions/interface.functions.php:139
|
407 |
+
msgid "Your custom backups directory %s isn't writable, new backups will be saved to %s instead."
|
408 |
+
msgstr "Je aangepaste back-ups map %s is tegen schrijven beveiligd, nieuwe back-ups zullen worden opgeslagen in %s. "
|
409 |
+
|
410 |
+
#: functions/interface.functions.php:149
|
411 |
+
msgid "You have defined a custom exclude list but the following paths don't exist %s, are you sure you entered them correctly?"
|
412 |
+
msgstr "Je hebt een aangepaste lijst van uitsluitingen gedefinieerd, maar de volgende paden zijn er niet %s, weet je zeker dat je deze correct ingevoerd hebt?"
|
413 |
+
|
414 |
+
#: functions/interface.functions.php:159
|
415 |
+
msgid "BackUpWordPress detected issues with your last backup."
|
416 |
+
msgstr "BackUpWordPress heeft problemen ondervonden met je laatste back-up."
|
417 |
+
|
418 |
+
#: hm-backup/hm-backup.php:532
|
419 |
+
msgid "The backup file was not created"
|
420 |
+
msgstr "Het back-up bestand is niet gemaakt"
|
421 |
+
|
422 |
+
#: hm-backup/hm-backup.php:603
|
423 |
+
msgid "The following files are unreadable and couldn't be backed up: "
|
424 |
+
msgstr "De volgende bestanden zijn onleesbaar en konden niet in een back-up worden opgenomen:"
|
425 |
+
|
426 |
+
#: plugin.php:47
|
427 |
+
msgid "BackUpWordPress requires PHP version 5.2.4 or greater."
|
428 |
+
msgstr "BackUpWordPress vereist PHP versie 5.2.4 of hoger."
|
429 |
+
|
430 |
+
#: plugin.php:58
|
431 |
+
msgid "BackUpWordPress requires WordPress version %s."
|
432 |
+
msgstr "BackUpWordPress vereist WordPress versie %s."
|
backupwordpress/languages/hmbkp-ro_RO.mo
ADDED
Binary file
|
backupwordpress/languages/hmbkp-ro_RO.po
ADDED
@@ -0,0 +1,544 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# Translation of 1.6.8 in Romanian
|
2 |
+
# This file is distributed under the same license as the 1.6.8 package.
|
3 |
+
msgid ""
|
4 |
+
msgstr ""
|
5 |
+
"Project-Id-Version: 1.6.8\n"
|
6 |
+
"Report-Msgid-Bugs-To: \n"
|
7 |
+
"POT-Creation-Date: 2012-08-14 14:54+0100\n"
|
8 |
+
"PO-Revision-Date: 2012-08-14 14:55+0100\n"
|
9 |
+
"Last-Translator: Flo Edelmann <florian-edelmann@online.de>\n"
|
10 |
+
"Language-Team: \n"
|
11 |
+
"Language: \n"
|
12 |
+
"MIME-Version: 1.0\n"
|
13 |
+
"Content-Type: text/plain; charset=UTF-8\n"
|
14 |
+
"Content-Transfer-Encoding: 8bit\n"
|
15 |
+
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < 20)) ? 1 : 2);;\n"
|
16 |
+
"X-Generator: GlotPress/0.1\n"
|
17 |
+
"X-Poedit-Language: Romanian\n"
|
18 |
+
"X-Poedit-Country: ROMANIA\n"
|
19 |
+
"X-Poedit-SourceCharset: utf-8\n"
|
20 |
+
"X-Poedit-KeywordsList: __;_e;_n:1,2\n"
|
21 |
+
"X-Poedit-Basepath: ..\n"
|
22 |
+
"X-Poedit-SearchPath-0: .\n"
|
23 |
+
|
24 |
+
#: admin.settings.php:3
|
25 |
+
#: admin.page.php:11
|
26 |
+
msgid "Settings"
|
27 |
+
msgstr ""
|
28 |
+
|
29 |
+
#: admin.settings.php:5
|
30 |
+
#, php-format
|
31 |
+
msgid "You can define %1$s in your %2$s to control some settings. A full list of %3$s can be found in the %4$s. Defined settings will not be editable below."
|
32 |
+
msgstr ""
|
33 |
+
|
34 |
+
#: admin.settings.php:5
|
35 |
+
#: admin.constants.php:3
|
36 |
+
#: admin.menus.php:76
|
37 |
+
msgid "Constants"
|
38 |
+
msgstr ""
|
39 |
+
|
40 |
+
#: admin.settings.php:5
|
41 |
+
msgid "help panel"
|
42 |
+
msgstr ""
|
43 |
+
|
44 |
+
#: admin.settings.php:16
|
45 |
+
msgid "Automatic Backups"
|
46 |
+
msgstr ""
|
47 |
+
|
48 |
+
#: admin.settings.php:22
|
49 |
+
msgid "Backup my site automatically."
|
50 |
+
msgstr ""
|
51 |
+
|
52 |
+
#: admin.settings.php:27
|
53 |
+
msgid "No automatic backups."
|
54 |
+
msgstr ""
|
55 |
+
|
56 |
+
#: admin.settings.php:36
|
57 |
+
msgid "Frequency of backups"
|
58 |
+
msgstr ""
|
59 |
+
|
60 |
+
#: admin.settings.php:40
|
61 |
+
msgid "Automatic backups will occur"
|
62 |
+
msgstr ""
|
63 |
+
|
64 |
+
#: admin.settings.php:43
|
65 |
+
msgid "Daily"
|
66 |
+
msgstr ""
|
67 |
+
|
68 |
+
#: admin.settings.php:44
|
69 |
+
msgid "Weekly"
|
70 |
+
msgstr ""
|
71 |
+
|
72 |
+
#: admin.settings.php:45
|
73 |
+
msgid "Fortnightly"
|
74 |
+
msgstr ""
|
75 |
+
|
76 |
+
#: admin.settings.php:46
|
77 |
+
msgid "Monthly"
|
78 |
+
msgstr ""
|
79 |
+
|
80 |
+
#: admin.settings.php:55
|
81 |
+
msgid "What to Backup"
|
82 |
+
msgstr ""
|
83 |
+
|
84 |
+
#: admin.settings.php:59
|
85 |
+
msgid "Backup my"
|
86 |
+
msgstr ""
|
87 |
+
|
88 |
+
#: admin.settings.php:62
|
89 |
+
msgid "database & files"
|
90 |
+
msgstr ""
|
91 |
+
|
92 |
+
#: admin.settings.php:63
|
93 |
+
msgid "database only"
|
94 |
+
msgstr ""
|
95 |
+
|
96 |
+
#: admin.settings.php:64
|
97 |
+
msgid "files only"
|
98 |
+
msgstr ""
|
99 |
+
|
100 |
+
#: admin.settings.php:72
|
101 |
+
msgid "Number of backups"
|
102 |
+
msgstr ""
|
103 |
+
|
104 |
+
#: admin.settings.php:73
|
105 |
+
#, php-format
|
106 |
+
msgid "The last %s backups will be stored on the server."
|
107 |
+
msgstr ""
|
108 |
+
|
109 |
+
#: admin.settings.php:77
|
110 |
+
msgid "Email backups"
|
111 |
+
msgstr ""
|
112 |
+
|
113 |
+
#: admin.settings.php:78
|
114 |
+
msgid "A copy of the backup file will be emailed to this address. Disabled if left blank."
|
115 |
+
msgstr ""
|
116 |
+
|
117 |
+
#: admin.settings.php:82
|
118 |
+
msgid "Excludes"
|
119 |
+
msgstr ""
|
120 |
+
|
121 |
+
#: admin.settings.php:85
|
122 |
+
msgid "A comma separated list of file and directory paths that you do <strong>not</strong> want to backup."
|
123 |
+
msgstr ""
|
124 |
+
|
125 |
+
#: admin.settings.php:86
|
126 |
+
#: admin.constants.php:8
|
127 |
+
#: admin.constants.php:11
|
128 |
+
#: admin.constants.php:14
|
129 |
+
#: admin.constants.php:17
|
130 |
+
#: admin.constants.php:20
|
131 |
+
#: admin.constants.php:23
|
132 |
+
#: admin.constants.php:26
|
133 |
+
#: admin.constants.php:29
|
134 |
+
#: admin.constants.php:32
|
135 |
+
#: admin.constants.php:35
|
136 |
+
#: admin.constants.php:38
|
137 |
+
#: admin.constants.php:41
|
138 |
+
msgid "e.g."
|
139 |
+
msgstr ""
|
140 |
+
|
141 |
+
#: admin.settings.php:94
|
142 |
+
msgid "Save Changes"
|
143 |
+
msgstr ""
|
144 |
+
|
145 |
+
#: admin.backups-table.php:12
|
146 |
+
#, php-format
|
147 |
+
msgid "1 backup completed"
|
148 |
+
msgid_plural "%d backups completed"
|
149 |
+
msgstr[0] ""
|
150 |
+
msgstr[1] ""
|
151 |
+
msgstr[2] ""
|
152 |
+
|
153 |
+
#: admin.backups-table.php:13
|
154 |
+
msgid "Size"
|
155 |
+
msgstr "Dimensiunea"
|
156 |
+
|
157 |
+
#: admin.backups-table.php:14
|
158 |
+
msgid "Actions"
|
159 |
+
msgstr "Acţiuni"
|
160 |
+
|
161 |
+
#: admin.backups-table.php:20
|
162 |
+
#, php-format
|
163 |
+
msgid "Only the most recent backup will be saved"
|
164 |
+
msgid_plural "The %d most recent backups will be saved"
|
165 |
+
msgstr[0] ""
|
166 |
+
msgstr[1] ""
|
167 |
+
msgstr[2] ""
|
168 |
+
|
169 |
+
#: admin.backups-table.php:21
|
170 |
+
#, php-format
|
171 |
+
msgid "Total %s"
|
172 |
+
msgstr ""
|
173 |
+
|
174 |
+
#: admin.page.php:7
|
175 |
+
#: admin.menus.php:10
|
176 |
+
msgid "Manage Backups"
|
177 |
+
msgstr "Gestionaţi backup-uri"
|
178 |
+
|
179 |
+
#: admin.page.php:23
|
180 |
+
msgid "You need to fix the issues detailed above before BackUpWordPress can start."
|
181 |
+
msgstr "Aveţi nevoie pentru a remedia problemele detaliate mai sus înainte de a începe BackUpWordPress."
|
182 |
+
|
183 |
+
#: admin.page.php:29
|
184 |
+
#, php-format
|
185 |
+
msgid "If you need help getting things working you are more than welcome to email us at %s and we'll do what we can to help."
|
186 |
+
msgstr "Dacă aveţi nevoie de ajutor Noţiuni de bază lucrurile de lucru sunteţi mai mult decât binevenit la e-mail-ne la %s şi vom face ceea ce putem pentru a ajuta."
|
187 |
+
|
188 |
+
#: admin.backup-button.php:3
|
189 |
+
msgid "cancel"
|
190 |
+
msgstr ""
|
191 |
+
|
192 |
+
#: admin.backup-button.php:7
|
193 |
+
msgid "Back Up Now"
|
194 |
+
msgstr "Rezervă acum"
|
195 |
+
|
196 |
+
#: admin.constants.php:3
|
197 |
+
#, php-format
|
198 |
+
msgid "You can %1$s any of the following %2$s in your %3$s to control advanced settings. %4$s. Defined %5$s will be highlighted."
|
199 |
+
msgstr ""
|
200 |
+
|
201 |
+
#: admin.constants.php:3
|
202 |
+
msgid "The Codex can help"
|
203 |
+
msgstr "Codex poate ajuta"
|
204 |
+
|
205 |
+
#: admin.constants.php:8
|
206 |
+
#, php-format
|
207 |
+
msgid "The path to folder you would like to store your backup files in, defaults to %s."
|
208 |
+
msgstr "Calea la folderul pe care doriţi să stocaţi fişierele copie de rezervă în, implicit la % s."
|
209 |
+
|
210 |
+
#: admin.constants.php:11
|
211 |
+
#, php-format
|
212 |
+
msgid "The path to your %1$s executable. Will be used for the %2$s part of the back up if available."
|
213 |
+
msgstr ""
|
214 |
+
|
215 |
+
#: admin.constants.php:11
|
216 |
+
#: admin.constants.php:14
|
217 |
+
#: admin.constants.php:23
|
218 |
+
#: admin.constants.php:26
|
219 |
+
#: admin.status.php:14
|
220 |
+
#: admin.status.php:18
|
221 |
+
msgid "database"
|
222 |
+
msgstr "baza de date"
|
223 |
+
|
224 |
+
#: admin.constants.php:14
|
225 |
+
#, php-format
|
226 |
+
msgid "The path to your %1$s executable. Will be used to zip up your %2$s and %3$s if available."
|
227 |
+
msgstr ""
|
228 |
+
|
229 |
+
#: admin.constants.php:14
|
230 |
+
#: admin.constants.php:23
|
231 |
+
#: admin.constants.php:26
|
232 |
+
#: admin.status.php:14
|
233 |
+
#: admin.status.php:22
|
234 |
+
msgid "files"
|
235 |
+
msgstr "fişiere"
|
236 |
+
|
237 |
+
#: admin.constants.php:17
|
238 |
+
#, php-format
|
239 |
+
msgid "Completely disables the automatic back up. You can still back up using the \"Back Up Now\" button. Defaults to %s."
|
240 |
+
msgstr ""
|
241 |
+
|
242 |
+
#: admin.constants.php:20
|
243 |
+
#, php-format
|
244 |
+
msgid "Number of backups to keep, older backups will be deleted automatically when a new backup is completed. Defaults to %s."
|
245 |
+
msgstr ""
|
246 |
+
|
247 |
+
#: admin.constants.php:23
|
248 |
+
#: admin.constants.php:26
|
249 |
+
#, php-format
|
250 |
+
msgid "Backup %1$s only, your %2$s won't be backed up. Defaults to %3$s."
|
251 |
+
msgstr ""
|
252 |
+
|
253 |
+
#: admin.constants.php:29
|
254 |
+
#, php-format
|
255 |
+
msgid "The time that the daily back up should run. Defaults to %s."
|
256 |
+
msgstr ""
|
257 |
+
|
258 |
+
#: admin.constants.php:32
|
259 |
+
#, php-format
|
260 |
+
msgid "Attempt to email a copy of your backups. Value should be email address to send backups to. Defaults to %s."
|
261 |
+
msgstr ""
|
262 |
+
|
263 |
+
#: admin.constants.php:35
|
264 |
+
msgid "Comma separated list of files or directories to exclude, the backups directory is automatically excluded."
|
265 |
+
msgstr ""
|
266 |
+
|
267 |
+
#: admin.constants.php:38
|
268 |
+
#, php-format
|
269 |
+
msgid "The capability to use when calling %1$s. Defaults to %2$s."
|
270 |
+
msgstr ""
|
271 |
+
|
272 |
+
#: admin.constants.php:41
|
273 |
+
#, php-format
|
274 |
+
msgid "The root directory that is backed up. Defaults to %s."
|
275 |
+
msgstr ""
|
276 |
+
|
277 |
+
#: admin.actions.php:70
|
278 |
+
msgid "You have entered an invalid number of backups."
|
279 |
+
msgstr ""
|
280 |
+
|
281 |
+
#: admin.actions.php:79
|
282 |
+
#, php-format
|
283 |
+
msgid "%s is an invalid email address."
|
284 |
+
msgstr ""
|
285 |
+
|
286 |
+
#: admin.actions.php:249
|
287 |
+
#: functions/interface.functions.php:89
|
288 |
+
#: functions/interface.functions.php:99
|
289 |
+
#: functions/interface.functions.php:110
|
290 |
+
#: functions/interface.functions.php:120
|
291 |
+
#: functions/interface.functions.php:130
|
292 |
+
#: functions/interface.functions.php:140
|
293 |
+
#: functions/interface.functions.php:150
|
294 |
+
msgid "BackUpWordPress has detected a problem."
|
295 |
+
msgstr "BackUpWordPress a detectat o problemă."
|
296 |
+
|
297 |
+
#: admin.actions.php:249
|
298 |
+
#, php-format
|
299 |
+
msgid "%1$s is returning a %2$s response which could mean cron jobs aren't getting fired properly. BackUpWordPress relies on wp-cron to run scheduled back ups. See the %3$s for more details."
|
300 |
+
msgstr ""
|
301 |
+
|
302 |
+
#: admin.menus.php:10
|
303 |
+
#: admin.menus.php:34
|
304 |
+
msgid "Backups"
|
305 |
+
msgstr "Copii de rezervă"
|
306 |
+
|
307 |
+
#: admin.menus.php:65
|
308 |
+
msgid "You are not using the latest stable version of BackUpWordPress"
|
309 |
+
msgstr "Nu utilizaţi cea mai recentă versiune stabilă de BackUpWordPress"
|
310 |
+
|
311 |
+
#: admin.menus.php:65
|
312 |
+
#, php-format
|
313 |
+
msgid "The information below is for version %1$s. View the <code>readme.txt</code> file for help specific to version %2$s."
|
314 |
+
msgstr ""
|
315 |
+
|
316 |
+
#: admin.menus.php:75
|
317 |
+
msgid "FAQ"
|
318 |
+
msgstr ""
|
319 |
+
|
320 |
+
#: admin.menus.php:79
|
321 |
+
msgid "For more information:"
|
322 |
+
msgstr ""
|
323 |
+
|
324 |
+
#: admin.menus.php:81
|
325 |
+
msgid "Support Forums"
|
326 |
+
msgstr ""
|
327 |
+
|
328 |
+
#: admin.menus.php:82
|
329 |
+
msgid "Help with translation"
|
330 |
+
msgstr ""
|
331 |
+
|
332 |
+
#: plugin.php:47
|
333 |
+
msgid "BackUpWordPress requires PHP version 5.2.4 or greater."
|
334 |
+
msgstr ""
|
335 |
+
|
336 |
+
#: plugin.php:58
|
337 |
+
#, php-format
|
338 |
+
msgid "BackUpWordPress requires WordPress version %s."
|
339 |
+
msgstr "BackUpWordPress necesită WordPress versiunea % s."
|
340 |
+
|
341 |
+
#: admin.status.php:9
|
342 |
+
#, php-format
|
343 |
+
msgid "Automatic backups are %s."
|
344 |
+
msgstr "Copierea de rezervă sunt % s."
|
345 |
+
|
346 |
+
#: admin.status.php:9
|
347 |
+
msgid "disabled"
|
348 |
+
msgstr "dezactivat"
|
349 |
+
|
350 |
+
#: admin.status.php:14
|
351 |
+
msgid "&"
|
352 |
+
msgstr ""
|
353 |
+
|
354 |
+
#: admin.status.php:32
|
355 |
+
#, php-format
|
356 |
+
msgid "Your %1$s will be automatically backed up %2$s. The next backup will occur at %3$s on %4$s and be saved to %5$s."
|
357 |
+
msgid_plural "Your %1$s will be automatically backed up %2$s. The next backup will occur at %3$s on %4$s and be saved to %5$s."
|
358 |
+
msgstr[0] ""
|
359 |
+
msgstr[1] ""
|
360 |
+
msgstr[2] ""
|
361 |
+
|
362 |
+
#: admin.status.php:39
|
363 |
+
#, php-format
|
364 |
+
msgid "It's currently %s"
|
365 |
+
msgstr ""
|
366 |
+
|
367 |
+
#: admin.status.php:47
|
368 |
+
#, php-format
|
369 |
+
msgid "Your site is %s. Backups will be compressed and should be smaller than this."
|
370 |
+
msgstr ""
|
371 |
+
|
372 |
+
#: admin.status.php:47
|
373 |
+
msgid "Calculating Size..."
|
374 |
+
msgstr "Calculul dimensiunea..."
|
375 |
+
|
376 |
+
#: admin.status.php:50
|
377 |
+
#, php-format
|
378 |
+
msgid "A copy of each backup will be emailed to %s."
|
379 |
+
msgstr "O copie de rezervă fiecare va fi trimis la % s."
|
380 |
+
|
381 |
+
#: admin.status.php:54
|
382 |
+
#, php-format
|
383 |
+
msgid "The following paths will be excluded from your backups %s."
|
384 |
+
msgstr "Următoarele căi vor fi excluşi din copiile de rezervă % s."
|
385 |
+
|
386 |
+
#: hm-backup/hm-backup.php:532
|
387 |
+
msgid "The backup file was not created"
|
388 |
+
msgstr ""
|
389 |
+
|
390 |
+
#: hm-backup/hm-backup.php:603
|
391 |
+
msgid "The following files are unreadable and couldn't be backed up: "
|
392 |
+
msgstr ""
|
393 |
+
|
394 |
+
#: functions/interface.functions.php:25
|
395 |
+
msgid "Download"
|
396 |
+
msgstr "Download"
|
397 |
+
|
398 |
+
#: functions/interface.functions.php:26
|
399 |
+
msgid "Delete"
|
400 |
+
msgstr "Ştergere"
|
401 |
+
|
402 |
+
#: functions/interface.functions.php:48
|
403 |
+
msgid "Settings saved."
|
404 |
+
msgstr ""
|
405 |
+
|
406 |
+
#: functions/interface.functions.php:67
|
407 |
+
#: functions/interface.functions.php:79
|
408 |
+
msgid "BackUpWordPress is almost ready."
|
409 |
+
msgstr ""
|
410 |
+
|
411 |
+
#: functions/interface.functions.php:67
|
412 |
+
#, php-format
|
413 |
+
msgid "The backups directory can't be created because your %1$s directory isn't writable, run %2$s or %3$s or create the folder yourself."
|
414 |
+
msgstr "Imposibil de creat directorul de backup-uri, deoarece directorul %1$s nu este inscriptibil, a alerga %2$s sau %3$s sau pentru a crea folderul-te."
|
415 |
+
|
416 |
+
#: functions/interface.functions.php:79
|
417 |
+
#, php-format
|
418 |
+
msgid "Your backups directory isn't writable, run %1$s or %2$s or set the permissions yourself."
|
419 |
+
msgstr "Directorul de backup-uri nu este inscriptibil. a alerga %1$s sau %2$s sau setaţi permisiunile-te."
|
420 |
+
|
421 |
+
#: functions/interface.functions.php:89
|
422 |
+
#, php-format
|
423 |
+
msgid "%1$s is running in %2$s. Please contact your host and ask them to disable %3$s."
|
424 |
+
msgstr ""
|
425 |
+
|
426 |
+
#: functions/interface.functions.php:89
|
427 |
+
msgid "http://php.net/manual/en/features.safe-mode.php"
|
428 |
+
msgstr "http://php.net/manual/ro/features.safe-mode.php"
|
429 |
+
|
430 |
+
#: functions/interface.functions.php:89
|
431 |
+
msgid "Safe Mode"
|
432 |
+
msgstr "Safe Mode"
|
433 |
+
|
434 |
+
#: functions/interface.functions.php:99
|
435 |
+
#, php-format
|
436 |
+
msgid "You have both %1$s and %2$s defined so there isn't anything to back up."
|
437 |
+
msgstr "Aveţi atât %1$s şi %2$s definite astfel încât nu există nimic de rezervă."
|
438 |
+
|
439 |
+
#: functions/interface.functions.php:110
|
440 |
+
#, php-format
|
441 |
+
msgid "The following email address is not valid: %s."
|
442 |
+
msgid_plural "The following email addresses are not valid: %s."
|
443 |
+
msgstr[0] ""
|
444 |
+
msgstr[1] ""
|
445 |
+
msgstr[2] ""
|
446 |
+
|
447 |
+
#: functions/interface.functions.php:120
|
448 |
+
msgid "The last backup email failed to send. It's likely that the file is too large."
|
449 |
+
msgstr ""
|
450 |
+
|
451 |
+
#: functions/interface.functions.php:130
|
452 |
+
#, php-format
|
453 |
+
msgid "Your custom backups directory %1$s doesn't exist and can't be created, your backups will be saved to %2$s instead."
|
454 |
+
msgstr "Directorul de backup-uri personalizate %1$s nu există şi nu pot fi create, copiile de rezervă va fi salvată la %2$s în schimb."
|
455 |
+
|
456 |
+
#: functions/interface.functions.php:140
|
457 |
+
#, php-format
|
458 |
+
msgid "Your custom backups directory %1$s isn't writable, new backups will be saved to %2$s instead."
|
459 |
+
msgstr "Directorul de backup-uri personalizate %1$s nu este inscriptibil, backup-uri noi va fi salvat în %2$s în schimb."
|
460 |
+
|
461 |
+
#: functions/interface.functions.php:150
|
462 |
+
#, php-format
|
463 |
+
msgid "You have defined a custom exclude list but the following paths don't exist %s, are you sure you entered them correctly?"
|
464 |
+
msgstr "Le-aţi definit o listă particularizată exclude dar următoarele căi nu există % s, sunt sigur că le-aţi introdus corect?"
|
465 |
+
|
466 |
+
#: functions/interface.functions.php:160
|
467 |
+
msgid "BackUpWordPress detected issues with your last backup."
|
468 |
+
msgstr ""
|
469 |
+
|
470 |
+
#: functions/backup.actions.php:12
|
471 |
+
msgid "Dumping database"
|
472 |
+
msgstr "Baza de date de dumping"
|
473 |
+
|
474 |
+
#: functions/backup.actions.php:22
|
475 |
+
msgid "Creating zip archive"
|
476 |
+
msgstr "Crearea arhiva zip"
|
477 |
+
|
478 |
+
#: functions/backup.functions.php:19
|
479 |
+
msgid "Removing old backups"
|
480 |
+
msgstr "Eliminarea backup-uri vechi"
|
481 |
+
|
482 |
+
#: functions/backup.functions.php:147
|
483 |
+
#: functions/backup.functions.php:157
|
484 |
+
#, php-format
|
485 |
+
msgid "Backup of %s"
|
486 |
+
msgstr "Copie de rezervă a %s"
|
487 |
+
|
488 |
+
#: functions/backup.functions.php:148
|
489 |
+
#, php-format
|
490 |
+
msgid ""
|
491 |
+
"BackUpWordPress has completed a backup of your site %1$s.\\n"
|
492 |
+
"\\n"
|
493 |
+
"The backup file should be attached to this email.\\n"
|
494 |
+
"\\n"
|
495 |
+
"You can also download the backup file by clicking the link below:\\n"
|
496 |
+
"\\n"
|
497 |
+
"%2$s\\n"
|
498 |
+
"\\n"
|
499 |
+
"Kind Regards\\n"
|
500 |
+
"\\n"
|
501 |
+
" The Happy BackUpWordPress Backup Emailing Robot"
|
502 |
+
msgstr ""
|
503 |
+
"BackUpWordpress ha completado una copia de seguridad de tu web %1$s.\n"
|
504 |
+
"\n"
|
505 |
+
"El archivo de copia de seguridad se encuentra adjunto a este correo electrónico.\n"
|
506 |
+
"\n"
|
507 |
+
"También puedes descargarlo desde el enlace indicado más abajo:\n"
|
508 |
+
"\n"
|
509 |
+
"%2$s\n"
|
510 |
+
"\n"
|
511 |
+
"Un saludo\n"
|
512 |
+
"\n"
|
513 |
+
"El feliz robot de BackUpWordPress Email"
|
514 |
+
|
515 |
+
#: functions/backup.functions.php:158
|
516 |
+
#, php-format
|
517 |
+
msgid ""
|
518 |
+
"BackUpWordPress has completed a backup of your site %1$s.\\n"
|
519 |
+
"\\n"
|
520 |
+
"Unfortunately the backup file was too large to attach to this email.\\n"
|
521 |
+
"\\n"
|
522 |
+
"You can download the backup file by clicking the link below:\\n"
|
523 |
+
"\\n"
|
524 |
+
"%2$s\\n"
|
525 |
+
"\\n"
|
526 |
+
"Kind Regards\\n"
|
527 |
+
"\\n"
|
528 |
+
" The Happy BackUpWordPress Backup Emailing Robot"
|
529 |
+
msgstr ""
|
530 |
+
"BackUpWordpress ha completado una copia de seguridad de tu web %1$s.\n"
|
531 |
+
"\n"
|
532 |
+
"Desafortunadamente el archivo de copia de seguridad creado es demasiado pesado para enviar como archivo adjunto, pero puedes descargarlo desde enlace indicado aquí:\n"
|
533 |
+
"\n"
|
534 |
+
"%2$s\n"
|
535 |
+
"\n"
|
536 |
+
"Un saludo\n"
|
537 |
+
"\n"
|
538 |
+
"El feliz robot de BackUpWordPress Email"
|
539 |
+
|
540 |
+
#: functions/core.functions.php:339
|
541 |
+
#, php-format
|
542 |
+
msgid "This %s file ensures that other people cannot download your backup files."
|
543 |
+
msgstr ""
|
544 |
+
|
backupwordpress/languages/hmbkp-ru_RU.mo
ADDED
Binary file
|
backupwordpress/languages/hmbkp-ru_RU.po
ADDED
@@ -0,0 +1,545 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# Translation of 1.6.8 in Russian
|
2 |
+
# This file is distributed under the same license as the 1.6.8 package.
|
3 |
+
msgid ""
|
4 |
+
msgstr ""
|
5 |
+
"Project-Id-Version: 1.6.8\n"
|
6 |
+
"Report-Msgid-Bugs-To: \n"
|
7 |
+
"POT-Creation-Date: 2012-08-14 14:46+0100\n"
|
8 |
+
"PO-Revision-Date: 2012-08-14 14:56+0100\n"
|
9 |
+
"Last-Translator: Flo Edelmann <florian-edelmann@online.de>\n"
|
10 |
+
"Language-Team: \n"
|
11 |
+
"Language: \n"
|
12 |
+
"MIME-Version: 1.0\n"
|
13 |
+
"Content-Type: text/plain; charset=UTF-8\n"
|
14 |
+
"Content-Transfer-Encoding: 8bit\n"
|
15 |
+
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
|
16 |
+
"X-Generator: GlotPress/0.1\n"
|
17 |
+
"X-Poedit-Language: Russian\n"
|
18 |
+
"X-Poedit-Country: RUSSIA\n"
|
19 |
+
"X-Poedit-SourceCharset: utf-8\n"
|
20 |
+
"X-Poedit-KeywordsList: __;_e;_n:1,2\n"
|
21 |
+
"X-Poedit-Basepath: ..\n"
|
22 |
+
"X-Poedit-SearchPath-0: .\n"
|
23 |
+
|
24 |
+
#: admin.settings.php:3
|
25 |
+
#: admin.page.php:11
|
26 |
+
msgid "Settings"
|
27 |
+
msgstr ""
|
28 |
+
|
29 |
+
#: admin.settings.php:5
|
30 |
+
#, php-format
|
31 |
+
msgid "You can define %1$s in your %2$s to control some settings. A full list of %3$s can be found in the %4$s. Defined settings will not be editable below."
|
32 |
+
msgstr ""
|
33 |
+
|
34 |
+
#: admin.settings.php:5
|
35 |
+
#: admin.constants.php:3
|
36 |
+
#: admin.menus.php:76
|
37 |
+
msgid "Constants"
|
38 |
+
msgstr ""
|
39 |
+
|
40 |
+
#: admin.settings.php:5
|
41 |
+
msgid "help panel"
|
42 |
+
msgstr ""
|
43 |
+
|
44 |
+
#: admin.settings.php:16
|
45 |
+
msgid "Automatic Backups"
|
46 |
+
msgstr ""
|
47 |
+
|
48 |
+
#: admin.settings.php:22
|
49 |
+
msgid "Backup my site automatically."
|
50 |
+
msgstr ""
|
51 |
+
|
52 |
+
#: admin.settings.php:27
|
53 |
+
msgid "No automatic backups."
|
54 |
+
msgstr ""
|
55 |
+
|
56 |
+
#: admin.settings.php:36
|
57 |
+
msgid "Frequency of backups"
|
58 |
+
msgstr ""
|
59 |
+
|
60 |
+
#: admin.settings.php:40
|
61 |
+
msgid "Automatic backups will occur"
|
62 |
+
msgstr ""
|
63 |
+
|
64 |
+
#: admin.settings.php:43
|
65 |
+
msgid "Daily"
|
66 |
+
msgstr ""
|
67 |
+
|
68 |
+
#: admin.settings.php:44
|
69 |
+
msgid "Weekly"
|
70 |
+
msgstr ""
|
71 |
+
|
72 |
+
#: admin.settings.php:45
|
73 |
+
msgid "Fortnightly"
|
74 |
+
msgstr ""
|
75 |
+
|
76 |
+
#: admin.settings.php:46
|
77 |
+
msgid "Monthly"
|
78 |
+
msgstr ""
|
79 |
+
|
80 |
+
#: admin.settings.php:55
|
81 |
+
msgid "What to Backup"
|
82 |
+
msgstr ""
|
83 |
+
|
84 |
+
#: admin.settings.php:59
|
85 |
+
msgid "Backup my"
|
86 |
+
msgstr ""
|
87 |
+
|
88 |
+
#: admin.settings.php:62
|
89 |
+
msgid "database & files"
|
90 |
+
msgstr ""
|
91 |
+
|
92 |
+
#: admin.settings.php:63
|
93 |
+
msgid "database only"
|
94 |
+
msgstr ""
|
95 |
+
|
96 |
+
#: admin.settings.php:64
|
97 |
+
msgid "files only"
|
98 |
+
msgstr ""
|
99 |
+
|
100 |
+
#: admin.settings.php:72
|
101 |
+
msgid "Number of backups"
|
102 |
+
msgstr ""
|
103 |
+
|
104 |
+
#: admin.settings.php:73
|
105 |
+
#, php-format
|
106 |
+
msgid "The last %s backups will be stored on the server."
|
107 |
+
msgstr ""
|
108 |
+
|
109 |
+
#: admin.settings.php:77
|
110 |
+
msgid "Email backups"
|
111 |
+
msgstr ""
|
112 |
+
|
113 |
+
#: admin.settings.php:78
|
114 |
+
msgid "A copy of the backup file will be emailed to this address. Disabled if left blank."
|
115 |
+
msgstr ""
|
116 |
+
|
117 |
+
#: admin.settings.php:82
|
118 |
+
msgid "Excludes"
|
119 |
+
msgstr ""
|
120 |
+
|
121 |
+
#: admin.settings.php:85
|
122 |
+
msgid "A comma separated list of file and directory paths that you do <strong>not</strong> want to backup."
|
123 |
+
msgstr ""
|
124 |
+
|
125 |
+
#: admin.settings.php:86
|
126 |
+
#: admin.constants.php:8
|
127 |
+
#: admin.constants.php:11
|
128 |
+
#: admin.constants.php:14
|
129 |
+
#: admin.constants.php:17
|
130 |
+
#: admin.constants.php:20
|
131 |
+
#: admin.constants.php:23
|
132 |
+
#: admin.constants.php:26
|
133 |
+
#: admin.constants.php:29
|
134 |
+
#: admin.constants.php:32
|
135 |
+
#: admin.constants.php:35
|
136 |
+
#: admin.constants.php:38
|
137 |
+
#: admin.constants.php:41
|
138 |
+
msgid "e.g."
|
139 |
+
msgstr ""
|
140 |
+
|
141 |
+
#: admin.settings.php:94
|
142 |
+
msgid "Save Changes"
|
143 |
+
msgstr ""
|
144 |
+
|
145 |
+
#: admin.backups-table.php:12
|
146 |
+
#, php-format
|
147 |
+
msgid "1 backup completed"
|
148 |
+
msgid_plural "%d backups completed"
|
149 |
+
msgstr[0] ""
|
150 |
+
msgstr[1] ""
|
151 |
+
msgstr[2] ""
|
152 |
+
|
153 |
+
#: admin.backups-table.php:13
|
154 |
+
msgid "Size"
|
155 |
+
msgstr "Размер"
|
156 |
+
|
157 |
+
#: admin.backups-table.php:14
|
158 |
+
msgid "Actions"
|
159 |
+
msgstr "Действия"
|
160 |
+
|
161 |
+
#: admin.backups-table.php:20
|
162 |
+
#, php-format
|
163 |
+
msgid "Only the most recent backup will be saved"
|
164 |
+
msgid_plural "The %d most recent backups will be saved"
|
165 |
+
msgstr[0] ""
|
166 |
+
msgstr[1] ""
|
167 |
+
msgstr[2] ""
|
168 |
+
|
169 |
+
#: admin.backups-table.php:21
|
170 |
+
#, php-format
|
171 |
+
msgid "Total %s"
|
172 |
+
msgstr "Всего %s"
|
173 |
+
|
174 |
+
#: admin.page.php:7
|
175 |
+
#: admin.menus.php:10
|
176 |
+
msgid "Manage Backups"
|
177 |
+
msgstr "Управление резервным копированием"
|
178 |
+
|
179 |
+
#: admin.page.php:23
|
180 |
+
msgid "You need to fix the issues detailed above before BackUpWordPress can start."
|
181 |
+
msgstr "Исправьте ошибки, приведённые выше, прежде чем BackUpWordPress сможет начать работу."
|
182 |
+
|
183 |
+
#: admin.page.php:29
|
184 |
+
#, php-format
|
185 |
+
msgid "If you need help getting things working you are more than welcome to email us at %s and we'll do what we can to help."
|
186 |
+
msgstr "Если вам требуется помощь в том, чтобы заставить всё это работать, непременно пишите нам на %s, и мы сделаем всё, что в наших силах."
|
187 |
+
|
188 |
+
#: admin.backup-button.php:3
|
189 |
+
msgid "cancel"
|
190 |
+
msgstr ""
|
191 |
+
|
192 |
+
#: admin.backup-button.php:7
|
193 |
+
msgid "Back Up Now"
|
194 |
+
msgstr "Сделать копию"
|
195 |
+
|
196 |
+
#: admin.constants.php:3
|
197 |
+
#, php-format
|
198 |
+
msgid "You can %1$s any of the following %2$s in your %3$s to control advanced settings. %4$s. Defined %5$s will be highlighted."
|
199 |
+
msgstr ""
|
200 |
+
|
201 |
+
#: admin.constants.php:3
|
202 |
+
msgid "The Codex can help"
|
203 |
+
msgstr "Подробности смотрите в Кодексе"
|
204 |
+
|
205 |
+
#: admin.constants.php:8
|
206 |
+
#, php-format
|
207 |
+
msgid "The path to folder you would like to store your backup files in, defaults to %s."
|
208 |
+
msgstr "Путь к папке, где вы хотите хранить ваши резервные копии. По умолчанию это %s."
|
209 |
+
|
210 |
+
#: admin.constants.php:11
|
211 |
+
#, php-format
|
212 |
+
msgid "The path to your %1$s executable. Will be used for the %2$s part of the back up if available."
|
213 |
+
msgstr "Путь к исполняемому файлу %1$s. Он будет использован для копирования %2$s, если доступен."
|
214 |
+
|
215 |
+
#: admin.constants.php:11
|
216 |
+
#: admin.constants.php:14
|
217 |
+
#: admin.constants.php:23
|
218 |
+
#: admin.constants.php:26
|
219 |
+
#: admin.status.php:14
|
220 |
+
#: admin.status.php:18
|
221 |
+
msgid "database"
|
222 |
+
msgstr "баз данных"
|
223 |
+
|
224 |
+
#: admin.constants.php:14
|
225 |
+
#, php-format
|
226 |
+
msgid "The path to your %1$s executable. Will be used to zip up your %2$s and %3$s if available."
|
227 |
+
msgstr "Путь к исполняемому файлу %1$s. Он будет использован для сжатия %2$s и %3$s, если доступен."
|
228 |
+
|
229 |
+
#: admin.constants.php:14
|
230 |
+
#: admin.constants.php:23
|
231 |
+
#: admin.constants.php:26
|
232 |
+
#: admin.status.php:14
|
233 |
+
#: admin.status.php:22
|
234 |
+
msgid "files"
|
235 |
+
msgstr "файлов"
|
236 |
+
|
237 |
+
#: admin.constants.php:17
|
238 |
+
#, php-format
|
239 |
+
msgid "Completely disables the automatic back up. You can still back up using the \"Back Up Now\" button. Defaults to %s."
|
240 |
+
msgstr "Полный запрет на автоматическое резервное копирование. Однако, ручное копирование кнопкой \"Сделать копию\" будет доступно. Значение по умолчанию %s."
|
241 |
+
|
242 |
+
#: admin.constants.php:20
|
243 |
+
#, fuzzy, php-format
|
244 |
+
msgid "Number of backups to keep, older backups will be deleted automatically when a new backup is completed. Defaults to %s."
|
245 |
+
msgstr "Количество хранимых резервных копий. Более старые копии будут удалены автоматически после создания новой. Значение по умолчанию %s."
|
246 |
+
|
247 |
+
#: admin.constants.php:23
|
248 |
+
#: admin.constants.php:26
|
249 |
+
#, php-format
|
250 |
+
msgid "Backup %1$s only, your %2$s won't be backed up. Defaults to %3$s."
|
251 |
+
msgstr ""
|
252 |
+
|
253 |
+
#: admin.constants.php:29
|
254 |
+
#, php-format
|
255 |
+
msgid "The time that the daily back up should run. Defaults to %s."
|
256 |
+
msgstr "Время запуска ежедневного резервного копирования. Значение по умолчанию %s."
|
257 |
+
|
258 |
+
#: admin.constants.php:32
|
259 |
+
#, php-format
|
260 |
+
msgid "Attempt to email a copy of your backups. Value should be email address to send backups to. Defaults to %s."
|
261 |
+
msgstr "Попытаться отправить резервную копию на e-mail. Значением должен быть e-mail адрес. Значение по умолчанию %s."
|
262 |
+
|
263 |
+
#: admin.constants.php:35
|
264 |
+
msgid "Comma separated list of files or directories to exclude, the backups directory is automatically excluded."
|
265 |
+
msgstr "Список файлов и папок, которые нужно исключить из резервной копии, разделённый запятыми. Папка с предыдущими резервными копиями исключается автоматически. "
|
266 |
+
|
267 |
+
#: admin.constants.php:38
|
268 |
+
#, php-format
|
269 |
+
msgid "The capability to use when calling %1$s. Defaults to %2$s."
|
270 |
+
msgstr ""
|
271 |
+
|
272 |
+
#: admin.constants.php:41
|
273 |
+
#, fuzzy, php-format
|
274 |
+
msgid "The root directory that is backed up. Defaults to %s."
|
275 |
+
msgstr "Время запуска ежедневного резервного копирования. Значение по умолчанию %s."
|
276 |
+
|
277 |
+
#: admin.actions.php:70
|
278 |
+
msgid "You have entered an invalid number of backups."
|
279 |
+
msgstr ""
|
280 |
+
|
281 |
+
#: admin.actions.php:79
|
282 |
+
#, php-format
|
283 |
+
msgid "%s is an invalid email address."
|
284 |
+
msgstr ""
|
285 |
+
|
286 |
+
#: admin.actions.php:249
|
287 |
+
#: functions/interface.functions.php:89
|
288 |
+
#: functions/interface.functions.php:99
|
289 |
+
#: functions/interface.functions.php:110
|
290 |
+
#: functions/interface.functions.php:120
|
291 |
+
#: functions/interface.functions.php:130
|
292 |
+
#: functions/interface.functions.php:140
|
293 |
+
#: functions/interface.functions.php:150
|
294 |
+
msgid "BackUpWordPress has detected a problem."
|
295 |
+
msgstr "BackUpWordPress обнаружил проблему."
|
296 |
+
|
297 |
+
#: admin.actions.php:249
|
298 |
+
#, php-format
|
299 |
+
msgid "%1$s is returning a %2$s response which could mean cron jobs aren't getting fired properly. BackUpWordPress relies on wp-cron to run scheduled back ups. See the %3$s for more details."
|
300 |
+
msgstr ""
|
301 |
+
|
302 |
+
#: admin.menus.php:10
|
303 |
+
#: admin.menus.php:34
|
304 |
+
msgid "Backups"
|
305 |
+
msgstr "Резервные копии"
|
306 |
+
|
307 |
+
#: admin.menus.php:65
|
308 |
+
msgid "You are not using the latest stable version of BackUpWordPress"
|
309 |
+
msgstr "Ваша версия BackUpWordPress устарела."
|
310 |
+
|
311 |
+
#: admin.menus.php:65
|
312 |
+
#, php-format
|
313 |
+
msgid "The information below is for version %1$s. View the <code>readme.txt</code> file for help specific to version %2$s."
|
314 |
+
msgstr ""
|
315 |
+
|
316 |
+
#: admin.menus.php:75
|
317 |
+
msgid "FAQ"
|
318 |
+
msgstr ""
|
319 |
+
|
320 |
+
#: admin.menus.php:79
|
321 |
+
msgid "For more information:"
|
322 |
+
msgstr ""
|
323 |
+
|
324 |
+
#: admin.menus.php:81
|
325 |
+
msgid "Support Forums"
|
326 |
+
msgstr ""
|
327 |
+
|
328 |
+
#: admin.menus.php:82
|
329 |
+
msgid "Help with translation"
|
330 |
+
msgstr ""
|
331 |
+
|
332 |
+
#: plugin.php:47
|
333 |
+
msgid "BackUpWordPress requires PHP version 5.2.4 or greater."
|
334 |
+
msgstr ""
|
335 |
+
|
336 |
+
#: plugin.php:58
|
337 |
+
#, php-format
|
338 |
+
msgid "BackUpWordPress requires WordPress version %s."
|
339 |
+
msgstr "Для работы BackUpWordPress требуется Wordpress версии %s."
|
340 |
+
|
341 |
+
#: admin.status.php:9
|
342 |
+
#, php-format
|
343 |
+
msgid "Automatic backups are %s."
|
344 |
+
msgstr "Автоматическое резервное копирование %s."
|
345 |
+
|
346 |
+
#: admin.status.php:9
|
347 |
+
msgid "disabled"
|
348 |
+
msgstr "отключено"
|
349 |
+
|
350 |
+
#: admin.status.php:14
|
351 |
+
msgid "&"
|
352 |
+
msgstr "и"
|
353 |
+
|
354 |
+
#: admin.status.php:32
|
355 |
+
#, php-format
|
356 |
+
msgid "Your %1$s will be automatically backed up %2$s. The next backup will occur at %3$s on %4$s and be saved to %5$s."
|
357 |
+
msgid_plural "Your %1$s will be automatically backed up %2$s. The next backup will occur at %3$s on %4$s and be saved to %5$s."
|
358 |
+
msgstr[0] ""
|
359 |
+
msgstr[1] ""
|
360 |
+
msgstr[2] ""
|
361 |
+
|
362 |
+
#: admin.status.php:39
|
363 |
+
#, php-format
|
364 |
+
msgid "It's currently %s"
|
365 |
+
msgstr ""
|
366 |
+
|
367 |
+
#: admin.status.php:47
|
368 |
+
#, php-format
|
369 |
+
msgid "Your site is %s. Backups will be compressed and should be smaller than this."
|
370 |
+
msgstr "Ваш сайт занимает %s. Резервные копии будут сжаты и займут меньше места. "
|
371 |
+
|
372 |
+
#: admin.status.php:47
|
373 |
+
msgid "Calculating Size..."
|
374 |
+
msgstr "Вычисление размера…"
|
375 |
+
|
376 |
+
#: admin.status.php:50
|
377 |
+
#, php-format
|
378 |
+
msgid "A copy of each backup will be emailed to %s."
|
379 |
+
msgstr "Каждая резервная копия будет отправляться на адрес %s."
|
380 |
+
|
381 |
+
#: admin.status.php:54
|
382 |
+
#, php-format
|
383 |
+
msgid "The following paths will be excluded from your backups %s."
|
384 |
+
msgstr "Эти файлы и папки будут исключены из резервных копий: %s"
|
385 |
+
|
386 |
+
#: hm-backup/hm-backup.php:532
|
387 |
+
msgid "The backup file was not created"
|
388 |
+
msgstr ""
|
389 |
+
|
390 |
+
#: hm-backup/hm-backup.php:603
|
391 |
+
msgid "The following files are unreadable and couldn't be backed up: "
|
392 |
+
msgstr ""
|
393 |
+
|
394 |
+
#: functions/interface.functions.php:25
|
395 |
+
msgid "Download"
|
396 |
+
msgstr "Скачать"
|
397 |
+
|
398 |
+
#: functions/interface.functions.php:26
|
399 |
+
msgid "Delete"
|
400 |
+
msgstr "Удалить"
|
401 |
+
|
402 |
+
#: functions/interface.functions.php:48
|
403 |
+
msgid "Settings saved."
|
404 |
+
msgstr ""
|
405 |
+
|
406 |
+
#: functions/interface.functions.php:67
|
407 |
+
#: functions/interface.functions.php:79
|
408 |
+
msgid "BackUpWordPress is almost ready."
|
409 |
+
msgstr "BackUpWordPress почти готов."
|
410 |
+
|
411 |
+
#: functions/interface.functions.php:67
|
412 |
+
#, php-format
|
413 |
+
msgid "The backups directory can't be created because your %1$s directory isn't writable, run %2$s or %3$s or create the folder yourself."
|
414 |
+
msgstr "Папка резервных копий не может быть создана, т. к. папка %1$sне доступна для записи. Выполните %2$s или %3$s, или создайте папку вручную."
|
415 |
+
|
416 |
+
#: functions/interface.functions.php:79
|
417 |
+
#, php-format
|
418 |
+
msgid "Your backups directory isn't writable, run %1$s or %2$s or set the permissions yourself."
|
419 |
+
msgstr "Папка для резервных копий недоступна для записи. Выполните %1$s или %2$s, или установите права вручную."
|
420 |
+
|
421 |
+
#: functions/interface.functions.php:89
|
422 |
+
#, php-format
|
423 |
+
msgid "%1$s is running in %2$s. Please contact your host and ask them to disable %3$s."
|
424 |
+
msgstr "%1$s выполняется в %2$s. Пожалуйста, свяжитесь с администрацией своего хостинга и попросите отключить %3$s."
|
425 |
+
|
426 |
+
#: functions/interface.functions.php:89
|
427 |
+
msgid "http://php.net/manual/en/features.safe-mode.php"
|
428 |
+
msgstr "http://php.net/manual/ru/features.safe-mode.php"
|
429 |
+
|
430 |
+
#: functions/interface.functions.php:89
|
431 |
+
msgid "Safe Mode"
|
432 |
+
msgstr "Безопасный режим"
|
433 |
+
|
434 |
+
#: functions/interface.functions.php:99
|
435 |
+
#, php-format
|
436 |
+
msgid "You have both %1$s and %2$s defined so there isn't anything to back up."
|
437 |
+
msgstr "Вы запретили резервные копии и %1$s, и %2$s, так что делать нечего."
|
438 |
+
|
439 |
+
#: functions/interface.functions.php:110
|
440 |
+
#, php-format
|
441 |
+
msgid "The following email address is not valid: %s."
|
442 |
+
msgid_plural "The following email addresses are not valid: %s."
|
443 |
+
msgstr[0] ""
|
444 |
+
msgstr[1] ""
|
445 |
+
msgstr[2] ""
|
446 |
+
|
447 |
+
#: functions/interface.functions.php:120
|
448 |
+
msgid "The last backup email failed to send. It's likely that the file is too large."
|
449 |
+
msgstr ""
|
450 |
+
|
451 |
+
#: functions/interface.functions.php:130
|
452 |
+
#, php-format
|
453 |
+
msgid "Your custom backups directory %1$s doesn't exist and can't be created, your backups will be saved to %2$s instead."
|
454 |
+
msgstr "Заданная вами папка для резервных копий %1$s не существует и не может быть создана, поэтому они будут сохранены в %2$s."
|
455 |
+
|
456 |
+
#: functions/interface.functions.php:140
|
457 |
+
#, php-format
|
458 |
+
msgid "Your custom backups directory %1$s isn't writable, new backups will be saved to %2$s instead."
|
459 |
+
msgstr "Заданная вами папка для резервных копий %1$s недоступна для записи, поэтому они будут сохранены в %2$s."
|
460 |
+
|
461 |
+
#: functions/interface.functions.php:150
|
462 |
+
#, php-format
|
463 |
+
msgid "You have defined a custom exclude list but the following paths don't exist %s, are you sure you entered them correctly?"
|
464 |
+
msgstr "Вы задали список папок и файлов для исключения из резервной копии, но путь %s не существует. Вы уверены, что задали его правильно?"
|
465 |
+
|
466 |
+
#: functions/interface.functions.php:160
|
467 |
+
msgid "BackUpWordPress detected issues with your last backup."
|
468 |
+
msgstr ""
|
469 |
+
|
470 |
+
#: functions/backup.actions.php:12
|
471 |
+
msgid "Dumping database"
|
472 |
+
msgstr "Копирование базы данных"
|
473 |
+
|
474 |
+
#: functions/backup.actions.php:22
|
475 |
+
msgid "Creating zip archive"
|
476 |
+
msgstr "Создание zip-архива"
|
477 |
+
|
478 |
+
#: functions/backup.functions.php:19
|
479 |
+
msgid "Removing old backups"
|
480 |
+
msgstr "Удаление старых копий"
|
481 |
+
|
482 |
+
#: functions/backup.functions.php:147
|
483 |
+
#: functions/backup.functions.php:157
|
484 |
+
#, php-format
|
485 |
+
msgid "Backup of %s"
|
486 |
+
msgstr "Копирование %s"
|
487 |
+
|
488 |
+
#: functions/backup.functions.php:148
|
489 |
+
#, php-format
|
490 |
+
msgid ""
|
491 |
+
"BackUpWordPress has completed a backup of your site %1$s.\\n"
|
492 |
+
"\\n"
|
493 |
+
"The backup file should be attached to this email.\\n"
|
494 |
+
"\\n"
|
495 |
+
"You can also download the backup file by clicking the link below:\\n"
|
496 |
+
"\\n"
|
497 |
+
"%2$s\\n"
|
498 |
+
"\\n"
|
499 |
+
"Kind Regards\\n"
|
500 |
+
"\\n"
|
501 |
+
" The Happy BackUpWordPress Backup Emailing Robot"
|
502 |
+
msgstr ""
|
503 |
+
"BackUpWordpress закончил резервировать ваш сайт %1$s.\n"
|
504 |
+
"\n"
|
505 |
+
"Файл с резервной копией должен быть прикреплён к этому письму.\n"
|
506 |
+
"\n"
|
507 |
+
"Так же вы можете скачать его по данной ссылке:\n"
|
508 |
+
"%2$s\n"
|
509 |
+
"\n"
|
510 |
+
"С наилучшими пожеланиями,\n"
|
511 |
+
"\n"
|
512 |
+
"Почовый робот BackUpWordPress."
|
513 |
+
|
514 |
+
#: functions/backup.functions.php:158
|
515 |
+
#, php-format
|
516 |
+
msgid ""
|
517 |
+
"BackUpWordPress has completed a backup of your site %1$s.\\n"
|
518 |
+
"\\n"
|
519 |
+
"Unfortunately the backup file was too large to attach to this email.\\n"
|
520 |
+
"\\n"
|
521 |
+
"You can download the backup file by clicking the link below:\\n"
|
522 |
+
"\\n"
|
523 |
+
"%2$s\\n"
|
524 |
+
"\\n"
|
525 |
+
"Kind Regards\\n"
|
526 |
+
"\\n"
|
527 |
+
" The Happy BackUpWordPress Backup Emailing Robot"
|
528 |
+
msgstr ""
|
529 |
+
"BackUpWordpress закончил резервировать ваш сайт %1$s.\n"
|
530 |
+
"\n"
|
531 |
+
"К сожалению, файл резервной копии оказался слишком велик для прикрепления его к этому письму..\n"
|
532 |
+
"\n"
|
533 |
+
" Скачать его можно по данной ссылке:\n"
|
534 |
+
"\n"
|
535 |
+
"%2$s\n"
|
536 |
+
"\n"
|
537 |
+
"С наилучшими пожеланиями,\n"
|
538 |
+
"\n"
|
539 |
+
"Почовый робот BackUpWordPress."
|
540 |
+
|
541 |
+
#: functions/core.functions.php:339
|
542 |
+
#, php-format
|
543 |
+
msgid "This %s file ensures that other people cannot download your backup files."
|
544 |
+
msgstr ""
|
545 |
+
|
backupwordpress/languages/hmbkp-sr_SR.mo
ADDED
Binary file
|
backupwordpress/languages/hmbkp-sr_SR.po
ADDED
@@ -0,0 +1,524 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# Translation of 1.6.8 in Serbian
|
2 |
+
# This file is distributed under the same license as the 1.6.8 package.
|
3 |
+
msgid ""
|
4 |
+
msgstr ""
|
5 |
+
"Project-Id-Version: 1.6.8\n"
|
6 |
+
"Report-Msgid-Bugs-To: \n"
|
7 |
+
"POT-Creation-Date: 2012-08-14 14:48+0100\n"
|
8 |
+
"PO-Revision-Date: 2012-08-14 14:58+0100\n"
|
9 |
+
"Last-Translator: Flo Edelmann <florian-edelmann@online.de>\n"
|
10 |
+
"Language-Team: \n"
|
11 |
+
"Language: \n"
|
12 |
+
"MIME-Version: 1.0\n"
|
13 |
+
"Content-Type: text/plain; charset=UTF-8\n"
|
14 |
+
"Content-Transfer-Encoding: 8bit\n"
|
15 |
+
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
|
16 |
+
"X-Generator: GlotPress/0.1\n"
|
17 |
+
"X-Poedit-Language: Serbian\n"
|
18 |
+
"X-Poedit-Country: SERBIA\n"
|
19 |
+
"X-Poedit-SourceCharset: utf-8\n"
|
20 |
+
"X-Poedit-KeywordsList: __;_e;_n:1,2\n"
|
21 |
+
"X-Poedit-Basepath: ..\n"
|
22 |
+
"X-Poedit-SearchPath-0: .\n"
|
23 |
+
|
24 |
+
#: admin.settings.php:3
|
25 |
+
#: admin.page.php:11
|
26 |
+
msgid "Settings"
|
27 |
+
msgstr "Podešavanja"
|
28 |
+
|
29 |
+
#: admin.settings.php:5
|
30 |
+
#, php-format
|
31 |
+
msgid "You can define %1$s in your %2$s to control some settings. A full list of %3$s can be found in the %4$s. Defined settings will not be editable below."
|
32 |
+
msgstr ""
|
33 |
+
|
34 |
+
#: admin.settings.php:5
|
35 |
+
#: admin.constants.php:3
|
36 |
+
#: admin.menus.php:76
|
37 |
+
msgid "Constants"
|
38 |
+
msgstr "Konstante"
|
39 |
+
|
40 |
+
#: admin.settings.php:5
|
41 |
+
msgid "help panel"
|
42 |
+
msgstr "Površina za pomoć"
|
43 |
+
|
44 |
+
#: admin.settings.php:16
|
45 |
+
msgid "Automatic Backups"
|
46 |
+
msgstr "Automatsko pravljenje rezervnih kopija"
|
47 |
+
|
48 |
+
#: admin.settings.php:22
|
49 |
+
msgid "Backup my site automatically."
|
50 |
+
msgstr "Napravi rezervnu kopiju automatski."
|
51 |
+
|
52 |
+
#: admin.settings.php:27
|
53 |
+
msgid "No automatic backups."
|
54 |
+
msgstr "Nema automatskih rezervnih kopija."
|
55 |
+
|
56 |
+
#: admin.settings.php:36
|
57 |
+
msgid "Frequency of backups"
|
58 |
+
msgstr "Učestalost pravljenja rezervnih kopija"
|
59 |
+
|
60 |
+
#: admin.settings.php:40
|
61 |
+
msgid "Automatic backups will occur"
|
62 |
+
msgstr "Automatsko pravljenje rezervnih kopija će biti odrađeno"
|
63 |
+
|
64 |
+
#: admin.settings.php:43
|
65 |
+
msgid "Daily"
|
66 |
+
msgstr "Dnevno"
|
67 |
+
|
68 |
+
#: admin.settings.php:44
|
69 |
+
msgid "Weekly"
|
70 |
+
msgstr "Nedeljno"
|
71 |
+
|
72 |
+
#: admin.settings.php:45
|
73 |
+
msgid "Fortnightly"
|
74 |
+
msgstr "Jednom u dve nedelje"
|
75 |
+
|
76 |
+
#: admin.settings.php:46
|
77 |
+
msgid "Monthly"
|
78 |
+
msgstr "Mesečno"
|
79 |
+
|
80 |
+
#: admin.settings.php:55
|
81 |
+
msgid "What to Backup"
|
82 |
+
msgstr "Šta ulazi u rezervnu kopiju"
|
83 |
+
|
84 |
+
#: admin.settings.php:59
|
85 |
+
msgid "Backup my"
|
86 |
+
msgstr "Napravi rezervnu kopiju mojih"
|
87 |
+
|
88 |
+
#: admin.settings.php:62
|
89 |
+
msgid "database & files"
|
90 |
+
msgstr "baza podataka & datoteke"
|
91 |
+
|
92 |
+
#: admin.settings.php:63
|
93 |
+
msgid "database only"
|
94 |
+
msgstr "samo bazu podataka"
|
95 |
+
|
96 |
+
#: admin.settings.php:64
|
97 |
+
msgid "files only"
|
98 |
+
msgstr "samo datoteke"
|
99 |
+
|
100 |
+
#: admin.settings.php:72
|
101 |
+
msgid "Number of backups"
|
102 |
+
msgstr "Broj rezervnih kopija"
|
103 |
+
|
104 |
+
#: admin.settings.php:73
|
105 |
+
#, php-format
|
106 |
+
msgid "The last %s backups will be stored on the server."
|
107 |
+
msgstr "Zadnjih %s rezervnih kopija će biti čuvano na serveru."
|
108 |
+
|
109 |
+
#: admin.settings.php:77
|
110 |
+
msgid "Email backups"
|
111 |
+
msgstr "Posalji rezervne kopije na email"
|
112 |
+
|
113 |
+
#: admin.settings.php:78
|
114 |
+
msgid "A copy of the backup file will be emailed to this address. Disabled if left blank."
|
115 |
+
msgstr "Rezervna kopija će biti poslata na ovu email adresu. Onemogućeno ukoliko ostavite prazno."
|
116 |
+
|
117 |
+
#: admin.settings.php:82
|
118 |
+
msgid "Excludes"
|
119 |
+
msgstr "Izuzetci"
|
120 |
+
|
121 |
+
#: admin.settings.php:85
|
122 |
+
msgid "A comma separated list of file and directory paths that you do <strong>not</strong> want to backup."
|
123 |
+
msgstr ""
|
124 |
+
|
125 |
+
#: admin.settings.php:86
|
126 |
+
#: admin.constants.php:8
|
127 |
+
#: admin.constants.php:11
|
128 |
+
#: admin.constants.php:14
|
129 |
+
#: admin.constants.php:17
|
130 |
+
#: admin.constants.php:20
|
131 |
+
#: admin.constants.php:23
|
132 |
+
#: admin.constants.php:26
|
133 |
+
#: admin.constants.php:29
|
134 |
+
#: admin.constants.php:32
|
135 |
+
#: admin.constants.php:35
|
136 |
+
#: admin.constants.php:38
|
137 |
+
#: admin.constants.php:41
|
138 |
+
msgid "e.g."
|
139 |
+
msgstr "npr"
|
140 |
+
|
141 |
+
#: admin.settings.php:94
|
142 |
+
msgid "Save Changes"
|
143 |
+
msgstr "Sačuvajte promene"
|
144 |
+
|
145 |
+
#: admin.backups-table.php:12
|
146 |
+
#, php-format
|
147 |
+
msgid "1 backup completed"
|
148 |
+
msgid_plural "%d backups completed"
|
149 |
+
msgstr[0] ""
|
150 |
+
msgstr[1] ""
|
151 |
+
msgstr[2] ""
|
152 |
+
|
153 |
+
#: admin.backups-table.php:13
|
154 |
+
msgid "Size"
|
155 |
+
msgstr "Veličina"
|
156 |
+
|
157 |
+
#: admin.backups-table.php:14
|
158 |
+
msgid "Actions"
|
159 |
+
msgstr "Akcije"
|
160 |
+
|
161 |
+
#: admin.backups-table.php:20
|
162 |
+
#, php-format
|
163 |
+
msgid "Only the most recent backup will be saved"
|
164 |
+
msgid_plural "The %d most recent backups will be saved"
|
165 |
+
msgstr[0] ""
|
166 |
+
msgstr[1] ""
|
167 |
+
msgstr[2] ""
|
168 |
+
|
169 |
+
#: admin.backups-table.php:21
|
170 |
+
#, php-format
|
171 |
+
msgid "Total %s"
|
172 |
+
msgstr "Ukupno %s"
|
173 |
+
|
174 |
+
#: admin.page.php:7
|
175 |
+
#: admin.menus.php:10
|
176 |
+
msgid "Manage Backups"
|
177 |
+
msgstr "Rad sa rezervnim kopijama."
|
178 |
+
|
179 |
+
#: admin.page.php:23
|
180 |
+
msgid "You need to fix the issues detailed above before BackUpWordPress can start."
|
181 |
+
msgstr "Morate srediti greške prikazane iznad pre nego što pokrenete BackUpWordPress."
|
182 |
+
|
183 |
+
#: admin.page.php:29
|
184 |
+
#, php-format
|
185 |
+
msgid "If you need help getting things working you are more than welcome to email us at %s and we'll do what we can to help."
|
186 |
+
msgstr "Ukoliko vam je potrebna pomoć pri podešavanju više ste nego dobrodošli da pošaljete email na %s a mi ćemo se potruditi da vam pomognemo."
|
187 |
+
|
188 |
+
#: admin.backup-button.php:3
|
189 |
+
msgid "cancel"
|
190 |
+
msgstr "otkaži"
|
191 |
+
|
192 |
+
#: admin.backup-button.php:7
|
193 |
+
msgid "Back Up Now"
|
194 |
+
msgstr "Napravite rezervnu kopiju"
|
195 |
+
|
196 |
+
#: admin.constants.php:3
|
197 |
+
#, php-format
|
198 |
+
msgid "You can %1$s any of the following %2$s in your %3$s to control advanced settings. %4$s. Defined %5$s will be highlighted."
|
199 |
+
msgstr "Možete %1$s bilo koju od sledećih %2$s u vašem %3$s da bi kontrolisali napredna podešavanja. %4$s. Definisani %5$s će biti istaknuti."
|
200 |
+
|
201 |
+
#: admin.constants.php:3
|
202 |
+
msgid "The Codex can help"
|
203 |
+
msgstr "Kodeks može pomoći"
|
204 |
+
|
205 |
+
#: admin.constants.php:8
|
206 |
+
#, php-format
|
207 |
+
msgid "The path to folder you would like to store your backup files in, defaults to %s."
|
208 |
+
msgstr "Putanja do direktorijuma u kome bi želeli da čuvate vaše rezervne datoteke, podrazumevano %s."
|
209 |
+
|
210 |
+
#: admin.constants.php:11
|
211 |
+
#, php-format
|
212 |
+
msgid "The path to your %1$s executable. Will be used for the %2$s part of the back up if available."
|
213 |
+
msgstr "Putanja do vaše %1$s izvršne. Biće korišćena za %2$s deo rezervne kopije ukoliko je moguće."
|
214 |
+
|
215 |
+
#: admin.constants.php:11
|
216 |
+
#: admin.constants.php:14
|
217 |
+
#: admin.constants.php:23
|
218 |
+
#: admin.constants.php:26
|
219 |
+
#: admin.status.php:14
|
220 |
+
#: admin.status.php:18
|
221 |
+
msgid "database"
|
222 |
+
msgstr "baza podataka"
|
223 |
+
|
224 |
+
#: admin.constants.php:14
|
225 |
+
#, fuzzy, php-format
|
226 |
+
msgid "The path to your %1$s executable. Will be used to zip up your %2$s and %3$s if available."
|
227 |
+
msgstr "Putanja do vaše %1$s izvršne. Biće korišćena za %2$s deo rezervne kopije ukoliko je moguće."
|
228 |
+
|
229 |
+
#: admin.constants.php:14
|
230 |
+
#: admin.constants.php:23
|
231 |
+
#: admin.constants.php:26
|
232 |
+
#: admin.status.php:14
|
233 |
+
#: admin.status.php:22
|
234 |
+
msgid "files"
|
235 |
+
msgstr "datoteke"
|
236 |
+
|
237 |
+
#: admin.constants.php:17
|
238 |
+
#, php-format
|
239 |
+
msgid "Completely disables the automatic back up. You can still back up using the \"Back Up Now\" button. Defaults to %s."
|
240 |
+
msgstr "Kompletno onemogućava automatsko kreiranje rezervnih kopija. Još uvek možete napraviti rezervnu kopiju korišćenjem dugmeta \"Napravi rezervnu kopiju\". Podrazumeva se %s."
|
241 |
+
|
242 |
+
#: admin.constants.php:20
|
243 |
+
#, php-format
|
244 |
+
msgid "Number of backups to keep, older backups will be deleted automatically when a new backup is completed. Defaults to %s."
|
245 |
+
msgstr ""
|
246 |
+
|
247 |
+
#: admin.constants.php:23
|
248 |
+
#: admin.constants.php:26
|
249 |
+
#, php-format
|
250 |
+
msgid "Backup %1$s only, your %2$s won't be backed up. Defaults to %3$s."
|
251 |
+
msgstr ""
|
252 |
+
|
253 |
+
#: admin.constants.php:29
|
254 |
+
#, php-format
|
255 |
+
msgid "The time that the daily back up should run. Defaults to %s."
|
256 |
+
msgstr ""
|
257 |
+
|
258 |
+
#: admin.constants.php:32
|
259 |
+
#, php-format
|
260 |
+
msgid "Attempt to email a copy of your backups. Value should be email address to send backups to. Defaults to %s."
|
261 |
+
msgstr ""
|
262 |
+
|
263 |
+
#: admin.constants.php:35
|
264 |
+
msgid "Comma separated list of files or directories to exclude, the backups directory is automatically excluded."
|
265 |
+
msgstr ""
|
266 |
+
|
267 |
+
#: admin.constants.php:38
|
268 |
+
#, php-format
|
269 |
+
msgid "The capability to use when calling %1$s. Defaults to %2$s."
|
270 |
+
msgstr ""
|
271 |
+
|
272 |
+
#: admin.constants.php:41
|
273 |
+
#, php-format
|
274 |
+
msgid "The root directory that is backed up. Defaults to %s."
|
275 |
+
msgstr ""
|
276 |
+
|
277 |
+
#: admin.actions.php:70
|
278 |
+
msgid "You have entered an invalid number of backups."
|
279 |
+
msgstr "Uneli ste nepravilan broj rezervnih kopija."
|
280 |
+
|
281 |
+
#: admin.actions.php:79
|
282 |
+
#, php-format
|
283 |
+
msgid "%s is an invalid email address."
|
284 |
+
msgstr "%s je nepravilna email adresa."
|
285 |
+
|
286 |
+
#: admin.actions.php:249
|
287 |
+
#: functions/interface.functions.php:89
|
288 |
+
#: functions/interface.functions.php:99
|
289 |
+
#: functions/interface.functions.php:110
|
290 |
+
#: functions/interface.functions.php:120
|
291 |
+
#: functions/interface.functions.php:130
|
292 |
+
#: functions/interface.functions.php:140
|
293 |
+
#: functions/interface.functions.php:150
|
294 |
+
msgid "BackUpWordPress has detected a problem."
|
295 |
+
msgstr "BackUpWordPress je detektovao problem."
|
296 |
+
|
297 |
+
#: admin.actions.php:249
|
298 |
+
#, php-format
|
299 |
+
msgid "%1$s is returning a %2$s response which could mean cron jobs aren't getting fired properly. BackUpWordPress relies on wp-cron to run scheduled back ups. See the %3$s for more details."
|
300 |
+
msgstr "%1$s vraća %2$s odgovor koji može ukazivati na to da se zakazane operacije (cron jobs) ne izvršavaju pravilno. BackUpWordPress svoje zakazano pravljenje rezervnih kopija zasniva na zakazanim operacijama. Pogledajte %3$s za više detalja."
|
301 |
+
|
302 |
+
#: admin.menus.php:10
|
303 |
+
#: admin.menus.php:34
|
304 |
+
msgid "Backups"
|
305 |
+
msgstr "Rezervne kopije"
|
306 |
+
|
307 |
+
#: admin.menus.php:65
|
308 |
+
msgid "You are not using the latest stable version of BackUpWordPress"
|
309 |
+
msgstr "Ne koristite zadnju stabilnu verziju BackUpWordPress-a"
|
310 |
+
|
311 |
+
#: admin.menus.php:65
|
312 |
+
#, php-format
|
313 |
+
msgid "The information below is for version %1$s. View the <code>readme.txt</code> file for help specific to version %2$s."
|
314 |
+
msgstr ""
|
315 |
+
|
316 |
+
#: admin.menus.php:75
|
317 |
+
msgid "FAQ"
|
318 |
+
msgstr "Česta pitanja"
|
319 |
+
|
320 |
+
#: admin.menus.php:79
|
321 |
+
msgid "For more information:"
|
322 |
+
msgstr "Za više informacija:"
|
323 |
+
|
324 |
+
#: admin.menus.php:81
|
325 |
+
msgid "Support Forums"
|
326 |
+
msgstr "Forum za podršku"
|
327 |
+
|
328 |
+
#: admin.menus.php:82
|
329 |
+
msgid "Help with translation"
|
330 |
+
msgstr "Pomozite sa prevođenjem"
|
331 |
+
|
332 |
+
#: plugin.php:47
|
333 |
+
msgid "BackUpWordPress requires PHP version 5.2.4 or greater."
|
334 |
+
msgstr ""
|
335 |
+
|
336 |
+
#: plugin.php:58
|
337 |
+
#, php-format
|
338 |
+
msgid "BackUpWordPress requires WordPress version %s."
|
339 |
+
msgstr ""
|
340 |
+
|
341 |
+
#: admin.status.php:9
|
342 |
+
#, php-format
|
343 |
+
msgid "Automatic backups are %s."
|
344 |
+
msgstr "Automatske rezervne kopije su %s."
|
345 |
+
|
346 |
+
#: admin.status.php:9
|
347 |
+
msgid "disabled"
|
348 |
+
msgstr "onemogućeno"
|
349 |
+
|
350 |
+
#: admin.status.php:14
|
351 |
+
msgid "&"
|
352 |
+
msgstr ""
|
353 |
+
|
354 |
+
#: admin.status.php:32
|
355 |
+
#, php-format
|
356 |
+
msgid "Your %1$s will be automatically backed up %2$s. The next backup will occur at %3$s on %4$s and be saved to %5$s."
|
357 |
+
msgid_plural "Your %1$s will be automatically backed up %2$s. The next backup will occur at %3$s on %4$s and be saved to %5$s."
|
358 |
+
msgstr[0] ""
|
359 |
+
msgstr[1] ""
|
360 |
+
msgstr[2] ""
|
361 |
+
|
362 |
+
#: admin.status.php:39
|
363 |
+
#, php-format
|
364 |
+
msgid "It's currently %s"
|
365 |
+
msgstr "Trenutno je %s"
|
366 |
+
|
367 |
+
#: admin.status.php:47
|
368 |
+
#, php-format
|
369 |
+
msgid "Your site is %s. Backups will be compressed and should be smaller than this."
|
370 |
+
msgstr "Vaš sajt je %s. Rezervna kopija će biti kompresovana i trebala bi biti manja od ovoga."
|
371 |
+
|
372 |
+
#: admin.status.php:47
|
373 |
+
msgid "Calculating Size..."
|
374 |
+
msgstr "Računanje veličine..."
|
375 |
+
|
376 |
+
#: admin.status.php:50
|
377 |
+
#, php-format
|
378 |
+
msgid "A copy of each backup will be emailed to %s."
|
379 |
+
msgstr "Kopija svake rezervne kopije će biti poslata emailom na %s."
|
380 |
+
|
381 |
+
#: admin.status.php:54
|
382 |
+
#, php-format
|
383 |
+
msgid "The following paths will be excluded from your backups %s."
|
384 |
+
msgstr "Sledeće putanje će biti izuzete iz vaših rezervnih kopija %s."
|
385 |
+
|
386 |
+
#: hm-backup/hm-backup.php:532
|
387 |
+
msgid "The backup file was not created"
|
388 |
+
msgstr ""
|
389 |
+
|
390 |
+
#: hm-backup/hm-backup.php:603
|
391 |
+
msgid "The following files are unreadable and couldn't be backed up: "
|
392 |
+
msgstr ""
|
393 |
+
|
394 |
+
#: functions/interface.functions.php:25
|
395 |
+
msgid "Download"
|
396 |
+
msgstr ""
|
397 |
+
|
398 |
+
#: functions/interface.functions.php:26
|
399 |
+
msgid "Delete"
|
400 |
+
msgstr "Obriši"
|
401 |
+
|
402 |
+
#: functions/interface.functions.php:48
|
403 |
+
msgid "Settings saved."
|
404 |
+
msgstr "Podešavanja sačuvana."
|
405 |
+
|
406 |
+
#: functions/interface.functions.php:67
|
407 |
+
#: functions/interface.functions.php:79
|
408 |
+
msgid "BackUpWordPress is almost ready."
|
409 |
+
msgstr "BackUpWordPress je skoro spreman."
|
410 |
+
|
411 |
+
#: functions/interface.functions.php:67
|
412 |
+
#, php-format
|
413 |
+
msgid "The backups directory can't be created because your %1$s directory isn't writable, run %2$s or %3$s or create the folder yourself."
|
414 |
+
msgstr ""
|
415 |
+
|
416 |
+
#: functions/interface.functions.php:79
|
417 |
+
#, php-format
|
418 |
+
msgid "Your backups directory isn't writable, run %1$s or %2$s or set the permissions yourself."
|
419 |
+
msgstr ""
|
420 |
+
|
421 |
+
#: functions/interface.functions.php:89
|
422 |
+
#, php-format
|
423 |
+
msgid "%1$s is running in %2$s. Please contact your host and ask them to disable %3$s."
|
424 |
+
msgstr ""
|
425 |
+
|
426 |
+
#: functions/interface.functions.php:89
|
427 |
+
msgid "http://php.net/manual/en/features.safe-mode.php"
|
428 |
+
msgstr "http://php.net/manual/sr/features.safe-mode.php"
|
429 |
+
|
430 |
+
#: functions/interface.functions.php:89
|
431 |
+
msgid "Safe Mode"
|
432 |
+
msgstr "Садржај"
|
433 |
+
|
434 |
+
#: functions/interface.functions.php:99
|
435 |
+
#, php-format
|
436 |
+
msgid "You have both %1$s and %2$s defined so there isn't anything to back up."
|
437 |
+
msgstr ""
|
438 |
+
|
439 |
+
#: functions/interface.functions.php:110
|
440 |
+
#, php-format
|
441 |
+
msgid "The following email address is not valid: %s."
|
442 |
+
msgid_plural "The following email addresses are not valid: %s."
|
443 |
+
msgstr[0] ""
|
444 |
+
msgstr[1] ""
|
445 |
+
msgstr[2] ""
|
446 |
+
|
447 |
+
#: functions/interface.functions.php:120
|
448 |
+
msgid "The last backup email failed to send. It's likely that the file is too large."
|
449 |
+
msgstr ""
|
450 |
+
|
451 |
+
#: functions/interface.functions.php:130
|
452 |
+
#, php-format
|
453 |
+
msgid "Your custom backups directory %1$s doesn't exist and can't be created, your backups will be saved to %2$s instead."
|
454 |
+
msgstr ""
|
455 |
+
|
456 |
+
#: functions/interface.functions.php:140
|
457 |
+
#, php-format
|
458 |
+
msgid "Your custom backups directory %1$s isn't writable, new backups will be saved to %2$s instead."
|
459 |
+
msgstr ""
|
460 |
+
|
461 |
+
#: functions/interface.functions.php:150
|
462 |
+
#, php-format
|
463 |
+
msgid "You have defined a custom exclude list but the following paths don't exist %s, are you sure you entered them correctly?"
|
464 |
+
msgstr ""
|
465 |
+
|
466 |
+
#: functions/interface.functions.php:160
|
467 |
+
msgid "BackUpWordPress detected issues with your last backup."
|
468 |
+
msgstr ""
|
469 |
+
|
470 |
+
#: functions/backup.actions.php:12
|
471 |
+
msgid "Dumping database"
|
472 |
+
msgstr ""
|
473 |
+
|
474 |
+
#: functions/backup.actions.php:22
|
475 |
+
msgid "Creating zip archive"
|
476 |
+
msgstr "Kreiranje zip arhive"
|
477 |
+
|
478 |
+
#: functions/backup.functions.php:19
|
479 |
+
msgid "Removing old backups"
|
480 |
+
msgstr "Uklanjanje starih rezervnih kopija"
|
481 |
+
|
482 |
+
#: functions/backup.functions.php:147
|
483 |
+
#: functions/backup.functions.php:157
|
484 |
+
#, php-format
|
485 |
+
msgid "Backup of %s"
|
486 |
+
msgstr "Rezervna kopija od %s"
|
487 |
+
|
488 |
+
#: functions/backup.functions.php:148
|
489 |
+
#, php-format
|
490 |
+
msgid ""
|
491 |
+
"BackUpWordPress has completed a backup of your site %1$s.\\n"
|
492 |
+
"\\n"
|
493 |
+
"The backup file should be attached to this email.\\n"
|
494 |
+
"\\n"
|
495 |
+
"You can also download the backup file by clicking the link below:\\n"
|
496 |
+
"\\n"
|
497 |
+
"%2$s\\n"
|
498 |
+
"\\n"
|
499 |
+
"Kind Regards\\n"
|
500 |
+
"\\n"
|
501 |
+
" The Happy BackUpWordPress Backup Emailing Robot"
|
502 |
+
msgstr ""
|
503 |
+
|
504 |
+
#: functions/backup.functions.php:158
|
505 |
+
#, php-format
|
506 |
+
msgid ""
|
507 |
+
"BackUpWordPress has completed a backup of your site %1$s.\\n"
|
508 |
+
"\\n"
|
509 |
+
"Unfortunately the backup file was too large to attach to this email.\\n"
|
510 |
+
"\\n"
|
511 |
+
"You can download the backup file by clicking the link below:\\n"
|
512 |
+
"\\n"
|
513 |
+
"%2$s\\n"
|
514 |
+
"\\n"
|
515 |
+
"Kind Regards\\n"
|
516 |
+
"\\n"
|
517 |
+
" The Happy BackUpWordPress Backup Emailing Robot"
|
518 |
+
msgstr ""
|
519 |
+
|
520 |
+
#: functions/core.functions.php:339
|
521 |
+
#, php-format
|
522 |
+
msgid "This %s file ensures that other people cannot download your backup files."
|
523 |
+
msgstr "Ova %s datoteka osigurava da drugi ljudi ne mogu skinuti vaše rezervne kopije."
|
524 |
+
|
backupwordpress/plugin.php
ADDED
@@ -0,0 +1,168 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/*
|
4 |
+
Plugin Name: BackUpWordPress
|
5 |
+
Plugin URI: http://hmn.md/backupwordpress/
|
6 |
+
Description: Simple automated backups of your WordPress powered website. Once activated you'll find me under <strong>Tools → Backups</strong>.
|
7 |
+
Author: Human Made Limited
|
8 |
+
Version: 2.0.4
|
9 |
+
Author URI: http://hmn.md/
|
10 |
+
*/
|
11 |
+
|
12 |
+
/* Copyright 2011 Human Made Limited (email : support@hmn.md)
|
13 |
+
|
14 |
+
This program is free software; you can redistribute it and/or modify
|
15 |
+
it under the terms of the GNU General Public License as published by
|
16 |
+
the Free Software Foundation; either version 2 of the License, or
|
17 |
+
(at your option) any later version.
|
18 |
+
|
19 |
+
This program is distributed in the hope that it will be useful,
|
20 |
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
21 |
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
22 |
+
GNU General Public License for more details.
|
23 |
+
|
24 |
+
You should have received a copy of the GNU General Public License
|
25 |
+
along with this program; if not, write to the Free Software
|
26 |
+
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
27 |
+
*/
|
28 |
+
|
29 |
+
if ( ! defined( 'HMBKP_PLUGIN_SLUG' ) )
|
30 |
+
define( 'HMBKP_PLUGIN_SLUG', 'backupwordpress' );
|
31 |
+
|
32 |
+
if ( ! defined( 'HMBKP_PLUGIN_PATH' ) )
|
33 |
+
define( 'HMBKP_PLUGIN_PATH', plugin_dir_path( __FILE__ ) );
|
34 |
+
|
35 |
+
if ( ! defined( 'HMBKP_PLUGIN_URL' ) )
|
36 |
+
define( 'HMBKP_PLUGIN_URL', plugins_url( HMBKP_PLUGIN_SLUG ) );
|
37 |
+
|
38 |
+
if ( ! defined( 'HMBKP_ADMIN_URL' ) )
|
39 |
+
define( 'HMBKP_ADMIN_URL', add_query_arg( 'page', HMBKP_PLUGIN_SLUG, admin_url( 'tools.php' ) ) );
|
40 |
+
|
41 |
+
if ( ! defined( 'HMBKP_REQUIRED_WP_VERSION' ) )
|
42 |
+
define( 'HMBKP_REQUIRED_WP_VERSION', '3.3.3' );
|
43 |
+
|
44 |
+
// Max memory limit isn't defined in old versions of WordPress
|
45 |
+
if ( ! defined( 'WP_MAX_MEMORY_LIMIT' ) )
|
46 |
+
define( 'WP_MAX_MEMORY_LIMIT', '256M' );
|
47 |
+
|
48 |
+
// Don't activate on anything less than PHP 5.2.4
|
49 |
+
if ( version_compare( phpversion(), '5.2.4', '<' ) ) {
|
50 |
+
|
51 |
+
require_once( ABSPATH . 'wp-admin/includes/plugin.php' );
|
52 |
+
deactivate_plugins( __FILE__ );
|
53 |
+
|
54 |
+
if ( isset( $_GET['action'] ) && ( $_GET['action'] == 'activate' || $_GET['action'] == 'error_scrape' ) )
|
55 |
+
die( __( 'BackUpWordPress requires PHP version 5.2.4 or greater.', 'hmbkp' ) );
|
56 |
+
|
57 |
+
}
|
58 |
+
|
59 |
+
// Don't activate on old versions of WordPress
|
60 |
+
if ( version_compare( get_bloginfo( 'version' ), HMBKP_REQUIRED_WP_VERSION, '<' ) ) {
|
61 |
+
|
62 |
+
require_once( ABSPATH . 'wp-admin/includes/plugin.php' );
|
63 |
+
deactivate_plugins( __FILE__ );
|
64 |
+
|
65 |
+
if ( isset( $_GET['action'] ) && ( $_GET['action'] == 'activate' || $_GET['action'] == 'error_scrape' ) )
|
66 |
+
die( sprintf( __( 'BackUpWordPress requires WordPress version %s or greater.', 'hmbkp' ), HMBKP_REQUIRED_WP_VERSION ) );
|
67 |
+
|
68 |
+
}
|
69 |
+
|
70 |
+
// Load the admin menu
|
71 |
+
require_once( HMBKP_PLUGIN_PATH . '/admin/menu.php' );
|
72 |
+
require_once( HMBKP_PLUGIN_PATH . '/admin/actions.php' );
|
73 |
+
|
74 |
+
// Load hm-backup
|
75 |
+
if ( ! class_exists( 'HM_Backup' ) )
|
76 |
+
require_once( HMBKP_PLUGIN_PATH . '/hm-backup/hm-backup.php' );
|
77 |
+
|
78 |
+
// Load the schedules
|
79 |
+
require_once( HMBKP_PLUGIN_PATH . '/classes/schedule.php' );
|
80 |
+
require_once( HMBKP_PLUGIN_PATH . '/classes/schedules.php' );
|
81 |
+
|
82 |
+
// Load the core functions
|
83 |
+
require_once( HMBKP_PLUGIN_PATH . '/functions/core.php' );
|
84 |
+
require_once( HMBKP_PLUGIN_PATH . '/functions/interface.php' );
|
85 |
+
|
86 |
+
// Load Services
|
87 |
+
require_once( HMBKP_PLUGIN_PATH . '/classes/services.php' );
|
88 |
+
|
89 |
+
// Load the email service
|
90 |
+
require_once( HMBKP_PLUGIN_PATH . '/classes/email.php' );
|
91 |
+
|
92 |
+
// Load the wp cli command
|
93 |
+
if ( defined( 'WP_CLI' ) && WP_CLI )
|
94 |
+
include( HMBKP_PLUGIN_PATH . '/classes/wp-cli.php' );
|
95 |
+
|
96 |
+
// Set the tmp directory to the backup path
|
97 |
+
if ( ! defined( 'PCLZIP_TEMPORARY_DIR' ) )
|
98 |
+
define( 'PCLZIP_TEMPORARY_DIR', trailingslashit( hmbkp_path() ) );
|
99 |
+
|
100 |
+
// Hook in the activation and deactivation actions
|
101 |
+
add_action( 'activate_' . HMBKP_PLUGIN_SLUG . '/plugin.php', 'hmbkp_activate' );
|
102 |
+
add_action( 'deactivate_' . HMBKP_PLUGIN_SLUG . '/plugin.php', 'hmbkp_deactivate' );
|
103 |
+
|
104 |
+
if ( ! function_exists( 'hmbkp_init' ) ) :
|
105 |
+
|
106 |
+
/**
|
107 |
+
* Plugin setup
|
108 |
+
*
|
109 |
+
* @return null
|
110 |
+
*/
|
111 |
+
function hmbkp_init() {
|
112 |
+
|
113 |
+
$plugin_data = get_plugin_data( __FILE__ );
|
114 |
+
|
115 |
+
// define the plugin version
|
116 |
+
define( 'HMBKP_VERSION', $plugin_data['Version'] );
|
117 |
+
|
118 |
+
// Load translations
|
119 |
+
load_plugin_textdomain( 'hmbkp', false, HMBKP_PLUGIN_SLUG . '/languages/' );
|
120 |
+
|
121 |
+
// Fire the update action
|
122 |
+
if ( HMBKP_VERSION != get_option( 'hmbkp_plugin_version' ) )
|
123 |
+
hmbkp_update();
|
124 |
+
|
125 |
+
// Load admin css and js
|
126 |
+
if ( isset( $_GET['page'] ) && $_GET['page'] == HMBKP_PLUGIN_SLUG ) {
|
127 |
+
|
128 |
+
wp_enqueue_script( 'hmbkp_fancybox', HMBKP_PLUGIN_URL . '/assets/fancyBox/source/jquery.fancybox.js', array( 'jquery' ), HMBKP_VERSION );
|
129 |
+
wp_enqueue_script( 'hmbkp', HMBKP_PLUGIN_URL . '/assets/hmbkp.js', array( 'jquery-ui-tabs', 'jquery-ui-widget', 'hmbkp_fancybox' ), HMBKP_VERSION );
|
130 |
+
|
131 |
+
wp_localize_script( 'hmbkp', 'objectL10n', array(
|
132 |
+
'update' => __( 'Update', 'hmbkp' ),
|
133 |
+
'cancel' => __( 'Cancel', 'hmbkp' ),
|
134 |
+
'delete_schedule' => __( 'Are you sure you want to delete this schedule? All of it\'s backups will also be deleted.' ) . "\n\n" . __( '\'Cancel\' to go back, \'OK\' to delete.', 'hmbkp' ) . "\n",
|
135 |
+
'delete_backup' => __( 'Are you sure you want to delete this backup?', 'hmbkp' ) . "\n\n" . __( '\'Cancel\' to go back, \'OK\' to delete.', 'hmbkp' ) . "\n",
|
136 |
+
'remove_exclude_rule' => __( 'Are you sure you want to remove this exclude rule?', 'hmbkp' ) . "\n\n" . __( '\'Cancel\' to go back, \'OK\' to delete.', 'hmbkp' ) . "\n",
|
137 |
+
'remove_old_backups' => __( 'Reducing the number of backups that are stored on this server will cause some of your existing backups to be deleted, are you sure that\'s what you want?', 'hmbkp' ) . "\n\n" . __( '\'Cancel\' to go back, \'OK\' to delete.', 'hmbkp' ) . "\n"
|
138 |
+
) );
|
139 |
+
|
140 |
+
wp_enqueue_style( 'hmbkp_fancybox', HMBKP_PLUGIN_URL . '/assets/fancyBox/source/jquery.fancybox.css', false, HMBKP_VERSION );
|
141 |
+
wp_enqueue_style( 'hmbkp', HMBKP_PLUGIN_URL . '/assets/hmbkp.css', false, HMBKP_VERSION );
|
142 |
+
|
143 |
+
}
|
144 |
+
|
145 |
+
// Handle any advanced option changes
|
146 |
+
hmbkp_constant_changes();
|
147 |
+
|
148 |
+
}
|
149 |
+
add_action( 'admin_init', 'hmbkp_init' );
|
150 |
+
|
151 |
+
/**
|
152 |
+
* Function to run when the schedule cron fires
|
153 |
+
* @param array $args
|
154 |
+
*/
|
155 |
+
function hmbkp_schedule_hook_run( $schedule_id ) {
|
156 |
+
|
157 |
+
$schedules = new HMBKP_Schedules();
|
158 |
+
$schedule = $schedules->get_schedule( $schedule_id );
|
159 |
+
|
160 |
+
if ( ! $schedule )
|
161 |
+
return;
|
162 |
+
|
163 |
+
$schedule->run();
|
164 |
+
|
165 |
+
}
|
166 |
+
add_action( 'hmbkp_schedule_hook', 'hmbkp_schedule_hook_run' );
|
167 |
+
|
168 |
+
endif;
|
backupwordpress/readme.txt
ADDED
@@ -0,0 +1,391 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
=== BackUpWordPress ===
|
2 |
+
Contributors: humanmade, joehoyle, mattheu, tcrsavage, willmot, cuvelier
|
3 |
+
Tags: back up, backup, backups, database, zip, db, files, archive, wp-cli, humanmade
|
4 |
+
Requires at least: 3.3.3
|
5 |
+
Tested up to: 3.5
|
6 |
+
Stable tag: 2.0.4
|
7 |
+
|
8 |
+
Simple automated back ups of your WordPress powered website.
|
9 |
+
|
10 |
+
== Description ==
|
11 |
+
|
12 |
+
BackUpWordPress will back up your entire site including your database and all your files on a schedule that suits you.
|
13 |
+
|
14 |
+
= Features =
|
15 |
+
|
16 |
+
* Manage multiple schedules.
|
17 |
+
* Super simple to use, no setup required.
|
18 |
+
* Uses `zip` and `mysqldump` for faster back ups if they are available.
|
19 |
+
* Works in low memory, "shared host" environments.
|
20 |
+
* Option to have each backup file emailed to you.
|
21 |
+
* Works on Linux & Windows Server.
|
22 |
+
* Exclude files and folders from your back ups.
|
23 |
+
* Good support should you need help.
|
24 |
+
* Translations for Spanish, German, Chinese, Romanian, Russian, Serbian, Lithuanian, Italian, Czech, Dutch, French, Basque.
|
25 |
+
|
26 |
+
= Help develop this plugin =
|
27 |
+
|
28 |
+
The BackUpWordPress plugin is hosted GitHub, if you want to help out with development or testing then head over to https://github.com/humanmade/backupwordpress/.
|
29 |
+
|
30 |
+
= Translations =
|
31 |
+
|
32 |
+
We'd also love help translating the plugin into more languages, if you can help then please contact support@hmn.md or visit http://translate.hmn.md/.
|
33 |
+
|
34 |
+
== Installation ==
|
35 |
+
|
36 |
+
1. Install BackUpWordPress either via the WordPress.org plugin directory, or by uploading the files to your server.
|
37 |
+
2. Activate the plugin.
|
38 |
+
3. Sit back and relax safe in the knowledge that your whole site will be backed up every day.
|
39 |
+
|
40 |
+
The plugin will try to use the `mysqldump` and `zip` commands via shell if they are available, using these will greatly improve the time it takes to back up your site.
|
41 |
+
|
42 |
+
== Frequently Asked Questions ==
|
43 |
+
|
44 |
+
**Where does BackUpWordPress store the backup files?**
|
45 |
+
|
46 |
+
Backups are stored on your server in `/wp-content/backups`, you can change the directory.
|
47 |
+
|
48 |
+
**Important:** By default BackUpWordPress backs up everything in your site root as well as your database, this includes any non WordPress folders that happen to be in your site root. This does means that your backup directory can get quite large.
|
49 |
+
|
50 |
+
**How do I restore my site from a backup?**
|
51 |
+
|
52 |
+
You need to download the latest backup file either by clicking download on the backups page or via `FTP`. `Unzip` the files and upload all the files to your server overwriting your site. You can then import the database using your hosts database management tool (likely `phpMyAdmin`).
|
53 |
+
|
54 |
+
See this post for more details http://hmn.md/backupwordpress/
|
55 |
+
|
56 |
+
**Does BackUpWordPress back up the backups directory?**
|
57 |
+
|
58 |
+
No.
|
59 |
+
|
60 |
+
**I'm not receiving my backups by email**
|
61 |
+
|
62 |
+
Most servers have a filesize limit on email attachments, it's generally about 10mb. If your backup file is over that limit it won't be sent attached to the email, instead you should receive an email with a link to download the backup, if you aren't even receiving that then you likely have a mail issue on your server that you'll need to contact your host about.
|
63 |
+
|
64 |
+
**How many backups are stored by default?**
|
65 |
+
|
66 |
+
BackUpWordPress stores the last 10 backups by default.
|
67 |
+
|
68 |
+
**How long should a backup take?**
|
69 |
+
|
70 |
+
Unless your site is very large (many gigabytes) it should only take a few minutes to perform a back up, if your back up has been running for longer than an hour it's safe to assume that something has gone wrong, try de-activating and re-activating the plugin, if it keeps happening, contact support.
|
71 |
+
|
72 |
+
**What do I do if I get the wp-cron error message**
|
73 |
+
|
74 |
+
The issue is that your `wp-cron.php` is not returning a `200` response when hit with a http request originating from your own server, it could be several things, most of the time it's an issue with the server / site and not with BackUpWordPress.
|
75 |
+
|
76 |
+
Some things you can test are.
|
77 |
+
|
78 |
+
* Are scheduled posts working? (They use wp-cron too).
|
79 |
+
* Are you hosted on Heart Internet? (wp-cron is known not to work with them).
|
80 |
+
* If you click manual backup does it work?
|
81 |
+
* Try adding `define( 'ALTERNATE_WP_CRON', true ); to your `wp-config.php`, do automatic backups work?
|
82 |
+
* Is your site private (I.E. is it behind some kind of authentication, maintenance plugin, .htaccess) if so wp-cron won't work until you remove it, if you are and you temporarily remove the authentication, do backups start working?
|
83 |
+
|
84 |
+
If you have tried all these then feel free to contact support.
|
85 |
+
|
86 |
+
**How to get BackUpWordPress working in Heart Internet**
|
87 |
+
|
88 |
+
The script to be entered into the Heart Internet cPanel is: `/usr/bin/php5 /home/sites/yourdomain.com/public_html/wp-cron.php` (note the space between php5 and the location of the file). The file `wp-cron.php` `chmod` must be set to `711`.
|
89 |
+
|
90 |
+
**Further Support & Feedback**
|
91 |
+
|
92 |
+
General support questions should be posted in the <a href="http://wordpress.org/tags/backupwordpress?forum_id=10">WordPress support forums, tagged with backupwordpress.</a>
|
93 |
+
|
94 |
+
For development issues, feature requests or anybody wishing to help out with development checkout <a href="https://github.com/humanmade/backupwordpress/">BackUpWordPress on GitHub.</a>
|
95 |
+
|
96 |
+
You can also tweet <a href="http://twitter.com/humanmadeltd">@humanmadeltd</a> or email support@hmn.md for further help/support.
|
97 |
+
|
98 |
+
== Screenshots ==
|
99 |
+
|
100 |
+
1. Manage multiple schedules.
|
101 |
+
2. Choose your schedule, backup type, number of backups to keep and whether to recieve a notification email.
|
102 |
+
3. Easily manage exclude rules and see exactly which files are included and excluded from your backup.
|
103 |
+
|
104 |
+
== Changelog ==
|
105 |
+
|
106 |
+
#### 2.0.4
|
107 |
+
|
108 |
+
* Revert the change to the way the plugin url and path were calculated as it caused regressions on some systems.
|
109 |
+
|
110 |
+
#### 2.0.3
|
111 |
+
|
112 |
+
* Fix issues with scheduled backups not firing in some cases.
|
113 |
+
* Better compatibility when the WP Remote plugin is active alongside BackUpWordPress.
|
114 |
+
* Catch and display more WP Cron errors.
|
115 |
+
* BackUpWordPress now fails to activate on WordPress 3.3.2 and below.
|
116 |
+
* Other minor fixes and improvements.
|
117 |
+
|
118 |
+
#### 2.0.2
|
119 |
+
|
120 |
+
* Only send backup failed emails if the backup actually failed.
|
121 |
+
* Turn off the generic "memory limit probably hit" message as it was showing for too many people.
|
122 |
+
* Fix a possible notice when the backup running filename is blank.
|
123 |
+
* Include the `wp_error` response in the cron check.
|
124 |
+
|
125 |
+
#### 2.0.1
|
126 |
+
|
127 |
+
* Fix fatal error on PHP 5.2.
|
128 |
+
|
129 |
+
#### 2.0
|
130 |
+
|
131 |
+
* Ability to have multiple schedules with separate settings & excludes per schedule.
|
132 |
+
* Ability to manage exclude rules and see exactly which files are included and excluded.
|
133 |
+
* Fix an issue with sites with an `open_basedir` restriction.
|
134 |
+
* Backups should now be much more reliable in low memory environments.
|
135 |
+
* Lots of other minor improvements and bug fixes.
|
136 |
+
|
137 |
+
#### 1.6.9
|
138 |
+
|
139 |
+
* Updated and improved translations across the board - props @elektronikLexikon.
|
140 |
+
* German translation - props @elektronikLexikon.
|
141 |
+
* New Basque translation - props Unai ZC.
|
142 |
+
* New Dutch translation - Anno De Vries.
|
143 |
+
* New Italian translation.
|
144 |
+
* Better support for when WordPress is installed in a sub directory - props @mattheu
|
145 |
+
|
146 |
+
|
147 |
+
#### 1.6.8
|
148 |
+
|
149 |
+
* French translation props Christophe - http://catarina.fr.
|
150 |
+
* Updated Spanish Translation props DD666 - https://github.com/radinamatic.
|
151 |
+
* Serbian translation props StefanRistic - https://github.com/StefanRistic.
|
152 |
+
* Lithuanian translation props Vincent G - http://www.Host1Free.com.
|
153 |
+
* Romanian translation.
|
154 |
+
* Fix conflict with WP Remote.
|
155 |
+
* Fix a minor issue where invalid email address's were still stored.
|
156 |
+
* The root path that is backed up can now be controlled by defining `HMBKP_ROOT`.
|
157 |
+
|
158 |
+
#### 1.6.7
|
159 |
+
|
160 |
+
* Fix issue with backups being listed in reverse chronological order.
|
161 |
+
* Fix issue with newest backup being deleted when you hit your max backups limit.
|
162 |
+
* It's now possible to have backups sent to multiple email address's by entering them as a comma separated list.
|
163 |
+
* Fix a bug which broke the ability to override the `mysqldump` path with `HMBKP_MYSQLDUMP_PATH`.
|
164 |
+
* Use `echo` rather than `pwd` when testing `shell_exec` as it's supported cross platform.
|
165 |
+
* Updated Spanish translation.
|
166 |
+
* Fix a minor spelling mistake.
|
167 |
+
* Speed up the manage backups page by caching the FAQ data for 24 hours.
|
168 |
+
|
169 |
+
#### 1.6.6
|
170 |
+
|
171 |
+
* Fix backup path issue with case sensitive filesystems.
|
172 |
+
|
173 |
+
#### 1.6.5
|
174 |
+
|
175 |
+
* Fix an issue with emailing backups that could cause the backup file to not be attached.
|
176 |
+
* Fix an issue that could cause the backup to be marked as running for ever if emailing the backup `FATAL` error'd.
|
177 |
+
* Never show the running backup in the list of backups.
|
178 |
+
* Show an error backup email failed to send.
|
179 |
+
* Fix possible notice when deleting a backup file which doesn't exist.
|
180 |
+
* Fix possible notice on older versions of `PHP` which don't define `E_DEPRECATED`.
|
181 |
+
* Make `HMBKP_SECURE_KEY` override-able.
|
182 |
+
* BackUpWordPress should now work when `ABSPATH` is `/`.
|
183 |
+
|
184 |
+
#### 1.6.4
|
185 |
+
|
186 |
+
* Don't show warning message as they cause to much panic.
|
187 |
+
* Move previous methods errors to warnings in fallback methods.
|
188 |
+
* Wrap `.htaccess` rewrite rules in if `mod_rewrite` check.
|
189 |
+
* Add link to new restore help article to FAQ.
|
190 |
+
* Fix issue that could cause "not using latest stable version" message to show when you were in-fact using the latest version.
|
191 |
+
* Bug fix in `zip command` check that could cause an incorrect `zip` path to be used.
|
192 |
+
* Detect and pass `MySQL` port to `mysqldump`.
|
193 |
+
|
194 |
+
#### 1.6.3
|
195 |
+
|
196 |
+
* Don't fail archive verification for errors in previous archive methods.
|
197 |
+
* Improved detection of the `zip` and `mysqldump` commands.
|
198 |
+
* Fix issues when `ABSPATH` is `/`.
|
199 |
+
* Remove reliance on `SECURE_AUTH_KEY` as it's often not defined.
|
200 |
+
* Use `warning()` not `error()` for issues reported by `zip`, `ZipArchive` & `PclZip`.
|
201 |
+
* Fix download zip on Windows when `ABSPATH` contains a trailing forward slash.
|
202 |
+
* Send backup email after backup completes so that fatal errors in email code don't stop the backup from completing.
|
203 |
+
* Add missing / to `PCLZIP_TEMPORARY_DIR` define.
|
204 |
+
* Catch and display errors during `mysqldump`.
|
205 |
+
|
206 |
+
#### 1.6.2
|
207 |
+
|
208 |
+
* Track `PHP` errors as backup warnings not errors.
|
209 |
+
* Only show warning message for `PHP` errors in BackUpWordPress files.
|
210 |
+
* Ability to dismiss the error / warning messages.
|
211 |
+
* Disable use of `PclZip` for full archive checking for now as it causes memory issues on some large sites.
|
212 |
+
* Don't delete "number of backups" setting on update.
|
213 |
+
* Better handling of multibyte characters in archive and database dump filenames.
|
214 |
+
* Mark backup as running and increase callback timeout to `500` when firing backup via ajax.
|
215 |
+
* Don't send backup email if backup failed.
|
216 |
+
* Filter out duplicate exclude rules.
|
217 |
+
|
218 |
+
#### 1.6.1
|
219 |
+
|
220 |
+
* Fix fatal error on PHP =< 5.3
|
221 |
+
|
222 |
+
#### 1.6
|
223 |
+
|
224 |
+
* Fixes issue with backups dir being included in backups on some Windows Servers.
|
225 |
+
* Consistent handling of symlinks across all archive methods (they are followed).
|
226 |
+
* Use .htaccess rewrite cond authentication to allow for secure http downloads of backup files.
|
227 |
+
* Track errors and warnings that happen during backup and expose them through admin.
|
228 |
+
* Fire manual backups using ajax instead of wp-cron, `HMBKP_DISABLE_MANUAL_BACKUP_CRON` is no longer needed and has been removed.
|
229 |
+
* Ability to cancel a running backup.
|
230 |
+
* Zip files are now integrity checked after every backup.
|
231 |
+
* More robust handling of failed / corrupt zips, backup process now fallsback through the various zip methods until one works.
|
232 |
+
* Use `mysql_query` instead of the depreciated `mysql_list_tables`.
|
233 |
+
|
234 |
+
#### 1.5.2
|
235 |
+
|
236 |
+
* Better handling of unreadable files in ZipArchive and the backup size calculation.
|
237 |
+
* Support for wp-cli, usage: `wp backup [--files_only] [--database_only] [--path<dir>] [--root<dir>] [--zip_command_path=<path>] [--mysqldump_command_path=<path>]`
|
238 |
+
|
239 |
+
#### 1.5.1
|
240 |
+
|
241 |
+
* Better detection of `zip` command.
|
242 |
+
* Don't delete user settings on update / deactivate.
|
243 |
+
* Use `ZipArchive` if `zip` is not available, still falls back to `PclZip` if neither `zip` nor `ZipArchive` are installed.
|
244 |
+
* Better exclude rule parsing, fixes lots of edge cases, excludes now pass all 52 unit tests.
|
245 |
+
* Improved the speed of the backup size calculation.
|
246 |
+
|
247 |
+
#### 1.5
|
248 |
+
|
249 |
+
* Re-written core backup engine should be more robust especially in edge case scenarios.
|
250 |
+
* 48 unit tests for the core backup engine, yay for unit tests.
|
251 |
+
* Remove some extraneous status information from the admin interface.
|
252 |
+
* Rename Advanced Options to Settings
|
253 |
+
* New `Constant` `HMBKP_CAPABILITY` to allow the default `add_menu_page` capability to be changed.
|
254 |
+
* Suppress possible filemtime warnings in some edge cases.
|
255 |
+
* 3.3 compatability.
|
256 |
+
* Set proper charset of MySQL backup, props valericus.
|
257 |
+
* Fix some inconsistencies between the estimated backup size and actual backup size when excluding files.
|
258 |
+
|
259 |
+
#### 1.4.1
|
260 |
+
|
261 |
+
* 1.4 was incorrectly marked as beta.
|
262 |
+
|
263 |
+
#### 1.4
|
264 |
+
|
265 |
+
* Most options can now be set on the backups page, all options can still be set by defining them as `Constants`.
|
266 |
+
* Russian translation, props valericus.
|
267 |
+
* All dates are now translatable.
|
268 |
+
* Fixed some strings which weren't translatable.
|
269 |
+
* New Constant `HMBKP_DISABLE_MANUAL_BACKUP_CRON` which enable you to disable the use of `wp_cron` for manual backups.
|
270 |
+
* Manual backups now work if `DISABLE_WP_CRON` is defined as `true`.
|
271 |
+
|
272 |
+
#### 1.3.2
|
273 |
+
|
274 |
+
* Spanish translation
|
275 |
+
* Bump PHP version check to 5.2.4
|
276 |
+
* Fallback to PHP mysqldump if shell_exec fails for any reason.
|
277 |
+
* Silently ignore unreadable files / folders
|
278 |
+
* Make sure binary data is properly exported when doing a mysqldump
|
279 |
+
* Use 303 instead of 302 when redirecting in the admin.
|
280 |
+
* Don't `set_time_limit` inside a loop
|
281 |
+
* Use WordPress 3.2 style buttons
|
282 |
+
* Don't pass an empty password to mysqldump
|
283 |
+
|
284 |
+
#### 1.3.1
|
285 |
+
|
286 |
+
* Check for PHP version. Deactivate plugin if running on PHP version 4.
|
287 |
+
|
288 |
+
#### 1.3
|
289 |
+
|
290 |
+
* Re-written back up engine, no longer copies everything to a tmp folder before zipping which should improve speed and reliability.
|
291 |
+
* Support for excluding files and folders, define `HMBKP_EXCLUDE` with a comma separated list of files and folders to exclude, supports wildcards `*`, path fragments and absolute paths.
|
292 |
+
* Full support for moving the backups directory, if you define a new backups directory then your existing backups will be moved to it.
|
293 |
+
* Work around issues caused by low MySQL `wait_timeout` setting.
|
294 |
+
* Add FAQ to readme.txt.
|
295 |
+
* Pull FAQ into the contextual help tab on the backups page.
|
296 |
+
* Block activation on old versions of WordPress.
|
297 |
+
* Stop guessing compressed backup file size, instead just show size of site uncompressed.
|
298 |
+
* Fix bug in `safe_mode` detection which could cause `Off` to act like `On`.
|
299 |
+
* Better name for the database dump file.
|
300 |
+
* Better name for the backup files.
|
301 |
+
* Improve styling for advanced options.
|
302 |
+
* Show examples for all advanced options.
|
303 |
+
* Language improvements.
|
304 |
+
* Layout tweaks.
|
305 |
+
|
306 |
+
#### 1.2
|
307 |
+
|
308 |
+
* Show live backup status in the back up now button when a back up is running.
|
309 |
+
* Show free disk space after total used by backups.
|
310 |
+
* Several langauge changes.
|
311 |
+
* Work around the 1 cron every 60 seconds limit.
|
312 |
+
* Store backup status in a 2 hour transient as a last ditch attempt to work around the "stuck on backup running" issue.
|
313 |
+
* Show a warning and disable backups when PHP is in Safe Mode, may try to work round issues and re-enable in the future.
|
314 |
+
* Highlight defined `Constants`.
|
315 |
+
* Show defaults for all `Constants`.
|
316 |
+
* Show a warning if both `HMBKP_FILES_ONLY` and `HMBKP_DATABASE_ONLY` are defined at the same time.
|
317 |
+
* Make sure options added in 1.1.4 are cleared on de-activate.
|
318 |
+
* Support `mysqldump on` Windows if it's available.
|
319 |
+
* New option to have each backup emailed to you on completion. Props @matheu for the contribution.
|
320 |
+
* Improved windows server support.
|
321 |
+
|
322 |
+
#### 1.1.4
|
323 |
+
|
324 |
+
* Fix a rare issue where database backups could fail when using the mysqldump PHP fallback if `mysql.max_links` is set to 2 or less.
|
325 |
+
* Don't suppress `mysql_connect` errors in the mysqldump PHP fallback.
|
326 |
+
* One time highlight of the most recent completed backup when viewing the manage backups page after a successful backup.
|
327 |
+
* Fix a spelling error in the `shell_exec` disabled message.
|
328 |
+
* Store the BackUpWordPress version as a `Constant` rather than a `Variable`.
|
329 |
+
* Don't `(float)` the BackUpWordPress version number, fixes issues with minor versions numbers being truncated.
|
330 |
+
* Minor PHPDoc improvements.
|
331 |
+
|
332 |
+
#### 1.1.3
|
333 |
+
|
334 |
+
* Attempt to re-connect if database connection hits a timeout while a backup is running, should fix issues with the "Back Up Now" button continuing to spin even though the backup is completed.
|
335 |
+
* When using `PCLZIP` as the zip fallback don't store the files with absolute paths. Should fix issues unzipping the file archives using "Compressed (zipped) Folders" on Windows XP.
|
336 |
+
|
337 |
+
#### 1.1.2
|
338 |
+
|
339 |
+
* Fix a bug that stopped `HMBKP_DISABLE_AUTOMATIC_BACKUP` from working.
|
340 |
+
|
341 |
+
#### 1.1.1
|
342 |
+
|
343 |
+
* Fix a possible `max_execution_timeout` fatal error when attempting to calculate the path to `mysqldump`.
|
344 |
+
* Clear the running backup status and reset the calculated filesize on update.
|
345 |
+
* Show a link to the manage backups page in the plugin description.
|
346 |
+
* Other general fixes.
|
347 |
+
|
348 |
+
#### 1.1
|
349 |
+
|
350 |
+
* Remove the logging facility as it provided little benefit and complicated the code, your existing logs will be deleted on update.
|
351 |
+
* Expose the various `Constants` that can be defined to change advanced settings.
|
352 |
+
* Added the ability to disable the automatic backups completely `define( 'HMBKP_DISABLE_AUTOMATIC_BACKUP', true );`.
|
353 |
+
* Added the ability to switch to file only or database only backups `define( 'HMBKP_FILES_ONLY', true );` Or `define( 'HMBKP_DATABASE_ONLY', true );`.
|
354 |
+
* Added the ability to define how many old backups should be kept `define( 'HMBKP_MAX_BACKUPS', 20 );`
|
355 |
+
* Added the ability to define the time that the daily backup should run `define( 'HMBKP_DAILY_SCHEDULE_TIME', '16:30' );`
|
356 |
+
* Tweaks to the backups page layout.
|
357 |
+
* General bug fixes and improvements.
|
358 |
+
|
359 |
+
#### 1.0.5
|
360 |
+
|
361 |
+
* Don't ajax load estimated backup size if it's already been calculated.
|
362 |
+
* Fix time in backup complete log message.
|
363 |
+
* Don't mark backup as running until cron has been called, will fix issues with backup showing as running even if cron never fired.
|
364 |
+
* Show number of backups saved message.
|
365 |
+
* Add a link to the backups page to the plugin action links.
|
366 |
+
|
367 |
+
#### 1.0.4
|
368 |
+
|
369 |
+
Don't throw PHP Warnings when `shell_exec` is disabled
|
370 |
+
|
371 |
+
#### 1.0.3
|
372 |
+
|
373 |
+
Minor bug fix release.
|
374 |
+
|
375 |
+
* Suppress `filesize()` warnings when calculating backup size.
|
376 |
+
* Plugin should now work when symlinked.
|
377 |
+
* Remove all options on deactivate, you should now be able to deactivate then activate to fix issues with settings etc. becoming corrupt.
|
378 |
+
* Call setup_defaults for users who update from backupwordpress 0.4.5 so they get new settings.
|
379 |
+
* Don't ajax ping running backup status quite so often.
|
380 |
+
|
381 |
+
#### 1.0.1 & 1.0.2
|
382 |
+
|
383 |
+
Fix some silly 1.0 bugs
|
384 |
+
|
385 |
+
#### 1.0
|
386 |
+
|
387 |
+
1.0 represents a total rewrite & rethink of the BackUpWordPress plugin with a focus on making it "Just Work". The management and development of the plugin has been taken over by [Human Made Limited](http://hmn.md) the chaps behind [WP Remote](https://wpremote.com)
|
388 |
+
|
389 |
+
#### Previous
|
390 |
+
|
391 |
+
Version 0.4.5 and previous were developed by [wpdprx](http://profiles.wordpress.org/users/wpdprx/)
|
plugin.php
CHANGED
@@ -2,8 +2,8 @@
|
|
2 |
|
3 |
/*
|
4 |
Plugin Name: WP Remote
|
5 |
-
Description: Manage your WordPress site with <a href="https://wpremote.com/">WP Remote</a>. Deactivate to clear your API Key
|
6 |
-
Version: 2.
|
7 |
Author: Human Made Limited
|
8 |
Author URI: http://hmn.md/
|
9 |
*/
|
@@ -28,6 +28,9 @@ Author URI: http://hmn.md/
|
|
28 |
define( 'WPRP_PLUGIN_SLUG', 'wpremote' );
|
29 |
define( 'WPRP_PLUGIN_PATH', plugin_dir_path( __FILE__ ) );
|
30 |
|
|
|
|
|
|
|
31 |
// Don't activate on anything less than PHP 5.2.4
|
32 |
if ( version_compare( phpversion(), '5.2.4', '<' ) ) {
|
33 |
|
@@ -39,11 +42,41 @@ if ( version_compare( phpversion(), '5.2.4', '<' ) ) {
|
|
39 |
|
40 |
}
|
41 |
|
42 |
-
require_once( WPRP_PLUGIN_PATH
|
43 |
|
44 |
// Backups require 3.1
|
45 |
-
if ( version_compare( get_bloginfo( 'version' ), '3.1', '>=' )
|
46 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
47 |
|
48 |
// Don't include when doing a core update
|
49 |
if ( empty( $_GET['action'] ) || $_GET['action'] != 'do-core-upgrade' ) :
|
@@ -131,7 +164,6 @@ function wprp_catch_api_call() {
|
|
131 |
if ( empty( $_GET['wpr_api_key'] ) || ! urldecode( $_GET['wpr_api_key'] ) || ! isset( $_GET['actions'] ) )
|
132 |
return;
|
133 |
|
134 |
-
require_once( WPRP_PLUGIN_PATH . '/wprp.backups.php' );
|
135 |
require_once( WPRP_PLUGIN_PATH . '/wprp.plugins.php' );
|
136 |
require_once( WPRP_PLUGIN_PATH . '/wprp.themes.php' );
|
137 |
|
@@ -212,4 +244,13 @@ function _wpr_set_filesystem_credentials( $credentials ) {
|
|
212 |
|
213 |
return $_credentials;
|
214 |
}
|
215 |
-
add_filter( 'request_filesystem_credentials', '_wpr_set_filesystem_credentials' );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
|
3 |
/*
|
4 |
Plugin Name: WP Remote
|
5 |
+
Description: Manage your WordPress site with <a href="https://wpremote.com/">WP Remote</a>. <strong>Deactivate to clear your API Key.</strong>
|
6 |
+
Version: 2.4
|
7 |
Author: Human Made Limited
|
8 |
Author URI: http://hmn.md/
|
9 |
*/
|
28 |
define( 'WPRP_PLUGIN_SLUG', 'wpremote' );
|
29 |
define( 'WPRP_PLUGIN_PATH', plugin_dir_path( __FILE__ ) );
|
30 |
|
31 |
+
if ( ! defined( 'WPR_API_URL' ) )
|
32 |
+
define( 'WPR_API_URL', 'https://wpremote.com/api/json/' );
|
33 |
+
|
34 |
// Don't activate on anything less than PHP 5.2.4
|
35 |
if ( version_compare( phpversion(), '5.2.4', '<' ) ) {
|
36 |
|
42 |
|
43 |
}
|
44 |
|
45 |
+
require_once( WPRP_PLUGIN_PATH . '/wprp.admin.php' );
|
46 |
|
47 |
// Backups require 3.1
|
48 |
+
if ( version_compare( get_bloginfo( 'version' ), '3.1', '>=' ) ) {
|
49 |
+
|
50 |
+
// deactivate backupwordpress
|
51 |
+
if ( defined( 'HMBKP_PLUGIN_PATH' ) ) {
|
52 |
+
|
53 |
+
$plugin_file = dirname( plugin_dir_path( HMBKP_PLUGIN_PATH ) ) . 'plugin.php';
|
54 |
+
|
55 |
+
deactivate_plugins( array( 'backupwordpress/plugin.php' ), true );
|
56 |
+
|
57 |
+
function wprp_backupwordpress_deactivated_notice() {
|
58 |
+
|
59 |
+
echo '<div class="updated fade"><p><strong>The BackUpWordPress Plugin has been de-activated</strong> The WP Remote Plugin includes BackUpWordPress.</p></div>';
|
60 |
+
|
61 |
+
}
|
62 |
+
add_action( 'admin_notices', 'wprp_backupwordpress_deactivated_notice' );
|
63 |
+
|
64 |
+
} else {
|
65 |
+
|
66 |
+
define( 'HMBKP_PLUGIN_PATH', trailingslashit( WPRP_PLUGIN_PATH ) . 'backupwordpress' );
|
67 |
+
define( 'HMBKP_PLUGIN_URL', trailingslashit( plugins_url( WPRP_PLUGIN_SLUG ) ) . 'backupwordpress' );
|
68 |
+
|
69 |
+
require( WPRP_PLUGIN_PATH . '/backupwordpress/plugin.php' );
|
70 |
+
|
71 |
+
require_once( WPRP_PLUGIN_PATH . '/wprp.backups.php' );
|
72 |
+
|
73 |
+
}
|
74 |
+
|
75 |
+
// unhook default schedules from being created
|
76 |
+
remove_action( 'admin_init', 'hmbkp_setup_default_schedules' );
|
77 |
+
remove_filter( 'all_plugins', 'hmbkp_plugin_row', 10 );
|
78 |
+
remove_filter( 'plugin_action_links', 'hmbkp_plugin_action_link', 10, 2 );
|
79 |
+
}
|
80 |
|
81 |
// Don't include when doing a core update
|
82 |
if ( empty( $_GET['action'] ) || $_GET['action'] != 'do-core-upgrade' ) :
|
164 |
if ( empty( $_GET['wpr_api_key'] ) || ! urldecode( $_GET['wpr_api_key'] ) || ! isset( $_GET['actions'] ) )
|
165 |
return;
|
166 |
|
|
|
167 |
require_once( WPRP_PLUGIN_PATH . '/wprp.plugins.php' );
|
168 |
require_once( WPRP_PLUGIN_PATH . '/wprp.themes.php' );
|
169 |
|
244 |
|
245 |
return $_credentials;
|
246 |
}
|
247 |
+
add_filter( 'request_filesystem_credentials', '_wpr_set_filesystem_credentials' );
|
248 |
+
|
249 |
+
// we need the calculate filesize to work on no priv too
|
250 |
+
add_action( 'wp_ajax_nopriv_wprp_calculate_backup_size', 'wprp_ajax_calculate_backup_size' );
|
251 |
+
|
252 |
+
function wprp_ajax_calculate_backup_size() {
|
253 |
+
require_once( WPRP_PLUGIN_PATH . '/wprp.backups.php' );
|
254 |
+
WPRP_Backups::getInstance()->calculateEstimatedSize();
|
255 |
+
exit;
|
256 |
+
}
|
readme.txt
CHANGED
@@ -3,7 +3,7 @@ Contributors: humanmade, joehoyle, mattheu, tcrsavage, willmot
|
|
3 |
Tags: wpremote, remote administration, multiple wordpress
|
4 |
Requires at least: 2.9
|
5 |
Tested up to: 3.5
|
6 |
-
Stable tag: 2.
|
7 |
|
8 |
WP Remote is a free web app that enables you to easily manage all of your WordPress powered sites from one place.
|
9 |
|
@@ -31,6 +31,12 @@ You can email us at support@wpremote.com for support.
|
|
31 |
|
32 |
== Changelog ==
|
33 |
|
|
|
|
|
|
|
|
|
|
|
|
|
34 |
#### 2.3.1
|
35 |
|
36 |
* PHP 5.2.4 compat.
|
3 |
Tags: wpremote, remote administration, multiple wordpress
|
4 |
Requires at least: 2.9
|
5 |
Tested up to: 3.5
|
6 |
+
Stable tag: 2.4
|
7 |
|
8 |
WP Remote is a free web app that enables you to easily manage all of your WordPress powered sites from one place.
|
9 |
|
31 |
|
32 |
== Changelog ==
|
33 |
|
34 |
+
#### 2.4
|
35 |
+
|
36 |
+
* Backups are now powered by BackUpWordPress.
|
37 |
+
* The BackUpWordPress Plugin can no longer be run alongside WP Remote.
|
38 |
+
* Emphasise that you can deactivate the plugin to clear your API key.
|
39 |
+
|
40 |
#### 2.3.1
|
41 |
|
42 |
* PHP 5.2.4 compat.
|
wprp.admin.php
CHANGED
@@ -30,7 +30,7 @@ function wprp_add_api_key_admin_notice() { ?>
|
|
30 |
|
31 |
<input style="margin: -4px 5px; vertical-align: text-bottom; line-height: 13px; font-size: 12px;" type="text" class="code regular-text" id="wpr_api_key" name="wpr_api_key" />
|
32 |
|
33 |
-
<input style="
|
34 |
|
35 |
</p>
|
36 |
|
@@ -78,4 +78,17 @@ function wprp_deactivate() {
|
|
78 |
}
|
79 |
// Plugin activation and deactivation
|
80 |
add_action( 'activate_' . WPRP_PLUGIN_SLUG . '/plugin.php', 'wprp_deactivate' );
|
81 |
-
add_action( 'deactivate_' . WPRP_PLUGIN_SLUG . '/plugin.php', 'wprp_deactivate' );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
30 |
|
31 |
<input style="margin: -4px 5px; vertical-align: text-bottom; line-height: 13px; font-size: 12px;" type="text" class="code regular-text" id="wpr_api_key" name="wpr_api_key" />
|
32 |
|
33 |
+
<input style="margin: -6px 0 -3px; line-height: 12px; height: 12px;" type="submit" value="Save API Key" class="button-primary" />
|
34 |
|
35 |
</p>
|
36 |
|
78 |
}
|
79 |
// Plugin activation and deactivation
|
80 |
add_action( 'activate_' . WPRP_PLUGIN_SLUG . '/plugin.php', 'wprp_deactivate' );
|
81 |
+
add_action( 'deactivate_' . WPRP_PLUGIN_SLUG . '/plugin.php', 'wprp_deactivate' );
|
82 |
+
|
83 |
+
/**
|
84 |
+
* Remove the BackUpWordPress menu from the Tools menu
|
85 |
+
*
|
86 |
+
*/
|
87 |
+
function wprp_remove_backupwordpress_from_admin_menu() {
|
88 |
+
|
89 |
+
global $submenu;
|
90 |
+
|
91 |
+
if ( isset( $submenu['tools.php'][16] ) && $submenu['tools.php'][16][2] === 'backupwordpress' )
|
92 |
+
unset( $submenu['tools.php'][16] );
|
93 |
+
}
|
94 |
+
add_action( 'admin_menu', 'wprp_remove_backupwordpress_from_admin_menu', 11 );
|
wprp.api.php
CHANGED
@@ -100,7 +100,9 @@ foreach( $actions as $action => $value ) {
|
|
100 |
case 'delete_backup' :
|
101 |
case 'supports_backups' :
|
102 |
case 'get_backup' :
|
103 |
-
|
|
|
|
|
104 |
$actions[$action] = _wprp_backups_api_call( $action );
|
105 |
|
106 |
break;
|
100 |
case 'delete_backup' :
|
101 |
case 'supports_backups' :
|
102 |
case 'get_backup' :
|
103 |
+
case 'add_backup_schedule' :
|
104 |
+
case 'remove_backup_schedule' :
|
105 |
+
case 'get_backup_schedules' :
|
106 |
$actions[$action] = _wprp_backups_api_call( $action );
|
107 |
|
108 |
break;
|
wprp.backups.php
CHANGED
@@ -1,5 +1,205 @@
|
|
1 |
<?php
|
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3 |
/**
|
4 |
* Handle the backups API calls
|
5 |
*
|
@@ -8,9 +208,6 @@
|
|
8 |
*/
|
9 |
function _wprp_backups_api_call( $action ) {
|
10 |
|
11 |
-
if ( ! class_exists( 'WPR_HM_Backup' ) )
|
12 |
-
return new WP_Error( 'Backups module not present' );
|
13 |
-
|
14 |
switch( $action ) :
|
15 |
|
16 |
// TODO in the future we should do some check here to make sure they do support backups
|
@@ -18,154 +215,40 @@ function _wprp_backups_api_call( $action ) {
|
|
18 |
return true;
|
19 |
|
20 |
case 'do_backup' :
|
21 |
-
|
22 |
-
@ignore_user_abort( true );
|
23 |
-
|
24 |
-
$backup = new WPR_HM_Backup();
|
25 |
-
$upload_dir = wp_upload_dir();
|
26 |
-
|
27 |
-
// Store the backup file in the uploads dir
|
28 |
-
$backup->set_path( $upload_dir['basedir'] . '/_wpremote_backups' );
|
29 |
-
|
30 |
-
$running_file = $backup->get_path() . '/.backup_running';
|
31 |
-
$index_php = $backup->get_path() . '/index.php';
|
32 |
-
|
33 |
-
// Set a random backup filename
|
34 |
-
$backup->set_archive_filename( md5( time() ) . '.zip' );
|
35 |
-
|
36 |
-
// delete the backups folder to cleanup old backups
|
37 |
-
_wprp_backups_rmdirtree( $backup->get_path() );
|
38 |
-
|
39 |
-
if ( ! @mkdir( $backup->get_path() ) )
|
40 |
-
return new WP_Error( 'unable-to-create-backups-directory', 'Unable to write the .backup_running file - check your permissions on wp-content/uploads' );
|
41 |
-
|
42 |
|
43 |
-
|
44 |
-
if ( ! $handle = @fopen( $index_php, 'w' ) )
|
45 |
-
return new WP_Error( 'unable-to-write-index-php-file' );
|
46 |
-
|
47 |
-
fwrite( $handle, '' );
|
48 |
-
|
49 |
-
fclose( $handle );
|
50 |
-
|
51 |
-
if ( ! file_exists( $index_php ) )
|
52 |
-
return new WP_Error( 'index-php-file-was-not-created' );
|
53 |
-
|
54 |
-
// Write the backup runing file for tracking...
|
55 |
-
if ( ! $handle = @fopen( $running_file, 'w' ) )
|
56 |
-
return new WP_Error( 'unable-to-write-backup-running-file' );
|
57 |
-
|
58 |
-
fwrite( $handle, $backup->get_archive_filename() );
|
59 |
-
|
60 |
-
fclose( $handle );
|
61 |
-
|
62 |
-
if ( ! file_exists( $running_file ) )
|
63 |
-
return new WP_Error( 'backup-running-file-was-not-created' );
|
64 |
-
|
65 |
-
// Excludes
|
66 |
-
if ( ! empty( $_REQUEST['backup_excludes'] ) ) {
|
67 |
-
|
68 |
-
$excludes = array_map( 'urldecode', (array) $_REQUEST['backup_excludes'] );
|
69 |
-
$backup->set_excludes( $excludes, true );
|
70 |
-
}
|
71 |
-
|
72 |
-
if ( function_exists( 'hmbkp_path' ) )
|
73 |
-
$backup->set_excludes( array( hmbkp_path() ), true );
|
74 |
-
|
75 |
-
$backup->backup();
|
76 |
-
|
77 |
-
unlink( $backup->get_path() . '/.backup_completed' );
|
78 |
-
unlink( $backup->get_path() . '/.backup_running' );
|
79 |
-
|
80 |
-
// Write the backup runing file for tracking...
|
81 |
-
$completed_file = $backup->get_path() . '/.backup_completed';
|
82 |
-
|
83 |
-
if ( ! $handle = @fopen( $completed_file, 'w' ) )
|
84 |
-
return new WP_Error( 'unable-to-write-backup-completed-file' );
|
85 |
-
|
86 |
-
if ( $backup->get_errors() || ( $backup->get_warnings() && ! file_exists( $backup->get_archive_filepath() ) ) ) {
|
87 |
-
|
88 |
-
$errors = array_merge( $backup->get_errors(), $backup->get_warnings() );
|
89 |
-
fwrite( $handle, json_encode( $errors ) );
|
90 |
-
|
91 |
-
} else {
|
92 |
-
|
93 |
-
fwrite( $handle, 'file:' . $backup->get_archive_filename() );
|
94 |
-
}
|
95 |
-
|
96 |
-
fclose( $handle );
|
97 |
-
|
98 |
-
return true;
|
99 |
|
100 |
case 'get_backup' :
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
// Store the backup file in the uploads dir
|
105 |
-
$path = $upload_dir['basedir'] . '/_wpremote_backups';
|
106 |
-
$url = $upload_dir['baseurl'] . '/_wpremote_backups';
|
107 |
-
|
108 |
-
if ( ! is_dir( $path ) )
|
109 |
-
return new WP_Error( 'backups-dir-does-not-exist' );
|
110 |
-
|
111 |
-
if ( file_exists( $path . '/.backup_running' ) )
|
112 |
-
return new WP_Error( 'backup-running' );
|
113 |
-
|
114 |
-
if ( ! file_exists( $path . '/.backup_completed' ) )
|
115 |
-
return new WP_Error( 'backup-not-started' );
|
116 |
-
|
117 |
-
$file = file_get_contents( $path . '/.backup_completed' );
|
118 |
-
|
119 |
-
if ( strpos( $file, 'file:' ) === 0 )
|
120 |
-
return $url . '/' . substr( $file, 5 );
|
121 |
-
|
122 |
-
// must have errored, return errors in a WP_Error
|
123 |
-
return new WP_Error( 'backup-failed', json_decode( $file ) );
|
124 |
|
125 |
case 'delete_backup' :
|
126 |
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
131 |
break;
|
132 |
|
133 |
endswitch;
|
134 |
|
135 |
}
|
136 |
|
137 |
-
function _wprp_backups_rmdirtree( $dir ) {
|
138 |
-
|
139 |
-
if ( is_file( $dir ) )
|
140 |
-
unlink( $dir );
|
141 |
-
|
142 |
-
if ( ! is_dir( $dir ) )
|
143 |
-
return false;
|
144 |
-
|
145 |
-
$files = new RecursiveIteratorIterator( new RecursiveDirectoryIterator( $dir ), RecursiveIteratorIterator::CHILD_FIRST, RecursiveIteratorIterator::CATCH_GET_CHILD );
|
146 |
-
|
147 |
-
foreach ( $files as $file ) {
|
148 |
-
|
149 |
-
if ( $file->isDir() )
|
150 |
-
@rmdir( $file->getPathname() );
|
151 |
-
|
152 |
-
else
|
153 |
-
@unlink( $file->getPathname() );
|
154 |
-
|
155 |
-
}
|
156 |
-
|
157 |
-
return @rmdir( $dir );
|
158 |
-
|
159 |
-
}
|
160 |
|
161 |
function _wprp_get_backups_info() {
|
162 |
-
if ( ! class_exists( 'WPR_HM_Backup' ) )
|
163 |
-
return;
|
164 |
|
165 |
-
$hm_backup = new
|
|
|
166 |
$info = array(
|
167 |
-
'mysqldump_path'
|
168 |
-
'zip_path'
|
|
|
169 |
);
|
170 |
|
171 |
return $info;
|
1 |
<?php
|
2 |
|
3 |
+
class WPRP_Backups {
|
4 |
+
|
5 |
+
private static $instance;
|
6 |
+
|
7 |
+
public static function getInstance() {
|
8 |
+
|
9 |
+
if ( empty( self::$instance ) )
|
10 |
+
self::$instance = new WPRP_Backups();
|
11 |
+
|
12 |
+
return self::$instance;
|
13 |
+
}
|
14 |
+
|
15 |
+
/**
|
16 |
+
* Do a backup of the site
|
17 |
+
*
|
18 |
+
* @return true|WP_Error
|
19 |
+
*/
|
20 |
+
public function doBackup() {
|
21 |
+
@ignore_user_abort( true );
|
22 |
+
|
23 |
+
$schedule = $this->getManualBackupSchedule();
|
24 |
+
|
25 |
+
$schedule->run();
|
26 |
+
|
27 |
+
$filepath = $schedule->get_archive_filepath();
|
28 |
+
|
29 |
+
if ( ! file_exists( $filepath ) ) {
|
30 |
+
return new WP_Error( 'backup-failed', implode(', ', $schedule->get_errors() ) );
|
31 |
+
}
|
32 |
+
|
33 |
+
return true;
|
34 |
+
}
|
35 |
+
|
36 |
+
/**
|
37 |
+
* Get the backup once it has run, will return status running as a WP Error
|
38 |
+
*
|
39 |
+
* @return WP_Error|string
|
40 |
+
*/
|
41 |
+
public function getBackup() {
|
42 |
+
|
43 |
+
$schedule = $this->getManualBackupSchedule();
|
44 |
+
|
45 |
+
if ( $status = $schedule->get_status() )
|
46 |
+
return new WP_Error( 'error-status', $status );
|
47 |
+
|
48 |
+
$backup = reset( $schedule->get_backups() );
|
49 |
+
|
50 |
+
if ( file_exists( $backup ) )
|
51 |
+
return str_replace( WP_CONTENT_DIR, WP_CONTENT_URL, $backup );
|
52 |
+
|
53 |
+
return new WP_Error( 'backup-failed', 'No backup was found' );
|
54 |
+
}
|
55 |
+
|
56 |
+
public function cleanBackup( $schedule ) {
|
57 |
+
|
58 |
+
$schedules = new HMBKP_Schedules();
|
59 |
+
$schedule = $schedules->get_schedule( $schedule );
|
60 |
+
|
61 |
+
$backup = reset( $schedule->get_backups() );
|
62 |
+
|
63 |
+
if ( file_exists( $backup ) )
|
64 |
+
unlink( $backup );
|
65 |
+
}
|
66 |
+
|
67 |
+
public function getEstimatedSize() {
|
68 |
+
|
69 |
+
if ( $size = get_transient( 'hmbkp_schedule_manual_filesize' ) )
|
70 |
+
return HMBKP_Scheduled_Backup::human_filesize( $size, null, '%01u %s' );
|
71 |
+
|
72 |
+
// we dont know the size yet, fire off a remote request to get it for later
|
73 |
+
// it can take some time so we have a small timeout then return "Calculating"
|
74 |
+
wp_remote_get(
|
75 |
+
$url = add_query_arg( array( 'action' => 'wprp_calculate_backup_size', 'backup_excludes' => $this->getManualBackupSchedule()->get_excludes() ), admin_url( 'admin-ajax.php' ) ),
|
76 |
+
array( 'timeout' => 0.1, 'sslverify' => false )
|
77 |
+
);
|
78 |
+
|
79 |
+
return 'Calculating';
|
80 |
+
|
81 |
+
}
|
82 |
+
|
83 |
+
public function calculateEstimatedSize() {
|
84 |
+
$this->getManualBackupSchedule()->get_filesize();
|
85 |
+
}
|
86 |
+
|
87 |
+
/**
|
88 |
+
* Enabled automatic backups for this install
|
89 |
+
*
|
90 |
+
* @param array $options { 'id' => string, type' => 'complete|files|database', 'reoccurance' => 'daily|...', 'excludes' => array() }
|
91 |
+
*/
|
92 |
+
public function addSchedule( $options = array() ) {
|
93 |
+
|
94 |
+
$schedules = new HMBKP_Schedules();
|
95 |
+
|
96 |
+
if ( $schedules->get_schedule( $options['id'] ) )
|
97 |
+
return;
|
98 |
+
|
99 |
+
$schedule = new HMBKP_Scheduled_Backup( $options['id'] );
|
100 |
+
$schedule->set_type( $options['type'] );
|
101 |
+
$schedule->set_excludes( $options['excludes'], true );
|
102 |
+
$schedule->set_max_backups( 1 );
|
103 |
+
|
104 |
+
if ( $options['start_date'] )
|
105 |
+
$schedule->set_schedule_start_time( $options['start_date'] );
|
106 |
+
|
107 |
+
$schedule->set_reoccurrence( $options['reoccurance'] );
|
108 |
+
|
109 |
+
$schedule->save();
|
110 |
+
}
|
111 |
+
|
112 |
+
/**
|
113 |
+
* Remove a schedule
|
114 |
+
*
|
115 |
+
* @param int $id
|
116 |
+
*/
|
117 |
+
public function removeSchedule( $id ) {
|
118 |
+
$schedules = new HMBKP_Schedules();
|
119 |
+
|
120 |
+
if ( ! $schedules->get_schedule( $id ) )
|
121 |
+
return;
|
122 |
+
|
123 |
+
$schedules->get_schedule( $id )->cancel();
|
124 |
+
}
|
125 |
+
|
126 |
+
/**
|
127 |
+
* Get an array of all the backup schedules
|
128 |
+
*
|
129 |
+
* @return array : array( 'id' => int, 'next_run_date' => int )
|
130 |
+
*/
|
131 |
+
public function getSchedules() {
|
132 |
+
|
133 |
+
$schedules = new HMBKP_Schedules();
|
134 |
+
$array = array();
|
135 |
+
|
136 |
+
foreach ( $schedules->get_schedules() as $schedule )
|
137 |
+
$array[] = array( 'id' => $schedule->get_id(), 'next_run_date' => $schedule->get_next_occurrence() );
|
138 |
+
|
139 |
+
return $array;
|
140 |
+
}
|
141 |
+
|
142 |
+
/**
|
143 |
+
* Get the manual backup schedule from BackupWordPress
|
144 |
+
* @return HMBKP_Scheduled_Backup
|
145 |
+
*/
|
146 |
+
private function getManualBackupSchedule() {
|
147 |
+
|
148 |
+
$schedule = new HMBKP_Scheduled_Backup( 'manual' );
|
149 |
+
$schedule->set_type( 'complete' );
|
150 |
+
$schedule->set_max_backups( 1 );
|
151 |
+
|
152 |
+
// Excludes
|
153 |
+
if ( ! empty( $_REQUEST['backup_excludes'] ) ) {
|
154 |
+
|
155 |
+
$excludes = array_map( 'urldecode', (array) $_REQUEST['backup_excludes'] );
|
156 |
+
$schedule->set_excludes( $excludes, true );
|
157 |
+
}
|
158 |
+
|
159 |
+
return $schedule;
|
160 |
+
}
|
161 |
+
}
|
162 |
+
|
163 |
+
class WPRP_Backup_Service extends HMBKP_Service {
|
164 |
+
|
165 |
+
/**
|
166 |
+
* Fire the email notification on the hmbkp_backup_complete
|
167 |
+
*
|
168 |
+
* @see HM_Backup::do_action
|
169 |
+
* @param string $action The action received from the backup
|
170 |
+
* @return void
|
171 |
+
*/
|
172 |
+
public function action( $action ) {
|
173 |
+
|
174 |
+
if ( $action == 'hmbkp_backup_complete' && strpos( $this->schedule->get_id(), 'wpremote' ) !== false ) {
|
175 |
+
|
176 |
+
$file = $this->schedule->get_archive_filepath();
|
177 |
+
$file_url = str_replace( WP_CONTENT_DIR, WP_CONTENT_URL, $file );
|
178 |
+
$api_url = WPR_API_URL . 'backups/upload';
|
179 |
+
|
180 |
+
$args = array(
|
181 |
+
'api_key' => get_option( 'wpr_api_key' ),
|
182 |
+
'backup_url'=> $file_url,
|
183 |
+
'domain' => get_bloginfo( 'url' )
|
184 |
+
);
|
185 |
+
|
186 |
+
wp_remote_post( $api_url, array( 'timeout' => 60, 'body' => $args ) );
|
187 |
+
}
|
188 |
+
}
|
189 |
+
|
190 |
+
/**
|
191 |
+
* Abstract methods must be implemented
|
192 |
+
*/
|
193 |
+
public function form() {}
|
194 |
+
|
195 |
+
public function field() {}
|
196 |
+
|
197 |
+
public function update( &$new_data, $old_data ) {}
|
198 |
+
|
199 |
+
public function display() {}
|
200 |
+
}
|
201 |
+
HMBKP_Services::register( __FILE__, 'WPRP_Backup_Service' );
|
202 |
+
|
203 |
/**
|
204 |
* Handle the backups API calls
|
205 |
*
|
208 |
*/
|
209 |
function _wprp_backups_api_call( $action ) {
|
210 |
|
|
|
|
|
|
|
211 |
switch( $action ) :
|
212 |
|
213 |
// TODO in the future we should do some check here to make sure they do support backups
|
215 |
return true;
|
216 |
|
217 |
case 'do_backup' :
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
218 |
|
219 |
+
return WPRP_Backups::getInstance()->doBackup();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
220 |
|
221 |
case 'get_backup' :
|
222 |
+
|
223 |
+
return WPRP_Backups::getInstance()->getBackup();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
224 |
|
225 |
case 'delete_backup' :
|
226 |
|
227 |
+
return WPRP_Backups::getInstance()->cleanBackup( $_GET['schedule_id']);
|
228 |
+
|
229 |
+
case 'add_backup_schedule' :
|
230 |
+
return WPRP_Backups::getInstance()->addSchedule( $_GET );
|
231 |
+
|
232 |
+
case 'remove_backup_schedule' :
|
233 |
+
return WPRP_Backups::getInstance()->removeSchedule( $_GET['id'] );
|
234 |
+
|
235 |
+
case 'get_backup_schedules' :
|
236 |
+
return WPRP_Backups::getInstance()->getSchedules();
|
237 |
break;
|
238 |
|
239 |
endswitch;
|
240 |
|
241 |
}
|
242 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
243 |
|
244 |
function _wprp_get_backups_info() {
|
|
|
|
|
245 |
|
246 |
+
$hm_backup = new HM_Backup();
|
247 |
+
|
248 |
$info = array(
|
249 |
+
'mysqldump_path' => $hm_backup->get_mysqldump_command_path(),
|
250 |
+
'zip_path' => $hm_backup->get_zip_command_path(),
|
251 |
+
'estimated_size' => WPRP_Backups::getInstance()->getEstimatedSize()
|
252 |
);
|
253 |
|
254 |
return $info;
|