BackWPup – WordPress Backup Plugin - Version 3.0.3

Version Description

= After an upgrade from version 2 =

Please check all settings after the update:

  • Dropbox authentication must be done again
  • SugarSync authentication must be done again
  • S3 Settings
  • Google Storage is now in S3
  • Check all your passwords
Download this release

Release Info

Developer danielhuesken
Plugin Icon 128x128 BackWPup – WordPress Backup Plugin
Version 3.0.3
Comparing to
See all releases

Code changes from version 3.0.2 to 3.0.3

backwpup.php CHANGED
@@ -5,7 +5,7 @@
5
  * Description: WordPress Backup and more...
6
  * Author: Inpsyde GmbH
7
  * Author URI: http://inpsyde.com
8
- * Version: 3.0.2
9
  * Text Domain: backwpup
10
  * Domain Path: /languages/
11
  * Network: true
5
  * Description: WordPress Backup and more...
6
  * Author: Inpsyde GmbH
7
  * Author URI: http://inpsyde.com
8
+ * Version: 3.0.3
9
  * Text Domain: backwpup
10
  * Domain Path: /languages/
11
  * Network: true
css/page_jobs.css CHANGED
@@ -1 +1 @@
1
- .column-id{width:3%;text-align:center}.column-last,.column-next,.column-type,.column-dest{width:15%}#showworking{margin-top:10px;background-color:black;color:white;font-family:Fixedsys,Courier,monospace;line-height:15px;font-size:12px;border-color:#cee1ef;border-style:solid;border-width:5px;height:95%;padding:2px;overflow:auto;white-space:pre;display:block}#runningjob{padding:10px;background-image:url(../images/progresshg.jpg);position:relative;margin:15px 0 25px 0;padding-bottom:25px}#runniginfos{font-size:14px;font-family:sans-serif,"Arial"}h2#runnigtitle{font-size:18px;margin-bottom:15px;padding:0}#warningsid{margin-right:10px}#errorid{margin-left:10px}.infobuttons{position:absolute;right:10px;bottom:10px}a#showworkingbutton{float:left;padding:10px;font-size:12px;font-family:sans-serif,"Arial";text-decoration:none;background-color:#93b509;color:#fff;border:0}a#abortbutton,a#showworkingclose{float:left;margin-left:10px;padding:10px;font-size:12px;font-family:sans-serif,"Arial";text-decoration:none;background-color:#cd1212;color:#fff;border:0}.progressbar{margin-top:20px;height:auto;background-color:#f6f6f6;background-image:url(../images/progressbarhg.jpg)}#lastmsg,#onstep{text-align:center;margin-bottom:20px}#progressstep{background-color:#1d94cf;color:#fff;padding:5px 0;text-align:center;font-size:14px;font-family:sans-serif,"Arial"}#progresssteps{background-color:#007fb6;color:#fff;padding:5px 0;text-align:center;font-size:14px;font-family:sans-serif,"Arial"}
1
+ .column-id{width:3%;text-align:center}.column-last,.column-next,.column-type,.column-dest{width:15%}#TB_ajaxContent{background-color:black;color:white}#showworking{font-family:Fixedsys,Courier,monospace;line-height:15px;font-size:12px;white-space:pre;display:block;width:100%}#runningjob{padding:10px;background-image:url(../images/progresshg.jpg);position:relative;margin:15px 0 25px 0;padding-bottom:25px}#runniginfos{font-size:14px;font-family:sans-serif,"Arial"}h2#runnigtitle{font-size:18px;margin-bottom:15px;padding:0}#warningsid{margin-right:10px}#errorid{margin-left:10px}.infobuttons{position:absolute;right:10px;bottom:10px}a#showworkingbutton{float:left;padding:10px;font-size:12px;font-family:sans-serif,"Arial";text-decoration:none;background-color:#93b509;color:#fff;border:0}a#abortbutton,a#showworkingclose{float:left;margin-left:10px;padding:10px;font-size:12px;font-family:sans-serif,"Arial";text-decoration:none;background-color:#cd1212;color:#fff;border:0}.progressbar{margin-top:20px;height:auto;background-color:#f6f6f6;background-image:url(../images/progressbarhg.jpg)}#lastmsg,#onstep{text-align:center;margin-bottom:20px}#progressstep{background-color:#1d94cf;color:#fff;padding:5px 0;text-align:center;font-size:14px;font-family:sans-serif,"Arial"}#progresssteps{background-color:#007fb6;color:#fff;padding:5px 0;text-align:center;font-size:14px;font-family:sans-serif,"Arial"}
css/page_jobs.dev.css CHANGED
@@ -7,21 +7,17 @@
7
  width: 15%;
8
  }
9
 
10
- #showworking {
11
- margin-top: 10px;
12
  background-color: black;
13
  color: white;
 
 
14
  font-family: Fixedsys, Courier, monospace;
15
  line-height: 15px;
16
  font-size: 12px;
17
- border-color: #CEE1EF;
18
- border-style: solid;
19
- border-width: 5px;
20
- height: 95%;
21
- padding: 2px;
22
- overflow: auto;
23
  white-space: pre;
24
  display: block;
 
25
  }
26
  #runningjob {
27
  padding:10px;
7
  width: 15%;
8
  }
9
 
10
+ #TB_ajaxContent {
 
11
  background-color: black;
12
  color: white;
13
+ }
14
+ #showworking {
15
  font-family: Fixedsys, Courier, monospace;
16
  line-height: 15px;
17
  font-size: 12px;
 
 
 
 
 
 
18
  white-space: pre;
19
  display: block;
20
+ width: 100%;
21
  }
22
  #runningjob {
23
  padding:10px;
inc/class-admin.php CHANGED
@@ -248,21 +248,19 @@ final class BackWPup_Admin {
248
 
249
  //start using sessions
250
  session_start();
 
 
251
 
252
  //register js from tipTip
253
  wp_register_script( 'tiptip', BackWPup::get_plugin_data( 'URL' ) . '/js/jquery.tipTip.minified.js', array( 'jquery' ), '1.3', TRUE );
254
 
255
- //register fancybox
256
- wp_register_style( 'fancybox2', BackWPup::get_plugin_data( 'URL' ) . '/js/fancybox/jquery.fancybox.css', '', '2.1.4', 'screen' );
257
- wp_register_script( 'fancybox2', BackWPup::get_plugin_data( 'URL' ) . '/js/fancybox/jquery.fancybox.pack.js', array( 'jquery' ), '2.1.4', TRUE );
258
-
259
  //register js and css for BackWPup
260
  if ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ) {
261
- wp_register_script( 'backwpupgeneral', BackWPup::get_plugin_data( 'URL' ) . '/js/general.dev.js', array( 'jquery', 'tiptip', 'fancybox2' ), time(), TRUE );
262
- wp_register_style( 'backwpupgeneral', BackWPup::get_plugin_data( 'URL' ) . '/css/general.dev.css', array( 'fancybox2' ), time(), 'screen' );
263
  } else {
264
- wp_register_script( 'backwpupgeneral', BackWPup::get_plugin_data( 'URL' ) . '/js/general.js', array( 'jquery', 'tiptip', 'fancybox2' ), BackWPup::get_plugin_data( 'Version' ), TRUE );
265
- wp_register_style( 'backwpupgeneral', BackWPup::get_plugin_data( 'URL' ) . '/css/general.css', array( 'fancybox2' ), BackWPup::get_plugin_data( 'Version' ), 'screen' );
266
  }
267
 
268
  //add Help
@@ -337,12 +335,11 @@ final class BackWPup_Admin {
337
  */
338
  public static function message( $message ) {
339
 
340
-
341
- if( ! isset( $_SESSION[ 'backwpup_messages' ] ) )
342
  $_SESSION[ 'backwpup_messages' ] = array();
343
 
344
  if ( is_array( $message ) )
345
- $_SESSION[ 'backwpup_messages' ] = array_merge( $_SESSION[ 'backwpup_messages' ], $message);
346
  else
347
  $_SESSION[ 'backwpup_messages' ][] = $message;
348
 
248
 
249
  //start using sessions
250
  session_start();
251
+
252
+ add_thickbox();
253
 
254
  //register js from tipTip
255
  wp_register_script( 'tiptip', BackWPup::get_plugin_data( 'URL' ) . '/js/jquery.tipTip.minified.js', array( 'jquery' ), '1.3', TRUE );
256
 
 
 
 
 
257
  //register js and css for BackWPup
258
  if ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ) {
259
+ wp_register_script( 'backwpupgeneral', BackWPup::get_plugin_data( 'URL' ) . '/js/general.dev.js', array( 'jquery', 'tiptip' ), time(), TRUE );
260
+ wp_register_style( 'backwpupgeneral', BackWPup::get_plugin_data( 'URL' ) . '/css/general.dev.css', array( ), time(), 'screen' );
261
  } else {
262
+ wp_register_script( 'backwpupgeneral', BackWPup::get_plugin_data( 'URL' ) . '/js/general.js', array( 'jquery', 'tiptip' ), BackWPup::get_plugin_data( 'Version' ), TRUE );
263
+ wp_register_style( 'backwpupgeneral', BackWPup::get_plugin_data( 'URL' ) . '/css/general.css', array( ), BackWPup::get_plugin_data( 'Version' ), 'screen' );
264
  }
265
 
266
  //add Help
335
  */
336
  public static function message( $message ) {
337
 
338
+ if( empty( $_SESSION[ 'backwpup_messages' ] ) )
 
339
  $_SESSION[ 'backwpup_messages' ] = array();
340
 
341
  if ( is_array( $message ) )
342
+ $_SESSION[ 'backwpup_messages' ] = array_merge( $_SESSION[ 'backwpup_messages' ], $message );
343
  else
344
  $_SESSION[ 'backwpup_messages' ][] = $message;
345
 
inc/class-create-archive.php CHANGED
@@ -77,31 +77,39 @@ class BackWPup_Create_Archive {
77
  if ( ! function_exists( 'gzencode' ) )
78
  throw new BackWPup_Create_Archive_Exception( __( 'Functions for gz compression not available', 'backwpup' ) );
79
  $this->method = 'TarGz';
80
- $this->filehandel = fopen( $this->file, 'c+b');
81
- $eof_compressed = gzencode( pack( "a1024", "" ) );
82
- //remove tar end of file
83
- if ( filesize( $this->file ) > strlen( $eof_compressed ) ) {
84
- fseek( $this->filehandel, - strlen( $eof_compressed ), SEEK_END );
85
- $last_blocs = fread( $this->filehandel, strlen( $eof_compressed ) );
86
- //overwrite tar end of file
87
- if ( $last_blocs == $eof_compressed )
88
  fseek( $this->filehandel, - strlen( $eof_compressed ), SEEK_END );
 
 
 
 
 
 
89
  }
 
90
  }
91
  elseif ( strtolower( substr( $this->file, -8 ) ) == '.tar.bz2' ) {
92
  if ( ! function_exists( 'bzcompress' ) )
93
  throw new BackWPup_Create_Archive_Exception( __( 'Functions for bz2 compression not available', 'backwpup' ) );
94
  $this->method = 'TarBz2';
95
- $this->filehandel = fopen( $this->file, 'c+b');
96
- $eof_compressed = bzcompress( pack( "a1024", "" ) );
97
- //remove tar end of file
98
- if ( filesize( $this->file ) > strlen( $eof_compressed ) ) {
99
- fseek( $this->filehandel, - strlen( $eof_compressed ), SEEK_END );
100
- $last_blocs = fread( $this->filehandel, strlen( $eof_compressed ) );
101
- //overwrite tar end of file
102
- if ( $last_blocs == $eof_compressed )
103
  fseek( $this->filehandel, - strlen( $eof_compressed ), SEEK_END );
 
 
 
 
 
 
104
  }
 
105
  }
106
  elseif ( strtolower( substr( $this->file, -4 ) ) == '.tar' ) {
107
  $this->method = 'Tar';
@@ -120,9 +128,11 @@ class BackWPup_Create_Archive {
120
  if ( class_exists( 'ZipArchive' ) ) {
121
  $this->method = 'ZipArchive';
122
  $this->ziparchive = new ZipArchive();
123
- $res = $this->ziparchive->open( $this->file, ZipArchive::CREATE );
124
- if ( $res !== TRUE )
125
- throw new BackWPup_Create_Archive_Exception( sprintf( _x( 'Can not create zip archive: %d','ZipArchive open() result', 'backwpup' ), $res ) );
 
 
126
  }
127
  if ( $this->get_method() == 'PclZip' && ! function_exists( 'gzencode' ) )
128
  throw new BackWPup_Create_Archive_Exception( __( 'Functions for gz compression not available', 'backwpup' ) );
@@ -173,9 +183,13 @@ class BackWPup_Create_Archive {
173
  fwrite( $this->filehandel, pack( "a1024", "" ) );
174
  }
175
  elseif ( $this->get_method() == 'TarGz' ) {
 
 
176
  fwrite( $this->filehandel, gzencode( pack( "a1024", "" ) ) );
177
  }
178
  elseif ( $this->get_method() == 'TarBz2' ) {
 
 
179
  fwrite( $this->filehandel, bzcompress( pack( "a1024", "" ) ) );
180
  }
181
 
@@ -186,7 +200,7 @@ class BackWPup_Create_Archive {
186
 
187
  //close PclZip Class
188
  if ( is_object( $this->ziparchive ) ) {
189
- $this->ziparchive_status();
190
  $this->ziparchive->close();
191
  unset( $this->ziparchive );
192
  }
@@ -223,7 +237,7 @@ class BackWPup_Create_Archive {
223
 
224
  if ( ! is_file( $file_name ) || ! is_readable( $file_name ) ) {
225
  trigger_error( sprintf( _x( 'File %s does not exist or is not readable', 'File path to add to archive', 'backwpup' ), $file_name ), E_USER_WARNING );
226
- return false;
227
  }
228
 
229
  if ( empty( $name_in_archive ) )
@@ -233,12 +247,12 @@ class BackWPup_Create_Archive {
233
  case 'gz':
234
  if ( $this->file_count > 0 ) {
235
  trigger_error( __( 'This archive method can only add one file', 'backwpup' ), E_USER_WARNING );
236
- return false;
237
  }
238
  //add file to archive
239
  if ( ! ( $fd = fopen( $file_name, 'rb' ) ) ) {
240
  trigger_error( sprintf( __( 'Can not open source file %s to archive', 'backwpup' ), $file_name ), E_USER_WARNING );
241
- return false;
242
  }
243
  while ( ! feof( $fd ) )
244
  fwrite( $this->filehandel, fread( $fd, 8192 ) );
@@ -247,12 +261,12 @@ class BackWPup_Create_Archive {
247
  case 'bz':
248
  if ( $this->file_count > 0 ) {
249
  trigger_error( __( 'This archive method can only add one file', 'backwpup' ), E_USER_WARNING );
250
- return false;
251
  }
252
  //add file to archive
253
  if ( ! ( $fd = fopen( $file_name, 'rb' ) ) ) {
254
  trigger_error( sprintf( __( 'Can not open source file %s to archive', 'backwpup' ), $file_name ), E_USER_WARNING );
255
- return false;
256
  }
257
  while ( ! feof( $fd ) )
258
  fwrite( $this->filehandel, bzcompress( fread( $fd, 8192 ) ) );
@@ -266,15 +280,19 @@ class BackWPup_Create_Archive {
266
  break;
267
  case 'ZipArchive':
268
  //close and reopen, all added files are open on fs
269
- if ( $this->file_count >= 10 ) { //35 works with PHP 5.2.4 on win
270
- $this->ziparchive_status();
271
  $this->ziparchive->close();
272
- $this->ziparchive->open( $this->file, ZipArchive::CREATE );
 
 
 
 
273
  $this->file_count = 0;
274
  }
275
  if ( ! $this->ziparchive->addFile( $file_name, $name_in_archive ) ) {
276
  trigger_error( sprintf( __( 'Can not add "%s" to zip archive!', 'backwpup' ), $name_in_archive ), E_USER_ERROR );
277
- return false;
278
  }
279
  break;
280
  case 'PclZip':
@@ -284,7 +302,7 @@ class BackWPup_Create_Archive {
284
  ) ) )
285
  ) {
286
  trigger_error( sprintf( __( 'PclZip archive add error: %s', 'backwpup' ), $this->pclzip->errorInfo( TRUE ) ), E_USER_ERROR );
287
- return false;
288
  }
289
  break;
290
  }
@@ -294,62 +312,99 @@ class BackWPup_Create_Archive {
294
  return TRUE;
295
  }
296
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
297
 
298
  /**
299
  * Output status of ZipArchive
 
 
 
300
  */
301
- private function ziparchive_status() {
302
-
303
- if ( $this->ziparchive->status > 0 ) {
304
- $zip_error = $this->ziparchive->status;
305
- if ( $this->ziparchive->status == 1 )
306
- $zip_error = __( '(ER_MULTIDISK) Multi-disk zip archives not supported', 'backwpup' );
307
- if ( $this->ziparchive->status == 2 )
308
- $zip_error = __( '(ER_RENAME) Renaming temporary file failed', 'backwpup' );
309
- if ( $this->ziparchive->status == 3 )
310
- $zip_error = __( '(ER_CLOSE) Closing zip archive failed', 'backwpup' );
311
- if ( $this->ziparchive->status == 4 )
312
- $zip_error = __( '(ER_SEEK) Seek error', 'backwpup' );
313
- if ( $this->ziparchive->status == 5 )
314
- $zip_error = __( '(ER_READ) Read error', 'backwpup' );
315
- if ( $this->ziparchive->status == 6 )
316
- $zip_error = __( '(ER_WRITE) Write error', 'backwpup' );
317
- if ( $this->ziparchive->status == 7 )
318
- $zip_error = __( '(ER_CRC) CRC error', 'backwpup' );
319
- if ( $this->ziparchive->status == 8 )
320
- $zip_error = __( '(ER_ZIPCLOSED) Containing zip archive was closed', 'backwpup' );
321
- if ( $this->ziparchive->status == 9 )
322
- $zip_error = __( '(ER_NOENT) No such file', 'backwpup' );
323
- if ( $this->ziparchive->status == 10 )
324
- $zip_error = __( '(ER_EXISTS) File already exists', 'backwpup' );
325
- if ( $this->ziparchive->status == 11 )
326
- $zip_error = __( '(ER_OPEN) Can\'t open file', 'backwpup' );
327
- if ( $this->ziparchive->status == 12 )
328
- $zip_error = __( '(ER_TMPOPEN) Failure to create temporary file', 'backwpup' );
329
- if ( $this->ziparchive->status == 13 )
330
- $zip_error = __( '(ER_ZLIB) Zlib error', 'backwpup' );
331
- if ( $this->ziparchive->status == 14 )
332
- $zip_error = __( '(ER_MEMORY) Malloc failure', 'backwpup' );
333
- if ( $this->ziparchive->status == 15 )
334
- $zip_error = __( '(ER_CHANGED) Entry has been changed', 'backwpup' );
335
- if ( $this->ziparchive->status == 16 )
336
- $zip_error = __( '(ER_COMPNOTSUPP) Compression method not supported', 'backwpup' );
337
- if ( $this->ziparchive->status == 17 )
338
- $zip_error = __( '(ER_EOF) Premature EOF', 'backwpup' );
339
- if ( $this->ziparchive->status == 18 )
340
- $zip_error = __( '(ER_INVAL) Invalid argument', 'backwpup' );
341
- if ( $this->ziparchive->status == 19 )
342
- $zip_error = __( '(ER_NOZIP) Not a zip archive', 'backwpup' );
343
- if ( $this->ziparchive->status == 20 )
344
- $zip_error = __( '(ER_INTERNAL) Internal error', 'backwpup' );
345
- if ( $this->ziparchive->status == 21 )
346
- $zip_error = __( '(ER_INCONS) Zip archive inconsistent', 'backwpup' );
347
- if ( $this->ziparchive->status == 22 )
348
- $zip_error = __( '(ER_REMOVE) Can\'t remove file', 'backwpup' );
349
- if ( $this->ziparchive->status == 23 )
350
- $zip_error = __( '(ER_DELETED) Entry has been deleted', 'backwpup' );
351
- trigger_error( sprintf( _x( 'ZipArchive returns status: %s','Text of ZipArchive status Massage', 'backwpup' ), $zip_error ), E_USER_WARNING );
352
- }
353
  }
354
 
355
  /**
@@ -416,29 +471,86 @@ class BackWPup_Create_Archive {
416
  $checksum = pack( "a8", sprintf( "%07o", $checksum ) );
417
  $header = substr_replace( $header, $checksum, 148, 8 );
418
  //write header
419
- if ( $this->get_method() == 'TarBz2' )
420
- fwrite( $this->filehandel, bzcompress( $header ) );
421
- elseif( $this->get_method() == 'TarGz' )
422
- fwrite( $this->filehandel, gzencode( $header ) );
423
- else
424
- fwrite( $this->filehandel, $header );
425
 
426
  // read/write files in 512K Blocks
427
  while ( ! feof( $fd ) ) {
428
  $file_data = fread( $fd, 512 );
429
  if ( strlen( $file_data ) > 0 ) {
430
- if ( $this->get_method() == 'TarBz2' )
431
- fwrite( $this->filehandel, bzcompress( pack( "a512", $file_data ) ) );
432
- elseif( $this->get_method() == 'TarGz' )
433
- fwrite( $this->filehandel, gzencode( pack( "a512", $file_data ) ) );
434
- else
435
- fwrite( $this->filehandel, pack( "a512", $file_data ) );
436
  }
437
  }
438
  fclose( $fd );
439
 
440
  return TRUE;
441
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
442
  }
443
 
444
  /**
77
  if ( ! function_exists( 'gzencode' ) )
78
  throw new BackWPup_Create_Archive_Exception( __( 'Functions for gz compression not available', 'backwpup' ) );
79
  $this->method = 'TarGz';
80
+ if ( is_file( $this->file ) ) {
81
+ $this->filehandel = fopen( $this->file, 'c+b');
82
+ $eof_compressed = gzencode( pack( "a1024", "" ) );
83
+ //remove tar end of file
84
+ if ( filesize( $this->file ) > strlen( $eof_compressed ) ) {
 
 
 
85
  fseek( $this->filehandel, - strlen( $eof_compressed ), SEEK_END );
86
+ $last_blocs = fread( $this->filehandel, strlen( $eof_compressed ) );
87
+ //overwrite tar end of file
88
+ if ( $last_blocs == $eof_compressed )
89
+ fseek( $this->filehandel, - strlen( $eof_compressed ), SEEK_END );
90
+ }
91
+ fclose( $this->filehandel );
92
  }
93
+ $this->filehandel = fopen( 'compress.zlib://'. $this->file, 'wb');
94
  }
95
  elseif ( strtolower( substr( $this->file, -8 ) ) == '.tar.bz2' ) {
96
  if ( ! function_exists( 'bzcompress' ) )
97
  throw new BackWPup_Create_Archive_Exception( __( 'Functions for bz2 compression not available', 'backwpup' ) );
98
  $this->method = 'TarBz2';
99
+ if ( is_file( $this->file ) ) {
100
+ $this->filehandel = fopen( $this->file, 'c+b');
101
+ $eof_compressed = bzcompress( pack( "a1024", "" ) );
102
+ //remove tar end of file
103
+ if ( filesize( $this->file ) > strlen( $eof_compressed ) ) {
 
 
 
104
  fseek( $this->filehandel, - strlen( $eof_compressed ), SEEK_END );
105
+ $last_blocs = fread( $this->filehandel, strlen( $eof_compressed ) );
106
+ //overwrite tar end of file
107
+ if ( $last_blocs == $eof_compressed )
108
+ fseek( $this->filehandel, - strlen( $eof_compressed ), SEEK_END );
109
+ }
110
+ fclose( $this->filehandel );
111
  }
112
+ $this->filehandel = fopen( 'compress.bzip2://'. $this->file, 'wb');
113
  }
114
  elseif ( strtolower( substr( $this->file, -4 ) ) == '.tar' ) {
115
  $this->method = 'Tar';
128
  if ( class_exists( 'ZipArchive' ) ) {
129
  $this->method = 'ZipArchive';
130
  $this->ziparchive = new ZipArchive();
131
+ $ziparchive_open = $this->ziparchive->open( $this->file, ZipArchive::CREATE );
132
+ if ( $ziparchive_open !== TRUE ) {
133
+ $this->ziparchive_status( $ziparchive_open );
134
+ throw new BackWPup_Create_Archive_Exception( sprintf( _x( 'Can not create zip archive: %d','ZipArchive open() result', 'backwpup' ), $ziparchive_open ) );
135
+ }
136
  }
137
  if ( $this->get_method() == 'PclZip' && ! function_exists( 'gzencode' ) )
138
  throw new BackWPup_Create_Archive_Exception( __( 'Functions for gz compression not available', 'backwpup' ) );
183
  fwrite( $this->filehandel, pack( "a1024", "" ) );
184
  }
185
  elseif ( $this->get_method() == 'TarGz' ) {
186
+ fclose( $this->filehandel );
187
+ $this->filehandel = fopen( $this->file, 'a');
188
  fwrite( $this->filehandel, gzencode( pack( "a1024", "" ) ) );
189
  }
190
  elseif ( $this->get_method() == 'TarBz2' ) {
191
+ fclose( $this->filehandel );
192
+ $this->filehandel = fopen( $this->file, 'a');
193
  fwrite( $this->filehandel, bzcompress( pack( "a1024", "" ) ) );
194
  }
195
 
200
 
201
  //close PclZip Class
202
  if ( is_object( $this->ziparchive ) ) {
203
+ $this->ziparchive_status( $this->ziparchive->status );
204
  $this->ziparchive->close();
205
  unset( $this->ziparchive );
206
  }
237
 
238
  if ( ! is_file( $file_name ) || ! is_readable( $file_name ) ) {
239
  trigger_error( sprintf( _x( 'File %s does not exist or is not readable', 'File path to add to archive', 'backwpup' ), $file_name ), E_USER_WARNING );
240
+ return FALSE;
241
  }
242
 
243
  if ( empty( $name_in_archive ) )
247
  case 'gz':
248
  if ( $this->file_count > 0 ) {
249
  trigger_error( __( 'This archive method can only add one file', 'backwpup' ), E_USER_WARNING );
250
+ return FALSE;
251
  }
252
  //add file to archive
253
  if ( ! ( $fd = fopen( $file_name, 'rb' ) ) ) {
254
  trigger_error( sprintf( __( 'Can not open source file %s to archive', 'backwpup' ), $file_name ), E_USER_WARNING );
255
+ return FALSE;
256
  }
257
  while ( ! feof( $fd ) )
258
  fwrite( $this->filehandel, fread( $fd, 8192 ) );
261
  case 'bz':
262
  if ( $this->file_count > 0 ) {
263
  trigger_error( __( 'This archive method can only add one file', 'backwpup' ), E_USER_WARNING );
264
+ return FALSE;
265
  }
266
  //add file to archive
267
  if ( ! ( $fd = fopen( $file_name, 'rb' ) ) ) {
268
  trigger_error( sprintf( __( 'Can not open source file %s to archive', 'backwpup' ), $file_name ), E_USER_WARNING );
269
+ return FALSE;
270
  }
271
  while ( ! feof( $fd ) )
272
  fwrite( $this->filehandel, bzcompress( fread( $fd, 8192 ) ) );
280
  break;
281
  case 'ZipArchive':
282
  //close and reopen, all added files are open on fs
283
+ if ( $this->file_count >= 30 ) { //35 works with PHP 5.2.4 on win
284
+ $this->ziparchive_status( $this->ziparchive->status );
285
  $this->ziparchive->close();
286
+ $ziparchive_open = $this->ziparchive->open( $this->file, ZipArchive::CREATE );
287
+ if ( $ziparchive_open !== TRUE ) {
288
+ $this->ziparchive_status( $ziparchive_open );
289
+ return FALSE;
290
+ }
291
  $this->file_count = 0;
292
  }
293
  if ( ! $this->ziparchive->addFile( $file_name, $name_in_archive ) ) {
294
  trigger_error( sprintf( __( 'Can not add "%s" to zip archive!', 'backwpup' ), $name_in_archive ), E_USER_ERROR );
295
+ return FALSE;
296
  }
297
  break;
298
  case 'PclZip':
302
  ) ) )
303
  ) {
304
  trigger_error( sprintf( __( 'PclZip archive add error: %s', 'backwpup' ), $this->pclzip->errorInfo( TRUE ) ), E_USER_ERROR );
305
+ return FALSE;
306
  }
307
  break;
308
  }
312
  return TRUE;
313
  }
314
 
315
+ /**
316
+ * Add a empty Folder to archive
317
+ *
318
+ * @param $folder_name string Name of folder to add to archive
319
+ * @throws BackWPup_Create_Archive_Exception
320
+ * @return bool
321
+ */
322
+ public function add_empty_folder( $folder_name, $name_in_archive = '' ) {
323
+
324
+ //check param
325
+ if ( empty( $folder_name ) )
326
+ throw new BackWPup_Create_Archive_Exception( __( 'Folder name cannot be empty', 'backwpup' ) );
327
+
328
+ if ( ! is_dir( $folder_name ) || ! is_readable( $folder_name ) ) {
329
+ trigger_error( sprintf( _x( 'Folder %s does not exist or is not readable', 'Folder path to add to archive', 'backwpup' ), $folder_name ), E_USER_WARNING );
330
+ return FALSE;
331
+ }
332
+
333
+ if ( empty( $name_in_archive ) )
334
+ return FALSE;
335
+
336
+ switch ( $this->get_method() ) {
337
+ case 'gz':
338
+ trigger_error( __( 'This archive method can only add one file', 'backwpup' ), E_USER_WARNING );
339
+ return FALSE;
340
+ break;
341
+ case 'bz':
342
+ trigger_error( __( 'This archive method can only add one file', 'backwpup' ), E_USER_WARNING );
343
+ return FALSE;
344
+ break;
345
+ case 'Tar':
346
+ case 'TarGz':
347
+ case 'TarBz2':
348
+ if ( ! $this->tar_empty_folder( $folder_name, $name_in_archive ) );
349
+ return FALSE;
350
+ break;
351
+ case 'ZipArchive':
352
+ if ( ! $this->ziparchive->addEmptyDir( $name_in_archive ) ) {
353
+ trigger_error( sprintf( __( 'Can not add "%s" to zip archive!', 'backwpup' ), $name_in_archive ), E_USER_ERROR );
354
+ return FALSE;
355
+ }
356
+ break;
357
+ case 'PclZip':
358
+ return TRUE;
359
+ break;
360
+ }
361
+
362
+ return TRUE;
363
+ }
364
 
365
  /**
366
  * Output status of ZipArchive
367
+ *
368
+ * @param $code int ZipArchive Error code
369
+ * @return bool
370
  */
371
+ private function ziparchive_status( $code ) {
372
+
373
+ if ( $code == 0 )
374
+ return TRUE;
375
+
376
+ //define error messages
377
+ $zip_errors[ ZipArchive::ER_MULTIDISK ] = __( '(ER_MULTIDISK) Multi-disk zip archives not supported', 'backwpup' );
378
+ $zip_errors[ ZipArchive::ER_RENAME ] = __( '(ER_RENAME) Renaming temporary file failed', 'backwpup' );
379
+ $zip_errors[ ZipArchive::ER_CLOSE ] = __( '(ER_CLOSE) Closing zip archive failed', 'backwpup' );
380
+ $zip_errors[ ZipArchive::ER_SEEK ] = __( '(ER_SEEK) Seek error', 'backwpup' );
381
+ $zip_errors[ ZipArchive::ER_READ ] = __( '(ER_READ) Read error', 'backwpup' );
382
+ $zip_errors[ ZipArchive::ER_WRITE ] = __( '(ER_WRITE) Write error', 'backwpup' );
383
+ $zip_errors[ ZipArchive::ER_CRC ] = __( '(ER_CRC) CRC error', 'backwpup' );
384
+ $zip_errors[ ZipArchive::ER_ZIPCLOSED ] = __( '(ER_ZIPCLOSED) Containing zip archive was closed', 'backwpup' );
385
+ $zip_errors[ ZipArchive::ER_NOENT ] = __( '(ER_NOENT) No such file', 'backwpup' );
386
+ $zip_errors[ ZipArchive::ER_EXISTS ] = __( '(ER_EXISTS) File already exists', 'backwpup' );
387
+ $zip_errors[ ZipArchive::ER_OPEN ] = __( '(ER_OPEN) Can\'t open file', 'backwpup' );
388
+ $zip_errors[ ZipArchive::ER_TMPOPEN ] = __( '(ER_TMPOPEN) Failure to create temporary file', 'backwpup' );
389
+ $zip_errors[ ZipArchive::ER_ZLIB ] = __( '(ER_ZLIB) Zlib error', 'backwpup' );
390
+ $zip_errors[ ZipArchive::ER_MEMORY ] = __( '(ER_MEMORY) Malloc failure', 'backwpup' );
391
+ $zip_errors[ ZipArchive::ER_MULTIDISK ] = __( '(ER_CHANGED) Entry has been changed', 'backwpup' );
392
+ $zip_errors[ ZipArchive::ER_CHANGED ] = __( '(ER_COMPNOTSUPP) Compression method not supported', 'backwpup' );
393
+ $zip_errors[ ZipArchive::ER_EOF ] = __( '(ER_EOF) Premature EOF', 'backwpup' );
394
+ $zip_errors[ ZipArchive::ER_INVAL ] = __( '(ER_INVAL) Invalid argument', 'backwpup' );
395
+ $zip_errors[ ZipArchive::ER_NOZIP ] = __( '(ER_NOZIP) Not a zip archive', 'backwpup' );
396
+ $zip_errors[ ZipArchive::ER_INTERNAL ] = __( '(ER_INTERNAL) Internal error', 'backwpup' );
397
+ $zip_errors[ ZipArchive::ER_INCONS ] = __( '(ER_INCONS) Zip archive inconsistent', 'backwpup' );
398
+ $zip_errors[ ZipArchive::ER_REMOVE ] = __( '(ER_REMOVE) Can\'t remove file', 'backwpup' );
399
+ $zip_errors[ ZipArchive::ER_DELETED ] = __( '(ER_DELETED) Entry has been deleted', 'backwpup' );
400
+
401
+ //ste error massage
402
+ $zip_error = $code;
403
+ if ( isset( $zip_errors[ $zip_error ] ) )
404
+ $zip_error = $zip_errors[ $zip_error ];
405
+
406
+ trigger_error( sprintf( _x( 'ZipArchive returns status: %s','Text of ZipArchive status Massage', 'backwpup' ), $zip_error ), E_USER_ERROR );
407
+ return FALSE;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
408
  }
409
 
410
  /**
471
  $checksum = pack( "a8", sprintf( "%07o", $checksum ) );
472
  $header = substr_replace( $header, $checksum, 148, 8 );
473
  //write header
474
+ fwrite( $this->filehandel, $header );
 
 
 
 
 
475
 
476
  // read/write files in 512K Blocks
477
  while ( ! feof( $fd ) ) {
478
  $file_data = fread( $fd, 512 );
479
  if ( strlen( $file_data ) > 0 ) {
480
+ fwrite( $this->filehandel, pack( "a512", $file_data ) );
 
 
 
 
 
481
  }
482
  }
483
  fclose( $fd );
484
 
485
  return TRUE;
486
  }
487
+
488
+
489
+ /**
490
+ * Tar a empty Folder to archive
491
+ */
492
+ private function tar_empty_folder( $folder_name, $name_in_archive ) {
493
+
494
+ $name_in_archive = trailingslashit( $name_in_archive );
495
+
496
+ //split filename larger than 100 chars
497
+ if ( strlen( $name_in_archive ) <= 100 ) {
498
+ $tar_filename = $name_in_archive;
499
+ $tar_filename_prefix = "";
500
+ }
501
+ else {
502
+ $filename_offset = strlen( $name_in_archive ) - 100;
503
+ $split_pos = strpos( $name_in_archive, '/', $filename_offset );
504
+ $tar_filename = substr( $name_in_archive, $split_pos + 1 );
505
+ $tar_filename_prefix = substr( $name_in_archive, 0, $split_pos );
506
+ if ( strlen( $tar_filename ) > 100 )
507
+ trigger_error( sprintf( __( 'Folder name "%1$s" too long to be saved correctly in %2$s archive!', 'backwpup' ), $name_in_archive, $this->get_method() ), E_USER_WARNING );
508
+ if ( strlen( $tar_filename_prefix ) > 155 )
509
+ trigger_error( sprintf( __( 'Folder path "%1$s" too long to be saved correctly in %2$s archive!', 'backwpup' ), $name_in_archive, $this->get_method() ), E_USER_WARNING );
510
+ }
511
+ //get file stat
512
+ $file_stat = @stat( $folder_name );
513
+ //Set file user/group name if linux
514
+ $fileowner = __( "Unknown", "backwpup" );
515
+ $filegroup = __( "Unknown", "backwpup" );
516
+ if ( function_exists( 'posix_getpwuid' ) ) {
517
+ $info = posix_getpwuid( $file_stat[ 'uid' ] );
518
+ $fileowner = $info[ 'name' ];
519
+ $info = posix_getgrgid( $file_stat[ 'gid' ] );
520
+ $filegroup = $info[ 'name' ];
521
+ }
522
+ // Generate the TAR header for this file
523
+ $header = pack( "a100a8a8a8a12a12a8a1a100a6a2a32a32a8a8a155a12",
524
+ $tar_filename, //name of file 100
525
+ sprintf( "%07o", $file_stat[ 'mode' ] ), //file mode 8
526
+ sprintf( "%07o", $file_stat[ 'uid' ] ), //owner user ID 8
527
+ sprintf( "%07o", $file_stat[ 'gid' ] ), //owner group ID 8
528
+ sprintf( "%011o", 0 ), //length of file in bytes 12
529
+ sprintf( "%011o", $file_stat[ 'mtime' ] ), //modify time of file 12
530
+ " ", //checksum for header 8
531
+ 5, //type of file 0 or null = File, 5=Dir
532
+ "", //name of linked file 100
533
+ "ustar", //USTAR indicator 6
534
+ "00", //USTAR version 2
535
+ $fileowner, //owner user name 32
536
+ $filegroup, //owner group name 32
537
+ "", //device major number 8
538
+ "", //device minor number 8
539
+ $tar_filename_prefix, //prefix for file name 155
540
+ "" ); //fill block 12
541
+
542
+ // Computes the unsigned Checksum of a file's header
543
+ $checksum = 0;
544
+ for ( $i = 0; $i < 512; $i ++ )
545
+ $checksum += ord( substr( $header, $i, 1 ) );
546
+
547
+ $checksum = pack( "a8", sprintf( "%07o", $checksum ) );
548
+ $header = substr_replace( $header, $checksum, 148, 8 );
549
+ //write header
550
+ fwrite( $this->filehandel, $header );
551
+
552
+ return TRUE;
553
+ }
554
  }
555
 
556
  /**
inc/class-destination-folder.php CHANGED
@@ -110,8 +110,6 @@ class BackWPup_Destination_Folder extends BackWPup_Destinations {
110
  public function file_download( $jobid, $get_file ) {
111
 
112
  if ( is_file( $get_file ) ) {
113
- @apache_setenv( 'no-gzip', 1 );
114
- @ini_set( 'zlib.output_compression', 0 );
115
  header( "Pragma: public" );
116
  header( "Expires: 0" );
117
  header( "Cache-Control: must-revalidate, post-check=0, pre-check=0" );
110
  public function file_download( $jobid, $get_file ) {
111
 
112
  if ( is_file( $get_file ) ) {
 
 
113
  header( "Pragma: public" );
114
  header( "Expires: 0" );
115
  header( "Cache-Control: must-revalidate, post-check=0, pre-check=0" );
inc/class-destination-msazure.php CHANGED
@@ -186,8 +186,6 @@ class BackWPup_Destination_MSAzure extends BackWPup_Destinations {
186
  try {
187
  $blobRestProxy = WindowsAzure\Common\ServicesBuilder::getInstance()->createBlobService( 'DefaultEndpointsProtocol=https;AccountName=' . BackWPup_Option::get( $jobid, 'msazureaccname' ) . ';AccountKey=' . BackWPup_Encryption::decrypt( BackWPup_Option::get( $jobid, 'msazurekey' ) ) );
188
  $blob = $blobRestProxy->getBlob( BackWPup_Option::get( $jobid, 'msazurecontainer' ), $get_file );
189
- @apache_setenv( 'no-gzip', 1 );
190
- @ini_set( 'zlib.output_compression', 0 );
191
  header( "Pragma: public" );
192
  header( "Expires: 0" );
193
  header( "Cache-Control: must-revalidate, post-check=0, pre-check=0" );
186
  try {
187
  $blobRestProxy = WindowsAzure\Common\ServicesBuilder::getInstance()->createBlobService( 'DefaultEndpointsProtocol=https;AccountName=' . BackWPup_Option::get( $jobid, 'msazureaccname' ) . ';AccountKey=' . BackWPup_Encryption::decrypt( BackWPup_Option::get( $jobid, 'msazurekey' ) ) );
188
  $blob = $blobRestProxy->getBlob( BackWPup_Option::get( $jobid, 'msazurecontainer' ), $get_file );
 
 
189
  header( "Pragma: public" );
190
  header( "Expires: 0" );
191
  header( "Cache-Control: must-revalidate, post-check=0, pre-check=0" );
inc/class-destination-rsc.php CHANGED
@@ -214,8 +214,6 @@ class BackWPup_Destination_RSC extends BackWPup_Destinations {
214
  $ostore = $conn->ObjectStore( 'cloudFiles' , BackWPup_Option::get( $jobid, 'rscregion' ), 'publicURL');
215
  $container = $ostore->Container( BackWPup_Option::get( $jobid, 'rsccontainer' ) );
216
  $backupfile = $container->DataObject( $get_file );
217
- @apache_setenv( 'no-gzip', 1 );
218
- @ini_set( 'zlib.output_compression', 0 );
219
  header( "Pragma: public" );
220
  header( "Expires: 0" );
221
  header( "Cache-Control: must-revalidate, post-check=0, pre-check=0" );
214
  $ostore = $conn->ObjectStore( 'cloudFiles' , BackWPup_Option::get( $jobid, 'rscregion' ), 'publicURL');
215
  $container = $ostore->Container( BackWPup_Option::get( $jobid, 'rsccontainer' ) );
216
  $backupfile = $container->DataObject( $get_file );
 
 
217
  header( "Pragma: public" );
218
  header( "Expires: 0" );
219
  header( "Cache-Control: must-revalidate, post-check=0, pre-check=0" );
inc/class-destination-s3.php CHANGED
@@ -344,8 +344,6 @@ class BackWPup_Destination_S3 extends BackWPup_Destinations {
344
  }
345
 
346
  if ( $s3file[ 'ContentLength' ] > 0 && ! empty( $s3file[ 'ContentType' ] ) ) {
347
- @apache_setenv( 'no-gzip', 1 );
348
- @ini_set( 'zlib.output_compression', 0 );
349
  header( "Pragma: public" );
350
  header( "Expires: 0" );
351
  header( "Cache-Control: must-revalidate, post-check=0, pre-check=0" );;
@@ -379,7 +377,7 @@ class BackWPup_Destination_S3 extends BackWPup_Destinations {
379
 
380
  $job_object->substeps_todo = 2 + $job_object->backup_filesize;
381
  $job_object->log( sprintf( __( '%d. Trying to send backup file to S3 Service &hellip;', 'backwpup' ), $job_object->steps_data[ $job_object->step_working ][ 'STEP_TRY' ] ), E_USER_NOTICE );
382
-
383
  try {
384
  $s3 = Aws\S3\S3Client::factory( array( 'key' => $job_object->job[ 's3accesskey' ],
385
  'secret' => BackWPup_Encryption::decrypt( $job_object->job[ 's3secretkey' ] ),
@@ -482,11 +480,11 @@ class BackWPup_Destination_S3 extends BackWPup_Destinations {
482
  try {
483
  $backupfilelist = array();
484
  $filecounter = 0;
485
- $files = array();
486
  $args = array(
487
  'Bucket' => $job_object->job[ 's3bucket' ],
488
- 'Prefix' => $job_object->job[ 's3dir' ]
489
- );
490
  $objects = $s3->getIterator('ListObjects', $args );
491
  if ( is_object( $objects ) ) {
492
  foreach ( $objects as $object ) {
344
  }
345
 
346
  if ( $s3file[ 'ContentLength' ] > 0 && ! empty( $s3file[ 'ContentType' ] ) ) {
 
 
347
  header( "Pragma: public" );
348
  header( "Expires: 0" );
349
  header( "Cache-Control: must-revalidate, post-check=0, pre-check=0" );;
377
 
378
  $job_object->substeps_todo = 2 + $job_object->backup_filesize;
379
  $job_object->log( sprintf( __( '%d. Trying to send backup file to S3 Service &hellip;', 'backwpup' ), $job_object->steps_data[ $job_object->step_working ][ 'STEP_TRY' ] ), E_USER_NOTICE );
380
+
381
  try {
382
  $s3 = Aws\S3\S3Client::factory( array( 'key' => $job_object->job[ 's3accesskey' ],
383
  'secret' => BackWPup_Encryption::decrypt( $job_object->job[ 's3secretkey' ] ),
480
  try {
481
  $backupfilelist = array();
482
  $filecounter = 0;
483
+ $files = array();
484
  $args = array(
485
  'Bucket' => $job_object->job[ 's3bucket' ],
486
+ 'Prefix' => (string) $job_object->job[ 's3dir' ]
487
+ );
488
  $objects = $s3->getIterator('ListObjects', $args );
489
  if ( is_object( $objects ) ) {
490
  foreach ( $objects as $object ) {
inc/class-destination-sugarsync.php CHANGED
@@ -208,8 +208,6 @@ class BackWPup_Destination_SugarSync extends BackWPup_Destinations {
208
  try {
209
  $sugarsync = new BackWPup_Destination_SugarSync_API( BackWPup_Option::get( $jobid, 'sugarrefreshtoken' ) );
210
  $response = $sugarsync->get( urldecode( $get_file ) );
211
- @apache_setenv( 'no-gzip', 1 );
212
- @ini_set( 'zlib.output_compression', 0 );
213
  header( "Pragma: public" );
214
  header( "Expires: 0" );
215
  header( "Cache-Control: must-revalidate, post-check=0, pre-check=0" );
208
  try {
209
  $sugarsync = new BackWPup_Destination_SugarSync_API( BackWPup_Option::get( $jobid, 'sugarrefreshtoken' ) );
210
  $response = $sugarsync->get( urldecode( $get_file ) );
 
 
211
  header( "Pragma: public" );
212
  header( "Expires: 0" );
213
  header( "Cache-Control: must-revalidate, post-check=0, pre-check=0" );
inc/class-job.php CHANGED
@@ -452,6 +452,11 @@ final class BackWPup_Job {
452
  trigger_error( __( 'Temp folder does not exist or is not writable for BackWPup', 'backwpup' ), E_USER_ERROR );
453
  wp_die( __( 'Temp folder does not exist or is not writable for BackWPup', 'backwpup' ), __( 'Temp folder does not exist or is not writable for BackWPup', 'backwpup' ), array( 'response' => 500 ) );
454
  }
 
 
 
 
 
455
  //check running job
456
  $backwpup_job_object = self::get_working_data();
457
  if ( $starttype == 'restart' && ! $backwpup_job_object ) {
@@ -622,8 +627,16 @@ final class BackWPup_Job {
622
  @ini_set( 'display_errors', 'Off' );
623
  @ini_set( 'log_errors', 'On' );
624
  //set temp folder
625
- $this->temp[ 'PHP' ][ 'ENV' ][ 'TEMPDIR' ] = getenv( 'TMPDIR' );
626
- @putenv( 'TMPDIR='.BackWPup::get_plugin_data( 'TEMP') );
 
 
 
 
 
 
 
 
627
  //increase MySQL timeout
628
  @ini_set( 'mysql.connect_timeout', '60' );
629
  $wpdb->query( "SET session wait_timeout = 60" );
@@ -1559,9 +1572,6 @@ final class BackWPup_Job {
1559
  * @return array files to backup
1560
  */
1561
  public function get_files_in_folder( $folder ) {
1562
-
1563
- //clear cache of files in php
1564
- clearstatcache();
1565
 
1566
  $files = array();
1567
 
@@ -1585,7 +1595,7 @@ final class BackWPup_Job {
1585
  }
1586
  if ( $this->job[ 'backupexcludethumbs' ] && strpos( $folder, BackWPup_File::get_upload_dir() ) !== FALSE && preg_match( "/\-[0-9]{2,4}x[0-9]{2,4}\.(jpg|png|gif)$/i", $file ) )
1587
  continue;
1588
- if ( ! is_readable( $folder . $file ) )
1589
  $this->log( sprintf( __( 'File "%s" is not readable!', 'backwpup' ), $folder . $file ), E_USER_WARNING );
1590
  elseif ( is_link( $folder . $file ) )
1591
  $this->log( sprintf( __( 'Link "%s" not followed.', 'backwpup' ), $folder . $file ), E_USER_WARNING );
@@ -1615,9 +1625,8 @@ final class BackWPup_Job {
1615
  try {
1616
  $backup_archive = new BackWPup_Create_Archive( $this->backup_folder . $this->backup_file );
1617
 
1618
- //schow method for creation
1619
- if( defined( 'WP_DEBUG' ) && WP_DEBUG )
1620
- $this->log( sprintf( _x( 'Compression method is %s', 'Archive compression method', 'backwpup'), $backup_archive->get_method() ) );
1621
 
1622
  //add extra files
1623
  if ( $this->substeps_done == 0 ) {
@@ -1634,6 +1643,7 @@ final class BackWPup_Job {
1634
  //add normal files
1635
  for ( $i = $this->substeps_done - 1; $i < $this->substeps_todo - 1; $i ++ ) {
1636
  $files = $this->get_files_in_folder( $folders_to_backup[ $i ] );
 
1637
  if ( count( $files ) > 0 ) {
1638
  foreach ( $files as $file ) {
1639
  $in_archive_filename = ltrim( str_replace( $this->remove_path, '', $file ), '/' );
452
  trigger_error( __( 'Temp folder does not exist or is not writable for BackWPup', 'backwpup' ), E_USER_ERROR );
453
  wp_die( __( 'Temp folder does not exist or is not writable for BackWPup', 'backwpup' ), __( 'Temp folder does not exist or is not writable for BackWPup', 'backwpup' ), array( 'response' => 500 ) );
454
  }
455
+ $backups_folder = BackWPup_Option::get( $jobid, 'backupdir' );
456
+ if ( ! empty( $backups_folder ) && ! self::check_folder( $backups_folder ) ) {
457
+ trigger_error( __( 'Backups folder does not exist or is not writable for BackWPup', 'backwpup' ), E_USER_ERROR );
458
+ wp_die( __( 'Backups folder does not exist or is not writable for BackWPup', 'backwpup' ), __( 'Backups folder does not exist or is not writable for BackWPup', 'backwpup' ), array( 'response' => 500 ) );
459
+ }
460
  //check running job
461
  $backwpup_job_object = self::get_working_data();
462
  if ( $starttype == 'restart' && ! $backwpup_job_object ) {
627
  @ini_set( 'display_errors', 'Off' );
628
  @ini_set( 'log_errors', 'On' );
629
  //set temp folder
630
+ $can_set_temp_env = TRUE;
631
+ $protected_env_vars = explode( ',', ini_get( 'safe_mode_protected_env_vars') );
632
+ foreach( $protected_env_vars as $protected_env ) {
633
+ if ( strtoupper( trim( $protected_env ) ) == 'TMPDIR' )
634
+ $can_set_temp_env = FALSE;
635
+ }
636
+ if ( $can_set_temp_env ) {
637
+ $this->temp[ 'PHP' ][ 'ENV' ][ 'TEMPDIR' ] = getenv( 'TMPDIR' );
638
+ @putenv( 'TMPDIR='.BackWPup::get_plugin_data( 'TEMP') );
639
+ }
640
  //increase MySQL timeout
641
  @ini_set( 'mysql.connect_timeout', '60' );
642
  $wpdb->query( "SET session wait_timeout = 60" );
1572
  * @return array files to backup
1573
  */
1574
  public function get_files_in_folder( $folder ) {
 
 
 
1575
 
1576
  $files = array();
1577
 
1595
  }
1596
  if ( $this->job[ 'backupexcludethumbs' ] && strpos( $folder, BackWPup_File::get_upload_dir() ) !== FALSE && preg_match( "/\-[0-9]{2,4}x[0-9]{2,4}\.(jpg|png|gif)$/i", $file ) )
1597
  continue;
1598
+ if ( ! is_dir( $folder . $file ) && ! is_readable( $folder . $file ) )
1599
  $this->log( sprintf( __( 'File "%s" is not readable!', 'backwpup' ), $folder . $file ), E_USER_WARNING );
1600
  elseif ( is_link( $folder . $file ) )
1601
  $this->log( sprintf( __( 'Link "%s" not followed.', 'backwpup' ), $folder . $file ), E_USER_WARNING );
1625
  try {
1626
  $backup_archive = new BackWPup_Create_Archive( $this->backup_folder . $this->backup_file );
1627
 
1628
+ //show method for creation
1629
+ $this->log( sprintf( _x( 'Compression method is %s', 'Archive compression method', 'backwpup'), $backup_archive->get_method() ) );
 
1630
 
1631
  //add extra files
1632
  if ( $this->substeps_done == 0 ) {
1643
  //add normal files
1644
  for ( $i = $this->substeps_done - 1; $i < $this->substeps_todo - 1; $i ++ ) {
1645
  $files = $this->get_files_in_folder( $folders_to_backup[ $i ] );
1646
+ $backup_archive->add_empty_folder( $folders_to_backup[ $i ], ltrim( str_replace( $this->remove_path, '', $folders_to_backup[ $i ] ), '/' ) );
1647
  if ( count( $files ) > 0 ) {
1648
  foreach ( $files as $file ) {
1649
  $in_archive_filename = ltrim( str_replace( $this->remove_path, '', $file ), '/' );
inc/class-jobtype-file.php CHANGED
@@ -398,11 +398,13 @@ class BackWPup_JobType_File extends BackWPup_JobTypes {
398
  $job_object->count_filesize = $job_object->count_filesize + @filesize( ABSPATH . 'wp-config.php' );
399
  trigger_error( sprintf( __( 'Added "%s" to backup file list', 'backwpup' ), 'wp-config.php' ), E_USER_NOTICE );
400
  }
401
- elseif ( is_file( dirname( ABSPATH ) . '/wp-config.php' ) && ! is_file( dirname( ABSPATH ) . '/wp-settings.php' ) ) {
402
- $job_object->additional_files_to_backup[ ] = str_replace( '\\', '/', dirname( ABSPATH ) . '/wp-config.php' );
403
- $job_object->count_files ++;
404
- $job_object->count_filesize = $job_object->count_filesize + @filesize( dirname( ABSPATH ) . '/wp-config.php' );
405
- trigger_error( sprintf( __( 'Added "%s" to backup file list', 'backwpup' ), 'wp-config.php' ), E_USER_NOTICE );
 
 
406
  }
407
  if ( is_file( ABSPATH . '.htaccess' ) && empty( $job_object->job[ 'backuproot' ] ) ) {
408
  $job_object->additional_files_to_backup[ ] = str_replace( '\\', '/', ABSPATH . '.htaccess' );
@@ -431,7 +433,7 @@ class BackWPup_JobType_File extends BackWPup_JobTypes {
431
  }
432
 
433
  if ( empty( $job_object->count_folder ) )
434
- trigger_error( __( 'No folder to back up.', 'backwpup' ), E_USER_ERROR );
435
  else
436
  trigger_error( sprintf( __( '%1$d folders to back up.', 'backwpup' ), $job_object->count_folder ), E_USER_NOTICE );
437
 
@@ -469,12 +471,12 @@ class BackWPup_JobType_File extends BackWPup_JobTypes {
469
  continue 2;
470
  }
471
  if ( is_dir( $folder . $file ) ) {
 
 
472
  if ( ! is_readable( $folder . $file ) ) {
473
  trigger_error( sprintf( __( 'Folder "%s" is not readable!', 'backwpup' ), $folder . $file ), E_USER_WARNING );
474
  continue;
475
  }
476
- if ( in_array( trailingslashit( $folder . $file ), $excludedirs ) )
477
- continue;
478
  $this->get_folder_list( $job_object, trailingslashit( $folder . $file ), $excludedirs );
479
  }
480
  }
398
  $job_object->count_filesize = $job_object->count_filesize + @filesize( ABSPATH . 'wp-config.php' );
399
  trigger_error( sprintf( __( 'Added "%s" to backup file list', 'backwpup' ), 'wp-config.php' ), E_USER_NOTICE );
400
  }
401
+ elseif ( BackWPup_File::is_in_open_basedir( dirname( ABSPATH ) . '/wp-config.php' ) ) {
402
+ if ( is_file( dirname( ABSPATH ) . '/wp-config.php' ) && ! is_file( dirname( ABSPATH ) . '/wp-settings.php' ) ) {
403
+ $job_object->additional_files_to_backup[ ] = str_replace( '\\', '/', dirname( ABSPATH ) . '/wp-config.php' );
404
+ $job_object->count_files ++;
405
+ $job_object->count_filesize = $job_object->count_filesize + @filesize( dirname( ABSPATH ) . '/wp-config.php' );
406
+ trigger_error( sprintf( __( 'Added "%s" to backup file list', 'backwpup' ), 'wp-config.php' ), E_USER_NOTICE );
407
+ }
408
  }
409
  if ( is_file( ABSPATH . '.htaccess' ) && empty( $job_object->job[ 'backuproot' ] ) ) {
410
  $job_object->additional_files_to_backup[ ] = str_replace( '\\', '/', ABSPATH . '.htaccess' );
433
  }
434
 
435
  if ( empty( $job_object->count_folder ) )
436
+ trigger_error( __( 'No folder to back up.', 'backwpup' ), E_USER_WARNING );
437
  else
438
  trigger_error( sprintf( __( '%1$d folders to back up.', 'backwpup' ), $job_object->count_folder ), E_USER_NOTICE );
439
 
471
  continue 2;
472
  }
473
  if ( is_dir( $folder . $file ) ) {
474
+ if ( in_array( trailingslashit( $folder . $file ), $excludedirs ) )
475
+ continue;
476
  if ( ! is_readable( $folder . $file ) ) {
477
  trigger_error( sprintf( __( 'Folder "%s" is not readable!', 'backwpup' ), $folder . $file ), E_USER_WARNING );
478
  continue;
479
  }
 
 
480
  $this->get_folder_list( $job_object, trailingslashit( $folder . $file ), $excludedirs );
481
  }
482
  }
inc/class-mysqldump.php CHANGED
@@ -89,7 +89,7 @@ class BackWPup_MySQLDump {
89
  throw new BackWPup_MySQLDump_Exception( sprintf( __( 'Can not connect to MySQL Database %1$d: %2$s', 'backwpup' ), $this->mysqli->connect_errno, $this->mysqli->connect_error ) );
90
 
91
  //set charset
92
- if ( ! empty( $args[ 'dbcharset' ] ) ) {
93
  $res = $this->mysqli->set_charset( $args[ 'dbcharset' ] );
94
  if ( ! $res )
95
  throw new BackWPup_MySQLDump_Exception( sprintf( _x( 'Can not set DB charset to %s','Database Charset', 'backwpup' ), $args[ 'dbcharset' ] ) );
89
  throw new BackWPup_MySQLDump_Exception( sprintf( __( 'Can not connect to MySQL Database %1$d: %2$s', 'backwpup' ), $this->mysqli->connect_errno, $this->mysqli->connect_error ) );
90
 
91
  //set charset
92
+ if ( ! empty( $args[ 'dbcharset' ] ) && method_exists($this->mysqli, 'set_charset' ) ) {
93
  $res = $this->mysqli->set_charset( $args[ 'dbcharset' ] );
94
  if ( ! $res )
95
  throw new BackWPup_MySQLDump_Exception( sprintf( _x( 'Can not set DB charset to %s','Database Charset', 'backwpup' ), $args[ 'dbcharset' ] ) );
inc/class-page-backwpup.php CHANGED
@@ -199,7 +199,7 @@ class BackWPup_Page_BackWPup {
199
  $alternate = FALSE;
200
  }
201
  echo '<td>' . date_i18n( get_option( 'date_format' ) , $logdata[ 'logtime' ] ). '<br />' . date_i18n( get_option( 'time_format' ), $logdata[ 'logtime' ] ) . '</td>';
202
- echo '<td><a class="backwpup-fancybox" data-fancybox-type="iframe" href="' . admin_url( 'admin-ajax.php' ) . '?&action=backwpup_view_log&logfile=' . basename( $logfile ) .'&_ajax_nonce=' . wp_create_nonce( 'view-logs' ) . '" title="' . esc_attr( basename( $logfile ) ) . '">' . $logdata[ 'name' ] . '</i></a></td>';
203
  echo '<td>';
204
  if ( $logdata[ 'errors' ] > 0 )
205
  printf( '<span style="color:red;font-weight:bold;">' . _n( "%d ERROR", "%d ERRORS", $logdata[ 'errors' ], 'backwpup' ) . '</span><br />', $logdata[ 'errors' ] );
199
  $alternate = FALSE;
200
  }
201
  echo '<td>' . date_i18n( get_option( 'date_format' ) , $logdata[ 'logtime' ] ). '<br />' . date_i18n( get_option( 'time_format' ), $logdata[ 'logtime' ] ) . '</td>';
202
+ echo '<td><a class="thickbox" href="' . admin_url( 'admin-ajax.php' ) . '?&action=backwpup_view_log&logfile=' . basename( $logfile ) .'&_ajax_nonce=' . wp_create_nonce( 'view-logs' ) . '&height=440&width=630&TB_iframe=true" title="' . esc_attr( basename( $logfile ) ) . '">' . $logdata[ 'name' ] . '</i></a></td>';
203
  echo '<td>';
204
  if ( $logdata[ 'errors' ] > 0 )
205
  printf( '<span style="color:red;font-weight:bold;">' . _n( "%d ERROR", "%d ERRORS", $logdata[ 'errors' ], 'backwpup' ) . '</span><br />', $logdata[ 'errors' ] );
inc/class-page-jobs.php CHANGED
@@ -224,7 +224,7 @@ class BackWPup_Page_Jobs extends WP_List_Table {
224
  $logfile = basename( BackWPup_Option::get( $jobid, 'logfile' ) );
225
  if ( is_object( $job_object ) && $job_object->job[ 'jobid'] == $jobid )
226
  $logfile = basename( $job_object->logfile );
227
- $r .= '<a class="backwpup-fancybox" data-fancybox-type="iframe" href="' . admin_url( 'admin-ajax.php' ) . '?&action=backwpup_view_log&logfile=' . $logfile .'&_ajax_nonce=' . wp_create_nonce( 'view-logs' ) . '" title="' . esc_attr( $logfile ) . '">' . __( 'Log', 'backwpup' ) . '</a>';
228
 
229
  }
230
  $r .= "</td>";
@@ -314,20 +314,56 @@ class BackWPup_Page_Jobs extends WP_List_Table {
314
  if ( ! current_user_can( 'backwpup_jobs_start' ) )
315
  wp_die( __( 'Not allowed!', 'backwpup') );
316
  check_admin_referer( 'backwup_job_run-runnowlink' );
317
- $last_log = BackWPup_Option::get( $_GET[ 'jobid' ], 'logfile', NULL, FALSE );
318
- BackWPup_Job::get_jobrun_url( 'runnow', $_GET[ 'jobid' ] );
319
- BackWPup_Admin::message( sprintf( __( 'Job "%s" started.', 'backwpup' ), esc_attr( BackWPup_Option::get( $_GET[ 'jobid' ], 'name' ) ) ) );
320
- //sleep as long as jon not started
321
- $i=0;
322
- while ( $last_log == BackWPup_Option::get( $_GET[ 'jobid' ], 'logfile', NULL, FALSE ) ) {
323
- usleep( 250000 ); //wait a half second for net try
324
- clearstatcache();
325
- //wait maximal 5 sec.
326
- if ( $i >= 20 )
327
- break;
328
- $i++;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
329
  }
330
- self::$logfile = BackWPup_Option::get( $_GET[ 'jobid' ], 'logfile', NULL, FALSE );
331
  }
332
  break;
333
  case 'abort': //Abort Job
@@ -432,7 +468,7 @@ class BackWPup_Page_Jobs extends WP_List_Table {
432
  echo '<h2 id="runningtitle">' . sprintf( __('Job currently working: %s','backwpup'), $job_object->job[ 'name' ] ) . '</h2>';
433
  echo '<span id="warningsid">' . __( 'Warnings:', 'backwpup' ) . ' <span id="warnings">' . $job_object->warnings . '</span></span>';
434
  echo '<span id="errorid">' . __( 'Errors:', 'backwpup' ) . ' <span id="errors">' . $job_object->errors . '</span></span>';
435
- echo '<div class="infobuttons"><a href="#showworking" id="showworkingbutton" class="backwpup-fancybox">' . __( 'Display working log', 'backwpup' ) . '</a>';
436
  echo '<a href="' . wp_nonce_url( network_admin_url( 'admin.php' ) . '?page=backwpupjobs&action=abort', 'abort-job' ) . '" id="abortbutton" class="backwpup-fancybox">' . __( 'Abort', 'backwpup' ) . '</a>';
437
  echo '<a href="#" id="showworkingclose" title="' . __( 'Close working screen', 'backwpup') .'" style="display:none" >' . __( 'close', 'backwpup' ) . '</a></div>';
438
  echo '</div>';
@@ -442,9 +478,9 @@ class BackWPup_Page_Jobs extends WP_List_Table {
442
  echo '<div id="onstep"><samp>' . $job_object->steps_data[ $job_object->step_working ][ 'NAME' ] . '</samp></div>';
443
  echo '<div class="progressbar"><div id="progresssteps" style="width:' . $job_object->substep_percent . '%;">' . $job_object->substep_percent . '%</div></div>';
444
  echo '<div id="lastmsg">' . $job_object->lastmsg . '</div>';
445
- echo '<div id="showworking" style="display:none;">';
446
  echo substr( $logfiledata, $startpos, $length );
447
- echo '</div>';
448
  echo '</div>';
449
  }
450
  //display jos Table
@@ -475,7 +511,8 @@ class BackWPup_Page_Jobs extends WP_List_Table {
475
  success:function (rundata) {
476
  $('#logpos').val(rundata.logpos);
477
  if ('' != rundata.logtext) {
478
- $('#showworking').append(rundata.logtext).scrollTop(rundata.logpos * 14);
 
479
  }
480
  if (0 < rundata.errors) {
481
  $('#errors').replaceWith('<span id="errors">' + rundata.errors + '</span>');
224
  $logfile = basename( BackWPup_Option::get( $jobid, 'logfile' ) );
225
  if ( is_object( $job_object ) && $job_object->job[ 'jobid'] == $jobid )
226
  $logfile = basename( $job_object->logfile );
227
+ $r .= '<a class="thickbox" href="' . admin_url( 'admin-ajax.php' ) . '?&action=backwpup_view_log&logfile=' . $logfile .'&_ajax_nonce=' . wp_create_nonce( 'view-logs' ) . '&height=440&width=630&TB_iframe=true" title="' . esc_attr( $logfile ) . '">' . __( 'Log', 'backwpup' ) . '</a>';
228
 
229
  }
230
  $r .= "</td>";
314
  if ( ! current_user_can( 'backwpup_jobs_start' ) )
315
  wp_die( __( 'Not allowed!', 'backwpup') );
316
  check_admin_referer( 'backwup_job_run-runnowlink' );
317
+
318
+ //check temp folder
319
+ BackWPup_Job::check_folder( BackWPup::get_plugin_data( 'TEMP' ) );
320
+ if ( is_dir( BackWPup::get_plugin_data( 'TEMP' ) ) ) {
321
+ if ( ! is_writable( BackWPup::get_plugin_data( 'TEMP' ) ) || ! is_readable( BackWPup::get_plugin_data( 'TEMP' ) ) ) {
322
+ BackWPup_Admin::message( sprintf( __( 'Temp folder %s not read or writable. Please set proper write permissions.','backwpup' ), BackWPup::get_plugin_data( 'TEMP' ) ) );
323
+ }
324
+ } else {
325
+ BackWPup_Admin::message( sprintf( __( 'Temp folder %s does not exist and cannot be created. Please create it and set proper write permissions.','backwpup' ), BackWPup::get_plugin_data( 'TEMP' ) ) );
326
+ }
327
+ //check log folder
328
+ BackWPup_Job::check_folder( BackWPup_Option::get( 'cfg', 'logfolder' ) );
329
+ if ( is_dir( BackWPup_Option::get( 'cfg', 'logfolder' ) ) ) {
330
+ if ( ! is_writable( BackWPup_Option::get( 'cfg', 'logfolder' ) ) || ! is_readable( BackWPup_Option::get( 'cfg', 'logfolder' ) ) ) {
331
+ BackWPup_Admin::message( sprintf( __( 'Logs folder %s is not read or writable. Please set proper write permissions.','backwpup' ), BackWPup_Option::get( 'cfg', 'logfolder' ) ) );
332
+ }
333
+ } else {
334
+ BackWPup_Admin::message( sprintf( __( 'Logs folder %s does not exist and cannot be created. Please create it and set proper write permissions.','backwpup' ), BackWPup_Option::get( 'cfg', 'logfolder' ) ) );
335
+ }
336
+ //check backups folder
337
+ $backups_folder = BackWPup_Option::get( $_GET[ 'jobid' ], 'backupdir' );
338
+ if ( ! empty( $backups_folder ) ) {
339
+ BackWPup_Job::check_folder( $backups_folder );
340
+ if ( is_dir( $backups_folder ) ) {
341
+ if ( ! is_writable( $backups_folder ) || ! is_readable( $backups_folder ) ) {
342
+ BackWPup_Admin::message( sprintf( __( 'Backups folder %s is not read or writable. Please set proper write permissions.','backwpup' ), $backups_folder ) );
343
+ }
344
+ } else {
345
+ BackWPup_Admin::message( sprintf( __( 'Backups folder %s does not exist and cannot be created. Please create it and set proper write permissions.','backwpup' ), $backups_folder ) );
346
+ }
347
+ }
348
+
349
+ //only start job if massages empty
350
+ $log_messages = BackWPup_Admin::get_message();
351
+ if ( empty ( $log_messages ) ) {
352
+ $last_log = BackWPup_Option::get( $_GET[ 'jobid' ], 'logfile', NULL, FALSE );
353
+ BackWPup_Admin::message( sprintf( __( 'Job "%s" started.', 'backwpup' ), esc_attr( BackWPup_Option::get( $_GET[ 'jobid' ], 'name' ) ) ) );
354
+ BackWPup_Job::get_jobrun_url( 'runnow', $_GET[ 'jobid' ] );
355
+ //sleep as long as jon not started
356
+ $i=0;
357
+ while ( $last_log == BackWPup_Option::get( $_GET[ 'jobid' ], 'logfile', NULL, FALSE ) ) {
358
+ usleep( 250000 ); //wait a half second for net try
359
+ clearstatcache();
360
+ //wait maximal 5 sec.
361
+ if ( $i >= 20 )
362
+ break;
363
+ $i++;
364
+ }
365
+ self::$logfile = BackWPup_Option::get( $_GET[ 'jobid' ], 'logfile', NULL, FALSE );
366
  }
 
367
  }
368
  break;
369
  case 'abort': //Abort Job
468
  echo '<h2 id="runningtitle">' . sprintf( __('Job currently working: %s','backwpup'), $job_object->job[ 'name' ] ) . '</h2>';
469
  echo '<span id="warningsid">' . __( 'Warnings:', 'backwpup' ) . ' <span id="warnings">' . $job_object->warnings . '</span></span>';
470
  echo '<span id="errorid">' . __( 'Errors:', 'backwpup' ) . ' <span id="errors">' . $job_object->errors . '</span></span>';
471
+ echo '<div class="infobuttons"><a href="#TB_inline?height=440&width=630&inlineId=tb-showworking" id="showworkingbutton" class="thickbox" title="' . __( 'Working job log', 'backwpup') . '">' . __( 'Display working log', 'backwpup' ) . '</a>';
472
  echo '<a href="' . wp_nonce_url( network_admin_url( 'admin.php' ) . '?page=backwpupjobs&action=abort', 'abort-job' ) . '" id="abortbutton" class="backwpup-fancybox">' . __( 'Abort', 'backwpup' ) . '</a>';
473
  echo '<a href="#" id="showworkingclose" title="' . __( 'Close working screen', 'backwpup') .'" style="display:none" >' . __( 'close', 'backwpup' ) . '</a></div>';
474
  echo '</div>';
478
  echo '<div id="onstep"><samp>' . $job_object->steps_data[ $job_object->step_working ][ 'NAME' ] . '</samp></div>';
479
  echo '<div class="progressbar"><div id="progresssteps" style="width:' . $job_object->substep_percent . '%;">' . $job_object->substep_percent . '%</div></div>';
480
  echo '<div id="lastmsg">' . $job_object->lastmsg . '</div>';
481
+ echo '<div id="tb-showworking" style="display:none;"><div id="showworking">';
482
  echo substr( $logfiledata, $startpos, $length );
483
+ echo '</div></div>';
484
  echo '</div>';
485
  }
486
  //display jos Table
511
  success:function (rundata) {
512
  $('#logpos').val(rundata.logpos);
513
  if ('' != rundata.logtext) {
514
+ $('#showworking').append(rundata.logtext);
515
+ $('#TB_ajaxContent').scrollTop(rundata.logpos * 15);
516
  }
517
  if (0 < rundata.errors) {
518
  $('#errors').replaceWith('<span id="errors">' + rundata.errors + '</span>');
inc/class-page-logs.php CHANGED
@@ -178,9 +178,9 @@ class BackWPup_Page_Logs extends WP_List_Table {
178
  $r .= "</td>";
179
  break;
180
  case 'log':
181
- $r .= "<td $attributes><strong><a class=\"backwpup-fancybox\" data-fancybox-type=\"iframe\" href=\"" . admin_url( 'admin-ajax.php' ) . '?&action=backwpup_view_log&logfile=' . basename( $logfile ) .'&_ajax_nonce=' . wp_create_nonce( 'view-logs' ) . "\" title=\"" . basename( $logfile ) . "\">" . sprintf( __( '%1$s at %2$s', 'backwpup' ), date_i18n( get_option( 'date_format' ) , $logdata[ 'logtime' ], TRUE ), date_i18n( get_option( 'time_format' ), $logdata[ 'logtime' ], TRUE ) ) . ": <i>" . $logdata[ 'name' ] . "</i></a></strong>";
182
  $actions = array();
183
- $actions[ 'view' ] = '<a class="backwpup-fancybox" data-fancybox-type="iframe" href="' . admin_url( 'admin-ajax.php' ) . '?&action=backwpup_view_log&logfile=' . basename( $logfile ) .'&_ajax_nonce=' . wp_create_nonce( 'view-logs' ) . '" title="' . basename( $logfile ) . '">' . __( 'View', 'backwpup' ) . '</a>';
184
  if ( current_user_can( 'backwpup_logs_delete' ) )
185
  $actions[ 'delete' ] = "<a class=\"submitdelete\" href=\"" . wp_nonce_url( network_admin_url( 'admin.php' ) . '?page=backwpuplogs&action=delete&paged=' . $this->get_pagenum() . '&logfiles[]=' . basename( $logfile ), 'bulk-logs' ) . "\" onclick=\"return showNotice.warn();\">" . __( 'Delete', 'backwpup' ) . "</a>";
186
  $actions[ 'download' ] = "<a href=\"" . wp_nonce_url( network_admin_url( 'admin.php' ) . '?page=backwpuplogs&action=download&file=' . $logfile, 'download-backup_' . basename( $logfile ) ) . "\">" . __( 'Download', 'backwpup' ) . "</a>";
178
  $r .= "</td>";
179
  break;
180
  case 'log':
181
+ $r .= "<td $attributes><strong><a class=\"thickbox\" href=\"" . admin_url( 'admin-ajax.php' ) . '?&action=backwpup_view_log&logfile=' . basename( $logfile ) .'&_ajax_nonce=' . wp_create_nonce( 'view-logs' ) . "&height=440&width=630&TB_iframe=true\" title=\"" . basename( $logfile ) . "\">" . sprintf( __( '%1$s at %2$s', 'backwpup' ), date_i18n( get_option( 'date_format' ) , $logdata[ 'logtime' ], TRUE ), date_i18n( get_option( 'time_format' ), $logdata[ 'logtime' ], TRUE ) ) . ": <i>" . $logdata[ 'name' ] . "</i></a></strong>";
182
  $actions = array();
183
+ $actions[ 'view' ] = '<a class="thickbox" href="' . admin_url( 'admin-ajax.php' ) . '?&action=backwpup_view_log&logfile=' . basename( $logfile ) .'&_ajax_nonce=' . wp_create_nonce( 'view-logs' ) . '&height=440&width=630&TB_iframe=true" title="' . basename( $logfile ) . '">' . __( 'View', 'backwpup' ) . '</a>';
184
  if ( current_user_can( 'backwpup_logs_delete' ) )
185
  $actions[ 'delete' ] = "<a class=\"submitdelete\" href=\"" . wp_nonce_url( network_admin_url( 'admin.php' ) . '?page=backwpuplogs&action=delete&paged=' . $this->get_pagenum() . '&logfiles[]=' . basename( $logfile ), 'bulk-logs' ) . "\" onclick=\"return showNotice.warn();\">" . __( 'Delete', 'backwpup' ) . "</a>";
186
  $actions[ 'download' ] = "<a href=\"" . wp_nonce_url( network_admin_url( 'admin.php' ) . '?page=backwpuplogs&action=download&file=' . $logfile, 'download-backup_' . basename( $logfile ) ) . "\">" . __( 'Download', 'backwpup' ) . "</a>";
js/fancybox/blank.gif DELETED
Binary file
js/fancybox/fancybox_loading.gif DELETED
Binary file
js/fancybox/fancybox_overlay.png DELETED
Binary file
js/fancybox/fancybox_sprite.png DELETED
Binary file
js/fancybox/helpers/fancybox_buttons.png DELETED
Binary file
js/fancybox/helpers/jquery.fancybox-buttons.css DELETED
@@ -1,96 +0,0 @@
1
- #fancybox-buttons {
2
- position: fixed;
3
- left: 0;
4
- width: 100%;
5
- z-index: 8050;
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: 166px;
19
- height: 30px;
20
- margin: 0 auto;
21
- padding: 0;
22
- list-style: none;
23
- border: 1px solid #111;
24
- border-radius: 3px;
25
- -webkit-box-shadow: inset 0 0 0 1px rgba(255,255,255,.05);
26
- -moz-box-shadow: inset 0 0 0 1px rgba(255,255,255,.05);
27
- box-shadow: inset 0 0 0 1px rgba(255,255,255,.05);
28
- background: rgb(50,50,50);
29
- background: -moz-linear-gradient(top, rgb(68,68,68) 0%, rgb(52,52,52) 50%, rgb(41,41,41) 50%, rgb(51,51,51) 100%);
30
- background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgb(68,68,68)), color-stop(50%,rgb(52,52,52)), color-stop(50%,rgb(41,41,41)), color-stop(100%,rgb(51,51,51)));
31
- background: -webkit-linear-gradient(top, rgb(68,68,68) 0%,rgb(52,52,52) 50%,rgb(41,41,41) 50%,rgb(51,51,51) 100%);
32
- background: -o-linear-gradient(top, rgb(68,68,68) 0%,rgb(52,52,52) 50%,rgb(41,41,41) 50%,rgb(51,51,51) 100%);
33
- background: -ms-linear-gradient(top, rgb(68,68,68) 0%,rgb(52,52,52) 50%,rgb(41,41,41) 50%,rgb(51,51,51) 100%);
34
- background: linear-gradient(top, rgb(68,68,68) 0%,rgb(52,52,52) 50%,rgb(41,41,41) 50%,rgb(51,51,51) 100%);
35
- filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#444444', endColorstr='#222222',GradientType=0 );
36
- }
37
-
38
- #fancybox-buttons ul li {
39
- float: left;
40
- margin: 0;
41
- padding: 0;
42
- }
43
-
44
- #fancybox-buttons a {
45
- display: block;
46
- width: 30px;
47
- height: 30px;
48
- text-indent: -9999px;
49
- background-image: url('fancybox_buttons.png');
50
- background-repeat: no-repeat;
51
- outline: none;
52
- opacity: 0.8;
53
- }
54
-
55
- #fancybox-buttons a:hover {
56
- opacity: 1;
57
- }
58
-
59
- #fancybox-buttons a.btnPrev {
60
- background-position: 5px 0;
61
- }
62
-
63
- #fancybox-buttons a.btnNext {
64
- background-position: -33px 0;
65
- border-right: 1px solid #3e3e3e;
66
- }
67
-
68
- #fancybox-buttons a.btnPlay {
69
- background-position: 0 -30px;
70
- }
71
-
72
- #fancybox-buttons a.btnPlayOn {
73
- background-position: -30px -30px;
74
- }
75
-
76
- #fancybox-buttons a.btnToggle {
77
- background-position: 3px -60px;
78
- border-left: 1px solid #111;
79
- border-right: 1px solid #3e3e3e;
80
- width: 35px
81
- }
82
-
83
- #fancybox-buttons a.btnToggleOn {
84
- background-position: -27px -60px;
85
- }
86
-
87
- #fancybox-buttons a.btnClose {
88
- border-left: 1px solid #111;
89
- width: 35px;
90
- background-position: -56px 0px;
91
- }
92
-
93
- #fancybox-buttons a.btnDisabled {
94
- opacity : 0.4;
95
- cursor: default;
96
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
js/fancybox/helpers/jquery.fancybox-buttons.js DELETED
@@ -1,121 +0,0 @@
1
- /*!
2
- * Buttons helper for fancyBox
3
- * version: 1.0.5 (Mon, 15 Oct 2012)
4
- * @requires fancyBox v2.0 or later
5
- *
6
- * Usage:
7
- * $(".fancybox").fancybox({
8
- * helpers : {
9
- * buttons: {
10
- * position : 'top'
11
- * }
12
- * }
13
- * });
14
- *
15
- */
16
- (function ($) {
17
- //Shortcut for fancyBox object
18
- var F = $.fancybox;
19
-
20
- //Add helper object
21
- F.helpers.buttons = {
22
- defaults : {
23
- skipSingle : false, // disables if gallery contains single image
24
- position : 'top', // 'top' or 'bottom'
25
- 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>'
26
- },
27
-
28
- list : null,
29
- buttons: null,
30
-
31
- beforeLoad: function (opts, obj) {
32
- //Remove self if gallery do not have at least two items
33
-
34
- if (opts.skipSingle && obj.group.length < 2) {
35
- obj.helpers.buttons = false;
36
- obj.closeBtn = true;
37
-
38
- return;
39
- }
40
-
41
- //Increase top margin to give space for buttons
42
- obj.margin[ opts.position === 'bottom' ? 2 : 0 ] += 30;
43
- },
44
-
45
- onPlayStart: function () {
46
- if (this.buttons) {
47
- this.buttons.play.attr('title', 'Pause slideshow').addClass('btnPlayOn');
48
- }
49
- },
50
-
51
- onPlayEnd: function () {
52
- if (this.buttons) {
53
- this.buttons.play.attr('title', 'Start slideshow').removeClass('btnPlayOn');
54
- }
55
- },
56
-
57
- afterShow: function (opts, obj) {
58
- var buttons = this.buttons;
59
-
60
- if (!buttons) {
61
- this.list = $(opts.tpl).addClass(opts.position).appendTo('body');
62
-
63
- buttons = {
64
- prev : this.list.find('.btnPrev').click( F.prev ),
65
- next : this.list.find('.btnNext').click( F.next ),
66
- play : this.list.find('.btnPlay').click( F.play ),
67
- toggle : this.list.find('.btnToggle').click( F.toggle )
68
- }
69
- }
70
-
71
- //Prev
72
- if (obj.index > 0 || obj.loop) {
73
- buttons.prev.removeClass('btnDisabled');
74
- } else {
75
- buttons.prev.addClass('btnDisabled');
76
- }
77
-
78
- //Next / Play
79
- if (obj.loop || obj.index < obj.group.length - 1) {
80
- buttons.next.removeClass('btnDisabled');
81
- buttons.play.removeClass('btnDisabled');
82
-
83
- } else {
84
- buttons.next.addClass('btnDisabled');
85
- buttons.play.addClass('btnDisabled');
86
- }
87
-
88
- this.buttons = buttons;
89
-
90
- this.onUpdate(opts, obj);
91
- },
92
-
93
- onUpdate: function (opts, obj) {
94
- var toggle;
95
-
96
- if (!this.buttons) {
97
- return;
98
- }
99
-
100
- toggle = this.buttons.toggle.removeClass('btnDisabled btnToggleOn');
101
-
102
- //Size toggle button
103
- if (obj.canShrink) {
104
- toggle.addClass('btnToggleOn');
105
-
106
- } else if (!obj.canExpand) {
107
- toggle.addClass('btnDisabled');
108
- }
109
- },
110
-
111
- beforeClose: function () {
112
- if (this.list) {
113
- this.list.remove();
114
- }
115
-
116
- this.list = null;
117
- this.buttons = null;
118
- }
119
- };
120
-
121
- }(jQuery));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
js/fancybox/helpers/jquery.fancybox-media.js DELETED
@@ -1,196 +0,0 @@
1
- /*!
2
- * Media helper for fancyBox
3
- * version: 1.0.5 (Tue, 23 Oct 2012)
4
- * @requires fancyBox v2.0 or later
5
- *
6
- * Usage:
7
- * $(".fancybox").fancybox({
8
- * helpers : {
9
- * media: true
10
- * }
11
- * });
12
- *
13
- * Set custom URL parameters:
14
- * $(".fancybox").fancybox({
15
- * helpers : {
16
- * media: {
17
- * youtube : {
18
- * params : {
19
- * autoplay : 0
20
- * }
21
- * }
22
- * }
23
- * }
24
- * });
25
- *
26
- * Or:
27
- * $(".fancybox").fancybox({,
28
- * helpers : {
29
- * media: true
30
- * },
31
- * youtube : {
32
- * autoplay: 0
33
- * }
34
- * });
35
- *
36
- * Supports:
37
- *
38
- * Youtube
39
- * http://www.youtube.com/watch?v=opj24KnzrWo
40
- * http://www.youtube.com/embed/opj24KnzrWo
41
- * http://youtu.be/opj24KnzrWo
42
- * Vimeo
43
- * http://vimeo.com/40648169
44
- * http://vimeo.com/channels/staffpicks/38843628
45
- * http://vimeo.com/groups/surrealism/videos/36516384
46
- * http://player.vimeo.com/video/45074303
47
- * Metacafe
48
- * http://www.metacafe.com/watch/7635964/dr_seuss_the_lorax_movie_trailer/
49
- * http://www.metacafe.com/watch/7635964/
50
- * Dailymotion
51
- * http://www.dailymotion.com/video/xoytqh_dr-seuss-the-lorax-premiere_people
52
- * Twitvid
53
- * http://twitvid.com/QY7MD
54
- * Twitpic
55
- * http://twitpic.com/7p93st
56
- * Instagram
57
- * http://instagr.am/p/IejkuUGxQn/
58
- * http://instagram.com/p/IejkuUGxQn/
59
- * Google maps
60
- * http://maps.google.com/maps?q=Eiffel+Tower,+Avenue+Gustave+Eiffel,+Paris,+France&t=h&z=17
61
- * http://maps.google.com/?ll=48.857995,2.294297&spn=0.007666,0.021136&t=m&z=16
62
- * 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
63
- */
64
- (function ($) {
65
- "use strict";
66
-
67
- //Shortcut for fancyBox object
68
- var F = $.fancybox,
69
- format = function( url, rez, params ) {
70
- params = params || '';
71
-
72
- if ( $.type( params ) === "object" ) {
73
- params = $.param(params, true);
74
- }
75
-
76
- $.each(rez, function(key, value) {
77
- url = url.replace( '$' + key, value || '' );
78
- });
79
-
80
- if (params.length) {
81
- url += ( url.indexOf('?') > 0 ? '&' : '?' ) + params;
82
- }
83
-
84
- return url;
85
- };
86
-
87
- //Add helper object
88
- F.helpers.media = {
89
- defaults : {
90
- youtube : {
91
- matcher : /(youtube\.com|youtu\.be)\/(watch\?v=|v\/|u\/|embed\/?)?(videoseries\?list=(.*)|[\w-]{11}|\?listType=(.*)&list=(.*)).*/i,
92
- params : {
93
- autoplay : 1,
94
- autohide : 1,
95
- fs : 1,
96
- rel : 0,
97
- hd : 1,
98
- wmode : 'opaque',
99
- enablejsapi : 1
100
- },
101
- type : 'iframe',
102
- url : '//www.youtube.com/embed/$3'
103
- },
104
- vimeo : {
105
- matcher : /(?:vimeo(?:pro)?.com)\/(?:[^\d]+)?(\d+)(?:.*)/,
106
- params : {
107
- autoplay : 1,
108
- hd : 1,
109
- show_title : 1,
110
- show_byline : 1,
111
- show_portrait : 0,
112
- fullscreen : 1
113
- },
114
- type : 'iframe',
115
- url : '//player.vimeo.com/video/$1'
116
- },
117
- metacafe : {
118
- matcher : /metacafe.com\/(?:watch|fplayer)\/([\w\-]{1,10})/,
119
- params : {
120
- autoPlay : 'yes'
121
- },
122
- type : 'swf',
123
- url : function( rez, params, obj ) {
124
- obj.swf.flashVars = 'playerVars=' + $.param( params, true );
125
-
126
- return '//www.metacafe.com/fplayer/' + rez[1] + '/.swf';
127
- }
128
- },
129
- dailymotion : {
130
- matcher : /dailymotion.com\/video\/(.*)\/?(.*)/,
131
- params : {
132
- additionalInfos : 0,
133
- autoStart : 1
134
- },
135
- type : 'swf',
136
- url : '//www.dailymotion.com/swf/video/$1'
137
- },
138
- twitvid : {
139
- matcher : /twitvid\.com\/([a-zA-Z0-9_\-\?\=]+)/i,
140
- params : {
141
- autoplay : 0
142
- },
143
- type : 'iframe',
144
- url : '//www.twitvid.com/embed.php?guid=$1'
145
- },
146
- twitpic : {
147
- matcher : /twitpic\.com\/(?!(?:place|photos|events)\/)([a-zA-Z0-9\?\=\-]+)/i,
148
- type : 'image',
149
- url : '//twitpic.com/show/full/$1/'
150
- },
151
- instagram : {
152
- matcher : /(instagr\.am|instagram\.com)\/p\/([a-zA-Z0-9_\-]+)\/?/i,
153
- type : 'image',
154
- url : '//$1/p/$2/media/'
155
- },
156
- google_maps : {
157
- matcher : /maps\.google\.([a-z]{2,3}(\.[a-z]{2})?)\/(\?ll=|maps\?)(.*)/i,
158
- type : 'iframe',
159
- url : function( rez ) {
160
- return '//maps.google.' + rez[1] + '/' + rez[3] + '' + rez[4] + '&output=' + (rez[4].indexOf('layer=c') > 0 ? 'svembed' : 'embed');
161
- }
162
- }
163
- },
164
-
165
- beforeLoad : function(opts, obj) {
166
- var url = obj.href || '',
167
- type = false,
168
- what,
169
- item,
170
- rez,
171
- params;
172
-
173
- for (what in opts) {
174
- item = opts[ what ];
175
- rez = url.match( item.matcher );
176
-
177
- if (rez) {
178
- type = item.type;
179
- params = $.extend(true, {}, item.params, obj[ what ] || ($.isPlainObject(opts[ what ]) ? opts[ what ].params : null));
180
-
181
- url = $.type( item.url ) === "function" ? item.url.call( this, rez, params, obj ) : format( item.url, rez, params );
182
-
183
- break;
184
- }
185
- }
186
-
187
- if (type) {
188
- obj.href = url;
189
- obj.type = type;
190
-
191
- obj.autoHeight = false;
192
- }
193
- }
194
- };
195
-
196
- }(jQuery));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
js/fancybox/helpers/jquery.fancybox-thumbs.css DELETED
@@ -1,54 +0,0 @@
1
- #fancybox-thumbs {
2
- position: fixed;
3
- left: 0;
4
- width: 100%;
5
- overflow: hidden;
6
- z-index: 8050;
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
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
js/fancybox/helpers/jquery.fancybox-thumbs.js DELETED
@@ -1,162 +0,0 @@
1
- /*!
2
- * Thumbnail helper for fancyBox
3
- * version: 1.0.7 (Mon, 01 Oct 2012)
4
- * @requires fancyBox v2.0 or later
5
- *
6
- * Usage:
7
- * $(".fancybox").fancybox({
8
- * helpers : {
9
- * thumbs: {
10
- * width : 50,
11
- * height : 50
12
- * }
13
- * }
14
- * });
15
- *
16
- */
17
- (function ($) {
18
- //Shortcut for fancyBox object
19
- var F = $.fancybox;
20
-
21
- //Add helper object
22
- F.helpers.thumbs = {
23
- defaults : {
24
- width : 50, // thumbnail width
25
- height : 50, // thumbnail height
26
- position : 'bottom', // 'top' or 'bottom'
27
- source : function ( item ) { // function to obtain the URL of the thumbnail image
28
- var href;
29
-
30
- if (item.element) {
31
- href = $(item.element).find('img').attr('src');
32
- }
33
-
34
- if (!href && item.type === 'image' && item.href) {
35
- href = item.href;
36
- }
37
-
38
- return href;
39
- }
40
- },
41
-
42
- wrap : null,
43
- list : null,
44
- width : 0,
45
-
46
- init: function (opts, obj) {
47
- var that = this,
48
- list,
49
- thumbWidth = opts.width,
50
- thumbHeight = opts.height,
51
- thumbSource = opts.source;
52
-
53
- //Build list structure
54
- list = '';
55
-
56
- for (var n = 0; n < obj.group.length; n++) {
57
- list += '<li><a style="width:' + thumbWidth + 'px;height:' + thumbHeight + 'px;" href="javascript:jQuery.fancybox.jumpto(' + n + ');"></a></li>';
58
- }
59
-
60
- this.wrap = $('<div id="fancybox-thumbs"></div>').addClass(opts.position).appendTo('body');
61
- this.list = $('<ul>' + list + '</ul>').appendTo(this.wrap);
62
-
63
- //Load each thumbnail
64
- $.each(obj.group, function (i) {
65
- var href = thumbSource( obj.group[ i ] );
66
-
67
- if (!href) {
68
- return;
69
- }
70
-
71
- $("<img />").load(function () {
72
- var width = this.width,
73
- height = this.height,
74
- widthRatio, heightRatio, parent;
75
-
76
- if (!that.list || !width || !height) {
77
- return;
78
- }
79
-
80
- //Calculate thumbnail width/height and center it
81
- widthRatio = width / thumbWidth;
82
- heightRatio = height / thumbHeight;
83
-
84
- parent = that.list.children().eq(i).find('a');
85
-
86
- if (widthRatio >= 1 && heightRatio >= 1) {
87
- if (widthRatio > heightRatio) {
88
- width = Math.floor(width / heightRatio);
89
- height = thumbHeight;
90
-
91
- } else {
92
- width = thumbWidth;
93
- height = Math.floor(height / widthRatio);
94
- }
95
- }
96
-
97
- $(this).css({
98
- width : width,
99
- height : height,
100
- top : Math.floor(thumbHeight / 2 - height / 2),
101
- left : Math.floor(thumbWidth / 2 - width / 2)
102
- });
103
-
104
- parent.width(thumbWidth).height(thumbHeight);
105
-
106
- $(this).hide().appendTo(parent).fadeIn(300);
107
-
108
- }).attr('src', href);
109
- });
110
-
111
- //Set initial width
112
- this.width = this.list.children().eq(0).outerWidth(true);
113
-
114
- this.list.width(this.width * (obj.group.length + 1)).css('left', Math.floor($(window).width() * 0.5 - (obj.index * this.width + this.width * 0.5)));
115
- },
116
-
117
- beforeLoad: function (opts, obj) {
118
- //Remove self if gallery do not have at least two items
119
- if (obj.group.length < 2) {
120
- obj.helpers.thumbs = false;
121
-
122
- return;
123
- }
124
-
125
- //Increase bottom margin to give space for thumbs
126
- obj.margin[ opts.position === 'top' ? 0 : 2 ] += ((opts.height) + 15);
127
- },
128
-
129
- afterShow: function (opts, obj) {
130
- //Check if exists and create or update list
131
- if (this.list) {
132
- this.onUpdate(opts, obj);
133
-
134
- } else {
135
- this.init(opts, obj);
136
- }
137
-
138
- //Set active element
139
- this.list.children().removeClass('active').eq(obj.index).addClass('active');
140
- },
141
-
142
- //Center list
143
- onUpdate: function (opts, obj) {
144
- if (this.list) {
145
- this.list.stop(true).animate({
146
- 'left': Math.floor($(window).width() * 0.5 - (obj.index * this.width + this.width * 0.5))
147
- }, 150);
148
- }
149
- },
150
-
151
- beforeClose: function () {
152
- if (this.wrap) {
153
- this.wrap.remove();
154
- }
155
-
156
- this.wrap = null;
157
- this.list = null;
158
- this.width = 0;
159
- }
160
- }
161
-
162
- }(jQuery));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
js/fancybox/jquery.fancybox.css DELETED
@@ -1,249 +0,0 @@
1
- /*! fancyBox v2.1.4 fancyapps.com | fancyapps.com/fancybox/#license */
2
- .fancybox-wrap,
3
- .fancybox-skin,
4
- .fancybox-outer,
5
- .fancybox-inner,
6
- .fancybox-image,
7
- .fancybox-wrap iframe,
8
- .fancybox-wrap object,
9
- .fancybox-nav,
10
- .fancybox-nav span,
11
- .fancybox-tmp
12
- {
13
- padding: 0;
14
- margin: 0;
15
- border: 0;
16
- outline: none;
17
- vertical-align: top;
18
- }
19
-
20
- .fancybox-wrap {
21
- position: absolute;
22
- top: 0;
23
- left: 0;
24
- z-index: 8020;
25
- }
26
-
27
- .fancybox-skin {
28
- position: relative;
29
- background: #f9f9f9;
30
- color: #444;
31
- text-shadow: none;
32
- -webkit-border-radius: 4px;
33
- -moz-border-radius: 4px;
34
- border-radius: 4px;
35
- }
36
-
37
- .fancybox-opened {
38
- z-index: 8030;
39
- }
40
-
41
- .fancybox-opened .fancybox-skin {
42
- -webkit-box-shadow: 0 10px 25px rgba(0, 0, 0, 0.5);
43
- -moz-box-shadow: 0 10px 25px rgba(0, 0, 0, 0.5);
44
- box-shadow: 0 10px 25px rgba(0, 0, 0, 0.5);
45
- }
46
-
47
- .fancybox-outer, .fancybox-inner {
48
- position: relative;
49
- }
50
-
51
- .fancybox-inner {
52
- overflow: hidden;
53
- }
54
-
55
- .fancybox-type-iframe .fancybox-inner {
56
- -webkit-overflow-scrolling: touch;
57
- }
58
-
59
- .fancybox-error {
60
- color: #444;
61
- font: 14px/20px "Helvetica Neue",Helvetica,Arial,sans-serif;
62
- margin: 0;
63
- padding: 15px;
64
- white-space: nowrap;
65
- }
66
-
67
- .fancybox-image, .fancybox-iframe {
68
- display: block;
69
- width: 100%;
70
- height: 100%;
71
- }
72
-
73
- .fancybox-image {
74
- max-width: 100%;
75
- max-height: 100%;
76
- }
77
-
78
- #fancybox-loading, .fancybox-close, .fancybox-prev span, .fancybox-next span {
79
- background-image: url('fancybox_sprite.png');
80
- }
81
-
82
- #fancybox-loading {
83
- position: fixed;
84
- top: 50%;
85
- left: 50%;
86
- margin-top: -22px;
87
- margin-left: -22px;
88
- background-position: 0 -108px;
89
- opacity: 0.8;
90
- cursor: pointer;
91
- z-index: 8060;
92
- }
93
-
94
- #fancybox-loading div {
95
- width: 44px;
96
- height: 44px;
97
- background: url('fancybox_loading.gif') center center no-repeat;
98
- }
99
-
100
- .fancybox-close {
101
- position: absolute;
102
- top: -18px;
103
- right: -18px;
104
- width: 36px;
105
- height: 36px;
106
- cursor: pointer;
107
- z-index: 8040;
108
- }
109
-
110
- .fancybox-nav {
111
- position: absolute;
112
- top: 0;
113
- width: 40%;
114
- height: 100%;
115
- cursor: pointer;
116
- text-decoration: none;
117
- background: transparent url('blank.gif'); /* helps IE */
118
- -webkit-tap-highlight-color: rgba(0,0,0,0);
119
- z-index: 8040;
120
- }
121
-
122
- .fancybox-prev {
123
- left: 0;
124
- }
125
-
126
- .fancybox-next {
127
- right: 0;
128
- }
129
-
130
- .fancybox-nav span {
131
- position: absolute;
132
- top: 50%;
133
- width: 36px;
134
- height: 34px;
135
- margin-top: -18px;
136
- cursor: pointer;
137
- z-index: 8040;
138
- visibility: hidden;
139
- }
140
-
141
- .fancybox-prev span {
142
- left: 10px;
143
- background-position: 0 -36px;
144
- }
145
-
146
- .fancybox-next span {
147
- right: 10px;
148
- background-position: 0 -72px;
149
- }
150
-
151
- .fancybox-nav:hover span {
152
- visibility: visible;
153
- }
154
-
155
- .fancybox-tmp {
156
- position: absolute;
157
- top: -99999px;
158
- left: -99999px;
159
- visibility: hidden;
160
- max-width: 99999px;
161
- max-height: 99999px;
162
- overflow: visible !important;
163
- }
164
-
165
- /* Overlay helper */
166
-
167
- .fancybox-lock {
168
- overflow: hidden;
169
- }
170
-
171
- .fancybox-overlay {
172
- position: absolute;
173
- top: 0;
174
- left: 0;
175
- overflow: hidden;
176
- display: none;
177
- z-index: 8010;
178
- background: url('fancybox_overlay.png');
179
- }
180
-
181
- .fancybox-overlay-fixed {
182
- position: fixed;
183
- bottom: 0;
184
- right: 0;
185
- }
186
-
187
- .fancybox-lock .fancybox-overlay {
188
- overflow: auto;
189
- overflow-y: scroll;
190
- }
191
-
192
- /* Title helper */
193
-
194
- .fancybox-title {
195
- visibility: hidden;
196
- font: normal 13px/20px "Helvetica Neue",Helvetica,Arial,sans-serif;
197
- position: relative;
198
- text-shadow: none;
199
- z-index: 8050;
200
- }
201
-
202
- .fancybox-opened .fancybox-title {
203
- visibility: visible;
204
- }
205
-
206
- .fancybox-title-float-wrap {
207
- position: absolute;
208
- bottom: 0;
209
- right: 50%;
210
- margin-bottom: -35px;
211
- z-index: 8050;
212
- text-align: center;
213
- }
214
-
215
- .fancybox-title-float-wrap .child {
216
- display: inline-block;
217
- margin-right: -100%;
218
- padding: 2px 20px;
219
- background: transparent; /* Fallback for web browsers that doesn't support RGBa */
220
- background: rgba(0, 0, 0, 0.8);
221
- -webkit-border-radius: 15px;
222
- -moz-border-radius: 15px;
223
- border-radius: 15px;
224
- text-shadow: 0 1px 2px #222;
225
- color: #FFF;
226
- font-weight: bold;
227
- line-height: 24px;
228
- white-space: nowrap;
229
- }
230
-
231
- .fancybox-title-outside-wrap {
232
- position: relative;
233
- margin-top: 10px;
234
- color: #fff;
235
- }
236
-
237
- .fancybox-title-inside-wrap {
238
- padding-top: 10px;
239
- }
240
-
241
- .fancybox-title-over-wrap {
242
- position: absolute;
243
- bottom: 0;
244
- left: 0;
245
- color: #fff;
246
- padding: 10px;
247
- background: #000;
248
- background: rgba(0, 0, 0, .8);
249
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
js/fancybox/jquery.fancybox.js DELETED
@@ -1,1983 +0,0 @@
1
- /*!
2
- * fancyBox - jQuery Plugin
3
- * version: 2.1.4 (Thu, 10 Jan 2013)
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
-
13
- (function (window, document, $, undefined) {
14
- "use strict";
15
-
16
- var W = $(window),
17
- D = $(document),
18
- F = $.fancybox = function () {
19
- F.open.apply( this, arguments );
20
- },
21
- IE = navigator.userAgent.match(/msie/),
22
- didUpdate = null,
23
- isTouch = document.createTouch !== undefined,
24
-
25
- isQuery = function(obj) {
26
- return obj && obj.hasOwnProperty && obj instanceof $;
27
- },
28
- isString = function(str) {
29
- return str && $.type(str) === "string";
30
- },
31
- isPercentage = function(str) {
32
- return isString(str) && str.indexOf('%') > 0;
33
- },
34
- isScrollable = function(el) {
35
- return (el && !(el.style.overflow && el.style.overflow === 'hidden') && ((el.clientWidth && el.scrollWidth > el.clientWidth) || (el.clientHeight && el.scrollHeight > el.clientHeight)));
36
- },
37
- getScalar = function(orig, dim) {
38
- var value = parseInt(orig, 10) || 0;
39
-
40
- if (dim && isPercentage(orig)) {
41
- value = F.getViewport()[ dim ] / 100 * value;
42
- }
43
-
44
- return Math.ceil(value);
45
- },
46
- getValue = function(value, dim) {
47
- return getScalar(value, dim) + 'px';
48
- };
49
-
50
- $.extend(F, {
51
- // The current version of fancyBox
52
- version: '2.1.4',
53
-
54
- defaults: {
55
- padding : 15,
56
- margin : 20,
57
-
58
- width : 800,
59
- height : 600,
60
- minWidth : 100,
61
- minHeight : 100,
62
- maxWidth : 9999,
63
- maxHeight : 9999,
64
-
65
- autoSize : true,
66
- autoHeight : false,
67
- autoWidth : false,
68
-
69
- autoResize : true,
70
- autoCenter : !isTouch,
71
- fitToView : true,
72
- aspectRatio : false,
73
- topRatio : 0.5,
74
- leftRatio : 0.5,
75
-
76
- scrolling : 'auto', // 'auto', 'yes' or 'no'
77
- wrapCSS : '',
78
-
79
- arrows : true,
80
- closeBtn : true,
81
- closeClick : false,
82
- nextClick : false,
83
- mouseWheel : true,
84
- autoPlay : false,
85
- playSpeed : 3000,
86
- preload : 3,
87
- modal : false,
88
- loop : true,
89
-
90
- ajax : {
91
- dataType : 'html',
92
- headers : { 'X-fancyBox': true }
93
- },
94
- iframe : {
95
- scrolling : 'auto',
96
- preload : true
97
- },
98
- swf : {
99
- wmode: 'transparent',
100
- allowfullscreen : 'true',
101
- allowscriptaccess : 'always'
102
- },
103
-
104
- keys : {
105
- next : {
106
- 13 : 'left', // enter
107
- 34 : 'up', // page down
108
- 39 : 'left', // right arrow
109
- 40 : 'up' // down arrow
110
- },
111
- prev : {
112
- 8 : 'right', // backspace
113
- 33 : 'down', // page up
114
- 37 : 'right', // left arrow
115
- 38 : 'down' // up arrow
116
- },
117
- close : [27], // escape key
118
- play : [32], // space - start/stop slideshow
119
- toggle : [70] // letter "f" - toggle fullscreen
120
- },
121
-
122
- direction : {
123
- next : 'left',
124
- prev : 'right'
125
- },
126
-
127
- scrollOutside : true,
128
-
129
- // Override some properties
130
- index : 0,
131
- type : null,
132
- href : null,
133
- content : null,
134
- title : null,
135
-
136
- // HTML templates
137
- tpl: {
138
- wrap : '<div class="fancybox-wrap" tabIndex="-1"><div class="fancybox-skin"><div class="fancybox-outer"><div class="fancybox-inner"></div></div></div></div>',
139
- image : '<img class="fancybox-image" src="{href}" alt="" />',
140
- iframe : '<iframe id="fancybox-frame{rnd}" name="fancybox-frame{rnd}" class="fancybox-iframe" frameborder="0" vspace="0" hspace="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen' + (IE ? ' allowtransparency="true"' : '') + '></iframe>',
141
- error : '<p class="fancybox-error">The requested content cannot be loaded.<br/>Please try again later.</p>',
142
- closeBtn : '<a title="Close" class="fancybox-item fancybox-close" href="javascript:;"></a>',
143
- next : '<a title="Next" class="fancybox-nav fancybox-next" href="javascript:;"><span></span></a>',
144
- prev : '<a title="Previous" class="fancybox-nav fancybox-prev" href="javascript:;"><span></span></a>'
145
- },
146
-
147
- // Properties for each animation type
148
- // Opening fancyBox
149
- openEffect : 'fade', // 'elastic', 'fade' or 'none'
150
- openSpeed : 250,
151
- openEasing : 'swing',
152
- openOpacity : true,
153
- openMethod : 'zoomIn',
154
-
155
- // Closing fancyBox
156
- closeEffect : 'fade', // 'elastic', 'fade' or 'none'
157
- closeSpeed : 250,
158
- closeEasing : 'swing',
159
- closeOpacity : true,
160
- closeMethod : 'zoomOut',
161
-
162
- // Changing next gallery item
163
- nextEffect : 'elastic', // 'elastic', 'fade' or 'none'
164
- nextSpeed : 250,
165
- nextEasing : 'swing',
166
- nextMethod : 'changeIn',
167
-
168
- // Changing previous gallery item
169
- prevEffect : 'elastic', // 'elastic', 'fade' or 'none'
170
- prevSpeed : 250,
171
- prevEasing : 'swing',
172
- prevMethod : 'changeOut',
173
-
174
- // Enable default helpers
175
- helpers : {
176
- overlay : true,
177
- title : true
178
- },
179
-
180
- // Callbacks
181
- onCancel : $.noop, // If canceling
182
- beforeLoad : $.noop, // Before loading
183
- afterLoad : $.noop, // After loading
184
- beforeShow : $.noop, // Before changing in current item
185
- afterShow : $.noop, // After opening
186
- beforeChange : $.noop, // Before changing gallery item
187
- beforeClose : $.noop, // Before closing
188
- afterClose : $.noop // After closing
189
- },
190
-
191
- //Current state
192
- group : {}, // Selected group
193
- opts : {}, // Group options
194
- previous : null, // Previous element
195
- coming : null, // Element being loaded
196
- current : null, // Currently loaded element
197
- isActive : false, // Is activated
198
- isOpen : false, // Is currently open
199
- isOpened : false, // Have been fully opened at least once
200
-
201
- wrap : null,
202
- skin : null,
203
- outer : null,
204
- inner : null,
205
-
206
- player : {
207
- timer : null,
208
- isActive : false
209
- },
210
-
211
- // Loaders
212
- ajaxLoad : null,
213
- imgPreload : null,
214
-
215
- // Some collections
216
- transitions : {},
217
- helpers : {},
218
-
219
- /*
220
- * Static methods
221
- */
222
-
223
- open: function (group, opts) {
224
- if (!group) {
225
- return;
226
- }
227
-
228
- if (!$.isPlainObject(opts)) {
229
- opts = {};
230
- }
231
-
232
- // Close if already active
233
- if (false === F.close(true)) {
234
- return;
235
- }
236
-
237
- // Normalize group
238
- if (!$.isArray(group)) {
239
- group = isQuery(group) ? $(group).get() : [group];
240
- }
241
-
242
- // Recheck if the type of each element is `object` and set content type (image, ajax, etc)
243
- $.each(group, function(i, element) {
244
- var obj = {},
245
- href,
246
- title,
247
- content,
248
- type,
249
- rez,
250
- hrefParts,
251
- selector;
252
-
253
- if ($.type(element) === "object") {
254
- // Check if is DOM element
255
- if (element.nodeType) {
256
- element = $(element);
257
- }
258
-
259
- if (isQuery(element)) {
260
- obj = {
261
- href : element.data('fancybox-href') || element.attr('href'),
262
- title : element.data('fancybox-title') || element.attr('title'),
263
- isDom : true,
264
- element : element
265
- };
266
-
267
- if ($.metadata) {
268
- $.extend(true, obj, element.metadata());
269
- }
270
-
271
- } else {
272
- obj = element;
273
- }
274
- }
275
-
276
- href = opts.href || obj.href || (isString(element) ? element : null);
277
- title = opts.title !== undefined ? opts.title : obj.title || '';
278
-
279
- content = opts.content || obj.content;
280
- type = content ? 'html' : (opts.type || obj.type);
281
-
282
- if (!type && obj.isDom) {
283
- type = element.data('fancybox-type');
284
-
285
- if (!type) {
286
- rez = element.prop('class').match(/fancybox\.(\w+)/);
287
- type = rez ? rez[1] : null;
288
- }
289
- }
290
-
291
- if (isString(href)) {
292
- // Try to guess the content type
293
- if (!type) {
294
- if (F.isImage(href)) {
295
- type = 'image';
296
-
297
- } else if (F.isSWF(href)) {
298
- type = 'swf';
299
-
300
- } else if (href.charAt(0) === '#') {
301
- type = 'inline';
302
-
303
- } else if (isString(element)) {
304
- type = 'html';
305
- content = element;
306
- }
307
- }
308
-
309
- // Split url into two pieces with source url and content selector, e.g,
310
- // "/mypage.html #my_id" will load "/mypage.html" and display element having id "my_id"
311
- if (type === 'ajax') {
312
- hrefParts = href.split(/\s+/, 2);
313
- href = hrefParts.shift();
314
- selector = hrefParts.shift();
315
- }
316
- }
317
-
318
- if (!content) {
319
- if (type === 'inline') {
320
- if (href) {
321
- content = $( isString(href) ? href.replace(/.*(?=#[^\s]+$)/, '') : href ); //strip for ie7
322
-
323
- } else if (obj.isDom) {
324
- content = element;
325
- }
326
-
327
- } else if (type === 'html') {
328
- content = href;
329
-
330
- } else if (!type && !href && obj.isDom) {
331
- type = 'inline';
332
- content = element;
333
- }
334
- }
335
-
336
- $.extend(obj, {
337
- href : href,
338
- type : type,
339
- content : content,
340
- title : title,
341
- selector : selector
342
- });
343
-
344
- group[ i ] = obj;
345
- });
346
-
347
- // Extend the defaults
348
- F.opts = $.extend(true, {}, F.defaults, opts);
349
-
350
- // All options are merged recursive except keys
351
- if (opts.keys !== undefined) {
352
- F.opts.keys = opts.keys ? $.extend({}, F.defaults.keys, opts.keys) : false;
353
- }
354
-
355
- F.group = group;
356
-
357
- return F._start(F.opts.index);
358
- },
359
-
360
- // Cancel image loading or abort ajax request
361
- cancel: function () {
362
- var coming = F.coming;
363
-
364
- if (!coming || false === F.trigger('onCancel')) {
365
- return;
366
- }
367
-
368
- F.hideLoading();
369
-
370
- if (F.ajaxLoad) {
371
- F.ajaxLoad.abort();
372
- }
373
-
374
- F.ajaxLoad = null;
375
-
376
- if (F.imgPreload) {
377
- F.imgPreload.onload = F.imgPreload.onerror = null;
378
- }
379
-
380
- if (coming.wrap) {
381
- coming.wrap.stop(true, true).trigger('onReset').remove();
382
- }
383
-
384
- F.coming = null;
385
-
386
- // If the first item has been canceled, then clear everything
387
- if (!F.current) {
388
- F._afterZoomOut( coming );
389
- }
390
- },
391
-
392
- // Start closing animation if is open; remove immediately if opening/closing
393
- close: function (event) {
394
- F.cancel();
395
-
396
- if (false === F.trigger('beforeClose')) {
397
- return;
398
- }
399
-
400
- F.unbindEvents();
401
-
402
- if (!F.isActive) {
403
- return;
404
- }
405
-
406
- if (!F.isOpen || event === true) {
407
- $('.fancybox-wrap').stop(true).trigger('onReset').remove();
408
-
409
- F._afterZoomOut();
410
-
411
- } else {
412
- F.isOpen = F.isOpened = false;
413
- F.isClosing = true;
414
-
415
- $('.fancybox-item, .fancybox-nav').remove();
416
-
417
- F.wrap.stop(true, true).removeClass('fancybox-opened');
418
-
419
- F.transitions[ F.current.closeMethod ]();
420
- }
421
- },
422
-
423
- // Manage slideshow:
424
- // $.fancybox.play(); - toggle slideshow
425
- // $.fancybox.play( true ); - start
426
- // $.fancybox.play( false ); - stop
427
- play: function ( action ) {
428
- var clear = function () {
429
- clearTimeout(F.player.timer);
430
- },
431
- set = function () {
432
- clear();
433
-
434
- if (F.current && F.player.isActive) {
435
- F.player.timer = setTimeout(F.next, F.current.playSpeed);
436
- }
437
- },
438
- stop = function () {
439
- clear();
440
-
441
- $('body').unbind('.player');
442
-
443
- F.player.isActive = false;
444
-
445
- F.trigger('onPlayEnd');
446
- },
447
- start = function () {
448
- if (F.current && (F.current.loop || F.current.index < F.group.length - 1)) {
449
- F.player.isActive = true;
450
-
451
- $('body').bind({
452
- 'afterShow.player onUpdate.player' : set,
453
- 'onCancel.player beforeClose.player' : stop,
454
- 'beforeLoad.player' : clear
455
- });
456
-
457
- set();
458
-
459
- F.trigger('onPlayStart');
460
- }
461
- };
462
-
463
- if (action === true || (!F.player.isActive && action !== false)) {
464
- start();
465
- } else {
466
- stop();
467
- }
468
- },
469
-
470
- // Navigate to next gallery item
471
- next: function ( direction ) {
472
- var current = F.current;
473
-
474
- if (current) {
475
- if (!isString(direction)) {
476
- direction = current.direction.next;
477
- }
478
-
479
- F.jumpto(current.index + 1, direction, 'next');
480
- }
481
- },
482
-
483
- // Navigate to previous gallery item
484
- prev: function ( direction ) {
485
- var current = F.current;
486
-
487
- if (current) {
488
- if (!isString(direction)) {
489
- direction = current.direction.prev;
490
- }
491
-
492
- F.jumpto(current.index - 1, direction, 'prev');
493
- }
494
- },
495
-
496
- // Navigate to gallery item by index
497
- jumpto: function ( index, direction, router ) {
498
- var current = F.current;
499
-
500
- if (!current) {
501
- return;
502
- }
503
-
504
- index = getScalar(index);
505
-
506
- F.direction = direction || current.direction[ (index >= current.index ? 'next' : 'prev') ];
507
- F.router = router || 'jumpto';
508
-
509
- if (current.loop) {
510
- if (index < 0) {
511
- index = current.group.length + (index % current.group.length);
512
- }
513
-
514
- index = index % current.group.length;
515
- }
516
-
517
- if (current.group[ index ] !== undefined) {
518
- F.cancel();
519
-
520
- F._start(index);
521
- }
522
- },
523
-
524
- // Center inside viewport and toggle position type to fixed or absolute if needed
525
- reposition: function (e, onlyAbsolute) {
526
- var current = F.current,
527
- wrap = current ? current.wrap : null,
528
- pos;
529
-
530
- if (wrap) {
531
- pos = F._getPosition(onlyAbsolute);
532
-
533
- if (e && e.type === 'scroll') {
534
- delete pos.position;
535
-
536
- wrap.stop(true, true).animate(pos, 200);
537
-
538
- } else {
539
- wrap.css(pos);
540
-
541
- current.pos = $.extend({}, current.dim, pos);
542
- }
543
- }
544
- },
545
-
546
- update: function (e) {
547
- var type = (e && e.type),
548
- anyway = !type || type === 'orientationchange';
549
-
550
- if (anyway) {
551
- clearTimeout(didUpdate);
552
-
553
- didUpdate = null;
554
- }
555
-
556
- if (!F.isOpen || didUpdate) {
557
- return;
558
- }
559
-
560
- didUpdate = setTimeout(function() {
561
- var current = F.current;
562
-
563
- if (!current || F.isClosing) {
564
- return;
565
- }
566
-
567
- F.wrap.removeClass('fancybox-tmp');
568
-
569
- if (anyway || type === 'load' || (type === 'resize' && current.autoResize)) {
570
- F._setDimension();
571
- }
572
-
573
- if (!(type === 'scroll' && current.canShrink)) {
574
- F.reposition(e);
575
- }
576
-
577
- F.trigger('onUpdate');
578
-
579
- didUpdate = null;
580
-
581
- }, (anyway && !isTouch ? 0 : 300));
582
- },
583
-
584
- // Shrink content to fit inside viewport or restore if resized
585
- toggle: function ( action ) {
586
- if (F.isOpen) {
587
- F.current.fitToView = $.type(action) === "boolean" ? action : !F.current.fitToView;
588
-
589
- // Help browser to restore document dimensions
590
- if (isTouch) {
591
- F.wrap.removeAttr('style').addClass('fancybox-tmp');
592
-
593
- F.trigger('onUpdate');
594
- }
595
-
596
- F.update();
597
- }
598
- },
599
-
600
- hideLoading: function () {
601
- D.unbind('.loading');
602
-
603
- $('#fancybox-loading').remove();
604
- },
605
-
606
- showLoading: function () {
607
- var el, viewport;
608
-
609
- F.hideLoading();
610
-
611
- el = $('<div id="fancybox-loading"><div></div></div>').click(F.cancel).appendTo('body');
612
-
613
- // If user will press the escape-button, the request will be canceled
614
- D.bind('keydown.loading', function(e) {
615
- if ((e.which || e.keyCode) === 27) {
616
- e.preventDefault();
617
-
618
- F.cancel();
619
- }
620
- });
621
-
622
- if (!F.defaults.fixed) {
623
- viewport = F.getViewport();
624
-
625
- el.css({
626
- position : 'absolute',
627
- top : (viewport.h * 0.5) + viewport.y,
628
- left : (viewport.w * 0.5) + viewport.x
629
- });
630
- }
631
- },
632
-
633
- getViewport: function () {
634
- var locked = (F.current && F.current.locked) || false,
635
- rez = {
636
- x: W.scrollLeft(),
637
- y: W.scrollTop()
638
- };
639
-
640
- if (locked) {
641
- rez.w = locked[0].clientWidth;
642
- rez.h = locked[0].clientHeight;
643
-
644
- } else {
645
- // See http://bugs.jquery.com/ticket/6724
646
- rez.w = isTouch && window.innerWidth ? window.innerWidth : W.width();
647
- rez.h = isTouch && window.innerHeight ? window.innerHeight : W.height();
648
- }
649
-
650
- return rez;
651
- },
652
-
653
- // Unbind the keyboard / clicking actions
654
- unbindEvents: function () {
655
- if (F.wrap && isQuery(F.wrap)) {
656
- F.wrap.unbind('.fb');
657
- }
658
-
659
- D.unbind('.fb');
660
- W.unbind('.fb');
661
- },
662
-
663
- bindEvents: function () {
664
- var current = F.current,
665
- keys;
666
-
667
- if (!current) {
668
- return;
669
- }
670
-
671
- // Changing document height on iOS devices triggers a 'resize' event,
672
- // that can change document height... repeating infinitely
673
- W.bind('orientationchange.fb' + (isTouch ? '' : ' resize.fb') + (current.autoCenter && !current.locked ? ' scroll.fb' : ''), F.update);
674
-
675
- keys = current.keys;
676
-
677
- if (keys) {
678
- D.bind('keydown.fb', function (e) {
679
- var code = e.which || e.keyCode,
680
- target = e.target || e.srcElement;
681
-
682
- // Skip esc key if loading, because showLoading will cancel preloading
683
- if (code === 27 && F.coming) {
684
- return false;
685
- }
686
-
687
- // Ignore key combinations and key events within form elements
688
- if (!e.ctrlKey && !e.altKey && !e.shiftKey && !e.metaKey && !(target && (target.type || $(target).is('[contenteditable]')))) {
689
- $.each(keys, function(i, val) {
690
- if (current.group.length > 1 && val[ code ] !== undefined) {
691
- F[ i ]( val[ code ] );
692
-
693
- e.preventDefault();
694
- return false;
695
- }
696
-
697
- if ($.inArray(code, val) > -1) {
698
- F[ i ] ();
699
-
700
- e.preventDefault();
701
- return false;
702
- }
703
- });
704
- }
705
- });
706
- }
707
-
708
- if ($.fn.mousewheel && current.mouseWheel) {
709
- F.wrap.bind('mousewheel.fb', function (e, delta, deltaX, deltaY) {
710
- var target = e.target || null,
711
- parent = $(target),
712
- canScroll = false;
713
-
714
- while (parent.length) {
715
- if (canScroll || parent.is('.fancybox-skin') || parent.is('.fancybox-wrap')) {
716
- break;
717
- }
718
-
719
- canScroll = isScrollable( parent[0] );
720
- parent = $(parent).parent();
721
- }
722
-
723
- if (delta !== 0 && !canScroll) {
724
- if (F.group.length > 1 && !current.canShrink) {
725
- if (deltaY > 0 || deltaX > 0) {
726
- F.prev( deltaY > 0 ? 'down' : 'left' );
727
-
728
- } else if (deltaY < 0 || deltaX < 0) {
729
- F.next( deltaY < 0 ? 'up' : 'right' );
730
- }
731
-
732
- e.preventDefault();
733
- }
734
- }
735
- });
736
- }
737
- },
738
-
739
- trigger: function (event, o) {
740
- var ret, obj = o || F.coming || F.current;
741
-
742
- if (!obj) {
743
- return;
744
- }
745
-
746
- if ($.isFunction( obj[event] )) {
747
- ret = obj[event].apply(obj, Array.prototype.slice.call(arguments, 1));
748
- }
749
-
750
- if (ret === false) {
751
- return false;
752
- }
753
-
754
- if (obj.helpers) {
755
- $.each(obj.helpers, function (helper, opts) {
756
- if (opts && F.helpers[helper] && $.isFunction(F.helpers[helper][event])) {
757
- opts = $.extend(true, {}, F.helpers[helper].defaults, opts);
758
-
759
- F.helpers[helper][event](opts, obj);
760
- }
761
- });
762
- }
763
-
764
- $.event.trigger(event + '.fb');
765
- },
766
-
767
- isImage: function (str) {
768
- return isString(str) && str.match(/(^data:image\/.*,)|(\.(jp(e|g|eg)|gif|png|bmp|webp)((\?|#).*)?$)/i);
769
- },
770
-
771
- isSWF: function (str) {
772
- return isString(str) && str.match(/\.(swf)((\?|#).*)?$/i);
773
- },
774
-
775
- _start: function (index) {
776
- var coming = {},
777
- obj,
778
- href,
779
- type,
780
- margin,
781
- padding;
782
-
783
- index = getScalar( index );
784
- obj = F.group[ index ] || null;
785
-
786
- if (!obj) {
787
- return false;
788
- }
789
-
790
- coming = $.extend(true, {}, F.opts, obj);
791
-
792
- // Convert margin and padding properties to array - top, right, bottom, left
793
- margin = coming.margin;
794
- padding = coming.padding;
795
-
796
- if ($.type(margin) === 'number') {
797
- coming.margin = [margin, margin, margin, margin];
798
- }
799
-
800
- if ($.type(padding) === 'number') {
801
- coming.padding = [padding, padding, padding, padding];
802
- }
803
-
804
- // 'modal' propery is just a shortcut
805
- if (coming.modal) {
806
- $.extend(true, coming, {
807
- closeBtn : false,
808
- closeClick : false,
809
- nextClick : false,
810
- arrows : false,
811
- mouseWheel : false,
812
- keys : null,
813
- helpers: {
814
- overlay : {
815
- closeClick : false
816
- }
817
- }
818
- });
819
- }
820
-
821
- // 'autoSize' property is a shortcut, too
822
- if (coming.autoSize) {
823
- coming.autoWidth = coming.autoHeight = true;
824
- }
825
-
826
- if (coming.width === 'auto') {
827
- coming.autoWidth = true;
828
- }
829
-
830
- if (coming.height === 'auto') {
831
- coming.autoHeight = true;
832
- }
833
-
834
- /*
835
- * Add reference to the group, so it`s possible to access from callbacks, example:
836
- * afterLoad : function() {
837
- * this.title = 'Image ' + (this.index + 1) + ' of ' + this.group.length + (this.title ? ' - ' + this.title : '');
838
- * }
839
- */
840
-
841
- coming.group = F.group;
842
- coming.index = index;
843
-
844
- // Give a chance for callback or helpers to update coming item (type, title, etc)
845
- F.coming = coming;
846
-
847
- if (false === F.trigger('beforeLoad')) {
848
- F.coming = null;
849
-
850
- return;
851
- }
852
-
853
- type = coming.type;
854
- href = coming.href;
855
-
856
- if (!type) {
857
- F.coming = null;
858
-
859
- //If we can not determine content type then drop silently or display next/prev item if looping through gallery
860
- if (F.current && F.router && F.router !== 'jumpto') {
861
- F.current.index = index;
862
-
863
- return F[ F.router ]( F.direction );
864
- }
865
-
866
- return false;
867
- }
868
-
869
- F.isActive = true;
870
-
871
- if (type === 'image' || type === 'swf') {
872
- coming.autoHeight = coming.autoWidth = false;
873
- coming.scrolling = 'visible';
874
- }
875
-
876
- if (type === 'image') {
877
- coming.aspectRatio = true;
878
- }
879
-
880
- if (type === 'iframe' && isTouch) {
881
- coming.scrolling = 'scroll';
882
- }
883
-
884
- // Build the neccessary markup
885
- coming.wrap = $(coming.tpl.wrap).addClass('fancybox-' + (isTouch ? 'mobile' : 'desktop') + ' fancybox-type-' + type + ' fancybox-tmp ' + coming.wrapCSS).appendTo( coming.parent || 'body' );
886
-
887
- $.extend(coming, {
888
- skin : $('.fancybox-skin', coming.wrap),
889
- outer : $('.fancybox-outer', coming.wrap),
890
- inner : $('.fancybox-inner', coming.wrap)
891
- });
892
-
893
- $.each(["Top", "Right", "Bottom", "Left"], function(i, v) {
894
- coming.skin.css('padding' + v, getValue(coming.padding[ i ]));
895
- });
896
-
897
- F.trigger('onReady');
898
-
899
- // Check before try to load; 'inline' and 'html' types need content, others - href
900
- if (type === 'inline' || type === 'html') {
901
- if (!coming.content || !coming.content.length) {
902
- return F._error( 'content' );
903
- }
904
-
905
- } else if (!href) {
906
- return F._error( 'href' );
907
- }
908
-
909
- if (type === 'image') {
910
- F._loadImage();
911
-
912
- } else if (type === 'ajax') {
913
- F._loadAjax();
914
-
915
- } else if (type === 'iframe') {
916
- F._loadIframe();
917
-
918
- } else {
919
- F._afterLoad();
920
- }
921
- },
922
-
923
- _error: function ( type ) {
924
- $.extend(F.coming, {
925
- type : 'html',
926
- autoWidth : true,
927
- autoHeight : true,
928
- minWidth : 0,
929
- minHeight : 0,
930
- scrolling : 'no',
931
- hasError : type,
932
- content : F.coming.tpl.error
933
- });
934
-
935
- F._afterLoad();
936
- },
937
-
938
- _loadImage: function () {
939
- // Reset preload image so it is later possible to check "complete" property
940
- var img = F.imgPreload = new Image();
941
-
942
- img.onload = function () {
943
- this.onload = this.onerror = null;
944
-
945
- F.coming.width = this.width;
946
- F.coming.height = this.height;
947
-
948
- F._afterLoad();
949
- };
950
-
951
- img.onerror = function () {
952
- this.onload = this.onerror = null;
953
-
954
- F._error( 'image' );
955
- };
956
-
957
- img.src = F.coming.href;
958
-
959
- if (img.complete !== true) {
960
- F.showLoading();
961
- }
962
- },
963
-
964
- _loadAjax: function () {
965
- var coming = F.coming;
966
-
967
- F.showLoading();
968
-
969
- F.ajaxLoad = $.ajax($.extend({}, coming.ajax, {
970
- url: coming.href,
971
- error: function (jqXHR, textStatus) {
972
- if (F.coming && textStatus !== 'abort') {
973
- F._error( 'ajax', jqXHR );
974
-
975
- } else {
976
- F.hideLoading();
977
- }
978
- },
979
- success: function (data, textStatus) {
980
- if (textStatus === 'success') {
981
- coming.content = data;
982
-
983
- F._afterLoad();
984
- }
985
- }
986
- }));
987
- },
988
-
989
- _loadIframe: function() {
990
- var coming = F.coming,
991
- iframe = $(coming.tpl.iframe.replace(/\{rnd\}/g, new Date().getTime()))
992
- .attr('scrolling', isTouch ? 'auto' : coming.iframe.scrolling)
993
- .attr('src', coming.href);
994
-
995
- // This helps IE
996
- $(coming.wrap).bind('onReset', function () {
997
- try {
998
- $(this).find('iframe').hide().attr('src', '//about:blank').end().empty();
999
- } catch (e) {}
1000
- });
1001
-
1002
- if (coming.iframe.preload) {
1003
- F.showLoading();
1004
-
1005
- iframe.one('load', function() {
1006
- $(this).data('ready', 1);
1007
-
1008
- // iOS will lose scrolling if we resize
1009
- if (!isTouch) {
1010
- $(this).bind('load.fb', F.update);
1011
- }
1012
-
1013
- // Without this trick:
1014
- // - iframe won't scroll on iOS devices
1015
- // - IE7 sometimes displays empty iframe
1016
- $(this).parents('.fancybox-wrap').width('100%').removeClass('fancybox-tmp').show();
1017
-
1018
- F._afterLoad();
1019
- });
1020
- }
1021
-
1022
- coming.content = iframe.appendTo( coming.inner );
1023
-
1024
- if (!coming.iframe.preload) {
1025
- F._afterLoad();
1026
- }
1027
- },
1028
-
1029
- _preloadImages: function() {
1030
- var group = F.group,
1031
- current = F.current,
1032
- len = group.length,
1033
- cnt = current.preload ? Math.min(current.preload, len - 1) : 0,
1034
- item,
1035
- i;
1036
-
1037
- for (i = 1; i <= cnt; i += 1) {
1038
- item = group[ (current.index + i ) % len ];
1039
-
1040
- if (item.type === 'image' && item.href) {
1041
- new Image().src = item.href;
1042
- }
1043
- }
1044
- },
1045
-
1046
- _afterLoad: function () {
1047
- var coming = F.coming,
1048
- previous = F.current,
1049
- placeholder = 'fancybox-placeholder',
1050
- current,
1051
- content,
1052
- type,
1053
- scrolling,
1054
- href,
1055
- embed;
1056
-
1057
- F.hideLoading();
1058
-
1059
- if (!coming || F.isActive === false) {
1060
- return;
1061
- }
1062
-
1063
- if (false === F.trigger('afterLoad', coming, previous)) {
1064
- coming.wrap.stop(true).trigger('onReset').remove();
1065
-
1066
- F.coming = null;
1067
-
1068
- return;
1069
- }
1070
-
1071
- if (previous) {
1072
- F.trigger('beforeChange', previous);
1073
-
1074
- previous.wrap.stop(true).removeClass('fancybox-opened')
1075
- .find('.fancybox-item, .fancybox-nav')
1076
- .remove();
1077
- }
1078
-
1079
- F.unbindEvents();
1080
-
1081
- current = coming;
1082
- content = coming.content;
1083
- type = coming.type;
1084
- scrolling = coming.scrolling;
1085
-
1086
- $.extend(F, {
1087
- wrap : current.wrap,
1088
- skin : current.skin,
1089
- outer : current.outer,
1090
- inner : current.inner,
1091
- current : current,
1092
- previous : previous
1093
- });
1094
-
1095
- href = current.href;
1096
-
1097
- switch (type) {
1098
- case 'inline':
1099
- case 'ajax':
1100
- case 'html':
1101
- if (current.selector) {
1102
- content = $('<div>').html(content).find(current.selector);
1103
-
1104
- } else if (isQuery(content)) {
1105
- if (!content.data(placeholder)) {
1106
- content.data(placeholder, $('<div class="' + placeholder + '"></div>').insertAfter( content ).hide() );
1107
- }
1108
-
1109
- content = content.show().detach();
1110
-
1111
- current.wrap.bind('onReset', function () {
1112
- if ($(this).find(content).length) {
1113
- content.hide().replaceAll( content.data(placeholder) ).data(placeholder, false);
1114
- }
1115
- });
1116
- }
1117
- break;
1118
-
1119
- case 'image':
1120
- content = current.tpl.image.replace('{href}', href);
1121
- break;
1122
-
1123
- case 'swf':
1124
- content = '<object id="fancybox-swf" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="100%" height="100%"><param name="movie" value="' + href + '"></param>';
1125
- embed = '';
1126
-
1127
- $.each(current.swf, function(name, val) {
1128
- content += '<param name="' + name + '" value="' + val + '"></param>';
1129
- embed += ' ' + name + '="' + val + '"';
1130
- });
1131
-
1132
- content += '<embed src="' + href + '" type="application/x-shockwave-flash" width="100%" height="100%"' + embed + '></embed></object>';
1133
- break;
1134
- }
1135
-
1136
- if (!(isQuery(content) && content.parent().is(current.inner))) {
1137
- current.inner.append( content );
1138
- }
1139
-
1140
- // Give a chance for helpers or callbacks to update elements
1141
- F.trigger('beforeShow');
1142
-
1143
- // Set scrolling before calculating dimensions
1144
- current.inner.css('overflow', scrolling === 'yes' ? 'scroll' : (scrolling === 'no' ? 'hidden' : scrolling));
1145
-
1146
- // Set initial dimensions and start position
1147
- F._setDimension();
1148
-
1149
- F.reposition();
1150
-
1151
- F.isOpen = false;
1152
- F.coming = null;
1153
-
1154
- F.bindEvents();
1155
-
1156
- if (!F.isOpened) {
1157
- $('.fancybox-wrap').not( current.wrap ).stop(true).trigger('onReset').remove();
1158
-
1159
- } else if (previous.prevMethod) {
1160
- F.transitions[ previous.prevMethod ]();
1161
- }
1162
-
1163
- F.transitions[ F.isOpened ? current.nextMethod : current.openMethod ]();
1164
-
1165
- F._preloadImages();
1166
- },
1167
-
1168
- _setDimension: function () {
1169
- var viewport = F.getViewport(),
1170
- steps = 0,
1171
- canShrink = false,
1172
- canExpand = false,
1173
- wrap = F.wrap,
1174
- skin = F.skin,
1175
- inner = F.inner,
1176
- current = F.current,
1177
- width = current.width,
1178
- height = current.height,
1179
- minWidth = current.minWidth,
1180
- minHeight = current.minHeight,
1181
- maxWidth = current.maxWidth,
1182
- maxHeight = current.maxHeight,
1183
- scrolling = current.scrolling,
1184
- scrollOut = current.scrollOutside ? current.scrollbarWidth : 0,
1185
- margin = current.margin,
1186
- wMargin = getScalar(margin[1] + margin[3]),
1187
- hMargin = getScalar(margin[0] + margin[2]),
1188
- wPadding,
1189
- hPadding,
1190
- wSpace,
1191
- hSpace,
1192
- origWidth,
1193
- origHeight,
1194
- origMaxWidth,
1195
- origMaxHeight,
1196
- ratio,
1197
- width_,
1198
- height_,
1199
- maxWidth_,
1200
- maxHeight_,
1201
- iframe,
1202
- body;
1203
-
1204
- // Reset dimensions so we could re-check actual size
1205
- wrap.add(skin).add(inner).width('auto').height('auto').removeClass('fancybox-tmp');
1206
-
1207
- wPadding = getScalar(skin.outerWidth(true) - skin.width());
1208
- hPadding = getScalar(skin.outerHeight(true) - skin.height());
1209
-
1210
- // Any space between content and viewport (margin, padding, border, title)
1211
- wSpace = wMargin + wPadding;
1212
- hSpace = hMargin + hPadding;
1213
-
1214
- origWidth = isPercentage(width) ? (viewport.w - wSpace) * getScalar(width) / 100 : width;
1215
- origHeight = isPercentage(height) ? (viewport.h - hSpace) * getScalar(height) / 100 : height;
1216
-
1217
- if (current.type === 'iframe') {
1218
- iframe = current.content;
1219
-
1220
- if (current.autoHeight && iframe.data('ready') === 1) {
1221
- try {
1222
- if (iframe[0].contentWindow.document.location) {
1223
- inner.width( origWidth ).height(9999);
1224
-
1225
- body = iframe.contents().find('body');
1226
-
1227
- if (scrollOut) {
1228
- body.css('overflow-x', 'hidden');
1229
- }
1230
-
1231
- origHeight = body.height();
1232
- }
1233
-
1234
- } catch (e) {}
1235
- }
1236
-
1237
- } else if (current.autoWidth || current.autoHeight) {
1238
- inner.addClass( 'fancybox-tmp' );
1239
-
1240
- // Set width or height in case we need to calculate only one dimension
1241
- if (!current.autoWidth) {
1242
- inner.width( origWidth );
1243
- }
1244
-
1245
- if (!current.autoHeight) {
1246
- inner.height( origHeight );
1247
- }
1248
-
1249
- if (current.autoWidth) {
1250
- origWidth = inner.width();
1251
- }
1252
-
1253
- if (current.autoHeight) {
1254
- origHeight = inner.height();
1255
- }
1256
-
1257
- inner.removeClass( 'fancybox-tmp' );
1258
- }
1259
-
1260
- width = getScalar( origWidth );
1261
- height = getScalar( origHeight );
1262
-
1263
- ratio = origWidth / origHeight;
1264
-
1265
- // Calculations for the content
1266
- minWidth = getScalar(isPercentage(minWidth) ? getScalar(minWidth, 'w') - wSpace : minWidth);
1267
- maxWidth = getScalar(isPercentage(maxWidth) ? getScalar(maxWidth, 'w') - wSpace : maxWidth);
1268
-
1269
- minHeight = getScalar(isPercentage(minHeight) ? getScalar(minHeight, 'h') - hSpace : minHeight);
1270
- maxHeight = getScalar(isPercentage(maxHeight) ? getScalar(maxHeight, 'h') - hSpace : maxHeight);
1271
-
1272
- // These will be used to determine if wrap can fit in the viewport
1273
- origMaxWidth = maxWidth;
1274
- origMaxHeight = maxHeight;
1275
-
1276
- if (current.fitToView) {
1277
- maxWidth = Math.min(viewport.w - wSpace, maxWidth);
1278
- maxHeight = Math.min(viewport.h - hSpace, maxHeight);
1279
- }
1280
-
1281
- maxWidth_ = viewport.w - wMargin;
1282
- maxHeight_ = viewport.h - hMargin;
1283
-
1284
- if (current.aspectRatio) {
1285
- if (width > maxWidth) {
1286
- width = maxWidth;
1287
- height = getScalar(width / ratio);
1288
- }
1289
-
1290
- if (height > maxHeight) {
1291
- height = maxHeight;
1292
- width = getScalar(height * ratio);
1293
- }
1294
-
1295
- if (width < minWidth) {
1296
- width = minWidth;
1297
- height = getScalar(width / ratio);
1298
- }
1299
-
1300
- if (height < minHeight) {
1301
- height = minHeight;
1302
- width = getScalar(height * ratio);
1303
- }
1304
-
1305
- } else {
1306
- width = Math.max(minWidth, Math.min(width, maxWidth));
1307
-
1308
- if (current.autoHeight && current.type !== 'iframe') {
1309
- inner.width( width );
1310
-
1311
- height = inner.height();
1312
- }
1313
-
1314
- height = Math.max(minHeight, Math.min(height, maxHeight));
1315
- }
1316
-
1317
- // Try to fit inside viewport (including the title)
1318
- if (current.fitToView) {
1319
- inner.width( width ).height( height );
1320
-
1321
- wrap.width( width + wPadding );
1322
-
1323
- // Real wrap dimensions
1324
- width_ = wrap.width();
1325
- height_ = wrap.height();
1326
-
1327
- if (current.aspectRatio) {
1328
- while ((width_ > maxWidth_ || height_ > maxHeight_) && width > minWidth && height > minHeight) {
1329
- if (steps++ > 19) {
1330
- break;
1331
- }
1332
-
1333
- height = Math.max(minHeight, Math.min(maxHeight, height - 10));
1334
- width = getScalar(height * ratio);
1335
-
1336
- if (width < minWidth) {
1337
- width = minWidth;
1338
- height = getScalar(width / ratio);
1339
- }
1340
-
1341
- if (width > maxWidth) {
1342
- width = maxWidth;
1343
- height = getScalar(width / ratio);
1344
- }
1345
-
1346
- inner.width( width ).height( height );
1347
-
1348
- wrap.width( width + wPadding );
1349
-
1350
- width_ = wrap.width();
1351
- height_ = wrap.height();
1352
- }
1353
-
1354
- } else {
1355
- width = Math.max(minWidth, Math.min(width, width - (width_ - maxWidth_)));
1356
- height = Math.max(minHeight, Math.min(height, height - (height_ - maxHeight_)));
1357
- }
1358
- }
1359
-
1360
- if (scrollOut && scrolling === 'auto' && height < origHeight && (width + wPadding + scrollOut) < maxWidth_) {
1361
- width += scrollOut;
1362
- }
1363
-
1364
- inner.width( width ).height( height );
1365
-
1366
- wrap.width( width + wPadding );
1367
-
1368
- width_ = wrap.width();
1369
- height_ = wrap.height();
1370
-
1371
- canShrink = (width_ > maxWidth_ || height_ > maxHeight_) && width > minWidth && height > minHeight;
1372
- canExpand = current.aspectRatio ? (width < origMaxWidth && height < origMaxHeight && width < origWidth && height < origHeight) : ((width < origMaxWidth || height < origMaxHeight) && (width < origWidth || height < origHeight));
1373
-
1374
- $.extend(current, {
1375
- dim : {
1376
- width : getValue( width_ ),
1377
- height : getValue( height_ )
1378
- },
1379
- origWidth : origWidth,
1380
- origHeight : origHeight,
1381
- canShrink : canShrink,
1382
- canExpand : canExpand,
1383
- wPadding : wPadding,
1384
- hPadding : hPadding,
1385
- wrapSpace : height_ - skin.outerHeight(true),
1386
- skinSpace : skin.height() - height
1387
- });
1388
-
1389
- if (!iframe && current.autoHeight && height > minHeight && height < maxHeight && !canExpand) {
1390
- inner.height('auto');
1391
- }
1392
- },
1393
-
1394
- _getPosition: function (onlyAbsolute) {
1395
- var current = F.current,
1396
- viewport = F.getViewport(),
1397
- margin = current.margin,
1398
- width = F.wrap.width() + margin[1] + margin[3],
1399
- height = F.wrap.height() + margin[0] + margin[2],
1400
- rez = {
1401
- position: 'absolute',
1402
- top : margin[0],
1403
- left : margin[3]
1404
- };
1405
-
1406
- if (current.autoCenter && current.fixed && !onlyAbsolute && height <= viewport.h && width <= viewport.w) {
1407
- rez.position = 'fixed';
1408
-
1409
- } else if (!current.locked) {
1410
- rez.top += viewport.y;
1411
- rez.left += viewport.x;
1412
- }
1413
-
1414
- rez.top = getValue(Math.max(rez.top, rez.top + ((viewport.h - height) * current.topRatio)));
1415
- rez.left = getValue(Math.max(rez.left, rez.left + ((viewport.w - width) * current.leftRatio)));
1416
-
1417
- return rez;
1418
- },
1419
-
1420
- _afterZoomIn: function () {
1421
- var current = F.current;
1422
-
1423
- if (!current) {
1424
- return;
1425
- }
1426
-
1427
- F.isOpen = F.isOpened = true;
1428
-
1429
- F.wrap.css('overflow', 'visible').addClass('fancybox-opened');
1430
-
1431
- F.update();
1432
-
1433
- // Assign a click event
1434
- if ( current.closeClick || (current.nextClick && F.group.length > 1) ) {
1435
- F.inner.css('cursor', 'pointer').bind('click.fb', function(e) {
1436
- if (!$(e.target).is('a') && !$(e.target).parent().is('a')) {
1437
- e.preventDefault();
1438
-
1439
- F[ current.closeClick ? 'close' : 'next' ]();
1440
- }
1441
- });
1442
- }
1443
-
1444
- // Create a close button
1445
- if (current.closeBtn) {
1446
- $(current.tpl.closeBtn).appendTo(F.skin).bind('click.fb', function(e) {
1447
- e.preventDefault();
1448
-
1449
- F.close();
1450
- });
1451
- }
1452
-
1453
- // Create navigation arrows
1454
- if (current.arrows && F.group.length > 1) {
1455
- if (current.loop || current.index > 0) {
1456
- $(current.tpl.prev).appendTo(F.outer).bind('click.fb', F.prev);
1457
- }
1458
-
1459
- if (current.loop || current.index < F.group.length - 1) {
1460
- $(current.tpl.next).appendTo(F.outer).bind('click.fb', F.next);
1461
- }
1462
- }
1463
-
1464
- F.trigger('afterShow');
1465
-
1466
- // Stop the slideshow if this is the last item
1467
- if (!current.loop && current.index === current.group.length - 1) {
1468
- F.play( false );
1469
-
1470
- } else if (F.opts.autoPlay && !F.player.isActive) {
1471
- F.opts.autoPlay = false;
1472
-
1473
- F.play();
1474
- }
1475
- },
1476
-
1477
- _afterZoomOut: function ( obj ) {
1478
- obj = obj || F.current;
1479
-
1480
- $('.fancybox-wrap').trigger('onReset').remove();
1481
-
1482
- $.extend(F, {
1483
- group : {},
1484
- opts : {},
1485
- router : false,
1486
- current : null,
1487
- isActive : false,
1488
- isOpened : false,
1489
- isOpen : false,
1490
- isClosing : false,
1491
- wrap : null,
1492
- skin : null,
1493
- outer : null,
1494
- inner : null
1495
- });
1496
-
1497
- F.trigger('afterClose', obj);
1498
- }
1499
- });
1500
-
1501
- /*
1502
- * Default transitions
1503
- */
1504
-
1505
- F.transitions = {
1506
- getOrigPosition: function () {
1507
- var current = F.current,
1508
- element = current.element,
1509
- orig = current.orig,
1510
- pos = {},
1511
- width = 50,
1512
- height = 50,
1513
- hPadding = current.hPadding,
1514
- wPadding = current.wPadding,
1515
- viewport = F.getViewport();
1516
-
1517
- if (!orig && current.isDom && element.is(':visible')) {
1518
- orig = element.find('img:first');
1519
-
1520
- if (!orig.length) {
1521
- orig = element;
1522
- }
1523
- }
1524
-
1525
- if (isQuery(orig)) {
1526
- pos = orig.offset();
1527
-
1528
- if (orig.is('img')) {
1529
- width = orig.outerWidth();
1530
- height = orig.outerHeight();
1531
- }
1532
-
1533
- } else {
1534
- pos.top = viewport.y + (viewport.h - height) * current.topRatio;
1535
- pos.left = viewport.x + (viewport.w - width) * current.leftRatio;
1536
- }
1537
-
1538
- if (F.wrap.css('position') === 'fixed' || current.locked) {
1539
- pos.top -= viewport.y;
1540
- pos.left -= viewport.x;
1541
- }
1542
-
1543
- pos = {
1544
- top : getValue(pos.top - hPadding * current.topRatio),
1545
- left : getValue(pos.left - wPadding * current.leftRatio),
1546
- width : getValue(width + wPadding),
1547
- height : getValue(height + hPadding)
1548
- };
1549
-
1550
- return pos;
1551
- },
1552
-
1553
- step: function (now, fx) {
1554
- var ratio,
1555
- padding,
1556
- value,
1557
- prop = fx.prop,
1558
- current = F.current,
1559
- wrapSpace = current.wrapSpace,
1560
- skinSpace = current.skinSpace;
1561
-
1562
- if (prop === 'width' || prop === 'height') {
1563
- ratio = fx.end === fx.start ? 1 : (now - fx.start) / (fx.end - fx.start);
1564
-
1565
- if (F.isClosing) {
1566
- ratio = 1 - ratio;
1567
- }
1568
-
1569
- padding = prop === 'width' ? current.wPadding : current.hPadding;
1570
- value = now - padding;
1571
-
1572
- F.skin[ prop ]( getScalar( prop === 'width' ? value : value - (wrapSpace * ratio) ) );
1573
- F.inner[ prop ]( getScalar( prop === 'width' ? value : value - (wrapSpace * ratio) - (skinSpace * ratio) ) );
1574
- }
1575
- },
1576
-
1577
- zoomIn: function () {
1578
- var current = F.current,
1579
- startPos = current.pos,
1580
- effect = current.openEffect,
1581
- elastic = effect === 'elastic',
1582
- endPos = $.extend({opacity : 1}, startPos);
1583
-
1584
- // Remove "position" property that breaks older IE
1585
- delete endPos.position;
1586
-
1587
- if (elastic) {
1588
- startPos = this.getOrigPosition();
1589
-
1590
- if (current.openOpacity) {
1591
- startPos.opacity = 0.1;
1592
- }
1593
-
1594
- } else if (effect === 'fade') {
1595
- startPos.opacity = 0.1;
1596
- }
1597
-
1598
- F.wrap.css(startPos).animate(endPos, {
1599
- duration : effect === 'none' ? 0 : current.openSpeed,
1600
- easing : current.openEasing,
1601
- step : elastic ? this.step : null,
1602
- complete : F._afterZoomIn
1603
- });
1604
- },
1605
-
1606
- zoomOut: function () {
1607
- var current = F.current,
1608
- effect = current.closeEffect,
1609
- elastic = effect === 'elastic',
1610
- endPos = {opacity : 0.1};
1611
-
1612
- if (elastic) {
1613
- endPos = this.getOrigPosition();
1614
-
1615
- if (current.closeOpacity) {
1616
- endPos.opacity = 0.1;
1617
- }
1618
- }
1619
-
1620
- F.wrap.animate(endPos, {
1621
- duration : effect === 'none' ? 0 : current.closeSpeed,
1622
- easing : current.closeEasing,
1623
- step : elastic ? this.step : null,
1624
- complete : F._afterZoomOut
1625
- });
1626
- },
1627
-
1628
- changeIn: function () {
1629
- var current = F.current,
1630
- effect = current.nextEffect,
1631
- startPos = current.pos,
1632
- endPos = { opacity : 1 },
1633
- direction = F.direction,
1634
- distance = 200,
1635
- field;
1636
-
1637
- startPos.opacity = 0.1;
1638
-
1639
- if (effect === 'elastic') {
1640
- field = direction === 'down' || direction === 'up' ? 'top' : 'left';
1641
-
1642
- if (direction === 'down' || direction === 'right') {
1643
- startPos[ field ] = getValue(getScalar(startPos[ field ]) - distance);
1644
- endPos[ field ] = '+=' + distance + 'px';
1645
-
1646
- } else {
1647
- startPos[ field ] = getValue(getScalar(startPos[ field ]) + distance);
1648
- endPos[ field ] = '-=' + distance + 'px';
1649
- }
1650
- }
1651
-
1652
- // Workaround for http://bugs.jquery.com/ticket/12273
1653
- if (effect === 'none') {
1654
- F._afterZoomIn();
1655
-
1656
- } else {
1657
- F.wrap.css(startPos).animate(endPos, {
1658
- duration : current.nextSpeed,
1659
- easing : current.nextEasing,
1660
- complete : F._afterZoomIn
1661
- });
1662
- }
1663
- },
1664
-
1665
- changeOut: function () {
1666
- var previous = F.previous,
1667
- effect = previous.prevEffect,
1668
- endPos = { opacity : 0.1 },
1669
- direction = F.direction,
1670
- distance = 200;
1671
-
1672
- if (effect === 'elastic') {
1673
- endPos[ direction === 'down' || direction === 'up' ? 'top' : 'left' ] = ( direction === 'up' || direction === 'left' ? '-' : '+' ) + '=' + distance + 'px';
1674
- }
1675
-
1676
- previous.wrap.animate(endPos, {
1677
- duration : effect === 'none' ? 0 : previous.prevSpeed,
1678
- easing : previous.prevEasing,
1679
- complete : function () {
1680
- $(this).trigger('onReset').remove();
1681
- }
1682
- });
1683
- }
1684
- };
1685
-
1686
- /*
1687
- * Overlay helper
1688
- */
1689
-
1690
- F.helpers.overlay = {
1691
- defaults : {
1692
- closeClick : true, // if true, fancyBox will be closed when user clicks on the overlay
1693
- speedOut : 200, // duration of fadeOut animation
1694
- showEarly : true, // indicates if should be opened immediately or wait until the content is ready
1695
- css : {}, // custom CSS properties
1696
- locked : !isTouch, // if true, the content will be locked into overlay
1697
- fixed : true // if false, the overlay CSS position property will not be set to "fixed"
1698
- },
1699
-
1700
- overlay : null, // current handle
1701
- fixed : false, // indicates if the overlay has position "fixed"
1702
-
1703
- // Public methods
1704
- create : function(opts) {
1705
- opts = $.extend({}, this.defaults, opts);
1706
-
1707
- if (this.overlay) {
1708
- this.close();
1709
- }
1710
-
1711
- this.overlay = $('<div class="fancybox-overlay"></div>').appendTo( 'body' );
1712
- this.fixed = false;
1713
-
1714
- if (opts.fixed && F.defaults.fixed) {
1715
- this.overlay.addClass('fancybox-overlay-fixed');
1716
-
1717
- this.fixed = true;
1718
- }
1719
- },
1720
-
1721
- open : function(opts) {
1722
- var that = this;
1723
-
1724
- opts = $.extend({}, this.defaults, opts);
1725
-
1726
- if (this.overlay) {
1727
- this.overlay.unbind('.overlay').width('auto').height('auto');
1728
-
1729
- } else {
1730
- this.create(opts);
1731
- }
1732
-
1733
- if (!this.fixed) {
1734
- W.bind('resize.overlay', $.proxy( this.update, this) );
1735
-
1736
- this.update();
1737
- }
1738
-
1739
- if (opts.closeClick) {
1740
- this.overlay.bind('click.overlay', function(e) {
1741
- if ($(e.target).hasClass('fancybox-overlay')) {
1742
- if (F.isActive) {
1743
- F.close();
1744
- } else {
1745
- that.close();
1746
- }
1747
- }
1748
- });
1749
- }
1750
-
1751
- this.overlay.css( opts.css ).show();
1752
- },
1753
-
1754
- close : function() {
1755
- $('.fancybox-overlay').remove();
1756
-
1757
- W.unbind('resize.overlay');
1758
-
1759
- this.overlay = null;
1760
-
1761
- if (this.margin !== false) {
1762
- $('body').css('margin-right', this.margin);
1763
-
1764
- this.margin = false;
1765
- }
1766
-
1767
- if (this.el) {
1768
- this.el.removeClass('fancybox-lock');
1769
- }
1770
- },
1771
-
1772
- // Private, callbacks
1773
-
1774
- update : function () {
1775
- var width = '100%', offsetWidth;
1776
-
1777
- // Reset width/height so it will not mess
1778
- this.overlay.width(width).height('100%');
1779
-
1780
- // jQuery does not return reliable result for IE
1781
- if (IE) {
1782
- offsetWidth = Math.max(document.documentElement.offsetWidth, document.body.offsetWidth);
1783
-
1784
- if (D.width() > offsetWidth) {
1785
- width = D.width();
1786
- }
1787
-
1788
- } else if (D.width() > W.width()) {
1789
- width = D.width();
1790
- }
1791
-
1792
- this.overlay.width(width).height(D.height());
1793
- },
1794
-
1795
- // This is where we can manipulate DOM, because later it would cause iframes to reload
1796
- onReady : function (opts, obj) {
1797
- $('.fancybox-overlay').stop(true, true);
1798
-
1799
- if (!this.overlay) {
1800
- this.margin = D.height() > W.height() || $('body').css('overflow-y') === 'scroll' ? $('body').css('margin-right') : false;
1801
- this.el = document.all && !document.querySelector ? $('html') : $('body');
1802
-
1803
- this.create(opts);
1804
- }
1805
-
1806
- if (opts.locked && this.fixed) {
1807
- obj.locked = this.overlay.append( obj.wrap );
1808
- obj.fixed = false;
1809
- }
1810
-
1811
- if (opts.showEarly === true) {
1812
- this.beforeShow.apply(this, arguments);
1813
- }
1814
- },
1815
-
1816
- beforeShow : function(opts, obj) {
1817
- if (obj.locked) {
1818
- this.el.addClass('fancybox-lock');
1819
-
1820
- if (this.margin !== false) {
1821
- $('body').css('margin-right', getScalar( this.margin ) + obj.scrollbarWidth);
1822
- }
1823
- }
1824
-
1825
- this.open(opts);
1826
- },
1827
-
1828
- onUpdate : function() {
1829
- if (!this.fixed) {
1830
- this.update();
1831
- }
1832
- },
1833
-
1834
- afterClose: function (opts) {
1835
- // Remove overlay if exists and fancyBox is not opening
1836
- // (e.g., it is not being open using afterClose callback)
1837
- if (this.overlay && !F.isActive) {
1838
- this.overlay.fadeOut(opts.speedOut, $.proxy( this.close, this ));
1839
- }
1840
- }
1841
- };
1842
-
1843
- /*
1844
- * Title helper
1845
- */
1846
-
1847
- F.helpers.title = {
1848
- defaults : {
1849
- type : 'float', // 'float', 'inside', 'outside' or 'over',
1850
- position : 'bottom' // 'top' or 'bottom'
1851
- },
1852
-
1853
- beforeShow: function (opts) {
1854
- var current = F.current,
1855
- text = current.title,
1856
- type = opts.type,
1857
- title,
1858
- target;
1859
-
1860
- if ($.isFunction(text)) {
1861
- text = text.call(current.element, current);
1862
- }
1863
-
1864
- if (!isString(text) || $.trim(text) === '') {
1865
- return;
1866
- }
1867
-
1868
- title = $('<div class="fancybox-title fancybox-title-' + type + '-wrap">' + text + '</div>');
1869
-
1870
- switch (type) {
1871
- case 'inside':
1872
- target = F.skin;
1873
- break;
1874
-
1875
- case 'outside':
1876
- target = F.wrap;
1877
- break;
1878
-
1879
- case 'over':
1880
- target = F.inner;
1881
- break;
1882
-
1883
- default: // 'float'
1884
- target = F.skin;
1885
-
1886
- title.appendTo('body');
1887
-
1888
- if (IE) {
1889
- title.width( title.width() );
1890
- }
1891
-
1892
- title.wrapInner('<span class="child"></span>');
1893
-
1894
- //Increase bottom margin so this title will also fit into viewport
1895
- F.current.margin[2] += Math.abs( getScalar(title.css('margin-bottom')) );
1896
- break;
1897
- }
1898
-
1899
- title[ (opts.position === 'top' ? 'prependTo' : 'appendTo') ](target);
1900
- }
1901
- };
1902
-
1903
- // jQuery plugin initialization
1904
- $.fn.fancybox = function (options) {
1905
- var index,
1906
- that = $(this),
1907
- selector = this.selector || '',
1908
- run = function(e) {
1909
- var what = $(this).blur(), idx = index, relType, relVal;
1910
-
1911
- if (!(e.ctrlKey || e.altKey || e.shiftKey || e.metaKey) && !what.is('.fancybox-wrap')) {
1912
- relType = options.groupAttr || 'data-fancybox-group';
1913
- relVal = what.attr(relType);
1914
-
1915
- if (!relVal) {
1916
- relType = 'rel';
1917
- relVal = what.get(0)[ relType ];
1918
- }
1919
-
1920
- if (relVal && relVal !== '' && relVal !== 'nofollow') {
1921
- what = selector.length ? $(selector) : that;
1922
- what = what.filter('[' + relType + '="' + relVal + '"]');
1923
- idx = what.index(this);
1924
- }
1925
-
1926
- options.index = idx;
1927
-
1928
- // Stop an event from bubbling if everything is fine
1929
- if (F.open(what, options) !== false) {
1930
- e.preventDefault();
1931
- }
1932
- }
1933
- };
1934
-
1935
- options = options || {};
1936
- index = options.index || 0;
1937
-
1938
- if (!selector || options.live === false) {
1939
- that.unbind('click.fb-start').bind('click.fb-start', run);
1940
-
1941
- } else {
1942
- D.undelegate(selector, 'click.fb-start').delegate(selector + ":not('.fancybox-item, .fancybox-nav')", 'click.fb-start', run);
1943
- }
1944
-
1945
- this.filter('[data-fancybox-start=1]').trigger('click');
1946
-
1947
- return this;
1948
- };
1949
-
1950
- // Tests that need a body at doc ready
1951
- D.ready(function() {
1952
- if ( $.scrollbarWidth === undefined ) {
1953
- // http://benalman.com/projects/jquery-misc-plugins/#scrollbarwidth
1954
- $.scrollbarWidth = function() {
1955
- var parent = $('<div style="width:50px;height:50px;overflow:auto"><div/></div>').appendTo('body'),
1956
- child = parent.children(),
1957
- width = child.innerWidth() - child.height( 99 ).innerWidth();
1958
-
1959
- parent.remove();
1960
-
1961
- return width;
1962
- };
1963
- }
1964
-
1965
- if ( $.support.fixedPosition === undefined ) {
1966
- $.support.fixedPosition = (function() {
1967
- var elem = $('<div style="position:fixed;top:20px;"></div>').appendTo('body'),
1968
- fixed = ( elem[0].offsetTop === 20 || elem[0].offsetTop === 15 );
1969
-
1970
- elem.remove();
1971
-
1972
- return fixed;
1973
- }());
1974
- }
1975
-
1976
- $.extend(F.defaults, {
1977
- scrollbarWidth : $.scrollbarWidth(),
1978
- fixed : $.support.fixedPosition,
1979
- parent : $('body')
1980
- });
1981
- });
1982
-
1983
- }(window, document, jQuery));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
js/fancybox/jquery.fancybox.pack.js DELETED
@@ -1,45 +0,0 @@
1
- /*! fancyBox v2.1.4 fancyapps.com | fancyapps.com/fancybox/#license */
2
- (function(C,z,f,r){var q=f(C),n=f(z),b=f.fancybox=function(){b.open.apply(this,arguments)},H=navigator.userAgent.match(/msie/),w=null,s=z.createTouch!==r,t=function(a){return a&&a.hasOwnProperty&&a instanceof f},p=function(a){return a&&"string"===f.type(a)},F=function(a){return p(a)&&0<a.indexOf("%")},l=function(a,d){var e=parseInt(a,10)||0;d&&F(a)&&(e*=b.getViewport()[d]/100);return Math.ceil(e)},x=function(a,b){return l(a,b)+"px"};f.extend(b,{version:"2.1.4",defaults:{padding:15,margin:20,width:800,
3
- height:600,minWidth:100,minHeight:100,maxWidth:9999,maxHeight:9999,autoSize:!0,autoHeight:!1,autoWidth:!1,autoResize:!0,autoCenter:!s,fitToView:!0,aspectRatio:!1,topRatio:0.5,leftRatio:0.5,scrolling:"auto",wrapCSS:"",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}},iframe:{scrolling:"auto",preload:!0},swf:{wmode:"transparent",allowfullscreen:"true",allowscriptaccess:"always"},keys:{next:{13:"left",
4
- 34:"up",39:"left",40:"up"},prev:{8:"right",33:"down",37:"right",38:"down"},close:[27],play:[32],toggle:[70]},direction:{next:"left",prev:"right"},scrollOutside:!0,index:0,type:null,href:null,content:null,title:null,tpl:{wrap:'<div class="fancybox-wrap" tabIndex="-1"><div class="fancybox-skin"><div class="fancybox-outer"><div class="fancybox-inner"></div></div></div></div>',image:'<img class="fancybox-image" src="{href}" alt="" />',iframe:'<iframe id="fancybox-frame{rnd}" name="fancybox-frame{rnd}" class="fancybox-iframe" frameborder="0" vspace="0" hspace="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen'+
5
- (H?' allowtransparency="true"':"")+"></iframe>",error:'<p class="fancybox-error">The requested content cannot be loaded.<br/>Please try again later.</p>',closeBtn:'<a title="Close" class="fancybox-item fancybox-close" href="javascript:;"></a>',next:'<a title="Next" class="fancybox-nav fancybox-next" href="javascript:;"><span></span></a>',prev:'<a title="Previous" class="fancybox-nav fancybox-prev" href="javascript:;"><span></span></a>'},openEffect:"fade",openSpeed:250,openEasing:"swing",openOpacity:!0,
6
- openMethod:"zoomIn",closeEffect:"fade",closeSpeed:250,closeEasing:"swing",closeOpacity:!0,closeMethod:"zoomOut",nextEffect:"elastic",nextSpeed:250,nextEasing:"swing",nextMethod:"changeIn",prevEffect:"elastic",prevSpeed:250,prevEasing:"swing",prevMethod:"changeOut",helpers:{overlay:!0,title:!0},onCancel:f.noop,beforeLoad:f.noop,afterLoad:f.noop,beforeShow:f.noop,afterShow:f.noop,beforeChange:f.noop,beforeClose:f.noop,afterClose:f.noop},group:{},opts:{},previous:null,coming:null,current:null,isActive:!1,
7
- isOpen:!1,isOpened:!1,wrap:null,skin:null,outer:null,inner:null,player:{timer:null,isActive:!1},ajaxLoad:null,imgPreload:null,transitions:{},helpers:{},open:function(a,d){if(a&&(f.isPlainObject(d)||(d={}),!1!==b.close(!0)))return f.isArray(a)||(a=t(a)?f(a).get():[a]),f.each(a,function(e,c){var k={},g,h,j,m,l;"object"===f.type(c)&&(c.nodeType&&(c=f(c)),t(c)?(k={href:c.data("fancybox-href")||c.attr("href"),title:c.data("fancybox-title")||c.attr("title"),isDom:!0,element:c},f.metadata&&f.extend(!0,k,
8
- c.metadata())):k=c);g=d.href||k.href||(p(c)?c:null);h=d.title!==r?d.title:k.title||"";m=(j=d.content||k.content)?"html":d.type||k.type;!m&&k.isDom&&(m=c.data("fancybox-type"),m||(m=(m=c.prop("class").match(/fancybox\.(\w+)/))?m[1]:null));p(g)&&(m||(b.isImage(g)?m="image":b.isSWF(g)?m="swf":"#"===g.charAt(0)?m="inline":p(c)&&(m="html",j=c)),"ajax"===m&&(l=g.split(/\s+/,2),g=l.shift(),l=l.shift()));j||("inline"===m?g?j=f(p(g)?g.replace(/.*(?=#[^\s]+$)/,""):g):k.isDom&&(j=c):"html"===m?j=g:!m&&(!g&&
9
- k.isDom)&&(m="inline",j=c));f.extend(k,{href:g,type:m,content:j,title:h,selector:l});a[e]=k}),b.opts=f.extend(!0,{},b.defaults,d),d.keys!==r&&(b.opts.keys=d.keys?f.extend({},b.defaults.keys,d.keys):!1),b.group=a,b._start(b.opts.index)},cancel:function(){var a=b.coming;a&&!1!==b.trigger("onCancel")&&(b.hideLoading(),b.ajaxLoad&&b.ajaxLoad.abort(),b.ajaxLoad=null,b.imgPreload&&(b.imgPreload.onload=b.imgPreload.onerror=null),a.wrap&&a.wrap.stop(!0,!0).trigger("onReset").remove(),b.coming=null,b.current||
10
- b._afterZoomOut(a))},close:function(a){b.cancel();!1!==b.trigger("beforeClose")&&(b.unbindEvents(),b.isActive&&(!b.isOpen||!0===a?(f(".fancybox-wrap").stop(!0).trigger("onReset").remove(),b._afterZoomOut()):(b.isOpen=b.isOpened=!1,b.isClosing=!0,f(".fancybox-item, .fancybox-nav").remove(),b.wrap.stop(!0,!0).removeClass("fancybox-opened"),b.transitions[b.current.closeMethod]())))},play:function(a){var d=function(){clearTimeout(b.player.timer)},e=function(){d();b.current&&b.player.isActive&&(b.player.timer=
11
- setTimeout(b.next,b.current.playSpeed))},c=function(){d();f("body").unbind(".player");b.player.isActive=!1;b.trigger("onPlayEnd")};if(!0===a||!b.player.isActive&&!1!==a){if(b.current&&(b.current.loop||b.current.index<b.group.length-1))b.player.isActive=!0,f("body").bind({"afterShow.player onUpdate.player":e,"onCancel.player beforeClose.player":c,"beforeLoad.player":d}),e(),b.trigger("onPlayStart")}else c()},next:function(a){var d=b.current;d&&(p(a)||(a=d.direction.next),b.jumpto(d.index+1,a,"next"))},
12
- prev:function(a){var d=b.current;d&&(p(a)||(a=d.direction.prev),b.jumpto(d.index-1,a,"prev"))},jumpto:function(a,d,e){var c=b.current;c&&(a=l(a),b.direction=d||c.direction[a>=c.index?"next":"prev"],b.router=e||"jumpto",c.loop&&(0>a&&(a=c.group.length+a%c.group.length),a%=c.group.length),c.group[a]!==r&&(b.cancel(),b._start(a)))},reposition:function(a,d){var e=b.current,c=e?e.wrap:null,k;c&&(k=b._getPosition(d),a&&"scroll"===a.type?(delete k.position,c.stop(!0,!0).animate(k,200)):(c.css(k),e.pos=f.extend({},
13
- e.dim,k)))},update:function(a){var d=a&&a.type,e=!d||"orientationchange"===d;e&&(clearTimeout(w),w=null);b.isOpen&&!w&&(w=setTimeout(function(){var c=b.current;c&&!b.isClosing&&(b.wrap.removeClass("fancybox-tmp"),(e||"load"===d||"resize"===d&&c.autoResize)&&b._setDimension(),"scroll"===d&&c.canShrink||b.reposition(a),b.trigger("onUpdate"),w=null)},e&&!s?0:300))},toggle:function(a){b.isOpen&&(b.current.fitToView="boolean"===f.type(a)?a:!b.current.fitToView,s&&(b.wrap.removeAttr("style").addClass("fancybox-tmp"),
14
- b.trigger("onUpdate")),b.update())},hideLoading:function(){n.unbind(".loading");f("#fancybox-loading").remove()},showLoading:function(){var a,d;b.hideLoading();a=f('<div id="fancybox-loading"><div></div></div>').click(b.cancel).appendTo("body");n.bind("keydown.loading",function(a){if(27===(a.which||a.keyCode))a.preventDefault(),b.cancel()});b.defaults.fixed||(d=b.getViewport(),a.css({position:"absolute",top:0.5*d.h+d.y,left:0.5*d.w+d.x}))},getViewport:function(){var a=b.current&&b.current.locked||
15
- !1,d={x:q.scrollLeft(),y:q.scrollTop()};a?(d.w=a[0].clientWidth,d.h=a[0].clientHeight):(d.w=s&&C.innerWidth?C.innerWidth:q.width(),d.h=s&&C.innerHeight?C.innerHeight:q.height());return d},unbindEvents:function(){b.wrap&&t(b.wrap)&&b.wrap.unbind(".fb");n.unbind(".fb");q.unbind(".fb")},bindEvents:function(){var a=b.current,d;a&&(q.bind("orientationchange.fb"+(s?"":" resize.fb")+(a.autoCenter&&!a.locked?" scroll.fb":""),b.update),(d=a.keys)&&n.bind("keydown.fb",function(e){var c=e.which||e.keyCode,k=
16
- e.target||e.srcElement;if(27===c&&b.coming)return!1;!e.ctrlKey&&(!e.altKey&&!e.shiftKey&&!e.metaKey&&(!k||!k.type&&!f(k).is("[contenteditable]")))&&f.each(d,function(d,k){if(1<a.group.length&&k[c]!==r)return b[d](k[c]),e.preventDefault(),!1;if(-1<f.inArray(c,k))return b[d](),e.preventDefault(),!1})}),f.fn.mousewheel&&a.mouseWheel&&b.wrap.bind("mousewheel.fb",function(d,c,k,g){for(var h=f(d.target||null),j=!1;h.length&&!j&&!h.is(".fancybox-skin")&&!h.is(".fancybox-wrap");)j=h[0]&&!(h[0].style.overflow&&
17
- "hidden"===h[0].style.overflow)&&(h[0].clientWidth&&h[0].scrollWidth>h[0].clientWidth||h[0].clientHeight&&h[0].scrollHeight>h[0].clientHeight),h=f(h).parent();if(0!==c&&!j&&1<b.group.length&&!a.canShrink){if(0<g||0<k)b.prev(0<g?"down":"left");else if(0>g||0>k)b.next(0>g?"up":"right");d.preventDefault()}}))},trigger:function(a,d){var e,c=d||b.coming||b.current;if(c){f.isFunction(c[a])&&(e=c[a].apply(c,Array.prototype.slice.call(arguments,1)));if(!1===e)return!1;c.helpers&&f.each(c.helpers,function(d,
18
- e){e&&(b.helpers[d]&&f.isFunction(b.helpers[d][a]))&&(e=f.extend(!0,{},b.helpers[d].defaults,e),b.helpers[d][a](e,c))});f.event.trigger(a+".fb")}},isImage:function(a){return p(a)&&a.match(/(^data:image\/.*,)|(\.(jp(e|g|eg)|gif|png|bmp|webp)((\?|#).*)?$)/i)},isSWF:function(a){return p(a)&&a.match(/\.(swf)((\?|#).*)?$/i)},_start:function(a){var d={},e,c;a=l(a);e=b.group[a]||null;if(!e)return!1;d=f.extend(!0,{},b.opts,e);e=d.margin;c=d.padding;"number"===f.type(e)&&(d.margin=[e,e,e,e]);"number"===f.type(c)&&
19
- (d.padding=[c,c,c,c]);d.modal&&f.extend(!0,d,{closeBtn:!1,closeClick:!1,nextClick:!1,arrows:!1,mouseWheel:!1,keys:null,helpers:{overlay:{closeClick:!1}}});d.autoSize&&(d.autoWidth=d.autoHeight=!0);"auto"===d.width&&(d.autoWidth=!0);"auto"===d.height&&(d.autoHeight=!0);d.group=b.group;d.index=a;b.coming=d;if(!1===b.trigger("beforeLoad"))b.coming=null;else{c=d.type;e=d.href;if(!c)return b.coming=null,b.current&&b.router&&"jumpto"!==b.router?(b.current.index=a,b[b.router](b.direction)):!1;b.isActive=
20
- !0;if("image"===c||"swf"===c)d.autoHeight=d.autoWidth=!1,d.scrolling="visible";"image"===c&&(d.aspectRatio=!0);"iframe"===c&&s&&(d.scrolling="scroll");d.wrap=f(d.tpl.wrap).addClass("fancybox-"+(s?"mobile":"desktop")+" fancybox-type-"+c+" fancybox-tmp "+d.wrapCSS).appendTo(d.parent||"body");f.extend(d,{skin:f(".fancybox-skin",d.wrap),outer:f(".fancybox-outer",d.wrap),inner:f(".fancybox-inner",d.wrap)});f.each(["Top","Right","Bottom","Left"],function(a,b){d.skin.css("padding"+b,x(d.padding[a]))});b.trigger("onReady");
21
- if("inline"===c||"html"===c){if(!d.content||!d.content.length)return b._error("content")}else if(!e)return b._error("href");"image"===c?b._loadImage():"ajax"===c?b._loadAjax():"iframe"===c?b._loadIframe():b._afterLoad()}},_error:function(a){f.extend(b.coming,{type:"html",autoWidth:!0,autoHeight:!0,minWidth:0,minHeight:0,scrolling:"no",hasError:a,content:b.coming.tpl.error});b._afterLoad()},_loadImage:function(){var a=b.imgPreload=new Image;a.onload=function(){this.onload=this.onerror=null;b.coming.width=
22
- this.width;b.coming.height=this.height;b._afterLoad()};a.onerror=function(){this.onload=this.onerror=null;b._error("image")};a.src=b.coming.href;!0!==a.complete&&b.showLoading()},_loadAjax:function(){var a=b.coming;b.showLoading();b.ajaxLoad=f.ajax(f.extend({},a.ajax,{url:a.href,error:function(a,e){b.coming&&"abort"!==e?b._error("ajax",a):b.hideLoading()},success:function(d,e){"success"===e&&(a.content=d,b._afterLoad())}}))},_loadIframe:function(){var a=b.coming,d=f(a.tpl.iframe.replace(/\{rnd\}/g,
23
- (new Date).getTime())).attr("scrolling",s?"auto":a.iframe.scrolling).attr("src",a.href);f(a.wrap).bind("onReset",function(){try{f(this).find("iframe").hide().attr("src","//about:blank").end().empty()}catch(a){}});a.iframe.preload&&(b.showLoading(),d.one("load",function(){f(this).data("ready",1);s||f(this).bind("load.fb",b.update);f(this).parents(".fancybox-wrap").width("100%").removeClass("fancybox-tmp").show();b._afterLoad()}));a.content=d.appendTo(a.inner);a.iframe.preload||b._afterLoad()},_preloadImages:function(){var a=
24
- b.group,d=b.current,e=a.length,c=d.preload?Math.min(d.preload,e-1):0,f,g;for(g=1;g<=c;g+=1)f=a[(d.index+g)%e],"image"===f.type&&f.href&&((new Image).src=f.href)},_afterLoad:function(){var a=b.coming,d=b.current,e,c,k,g,h;b.hideLoading();if(a&&!1!==b.isActive)if(!1===b.trigger("afterLoad",a,d))a.wrap.stop(!0).trigger("onReset").remove(),b.coming=null;else{d&&(b.trigger("beforeChange",d),d.wrap.stop(!0).removeClass("fancybox-opened").find(".fancybox-item, .fancybox-nav").remove());b.unbindEvents();
25
- e=a.content;c=a.type;k=a.scrolling;f.extend(b,{wrap:a.wrap,skin:a.skin,outer:a.outer,inner:a.inner,current:a,previous:d});g=a.href;switch(c){case "inline":case "ajax":case "html":a.selector?e=f("<div>").html(e).find(a.selector):t(e)&&(e.data("fancybox-placeholder")||e.data("fancybox-placeholder",f('<div class="fancybox-placeholder"></div>').insertAfter(e).hide()),e=e.show().detach(),a.wrap.bind("onReset",function(){f(this).find(e).length&&e.hide().replaceAll(e.data("fancybox-placeholder")).data("fancybox-placeholder",
26
- !1)}));break;case "image":e=a.tpl.image.replace("{href}",g);break;case "swf":e='<object id="fancybox-swf" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="100%" height="100%"><param name="movie" value="'+g+'"></param>',h="",f.each(a.swf,function(a,b){e+='<param name="'+a+'" value="'+b+'"></param>';h+=" "+a+'="'+b+'"'}),e+='<embed src="'+g+'" type="application/x-shockwave-flash" width="100%" height="100%"'+h+"></embed></object>"}(!t(e)||!e.parent().is(a.inner))&&a.inner.append(e);b.trigger("beforeShow");
27
- a.inner.css("overflow","yes"===k?"scroll":"no"===k?"hidden":k);b._setDimension();b.reposition();b.isOpen=!1;b.coming=null;b.bindEvents();if(b.isOpened){if(d.prevMethod)b.transitions[d.prevMethod]()}else f(".fancybox-wrap").not(a.wrap).stop(!0).trigger("onReset").remove();b.transitions[b.isOpened?a.nextMethod:a.openMethod]();b._preloadImages()}},_setDimension:function(){var a=b.getViewport(),d=0,e=!1,c=!1,e=b.wrap,k=b.skin,g=b.inner,h=b.current,c=h.width,j=h.height,m=h.minWidth,u=h.minHeight,n=h.maxWidth,
28
- v=h.maxHeight,s=h.scrolling,q=h.scrollOutside?h.scrollbarWidth:0,y=h.margin,p=l(y[1]+y[3]),r=l(y[0]+y[2]),z,A,t,D,B,G,C,E,w;e.add(k).add(g).width("auto").height("auto").removeClass("fancybox-tmp");y=l(k.outerWidth(!0)-k.width());z=l(k.outerHeight(!0)-k.height());A=p+y;t=r+z;D=F(c)?(a.w-A)*l(c)/100:c;B=F(j)?(a.h-t)*l(j)/100:j;if("iframe"===h.type){if(w=h.content,h.autoHeight&&1===w.data("ready"))try{w[0].contentWindow.document.location&&(g.width(D).height(9999),G=w.contents().find("body"),q&&G.css("overflow-x",
29
- "hidden"),B=G.height())}catch(H){}}else if(h.autoWidth||h.autoHeight)g.addClass("fancybox-tmp"),h.autoWidth||g.width(D),h.autoHeight||g.height(B),h.autoWidth&&(D=g.width()),h.autoHeight&&(B=g.height()),g.removeClass("fancybox-tmp");c=l(D);j=l(B);E=D/B;m=l(F(m)?l(m,"w")-A:m);n=l(F(n)?l(n,"w")-A:n);u=l(F(u)?l(u,"h")-t:u);v=l(F(v)?l(v,"h")-t:v);G=n;C=v;h.fitToView&&(n=Math.min(a.w-A,n),v=Math.min(a.h-t,v));A=a.w-p;r=a.h-r;h.aspectRatio?(c>n&&(c=n,j=l(c/E)),j>v&&(j=v,c=l(j*E)),c<m&&(c=m,j=l(c/E)),j<u&&
30
- (j=u,c=l(j*E))):(c=Math.max(m,Math.min(c,n)),h.autoHeight&&"iframe"!==h.type&&(g.width(c),j=g.height()),j=Math.max(u,Math.min(j,v)));if(h.fitToView)if(g.width(c).height(j),e.width(c+y),a=e.width(),p=e.height(),h.aspectRatio)for(;(a>A||p>r)&&(c>m&&j>u)&&!(19<d++);)j=Math.max(u,Math.min(v,j-10)),c=l(j*E),c<m&&(c=m,j=l(c/E)),c>n&&(c=n,j=l(c/E)),g.width(c).height(j),e.width(c+y),a=e.width(),p=e.height();else c=Math.max(m,Math.min(c,c-(a-A))),j=Math.max(u,Math.min(j,j-(p-r)));q&&("auto"===s&&j<B&&c+y+
31
- q<A)&&(c+=q);g.width(c).height(j);e.width(c+y);a=e.width();p=e.height();e=(a>A||p>r)&&c>m&&j>u;c=h.aspectRatio?c<G&&j<C&&c<D&&j<B:(c<G||j<C)&&(c<D||j<B);f.extend(h,{dim:{width:x(a),height:x(p)},origWidth:D,origHeight:B,canShrink:e,canExpand:c,wPadding:y,hPadding:z,wrapSpace:p-k.outerHeight(!0),skinSpace:k.height()-j});!w&&(h.autoHeight&&j>u&&j<v&&!c)&&g.height("auto")},_getPosition:function(a){var d=b.current,e=b.getViewport(),c=d.margin,f=b.wrap.width()+c[1]+c[3],g=b.wrap.height()+c[0]+c[2],c={position:"absolute",
32
- top:c[0],left:c[3]};d.autoCenter&&d.fixed&&!a&&g<=e.h&&f<=e.w?c.position="fixed":d.locked||(c.top+=e.y,c.left+=e.x);c.top=x(Math.max(c.top,c.top+(e.h-g)*d.topRatio));c.left=x(Math.max(c.left,c.left+(e.w-f)*d.leftRatio));return c},_afterZoomIn:function(){var a=b.current;a&&(b.isOpen=b.isOpened=!0,b.wrap.css("overflow","visible").addClass("fancybox-opened"),b.update(),(a.closeClick||a.nextClick&&1<b.group.length)&&b.inner.css("cursor","pointer").bind("click.fb",function(d){!f(d.target).is("a")&&!f(d.target).parent().is("a")&&
33
- (d.preventDefault(),b[a.closeClick?"close":"next"]())}),a.closeBtn&&f(a.tpl.closeBtn).appendTo(b.skin).bind("click.fb",function(a){a.preventDefault();b.close()}),a.arrows&&1<b.group.length&&((a.loop||0<a.index)&&f(a.tpl.prev).appendTo(b.outer).bind("click.fb",b.prev),(a.loop||a.index<b.group.length-1)&&f(a.tpl.next).appendTo(b.outer).bind("click.fb",b.next)),b.trigger("afterShow"),!a.loop&&a.index===a.group.length-1?b.play(!1):b.opts.autoPlay&&!b.player.isActive&&(b.opts.autoPlay=!1,b.play()))},_afterZoomOut:function(a){a=
34
- a||b.current;f(".fancybox-wrap").trigger("onReset").remove();f.extend(b,{group:{},opts:{},router:!1,current:null,isActive:!1,isOpened:!1,isOpen:!1,isClosing:!1,wrap:null,skin:null,outer:null,inner:null});b.trigger("afterClose",a)}});b.transitions={getOrigPosition:function(){var a=b.current,d=a.element,e=a.orig,c={},f=50,g=50,h=a.hPadding,j=a.wPadding,m=b.getViewport();!e&&(a.isDom&&d.is(":visible"))&&(e=d.find("img:first"),e.length||(e=d));t(e)?(c=e.offset(),e.is("img")&&(f=e.outerWidth(),g=e.outerHeight())):
35
- (c.top=m.y+(m.h-g)*a.topRatio,c.left=m.x+(m.w-f)*a.leftRatio);if("fixed"===b.wrap.css("position")||a.locked)c.top-=m.y,c.left-=m.x;return c={top:x(c.top-h*a.topRatio),left:x(c.left-j*a.leftRatio),width:x(f+j),height:x(g+h)}},step:function(a,d){var e,c,f=d.prop;c=b.current;var g=c.wrapSpace,h=c.skinSpace;if("width"===f||"height"===f)e=d.end===d.start?1:(a-d.start)/(d.end-d.start),b.isClosing&&(e=1-e),c="width"===f?c.wPadding:c.hPadding,c=a-c,b.skin[f](l("width"===f?c:c-g*e)),b.inner[f](l("width"===
36
- f?c:c-g*e-h*e))},zoomIn:function(){var a=b.current,d=a.pos,e=a.openEffect,c="elastic"===e,k=f.extend({opacity:1},d);delete k.position;c?(d=this.getOrigPosition(),a.openOpacity&&(d.opacity=0.1)):"fade"===e&&(d.opacity=0.1);b.wrap.css(d).animate(k,{duration:"none"===e?0:a.openSpeed,easing:a.openEasing,step:c?this.step:null,complete:b._afterZoomIn})},zoomOut:function(){var a=b.current,d=a.closeEffect,e="elastic"===d,c={opacity:0.1};e&&(c=this.getOrigPosition(),a.closeOpacity&&(c.opacity=0.1));b.wrap.animate(c,
37
- {duration:"none"===d?0:a.closeSpeed,easing:a.closeEasing,step:e?this.step:null,complete:b._afterZoomOut})},changeIn:function(){var a=b.current,d=a.nextEffect,e=a.pos,c={opacity:1},f=b.direction,g;e.opacity=0.1;"elastic"===d&&(g="down"===f||"up"===f?"top":"left","down"===f||"right"===f?(e[g]=x(l(e[g])-200),c[g]="+=200px"):(e[g]=x(l(e[g])+200),c[g]="-=200px"));"none"===d?b._afterZoomIn():b.wrap.css(e).animate(c,{duration:a.nextSpeed,easing:a.nextEasing,complete:b._afterZoomIn})},changeOut:function(){var a=
38
- b.previous,d=a.prevEffect,e={opacity:0.1},c=b.direction;"elastic"===d&&(e["down"===c||"up"===c?"top":"left"]=("up"===c||"left"===c?"-":"+")+"=200px");a.wrap.animate(e,{duration:"none"===d?0:a.prevSpeed,easing:a.prevEasing,complete:function(){f(this).trigger("onReset").remove()}})}};b.helpers.overlay={defaults:{closeClick:!0,speedOut:200,showEarly:!0,css:{},locked:!s,fixed:!0},overlay:null,fixed:!1,create:function(a){a=f.extend({},this.defaults,a);this.overlay&&this.close();this.overlay=f('<div class="fancybox-overlay"></div>').appendTo("body");
39
- this.fixed=!1;a.fixed&&b.defaults.fixed&&(this.overlay.addClass("fancybox-overlay-fixed"),this.fixed=!0)},open:function(a){var d=this;a=f.extend({},this.defaults,a);this.overlay?this.overlay.unbind(".overlay").width("auto").height("auto"):this.create(a);this.fixed||(q.bind("resize.overlay",f.proxy(this.update,this)),this.update());a.closeClick&&this.overlay.bind("click.overlay",function(a){f(a.target).hasClass("fancybox-overlay")&&(b.isActive?b.close():d.close())});this.overlay.css(a.css).show()},
40
- close:function(){f(".fancybox-overlay").remove();q.unbind("resize.overlay");this.overlay=null;!1!==this.margin&&(f("body").css("margin-right",this.margin),this.margin=!1);this.el&&this.el.removeClass("fancybox-lock")},update:function(){var a="100%",b;this.overlay.width(a).height("100%");H?(b=Math.max(z.documentElement.offsetWidth,z.body.offsetWidth),n.width()>b&&(a=n.width())):n.width()>q.width()&&(a=n.width());this.overlay.width(a).height(n.height())},onReady:function(a,b){f(".fancybox-overlay").stop(!0,
41
- !0);this.overlay||(this.margin=n.height()>q.height()||"scroll"===f("body").css("overflow-y")?f("body").css("margin-right"):!1,this.el=z.all&&!z.querySelector?f("html"):f("body"),this.create(a));a.locked&&this.fixed&&(b.locked=this.overlay.append(b.wrap),b.fixed=!1);!0===a.showEarly&&this.beforeShow.apply(this,arguments)},beforeShow:function(a,b){b.locked&&(this.el.addClass("fancybox-lock"),!1!==this.margin&&f("body").css("margin-right",l(this.margin)+b.scrollbarWidth));this.open(a)},onUpdate:function(){this.fixed||
42
- this.update()},afterClose:function(a){this.overlay&&!b.isActive&&this.overlay.fadeOut(a.speedOut,f.proxy(this.close,this))}};b.helpers.title={defaults:{type:"float",position:"bottom"},beforeShow:function(a){var d=b.current,e=d.title,c=a.type;f.isFunction(e)&&(e=e.call(d.element,d));if(p(e)&&""!==f.trim(e)){d=f('<div class="fancybox-title fancybox-title-'+c+'-wrap">'+e+"</div>");switch(c){case "inside":c=b.skin;break;case "outside":c=b.wrap;break;case "over":c=b.inner;break;default:c=b.skin,d.appendTo("body"),
43
- H&&d.width(d.width()),d.wrapInner('<span class="child"></span>'),b.current.margin[2]+=Math.abs(l(d.css("margin-bottom")))}d["top"===a.position?"prependTo":"appendTo"](c)}}};f.fn.fancybox=function(a){var d,e=f(this),c=this.selector||"",k=function(g){var h=f(this).blur(),j=d,k,l;!g.ctrlKey&&(!g.altKey&&!g.shiftKey&&!g.metaKey)&&!h.is(".fancybox-wrap")&&(k=a.groupAttr||"data-fancybox-group",l=h.attr(k),l||(k="rel",l=h.get(0)[k]),l&&(""!==l&&"nofollow"!==l)&&(h=c.length?f(c):e,h=h.filter("["+k+'="'+l+
44
- '"]'),j=h.index(this)),a.index=j,!1!==b.open(h,a)&&g.preventDefault())};a=a||{};d=a.index||0;!c||!1===a.live?e.unbind("click.fb-start").bind("click.fb-start",k):n.undelegate(c,"click.fb-start").delegate(c+":not('.fancybox-item, .fancybox-nav')","click.fb-start",k);this.filter("[data-fancybox-start=1]").trigger("click");return this};n.ready(function(){f.scrollbarWidth===r&&(f.scrollbarWidth=function(){var a=f('<div style="width:50px;height:50px;overflow:auto"><div/></div>').appendTo("body"),b=a.children(),
45
- b=b.innerWidth()-b.height(99).innerWidth();a.remove();return b});if(f.support.fixedPosition===r){var a=f.support,d=f('<div style="position:fixed;top:20px;"></div>').appendTo("body"),e=20===d[0].offsetTop||15===d[0].offsetTop;d.remove();a.fixedPosition=e}f.extend(b.defaults,{scrollbarWidth:f.scrollbarWidth(),fixed:f.support.fixedPosition,parent:f("body")})})})(window,document,jQuery);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
js/general.dev.js CHANGED
@@ -6,15 +6,4 @@ jQuery(document).ready(function ($) {
6
  'keepAlive': true,
7
  'activation': 'hover'
8
  });
9
- $(".backwpup-fancybox").fancybox({
10
- maxWidth : 800,
11
- maxHeight : 600,
12
- fitToView : false,
13
- width : '70%',
14
- height : '80%',
15
- autoSize : false,
16
- closeClick : false,
17
- openEffect : 'none',
18
- closeEffect : 'none'
19
- });
20
  });
6
  'keepAlive': true,
7
  'activation': 'hover'
8
  });
 
 
 
 
 
 
 
 
 
 
 
9
  });
js/general.js CHANGED
@@ -1 +1 @@
1
- jQuery(document).ready(function($){$(".help_tip").tipTip({attribute:"title",fadeIn:50,fadeOut:50,keepAlive:true,activation:"hover"});$(".backwpup-fancybox").fancybox({maxWidth:800,maxHeight:600,fitToView:false,width:"70%",height:"80%",autoSize:false,closeClick:false,openEffect:"none",closeEffect:"none"});});
1
+ jQuery(document).ready(function($){$(".help_tip").tipTip({attribute:"title",fadeIn:50,fadeOut:50,keepAlive:true,activation:"hover"});});
languages/backwpup-de_DE.mo CHANGED
Binary file
languages/backwpup-de_DE.po CHANGED
@@ -1,9 +1,9 @@
1
  msgid ""
2
  msgstr ""
3
- "Project-Id-Version: BackWPup Pro v3.0.1\n"
4
  "Report-Msgid-Bugs-To: \n"
5
  "POT-Creation-Date: 2013-02-06 17:42+0100\n"
6
- "PO-Revision-Date: 2013-02-28 11:30:16-0600\n"
7
  "Last-Translator: Frank Bueltge <frank@bueltge.de>\n"
8
  "Language-Team: INPSYDE <info@inpsyde.com>\n"
9
  "MIME-Version: 1.0\n"
@@ -72,24 +72,24 @@ msgstr "Datensicherungen"
72
  msgid "Settings"
73
  msgstr "Einstellungen"
74
 
75
- #: inc/class-admin.php:283
76
- #: inc/class-admin.php:289
77
  #@ backwpup
78
  msgid "Cheating Huh?"
79
  msgstr "Schummeln, was?"
80
 
81
- #: inc/class-admin.php:323
82
  #@ backwpup
83
  msgid "Jobs overview"
84
  msgstr "Auftragsübersicht"
85
 
86
- #: inc/class-admin.php:323
87
  #: inc/class-page-jobs.php:134
88
  #@ backwpup
89
  msgid "Run now"
90
  msgstr "Jetzt starten"
91
 
92
- #: inc/class-admin.php:414
93
  #, php-format
94
  #@ backwpup
95
  msgid "version %s"
@@ -111,7 +111,7 @@ msgid "Abort!"
111
  msgstr "Abbrechen!"
112
 
113
  #: inc/class-adminbar.php:91
114
- #: inc/class-page-jobs.php:414
115
  #@ backwpupadminbar
116
  #@ backwpup
117
  msgid "Add New"
@@ -130,8 +130,8 @@ msgid "Run Now"
130
  msgstr "Jetzt starten"
131
 
132
  #: inc/class-cron.php:53
133
- #: inc/class-job.php:981
134
- #: inc/class-page-jobs.php:345
135
  #: inc/class-wp-cli.php:47
136
  #@ backwpup
137
  msgid "ERROR:"
@@ -143,14 +143,14 @@ msgid "Aborted, because 2 hours no progress!"
143
  msgstr "Abgebrochen, da seit 2 Stunden kein Fortschritt!"
144
 
145
  #: inc/class-cron.php:84
146
- #: inc/class-job.php:1208
147
  #, php-format
148
  #@ backwpup
149
  msgid "[%3$s] BackWPup log %1$s: %2$s"
150
  msgstr "[%3$s] BackWPup Log %1$s: %2$s"
151
 
152
  #: inc/class-cron.php:84
153
- #: inc/class-job.php:1204
154
  #@ backwpup
155
  msgid "ERROR"
156
  msgstr "FEHLER"
@@ -337,8 +337,8 @@ msgid "Upload to Dropbox now started &hellip;"
337
  msgstr "Hochladen zur Dropbox hat begonnen &hellip;"
338
 
339
  #: inc/class-destination-dropbox.php:265
340
- #: inc/class-destination-msazure.php:251
341
- #: inc/class-destination-sugarsync.php:274
342
  #, php-format
343
  #@ backwpup
344
  msgid "Backup transferred to %s"
@@ -385,7 +385,7 @@ msgstr "Datensicherung in Ordner"
385
  msgid "Folder to store the backups in"
386
  msgstr "Ordner für Backups"
387
 
388
- #: inc/class-destination-folder.php:207
389
  #, php-format
390
  #@ backwpup
391
  msgid "One backup file deleted"
@@ -819,32 +819,32 @@ msgstr "MS Azure Container \"%s\" erstellt."
819
  msgid "MS Azure container create: %s"
820
  msgstr "MS Azure Container erstellen: %s"
821
 
822
- #: inc/class-destination-msazure.php:223
823
  #, php-format
824
  #@ backwpup
825
  msgid "%d. Try sending backup to a Microsoft Azure (Blob) &hellip;"
826
  msgstr "%d. Versuche, das Backup zu Microsoft Azure (Blob) zu senden &hellip;"
827
 
828
- #: inc/class-destination-msazure.php:240
829
  #: inc/features/class-destination-msazure-pro.php:108
830
  #, php-format
831
  #@ backwpup
832
  msgid "MS Azure container \"%s\" does not exist!"
833
  msgstr "MS Azure Container \"%s\" existiert nicht!"
834
 
835
- #: inc/class-destination-msazure.php:244
836
  #: inc/features/class-destination-msazure-pro.php:112
837
  #, php-format
838
  #@ backwpup
839
  msgid "Connected to MS Azure container \"%s\"."
840
  msgstr "Verbunden mit MS Azure container \"%s\""
841
 
842
- #: inc/class-destination-msazure.php:248
843
  #@ backwpup
844
  msgid "Upload to MS Azure now started &hellip;"
845
  msgstr "Hochladen zu MS Azure hat begonnen &hellip;"
846
 
847
- #: inc/class-destination-msazure.php:293
848
  #, php-format
849
  #@ backwpup
850
  msgid "One file deleted on Microsoft Azure container."
@@ -852,24 +852,24 @@ msgid_plural "%d files deleted on Microsoft Azure container."
852
  msgstr[0] "Eine Datei im Microsoft-Azure-Container gelöscht"
853
  msgstr[1] "%d Dateien im Microsoft-Azure-Container gelöscht"
854
 
855
- #: inc/class-destination-msazure.php:299
856
  #: inc/features/class-destination-msazure-pro.php:172
857
  #, php-format
858
  #@ backwpup
859
  msgid "Microsoft Azure API: %s"
860
  msgstr "Microsoft Azure API: %s"
861
 
862
- #: inc/class-destination-msazure.php:381
863
  #@ backwpup
864
  msgid "Missing Account Name!"
865
  msgstr "Kontoname (Benutzername) nicht angegeben!"
866
 
867
- #: inc/class-destination-msazure.php:383
868
  #@ backwpup
869
  msgid "Missing Access Key!"
870
  msgstr "Zugangsschlüssel (Access Key) nicht angegeben!"
871
 
872
- #: inc/class-destination-msazure.php:387
873
  #@ backwpup
874
  msgid "No Container found!"
875
  msgstr "Kein Container gefunden!"
@@ -939,9 +939,9 @@ msgid "Rackspace Cloud container \"%s\" created."
939
  msgstr "Rackspace Cloud Container \"%s\" erstellt."
940
 
941
  #: inc/class-destination-rsc.php:160
942
- #: inc/class-destination-rsc.php:271
943
- #: inc/class-destination-rsc.php:299
944
- #: inc/class-destination-rsc.php:347
945
  #: inc/features/class-destination-rsc-pro.php:104
946
  #: inc/features/class-destination-rsc-pro.php:147
947
  #: inc/features/class-destination-rsc-pro.php:220
@@ -950,34 +950,34 @@ msgstr "Rackspace Cloud Container \"%s\" erstellt."
950
  msgid "Rackspace Cloud API: %s"
951
  msgstr "Rackspace Cloud API: %s"
952
 
953
- #: inc/class-destination-rsc.php:252
954
  #, php-format
955
  #@ backwpup
956
  msgid "%d. Trying to send backup file to Rackspace cloud &hellip;"
957
  msgstr "%d. Versuche, ein Backup zur Rackspace Cloud zu senden &hellip;"
958
 
959
- #: inc/class-destination-rsc.php:268
960
  #, php-format
961
  #@ backwpup
962
  msgid "Connected to Rackspace cloud files container %s"
963
  msgstr "Verbunden mit Rackspace Cloud Container %s"
964
 
965
- #: inc/class-destination-rsc.php:280
966
  #@ backwpup
967
  msgid "Upload to Rackspace cloud started &hellip;"
968
  msgstr "Upload zur Rackspace Cloud nun gestartet &hellip;"
969
 
970
- #: inc/class-destination-rsc.php:289
971
  #@ backwpup
972
  msgid "Backup File transferred to RSC://"
973
  msgstr "Datensicherungsdatei übertragen zu RSC://"
974
 
975
- #: inc/class-destination-rsc.php:293
976
  #@ backwpup
977
  msgid "Can not transfer backup to Rackspace cloud."
978
  msgstr "Kann das Backup nicht zur Rackspace Cloud transferieren"
979
 
980
- #: inc/class-destination-rsc.php:341
981
  #, php-format
982
  #@ backwpup
983
  msgid "One file deleted on Rackspace cloud container."
@@ -985,17 +985,17 @@ msgid_plural "%d files deleted on Rackspace cloud container."
985
  msgstr[0] "Eine Datei im Rackspace-Container gelöscht"
986
  msgstr[1] "%d Dateien im Rackspace-Container gelöscht"
987
 
988
- #: inc/class-destination-rsc.php:451
989
  #@ backwpup
990
  msgid "Missing Username!"
991
  msgstr "Falscher Benutzername!"
992
 
993
- #: inc/class-destination-rsc.php:453
994
  #@ backwpup
995
  msgid "Missing API Key!"
996
  msgstr "API-Schlüssel wird fehlt!"
997
 
998
- #: inc/class-destination-rsc.php:457
999
  #@ backwpup
1000
  msgid "No Container's found!"
1001
  msgstr "Keine Container gefunden!"
@@ -1170,53 +1170,53 @@ msgid " %s is not a valid bucket name."
1170
  msgstr "%s ist kein gültiger Bucket Name"
1171
 
1172
  #: inc/class-destination-s3.php:317
1173
- #: inc/class-destination-s3.php:425
1174
- #: inc/class-destination-s3.php:456
1175
- #: inc/class-destination-s3.php:477
1176
- #: inc/class-destination-s3.php:536
1177
  #: inc/features/class-destination-s3-pro.php:280
1178
  #, php-format
1179
  #@ backwpup
1180
  msgid "S3 Service API: %s"
1181
  msgstr "S3 Service API: %s"
1182
 
1183
- #: inc/class-destination-s3.php:381
1184
  #, php-format
1185
  #@ backwpup
1186
  msgid "%d. Trying to send backup file to S3 Service &hellip;"
1187
  msgstr "%d. Versuche, ein Backup zum S3-Service zu senden &hellip;"
1188
 
1189
- #: inc/class-destination-s3.php:396
1190
  #: inc/features/class-destination-s3-pro.php:168
1191
  #, php-format
1192
  #@ backwpup
1193
  msgid "S3 Bucket \"%s\" does not exist!"
1194
  msgstr "Amazon S3 Bucket \"%s\" existiert nicht!"
1195
 
1196
- #: inc/class-destination-s3.php:402
1197
  #@ backwpup
1198
  msgid "Upload to S3 Service started &hellip;"
1199
  msgstr "Upload zum S3 Service jetzt gestartet &hellip;"
1200
 
1201
- #: inc/class-destination-s3.php:468
1202
  #, php-format
1203
  #@ backwpup
1204
  msgid "Backup transferred to %s."
1205
  msgstr "Datensicherung übertragen zu %s"
1206
 
1207
- #: inc/class-destination-s3.php:473
1208
  #, php-format
1209
  #@ backwpup
1210
  msgid "Can not transfer backup to S3! (%1$d) %2$s"
1211
  msgstr "Datensicherung kann nicht zu Amazon S3 übertragen werden! (%1$d) %2$s"
1212
 
1213
- #: inc/class-destination-s3.php:526
1214
  #, php-format
1215
  #@ backwpup
1216
  msgid "Can not delete backup on %s."
1217
  msgstr "Kann das Backup auf %s nicht löschen"
1218
 
1219
- #: inc/class-destination-s3.php:530
1220
  #, php-format
1221
  #@ backwpup
1222
  msgid "One file deleted on S3 Bucket."
@@ -1224,17 +1224,17 @@ msgid_plural "%d files deleted on S3 Bucket"
1224
  msgstr[0] "Eine Datei im S3-Bucket gelöscht"
1225
  msgstr[1] "%d Dateien im S3-Bucket gelöscht"
1226
 
1227
- #: inc/class-destination-s3.php:633
1228
  #@ backwpup
1229
  msgid "Missing access key!"
1230
  msgstr "Der Zugangsschlüssel (Access Key) fehlt!"
1231
 
1232
- #: inc/class-destination-s3.php:635
1233
  #@ backwpup
1234
  msgid "Missing secret access key!"
1235
  msgstr "Der geheime Zugangsschlüssel (Secret Access Key) fehlt!"
1236
 
1237
- #: inc/class-destination-s3.php:639
1238
  #@ backwpup
1239
  msgid "No bucket found!"
1240
  msgstr "Kein Bucket gefunden!"
@@ -1322,24 +1322,24 @@ msgstr "Keine Sync-Ordner gefunden!"
1322
  msgid "Folder in root"
1323
  msgstr "Ordner im Wurzelverzeichnis"
1324
 
1325
- #: inc/class-destination-sugarsync.php:252
1326
  #, php-format
1327
  #@ backwpup
1328
  msgid "Authed to SugarSync with Nick %s"
1329
  msgstr "Authentifiziert mit SugarSync, mit dem Namen %s"
1330
 
1331
- #: inc/class-destination-sugarsync.php:261
1332
  #, php-format
1333
  #@ backwpup
1334
  msgid "%s free on SugarSync"
1335
  msgstr "%s frei bei SugarSync"
1336
 
1337
- #: inc/class-destination-sugarsync.php:277
1338
  #@ backwpup
1339
  msgid "Can not transfer backup to SugarSync!"
1340
  msgstr "Datensicherung kann nicht zu SugarSync übertragen werden!"
1341
 
1342
- #: inc/class-destination-sugarsync.php:316
1343
  #, php-format
1344
  #@ backwpup
1345
  msgid "One file deleted on SugarSync folder"
@@ -1347,7 +1347,7 @@ msgid_plural "%d files deleted on SugarSync folder"
1347
  msgstr[0] "Eine Datei im SugarSync-Ordner gelöscht"
1348
  msgstr[1] "%d Dateien im SugarSync-Ordner gelöscht"
1349
 
1350
- #: inc/class-destination-sugarsync.php:322
1351
  #, php-format
1352
  #@ backwpup
1353
  msgid "SugarSync API: %s"
@@ -1488,115 +1488,115 @@ msgstr "[INFO] Backup Datei ist: %s"
1488
 
1489
  #: inc/class-job.php:443
1490
  #: inc/class-job.php:444
1491
- #: inc/class-job.php:513
1492
- #: inc/class-job.php:514
1493
- #: inc/class-job.php:562
1494
  #@ backwpup
1495
  msgid "Wrong BackWPup JobID"
1496
  msgstr "Falsche BackWPup JobID"
1497
 
1498
  #: inc/class-job.php:448
1499
  #: inc/class-job.php:449
1500
- #: inc/class-job.php:519
1501
- #: inc/class-job.php:568
1502
  #@ backwpup
1503
  msgid "Log folder does not exist or is not writable for BackWPup"
1504
  msgstr "Log-Ordner existiert nicht oder ist nicht beschreibbar für BackWPup"
1505
 
1506
  #: inc/class-job.php:452
1507
  #: inc/class-job.php:453
1508
- #: inc/class-job.php:523
1509
- #: inc/class-job.php:573
1510
  #@ backwpup
1511
  msgid "Temp folder does not exist or is not writable for BackWPup"
1512
  msgstr "Temp Ordner existiert nicht oder ist nicht beschreibbar für BackWPup!"
1513
 
1514
- #: inc/class-job.php:458
1515
- #: inc/class-job.php:459
1516
  #@ backwpup
1517
  msgid "No BackWPup job running"
1518
  msgstr "Kein aktiver BackWPup-Auftrag"
1519
 
1520
- #: inc/class-job.php:462
1521
- #: inc/class-job.php:463
1522
- #: inc/class-job.php:527
1523
- #: inc/class-job.php:528
1524
- #: inc/class-job.php:580
1525
  #@ backwpup
1526
  msgid "A BackWPup job is already running"
1527
  msgstr "Es läuft bereits ein BackWPup-Auftrag"
1528
 
1529
- #: inc/class-job.php:518
1530
  #@ backwpup
1531
  msgid "Log folder does not exist or is not writable"
1532
  msgstr "Log-Ordner existiert nicht oder ist nicht beschreibbar"
1533
 
1534
- #: inc/class-job.php:522
1535
  #@ backwpup
1536
  msgid "Temp folder does not exist or is not writable"
1537
  msgstr "Temp Ordner existiert nicht oder ist nicht beschreibbar"
1538
 
1539
- #: inc/class-job.php:608
1540
  #@ backwpup
1541
  msgid "Job restart due to inactivity for more than 5 minutes."
1542
  msgstr "Auftrag durch Inaktivität von mehr als 5 Minuten neu gestartet"
1543
 
1544
- #: inc/class-job.php:720
1545
  #@ backwpup
1546
  msgid "Step aborted: too many attempts!"
1547
  msgstr "Schritt abgebrochen durch zu viele Versuche!"
1548
 
1549
- #: inc/class-job.php:845
1550
  #, php-format
1551
  #@ backwpup
1552
  msgid "%d. Script stopped! Will start again."
1553
  msgstr "%d. Script stoppt! Wird neu gestartet"
1554
 
1555
- #: inc/class-job.php:874
1556
  #, php-format
1557
  #@ backwpup
1558
  msgid "Please use another folder: %1$s"
1559
  msgstr "Bitte einen anderen Ordner auswählen: %1$s"
1560
 
1561
- #: inc/class-job.php:881
1562
  #, php-format
1563
  #@ backwpup
1564
  msgid "Can not create folder: %1$s"
1565
  msgstr "Kann keinen Ordner erstellen: %1$s"
1566
 
1567
- #: inc/class-job.php:889
1568
  #, php-format
1569
  #@ backwpup
1570
  msgid "Folder \"%1$s\" is not writable"
1571
  msgstr "Ordner \"%1$s\" ist nicht beschreibbar"
1572
 
1573
- #: inc/class-job.php:914
1574
  #, php-format
1575
  #@ backwpup
1576
  msgid "Exception caught in %1$s: %2$s"
1577
  msgstr "Ausnahme eingefangen in %1$s: %2$s"
1578
 
1579
- #: inc/class-job.php:972
1580
  #@ backwpup
1581
  msgid "WARNING:"
1582
  msgstr "WARNUNG:"
1583
 
1584
- #: inc/class-job.php:985
1585
  #@ backwpup
1586
  msgid "DEPRECATED:"
1587
  msgstr "ABGELEHNT:"
1588
 
1589
- #: inc/class-job.php:988
1590
  #@ backwpup
1591
  msgid "STRICT NOTICE:"
1592
  msgstr "EXAKTE NOTIZ:"
1593
 
1594
- #: inc/class-job.php:991
1595
  #@ backwpup
1596
  msgid "RECOVERABLE ERROR:"
1597
  msgstr "WIEDERHERSTELLUNGS FEHLER:"
1598
 
1599
- #: inc/class-job.php:1127
1600
  #, php-format
1601
  #@ backwpup
1602
  msgid "One old log deleted"
@@ -1604,209 +1604,212 @@ msgid_plural "%d old logs deleted"
1604
  msgstr[0] "Eine alte Log-Datei gelöscht"
1605
  msgstr[1] "%d alte Log-Dateien gelöscht"
1606
 
1607
- #: inc/class-job.php:1132
1608
- #: inc/class-page-jobs.php:566
1609
  #, php-format
1610
  #@ backwpup
1611
  msgid "Job done in %s seconds."
1612
  msgstr "Auftrag erledigt in %s Sekunden."
1613
 
1614
- #: inc/class-job.php:1197
1615
  #@ backwpup
1616
  msgid "SUCCESSFUL"
1617
  msgstr "ERFOLGREICH"
1618
 
1619
- #: inc/class-job.php:1200
1620
  #@ backwpup
1621
  msgid "WARNING"
1622
  msgstr "WARNUNG"
1623
 
1624
- #: inc/class-job.php:1243
1625
  #@ backwpup
1626
  msgid "Set blog into maintenance mode"
1627
  msgstr "Webseite / Blog in den Wartungsmodus versetzen"
1628
 
1629
- #: inc/class-job.php:1256
1630
  #@ backwpup
1631
  msgid "Cannot set blog into maintenance mode! .maintenance is not writable!"
1632
  msgstr "Die Webseite kann nicht in den Wartungsmodus gesetzt werden! Das Root-Verzeichnis ist nicht beschreibbar!"
1633
 
1634
- #: inc/class-job.php:1261
1635
  #@ backwpup
1636
  msgid "Set blog to normal mode"
1637
  msgstr "Setze Webseite / Blog zurück in den Normalmodus"
1638
 
1639
- #: inc/class-job.php:1291
1640
  #, php-format
1641
  #@ backwpup
1642
  msgid "Memory increased from %1$s to %2$s"
1643
  msgstr "Speicher(limit) erhöht von %1$s auf %2$s"
1644
 
1645
- #: inc/class-job.php:1293
1646
  #, php-format
1647
  #@ backwpup
1648
  msgid "Can not increase memory limit. The current value is %1$s"
1649
  msgstr "Das PHP-Speicherlimit kann nicht erhöht werden, es beträgt derzeit %1$s "
1650
 
1651
- #: inc/class-job.php:1589
1652
  #, php-format
1653
  #@ backwpup
1654
  msgid "File \"%s\" is not readable!"
1655
  msgstr "Datei \"%s\" ist nicht lesbar!"
1656
 
1657
- #: inc/class-job.php:1591
1658
  #, php-format
1659
  #@ backwpup
1660
  msgid "Link \"%s\" not followed."
1661
  msgstr "Link \"%s\" wird nicht gefolgt"
1662
 
1663
- #: inc/class-create-archive.php:276
 
1664
  #, php-format
1665
  #@ backwpup
1666
  msgid "Can not add \"%s\" to zip archive!"
1667
  msgstr "\"%s\" kann dem ZIP-Archiv nicht hinzugefügt werden!"
1668
 
1669
- #: inc/class-create-archive.php:306
1670
  #@ backwpup
1671
  msgid "(ER_MULTIDISK) Multi-disk zip archives not supported"
1672
  msgstr "(ER_MULTIDISK) Multi-Disk .zip Archive werden nicht unterstützt"
1673
 
1674
- #: inc/class-create-archive.php:308
1675
  #@ backwpup
1676
  msgid "(ER_RENAME) Renaming temporary file failed"
1677
  msgstr "(ER_RENAME) Umbenennen der temporärern Dateien gescheitert."
1678
 
1679
- #: inc/class-create-archive.php:310
1680
  #@ backwpup
1681
  msgid "(ER_CLOSE) Closing zip archive failed"
1682
  msgstr "(ER_CLOSE) Schließen der .zip Archive gescheitert"
1683
 
1684
- #: inc/class-create-archive.php:312
1685
  #@ backwpup
1686
  msgid "(ER_SEEK) Seek error"
1687
  msgstr "(ER_SEEK) Such-Fehler"
1688
 
1689
- #: inc/class-create-archive.php:314
1690
  #@ backwpup
1691
  msgid "(ER_READ) Read error"
1692
  msgstr "(ER_READ) Lese-Fehler"
1693
 
1694
- #: inc/class-create-archive.php:316
1695
  #@ backwpup
1696
  msgid "(ER_WRITE) Write error"
1697
  msgstr "(ER_WRITE) Schreib-Fehler"
1698
 
1699
- #: inc/class-create-archive.php:318
1700
  #@ backwpup
1701
  msgid "(ER_CRC) CRC error"
1702
  msgstr "(ER_CRC) CRC Fehler"
1703
 
1704
- #: inc/class-create-archive.php:320
1705
  #@ backwpup
1706
  msgid "(ER_ZIPCLOSED) Containing zip archive was closed"
1707
  msgstr "(ER_ZIPCLOSED) beinhaltetendes .zip Archiv war geschlossen"
1708
 
1709
- #: inc/class-create-archive.php:322
1710
  #@ backwpup
1711
  msgid "(ER_NOENT) No such file"
1712
  msgstr "(ER_NOENT) keine passende Datei"
1713
 
1714
- #: inc/class-create-archive.php:324
1715
  #@ backwpup
1716
  msgid "(ER_EXISTS) File already exists"
1717
  msgstr "(ER_EXISTS) Datei exisitiert bereits"
1718
 
1719
- #: inc/class-create-archive.php:326
1720
  #@ backwpup
1721
  msgid "(ER_OPEN) Can't open file"
1722
  msgstr "(ER_OPEN) Kann die Datei nicht öffnen"
1723
 
1724
- #: inc/class-create-archive.php:328
1725
  #@ backwpup
1726
  msgid "(ER_TMPOPEN) Failure to create temporary file"
1727
  msgstr "(ER_TMPOPEN) Erstellen einer temporären Datei fehlgeschlagen"
1728
 
1729
- #: inc/class-create-archive.php:330
1730
  #@ backwpup
1731
  msgid "(ER_ZLIB) Zlib error"
1732
  msgstr "(ER_ZLIB) Zlib Fehler"
1733
 
1734
- #: inc/class-create-archive.php:332
1735
  #@ backwpup
1736
  msgid "(ER_MEMORY) Malloc failure"
1737
  msgstr "(ER_MEMORY) Malloc Fehler"
1738
 
1739
- #: inc/class-create-archive.php:334
1740
  #@ backwpup
1741
  msgid "(ER_CHANGED) Entry has been changed"
1742
  msgstr "(ER_CHANGED) Eintrag wurde geändert"
1743
 
1744
- #: inc/class-create-archive.php:336
1745
  #@ backwpup
1746
  msgid "(ER_COMPNOTSUPP) Compression method not supported"
1747
  msgstr "(ER_COMPNOTSUPP) Kompressionsmethode nicht unterstützt"
1748
 
1749
- #: inc/class-create-archive.php:338
1750
  #@ backwpup
1751
  msgid "(ER_EOF) Premature EOF"
1752
  msgstr "(ER_EOF) verfrühtes EOF"
1753
 
1754
- #: inc/class-create-archive.php:340
1755
  #@ backwpup
1756
  msgid "(ER_INVAL) Invalid argument"
1757
  msgstr "(ER_INVAL) ungültiges Argument"
1758
 
1759
- #: inc/class-create-archive.php:342
1760
  #@ backwpup
1761
  msgid "(ER_NOZIP) Not a zip archive"
1762
  msgstr "(ER_NOZIP) kein .zip Archiv"
1763
 
1764
- #: inc/class-create-archive.php:344
1765
  #@ backwpup
1766
  msgid "(ER_INTERNAL) Internal error"
1767
  msgstr "(ER_INTERNAL) Interner Fehler"
1768
 
1769
- #: inc/class-create-archive.php:346
1770
  #@ backwpup
1771
  msgid "(ER_INCONS) Zip archive inconsistent"
1772
  msgstr "(ER_INCONS) .zip Archiv inkonsistent"
1773
 
1774
- #: inc/class-create-archive.php:348
1775
  #@ backwpup
1776
  msgid "(ER_REMOVE) Can't remove file"
1777
  msgstr "(ER_REMOVE) Datei kann nicht entfernt werden"
1778
 
1779
- #: inc/class-create-archive.php:350
1780
  #@ backwpup
1781
  msgid "(ER_DELETED) Entry has been deleted"
1782
  msgstr "(ER_DELETED) Eintrag wurde gelöscht"
1783
 
1784
- #: inc/class-job.php:1656
1785
  #, php-format
1786
  #@ backwpup
1787
  msgid "Archive size is %s."
1788
  msgstr "Archivgröße ist %s"
1789
 
1790
- #: inc/class-job.php:1657
1791
  #, php-format
1792
  #@ backwpup
1793
  msgid "%1$d Files with %2$s in Archive."
1794
  msgstr "%1$d Dateien mit %2$s in Archiven."
1795
 
1796
- #: inc/class-create-archive.php:371
1797
  #, php-format
1798
  #@ backwpup
1799
  msgid "File name \"%1$s\" too long to be saved correctly in %2$s archive!"
1800
  msgstr "Dateiname \"%1$s\" ist zu lang, um korrekt im %2$s Archiv zu speichern."
1801
 
1802
- #: inc/class-create-archive.php:373
1803
  #, php-format
1804
  #@ backwpup
1805
  msgid "File path \"%1$s\" too long to be saved correctly in %2$s archive!"
1806
  msgstr "Dateipfad \"%1$s\" ist zu lang, um korrekt in %2$s Archiv zu speichern"
1807
 
1808
- #: inc/class-create-archive.php:383
1809
- #: inc/class-create-archive.php:384
 
 
1810
  #@ backwpup
1811
  msgid "Unknown"
1812
  msgstr "Unbekannt"
@@ -1979,7 +1982,7 @@ msgstr "GZip"
1979
  msgid "BZip2"
1980
  msgstr "BZip2"
1981
 
1982
- #: inc/class-mysqldump.php:86
1983
  #: inc/features/class-jobtype-dbdump-pro.php:700
1984
  #, php-format
1985
  #@ backwpup
@@ -1994,15 +1997,15 @@ msgstr "Kann keine Verbindung zur Datenbank %1$d herstellen: %2$s"
1994
  msgid "Connected to database %1$s on %2$s"
1995
  msgstr "Mit Datenbank %1$s auf %2$s verbunden"
1996
 
1997
- #: inc/class-mysqldump.php:127
1998
- #: inc/class-mysqldump.php:137
1999
- #: inc/class-mysqldump.php:214
2000
- #: inc/class-mysqldump.php:225
2001
- #: inc/class-mysqldump.php:237
2002
- #: inc/class-mysqldump.php:248
2003
- #: inc/class-mysqldump.php:286
2004
- #: inc/class-mysqldump.php:307
2005
- #: inc/class-mysqldump.php:321
2006
  #: inc/features/class-jobtype-dbdump-pro.php:713
2007
  #: inc/features/class-jobtype-dbdump-pro.php:727
2008
  #: inc/features/class-jobtype-dbdump-pro.php:776
@@ -2168,28 +2171,28 @@ msgid "%d. Trying to make a list of folders to back up &hellip;"
2168
  msgstr "%d. Versuche, eine Liste der Ordner für das Backup zu erstellen …"
2169
 
2170
  #: inc/class-jobtype-file.php:399
2171
- #: inc/class-jobtype-file.php:405
2172
- #: inc/class-jobtype-file.php:411
2173
- #: inc/class-jobtype-file.php:417
2174
- #: inc/class-jobtype-file.php:423
2175
- #: inc/class-jobtype-file.php:429
2176
  #, php-format
2177
  #@ backwpup
2178
  msgid "Added \"%s\" to backup file list"
2179
  msgstr "\"%s\" zur Backup Datei-Liste hinzugefügt."
2180
 
2181
- #: inc/class-jobtype-file.php:434
2182
  #@ backwpup
2183
  msgid "No folder to back up."
2184
  msgstr "Keine Ordner zum Sichern"
2185
 
2186
- #: inc/class-jobtype-file.php:436
2187
  #, php-format
2188
  #@ backwpup
2189
  msgid "%1$d folders to back up."
2190
  msgstr "%1$d Ordner zu sichern"
2191
 
2192
- #: inc/class-jobtype-file.php:473
2193
  #, php-format
2194
  #@ backwpup
2195
  msgid "Folder \"%s\" is not readable!"
@@ -2412,7 +2415,7 @@ msgid "working since %d seconds"
2412
  msgstr "in Arbeit seit %d Sek."
2413
 
2414
  #: inc/class-page-backwpup.php:262
2415
- #: inc/class-page-jobs.php:436
2416
  #@ backwpup
2417
  msgid "Abort"
2418
  msgstr "Abbrechen"
@@ -2971,62 +2974,62 @@ msgstr "Protokoll"
2971
  msgid "Copy of"
2972
  msgstr "Kopie von"
2973
 
2974
- #: inc/class-page-jobs.php:319
2975
  #, php-format
2976
  #@ backwpup
2977
  msgid "Job \"%s\" started."
2978
  msgstr "Auftrag \"%s\" wurde gestartet."
2979
 
2980
- #: inc/class-page-jobs.php:345
2981
  #: inc/class-wp-cli.php:47
2982
  #@ backwpup
2983
  msgid "Aborted by user!"
2984
  msgstr "Abgebrochen vom Benutzer!"
2985
 
2986
- #: inc/class-page-jobs.php:374
2987
  #: inc/class-wp-cli.php:77
2988
  #@ backwpup
2989
  msgid "Job will be terminated."
2990
  msgstr "Auftrag wird beendet."
2991
 
2992
- #: inc/class-page-jobs.php:414
2993
  #, php-format
2994
  #@ backwpup
2995
  msgid "%s Jobs"
2996
  msgstr "%s Aufträge"
2997
 
2998
- #: inc/class-page-jobs.php:432
2999
  #, php-format
3000
  #@ backwpup
3001
  msgid "Job currently working: %s"
3002
  msgstr "Aktueller Auftrag wird bearbeitet: %s"
3003
 
3004
- #: inc/class-page-jobs.php:433
3005
  #@ backwpup
3006
  msgid "Warnings:"
3007
  msgstr "Warnungen:"
3008
 
3009
- #: inc/class-page-jobs.php:434
3010
  #@ backwpup
3011
  msgid "Errors:"
3012
  msgstr "Fehler:"
3013
 
3014
- #: inc/class-page-jobs.php:435
3015
  #@ backwpup
3016
  msgid "Display working log"
3017
  msgstr "Zeige Auftragslog"
3018
 
3019
- #: inc/class-page-jobs.php:437
3020
  #@ backwpup
3021
  msgid "Close working screen"
3022
  msgstr "Arbeitsfläche schließen"
3023
 
3024
- #: inc/class-page-jobs.php:437
3025
  #@ backwpup
3026
  msgid "close"
3027
  msgstr "schließen"
3028
 
3029
- #: inc/class-page-jobs.php:565
3030
  #@ backwpup
3031
  msgid "Job end"
3032
  msgstr "Auftragsende"
@@ -4404,7 +4407,7 @@ msgstr "Inpsyde GmbH"
4404
  msgid "http://inpsyde.com"
4405
  msgstr "http://inpsyde.com"
4406
 
4407
- #: inc/class-admin.php:430
4408
  #, php-format
4409
  #@ backwpup
4410
  msgid "You have activatetd or updated BackWPup please check <a href=\"%s\">here</a>."
@@ -4415,7 +4418,7 @@ msgstr "Du hast BackWPup aktiviert oder aktualisiert. Bitte siehe <a href=\"%s\"
4415
  msgid "running"
4416
  msgstr "läuft"
4417
 
4418
- #: inc/class-destination-sugarsync.php:268
4419
  #@ backwpup
4420
  msgid "Upload to SugarSync now started &hellip;"
4421
  msgstr "Der Upload zu SugarSync wird jetzt gestartet &hellip;"
@@ -4430,7 +4433,7 @@ msgstr "Auftragsstart"
4430
  msgid "No destination correctly defined for backup! Please correct job settings."
4431
  msgstr "Es wurde kein korrektes Backupziel definiert! Bitte überprüfe die Auftragseinstellungen."
4432
 
4433
- #: inc/class-job.php:1252
4434
  #@ backwpup
4435
  msgid "WordPress Maintenance mode not activated on Manual run. Because it disappears displaying of working progress."
4436
  msgstr "Der WordPress-Wartungsmodus wurde nicht aktiviert, da der Auftrag manuell gestartet wurde. Dies würde die Fortschrittsanzeige behindern."
@@ -4678,12 +4681,12 @@ msgstr "[INFO] Maximale Script ausführungszeit ist %1$d Sekunden"
4678
  msgid "Runtime: %d seconds"
4679
  msgstr "Ausführungszeit: %d Sekunden"
4680
 
4681
- #: inc/class-job.php:611
4682
  #@ backwpup
4683
  msgid "Second process start terminated, because a other job is already running!"
4684
  msgstr "Ein zweiter Prozess start wurde abgebrochen, weil der alte Auftrag noch läuft!"
4685
 
4686
- #: inc/class-job.php:829
4687
  #, php-format
4688
  #@ backwpup
4689
  msgid "Signal %d is sent to script!"
@@ -4718,7 +4721,7 @@ msgstr "Handbuch"
4718
  msgid "[INFO] BackWPup job started form commandline interface"
4719
  msgstr "[INFO] BackWPup-Auftrag per Kommandozeile gestartet"
4720
 
4721
- #: inc/class-job.php:531
4722
  #@ default
4723
  msgid "Job Started"
4724
  msgstr ""
@@ -4887,12 +4890,14 @@ msgstr "Bitte deaktiviere den veralteten <a href=\"%s\">PHP-safe-mode</a>."
4887
  msgid "We recommend to install the PHP FTP extension to use the FTP backup destination."
4888
  msgstr "Wir empfehlen, die PHP-Erweiterung FTP zu installieren, um das Speicherziel FTP zu verwenden."
4889
 
 
4890
  #: inc/features/class-wizard-systemtest.php:153
4891
  #, php-format
4892
  #@ backwpup
4893
  msgid "Temp folder %s does not exist and cannot be created. Please create it and set proper write permissions."
4894
  msgstr "Das temporäre Verzeichnis %s existiert nicht, und es kann auch nicht erstellt werden. Bitte erstellen Sie es, und setzen Sie die passenden Schreibrechte."
4895
 
 
4896
  #: inc/features/class-wizard-systemtest.php:164
4897
  #, php-format
4898
  #@ backwpup
@@ -4960,13 +4965,13 @@ msgstr "FTP-Einstellungen"
4960
  msgid "%d. Try to send backup file to a FTP Server &hellip;"
4961
  msgstr "%d. Versuche, Backup zum FTP-Server zu schicken …"
4962
 
4963
- #: inc/class-destination-sugarsync.php:245
4964
  #, php-format
4965
  #@ backwpup
4966
  msgid "%d. Try to send backup to SugarSync &hellip;"
4967
  msgstr "%d. Versuche, Backup an SugarSync zu schicken …"
4968
 
4969
- #: inc/class-destination-sugarsync.php:255
4970
  #@ backwpup
4971
  msgid "No free space left on SugarSync!"
4972
  msgstr "Kein Platz mehr frei bei SugarSync!"
@@ -5116,14 +5121,14 @@ msgstr "Bei Schritt: %s"
5116
  msgid "Last message: %s"
5117
  msgstr "Letzte Nachricht: %s"
5118
 
5119
- #: inc/class-admin.php:396
5120
  #, php-format
5121
  #@ backwpup
5122
  msgctxt "link to Inpsyde.com, link text: Inpsyde GmbH"
5123
  msgid "A project of %s"
5124
  msgstr "Ein Projekt der %s"
5125
 
5126
- #: inc/class-admin.php:397
5127
  #, php-format
5128
  #@ backwpup
5129
  msgctxt "developer name, link text: Daniel Hüsken"
@@ -5414,70 +5419,70 @@ msgid "BackWPup requires PHP version 5.2.6 or greater and WordPress 3.2 or great
5414
  msgstr "BackWPup Braucht PHP in der Version 5.2.6 oder höher und WordPress in der Version 3.2 oder höher."
5415
 
5416
  #: inc/class-create-archive.php:78
5417
- #: inc/class-create-archive.php:128
5418
- #: inc/class-create-archive.php:141
5419
- #: inc/class-mysqldump.php:106
5420
  #@ backwpup
5421
  msgid "Functions for gz compression not available"
5422
  msgstr "Die Funktionen für die Gzip-Kompression sind nicht verfügbar."
5423
 
5424
- #: inc/class-create-archive.php:93
5425
- #: inc/class-create-archive.php:147
5426
- #: inc/class-mysqldump.php:110
5427
  #@ backwpup
5428
  msgid "Functions for bz2 compression not available"
5429
  msgstr "Die Funktionen für die Bz2-Kompression sind nicht verfügbar."
5430
 
5431
- #: inc/class-create-archive.php:157
5432
  #@ backwpup
5433
  msgid "Can not open archive file"
5434
  msgstr "Kann Archivdatei nicht öffnen"
5435
 
5436
- #: inc/class-create-archive.php:240
5437
  #: inc/class-create-archive.php:254
5438
- #: inc/class-create-archive.php:379
 
5439
  #, php-format
5440
  #@ backwpup
5441
  msgid "Can not open source file %s to archive"
5442
  msgstr "Konnte Quelle %s zum Archivieren nicht öffnen"
5443
 
5444
- #: inc/class-create-archive.php:286
5445
  #, php-format
5446
  #@ backwpup
5447
  msgid "PclZip archive add error: %s"
5448
  msgstr "Fehler beim Hinzufügen zum PclZip-Archive: %s"
5449
 
5450
- #: inc/class-create-archive.php:351
5451
  #, php-format
5452
  #@ backwpup
5453
  msgctxt "Text of ZipArchive status Massage"
5454
  msgid "ZipArchive returns status: %s"
5455
  msgstr "Das Zip-Archive liefert den Status: %s"
5456
 
5457
- #: inc/class-job.php:1613
5458
  #, php-format
5459
  #@ backwpup
5460
  msgid "%d. Trying to create backup archive &hellip;"
5461
  msgstr "%d. Versuche, Backup zu erstellen …"
5462
 
5463
- #: inc/class-job.php:1620
5464
  #, php-format
5465
  #@ backwpup
5466
  msgctxt "Archive compression method"
5467
  msgid "Compression method is %s"
5468
  msgstr "Komprimierungsmethode ist %s"
5469
 
5470
- #: inc/class-job.php:1647
5471
  #@ backwpup
5472
  msgid "Backup archive created."
5473
  msgstr "Backup wurde erstellt."
5474
 
5475
- #: inc/class-mysqldump.php:122
5476
  #@ backwpup
5477
  msgid "Can not open dump file"
5478
  msgstr "Konnte Backup nicht öffnen"
5479
 
5480
- #: inc/class-mysqldump.php:383
5481
  #@ backwpup
5482
  msgid "Error on writing to file!"
5483
  msgstr "Fehler beim Schreiben!"
@@ -5530,32 +5535,34 @@ msgctxt "%s = Folder name"
5530
  msgid "Folder %s for the archive not found"
5531
  msgstr "Verzeichnis %s für das Archiv nicht gefunden"
5532
 
5533
- #: inc/class-create-archive.php:125
5534
  #, php-format
5535
  #@ backwpup
5536
  msgctxt "ZipArchive open() result"
5537
  msgid "Can not create zip archive: %d"
5538
  msgstr "Konte ZIP-Datei %s nicht erstellen"
5539
 
5540
- #: inc/class-create-archive.php:152
5541
  #, php-format
5542
  #@ backwpup
5543
  msgctxt "%s = file name"
5544
  msgid "Method to archive file %s not detected"
5545
  msgstr "Methode zum Archivieren der Datei %s nicht gefunden"
5546
 
5547
- #: inc/class-create-archive.php:222
5548
  #@ backwpup
5549
  msgid "File name cannot be empty"
5550
  msgstr "Der Dateiname kann nicht leer sein."
5551
 
5552
- #: inc/class-create-archive.php:235
5553
  #: inc/class-create-archive.php:249
 
 
 
5554
  #@ backwpup
5555
  msgid "This archive method can only add one file"
5556
  msgstr "Diese Archive-Methode kann nur eine einziges Datei sichern."
5557
 
5558
- #: inc/class-mysqldump.php:92
5559
  #, php-format
5560
  #@ backwpup
5561
  msgctxt "Database Charset"
@@ -5585,7 +5592,7 @@ msgctxt "%s = Remote Code"
5585
  msgid "Could not connect to remote host, code %d. Please try again later."
5586
  msgstr "Konnte nicht zum Remote-Host verbinden, code: %s. Bitte versuchen Sie es später."
5587
 
5588
- #: inc/class-create-archive.php:225
5589
  #, php-format
5590
  #@ backwpup
5591
  msgctxt "File path to add to archive"
@@ -5652,26 +5659,28 @@ msgstr "%1$s Version %2$s. Ein Projekt der <a href=\"http://inpsyde.com\">Inpsyd
5652
  msgid "Plugin on wordpress.org"
5653
  msgstr "Plugin auf wordpress.org"
5654
 
5655
- #: inc/class-job.php:1569
5656
  #, php-format
5657
  #@ backwpup
5658
  msgctxt "Folder name"
5659
  msgid "Folder %s not exists"
5660
  msgstr "Verzeichnis %s existiert nicht"
5661
 
5662
- #: inc/class-job.php:1573
5663
  #, php-format
5664
  #@ backwpup
5665
  msgctxt "Folder name"
5666
  msgid "Folder %s not readable"
5667
  msgstr "Verzeichnis %s ist nicht lesbar"
5668
 
 
5669
  #: inc/features/class-wizard-systemtest.php:148
5670
  #, php-format
5671
  #@ backwpup
5672
  msgid "Temp folder %s not read or writable. Please set proper write permissions."
5673
  msgstr "Das Temporäre Verzeichnis %s ist nicht lesbar oder schreibbar. Bitte setze Schreibberechtigung."
5674
 
 
5675
  #: inc/features/class-wizard-systemtest.php:160
5676
  #, php-format
5677
  #@ backwpup
@@ -5853,12 +5862,6 @@ msgstr "http://marketpress.de/product/backwpup-pro/"
5853
  msgid "GET PRO"
5854
  msgstr "GET PRO"
5855
 
5856
- #. translators: plugin header field 'Version'
5857
- #: backwpup.php:0
5858
- #@ backwpup
5859
- msgid "3.0.1"
5860
- msgstr ""
5861
-
5862
  #: inc/class-destination-s3.php:187
5863
  #@ backwpup
5864
  msgid "Multipart Upload"
@@ -5874,7 +5877,7 @@ msgstr "Benutze Multipart Upload zu hochladen der Datei"
5874
  msgid "Mutipart split the file into peaces of chucks while uploading. It is needed for displaying upload process and can transfer bigger files. Im moment there are problems on Google storage with this option"
5875
  msgstr "Multipart splittet den Upload in mehrere teile auf. Das wird benötigt um die Fortschrittsanzeige zu machen und um groß Dateien hochzuladen. Im moment gibt es mit dieser Option Probleme bei Google Storage"
5876
 
5877
- #: inc/class-destination-s3.php:393
5878
  #, php-format
5879
  #@ backwpup
5880
  msgid "Connected to S3 Bucket \"%1$s\" in %2$s"
@@ -5905,3 +5908,61 @@ msgstr "E-Mail Absender Name"
5905
  msgid "Name and email of email sender in the mail formant. Name &lt;emailadress&gt;"
5906
  msgstr "Name des E-Mail Senders im E-MAil formart. <code>Name &lt;E-Mail-Adresse&gt;</code>"
5907
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  msgid ""
2
  msgstr ""
3
+ "Project-Id-Version: BackWPup Pro v3.0.2\n"
4
  "Report-Msgid-Bugs-To: \n"
5
  "POT-Creation-Date: 2013-02-06 17:42+0100\n"
6
+ "PO-Revision-Date: 2013-03-01 13:51:45-0600\n"
7
  "Last-Translator: Frank Bueltge <frank@bueltge.de>\n"
8
  "Language-Team: INPSYDE <info@inpsyde.com>\n"
9
  "MIME-Version: 1.0\n"
72
  msgid "Settings"
73
  msgstr "Einstellungen"
74
 
75
+ #: inc/class-admin.php:281
76
+ #: inc/class-admin.php:287
77
  #@ backwpup
78
  msgid "Cheating Huh?"
79
  msgstr "Schummeln, was?"
80
 
81
+ #: inc/class-admin.php:321
82
  #@ backwpup
83
  msgid "Jobs overview"
84
  msgstr "Auftragsübersicht"
85
 
86
+ #: inc/class-admin.php:321
87
  #: inc/class-page-jobs.php:134
88
  #@ backwpup
89
  msgid "Run now"
90
  msgstr "Jetzt starten"
91
 
92
+ #: inc/class-admin.php:411
93
  #, php-format
94
  #@ backwpup
95
  msgid "version %s"
111
  msgstr "Abbrechen!"
112
 
113
  #: inc/class-adminbar.php:91
114
+ #: inc/class-page-jobs.php:450
115
  #@ backwpupadminbar
116
  #@ backwpup
117
  msgid "Add New"
130
  msgstr "Jetzt starten"
131
 
132
  #: inc/class-cron.php:53
133
+ #: inc/class-job.php:994
134
+ #: inc/class-page-jobs.php:381
135
  #: inc/class-wp-cli.php:47
136
  #@ backwpup
137
  msgid "ERROR:"
143
  msgstr "Abgebrochen, da seit 2 Stunden kein Fortschritt!"
144
 
145
  #: inc/class-cron.php:84
146
+ #: inc/class-job.php:1221
147
  #, php-format
148
  #@ backwpup
149
  msgid "[%3$s] BackWPup log %1$s: %2$s"
150
  msgstr "[%3$s] BackWPup Log %1$s: %2$s"
151
 
152
  #: inc/class-cron.php:84
153
+ #: inc/class-job.php:1217
154
  #@ backwpup
155
  msgid "ERROR"
156
  msgstr "FEHLER"
337
  msgstr "Hochladen zur Dropbox hat begonnen &hellip;"
338
 
339
  #: inc/class-destination-dropbox.php:265
340
+ #: inc/class-destination-msazure.php:249
341
+ #: inc/class-destination-sugarsync.php:272
342
  #, php-format
343
  #@ backwpup
344
  msgid "Backup transferred to %s"
385
  msgid "Folder to store the backups in"
386
  msgstr "Ordner für Backups"
387
 
388
+ #: inc/class-destination-folder.php:205
389
  #, php-format
390
  #@ backwpup
391
  msgid "One backup file deleted"
819
  msgid "MS Azure container create: %s"
820
  msgstr "MS Azure Container erstellen: %s"
821
 
822
+ #: inc/class-destination-msazure.php:221
823
  #, php-format
824
  #@ backwpup
825
  msgid "%d. Try sending backup to a Microsoft Azure (Blob) &hellip;"
826
  msgstr "%d. Versuche, das Backup zu Microsoft Azure (Blob) zu senden &hellip;"
827
 
828
+ #: inc/class-destination-msazure.php:238
829
  #: inc/features/class-destination-msazure-pro.php:108
830
  #, php-format
831
  #@ backwpup
832
  msgid "MS Azure container \"%s\" does not exist!"
833
  msgstr "MS Azure Container \"%s\" existiert nicht!"
834
 
835
+ #: inc/class-destination-msazure.php:242
836
  #: inc/features/class-destination-msazure-pro.php:112
837
  #, php-format
838
  #@ backwpup
839
  msgid "Connected to MS Azure container \"%s\"."
840
  msgstr "Verbunden mit MS Azure container \"%s\""
841
 
842
+ #: inc/class-destination-msazure.php:246
843
  #@ backwpup
844
  msgid "Upload to MS Azure now started &hellip;"
845
  msgstr "Hochladen zu MS Azure hat begonnen &hellip;"
846
 
847
+ #: inc/class-destination-msazure.php:291
848
  #, php-format
849
  #@ backwpup
850
  msgid "One file deleted on Microsoft Azure container."
852
  msgstr[0] "Eine Datei im Microsoft-Azure-Container gelöscht"
853
  msgstr[1] "%d Dateien im Microsoft-Azure-Container gelöscht"
854
 
855
+ #: inc/class-destination-msazure.php:297
856
  #: inc/features/class-destination-msazure-pro.php:172
857
  #, php-format
858
  #@ backwpup
859
  msgid "Microsoft Azure API: %s"
860
  msgstr "Microsoft Azure API: %s"
861
 
862
+ #: inc/class-destination-msazure.php:379
863
  #@ backwpup
864
  msgid "Missing Account Name!"
865
  msgstr "Kontoname (Benutzername) nicht angegeben!"
866
 
867
+ #: inc/class-destination-msazure.php:381
868
  #@ backwpup
869
  msgid "Missing Access Key!"
870
  msgstr "Zugangsschlüssel (Access Key) nicht angegeben!"
871
 
872
+ #: inc/class-destination-msazure.php:385
873
  #@ backwpup
874
  msgid "No Container found!"
875
  msgstr "Kein Container gefunden!"
939
  msgstr "Rackspace Cloud Container \"%s\" erstellt."
940
 
941
  #: inc/class-destination-rsc.php:160
942
+ #: inc/class-destination-rsc.php:269
943
+ #: inc/class-destination-rsc.php:297
944
+ #: inc/class-destination-rsc.php:345
945
  #: inc/features/class-destination-rsc-pro.php:104
946
  #: inc/features/class-destination-rsc-pro.php:147
947
  #: inc/features/class-destination-rsc-pro.php:220
950
  msgid "Rackspace Cloud API: %s"
951
  msgstr "Rackspace Cloud API: %s"
952
 
953
+ #: inc/class-destination-rsc.php:250
954
  #, php-format
955
  #@ backwpup
956
  msgid "%d. Trying to send backup file to Rackspace cloud &hellip;"
957
  msgstr "%d. Versuche, ein Backup zur Rackspace Cloud zu senden &hellip;"
958
 
959
+ #: inc/class-destination-rsc.php:266
960
  #, php-format
961
  #@ backwpup
962
  msgid "Connected to Rackspace cloud files container %s"
963
  msgstr "Verbunden mit Rackspace Cloud Container %s"
964
 
965
+ #: inc/class-destination-rsc.php:278
966
  #@ backwpup
967
  msgid "Upload to Rackspace cloud started &hellip;"
968
  msgstr "Upload zur Rackspace Cloud nun gestartet &hellip;"
969
 
970
+ #: inc/class-destination-rsc.php:287
971
  #@ backwpup
972
  msgid "Backup File transferred to RSC://"
973
  msgstr "Datensicherungsdatei übertragen zu RSC://"
974
 
975
+ #: inc/class-destination-rsc.php:291
976
  #@ backwpup
977
  msgid "Can not transfer backup to Rackspace cloud."
978
  msgstr "Kann das Backup nicht zur Rackspace Cloud transferieren"
979
 
980
+ #: inc/class-destination-rsc.php:339
981
  #, php-format
982
  #@ backwpup
983
  msgid "One file deleted on Rackspace cloud container."
985
  msgstr[0] "Eine Datei im Rackspace-Container gelöscht"
986
  msgstr[1] "%d Dateien im Rackspace-Container gelöscht"
987
 
988
+ #: inc/class-destination-rsc.php:449
989
  #@ backwpup
990
  msgid "Missing Username!"
991
  msgstr "Falscher Benutzername!"
992
 
993
+ #: inc/class-destination-rsc.php:451
994
  #@ backwpup
995
  msgid "Missing API Key!"
996
  msgstr "API-Schlüssel wird fehlt!"
997
 
998
+ #: inc/class-destination-rsc.php:455
999
  #@ backwpup
1000
  msgid "No Container's found!"
1001
  msgstr "Keine Container gefunden!"
1170
  msgstr "%s ist kein gültiger Bucket Name"
1171
 
1172
  #: inc/class-destination-s3.php:317
1173
+ #: inc/class-destination-s3.php:423
1174
+ #: inc/class-destination-s3.php:454
1175
+ #: inc/class-destination-s3.php:475
1176
+ #: inc/class-destination-s3.php:534
1177
  #: inc/features/class-destination-s3-pro.php:280
1178
  #, php-format
1179
  #@ backwpup
1180
  msgid "S3 Service API: %s"
1181
  msgstr "S3 Service API: %s"
1182
 
1183
+ #: inc/class-destination-s3.php:379
1184
  #, php-format
1185
  #@ backwpup
1186
  msgid "%d. Trying to send backup file to S3 Service &hellip;"
1187
  msgstr "%d. Versuche, ein Backup zum S3-Service zu senden &hellip;"
1188
 
1189
+ #: inc/class-destination-s3.php:394
1190
  #: inc/features/class-destination-s3-pro.php:168
1191
  #, php-format
1192
  #@ backwpup
1193
  msgid "S3 Bucket \"%s\" does not exist!"
1194
  msgstr "Amazon S3 Bucket \"%s\" existiert nicht!"
1195
 
1196
+ #: inc/class-destination-s3.php:400
1197
  #@ backwpup
1198
  msgid "Upload to S3 Service started &hellip;"
1199
  msgstr "Upload zum S3 Service jetzt gestartet &hellip;"
1200
 
1201
+ #: inc/class-destination-s3.php:466
1202
  #, php-format
1203
  #@ backwpup
1204
  msgid "Backup transferred to %s."
1205
  msgstr "Datensicherung übertragen zu %s"
1206
 
1207
+ #: inc/class-destination-s3.php:471
1208
  #, php-format
1209
  #@ backwpup
1210
  msgid "Can not transfer backup to S3! (%1$d) %2$s"
1211
  msgstr "Datensicherung kann nicht zu Amazon S3 übertragen werden! (%1$d) %2$s"
1212
 
1213
+ #: inc/class-destination-s3.php:524
1214
  #, php-format
1215
  #@ backwpup
1216
  msgid "Can not delete backup on %s."
1217
  msgstr "Kann das Backup auf %s nicht löschen"
1218
 
1219
+ #: inc/class-destination-s3.php:528
1220
  #, php-format
1221
  #@ backwpup
1222
  msgid "One file deleted on S3 Bucket."
1224
  msgstr[0] "Eine Datei im S3-Bucket gelöscht"
1225
  msgstr[1] "%d Dateien im S3-Bucket gelöscht"
1226
 
1227
+ #: inc/class-destination-s3.php:631
1228
  #@ backwpup
1229
  msgid "Missing access key!"
1230
  msgstr "Der Zugangsschlüssel (Access Key) fehlt!"
1231
 
1232
+ #: inc/class-destination-s3.php:633
1233
  #@ backwpup
1234
  msgid "Missing secret access key!"
1235
  msgstr "Der geheime Zugangsschlüssel (Secret Access Key) fehlt!"
1236
 
1237
+ #: inc/class-destination-s3.php:637
1238
  #@ backwpup
1239
  msgid "No bucket found!"
1240
  msgstr "Kein Bucket gefunden!"
1322
  msgid "Folder in root"
1323
  msgstr "Ordner im Wurzelverzeichnis"
1324
 
1325
+ #: inc/class-destination-sugarsync.php:250
1326
  #, php-format
1327
  #@ backwpup
1328
  msgid "Authed to SugarSync with Nick %s"
1329
  msgstr "Authentifiziert mit SugarSync, mit dem Namen %s"
1330
 
1331
+ #: inc/class-destination-sugarsync.php:259
1332
  #, php-format
1333
  #@ backwpup
1334
  msgid "%s free on SugarSync"
1335
  msgstr "%s frei bei SugarSync"
1336
 
1337
+ #: inc/class-destination-sugarsync.php:275
1338
  #@ backwpup
1339
  msgid "Can not transfer backup to SugarSync!"
1340
  msgstr "Datensicherung kann nicht zu SugarSync übertragen werden!"
1341
 
1342
+ #: inc/class-destination-sugarsync.php:314
1343
  #, php-format
1344
  #@ backwpup
1345
  msgid "One file deleted on SugarSync folder"
1347
  msgstr[0] "Eine Datei im SugarSync-Ordner gelöscht"
1348
  msgstr[1] "%d Dateien im SugarSync-Ordner gelöscht"
1349
 
1350
+ #: inc/class-destination-sugarsync.php:320
1351
  #, php-format
1352
  #@ backwpup
1353
  msgid "SugarSync API: %s"
1488
 
1489
  #: inc/class-job.php:443
1490
  #: inc/class-job.php:444
1491
+ #: inc/class-job.php:518
1492
+ #: inc/class-job.php:519
1493
+ #: inc/class-job.php:567
1494
  #@ backwpup
1495
  msgid "Wrong BackWPup JobID"
1496
  msgstr "Falsche BackWPup JobID"
1497
 
1498
  #: inc/class-job.php:448
1499
  #: inc/class-job.php:449
1500
+ #: inc/class-job.php:524
1501
+ #: inc/class-job.php:573
1502
  #@ backwpup
1503
  msgid "Log folder does not exist or is not writable for BackWPup"
1504
  msgstr "Log-Ordner existiert nicht oder ist nicht beschreibbar für BackWPup"
1505
 
1506
  #: inc/class-job.php:452
1507
  #: inc/class-job.php:453
1508
+ #: inc/class-job.php:528
1509
+ #: inc/class-job.php:578
1510
  #@ backwpup
1511
  msgid "Temp folder does not exist or is not writable for BackWPup"
1512
  msgstr "Temp Ordner existiert nicht oder ist nicht beschreibbar für BackWPup!"
1513
 
1514
+ #: inc/class-job.php:463
1515
+ #: inc/class-job.php:464
1516
  #@ backwpup
1517
  msgid "No BackWPup job running"
1518
  msgstr "Kein aktiver BackWPup-Auftrag"
1519
 
1520
+ #: inc/class-job.php:467
1521
+ #: inc/class-job.php:468
1522
+ #: inc/class-job.php:532
1523
+ #: inc/class-job.php:533
1524
+ #: inc/class-job.php:585
1525
  #@ backwpup
1526
  msgid "A BackWPup job is already running"
1527
  msgstr "Es läuft bereits ein BackWPup-Auftrag"
1528
 
1529
+ #: inc/class-job.php:523
1530
  #@ backwpup
1531
  msgid "Log folder does not exist or is not writable"
1532
  msgstr "Log-Ordner existiert nicht oder ist nicht beschreibbar"
1533
 
1534
+ #: inc/class-job.php:527
1535
  #@ backwpup
1536
  msgid "Temp folder does not exist or is not writable"
1537
  msgstr "Temp Ordner existiert nicht oder ist nicht beschreibbar"
1538
 
1539
+ #: inc/class-job.php:613
1540
  #@ backwpup
1541
  msgid "Job restart due to inactivity for more than 5 minutes."
1542
  msgstr "Auftrag durch Inaktivität von mehr als 5 Minuten neu gestartet"
1543
 
1544
+ #: inc/class-job.php:733
1545
  #@ backwpup
1546
  msgid "Step aborted: too many attempts!"
1547
  msgstr "Schritt abgebrochen durch zu viele Versuche!"
1548
 
1549
+ #: inc/class-job.php:858
1550
  #, php-format
1551
  #@ backwpup
1552
  msgid "%d. Script stopped! Will start again."
1553
  msgstr "%d. Script stoppt! Wird neu gestartet"
1554
 
1555
+ #: inc/class-job.php:887
1556
  #, php-format
1557
  #@ backwpup
1558
  msgid "Please use another folder: %1$s"
1559
  msgstr "Bitte einen anderen Ordner auswählen: %1$s"
1560
 
1561
+ #: inc/class-job.php:894
1562
  #, php-format
1563
  #@ backwpup
1564
  msgid "Can not create folder: %1$s"
1565
  msgstr "Kann keinen Ordner erstellen: %1$s"
1566
 
1567
+ #: inc/class-job.php:902
1568
  #, php-format
1569
  #@ backwpup
1570
  msgid "Folder \"%1$s\" is not writable"
1571
  msgstr "Ordner \"%1$s\" ist nicht beschreibbar"
1572
 
1573
+ #: inc/class-job.php:927
1574
  #, php-format
1575
  #@ backwpup
1576
  msgid "Exception caught in %1$s: %2$s"
1577
  msgstr "Ausnahme eingefangen in %1$s: %2$s"
1578
 
1579
+ #: inc/class-job.php:985
1580
  #@ backwpup
1581
  msgid "WARNING:"
1582
  msgstr "WARNUNG:"
1583
 
1584
+ #: inc/class-job.php:998
1585
  #@ backwpup
1586
  msgid "DEPRECATED:"
1587
  msgstr "ABGELEHNT:"
1588
 
1589
+ #: inc/class-job.php:1001
1590
  #@ backwpup
1591
  msgid "STRICT NOTICE:"
1592
  msgstr "EXAKTE NOTIZ:"
1593
 
1594
+ #: inc/class-job.php:1004
1595
  #@ backwpup
1596
  msgid "RECOVERABLE ERROR:"
1597
  msgstr "WIEDERHERSTELLUNGS FEHLER:"
1598
 
1599
+ #: inc/class-job.php:1140
1600
  #, php-format
1601
  #@ backwpup
1602
  msgid "One old log deleted"
1604
  msgstr[0] "Eine alte Log-Datei gelöscht"
1605
  msgstr[1] "%d alte Log-Dateien gelöscht"
1606
 
1607
+ #: inc/class-job.php:1145
1608
+ #: inc/class-page-jobs.php:603
1609
  #, php-format
1610
  #@ backwpup
1611
  msgid "Job done in %s seconds."
1612
  msgstr "Auftrag erledigt in %s Sekunden."
1613
 
1614
+ #: inc/class-job.php:1210
1615
  #@ backwpup
1616
  msgid "SUCCESSFUL"
1617
  msgstr "ERFOLGREICH"
1618
 
1619
+ #: inc/class-job.php:1213
1620
  #@ backwpup
1621
  msgid "WARNING"
1622
  msgstr "WARNUNG"
1623
 
1624
+ #: inc/class-job.php:1256
1625
  #@ backwpup
1626
  msgid "Set blog into maintenance mode"
1627
  msgstr "Webseite / Blog in den Wartungsmodus versetzen"
1628
 
1629
+ #: inc/class-job.php:1269
1630
  #@ backwpup
1631
  msgid "Cannot set blog into maintenance mode! .maintenance is not writable!"
1632
  msgstr "Die Webseite kann nicht in den Wartungsmodus gesetzt werden! Das Root-Verzeichnis ist nicht beschreibbar!"
1633
 
1634
+ #: inc/class-job.php:1274
1635
  #@ backwpup
1636
  msgid "Set blog to normal mode"
1637
  msgstr "Setze Webseite / Blog zurück in den Normalmodus"
1638
 
1639
+ #: inc/class-job.php:1304
1640
  #, php-format
1641
  #@ backwpup
1642
  msgid "Memory increased from %1$s to %2$s"
1643
  msgstr "Speicher(limit) erhöht von %1$s auf %2$s"
1644
 
1645
+ #: inc/class-job.php:1306
1646
  #, php-format
1647
  #@ backwpup
1648
  msgid "Can not increase memory limit. The current value is %1$s"
1649
  msgstr "Das PHP-Speicherlimit kann nicht erhöht werden, es beträgt derzeit %1$s "
1650
 
1651
+ #: inc/class-job.php:1599
1652
  #, php-format
1653
  #@ backwpup
1654
  msgid "File \"%s\" is not readable!"
1655
  msgstr "Datei \"%s\" ist nicht lesbar!"
1656
 
1657
+ #: inc/class-job.php:1601
1658
  #, php-format
1659
  #@ backwpup
1660
  msgid "Link \"%s\" not followed."
1661
  msgstr "Link \"%s\" wird nicht gefolgt"
1662
 
1663
+ #: inc/class-create-archive.php:294
1664
+ #: inc/class-create-archive.php:353
1665
  #, php-format
1666
  #@ backwpup
1667
  msgid "Can not add \"%s\" to zip archive!"
1668
  msgstr "\"%s\" kann dem ZIP-Archiv nicht hinzugefügt werden!"
1669
 
1670
+ #: inc/class-create-archive.php:377
1671
  #@ backwpup
1672
  msgid "(ER_MULTIDISK) Multi-disk zip archives not supported"
1673
  msgstr "(ER_MULTIDISK) Multi-Disk .zip Archive werden nicht unterstützt"
1674
 
1675
+ #: inc/class-create-archive.php:378
1676
  #@ backwpup
1677
  msgid "(ER_RENAME) Renaming temporary file failed"
1678
  msgstr "(ER_RENAME) Umbenennen der temporärern Dateien gescheitert."
1679
 
1680
+ #: inc/class-create-archive.php:379
1681
  #@ backwpup
1682
  msgid "(ER_CLOSE) Closing zip archive failed"
1683
  msgstr "(ER_CLOSE) Schließen der .zip Archive gescheitert"
1684
 
1685
+ #: inc/class-create-archive.php:380
1686
  #@ backwpup
1687
  msgid "(ER_SEEK) Seek error"
1688
  msgstr "(ER_SEEK) Such-Fehler"
1689
 
1690
+ #: inc/class-create-archive.php:381
1691
  #@ backwpup
1692
  msgid "(ER_READ) Read error"
1693
  msgstr "(ER_READ) Lese-Fehler"
1694
 
1695
+ #: inc/class-create-archive.php:382
1696
  #@ backwpup
1697
  msgid "(ER_WRITE) Write error"
1698
  msgstr "(ER_WRITE) Schreib-Fehler"
1699
 
1700
+ #: inc/class-create-archive.php:383
1701
  #@ backwpup
1702
  msgid "(ER_CRC) CRC error"
1703
  msgstr "(ER_CRC) CRC Fehler"
1704
 
1705
+ #: inc/class-create-archive.php:384
1706
  #@ backwpup
1707
  msgid "(ER_ZIPCLOSED) Containing zip archive was closed"
1708
  msgstr "(ER_ZIPCLOSED) beinhaltetendes .zip Archiv war geschlossen"
1709
 
1710
+ #: inc/class-create-archive.php:385
1711
  #@ backwpup
1712
  msgid "(ER_NOENT) No such file"
1713
  msgstr "(ER_NOENT) keine passende Datei"
1714
 
1715
+ #: inc/class-create-archive.php:386
1716
  #@ backwpup
1717
  msgid "(ER_EXISTS) File already exists"
1718
  msgstr "(ER_EXISTS) Datei exisitiert bereits"
1719
 
1720
+ #: inc/class-create-archive.php:387
1721
  #@ backwpup
1722
  msgid "(ER_OPEN) Can't open file"
1723
  msgstr "(ER_OPEN) Kann die Datei nicht öffnen"
1724
 
1725
+ #: inc/class-create-archive.php:388
1726
  #@ backwpup
1727
  msgid "(ER_TMPOPEN) Failure to create temporary file"
1728
  msgstr "(ER_TMPOPEN) Erstellen einer temporären Datei fehlgeschlagen"
1729
 
1730
+ #: inc/class-create-archive.php:389
1731
  #@ backwpup
1732
  msgid "(ER_ZLIB) Zlib error"
1733
  msgstr "(ER_ZLIB) Zlib Fehler"
1734
 
1735
+ #: inc/class-create-archive.php:390
1736
  #@ backwpup
1737
  msgid "(ER_MEMORY) Malloc failure"
1738
  msgstr "(ER_MEMORY) Malloc Fehler"
1739
 
1740
+ #: inc/class-create-archive.php:391
1741
  #@ backwpup
1742
  msgid "(ER_CHANGED) Entry has been changed"
1743
  msgstr "(ER_CHANGED) Eintrag wurde geändert"
1744
 
1745
+ #: inc/class-create-archive.php:392
1746
  #@ backwpup
1747
  msgid "(ER_COMPNOTSUPP) Compression method not supported"
1748
  msgstr "(ER_COMPNOTSUPP) Kompressionsmethode nicht unterstützt"
1749
 
1750
+ #: inc/class-create-archive.php:393
1751
  #@ backwpup
1752
  msgid "(ER_EOF) Premature EOF"
1753
  msgstr "(ER_EOF) verfrühtes EOF"
1754
 
1755
+ #: inc/class-create-archive.php:394
1756
  #@ backwpup
1757
  msgid "(ER_INVAL) Invalid argument"
1758
  msgstr "(ER_INVAL) ungültiges Argument"
1759
 
1760
+ #: inc/class-create-archive.php:395
1761
  #@ backwpup
1762
  msgid "(ER_NOZIP) Not a zip archive"
1763
  msgstr "(ER_NOZIP) kein .zip Archiv"
1764
 
1765
+ #: inc/class-create-archive.php:396
1766
  #@ backwpup
1767
  msgid "(ER_INTERNAL) Internal error"
1768
  msgstr "(ER_INTERNAL) Interner Fehler"
1769
 
1770
+ #: inc/class-create-archive.php:397
1771
  #@ backwpup
1772
  msgid "(ER_INCONS) Zip archive inconsistent"
1773
  msgstr "(ER_INCONS) .zip Archiv inkonsistent"
1774
 
1775
+ #: inc/class-create-archive.php:398
1776
  #@ backwpup
1777
  msgid "(ER_REMOVE) Can't remove file"
1778
  msgstr "(ER_REMOVE) Datei kann nicht entfernt werden"
1779
 
1780
+ #: inc/class-create-archive.php:399
1781
  #@ backwpup
1782
  msgid "(ER_DELETED) Entry has been deleted"
1783
  msgstr "(ER_DELETED) Eintrag wurde gelöscht"
1784
 
1785
+ #: inc/class-job.php:1666
1786
  #, php-format
1787
  #@ backwpup
1788
  msgid "Archive size is %s."
1789
  msgstr "Archivgröße ist %s"
1790
 
1791
+ #: inc/class-job.php:1667
1792
  #, php-format
1793
  #@ backwpup
1794
  msgid "%1$d Files with %2$s in Archive."
1795
  msgstr "%1$d Dateien mit %2$s in Archiven."
1796
 
1797
+ #: inc/class-create-archive.php:426
1798
  #, php-format
1799
  #@ backwpup
1800
  msgid "File name \"%1$s\" too long to be saved correctly in %2$s archive!"
1801
  msgstr "Dateiname \"%1$s\" ist zu lang, um korrekt im %2$s Archiv zu speichern."
1802
 
1803
+ #: inc/class-create-archive.php:428
1804
  #, php-format
1805
  #@ backwpup
1806
  msgid "File path \"%1$s\" too long to be saved correctly in %2$s archive!"
1807
  msgstr "Dateipfad \"%1$s\" ist zu lang, um korrekt in %2$s Archiv zu speichern"
1808
 
1809
+ #: inc/class-create-archive.php:438
1810
+ #: inc/class-create-archive.php:439
1811
+ #: inc/class-create-archive.php:514
1812
+ #: inc/class-create-archive.php:515
1813
  #@ backwpup
1814
  msgid "Unknown"
1815
  msgstr "Unbekannt"
1982
  msgid "BZip2"
1983
  msgstr "BZip2"
1984
 
1985
+ #: inc/class-mysqldump.php:89
1986
  #: inc/features/class-jobtype-dbdump-pro.php:700
1987
  #, php-format
1988
  #@ backwpup
1997
  msgid "Connected to database %1$s on %2$s"
1998
  msgstr "Mit Datenbank %1$s auf %2$s verbunden"
1999
 
2000
+ #: inc/class-mysqldump.php:130
2001
+ #: inc/class-mysqldump.php:140
2002
+ #: inc/class-mysqldump.php:217
2003
+ #: inc/class-mysqldump.php:228
2004
+ #: inc/class-mysqldump.php:240
2005
+ #: inc/class-mysqldump.php:251
2006
+ #: inc/class-mysqldump.php:289
2007
+ #: inc/class-mysqldump.php:310
2008
+ #: inc/class-mysqldump.php:324
2009
  #: inc/features/class-jobtype-dbdump-pro.php:713
2010
  #: inc/features/class-jobtype-dbdump-pro.php:727
2011
  #: inc/features/class-jobtype-dbdump-pro.php:776
2171
  msgstr "%d. Versuche, eine Liste der Ordner für das Backup zu erstellen …"
2172
 
2173
  #: inc/class-jobtype-file.php:399
2174
+ #: inc/class-jobtype-file.php:406
2175
+ #: inc/class-jobtype-file.php:413
2176
+ #: inc/class-jobtype-file.php:419
2177
+ #: inc/class-jobtype-file.php:425
2178
+ #: inc/class-jobtype-file.php:431
2179
  #, php-format
2180
  #@ backwpup
2181
  msgid "Added \"%s\" to backup file list"
2182
  msgstr "\"%s\" zur Backup Datei-Liste hinzugefügt."
2183
 
2184
+ #: inc/class-jobtype-file.php:436
2185
  #@ backwpup
2186
  msgid "No folder to back up."
2187
  msgstr "Keine Ordner zum Sichern"
2188
 
2189
+ #: inc/class-jobtype-file.php:438
2190
  #, php-format
2191
  #@ backwpup
2192
  msgid "%1$d folders to back up."
2193
  msgstr "%1$d Ordner zu sichern"
2194
 
2195
+ #: inc/class-jobtype-file.php:477
2196
  #, php-format
2197
  #@ backwpup
2198
  msgid "Folder \"%s\" is not readable!"
2415
  msgstr "in Arbeit seit %d Sek."
2416
 
2417
  #: inc/class-page-backwpup.php:262
2418
+ #: inc/class-page-jobs.php:472
2419
  #@ backwpup
2420
  msgid "Abort"
2421
  msgstr "Abbrechen"
2974
  msgid "Copy of"
2975
  msgstr "Kopie von"
2976
 
2977
+ #: inc/class-page-jobs.php:353
2978
  #, php-format
2979
  #@ backwpup
2980
  msgid "Job \"%s\" started."
2981
  msgstr "Auftrag \"%s\" wurde gestartet."
2982
 
2983
+ #: inc/class-page-jobs.php:381
2984
  #: inc/class-wp-cli.php:47
2985
  #@ backwpup
2986
  msgid "Aborted by user!"
2987
  msgstr "Abgebrochen vom Benutzer!"
2988
 
2989
+ #: inc/class-page-jobs.php:410
2990
  #: inc/class-wp-cli.php:77
2991
  #@ backwpup
2992
  msgid "Job will be terminated."
2993
  msgstr "Auftrag wird beendet."
2994
 
2995
+ #: inc/class-page-jobs.php:450
2996
  #, php-format
2997
  #@ backwpup
2998
  msgid "%s Jobs"
2999
  msgstr "%s Aufträge"
3000
 
3001
+ #: inc/class-page-jobs.php:468
3002
  #, php-format
3003
  #@ backwpup
3004
  msgid "Job currently working: %s"
3005
  msgstr "Aktueller Auftrag wird bearbeitet: %s"
3006
 
3007
+ #: inc/class-page-jobs.php:469
3008
  #@ backwpup
3009
  msgid "Warnings:"
3010
  msgstr "Warnungen:"
3011
 
3012
+ #: inc/class-page-jobs.php:470
3013
  #@ backwpup
3014
  msgid "Errors:"
3015
  msgstr "Fehler:"
3016
 
3017
+ #: inc/class-page-jobs.php:471
3018
  #@ backwpup
3019
  msgid "Display working log"
3020
  msgstr "Zeige Auftragslog"
3021
 
3022
+ #: inc/class-page-jobs.php:473
3023
  #@ backwpup
3024
  msgid "Close working screen"
3025
  msgstr "Arbeitsfläche schließen"
3026
 
3027
+ #: inc/class-page-jobs.php:473
3028
  #@ backwpup
3029
  msgid "close"
3030
  msgstr "schließen"
3031
 
3032
+ #: inc/class-page-jobs.php:602
3033
  #@ backwpup
3034
  msgid "Job end"
3035
  msgstr "Auftragsende"
4407
  msgid "http://inpsyde.com"
4408
  msgstr "http://inpsyde.com"
4409
 
4410
+ #: inc/class-admin.php:427
4411
  #, php-format
4412
  #@ backwpup
4413
  msgid "You have activatetd or updated BackWPup please check <a href=\"%s\">here</a>."
4418
  msgid "running"
4419
  msgstr "läuft"
4420
 
4421
+ #: inc/class-destination-sugarsync.php:266
4422
  #@ backwpup
4423
  msgid "Upload to SugarSync now started &hellip;"
4424
  msgstr "Der Upload zu SugarSync wird jetzt gestartet &hellip;"
4433
  msgid "No destination correctly defined for backup! Please correct job settings."
4434
  msgstr "Es wurde kein korrektes Backupziel definiert! Bitte überprüfe die Auftragseinstellungen."
4435
 
4436
+ #: inc/class-job.php:1265
4437
  #@ backwpup
4438
  msgid "WordPress Maintenance mode not activated on Manual run. Because it disappears displaying of working progress."
4439
  msgstr "Der WordPress-Wartungsmodus wurde nicht aktiviert, da der Auftrag manuell gestartet wurde. Dies würde die Fortschrittsanzeige behindern."
4681
  msgid "Runtime: %d seconds"
4682
  msgstr "Ausführungszeit: %d Sekunden"
4683
 
4684
+ #: inc/class-job.php:616
4685
  #@ backwpup
4686
  msgid "Second process start terminated, because a other job is already running!"
4687
  msgstr "Ein zweiter Prozess start wurde abgebrochen, weil der alte Auftrag noch läuft!"
4688
 
4689
+ #: inc/class-job.php:842
4690
  #, php-format
4691
  #@ backwpup
4692
  msgid "Signal %d is sent to script!"
4721
  msgid "[INFO] BackWPup job started form commandline interface"
4722
  msgstr "[INFO] BackWPup-Auftrag per Kommandozeile gestartet"
4723
 
4724
+ #: inc/class-job.php:536
4725
  #@ default
4726
  msgid "Job Started"
4727
  msgstr ""
4890
  msgid "We recommend to install the PHP FTP extension to use the FTP backup destination."
4891
  msgstr "Wir empfehlen, die PHP-Erweiterung FTP zu installieren, um das Speicherziel FTP zu verwenden."
4892
 
4893
+ #: inc/class-page-jobs.php:325
4894
  #: inc/features/class-wizard-systemtest.php:153
4895
  #, php-format
4896
  #@ backwpup
4897
  msgid "Temp folder %s does not exist and cannot be created. Please create it and set proper write permissions."
4898
  msgstr "Das temporäre Verzeichnis %s existiert nicht, und es kann auch nicht erstellt werden. Bitte erstellen Sie es, und setzen Sie die passenden Schreibrechte."
4899
 
4900
+ #: inc/class-page-jobs.php:334
4901
  #: inc/features/class-wizard-systemtest.php:164
4902
  #, php-format
4903
  #@ backwpup
4965
  msgid "%d. Try to send backup file to a FTP Server &hellip;"
4966
  msgstr "%d. Versuche, Backup zum FTP-Server zu schicken …"
4967
 
4968
+ #: inc/class-destination-sugarsync.php:243
4969
  #, php-format
4970
  #@ backwpup
4971
  msgid "%d. Try to send backup to SugarSync &hellip;"
4972
  msgstr "%d. Versuche, Backup an SugarSync zu schicken …"
4973
 
4974
+ #: inc/class-destination-sugarsync.php:253
4975
  #@ backwpup
4976
  msgid "No free space left on SugarSync!"
4977
  msgstr "Kein Platz mehr frei bei SugarSync!"
5121
  msgid "Last message: %s"
5122
  msgstr "Letzte Nachricht: %s"
5123
 
5124
+ #: inc/class-admin.php:393
5125
  #, php-format
5126
  #@ backwpup
5127
  msgctxt "link to Inpsyde.com, link text: Inpsyde GmbH"
5128
  msgid "A project of %s"
5129
  msgstr "Ein Projekt der %s"
5130
 
5131
+ #: inc/class-admin.php:394
5132
  #, php-format
5133
  #@ backwpup
5134
  msgctxt "developer name, link text: Daniel Hüsken"
5419
  msgstr "BackWPup Braucht PHP in der Version 5.2.6 oder höher und WordPress in der Version 3.2 oder höher."
5420
 
5421
  #: inc/class-create-archive.php:78
5422
+ #: inc/class-create-archive.php:138
5423
+ #: inc/class-create-archive.php:151
5424
+ #: inc/class-mysqldump.php:109
5425
  #@ backwpup
5426
  msgid "Functions for gz compression not available"
5427
  msgstr "Die Funktionen für die Gzip-Kompression sind nicht verfügbar."
5428
 
5429
+ #: inc/class-create-archive.php:97
5430
+ #: inc/class-create-archive.php:157
5431
+ #: inc/class-mysqldump.php:113
5432
  #@ backwpup
5433
  msgid "Functions for bz2 compression not available"
5434
  msgstr "Die Funktionen für die Bz2-Kompression sind nicht verfügbar."
5435
 
5436
+ #: inc/class-create-archive.php:167
5437
  #@ backwpup
5438
  msgid "Can not open archive file"
5439
  msgstr "Kann Archivdatei nicht öffnen"
5440
 
 
5441
  #: inc/class-create-archive.php:254
5442
+ #: inc/class-create-archive.php:268
5443
+ #: inc/class-create-archive.php:434
5444
  #, php-format
5445
  #@ backwpup
5446
  msgid "Can not open source file %s to archive"
5447
  msgstr "Konnte Quelle %s zum Archivieren nicht öffnen"
5448
 
5449
+ #: inc/class-create-archive.php:304
5450
  #, php-format
5451
  #@ backwpup
5452
  msgid "PclZip archive add error: %s"
5453
  msgstr "Fehler beim Hinzufügen zum PclZip-Archive: %s"
5454
 
5455
+ #: inc/class-create-archive.php:406
5456
  #, php-format
5457
  #@ backwpup
5458
  msgctxt "Text of ZipArchive status Massage"
5459
  msgid "ZipArchive returns status: %s"
5460
  msgstr "Das Zip-Archive liefert den Status: %s"
5461
 
5462
+ #: inc/class-job.php:1623
5463
  #, php-format
5464
  #@ backwpup
5465
  msgid "%d. Trying to create backup archive &hellip;"
5466
  msgstr "%d. Versuche, Backup zu erstellen …"
5467
 
5468
+ #: inc/class-job.php:1629
5469
  #, php-format
5470
  #@ backwpup
5471
  msgctxt "Archive compression method"
5472
  msgid "Compression method is %s"
5473
  msgstr "Komprimierungsmethode ist %s"
5474
 
5475
+ #: inc/class-job.php:1657
5476
  #@ backwpup
5477
  msgid "Backup archive created."
5478
  msgstr "Backup wurde erstellt."
5479
 
5480
+ #: inc/class-mysqldump.php:125
5481
  #@ backwpup
5482
  msgid "Can not open dump file"
5483
  msgstr "Konnte Backup nicht öffnen"
5484
 
5485
+ #: inc/class-mysqldump.php:386
5486
  #@ backwpup
5487
  msgid "Error on writing to file!"
5488
  msgstr "Fehler beim Schreiben!"
5535
  msgid "Folder %s for the archive not found"
5536
  msgstr "Verzeichnis %s für das Archiv nicht gefunden"
5537
 
5538
+ #: inc/class-create-archive.php:134
5539
  #, php-format
5540
  #@ backwpup
5541
  msgctxt "ZipArchive open() result"
5542
  msgid "Can not create zip archive: %d"
5543
  msgstr "Konte ZIP-Datei %s nicht erstellen"
5544
 
5545
+ #: inc/class-create-archive.php:162
5546
  #, php-format
5547
  #@ backwpup
5548
  msgctxt "%s = file name"
5549
  msgid "Method to archive file %s not detected"
5550
  msgstr "Methode zum Archivieren der Datei %s nicht gefunden"
5551
 
5552
+ #: inc/class-create-archive.php:236
5553
  #@ backwpup
5554
  msgid "File name cannot be empty"
5555
  msgstr "Der Dateiname kann nicht leer sein."
5556
 
 
5557
  #: inc/class-create-archive.php:249
5558
+ #: inc/class-create-archive.php:263
5559
+ #: inc/class-create-archive.php:338
5560
+ #: inc/class-create-archive.php:342
5561
  #@ backwpup
5562
  msgid "This archive method can only add one file"
5563
  msgstr "Diese Archive-Methode kann nur eine einziges Datei sichern."
5564
 
5565
+ #: inc/class-mysqldump.php:95
5566
  #, php-format
5567
  #@ backwpup
5568
  msgctxt "Database Charset"
5592
  msgid "Could not connect to remote host, code %d. Please try again later."
5593
  msgstr "Konnte nicht zum Remote-Host verbinden, code: %s. Bitte versuchen Sie es später."
5594
 
5595
+ #: inc/class-create-archive.php:239
5596
  #, php-format
5597
  #@ backwpup
5598
  msgctxt "File path to add to archive"
5659
  msgid "Plugin on wordpress.org"
5660
  msgstr "Plugin auf wordpress.org"
5661
 
5662
+ #: inc/class-job.php:1579
5663
  #, php-format
5664
  #@ backwpup
5665
  msgctxt "Folder name"
5666
  msgid "Folder %s not exists"
5667
  msgstr "Verzeichnis %s existiert nicht"
5668
 
5669
+ #: inc/class-job.php:1583
5670
  #, php-format
5671
  #@ backwpup
5672
  msgctxt "Folder name"
5673
  msgid "Folder %s not readable"
5674
  msgstr "Verzeichnis %s ist nicht lesbar"
5675
 
5676
+ #: inc/class-page-jobs.php:322
5677
  #: inc/features/class-wizard-systemtest.php:148
5678
  #, php-format
5679
  #@ backwpup
5680
  msgid "Temp folder %s not read or writable. Please set proper write permissions."
5681
  msgstr "Das Temporäre Verzeichnis %s ist nicht lesbar oder schreibbar. Bitte setze Schreibberechtigung."
5682
 
5683
+ #: inc/class-page-jobs.php:331
5684
  #: inc/features/class-wizard-systemtest.php:160
5685
  #, php-format
5686
  #@ backwpup
5862
  msgid "GET PRO"
5863
  msgstr "GET PRO"
5864
 
 
 
 
 
 
 
5865
  #: inc/class-destination-s3.php:187
5866
  #@ backwpup
5867
  msgid "Multipart Upload"
5877
  msgid "Mutipart split the file into peaces of chucks while uploading. It is needed for displaying upload process and can transfer bigger files. Im moment there are problems on Google storage with this option"
5878
  msgstr "Multipart splittet den Upload in mehrere teile auf. Das wird benötigt um die Fortschrittsanzeige zu machen und um groß Dateien hochzuladen. Im moment gibt es mit dieser Option Probleme bei Google Storage"
5879
 
5880
+ #: inc/class-destination-s3.php:391
5881
  #, php-format
5882
  #@ backwpup
5883
  msgid "Connected to S3 Bucket \"%1$s\" in %2$s"
5908
  msgid "Name and email of email sender in the mail formant. Name &lt;emailadress&gt;"
5909
  msgstr "Name des E-Mail Senders im E-MAil formart. <code>Name &lt;E-Mail-Adresse&gt;</code>"
5910
 
5911
+ #. translators: plugin header field 'Version'
5912
+ #: backwpup.php:0
5913
+ #@ backwpup
5914
+ msgid "3.0.2"
5915
+ msgstr ""
5916
+
5917
+ #: inc/class-create-archive.php:326
5918
+ #@ backwpup
5919
+ msgid "Folder name cannot be empty"
5920
+ msgstr "Der Verzeichnis Name darf nicht leer sein"
5921
+
5922
+ #: inc/class-create-archive.php:329
5923
+ #, php-format
5924
+ #@ backwpup
5925
+ msgctxt "Folder path to add to archive"
5926
+ msgid "Folder %s does not exist or is not readable"
5927
+ msgstr "Verzeichnis %s existiert nicht oder ist nicht lesbar"
5928
+
5929
+ #: inc/class-create-archive.php:507
5930
+ #, php-format
5931
+ #@ backwpup
5932
+ msgid "Folder name \"%1$s\" too long to be saved correctly in %2$s archive!"
5933
+ msgstr "Verzeichnis Name \"%1$s\" ist zu lang um ihn koreckt zu speichern im %2$s Archiv"
5934
+
5935
+ #: inc/class-create-archive.php:509
5936
+ #, php-format
5937
+ #@ backwpup
5938
+ msgid "Folder path \"%1$s\" too long to be saved correctly in %2$s archive!"
5939
+ msgstr "Verzeichnis Pfad \"%1$s\" ist zu lang um ihn koreckt zu speichern im %2$s Archiv"
5940
+
5941
+ #: inc/class-job.php:457
5942
+ #: inc/class-job.php:458
5943
+ #@ backwpup
5944
+ msgid "Backups folder does not exist or is not writable for BackWPup"
5945
+ msgstr "Backups Verzeichnis existiert nicht oder ist nicht beschreibbar von BackWPup"
5946
+
5947
+ #: inc/class-mysqldump.php:57
5948
+ #@ backwpup
5949
+ msgid "No MySQLi extension found. Please install it."
5950
+ msgstr "Keine MySQLi Erweiterung gefunden. Bitte installieren Sie diese"
5951
+
5952
+ #: inc/class-page-jobs.php:342
5953
+ #, php-format
5954
+ #@ backwpup
5955
+ msgid "Backups folder %s is not read or writable. Please set proper write permissions."
5956
+ msgstr "Backups Verzeichnis nicht lesbar oder nicht beschreibbar. Bitte die richtigen Berechtigungen setzen."
5957
+
5958
+ #: inc/class-page-jobs.php:345
5959
+ #, php-format
5960
+ #@ backwpup
5961
+ msgid "Backups folder %s does not exist and cannot be created. Please create it and set proper write permissions."
5962
+ msgstr "Backups Verzeichnis %s existiert nicht und kann nicht angelegt werden. Bitte überprüfen Sie die Berechtigungen."
5963
+
5964
+ #: inc/class-page-jobs.php:471
5965
+ #@ backwpup
5966
+ msgid "Working job log"
5967
+ msgstr "Auftrags lLog"
5968
+
readme.txt CHANGED
@@ -1,9 +1,9 @@
1
- === BackWPup ===
2
  Contributors: inpsyde, danielhuesken, Bueltge, nullbyte
3
  Tags: backup, dump, database, file, ftp, xml, time, upload, multisite, cloud, dropbox, storage, S3
4
  Requires at least: 3.2
5
  Tested up to: 3.5.1
6
- Stable tag: 3.0.2
7
  License: GPLv3
8
  License URI: http://www.gnu.org/licenses/gpl-3.0.html
9
 
@@ -81,6 +81,14 @@ Please check all settings after the update:
81
 
82
 
83
  == Changelog ==
 
 
 
 
 
 
 
 
84
 
85
  = Version 3.0.2 =
86
  * Fixed: Warnings on job edit tab files
@@ -137,3 +145,4 @@ Please check all settings after the update:
137
  * Use your own API keys for Dropbox and SugarSync
138
  * Premium Support
139
  * Automatic updates
 
1
+ === BackWPup ===
2
  Contributors: inpsyde, danielhuesken, Bueltge, nullbyte
3
  Tags: backup, dump, database, file, ftp, xml, time, upload, multisite, cloud, dropbox, storage, S3
4
  Requires at least: 3.2
5
  Tested up to: 3.5.1
6
+ Stable tag: 3.0.3
7
  License: GPLv3
8
  License URI: http://www.gnu.org/licenses/gpl-3.0.html
9
 
81
 
82
 
83
  == Changelog ==
84
+ = Version 3.0.3 =
85
+ * Improved: Archive creation performance
86
+ * Fixed: Problem with S3 Prefix
87
+ * Fixed: warnings on excluded folders
88
+ * Fixed: message from putenv
89
+ * Fixed: not working downloads
90
+ * Changed: removed fancybox and uses thickbox because plugin compatibility
91
+ * Added: folder checking on run now
92
 
93
  = Version 3.0.2 =
94
  * Fixed: Warnings on job edit tab files
145
  * Use your own API keys for Dropbox and SugarSync
146
  * Premium Support
147
  * Automatic updates
148
+