NextGEN Gallery – WordPress Gallery Plugin - Version 1.3.0

Version Description

Download this release

Release Info

Developer alexrabe
Plugin Icon 128x128 NextGEN Gallery – WordPress Gallery Plugin
Version 1.3.0
Comparing to
See all releases

Code changes from version 1.2.1 to 1.3.0

admin/about.php CHANGED
@@ -7,47 +7,65 @@ if(preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die('You
7
 
8
  <div class="wrap">
9
  <h2><?php _e('Copyright notes / Credits', 'nggallery') ;?></h2>
10
- <h3 class="tablenav"><?php _e("NextGEN DEV Team", 'nggallery'); ?></h3>
11
- <p><?php _e('This plugin is primarily developed, maintained, supported, documented by', 'nggallery'); ?> <a href="http://alexrabe.boelinger.com" target="_blank">Alex Rabe</a>. <?php _e('There are many other folks who have made contributions to this project :', 'nggallery') ;?></p>
12
- <p><?php ngg_list_contributors(); ?></p>
13
- <h3 class="tablenav"><?php _e("Contributors / Tribute to", 'nggallery'); ?></h3>
14
- <p><?php _e('If you study the code of this plugin, you will find out that we mixed a lot of good already existing code and ideas together.', 'nggallery') ;?>
15
- <?php _e('So, we would like to thank the following people for their pioneer work (without this work it\'s impossible to create such a plugin so fast)', 'nggallery') ;?></p>
16
- <ul>
17
- <li><a href="http://wordpress.org" target="_blank">The WordPress Team</a> <?php _e('for their great documented code', 'nggallery') ;?></li>
18
- <li><a href="http://jquery.com" target="_blank">The jQuery Team</a> <?php _e('for jQuery, which is the best Web2.0 framework', 'nggallery') ;?></li>
19
- <li><a href="http://www.gen-x-design.com" target="_blank">Ian Selby</a> <?php _e('for the fantastic PHP Thumbnail Class', 'nggallery') ;?></li>
20
- <li><a href="http://www.phpconcept.net" target="_blank">Vincent Blavet</a> <?php _e('for PclZip , a PHP library that manage ZIP archives', 'nggallery') ;?></li>
21
- <li><a href="http://www.lesterchan.net/" target="_blank">GaMerZ</a> <?php _e('for a lot of very useful plugins and ideas', 'nggallery') ;?></li>
22
- <li><a href="http://www.laptoptips.ca/" target="_blank">Andrew Ozz</a> <?php _e('for Shutter Reloaded, a real lightweight image effect', 'nggallery') ;?></li>
23
- <li><a href="http://www.jeroenwijering.com/" target="_blank">Jeroen Wijering</a> <?php _e('for the best Media Flash Scripts on earth', 'nggallery') ;?></li>
24
- <li><a href="http://www.pinvoke.com/" target="_blank">Yusuke Kamiyamane</a> <?php _e('for the Fugue Iconset', 'nggallery') ;?></li>
25
- <li><a href="http://watermark.malcherek.com/" target="_blank">Marek Malcherek</a> <?php _e('for the Watermark plugin', 'nggallery') ;?></li>
26
- </ul>
27
- <p><?php _e('If you didn\'t find your name on this list and there is some code which I integrate in my plugin, don\'t hesitate to send me a mail.', 'nggallery') ;?></p>
28
- <h3 class="tablenav"><?php _e("How to support ?", 'nggallery'); ?></h3>
29
- <p><?php _e('There exist several ways to contribute, help or support us in this work. Non of them are mandatory.', 'nggallery') ;?></p>
30
- <ul>
31
- <li><strong><?php _e('Send us bugfixes / code changes', 'nggallery') ;?></strong><br /><?php _e('The most motivated support for this plugin are your ideas and brain work', 'nggallery') ;?></li>
32
- <li><strong><?php _e('Translate the plugin', 'nggallery') ;?></strong><br /><?php _e('To help people to work with this plugin, I would like to have it in all available languages', 'nggallery') ;?></li>
33
- <li><strong><?php _e('Donate the work via paypal', 'nggallery') ;?></strong><br />
34
- <form action="https://www.paypal.com/cgi-bin/webscr" method="post" >
35
- <input type="hidden" name="cmd" value="_xclick"/><input type="hidden" name="business" value="alterego@boelinger.com"/>
36
- <input type="hidden" name="item_name" value="NextGEN Gallery plugin www.alexrabe.boelinger.com"/>
37
- <input type="hidden" name="no_shipping" value="1"/><input type="hidden" name="return" value="http://alexrabe.boelinger.com/" />
38
- <input type="hidden" name="cancel_return" value="http://alexrabe.boelinger.com/"/>
39
- <input type="hidden" name="lc" value="US" />
40
- <input type="hidden" name="currency_code" value="USD"/>
41
- <input type="hidden" name="tax" value="0"/>
42
- <input type="hidden" name="bn" value="PP-DonationsBF"/>
43
- <input type="image" src="https://www.paypal.com/en_US/i/btn/x-click-but21.gif" name="submit" alt="Make payments with PayPal - it's fast, free and secure!" style="border: none;"/>
44
- </form><?php _e('No doubt a very useful and easy motivation :-)', 'nggallery') ;?>
45
- </li>
46
- <li><strong><?php _e('Place a link to the plugin in your blog/webpage', 'nggallery') ;?></strong><br /><?php _e('Yes, share and trackback is also a good support for this work ', 'nggallery') ;?></li>
47
- </ul>
48
- <h3 class="tablenav"><?php _e("Thanks!", 'nggallery'); ?></h3>
49
- <p><?php _e('We would like to thank this people which support us in the work :', 'nggallery') ;?></p>
50
- <p><a href="http://www.boelinger.com/heike/" target="_blank">HEIKE</a>, <?php ngg_list_support(); ?></p>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
51
  </div>
52
 
53
  <?php
@@ -57,6 +75,7 @@ function ngg_list_contributors() {
57
  /* The list of my contributors. Thanks to all of them !*/
58
 
59
  $contributors = array(
 
60
  'Simone Fumagalli (Code contributor)' => 'http://www.iliveinperego.com/',
61
  'Vincent Prat (Code contributor)' => 'http://www.vincentprat.info',
62
  'Frederic De Ranter (AJAX code contributor)' => 'http://li.deranter.com/',
7
 
8
  <div class="wrap">
9
  <h2><?php _e('Copyright notes / Credits', 'nggallery') ;?></h2>
10
+ <div id="poststuff">
11
+ <div class="postbox">
12
+ <h3 class="hndle"><span><?php _e("NextGEN DEV Team", 'nggallery'); ?></span></h3>
13
+ <div class="inside">
14
+ <p><?php _e('This plugin is primarily developed, maintained, supported, documented by', 'nggallery'); ?> <a href="http://alexrabe.boelinger.com" target="_blank">Alex Rabe</a>. <?php _e('There are many other folks who have made contributions to this project :', 'nggallery') ;?></p>
15
+ <p><?php ngg_list_contributors(); ?></p>
16
+ </div>
17
+ </div>
18
+ <div class="postbox">
19
+ <h3 class="hndle"><span><?php _e("Contributors / Tribute to", 'nggallery'); ?></span></h3>
20
+ <div class="inside">
21
+ <p><?php _e('If you study the code of this plugin, you will find out that we mixed a lot of good already existing code and ideas together.', 'nggallery') ;?>
22
+ <?php _e('So, we would like to thank the following people for their pioneer work (without this work it\'s impossible to create such a plugin so fast)', 'nggallery') ;?></p>
23
+ <ul class="ngg-list">
24
+ <li><a href="http://wordpress.org" target="_blank">The WordPress Team</a> <?php _e('for their great documented code', 'nggallery') ;?></li>
25
+ <li><a href="http://jquery.com" target="_blank">The jQuery Team</a> <?php _e('for jQuery, which is the best Web2.0 framework', 'nggallery') ;?></li>
26
+ <li><a href="http://www.gen-x-design.com" target="_blank">Ian Selby</a> <?php _e('for the fantastic PHP Thumbnail Class', 'nggallery') ;?></li>
27
+ <li><a href="http://www.phpconcept.net" target="_blank">Vincent Blavet</a> <?php _e('for PclZip , a PHP library that manage ZIP archives', 'nggallery') ;?></li>
28
+ <li><a href="http://www.lesterchan.net/" target="_blank">GaMerZ</a> <?php _e('for a lot of very useful plugins and ideas', 'nggallery') ;?></li>
29
+ <li><a href="http://www.laptoptips.ca/" target="_blank">Andrew Ozz</a> <?php _e('for Shutter Reloaded, a real lightweight image effect', 'nggallery') ;?></li>
30
+ <li><a href="http://www.jeroenwijering.com/" target="_blank">Jeroen Wijering</a> <?php _e('for the best Media Flash Scripts on earth', 'nggallery') ;?></li>
31
+ <li><a href="http://www.pinvoke.com/" target="_blank">Yusuke Kamiyamane</a> <?php _e('for the Fugue Iconset', 'nggallery') ;?></li>
32
+ <li><a href="http://watermark.malcherek.com/" target="_blank">Marek Malcherek</a> <?php _e('for the Watermark plugin', 'nggallery') ;?></li>
33
+ </ul>
34
+ <p><?php _e('If you didn\'t find your name on this list and there is some code which I integrate in my plugin, don\'t hesitate to send me a mail.', 'nggallery') ;?></p>
35
+ </div>
36
+ </div>
37
+ <div class="postbox">
38
+ <h3 class="hndle"><span><?php _e("How to support ?", 'nggallery'); ?></span></h3>
39
+ <div class="inside">
40
+ <p><?php _e('There exist several ways to contribute, help or support us in this work. Non of them are mandatory.', 'nggallery') ;?></p>
41
+ <ul class="ngg-list">
42
+ <li><strong><?php _e('Send us bugfixes / code changes', 'nggallery') ;?></strong><br /><?php _e('The most motivated support for this plugin are your ideas and brain work', 'nggallery') ;?></li>
43
+ <li><strong><?php _e('Translate the plugin', 'nggallery') ;?></strong><br /><?php _e('To help people to work with this plugin, I would like to have it in all available languages', 'nggallery') ;?></li>
44
+ <li><strong><?php _e('Donate the work via paypal', 'nggallery') ;?></strong><br />
45
+ <form action="https://www.paypal.com/cgi-bin/webscr" method="post" >
46
+ <input type="hidden" name="cmd" value="_xclick"/><input type="hidden" name="business" value="alterego@boelinger.com"/>
47
+ <input type="hidden" name="item_name" value="NextGEN Gallery plugin www.alexrabe.boelinger.com"/>
48
+ <input type="hidden" name="no_shipping" value="1"/><input type="hidden" name="return" value="http://alexrabe.boelinger.com/" />
49
+ <input type="hidden" name="cancel_return" value="http://alexrabe.boelinger.com/"/>
50
+ <input type="hidden" name="lc" value="US" />
51
+ <input type="hidden" name="currency_code" value="USD"/>
52
+ <input type="hidden" name="tax" value="0"/>
53
+ <input type="hidden" name="bn" value="PP-DonationsBF"/>
54
+ <input type="image" src="https://www.paypal.com/en_US/i/btn/x-click-but21.gif" name="submit" alt="Make payments with PayPal - it's fast, free and secure!" style="border: none;"/>
55
+ </form><?php _e('No doubt a very useful and easy motivation :-)', 'nggallery') ;?>
56
+ </li>
57
+ <li><strong><?php _e('Place a link to the plugin in your blog/webpage', 'nggallery') ;?></strong><br /><?php _e('Yes, share and trackback is also a good support for this work ', 'nggallery') ;?></li>
58
+ </ul>
59
+ </div>
60
+ </div>
61
+ <div class="postbox" id="donators">
62
+ <h3 class="hndle"><span><?php _e("Thanks!", 'nggallery'); ?></span></h3>
63
+ <div class="inside">
64
+ <p><?php _e('We would like to thank this people which support us in the work :', 'nggallery') ;?></p>
65
+ <p><a href="http://www.boelinger.com/heike/" target="_blank">HEIKE</a>, <?php ngg_list_support(); ?></p>
66
+ </div>
67
+ </div>
68
+ </div>
69
  </div>
70
 
71
  <?php
75
  /* The list of my contributors. Thanks to all of them !*/
76
 
77
  $contributors = array(
78
+ 'Anty (Code contributor)' => 'http://www.anty.at/',
79
  'Simone Fumagalli (Code contributor)' => 'http://www.iliveinperego.com/',
80
  'Vincent Prat (Code contributor)' => 'http://www.vincentprat.info',
81
  'Frederic De Ranter (AJAX code contributor)' => 'http://li.deranter.com/',
admin/addgallery.php CHANGED
@@ -31,8 +31,8 @@ if(preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die('You
31
 
32
  if ($_POST['zipupload']){
33
  check_admin_referer('ngg_addgallery');
34
- if ($_FILES['zipfile']['error'] == 0)
35
- $messagetext = nggAdmin::import_zipfile( intval( $_POST['zipgalselect'] ) );
36
  else
37
  nggGallery::show_error( __('Upload failed!','nggallery') );
38
  }
@@ -54,7 +54,7 @@ if(preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die('You
54
  }
55
 
56
  if (isset($_POST['swf_callback'])){
57
- if ($_POST['galleryselect'] == "0" )
58
  nggGallery::show_error(__('No gallery selected !','nggallery'));
59
  else {
60
  // get the path to the gallery
@@ -163,7 +163,7 @@ if(preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die('You
163
  <script type="text/javascript">
164
  /* <![CDATA[ */
165
  jQuery(document).ready(function(){
166
- jQuery('#slider > ul').tabs({ fxFade: true, fxSpeed: 'fast' });
167
  });
168
  /* ]]> */
169
  </script>
@@ -211,12 +211,21 @@ if(preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die('You
211
  <td><input type="file" name="zipfile" id="zipfile" size="35" class="uploadform"/><br />
212
  <?php _e('Upload a zip file with images', 'nggallery') ;?></td>
213
  </tr>
 
 
 
 
 
 
 
214
  <tr valign="top">
215
  <th scope="row"><?php _e('in to', 'nggallery') ;?></th>
216
  <td><select name="zipgalselect">
217
  <option value="0" ><?php _e('a new gallery', 'nggallery') ?></option>
218
  <?php
219
  foreach($gallerylist as $gallery) {
 
 
220
  $name = ( empty($gallery->title) ) ? $gallery->name : $gallery->title;
221
  echo '<option value="' . $gallery->gid . '" >' . $gallery->gid . ' - ' . $name . '</option>' . "\n";
222
  }
@@ -265,6 +274,8 @@ if(preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die('You
265
  <option value="0" ><?php _e('Choose gallery', 'nggallery') ?></option>
266
  <?php
267
  foreach($gallerylist as $gallery) {
 
 
268
  $name = ( empty($gallery->title) ) ? $gallery->name : $gallery->title;
269
  echo '<option value="' . $gallery->gid . '" >' . $gallery->gid . ' - ' . $name . '</option>' . "\n";
270
  } ?>
31
 
32
  if ($_POST['zipupload']){
33
  check_admin_referer('ngg_addgallery');
34
+ if ($_FILES['zipfile']['error'] == 0 || (!empty($_POST['zipurl'])))
35
+ nggAdmin::import_zipfile( intval( $_POST['zipgalselect'] ) );
36
  else
37
  nggGallery::show_error( __('Upload failed!','nggallery') );
38
  }
54
  }
55
 
56
  if (isset($_POST['swf_callback'])){
57
+ if ($_POST['galleryselect'] == '0' )
58
  nggGallery::show_error(__('No gallery selected !','nggallery'));
59
  else {
60
  // get the path to the gallery
163
  <script type="text/javascript">
164
  /* <![CDATA[ */
165
  jQuery(document).ready(function(){
166
+ jQuery('#slider').tabs({ fxFade: true, fxSpeed: 'fast' });
167
  });
168
  /* ]]> */
169
  </script>
211
  <td><input type="file" name="zipfile" id="zipfile" size="35" class="uploadform"/><br />
212
  <?php _e('Upload a zip file with images', 'nggallery') ;?></td>
213
  </tr>
214
+ <?php if (function_exists('curl_init')) : ?>
215
+ <tr valign="top">
216
+ <th scope="row"><?php _e('or enter a Zip-File URL', 'nggallery') ;?>:</th>
217
+ <td><input type="text" name="zipurl" id="zipurl" size="35" class="uploadform"/><br />
218
+ <?php _e('Import a zip file with images from a url', 'nggallery') ;?></td>
219
+ </tr>
220
+ <?php endif; ?>
221
  <tr valign="top">
222
  <th scope="row"><?php _e('in to', 'nggallery') ;?></th>
223
  <td><select name="zipgalselect">
224
  <option value="0" ><?php _e('a new gallery', 'nggallery') ?></option>
225
  <?php
226
  foreach($gallerylist as $gallery) {
227
+ if ( !nggAdmin::can_manage_this_gallery($gallery->author) )
228
+ continue;
229
  $name = ( empty($gallery->title) ) ? $gallery->name : $gallery->title;
230
  echo '<option value="' . $gallery->gid . '" >' . $gallery->gid . ' - ' . $name . '</option>' . "\n";
231
  }
274
  <option value="0" ><?php _e('Choose gallery', 'nggallery') ?></option>
275
  <?php
276
  foreach($gallerylist as $gallery) {
277
+ if ( !nggAdmin::can_manage_this_gallery($gallery->author) )
278
+ continue;
279
  $name = ( empty($gallery->title) ) ? $gallery->name : $gallery->title;
280
  echo '<option value="' . $gallery->gid . '" >' . $gallery->gid . ' - ' . $name . '</option>' . "\n";
281
  } ?>
admin/admin.php CHANGED
@@ -21,13 +21,11 @@ class nggAdminPanel{
21
 
22
  add_filter('contextual_help', array(&$this, 'show_help'), 10, 2);
23
  add_filter('screen_meta_screen', array(&$this, 'edit_screen_meta'));
24
-
25
- $this->register_columns();
26
  }
27
 
28
  // integrate the menu
29
  function add_menu() {
30
-
31
  add_menu_page( __ngettext( 'Gallery', 'Galleries', 1, 'nggallery' ), __ngettext( 'Gallery', 'Galleries', 1, 'nggallery' ), 'NextGEN Gallery overview', NGGFOLDER, array (&$this, 'show_menu'), NGGALLERY_URLPATH .'admin/images/nextgen.png' );
32
  add_submenu_page( NGGFOLDER , __('Overview', 'nggallery'), __('Overview', 'nggallery'), 'NextGEN Gallery overview', NGGFOLDER, array (&$this, 'show_menu'));
33
  add_submenu_page( NGGFOLDER , __('Add Gallery / Images', 'nggallery'), __('Add Gallery / Images', 'nggallery'), 'NextGEN Upload images', 'nggallery-add-gallery', array (&$this, 'show_menu'));
@@ -44,6 +42,9 @@ class nggAdminPanel{
44
  if ( wpmu_site_admin() )
45
  add_submenu_page( 'wpmu-admin.php' , __('NextGEN Gallery', 'nggallery'), __('NextGEN Gallery', 'nggallery'), 'activate_plugins', 'nggallery-wpmu', array (&$this, 'show_menu'));
46
 
 
 
 
47
  }
48
 
49
  // load the script for the defined page and load only this code
@@ -55,7 +56,7 @@ class nggAdminPanel{
55
  $nggCheck = new CheckPlugin();
56
  $nggCheck->URL = NGGURL;
57
  $nggCheck->version = NGGVERSION;
58
- $nggCheck->name = "ngg";
59
 
60
  // check for upgrade and show upgrade screen
61
  if( get_option( 'ngg_db_version' ) != NGG_DBVERSION ) {
@@ -87,7 +88,8 @@ class nggAdminPanel{
87
  break;
88
  case "nggallery-manage-album" :
89
  include_once ( dirname (__FILE__) . '/album.php' ); // nggallery_admin_manage_album
90
- nggallery_admin_manage_album();
 
91
  break;
92
  case "nggallery-options" :
93
  include_once ( dirname (__FILE__) . '/settings.php' ); // nggallery_admin_options
@@ -131,6 +133,10 @@ class nggAdminPanel{
131
 
132
  function load_scripts() {
133
 
 
 
 
 
134
  wp_register_script('ngg-ajax', NGGALLERY_URLPATH .'admin/js/ngg.ajax.js', array('jquery'), '1.0.0');
135
  wp_localize_script('ngg-ajax', 'nggAjaxSetup', array(
136
  'url' => admin_url('admin-ajax.php'),
@@ -152,19 +158,21 @@ class nggAdminPanel{
152
  wp_enqueue_script( 'postbox' );
153
  wp_enqueue_script( 'ngg-ajax' );
154
  wp_enqueue_script( 'ngg-progressbar' );
 
155
  //TODO:Add Inline edit later
156
  //wp_enqueue_script( 'ngg-inline-edit', NGGALLERY_URLPATH .'admin/js/ngg.inline-edit-images.js', array('jquery'), '1.0.0' );
157
  add_thickbox();
158
  break;
159
  case "nggallery-manage-album" :
160
  wp_enqueue_script( 'jquery-ui-sortable' );
 
161
  break;
162
  case "nggallery-options" :
163
  wp_enqueue_script( 'jquery-ui-tabs' );
164
  break;
165
  case "nggallery-add-gallery" :
166
  wp_enqueue_script( 'jquery-ui-tabs' );
167
- wp_enqueue_script( 'mutlifile', NGGALLERY_URLPATH .'admin/js/jquery.MultiFile.js', array('jquery'), '1.1.1' );
168
  wp_enqueue_script( 'ngg-swfupload-handler', NGGALLERY_URLPATH .'admin/js/swfupload.handler.js', array('swfupload_f10'), '1.0.0' );
169
  wp_enqueue_script( 'ngg-ajax' );
170
  wp_enqueue_script( 'ngg-progressbar' );
@@ -174,8 +182,13 @@ class nggAdminPanel{
174
 
175
  function load_styles() {
176
 
 
 
 
 
177
  switch ($_GET['page']) {
178
  case NGGFOLDER :
 
179
  wp_enqueue_style( 'nggadmin', NGGALLERY_URLPATH .'admin/css/nggadmin.css', false, '2.7.0', 'screen' );
180
  wp_admin_css( 'css/dashboard' );
181
  break;
@@ -185,6 +198,7 @@ class nggAdminPanel{
185
  case "nggallery-manage-gallery" :
186
  case "nggallery-roles" :
187
  case "nggallery-manage-album" :
 
188
  wp_enqueue_style( 'nggadmin', NGGALLERY_URLPATH .'admin/css/nggadmin.css', false, '2.7.0', 'screen' );
189
  wp_enqueue_style( 'thickbox');
190
  break;
21
 
22
  add_filter('contextual_help', array(&$this, 'show_help'), 10, 2);
23
  add_filter('screen_meta_screen', array(&$this, 'edit_screen_meta'));
 
 
24
  }
25
 
26
  // integrate the menu
27
  function add_menu() {
28
+
29
  add_menu_page( __ngettext( 'Gallery', 'Galleries', 1, 'nggallery' ), __ngettext( 'Gallery', 'Galleries', 1, 'nggallery' ), 'NextGEN Gallery overview', NGGFOLDER, array (&$this, 'show_menu'), NGGALLERY_URLPATH .'admin/images/nextgen.png' );
30
  add_submenu_page( NGGFOLDER , __('Overview', 'nggallery'), __('Overview', 'nggallery'), 'NextGEN Gallery overview', NGGFOLDER, array (&$this, 'show_menu'));
31
  add_submenu_page( NGGFOLDER , __('Add Gallery / Images', 'nggallery'), __('Add Gallery / Images', 'nggallery'), 'NextGEN Upload images', 'nggallery-add-gallery', array (&$this, 'show_menu'));
42
  if ( wpmu_site_admin() )
43
  add_submenu_page( 'wpmu-admin.php' , __('NextGEN Gallery', 'nggallery'), __('NextGEN Gallery', 'nggallery'), 'activate_plugins', 'nggallery-wpmu', array (&$this, 'show_menu'));
44
 
45
+ //register the column fields
46
+ $this->register_columns();
47
+
48
  }
49
 
50
  // load the script for the defined page and load only this code
56
  $nggCheck = new CheckPlugin();
57
  $nggCheck->URL = NGGURL;
58
  $nggCheck->version = NGGVERSION;
59
+ $nggCheck->name = 'ngg';
60
 
61
  // check for upgrade and show upgrade screen
62
  if( get_option( 'ngg_db_version' ) != NGG_DBVERSION ) {
88
  break;
89
  case "nggallery-manage-album" :
90
  include_once ( dirname (__FILE__) . '/album.php' ); // nggallery_admin_manage_album
91
+ $ngg->manage_album = new nggManageAlbum ();
92
+ $ngg->manage_album->controller();
93
  break;
94
  case "nggallery-options" :
95
  include_once ( dirname (__FILE__) . '/settings.php' ); // nggallery_admin_options
133
 
134
  function load_scripts() {
135
 
136
+ // no need to go on if it's not a plugin page
137
+ if(!isset($_GET['page']))
138
+ return;
139
+
140
  wp_register_script('ngg-ajax', NGGALLERY_URLPATH .'admin/js/ngg.ajax.js', array('jquery'), '1.0.0');
141
  wp_localize_script('ngg-ajax', 'nggAjaxSetup', array(
142
  'url' => admin_url('admin-ajax.php'),
158
  wp_enqueue_script( 'postbox' );
159
  wp_enqueue_script( 'ngg-ajax' );
160
  wp_enqueue_script( 'ngg-progressbar' );
161
+ //wp_enqueue_script( 'jquery-ui-dialog' );
162
  //TODO:Add Inline edit later
163
  //wp_enqueue_script( 'ngg-inline-edit', NGGALLERY_URLPATH .'admin/js/ngg.inline-edit-images.js', array('jquery'), '1.0.0' );
164
  add_thickbox();
165
  break;
166
  case "nggallery-manage-album" :
167
  wp_enqueue_script( 'jquery-ui-sortable' );
168
+ add_thickbox();
169
  break;
170
  case "nggallery-options" :
171
  wp_enqueue_script( 'jquery-ui-tabs' );
172
  break;
173
  case "nggallery-add-gallery" :
174
  wp_enqueue_script( 'jquery-ui-tabs' );
175
+ wp_enqueue_script( 'mutlifile', NGGALLERY_URLPATH .'admin/js/jquery.MultiFile.js', array('jquery'), '1.4.4' );
176
  wp_enqueue_script( 'ngg-swfupload-handler', NGGALLERY_URLPATH .'admin/js/swfupload.handler.js', array('swfupload_f10'), '1.0.0' );
177
  wp_enqueue_script( 'ngg-ajax' );
178
  wp_enqueue_script( 'ngg-progressbar' );
182
 
183
  function load_styles() {
184
 
185
+ // no need to go on if it's not a plugin page
186
+ if(!isset($_GET['page']))
187
+ return;
188
+
189
  switch ($_GET['page']) {
190
  case NGGFOLDER :
191
+ case "nggallery-about" :
192
  wp_enqueue_style( 'nggadmin', NGGALLERY_URLPATH .'admin/css/nggadmin.css', false, '2.7.0', 'screen' );
193
  wp_admin_css( 'css/dashboard' );
194
  break;
198
  case "nggallery-manage-gallery" :
199
  case "nggallery-roles" :
200
  case "nggallery-manage-album" :
201
+ //wp_enqueue_style( 'jqueryui', NGGALLERY_URLPATH .'admin/css/jquery-ui.css', false, '1.7.1', 'screen' );
202
  wp_enqueue_style( 'nggadmin', NGGALLERY_URLPATH .'admin/css/nggadmin.css', false, '2.7.0', 'screen' );
203
  wp_enqueue_style( 'thickbox');
204
  break;
admin/album.php CHANGED
@@ -2,44 +2,127 @@
2
 
3
  if(preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die('You are not allowed to call this page directly.'); }
4
 
5
- global $wpdb;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6
 
7
- function nggallery_admin_manage_album() {
8
- global $wpdb;
 
 
 
 
 
 
 
 
 
 
 
 
 
9
 
10
- $albumID = (int) $_POST['act_album'];
 
 
 
 
 
 
11
 
12
- if ($_POST['update']){
 
13
 
14
- check_admin_referer('ngg_album');
 
 
 
 
 
 
 
 
 
15
 
16
- if ($_POST['newalbum']){
 
 
17
  $newalbum = attribute_escape($_POST['newalbum']);
18
  $result = $wpdb->query("INSERT INTO $wpdb->nggalbum (name, sortorder) VALUES ('$newalbum','0')");
19
- if ($result) nggGallery::show_message(__('Update Successfully','nggallery'));
 
20
  }
21
 
22
- if ($albumID > 0){
 
23
  // get variable galleryContainer
24
  parse_str($_POST['sortorder']);
25
  if (is_array($gid)){
26
  $serial_sort = serialize($gid);
27
- $wpdb->query("UPDATE $wpdb->nggalbum SET sortorder = '$serial_sort' WHERE id = $albumID ");
28
  } else {
29
- $wpdb->query("UPDATE $wpdb->nggalbum SET sortorder = '0' WHERE id = $albumID ");
30
  }
31
  nggGallery::show_message(__('Update Successfully','nggallery'));
32
- }
33
- }
 
 
34
 
35
- if ($_POST['delete']){
36
- check_admin_referer('ngg_album');
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
37
 
38
- $result = nggdb::delete_album($albumID);
39
- if ($result)
40
- nggGallery::show_message(__('Album deleted','nggallery'));
41
  }
42
 
 
 
 
 
 
 
 
43
  ?>
44
 
45
  <script type="text/javascript">
@@ -54,7 +137,8 @@ jQuery(document).ready(
54
  opacity: 0.7,
55
  tolerance: 'intersect',
56
  distance: 2,
57
- connectWith: ["#galleryContainer"]
 
58
  } );
59
 
60
  jQuery('#galleryContainer').sortable( {
@@ -63,7 +147,18 @@ jQuery(document).ready(
63
  opacity: 0.7,
64
  tolerance: 'intersect',
65
  distance: 2,
66
- connectWith: ["#selectContainer"]
 
 
 
 
 
 
 
 
 
 
 
67
  } );
68
 
69
  jQuery('a.min').bind('click', toggleContent);
@@ -118,9 +213,15 @@ function ngg_serialize(s)
118
  {
119
  //serial = jQuery.SortSerialize(s);
120
  serial = jQuery('#galleryContainer').sortable('serialize');
121
- jQuery('input[@name=sortorder]').val(serial);
 
 
 
 
122
  }
 
123
  </script>
 
124
  <div class="wrap album" id="wrap" >
125
  <h2><?php _e('Manage Albums', 'nggallery') ?></h2>
126
  <form id="selectalbum" method="POST" onsubmit="ngg_serialize()" accept-charset="utf-8">
@@ -132,154 +233,263 @@ function ngg_serialize(s)
132
  <select id="act_album" name="act_album" onchange="this.form.submit();">
133
  <option value="0" ><?php _e('No album selected', 'nggallery') ?></option>
134
  <?php
135
- $albumlist = $wpdb->get_results("SELECT * FROM $wpdb->nggalbum ORDER BY id ASC");
136
- if(is_array($albumlist)) {
137
- foreach($albumlist as $album) {
138
- if ($_POST['act_album'] == $album->id) $selected = 'selected="selected" ';
139
- else $selected = '';
140
  echo '<option value="'.$album->id.'" '.$selected.'>'.$album->name.'</option>'."\n";
141
  }
142
  }
143
  ?>
144
  </select>
145
- <?php if ($_POST['act_album'] > 0){ ?>
146
- <input class="button-primary action" type="submit" name="update" value="<?php _e('Update', 'nggallery') ?>"/>
147
- <input type="submit" name="delete" class="button-secondary action" value="<?php _e('Delete', 'nggallery') ?>" onclick="javascript:check=confirm('<?php _e('Delete album ?','nggallery'); ?>');if(check==false) return false;"/>
 
148
  <?php } else { ?>
149
- <span><?php _e('Add new album', 'nggallery') ?>&nbsp;</span><input class="search-input" id="newalbum" name="newalbum" type="text" value="" />
150
- <input class="button-secondary action" type="submit" name="update" value="<?php _e('Add', 'nggallery') ?>"/>
 
151
  <?php } ?>
152
  </div>
153
  </div>
154
  </form>
155
- <br style="clear: both;"/>
156
- <p>
157
- <div style="float:right;">
158
- <a href="#" id="toggle_used"><?php _e('[Show all]', 'nggallery') ?></a>
159
- | <a href="#" id="all_max"><?php _e('[Maximize]', 'nggallery') ?></a>
160
- | <a href="#" id="all_min"><?php _e('[Minimize]', 'nggallery') ?></a>
 
 
 
 
161
  </div>
162
- <?php _e('After you create and select a album, you can drag and drop a gallery into your album below','nggallery'); ?>
163
- </p>
164
 
165
- <br class="clear"/>
166
 
167
  <div class="container">
168
- <div id="selectContainer" class="groupWrapper">
169
- <h3><?php _e('Select Gallery', 'nggallery') ?></h3>
170
- <?php
171
- $gallerylist = $wpdb->get_results("SELECT gid FROM $wpdb->nggallery");
172
 
173
- //TODO:Code MUST be optimized, how to flag a used gallery better ?
174
- $used_list = getallusedgalleries();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
175
 
176
- if(is_array($gallerylist)) {
177
- if ( ($_POST['act_album'] == 0) or (!isset($_POST['act_album'])) ) {
178
- foreach($gallerylist as $gallery) {
 
 
179
  if (in_array($gallery->gid,$used_list))
180
- getgallerycontainer($gallery->gid,true);
181
  else
182
- getgallerycontainer($gallery->gid,false);
183
- }
184
- } else {
185
- $act_album = $_POST['act_album'];
186
- $sortorder = $wpdb->get_var("SELECT sortorder FROM $wpdb->nggalbum WHERE id = '$act_album'");
187
- $sort_array = unserialize($sortorder);
188
- // if something went wrong, initialize to empty array
189
- if (!is_array($sort_array)) $sort_array = array();
190
- foreach($gallerylist as $gallery) {
191
- if (!in_array($gallery->gid, $sort_array)) {
192
- if (in_array($gallery->gid,$used_list))
193
- getgallerycontainer($gallery->gid,true);
194
- else
195
- getgallerycontainer($gallery->gid,false);
196
- }
197
  }
198
  }
199
  }
200
  ?>
201
- </div><!-- /#select container -->
 
 
 
 
202
 
203
- <div id="galleryContainer" class="groupWrapper">
204
  <?php
205
- if ($_POST['act_album'] > 0){
206
- $act_album = $_POST['act_album'];
207
- $album = $wpdb->get_row("SELECT * FROM $wpdb->nggalbum WHERE id = '$act_album'");
208
- echo '<h3>'.__('Album Page ID', 'nggallery').' '.$album->id.' : '.$album->name.'</h3>'."\n";
209
- if (!empty($album->sortorder)) {
210
- $sort_array = unserialize($album->sortorder);
211
- if (is_array($sort_array)) {
212
- foreach($sort_array as $galleryid) {
213
- getgallerycontainer($galleryid, false);
214
- }
215
- }
216
  }
217
  }
218
  else
219
  {
220
- echo '<h3>'.__('No album selected!', 'nggallery').'</h3>';
 
 
 
 
 
221
  }
222
  ?>
223
- </div><!-- /#gallery container -->
 
224
 
225
  </div><!-- /#container -->
226
  </div><!-- /#wrap -->
227
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
228
  <?php
229
- }
230
- function getgallerycontainer($galleryid = 0, $used = false) {
231
- global $wpdb;
232
-
233
- $gallery = $wpdb->get_row("SELECT * FROM $wpdb->nggallery WHERE gid = '$galleryid'");
234
 
235
- if ($gallery) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
236
 
237
- // set image url
238
- $act_thumbnail_url = get_option ('siteurl') . '/' .$gallery->path . nggGallery::get_thumbnail_folder($gallery->path, FALSE);
 
239
 
240
- $post= get_post($gallery->pageid);
241
- $pagename = $post->post_title;
242
- $filename = $wpdb->get_var("SELECT filename FROM $wpdb->nggpictures WHERE pid = '$gallery->previewpic'");
243
- $img = ($filename) ? '<img src="'.$act_thumbnail_url. 'thumbs_' .$filename.'" />' : '';
 
 
 
 
 
 
 
244
  // add class if it's in use in other albums
245
- $used = $used ? ' inUse' : '';
246
- echo '<div id="gid-'.$gallery->gid.'" class="groupItem'. $used .'">
 
247
  <div class="innerhandle">
248
- <div class="item_top">
249
  <a href="#" class="min" title="close">[-]</a>
250
- ID: '.$gallery->gid.' || Title: '.nggGallery::i18n($gallery->title).'
251
  </div>
252
  <div class="itemContent">
253
- <div class="inlinepicture">'.$img.'</div>
254
- <p><strong>'.__('ID', 'nggallery').' : </strong>'.$gallery->gid.'</p>
255
- <p><strong>'.__('Name', 'nggallery').' : </strong>'.nggGallery::i18n($gallery->name).'</p>
256
- <p><strong>'.__('Title', 'nggallery').' : </strong>'.nggGallery::i18n($gallery->title).'</p>
257
- <p><strong>'.__('Page', 'nggallery').' : </strong>'.nggGallery::i18n($pagename).'</p>
258
  </div>
259
  </div>
260
  </div>';
261
  }
262
- }
263
-
264
- //get all used galleries form all albums
265
- function getallusedgalleries() {
266
- global $wpdb;
267
-
268
- $albumids = $wpdb->get_col("SELECT id FROM $wpdb->nggalbum");
269
- $used = array();
270
 
271
- if ($albumids) {
272
- foreach($albumids as $albumid) {
273
- $sortorder = $wpdb->get_var("SELECT sortorder FROM $wpdb->nggalbum WHERE id = '$albumid'");
274
- if (!empty($sortorder)) {
275
- $sort_array = unserialize($sortorder);
 
 
 
 
 
 
 
276
  foreach($sort_array as $galleryid) {
277
- if (!in_array($galleryid,$used))
278
  $used[] = $galleryid;
279
  }
280
  }
281
  }
 
 
282
  }
283
- return $used;
 
 
 
 
 
 
 
 
 
284
  }
285
  ?>
2
 
3
  if(preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die('You are not allowed to call this page directly.'); }
4
 
5
+ class nggManageAlbum {
6
+
7
+ /**
8
+ * The selected album ID
9
+ *
10
+ * @since 1.3.0
11
+ * @access privat
12
+ * @var int
13
+ */
14
+ var $currentID = 0;
15
+
16
+ /**
17
+ * The array for the galleries
18
+ *
19
+ * @since 1.3.0
20
+ * @access privat
21
+ * @var array
22
+ */
23
+ var $galleries = false;
24
+
25
+ /**
26
+ * The array for the albums
27
+ *
28
+ * @since 1.3.0
29
+ * @access privat
30
+ * @var array
31
+ */
32
+ var $albums = false;
33
 
34
+ /**
35
+ * PHP4 compatibility layer for calling the PHP5 constructor.
36
+ *
37
+ */
38
+ function nggManageAlbum() {
39
+ return $this->__construct();
40
+ }
41
+
42
+ /**
43
+ * Init the album output
44
+ *
45
+ */
46
+ function __construct() {
47
+ return true;
48
+ }
49
 
50
+ function controller() {
51
+ global $nggdb;
52
+
53
+ $this->currentID = isset($_POST['act_album']) ? (int) $_POST['act_album'] : 0 ;
54
+
55
+ if (isset ($_POST['update']) || isset( $_POST['delete'] ) || isset( $_POST['add'] ) )
56
+ $this->processor();
57
 
58
+ if (isset ($_POST['update_album']) )
59
+ $this->update_album();
60
 
61
+ // get first all galleries & albums
62
+ $this->albums = $nggdb->find_all_album();
63
+ $this->galleries = $nggdb->find_all_galleries();
64
+
65
+ $this->output();
66
+
67
+ }
68
+
69
+ function processor() {
70
+ global $wpdb;
71
 
72
+ check_admin_referer('ngg_album');
73
+
74
+ if ( isset($_POST['add']) && isset ($_POST['newalbum']) ) {
75
  $newalbum = attribute_escape($_POST['newalbum']);
76
  $result = $wpdb->query("INSERT INTO $wpdb->nggalbum (name, sortorder) VALUES ('$newalbum','0')");
77
+ if ($result)
78
+ nggGallery::show_message(__('Update Successfully','nggallery'));
79
  }
80
 
81
+ if ( isset($_POST['update']) && ($this->currentID > 0) ) {
82
+
83
  // get variable galleryContainer
84
  parse_str($_POST['sortorder']);
85
  if (is_array($gid)){
86
  $serial_sort = serialize($gid);
87
+ $wpdb->query("UPDATE $wpdb->nggalbum SET sortorder = '$serial_sort' WHERE id = $this->currentID ");
88
  } else {
89
+ $wpdb->query("UPDATE $wpdb->nggalbum SET sortorder = '0' WHERE id = $this->currentID ");
90
  }
91
  nggGallery::show_message(__('Update Successfully','nggallery'));
92
+
93
+ }
94
+
95
+ if ( isset($_POST['delete']) ) {
96
 
97
+ $result = nggdb::delete_album( $this->currentID );
98
+ if ($result)
99
+ nggGallery::show_message(__('Album deleted','nggallery'));
100
+ }
101
+
102
+ }
103
+
104
+ function update_album() {
105
+ global $wpdb;
106
+
107
+ check_admin_referer('ngg_thickbox_form');
108
+
109
+ $name = attribute_escape( $_POST['album_name'] );
110
+ $desc = attribute_escape( $_POST['album_desc'] );
111
+ $prev = (int) $_POST['previewpic'];
112
+
113
+ $result = $wpdb->query( $wpdb->prepare( "UPDATE $wpdb->nggalbum SET name= '%s', albumdesc= '%s', previewpic= %d WHERE id = '$this->currentID'" , $name, $desc, $prev ) );
114
 
115
+ if ($result)
116
+ nggGallery::show_message(__('Update Successfully','nggallery'));
 
117
  }
118
 
119
+ function output() {
120
+
121
+ global $wpdb, $nggdb;
122
+
123
+ //TODO:Code MUST be optimized, how to flag a used gallery better ?
124
+ $used_list = $this->get_used_galleries();
125
+
126
  ?>
127
 
128
  <script type="text/javascript">
137
  opacity: 0.7,
138
  tolerance: 'intersect',
139
  distance: 2,
140
+ forcePlaceholderSize: true ,
141
+ connectWith: ['#galleryContainer']
142
  } );
143
 
144
  jQuery('#galleryContainer').sortable( {
147
  opacity: 0.7,
148
  tolerance: 'intersect',
149
  distance: 2,
150
+ forcePlaceholderSize: true ,
151
+ connectWith: ['#selectContainer', '#albumContainer']
152
+ } );
153
+
154
+ jQuery('#albumContainer').sortable( {
155
+ items: '.groupItem',
156
+ placeholder: 'sort_placeholder',
157
+ opacity: 0.7,
158
+ tolerance: 'intersect',
159
+ distance: 2,
160
+ forcePlaceholderSize: true ,
161
+ connectWith: ['#galleryContainer']
162
  } );
163
 
164
  jQuery('a.min').bind('click', toggleContent);
213
  {
214
  //serial = jQuery.SortSerialize(s);
215
  serial = jQuery('#galleryContainer').sortable('serialize');
216
+ jQuery('input[name=sortorder]').val(serial);
217
+ }
218
+
219
+ function showDialog() {
220
+ tb_show("", "#TB_inline?width=640&height=240&inlineId=editalbum&modal=true", false);
221
  }
222
+
223
  </script>
224
+
225
  <div class="wrap album" id="wrap" >
226
  <h2><?php _e('Manage Albums', 'nggallery') ?></h2>
227
  <form id="selectalbum" method="POST" onsubmit="ngg_serialize()" accept-charset="utf-8">
233
  <select id="act_album" name="act_album" onchange="this.form.submit();">
234
  <option value="0" ><?php _e('No album selected', 'nggallery') ?></option>
235
  <?php
236
+ if( is_array($this->albums) ) {
237
+ foreach($this->albums as $album) {
238
+ $selected = ($this->currentID == $album->id) ? 'selected="selected" ' : '';
 
 
239
  echo '<option value="'.$album->id.'" '.$selected.'>'.$album->name.'</option>'."\n";
240
  }
241
  }
242
  ?>
243
  </select>
244
+ <?php if ($this->currentID > 0){ ?>
245
+ <input class="button-primary" type="submit" name="update" value="<?php _e('Update', 'nggallery'); ?>"/>
246
+ <input class="button-secondary" type="submit" name="showThickbox" value="<?php _e( 'Edit album', 'nggallery'); ?>" onclick="showDialog(); return false;" />
247
+ <input class="button-secondary action "type="submit" name="delete" value="<?php _e('Delete', 'nggallery'); ?>" onclick="javascript:check=confirm('<?php _e('Delete album ?','nggallery'); ?>');if(check==false) return false;"/>
248
  <?php } else { ?>
249
+ <span><?php _e('Add new album', 'nggallery') ?>&nbsp;</span>
250
+ <input class="search-input" id="newalbum" name="newalbum" type="text" value="" />
251
+ <input class="button-secondary action" type="submit" name="add" value="<?php _e('Add', 'nggallery') ?>"/>
252
  <?php } ?>
253
  </div>
254
  </div>
255
  </form>
256
+
257
+ <br class="clear"/>
258
+
259
+ <div>
260
+ <div style="float:right;">
261
+ <a href="#" title="<?php _e('Show / hide used galleries','nggallery'); ?>" id="toggle_used"><?php _e('[Show all]', 'nggallery') ?></a>
262
+ | <a href="#" title="<?php _e('Maximize the widget content','nggallery'); ?>" id="all_max"><?php _e('[Maximize]', 'nggallery') ?></a>
263
+ | <a href="#" title="<?php _e('Minimize the widget content','nggallery'); ?>" id="all_min"><?php _e('[Minimize]', 'nggallery') ?></a>
264
+ </div>
265
+ <?php _e('After you create and select a album, you can drag and drop a gallery or another album into your new album below','nggallery'); ?>
266
  </div>
 
 
267
 
268
+ <br class="clear" />
269
 
270
  <div class="container">
 
 
 
 
271
 
272
+ <!-- /#album container -->
273
+ <div class="widget widget-right">
274
+ <div class="widget-top">
275
+ <h3><?php _e('Select album', 'nggallery'); ?></h3>
276
+ </div>
277
+ <div id="albumContainer" class="widget-holder">
278
+ <?php
279
+ if( is_array( $this->albums ) ) {
280
+ foreach($this->albums as $album) {
281
+ $this->get_container('a' . $album->id);
282
+ }
283
+ }
284
+ ?>
285
+ </div>
286
+ </div>
287
+
288
+ <!-- /#select container -->
289
+ <div class="widget widget-right">
290
+ <div class="widget-top">
291
+ <h3><?php _e('Select gallery', 'nggallery'); ?></h3>
292
+ </div>
293
+ <div id="selectContainer" class="widget-holder">
294
+ <?php
295
 
296
+ if( is_array( $this->galleries ) ) {
297
+ //get the array of galleries
298
+ $sort_array = (array) $this->albums[$this->currentID]->galleries;
299
+ foreach($this->galleries as $gallery) {
300
+ if (!in_array($gallery->gid, $sort_array)) {
301
  if (in_array($gallery->gid,$used_list))
302
+ $this->get_container($gallery->gid,true);
303
  else
304
+ $this->get_container($gallery->gid,false);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
305
  }
306
  }
307
  }
308
  ?>
309
+ </div>
310
+ </div>
311
+
312
+ <!-- /#target-album -->
313
+ <div class="widget target-album widget-liquid-left">
314
 
 
315
  <?php
316
+ if ($this->currentID > 0){
317
+ $album = $this->albums[$this->currentID];
318
+ ?>
319
+ <div class="widget-top">
320
+ <h3><?php _e('Album ID', 'nggallery'); ?> <?php echo $album->id . ' : ' . $album->name; ?> </h3>
321
+ </div>
322
+ <div id="galleryContainer" class="widget-holder target">
323
+ <?php
324
+ $sort_array = (array) $this->albums[$this->currentID]->galleries;
325
+ foreach($sort_array as $galleryid) {
326
+ $this->get_container($galleryid, false);
327
  }
328
  }
329
  else
330
  {
331
+ ?>
332
+ <div class="widget-top">
333
+ <h3><?php _e('No album selected!', 'nggallery'); ?></h3>
334
+ </div>
335
+ <div class="widget-holder target">
336
+ <?php
337
  }
338
  ?>
339
+ </div>
340
+ </div><!-- /#target-album -->
341
 
342
  </div><!-- /#container -->
343
  </div><!-- /#wrap -->
344
 
345
+ <!-- #editalbum -->
346
+ <div id="editalbum" style="display: none;" >
347
+ <form id="form-edit-album" method="POST" accept-charset="utf-8">
348
+ <?php wp_nonce_field('ngg_thickbox_form') ?>
349
+ <input type="hidden" id="current_album" name="act_album" value="<?php echo $this->currentID; ?>" />
350
+ <table width="100%" border="0" cellspacing="3" cellpadding="3" >
351
+ <tr>
352
+ <th>
353
+ <?php _e('Album name:', 'nggallery'); ?><br />
354
+ <input class="search-input" id="album_name" name="album_name" type="text" value="<?php echo attribute_escape( $album->name ); ?>" style="width:95%" />
355
+ </th>
356
+ </tr>
357
+ <tr>
358
+ <th>
359
+ <?php _e('Album description:', 'nggallery'); ?><br />
360
+ <textarea class="search-input" id="album_desc" name="album_desc" cols="50" rows="2" style="width:95%" ><?php echo attribute_escape( $album->albumdesc ); ?></textarea>
361
+ </th>
362
+ </tr>
363
+ <tr>
364
+ <th>
365
+ <?php _e('Select a preview image:', 'nggallery'); ?>&nbsp;
366
+ <select name="previewpic" style="width:95%" >
367
+ <option value="0"><?php _e('No picture', 'nggallery'); ?></option>
368
+ <?php
369
+ $picturelist = $wpdb->get_results("SELECT * FROM $wpdb->nggpictures ORDER BY pid DESC");
370
+ if( is_array($picturelist) ) {
371
+ foreach($picturelist as $picture) {
372
+ echo '<option value="' . $picture->pid . '" >'. $picture->pid . ' - ' . $picture->filename.'</option>'."\n";
373
+ }
374
+ }
375
+ ?>
376
+ </select>
377
+ </th>
378
+ </tr>
379
+ <tr align="right">
380
+ <td class="submit">
381
+ <input type="submit" class="button-primary" name="update_album" value="<?php _e("OK",'nggallery')?>" />
382
+ &nbsp;
383
+ <input class="button-secondary" type="reset" value="<?php _e("Cancel",'nggallery')?>" onclick="tb_remove()"/>
384
+ </td>
385
+ </tr>
386
+ </table>
387
+ </form>
388
+ </div>
389
+ <!-- /#editalbum -->
390
+
391
  <?php
392
+
393
+ }
 
 
 
394
 
395
+ /**
396
+ * Create the album or gallery container
397
+ *
398
+ * @param integer $id (the prefix 'a' indidcates that you look for a album
399
+ * @param bool $used (object will be hidden)
400
+ * @return $output
401
+ */
402
+ function get_container($id = 0, $used = false) {
403
+ global $wpdb, $nggdb;
404
+
405
+ $obj = array();
406
+
407
+ // if the id started with a 'a', then it's a sub album
408
+ if (substr( $id, 0, 1) == 'a') {
409
+
410
+ if ( !$album = $this->albums[ substr( $id, 1) ] )
411
+ return;
412
+
413
+ $obj['id'] = $album->id;
414
+ $obj['name'] = $obj['title'] = $album->name;
415
+ $obj['pagenname'] = '---';
416
+ $class = 'album_obj';
417
+
418
+ if ($album->previewpic > 0)
419
+ $image = $nggdb->find_image( $album->previewpic );
420
+ $preview_image = ($image->thumbURL) ? '<div class="inlinepicture"><img src="' . $image->thumbURL . '" /></div>' : '';
421
+
422
+ // this indicates that we have a album container
423
+ $prefix = 'a';
424
+
425
+ } else {
426
+ if ( !$gallery = $nggdb->find_gallery( $id ) )
427
+ return;
428
 
429
+ $obj['id'] = $gallery->gid;
430
+ $obj['name'] = $gallery->name;
431
+ $obj['title'] = $gallery->title;
432
 
433
+ // get the post name
434
+ $post= get_post($gallery->pageid);
435
+ $obj['pagenname'] = ($post == null) ? '' : $post->post_title;
436
+
437
+ // set image url
438
+ $image = $nggdb->find_image( $gallery->previewpic );
439
+ $preview_image = ($image->thumbURL) ? '<div class="inlinepicture"><img src="' . $image->thumbURL . '" /></div>' : '';
440
+
441
+ $prefix = '';
442
+ }
443
+
444
  // add class if it's in use in other albums
445
+ $used = $used ? ' inUse' : '';
446
+
447
+ echo '<div id="gid-' . $prefix . $obj['id'] . '" class="groupItem' . $used . '">
448
  <div class="innerhandle">
449
+ <div class="item_top ' . $class . '">
450
  <a href="#" class="min" title="close">[-]</a>
451
+ ID: ' . $obj['id'] . ' | ' . wp_html_excerpt( nggGallery::i18n( $obj['title'] ) , 25) . '
452
  </div>
453
  <div class="itemContent">
454
+ ' . $preview_image . '
455
+ <p><strong>' . __('Name', 'nggallery') . ' : </strong>' . nggGallery::i18n( $obj['name'] ) . '</p>
456
+ <p><strong>' . __('Title', 'nggallery') . ' : </strong>' . nggGallery::i18n( $obj['title'] ) . '</p>
457
+ <p><strong>' . __('Page', 'nggallery'). ' : </strong>' . nggGallery::i18n( $obj['pagenname'] ) . '</p>
 
458
  </div>
459
  </div>
460
  </div>';
461
  }
 
 
 
 
 
 
 
 
462
 
463
+ /**
464
+ * get all used galleries from all albums
465
+ *
466
+ * @return array $used_galleries_ids
467
+ */
468
+ function get_used_galleries() {
469
+
470
+ $used = array();
471
+
472
+ if ($this->albums) {
473
+ foreach($this->albums as $key => $value) {
474
+ $sort_array = $this->albums[$key]->galleries;
475
  foreach($sort_array as $galleryid) {
476
+ if (!in_array($galleryid, $used))
477
  $used[] = $galleryid;
478
  }
479
  }
480
  }
481
+
482
+ return $used;
483
  }
484
+
485
+ /**
486
+ * PHP5 style destructor
487
+ *
488
+ * @return bool Always true
489
+ */
490
+ function __destruct() {
491
+ return true;
492
+ }
493
+
494
  }
495
  ?>
admin/css/nggadmin.css CHANGED
@@ -1,5 +1,5 @@
1
  /*
2
- ** NextGEN Gallery Style for Wordpress 2.7
3
  */
4
 
5
  /* SETTINGS FOR Overview Gallery */
@@ -198,50 +198,53 @@ div .progressbar span {
198
  padding-left: 50px;
199
  }
200
 
201
- .groupItem
202
  {
203
- background-color:#FBFBFB;
204
- border:1px solid #CCCCCC;
205
- display:block;
206
- line-height:75px;
207
  cursor: move;
208
- margin: 0 0 10px;
209
- width: 390px;
 
 
 
 
210
  }
211
 
212
  .groupItem .item_top
213
  {
214
- background-color:#CEE1EF;
215
- color: #333333;
216
  font-weight:bold;
217
  line-height: 28px;
218
  height: 28px;
219
- cursor: move;
220
  padding: 0 5px;
221
- position: static;
 
 
 
 
 
 
 
 
222
  }
223
 
224
  .groupItem .item_top a
225
  {
 
226
  float:right;
227
  text-decoration: none;
228
- color: #333333;
229
  }
230
 
231
  .groupItem .item_top a:hover
232
  {
233
- color: #D54E21;
234
- }
235
-
236
- .innerhandle {
237
- border-color:#F2F2F2 rgb(232, 232, 232) rgb(232, 232, 232) rgb(242, 242, 242);
238
- border-style:solid;
239
- border-width:1px;
240
- display:block;
241
  }
242
 
243
  .itemContent {
244
- padding: 5px 0 10px 5px;
 
 
 
245
  }
246
 
247
  .itemContent p {
@@ -260,37 +263,56 @@ div .progressbar span {
260
 
261
  .inlinepicture img
262
  {
263
- max-height:75px;
 
264
  }
265
 
266
  .sort_placeholder
267
  {
268
  border:1px dashed #bba !important;
 
269
  background: #F9F9F9;
270
  }
271
 
272
- #galleryContainer {
273
- background-color:#FBFBFB;
274
- border:1px solid #BBBBBB;
275
- margin:10px 440px 10px 10px;
276
- padding:0px 10px 10px 10px;
 
277
  }
278
 
279
- #selectContainer {
280
  float:right;
281
- background:#FBFBFB none repeat scroll 0%;
282
- border:1px solid #BBBBBB;
283
- margin:0pt 10px 10px;
284
- padding:0px 5px 5px 10px;
285
- width:395px;
286
  }
287
 
288
- #galleryContainer h3, #selectContainer h3 {
289
- color:#333333;
 
 
 
 
 
 
 
 
290
  text-align:center;
291
- line-height:25px;
 
 
 
 
 
 
 
 
 
 
292
  }
293
 
 
294
  /* SETTINGS FOR SORT GALLERY */
295
 
296
  #sortGallery {
@@ -387,4 +409,11 @@ DIV that shows the image as you drag it
387
  border:1px solid #CC0000;
388
  margin:5px auto;
389
  padding:10px;
390
- }
 
 
 
 
 
 
 
1
  /*
2
+ ** NextGEN Gallery Style for Wordpress 2.8
3
  */
4
 
5
  /* SETTINGS FOR Overview Gallery */
198
  padding-left: 50px;
199
  }
200
 
201
+ div .groupItem
202
  {
 
 
 
 
203
  cursor: move;
204
+ width: 295px;
205
+ padding: 5px;
206
+ }
207
+
208
+ div .innerhandle {
209
+ background-color:#FBFBFB;
210
  }
211
 
212
  .groupItem .item_top
213
  {
214
+ background-color:#2683AE;
215
+ color: #FFFFFF;
216
  font-weight:bold;
217
  line-height: 28px;
218
  height: 28px;
 
219
  padding: 0 5px;
220
+ -moz-border-radius: 3px;
221
+ -khtml-border-radius: 3px;
222
+ -webkit-border-radius: 3px;
223
+ border-radius: 3px;
224
+ }
225
+
226
+ .groupItem .album_obj
227
+ {
228
+ background-color:#D54E21;
229
  }
230
 
231
  .groupItem .item_top a
232
  {
233
+ color:#FFFFFF;
234
  float:right;
235
  text-decoration: none;
 
236
  }
237
 
238
  .groupItem .item_top a:hover
239
  {
240
+ color:#FFFFFF;
 
 
 
 
 
 
 
241
  }
242
 
243
  .itemContent {
244
+ border-color:#DFDFDF;
245
+ border-style:none solid solid;
246
+ border-width:0 1px 1px;
247
+ padding:2px 0 20px 2px;
248
  }
249
 
250
  .itemContent p {
263
 
264
  .inlinepicture img
265
  {
266
+ margin:3px;
267
+ max-height:60px;
268
  }
269
 
270
  .sort_placeholder
271
  {
272
  border:1px dashed #bba !important;
273
+ margin: 5px;
274
  background: #F9F9F9;
275
  }
276
 
277
+ .container {
278
+ margin-top: 10px;
279
+ }
280
+
281
+ .target-album {
282
+ margin:10px 685px 10px 10px;
283
  }
284
 
285
+ .widget-right {
286
  float:right;
287
+ margin:0pt 10px;
288
+ width:315px;
 
 
 
289
  }
290
 
291
+ .widget-holder {
292
+ min-height: 400px;
293
+ padding-top:1px;
294
+ }
295
+
296
+ .target {
297
+ background-color:#F1F1F1;
298
+ }
299
+
300
+ div.widget-top h3 {
301
  text-align:center;
302
+ line-height:25px;
303
+ margin: 0;
304
+ padding: 5px 12px;
305
+ font-size: 13px;
306
+ }
307
+
308
+ div.widget-top {
309
+ text-shadow:0 1px 0 #FFFFFF;
310
+ background-repeat: repeat-x;
311
+ background-position: 0 0;
312
+ font-size: 13px;
313
  }
314
 
315
+
316
  /* SETTINGS FOR SORT GALLERY */
317
 
318
  #sortGallery {
409
  border:1px solid #CC0000;
410
  margin:5px auto;
411
  padding:10px;
412
+ }
413
+ /* ABOUT PAGE */
414
+ .ngg-list {
415
+ font-size:11px;
416
+ margin-left:15px;
417
+ list-style-position:inside;
418
+ list-style-type:disc;
419
+ }
admin/functions.php CHANGED
@@ -2,11 +2,26 @@
2
 
3
  if(preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die('You are not allowed to call this page directly.'); }
4
 
 
 
 
 
 
 
 
 
5
  class nggAdmin{
6
 
7
- // **************************************************************
 
 
 
 
 
 
 
8
  function create_gallery($gallerytitle, $defaultpath) {
9
- // create a new gallery & folder
10
  global $wpdb, $user_ID;
11
 
12
  // get the current user ID
@@ -85,7 +100,7 @@ class nggAdmin{
85
  $result = $wpdb->query( $wpdb->prepare("INSERT INTO $wpdb->nggallery (name, path, title, author) VALUES (%s, %s, %s, %s)", $galleryname, $nggpath, $gallerytitle , $user_ID) );
86
  if ($result) {
87
  $message = __('Gallery %1$s successfully created.<br/>You can show this gallery with the tag %2$s.<br/>','nggallery');
88
- $message = sprintf($message, $galleryname, '[gallery id=' . $wpdb->insert_id . ']');
89
  $message .= '<a href="' . admin_url() . 'admin.php?page=nggallery-manage-gallery&mode=edit&gid=' . $wpdb->insert_id . '" >';
90
  $message .= __('Edit gallery','nggallery');
91
  $message .= '</a>';
@@ -96,11 +111,15 @@ class nggAdmin{
96
  }
97
  }
98
 
99
- // **************************************************************
 
 
 
 
 
 
 
100
  function import_gallery($galleryfolder) {
101
- // ** $galleryfolder contains relative path
102
-
103
- //TODO: Check permission of existing thumb folder & images
104
 
105
  global $wpdb, $user_ID;
106
 
@@ -179,7 +198,14 @@ class nggAdmin{
179
  return;
180
 
181
  }
182
- // **************************************************************
 
 
 
 
 
 
 
183
  function scandir($dirname = '.') {
184
  // thx to php.net :-)
185
  $ext = array('jpeg', 'jpg', 'png', 'gif');
@@ -198,6 +224,7 @@ class nggAdmin{
198
  /**
199
  * nggAdmin::createThumbnail() - function to create or recreate a thumbnail
200
  *
 
201
  * @param object | int $image contain all information about the image or the id
202
  * @return string result code
203
  * @since v1.0.0
@@ -276,6 +303,7 @@ class nggAdmin{
276
  /**
277
  * nggAdmin::resize_image() - create a new image, based on the height /width
278
  *
 
279
  * @param object | int $image contain all information about the image or the id
280
  * @param integer $width optional
281
  * @param integer $height optional
@@ -319,6 +347,7 @@ class nggAdmin{
319
  /**
320
  * nggAdmin::set_watermark() - set the watermarl for the image
321
  *
 
322
  * @param object | int $image contain all information about the image or the id
323
  * @return string result code
324
  */
@@ -362,16 +391,29 @@ class nggAdmin{
362
  return '1';
363
  }
364
 
365
- // **************************************************************
 
 
 
 
 
 
 
366
  function add_Images($galleryID, $imageslist) {
367
- // add images to database
368
  global $wpdb;
369
 
370
  $image_ids = array();
371
 
372
  if ( is_array($imageslist) ) {
373
  foreach($imageslist as $picture) {
374
- $result = $wpdb->query( $wpdb->prepare("INSERT INTO $wpdb->nggpictures (galleryid, filename, alttext, exclude) VALUES (%s, %s, %s, 0)", $galleryID, $picture, $picture) );
 
 
 
 
 
 
375
  $pic_id = (int) $wpdb->insert_id;
376
  if ($result)
377
  $image_ids[] = $pic_id;
@@ -390,12 +432,18 @@ class nggAdmin{
390
 
391
  }
392
 
393
- // **************************************************************
 
 
 
 
 
 
394
  function import_MetaData($imagesIds) {
395
- // add images to database
396
  global $wpdb;
397
 
398
- require_once(NGGALLERY_ABSPATH.'/lib/image.php');
399
 
400
  if (!is_array($imagesIds))
401
  $imagesIds = array($imagesIds);
@@ -422,15 +470,21 @@ class nggAdmin{
422
  wp_set_object_terms($pic_id, $taglist, 'ngg_tag');
423
  } // add tags
424
  }// error check
425
- } // foreach
426
 
427
  return true;
428
 
429
  }
430
 
431
- // **************************************************************
 
 
 
 
 
 
 
432
  function get_MetaData($picPath) {
433
- // must be Gallery absPath + filename
434
 
435
  require_once(NGGALLERY_ABSPATH . '/lib/meta.php');
436
 
@@ -446,7 +500,15 @@ class nggAdmin{
446
 
447
  }
448
 
449
- // **************************************************************
 
 
 
 
 
 
 
 
450
  function unzip($dir, $file) {
451
 
452
  if(! class_exists('PclZip'))
@@ -463,7 +525,14 @@ class nggAdmin{
463
  return true;
464
  }
465
 
466
- // **************************************************************
 
 
 
 
 
 
 
467
  function getOnlyImages($p_event, $p_header) {
468
 
469
  $info = pathinfo($p_header['filename']);
@@ -482,23 +551,61 @@ class nggAdmin{
482
  }
483
  }
484
 
485
- // **************************************************************
 
 
 
 
 
 
486
  function import_zipfile($galleryID) {
487
 
488
  global $ngg, $wpdb;
489
 
490
  if (nggAdmin::check_quota())
491
  return false;
492
-
493
  $defaultpath = $ngg->options['gallerypath'];
494
- $temp_zipfile = $_FILES['zipfile']['tmp_name'];
495
- $filename = $_FILES['zipfile']['name'];
496
-
497
- // check if file is a zip file
498
- if (!eregi('zip|download|octet-stream', $_FILES['zipfile']['type'])) {
499
- @unlink($temp_zipfile); // del temp file
500
- nggGallery::show_error(__('Uploaded file was no or a faulty zip file ! The server recognize : ','nggallery').$_FILES['zipfile']['type']);
501
- return false;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
502
  }
503
 
504
  // should this unpacked into a new folder ?
@@ -548,10 +655,14 @@ class nggAdmin{
548
  return true;
549
  }
550
 
551
- // **************************************************************
 
 
 
 
 
552
  function upload_images() {
553
- // upload of pictures
554
-
555
  global $wpdb;
556
 
557
  // WPMU action
@@ -646,11 +757,17 @@ class nggAdmin{
646
 
647
  return;
648
 
649
- } // end function
650
 
651
- // **************************************************************
 
 
 
 
 
 
652
  function swfupload_image($galleryID = 0) {
653
- // This function is called by the swfupload
654
  global $wpdb;
655
 
656
  if ($galleryID == 0) {
@@ -708,9 +825,14 @@ class nggAdmin{
708
  return '0';
709
  }
710
 
711
- // **************************************************************
 
 
 
 
 
712
  function check_quota() {
713
- // Only for WPMU
714
  if ( (IS_WPMU) && wpmu_enable_function('wpmuQuotaCheck'))
715
  if( $error = upload_is_user_over_quota( false ) ) {
716
  nggGallery::show_error( __( 'Sorry, you have used your space allocation. Please delete some files to upload more files.','nggallery' ) );
@@ -719,9 +841,15 @@ class nggAdmin{
719
  return false;
720
  }
721
 
722
- // **************************************************************
 
 
 
 
 
 
723
  function chmod($filename = '') {
724
- // Set correct file permissions (taken from wp core)
725
  $stat = @ stat(dirname($filename));
726
  $perms = $stat['mode'] & 0007777;
727
  $perms = $perms & 0000666;
@@ -731,9 +859,16 @@ class nggAdmin{
731
  return false;
732
  }
733
 
 
 
 
 
 
 
 
 
734
  function check_safemode($foldername) {
735
- // Check UID in folder and Script
736
- // Read http://www.php.net/manual/en/features.safe-mode.php to understand safe_mode
737
  if ( SAFE_MODE ) {
738
 
739
  $script_uid = ( ini_get('safe_mode_gid') ) ? getmygid() : getmyuid();
@@ -750,27 +885,43 @@ class nggAdmin{
750
  return true;
751
  }
752
 
 
 
 
 
 
 
 
753
  function can_manage_this_gallery($check_ID) {
754
- // check is the ID fit's to the user_ID'
755
- global $user_ID, $wp_roles;
756
 
757
- // get the current user ID
758
- get_currentuserinfo();
759
 
760
- if ( !current_user_can('NextGEN Manage others gallery') )
 
 
 
761
  if ( $user_ID != $check_ID)
762
  return false;
 
763
 
764
  return true;
765
 
766
  }
767
 
 
 
 
 
 
 
 
 
768
  function move_images($pic_ids, $dest_gid) {
769
 
770
  $errors = '';
771
  $count = 0;
772
 
773
- if (!is_array($pic_ids))
774
  $pic_ids = array($pic_ids);
775
 
776
  // Get destination gallery
@@ -835,6 +986,11 @@ class nggAdmin{
835
 
836
  /**
837
  * Copy images to another gallery
 
 
 
 
 
838
  */
839
  function copy_images($pic_ids, $dest_gid) {
840
 
@@ -863,7 +1019,7 @@ class nggAdmin{
863
 
864
  foreach ($images as $image) {
865
  // WPMU action
866
- if (nggAdmin::check_quota())
867
  return;
868
 
869
  $i = 0;
@@ -923,6 +1079,15 @@ class nggAdmin{
923
  return;
924
  }
925
 
 
 
 
 
 
 
 
 
 
926
  function do_ajax_operation( $operation, $image_array, $title = '' ) {
927
 
928
  if ( !is_array($image_array) || empty($image_array) )
@@ -957,8 +1122,9 @@ class nggAdmin{
957
  /**
958
  * nggAdmin::set_gallery_preview() - define a preview pic after the first upload, can be changed in the gallery settings
959
  *
 
960
  * @param int $galleryID
961
- * @return
962
  */
963
  function set_gallery_preview( $galleryID ) {
964
 
@@ -978,11 +1144,16 @@ class nggAdmin{
978
 
979
  } // END class nggAdmin
980
 
981
- // **************************************************************
982
- //TODO: Cannot be member of a class ? Check PCLZIP later...
 
 
 
 
 
983
  function ngg_getOnlyImages($p_event, $p_header) {
984
 
985
  return nggAdmin::getOnlyImages($p_event, $p_header);
986
 
987
  }
988
- ?>
2
 
3
  if(preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die('You are not allowed to call this page directly.'); }
4
 
5
+ /**
6
+ * nggAdmin - Class for admin operation
7
+ *
8
+ * @package NextGEN Gallery
9
+ * @author Alex Rabe
10
+ * @copyright 2007-2209
11
+ * @access public
12
+ */
13
  class nggAdmin{
14
 
15
+ /**
16
+ * create a new gallery & folder
17
+ *
18
+ * @class nggAdmin
19
+ * @param string $gallerytitle
20
+ * @param string $defaultpath
21
+ * @return
22
+ */
23
  function create_gallery($gallerytitle, $defaultpath) {
24
+
25
  global $wpdb, $user_ID;
26
 
27
  // get the current user ID
100
  $result = $wpdb->query( $wpdb->prepare("INSERT INTO $wpdb->nggallery (name, path, title, author) VALUES (%s, %s, %s, %s)", $galleryname, $nggpath, $gallerytitle , $user_ID) );
101
  if ($result) {
102
  $message = __('Gallery %1$s successfully created.<br/>You can show this gallery with the tag %2$s.<br/>','nggallery');
103
+ $message = sprintf($message, $galleryname, '[nggallery id=' . $wpdb->insert_id . ']');
104
  $message .= '<a href="' . admin_url() . 'admin.php?page=nggallery-manage-gallery&mode=edit&gid=' . $wpdb->insert_id . '" >';
105
  $message .= __('Edit gallery','nggallery');
106
  $message .= '</a>';
111
  }
112
  }
113
 
114
+ /**
115
+ * nggAdmin::import_gallery()
116
+ * TODO: Check permission of existing thumb folder & images
117
+ *
118
+ * @class nggAdmin
119
+ * @param string $galleryfolder contains relative path
120
+ * @return
121
+ */
122
  function import_gallery($galleryfolder) {
 
 
 
123
 
124
  global $wpdb, $user_ID;
125
 
198
  return;
199
 
200
  }
201
+
202
+ /**
203
+ * nggAdmin::scandir()
204
+ *
205
+ * @class nggAdmin
206
+ * @param string $dirname
207
+ * @return
208
+ */
209
  function scandir($dirname = '.') {
210
  // thx to php.net :-)
211
  $ext = array('jpeg', 'jpg', 'png', 'gif');
224
  /**
225
  * nggAdmin::createThumbnail() - function to create or recreate a thumbnail
226
  *
227
+ * @class nggAdmin
228
  * @param object | int $image contain all information about the image or the id
229
  * @return string result code
230
  * @since v1.0.0
303
  /**
304
  * nggAdmin::resize_image() - create a new image, based on the height /width
305
  *
306
+ * @class nggAdmin
307
  * @param object | int $image contain all information about the image or the id
308
  * @param integer $width optional
309
  * @param integer $height optional
347
  /**
348
  * nggAdmin::set_watermark() - set the watermarl for the image
349
  *
350
+ * @class nggAdmin
351
  * @param object | int $image contain all information about the image or the id
352
  * @return string result code
353
  */
391
  return '1';
392
  }
393
 
394
+ /**
395
+ * Add images to database
396
+ *
397
+ * @class nggAdmin
398
+ * @param int $galleryID
399
+ * @param array $imageslist
400
+ * @return array $image_ids Id's which are sucessful added
401
+ */
402
  function add_Images($galleryID, $imageslist) {
403
+
404
  global $wpdb;
405
 
406
  $image_ids = array();
407
 
408
  if ( is_array($imageslist) ) {
409
  foreach($imageslist as $picture) {
410
+
411
+ // strip off the extension of the filename
412
+ $path_parts = pathinfo( $picture );
413
+ $alttext = ( !isset($path_parts['filename']) ) ? substr($path_parts['basename'], 0,strpos($path_parts['basename'], '.')) : $path_parts['filename'];
414
+ // save it to the database
415
+ $result = $wpdb->query( $wpdb->prepare("INSERT INTO $wpdb->nggpictures (galleryid, filename, alttext, exclude) VALUES (%s, %s, %s, 0)", $galleryID, $picture, $alttext) );
416
+ // and give me the new id
417
  $pic_id = (int) $wpdb->insert_id;
418
  if ($result)
419
  $image_ids[] = $pic_id;
432
 
433
  }
434
 
435
+ /**
436
+ * Import some metadata into the database (if avialable)
437
+ *
438
+ * @class nggAdmin
439
+ * @param array|int $imagesIds
440
+ * @return bool
441
+ */
442
  function import_MetaData($imagesIds) {
443
+
444
  global $wpdb;
445
 
446
+ require_once(NGGALLERY_ABSPATH . '/lib/image.php');
447
 
448
  if (!is_array($imagesIds))
449
  $imagesIds = array($imagesIds);
470
  wp_set_object_terms($pic_id, $taglist, 'ngg_tag');
471
  } // add tags
472
  }// error check
473
+ }
474
 
475
  return true;
476
 
477
  }
478
 
479
+ /**
480
+ * nggAdmin::get_MetaData()
481
+ *
482
+ * @class nggAdmin
483
+ * @require NextGEN Meta class
484
+ * @param string $picPath must be Gallery absPath + filename
485
+ * @return array metadata
486
+ */
487
  function get_MetaData($picPath) {
 
488
 
489
  require_once(NGGALLERY_ABSPATH . '/lib/meta.php');
490
 
500
 
501
  }
502
 
503
+ /**
504
+ * Unzip a file via the PclZip class
505
+ *
506
+ * @class nggAdmin
507
+ * @require PclZip class
508
+ * @param string $dir
509
+ * @param string $file
510
+ * @return bool
511
+ */
512
  function unzip($dir, $file) {
513
 
514
  if(! class_exists('PclZip'))
525
  return true;
526
  }
527
 
528
+ /**
529
+ * nggAdmin::getOnlyImages()
530
+ *
531
+ * @class nggAdmin
532
+ * @param mixed $p_event
533
+ * @param mixed $p_header
534
+ * @return bool
535
+ */
536
  function getOnlyImages($p_event, $p_header) {
537
 
538
  $info = pathinfo($p_header['filename']);
551
  }
552
  }
553
 
554
+ /**
555
+ * Import a ZIP file via a upload form or a URL
556
+ *
557
+ * @class nggAdmin
558
+ * @param int (optional) $galleryID
559
+ * @return bool $result
560
+ */
561
  function import_zipfile($galleryID) {
562
 
563
  global $ngg, $wpdb;
564
 
565
  if (nggAdmin::check_quota())
566
  return false;
567
+
568
  $defaultpath = $ngg->options['gallerypath'];
569
+ $zipurl = $_POST['zipurl'];
570
+
571
+ // if someone entered a URL try to upload it
572
+ if (!empty($zipurl) && (function_exists('curl_init')) ) {
573
+
574
+ if (!(preg_match('/^http(s)?:\/\//i', $zipurl) )) {
575
+ nggGallery::show_error( __('No valid URL path ','nggallery') );
576
+ return false;
577
+ }
578
+
579
+ $temp_zipfile = tempnam('/tmp', 'zipimport_');
580
+ $filename = basename($url);
581
+
582
+ //Grab the zip via cURL
583
+ $save = fopen ( $temp_zipfile, "w" );
584
+ $ch = curl_init ();
585
+ curl_setopt ( $ch, CURLOPT_FILE, $save );
586
+ curl_setopt ( $ch, CURLOPT_HEADER, 0 );
587
+ curl_setopt ( $ch, CURLOPT_BINARYTRANSFER, 1 );
588
+ curl_setopt ( $ch, CURLOPT_URL, $url );
589
+ $success = curl_exec ( $ch );
590
+ if (!$success)
591
+ nggGallery::show_error( __('Import via cURL failed.','nggallery') . ' Error code ' . curl_errno( $ch ) . ' : ' . curl_error( $ch ) );
592
+ curl_close ( $ch );
593
+ fclose($save);
594
+
595
+ if (!$success)
596
+ return false;
597
+
598
+ } else {
599
+
600
+ $temp_zipfile = $_FILES['zipfile']['tmp_name'];
601
+ $filename = $_FILES['zipfile']['name'];
602
+
603
+ // check if file is a zip file
604
+ if (!eregi('zip|download|octet-stream', $_FILES['zipfile']['type'])) {
605
+ @unlink($temp_zipfile); // del temp file
606
+ nggGallery::show_error(__('Uploaded file was no or a faulty zip file ! The server recognize : ','nggallery').$_FILES['zipfile']['type']);
607
+ return false;
608
+ }
609
  }
610
 
611
  // should this unpacked into a new folder ?
655
  return true;
656
  }
657
 
658
+ /**
659
+ * Function for uploading of images via the upload form
660
+ *
661
+ * @class nggAdmin
662
+ * @return void
663
+ */
664
  function upload_images() {
665
+
 
666
  global $wpdb;
667
 
668
  // WPMU action
757
 
758
  return;
759
 
760
+ }
761
 
762
+ /**
763
+ * Upload function will be called via teh Flash uploader
764
+ *
765
+ * @class nggAdmin
766
+ * @param integer $galleryID
767
+ * @return string $result
768
+ */
769
  function swfupload_image($galleryID = 0) {
770
+
771
  global $wpdb;
772
 
773
  if ($galleryID == 0) {
825
  return '0';
826
  }
827
 
828
+ /**
829
+ * Check the Quota under WPMU. Only needed for this case
830
+ *
831
+ * @class nggAdmin
832
+ * @return bool $result
833
+ */
834
  function check_quota() {
835
+
836
  if ( (IS_WPMU) && wpmu_enable_function('wpmuQuotaCheck'))
837
  if( $error = upload_is_user_over_quota( false ) ) {
838
  nggGallery::show_error( __( 'Sorry, you have used your space allocation. Please delete some files to upload more files.','nggallery' ) );
841
  return false;
842
  }
843
 
844
+ /**
845
+ * Set correct file permissions (taken from wp core)
846
+ *
847
+ * @class nggAdmin
848
+ * @param string $filename
849
+ * @return bool $result
850
+ */
851
  function chmod($filename = '') {
852
+
853
  $stat = @ stat(dirname($filename));
854
  $perms = $stat['mode'] & 0007777;
855
  $perms = $perms & 0000666;
859
  return false;
860
  }
861
 
862
+ /**
863
+ * Check UID in folder and Script
864
+ * Read http://www.php.net/manual/en/features.safe-mode.php to understand safe_mode
865
+ *
866
+ * @class nggAdmin
867
+ * @param string $foldername
868
+ * @return bool $result
869
+ */
870
  function check_safemode($foldername) {
871
+
 
872
  if ( SAFE_MODE ) {
873
 
874
  $script_uid = ( ini_get('safe_mode_gid') ) ? getmygid() : getmyuid();
885
  return true;
886
  }
887
 
888
+ /**
889
+ * Cpapbility check. Check is the ID fit's to the user_ID'
890
+ *
891
+ * @class nggAdmin
892
+ * @param int $check_ID is teh user_id
893
+ * @return bool $result
894
+ */
895
  function can_manage_this_gallery($check_ID) {
 
 
896
 
897
+ global $user_ID, $wp_roles;
 
898
 
899
+ if ( !current_user_can('NextGEN Manage others gallery') ) {
900
+ // get the current user ID
901
+ get_currentuserinfo();
902
+
903
  if ( $user_ID != $check_ID)
904
  return false;
905
+ }
906
 
907
  return true;
908
 
909
  }
910
 
911
+ /**
912
+ * Move images from one folder to another
913
+ *
914
+ * @class nggAdmin
915
+ * @param array|int $pic_ids ID's of the images
916
+ * @param int $dest_gid destination gallery
917
+ * @return void
918
+ */
919
  function move_images($pic_ids, $dest_gid) {
920
 
921
  $errors = '';
922
  $count = 0;
923
 
924
+ if ( !is_array($pic_ids) )
925
  $pic_ids = array($pic_ids);
926
 
927
  // Get destination gallery
986
 
987
  /**
988
  * Copy images to another gallery
989
+ *
990
+ * @class nggAdmin
991
+ * @param array|int $pic_ids ID's of the images
992
+ * @param int $dest_gid destination gallery
993
+ * @return void
994
  */
995
  function copy_images($pic_ids, $dest_gid) {
996
 
1019
 
1020
  foreach ($images as $image) {
1021
  // WPMU action
1022
+ if ( nggAdmin::check_quota() )
1023
  return;
1024
 
1025
  $i = 0;
1079
  return;
1080
  }
1081
 
1082
+ /**
1083
+ * Initate the Ajax operation
1084
+ *
1085
+ * @class nggAdmin
1086
+ * @param string $operation name of the function which should be executed
1087
+ * @param array $image_array
1088
+ * @param string $title name of the operation
1089
+ * @return string the javascript output
1090
+ */
1091
  function do_ajax_operation( $operation, $image_array, $title = '' ) {
1092
 
1093
  if ( !is_array($image_array) || empty($image_array) )
1122
  /**
1123
  * nggAdmin::set_gallery_preview() - define a preview pic after the first upload, can be changed in the gallery settings
1124
  *
1125
+ * @class nggAdmin
1126
  * @param int $galleryID
1127
+ * @return void
1128
  */
1129
  function set_gallery_preview( $galleryID ) {
1130
 
1144
 
1145
  } // END class nggAdmin
1146
 
1147
+ /**
1148
+ * TODO: Cannot be member of a class ? Check PCLZIP later...
1149
+ *
1150
+ * @param mixed $p_event
1151
+ * @param mixed $p_header
1152
+ * @return
1153
+ */
1154
  function ngg_getOnlyImages($p_event, $p_header) {
1155
 
1156
  return nggAdmin::getOnlyImages($p_event, $p_header);
1157
 
1158
  }
1159
+ ?>
admin/install.php CHANGED
@@ -55,6 +55,7 @@ function nggallery_install () {
55
 
56
  $sql = "CREATE TABLE " . $nggpictures . " (
57
  pid BIGINT(20) NOT NULL AUTO_INCREMENT ,
 
58
  galleryid BIGINT(20) DEFAULT '0' NOT NULL ,
59
  filename VARCHAR(255) NOT NULL ,
60
  description MEDIUMTEXT NULL ,
@@ -62,7 +63,9 @@ function nggallery_install () {
62
  imagedate DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
63
  exclude TINYINT NULL DEFAULT '0' ,
64
  sortorder BIGINT(20) DEFAULT '0' NOT NULL ,
65
- PRIMARY KEY pid (pid)
 
 
66
  ) $charset_collate;";
67
 
68
  dbDelta($sql);
@@ -76,9 +79,9 @@ function nggallery_install () {
76
  path MEDIUMTEXT NULL ,
77
  title MEDIUMTEXT NULL ,
78
  galdesc MEDIUMTEXT NULL ,
79
- pageid BIGINT(20) NULL DEFAULT '0' ,
80
- previewpic BIGINT(20) NULL DEFAULT '0' ,
81
- author BIGINT(20) NOT NULL DEFAULT '0' ,
82
  PRIMARY KEY gid (gid)
83
  ) $charset_collate;";
84
 
@@ -90,6 +93,8 @@ function nggallery_install () {
90
  $sql = "CREATE TABLE " . $nggalbum . " (
91
  id BIGINT(20) NOT NULL AUTO_INCREMENT ,
92
  name VARCHAR(255) NOT NULL ,
 
 
93
  sortorder LONGTEXT NOT NULL,
94
  PRIMARY KEY id (id)
95
  ) $charset_collate;";
55
 
56
  $sql = "CREATE TABLE " . $nggpictures . " (
57
  pid BIGINT(20) NOT NULL AUTO_INCREMENT ,
58
+ post_id BIGINT(20) DEFAULT '0' NOT NULL ,
59
  galleryid BIGINT(20) DEFAULT '0' NOT NULL ,
60
  filename VARCHAR(255) NOT NULL ,
61
  description MEDIUMTEXT NULL ,
63
  imagedate DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
64
  exclude TINYINT NULL DEFAULT '0' ,
65
  sortorder BIGINT(20) DEFAULT '0' NOT NULL ,
66
+ meta_data LONGTEXT,
67
+ PRIMARY KEY pid (pid),
68
+ KEY post_id (post_id)
69
  ) $charset_collate;";
70
 
71
  dbDelta($sql);
79
  path MEDIUMTEXT NULL ,
80
  title MEDIUMTEXT NULL ,
81
  galdesc MEDIUMTEXT NULL ,
82
+ pageid BIGINT(20) DEFAULT '0' NOT NULL ,
83
+ previewpic BIGINT(20) DEFAULT '0' NOT NULL ,
84
+ author BIGINT(20) DEFAULT '0' NOT NULL ,
85
  PRIMARY KEY gid (gid)
86
  ) $charset_collate;";
87
 
93
  $sql = "CREATE TABLE " . $nggalbum . " (
94
  id BIGINT(20) NOT NULL AUTO_INCREMENT ,
95
  name VARCHAR(255) NOT NULL ,
96
+ previewpic BIGINT(20) DEFAULT '0' NOT NULL ,
97
+ albumdesc MEDIUMTEXT NULL ,
98
  sortorder LONGTEXT NOT NULL,
99
  PRIMARY KEY id (id)
100
  ) $charset_collate;";
admin/js/Jcrop/css/jquery.Jcrop.css CHANGED
@@ -1,18 +1,11 @@
1
  /* Fixes issue here http://code.google.com/p/jcrop/issues/detail?id=1 */
2
- .jcrop-holder
3
- {
4
- text-align: left;
5
- }
6
 
7
  .jcrop-vline, .jcrop-hline
8
  {
9
  font-size: 0;
10
  position: absolute;
11
  background: white url('Jcrop.gif') top left repeat;
12
- /*
13
- opacity: .5;
14
- *filter:alpha(opacity=50);
15
- */
16
  }
17
  .jcrop-vline { height: 100%; width: 1px !important; }
18
  .jcrop-hline { width: 100%; height: 1px !important; }
@@ -26,10 +19,7 @@
26
  *height: 9px;
27
  }
28
 
29
- .jcrop-tracker {
30
- *background-color: gray;
31
- width: 100%; height: 100%;
32
- }
33
 
34
  .custom .jcrop-vline,
35
  .custom .jcrop-hline
1
  /* Fixes issue here http://code.google.com/p/jcrop/issues/detail?id=1 */
2
+ .jcrop-holder { text-align: left; }
 
 
 
3
 
4
  .jcrop-vline, .jcrop-hline
5
  {
6
  font-size: 0;
7
  position: absolute;
8
  background: white url('Jcrop.gif') top left repeat;
 
 
 
 
9
  }
10
  .jcrop-vline { height: 100%; width: 1px !important; }
11
  .jcrop-hline { width: 100%; height: 1px !important; }
19
  *height: 9px;
20
  }
21
 
22
+ .jcrop-tracker { width: 100%; height: 100%; }
 
 
 
23
 
24
  .custom .jcrop-vline,
25
  .custom .jcrop-hline
admin/js/Jcrop/js/jquery.Jcrop.js CHANGED
@@ -1,8 +1,8 @@
1
  /**
2
- * jquery.Jcrop.js v0.9.5
3
  * jQuery Image Cropping Plugin
4
- * @author Kelly Hallman <khallman@wrack.org>
5
- * Copyright (c) 2008 Kelly Hallman - released under MIT License {{{
6
  *
7
  * Permission is hereby granted, free of charge, to any person
8
  * obtaining a copy of this software and associated documentation
@@ -26,32 +26,31 @@
26
  * OTHER DEALINGS IN THE SOFTWARE.
27
 
28
  * }}}
29
- *
30
- * IMPORTANT NOTE
31
- * ------------------------------------------------------------------------
32
- * This is NOT the ufficial version of jCrop by Kelly Hallman but has been
33
- * modified by Simone Fumagalli to be used on Wordpress.
34
- *
35
- * I've basically changed $ with jQuery
36
- * ------------------------------------------------------------------------
37
  */
38
 
39
- jQuery.Jcrop = function(obj,opt)
 
 
40
  {
41
  // Initialization {{{
42
 
43
  // Sanitize some options {{{
44
  var obj = obj, opt = opt;
45
 
46
- if (typeof(obj) !== 'object') obj = jQuery(obj)[0];
47
  if (typeof(opt) !== 'object') opt = { };
48
 
 
49
  if (!('trackDocument' in opt))
50
- opt.trackDocument = jQuery.browser.msie ? false : true;
 
 
 
 
51
 
52
  if (!('keySupport' in opt))
53
- opt.keySupport = jQuery.browser.msie ? false : true;
54
-
55
  // }}}
56
  // Extend the default options {{{
57
  var defaults = {
@@ -86,7 +85,10 @@ jQuery.Jcrop = function(obj,opt)
86
  animationDelay: 20,
87
  swingSpeed: 3,
88
 
89
- watchShift: false,
 
 
 
90
  minSelect: [ 0, 0 ],
91
  maxSize: [ 0, 0 ],
92
  minSize: [ 0, 0 ],
@@ -102,32 +104,36 @@ jQuery.Jcrop = function(obj,opt)
102
  // }}}
103
  // Initialize some jQuery objects {{{
104
 
105
- var $img = jQuery(obj).css({ position: 'absolute' });
 
 
 
 
 
106
 
107
  presize($img,options.boxWidth,options.boxHeight);
108
 
109
  var boundx = $img.width(),
110
  boundy = $img.height(),
111
 
112
- $div = jQuery('<div />')
113
  .width(boundx).height(boundy)
114
  .addClass(cssClass('holder'))
115
  .css({
116
  position: 'relative',
117
- //overflow: 'hidden',
118
  backgroundColor: options.bgColor
119
- })
120
  ;
121
 
122
  if (options.addClass) $div.addClass(options.addClass);
123
- $img.wrap($div);
124
 
125
- var $img2 = jQuery('<img />')/*{{{*/
126
  .attr('src',$img.attr('src'))
127
  .css('position','absolute')
128
  .width(boundx).height(boundy)
129
  ;/*}}}*/
130
- var $img_holder = jQuery('<div />')/*{{{*/
131
  .width(pct(100)).height(pct(100))
132
  .css({
133
  zIndex: 310,
@@ -136,14 +142,11 @@ jQuery.Jcrop = function(obj,opt)
136
  })
137
  .append($img2)
138
  ;/*}}}*/
139
- var $hdl_holder = jQuery('<div />')/*{{{*/
140
  .width(pct(100)).height(pct(100))
141
- .css({
142
- zIndex: 320
143
- //position: 'absolute'
144
- })
145
- ;/*}}}*/
146
- var $sel = jQuery('<div />')/*{{{*/
147
  .css({
148
  position: 'absolute',
149
  zIndex: 300
@@ -153,38 +156,24 @@ jQuery.Jcrop = function(obj,opt)
153
  ;/*}}}*/
154
 
155
  var bound = options.boundary;
156
- var $trk = jQuery('<div />')
157
- .addClass(cssClass('tracker'))
158
- .width(boundx+(bound*2))
159
- .height(boundy+(bound*2))
160
- .css({
161
- position: 'absolute',
162
- top: px(-bound),
163
- left: px(-bound),
164
- zIndex: 290,
165
- opacity: 0
166
- })
167
- .mousedown(newSelection)
168
- ;
169
 
170
  /* }}} */
171
  // Set more variables {{{
172
 
173
- var xscale, yscale;
174
- var docOffset = getPos(obj),
 
175
  // Internal states
176
- btndown, aspectLock, lastcurs, dimmed, animating,
177
  shift_down;
178
 
179
  // }}}
180
- if ('trueSize' in options)/*{{{*/
181
- {
182
- xscale = options.trueSize[0] / boundx;
183
- yscale = options.trueSize[1] / boundy;
184
- }
185
- /*}}}*/
186
 
187
- // }}}
188
  // Internal Modules {{{
189
 
190
  var Coords = function()/*{{{*/
@@ -242,12 +231,13 @@ jQuery.Jcrop = function(obj,opt)
242
  /*}}}*/
243
  function getFixed()/*{{{*/
244
  {
245
- if (!options.aspectRatio && !aspectLock) return getRect();
246
-
247
  // This function could use some optimization I think...
248
- var aspect = options.aspectRatio ? options.aspectRatio : aspectLock,
249
- min = options.minSize,
250
- max = options.maxSize,
 
 
251
  rw = x2 - x1,
252
  rh = y2 - y1,
253
  rwa = Math.abs(rw),
@@ -255,7 +245,8 @@ jQuery.Jcrop = function(obj,opt)
255
  real_ratio = rwa / rha,
256
  xx, yy
257
  ;
258
-
 
259
  if (real_ratio < aspect)
260
  {
261
  yy = y2;
@@ -293,6 +284,48 @@ jQuery.Jcrop = function(obj,opt)
293
  xx = rw < 0 ? x1 - w : w + x1;
294
  }
295
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
296
  return last = makeObj(flipCoords(x1,y1,xx,yy));
297
  };
298
  /*}}}*/
@@ -383,7 +416,7 @@ jQuery.Jcrop = function(obj,opt)
383
  if (options.drawBorders) {
384
  borders = {
385
  top: insertBorder('hline')
386
- .css('top',jQuery.browser.msie?px(-1):px(0)),
387
  bottom: insertBorder('hline'),
388
  left: insertBorder('vline'),
389
  right: insertBorder('vline')
@@ -410,7 +443,7 @@ jQuery.Jcrop = function(obj,opt)
410
  // Private Methods
411
  function insertBorder(type)/*{{{*/
412
  {
413
- var jq = jQuery('<div />')
414
  .css({position: 'absolute', opacity: options.borderOpacity })
415
  .addClass(cssClass(type));
416
  $img_holder.append(jq);
@@ -419,7 +452,7 @@ jQuery.Jcrop = function(obj,opt)
419
  /*}}}*/
420
  function dragDiv(ord,zi)/*{{{*/
421
  {
422
- var jq = jQuery('<div />')
423
  .mousedown(createDragger(ord))
424
  .css({
425
  cursor: ord+'-resize',
@@ -498,15 +531,18 @@ jQuery.Jcrop = function(obj,opt)
498
  /*}}}*/
499
  function refresh()/*{{{*/
500
  {
501
- var p = Coords.getFixed();
502
- Coords.setPressed([p.x,p.y]);
503
- Coords.setCurrent([p.x2,p.y2]);
 
 
 
504
  };
505
  /*}}}*/
506
 
507
  // Internal Methods
508
  function updateVisible()/*{{{*/
509
- { if (awake) return update(); };
510
  /*}}}*/
511
  function update()/*{{{*/
512
  {
@@ -540,18 +576,24 @@ jQuery.Jcrop = function(obj,opt)
540
  awake = false;
541
  };
542
  /*}}}*/
543
- function hide()/*{{{*/
544
  {
545
- release();
546
- $img.css('opacity',1);
547
- awake = false;
 
 
548
  };
549
- /*}}}*/
550
  function enableHandles()/*{{{*/
551
  {
552
  seehandles = true;
553
- moveHandles(Coords.getFixed());
554
- $hdl_holder.show();
 
 
 
 
555
  };
556
  /*}}}*/
557
  function disableHandles()/*{{{*/
@@ -567,29 +609,26 @@ jQuery.Jcrop = function(obj,opt)
567
  /*}}}*/
568
  function done()/*{{{*/
569
  {
570
- var c = Coords.getFixed();
571
  animMode(false);
572
  refresh();
573
  };
574
  /*}}}*/
575
 
576
- disableHandles();
 
577
 
578
- $img_holder.append
579
- (
580
- jQuery('<div />')
581
- .addClass(cssClass('tracker'))
582
- .mousedown(createDragger('move'))
583
- .css({ cursor: 'move', position: 'absolute', zIndex: 360, opacity: 0 })
584
- );
585
 
586
  return {
587
  updateVisible: updateVisible,
588
  update: update,
589
  release: release,
590
- show: show,
591
- hide: hide,
592
  enableHandles: enableHandles,
 
 
593
  disableHandles: disableHandles,
594
  animMode: animMode,
595
  done: done
@@ -613,26 +652,26 @@ jQuery.Jcrop = function(obj,opt)
613
 
614
  function toFront()/*{{{*/
615
  {
 
616
  if (trackDoc)
617
  {
618
- jQuery(document)
619
  .mousemove(trackMove)
620
  .mouseup(trackUp)
621
  ;
622
  }
623
- $trk.css({zIndex:450});
624
  }
625
  /*}}}*/
626
  function toBack()/*{{{*/
627
  {
 
628
  if (trackDoc)
629
  {
630
- jQuery(document)
631
  .unbind('mousemove',trackMove)
632
  .unbind('mouseup',trackUp)
633
  ;
634
  }
635
- $trk.css({zIndex:290});
636
  }
637
  /*}}}*/
638
  function trackMove(e)/*{{{*/
@@ -681,13 +720,12 @@ jQuery.Jcrop = function(obj,opt)
681
  /*}}}*/
682
  var KeyManager = function()/*{{{*/
683
  {
684
- var $keymgr = jQuery('<input type="radio" />')
685
  .css({ position: 'absolute', left: '-30px' })
686
- .keydown(parseKey)
687
- .keyup(watchShift)
688
  .blur(onBlur),
689
 
690
- $keywrap = jQuery('<div />')
691
  .css({
692
  position: 'absolute',
693
  overflow: 'hidden'
@@ -709,28 +747,12 @@ jQuery.Jcrop = function(obj,opt)
709
  $keymgr.hide();
710
  };
711
  /*}}}*/
712
- function watchShift(e)/*{{{*/
713
- {
714
- if (!options.watchShift) return;
715
- var init_shift = shift_down, fc;
716
- shift_down = e.shiftKey ? true : false;
717
-
718
- if (init_shift != shift_down) {
719
- if (shift_down && btndown) {
720
- fc = Coords.getFixed();
721
- aspectLock = fc.w / fc.h;
722
- } else aspectLock = 0;
723
- Selection.update();
724
- }
725
- e.stopPropagation();
726
- e.preventDefault();
727
- return false;
728
- };
729
- /*}}}*/
730
  function doNudge(e,x,y)/*{{{*/
731
  {
732
- Coords.moveOffset([x,y]);
733
- Selection.updateVisible();
 
 
734
  e.preventDefault();
735
  e.stopPropagation();
736
  };
@@ -738,7 +760,7 @@ jQuery.Jcrop = function(obj,opt)
738
  function parseKey(e)/*{{{*/
739
  {
740
  if (e.ctrlKey) return true;
741
- watchShift(e);
742
  var nudge = shift_down ? 10 : 1;
743
  switch(e.keyCode)
744
  {
@@ -752,7 +774,7 @@ jQuery.Jcrop = function(obj,opt)
752
  case 9: return true;
753
  }
754
 
755
- return false;
756
  };
757
  /*}}}*/
758
 
@@ -772,7 +794,7 @@ jQuery.Jcrop = function(obj,opt)
772
  function getPos(obj)/*{{{*/
773
  {
774
  // Updated in v0.9.4 to use built-in dimensions plugin
775
- var pos = jQuery(obj).offset();
776
  return [ pos.left, pos.top ];
777
  };
778
  /*}}}*/
@@ -793,21 +815,26 @@ jQuery.Jcrop = function(obj,opt)
793
  /*}}}*/
794
  function startDragMode(mode,pos)/*{{{*/
795
  {
796
- docOffset = getPos(obj);
797
  Tracker.setCursor(mode=='move'?mode:mode+'-resize');
798
 
799
  if (mode == 'move')
800
  return Tracker.activateHandlers(createMover(pos), doneSelect);
801
 
802
  var fc = Coords.getFixed();
803
- Coords.setPressed(Coords.getCorner(oppLockCorner(mode)));
 
 
 
 
 
804
  Tracker.activateHandlers(dragmodeHandler(mode,fc),doneSelect);
805
  };
806
  /*}}}*/
807
  function dragmodeHandler(mode,f)/*{{{*/
808
  {
809
  return function(pos) {
810
- if (!options.aspectRatio && !aspectLock) switch(mode)
811
  {
812
  case 'e': pos[1] = f.y2; break;
813
  case 'w': pos[1] = f.y2; break;
@@ -858,6 +885,8 @@ jQuery.Jcrop = function(obj,opt)
858
  function createDragger(ord)/*{{{*/
859
  {
860
  return function(e) {
 
 
861
  btndown = true;
862
  startDragMode(ord,mouseAbs(e));
863
  e.stopPropagation();
@@ -905,19 +934,22 @@ jQuery.Jcrop = function(obj,opt)
905
  {
906
  Selection.release();
907
  }
908
- Tracker.setCursor('crosshair');
909
  };
910
  /*}}}*/
911
  function newSelection(e)/*{{{*/
912
  {
 
 
913
  btndown = true;
914
- docOffset = getPos(obj);
915
- Selection.release();
916
  Selection.disableHandles();
917
  myCursor('crosshair');
918
- Coords.setPressed(mouseAbs(e));
 
919
  Tracker.activateHandlers(selectDrag,doneSelect);
920
  KeyManager.watchKeys();
 
921
 
922
  e.stopPropagation();
923
  e.preventDefault();
@@ -928,29 +960,31 @@ jQuery.Jcrop = function(obj,opt)
928
  {
929
  Coords.setCurrent(pos);
930
  Selection.update();
931
-
932
  };
933
  /*}}}*/
 
 
 
 
 
 
934
 
935
  // }}}
936
- // Public API {{{
937
-
938
  function animateTo(a)/*{{{*/
939
  {
940
- var x1 = a[0],
941
- y1 = a[1],
942
- x2 = a[2],
943
- y2 = a[3];
944
 
945
  if (animating) return;
 
946
  var animto = Coords.flipCoords(x1,y1,x2,y2);
947
  var c = Coords.getFixed();
948
  var animat = initcr = [ c.x, c.y, c.x2, c.y2 ];
949
  var interv = options.animationDelay;
950
- //var ix1 = (animto[0] - initcr[0]) / steps;
951
- //var iy1 = (animto[1] - initcr[1]) / steps;
952
- //var ix2 = (animto[2] - initcr[2]) / steps;
953
- //var iy2 = (animto[3] - initcr[3]) / steps;
954
 
955
  var x = animat[0];
956
  var y = animat[1];
@@ -981,7 +1015,7 @@ jQuery.Jcrop = function(obj,opt)
981
 
982
  if (pcent >= 99.8) pcent = 100;
983
 
984
- setSelect(animat);
985
  };
986
  }();
987
 
@@ -989,10 +1023,14 @@ jQuery.Jcrop = function(obj,opt)
989
  { window.setTimeout(animator,interv); };
990
 
991
  animateStart();
992
-
993
  };
994
  /*}}}*/
995
- function setSelect(l) /*{{{*/
 
 
 
 
 
996
  {
997
  Coords.setPressed([l[0],l[1]]);
998
  Coords.setCurrent([l[2],l[3]]);
@@ -1002,13 +1040,14 @@ jQuery.Jcrop = function(obj,opt)
1002
  function setOptions(opt)/*{{{*/
1003
  {
1004
  if (typeof(opt) != 'object') opt = { };
1005
- options = jQuery.extend(options,opt);
1006
 
1007
  if (typeof(options.onChange)!=='function')
1008
  options.onChange = function() { };
1009
 
1010
  if (typeof(options.onSelect)!=='function')
1011
  options.onSelect = function() { };
 
1012
  };
1013
  /*}}}*/
1014
  function tellSelect()/*{{{*/
@@ -1024,47 +1063,112 @@ jQuery.Jcrop = function(obj,opt)
1024
  function setOptionsNew(opt)/*{{{*/
1025
  {
1026
  setOptions(opt);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1027
 
1028
- if ('setSelect' in opt) {
1029
  setSelect(opt.setSelect);
1030
  Selection.done();
 
1031
  }
1032
- };
1033
- /*}}}*/
1034
 
1035
- if (typeof(opt) != 'object') opt = { };
1036
- if ('setSelect' in opt) { setSelect(opt.setSelect); Selection.done(); }
 
 
1037
 
1038
- // }}}
 
 
 
1039
 
1040
- var xlimit = options.maxSize[0] || 0;
1041
- var ylimit = options.maxSize[1] || 0;
1042
- var xmin = options.minSize[0] || 0;
1043
- var ymin = options.minSize[1] || 0;
 
1044
 
1045
- Tracker.setCursor('crosshair');
 
 
 
 
 
 
 
1046
 
1047
- return {
1048
  animateTo: animateTo,
1049
  setSelect: setSelect,
1050
  setOptions: setOptionsNew,
1051
  tellSelect: tellSelect,
1052
- tellScaled: tellScaled
 
 
 
 
 
 
 
 
 
 
 
 
 
1053
  };
1054
- };
1055
 
 
 
 
1056
 
1057
- jQuery.fn.Jcrop = function(options)/*{{{*/
1058
  {
1059
  function attachWhenDone(from)/*{{{*/
1060
  {
1061
  var loadsrc = options.useImg || from.src;
1062
  var img = new Image();
1063
- var from = from;
1064
- img.onload = function() {
1065
- jQuery(from).hide().after(img);
1066
- from.Jcrop = jQuery.Jcrop(img,options);
1067
- };
1068
  img.src = loadsrc;
1069
  };
1070
  /*}}}*/
@@ -1074,12 +1178,12 @@ jQuery.fn.Jcrop = function(options)/*{{{*/
1074
  this.each(function()
1075
  {
1076
  // If we've already attached to this object
1077
- if ('Jcrop' in this)
1078
  {
1079
  // The API can be requested this way (undocumented)
1080
- if (options == 'api') return this.Jcrop;
1081
  // Otherwise, we just reset the options...
1082
- else this.Jcrop.setOptions(options);
1083
  }
1084
  // If we haven't been attached, preload and attach
1085
  else attachWhenDone(this);
@@ -1090,3 +1194,4 @@ jQuery.fn.Jcrop = function(options)/*{{{*/
1090
  };
1091
  /*}}}*/
1092
 
 
1
  /**
2
+ * jquery.Jcrop.js v0.9.8
3
  * jQuery Image Cropping Plugin
4
+ * @author Kelly Hallman <khallman@gmail.com>
5
+ * Copyright (c) 2008-2009 Kelly Hallman - released under MIT License {{{
6
  *
7
  * Permission is hereby granted, free of charge, to any person
8
  * obtaining a copy of this software and associated documentation
26
  * OTHER DEALINGS IN THE SOFTWARE.
27
 
28
  * }}}
 
 
 
 
 
 
 
 
29
  */
30
 
31
+ (function($) {
32
+
33
+ $.Jcrop = function(obj,opt)
34
  {
35
  // Initialization {{{
36
 
37
  // Sanitize some options {{{
38
  var obj = obj, opt = opt;
39
 
40
+ if (typeof(obj) !== 'object') obj = $(obj)[0];
41
  if (typeof(opt) !== 'object') opt = { };
42
 
43
+ // Some on-the-fly fixes for MSIE...sigh
44
  if (!('trackDocument' in opt))
45
+ {
46
+ opt.trackDocument = $.browser.msie ? false : true;
47
+ if ($.browser.msie && $.browser.version.split('.')[0] == '8')
48
+ opt.trackDocument = true;
49
+ }
50
 
51
  if (!('keySupport' in opt))
52
+ opt.keySupport = $.browser.msie ? false : true;
53
+
54
  // }}}
55
  // Extend the default options {{{
56
  var defaults = {
85
  animationDelay: 20,
86
  swingSpeed: 3,
87
 
88
+ allowSelect: true,
89
+ allowMove: true,
90
+ allowResize: true,
91
+
92
  minSelect: [ 0, 0 ],
93
  maxSize: [ 0, 0 ],
94
  minSize: [ 0, 0 ],
104
  // }}}
105
  // Initialize some jQuery objects {{{
106
 
107
+ var $origimg = $(obj);
108
+ var $img = $origimg.clone().removeAttr('id').css({ position: 'absolute' });
109
+
110
+ $img.width($origimg.width());
111
+ $img.height($origimg.height());
112
+ $origimg.after($img).hide();
113
 
114
  presize($img,options.boxWidth,options.boxHeight);
115
 
116
  var boundx = $img.width(),
117
  boundy = $img.height(),
118
 
119
+ $div = $('<div />')
120
  .width(boundx).height(boundy)
121
  .addClass(cssClass('holder'))
122
  .css({
123
  position: 'relative',
 
124
  backgroundColor: options.bgColor
125
+ }).insertAfter($origimg).append($img);
126
  ;
127
 
128
  if (options.addClass) $div.addClass(options.addClass);
129
+ //$img.wrap($div);
130
 
131
+ var $img2 = $('<img />')/*{{{*/
132
  .attr('src',$img.attr('src'))
133
  .css('position','absolute')
134
  .width(boundx).height(boundy)
135
  ;/*}}}*/
136
+ var $img_holder = $('<div />')/*{{{*/
137
  .width(pct(100)).height(pct(100))
138
  .css({
139
  zIndex: 310,
142
  })
143
  .append($img2)
144
  ;/*}}}*/
145
+ var $hdl_holder = $('<div />')/*{{{*/
146
  .width(pct(100)).height(pct(100))
147
+ .css('zIndex',320);
148
+ /*}}}*/
149
+ var $sel = $('<div />')/*{{{*/
 
 
 
150
  .css({
151
  position: 'absolute',
152
  zIndex: 300
156
  ;/*}}}*/
157
 
158
  var bound = options.boundary;
159
+ var $trk = newTracker().width(boundx+(bound*2)).height(boundy+(bound*2))
160
+ .css({ position: 'absolute', top: px(-bound), left: px(-bound), zIndex: 290 })
161
+ .mousedown(newSelection);
 
 
 
 
 
 
 
 
 
 
162
 
163
  /* }}} */
164
  // Set more variables {{{
165
 
166
+ var xlimit, ylimit, xmin, ymin;
167
+ var xscale, yscale, enabled = true;
168
+ var docOffset = getPos($img),
169
  // Internal states
170
+ btndown, lastcurs, dimmed, animating,
171
  shift_down;
172
 
173
  // }}}
174
+
 
 
 
 
 
175
 
176
+ // }}}
177
  // Internal Modules {{{
178
 
179
  var Coords = function()/*{{{*/
231
  /*}}}*/
232
  function getFixed()/*{{{*/
233
  {
234
+ if (!options.aspectRatio) return getRect();
 
235
  // This function could use some optimization I think...
236
+ var aspect = options.aspectRatio,
237
+ min_x = options.minSize[0]/xscale,
238
+ min_y = options.minSize[1]/yscale,
239
+ max_x = options.maxSize[0]/xscale,
240
+ max_y = options.maxSize[1]/yscale,
241
  rw = x2 - x1,
242
  rh = y2 - y1,
243
  rwa = Math.abs(rw),
245
  real_ratio = rwa / rha,
246
  xx, yy
247
  ;
248
+ if (max_x == 0) { max_x = boundx * 10 }
249
+ if (max_y == 0) { max_y = boundy * 10 }
250
  if (real_ratio < aspect)
251
  {
252
  yy = y2;
284
  xx = rw < 0 ? x1 - w : w + x1;
285
  }
286
  }
287
+
288
+ // Magic %-)
289
+ if(xx > x1) { // right side
290
+ if(xx - x1 < min_x) {
291
+ xx = x1 + min_x;
292
+ } else if (xx - x1 > max_x) {
293
+ xx = x1 + max_x;
294
+ }
295
+ if(yy > y1) {
296
+ yy = y1 + (xx - x1)/aspect;
297
+ } else {
298
+ yy = y1 - (xx - x1)/aspect;
299
+ }
300
+ } else if (xx < x1) { // left side
301
+ if(x1 - xx < min_x) {
302
+ xx = x1 - min_x
303
+ } else if (x1 - xx > max_x) {
304
+ xx = x1 - max_x;
305
+ }
306
+ if(yy > y1) {
307
+ yy = y1 + (x1 - xx)/aspect;
308
+ } else {
309
+ yy = y1 - (x1 - xx)/aspect;
310
+ }
311
+ }
312
+
313
+ if(xx < 0) {
314
+ x1 -= xx;
315
+ xx = 0;
316
+ } else if (xx > boundx) {
317
+ x1 -= xx - boundx;
318
+ xx = boundx;
319
+ }
320
+
321
+ if(yy < 0) {
322
+ y1 -= yy;
323
+ yy = 0;
324
+ } else if (yy > boundy) {
325
+ y1 -= yy - boundy;
326
+ yy = boundy;
327
+ }
328
+
329
  return last = makeObj(flipCoords(x1,y1,xx,yy));
330
  };
331
  /*}}}*/
416
  if (options.drawBorders) {
417
  borders = {
418
  top: insertBorder('hline')
419
+ .css('top',$.browser.msie?px(-1):px(0)),
420
  bottom: insertBorder('hline'),
421
  left: insertBorder('vline'),
422
  right: insertBorder('vline')
443
  // Private Methods
444
  function insertBorder(type)/*{{{*/
445
  {
446
+ var jq = $('<div />')
447
  .css({position: 'absolute', opacity: options.borderOpacity })
448
  .addClass(cssClass(type));
449
  $img_holder.append(jq);
452
  /*}}}*/
453
  function dragDiv(ord,zi)/*{{{*/
454
  {
455
+ var jq = $('<div />')
456
  .mousedown(createDragger(ord))
457
  .css({
458
  cursor: ord+'-resize',
531
  /*}}}*/
532
  function refresh()/*{{{*/
533
  {
534
+ var c = Coords.getFixed();
535
+
536
+ Coords.setPressed([c.x,c.y]);
537
+ Coords.setCurrent([c.x2,c.y2]);
538
+
539
+ updateVisible();
540
  };
541
  /*}}}*/
542
 
543
  // Internal Methods
544
  function updateVisible()/*{{{*/
545
+ { if (awake) return update(); };
546
  /*}}}*/
547
  function update()/*{{{*/
548
  {
576
  awake = false;
577
  };
578
  /*}}}*/
579
+ function showHandles()//{{{
580
  {
581
+ if (seehandles)
582
+ {
583
+ moveHandles(Coords.getFixed());
584
+ $hdl_holder.show();
585
+ }
586
  };
587
+ //}}}
588
  function enableHandles()/*{{{*/
589
  {
590
  seehandles = true;
591
+ if (options.allowResize)
592
+ {
593
+ moveHandles(Coords.getFixed());
594
+ $hdl_holder.show();
595
+ return true;
596
+ }
597
  };
598
  /*}}}*/
599
  function disableHandles()/*{{{*/
609
  /*}}}*/
610
  function done()/*{{{*/
611
  {
 
612
  animMode(false);
613
  refresh();
614
  };
615
  /*}}}*/
616
 
617
+ var $track = newTracker().mousedown(createDragger('move'))
618
+ .css({ cursor: 'move', position: 'absolute', zIndex: 360 })
619
 
620
+ $img_holder.append($track);
621
+ disableHandles();
 
 
 
 
 
622
 
623
  return {
624
  updateVisible: updateVisible,
625
  update: update,
626
  release: release,
627
+ refresh: refresh,
628
+ setCursor: function (cursor) { $track.css('cursor',cursor); },
629
  enableHandles: enableHandles,
630
+ enableOnly: function() { seehandles = true; },
631
+ showHandles: showHandles,
632
  disableHandles: disableHandles,
633
  animMode: animMode,
634
  done: done
652
 
653
  function toFront()/*{{{*/
654
  {
655
+ $trk.css({zIndex:450});
656
  if (trackDoc)
657
  {
658
+ $(document)
659
  .mousemove(trackMove)
660
  .mouseup(trackUp)
661
  ;
662
  }
 
663
  }
664
  /*}}}*/
665
  function toBack()/*{{{*/
666
  {
667
+ $trk.css({zIndex:290});
668
  if (trackDoc)
669
  {
670
+ $(document)
671
  .unbind('mousemove',trackMove)
672
  .unbind('mouseup',trackUp)
673
  ;
674
  }
 
675
  }
676
  /*}}}*/
677
  function trackMove(e)/*{{{*/
720
  /*}}}*/
721
  var KeyManager = function()/*{{{*/
722
  {
723
+ var $keymgr = $('<input type="radio" />')
724
  .css({ position: 'absolute', left: '-30px' })
725
+ .keypress(parseKey)
 
726
  .blur(onBlur),
727
 
728
+ $keywrap = $('<div />')
729
  .css({
730
  position: 'absolute',
731
  overflow: 'hidden'
747
  $keymgr.hide();
748
  };
749
  /*}}}*/
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
750
  function doNudge(e,x,y)/*{{{*/
751
  {
752
+ if (options.allowMove) {
753
+ Coords.moveOffset([x,y]);
754
+ Selection.updateVisible();
755
+ };
756
  e.preventDefault();
757
  e.stopPropagation();
758
  };
760
  function parseKey(e)/*{{{*/
761
  {
762
  if (e.ctrlKey) return true;
763
+ shift_down = e.shiftKey ? true : false;
764
  var nudge = shift_down ? 10 : 1;
765
  switch(e.keyCode)
766
  {
774
  case 9: return true;
775
  }
776
 
777
+ return nothing(e);
778
  };
779
  /*}}}*/
780
 
794
  function getPos(obj)/*{{{*/
795
  {
796
  // Updated in v0.9.4 to use built-in dimensions plugin
797
+ var pos = $(obj).offset();
798
  return [ pos.left, pos.top ];
799
  };
800
  /*}}}*/
815
  /*}}}*/
816
  function startDragMode(mode,pos)/*{{{*/
817
  {
818
+ docOffset = getPos($img);
819
  Tracker.setCursor(mode=='move'?mode:mode+'-resize');
820
 
821
  if (mode == 'move')
822
  return Tracker.activateHandlers(createMover(pos), doneSelect);
823
 
824
  var fc = Coords.getFixed();
825
+ var opp = oppLockCorner(mode);
826
+ var opc = Coords.getCorner(oppLockCorner(opp));
827
+
828
+ Coords.setPressed(Coords.getCorner(opp));
829
+ Coords.setCurrent(opc);
830
+
831
  Tracker.activateHandlers(dragmodeHandler(mode,fc),doneSelect);
832
  };
833
  /*}}}*/
834
  function dragmodeHandler(mode,f)/*{{{*/
835
  {
836
  return function(pos) {
837
+ if (!options.aspectRatio) switch(mode)
838
  {
839
  case 'e': pos[1] = f.y2; break;
840
  case 'w': pos[1] = f.y2; break;
885
  function createDragger(ord)/*{{{*/
886
  {
887
  return function(e) {
888
+ if (options.disabled) return false;
889
+ if ((ord == 'move') && !options.allowMove) return false;
890
  btndown = true;
891
  startDragMode(ord,mouseAbs(e));
892
  e.stopPropagation();
934
  {
935
  Selection.release();
936
  }
937
+ Tracker.setCursor( options.allowSelect?'crosshair':'default' );
938
  };
939
  /*}}}*/
940
  function newSelection(e)/*{{{*/
941
  {
942
+ if (options.disabled) return false;
943
+ if (!options.allowSelect) return false;
944
  btndown = true;
945
+ docOffset = getPos($img);
 
946
  Selection.disableHandles();
947
  myCursor('crosshair');
948
+ var pos = mouseAbs(e);
949
+ Coords.setPressed(pos);
950
  Tracker.activateHandlers(selectDrag,doneSelect);
951
  KeyManager.watchKeys();
952
+ Selection.update();
953
 
954
  e.stopPropagation();
955
  e.preventDefault();
960
  {
961
  Coords.setCurrent(pos);
962
  Selection.update();
 
963
  };
964
  /*}}}*/
965
+ function newTracker()
966
+ {
967
+ var trk = $('<div></div>').addClass(cssClass('tracker'));
968
+ $.browser.msie && trk.css({ opacity: 0, backgroundColor: 'white' });
969
+ return trk;
970
+ };
971
 
972
  // }}}
973
+ // API methods {{{
974
+
975
  function animateTo(a)/*{{{*/
976
  {
977
+ var x1 = a[0] / xscale,
978
+ y1 = a[1] / yscale,
979
+ x2 = a[2] / xscale,
980
+ y2 = a[3] / yscale;
981
 
982
  if (animating) return;
983
+
984
  var animto = Coords.flipCoords(x1,y1,x2,y2);
985
  var c = Coords.getFixed();
986
  var animat = initcr = [ c.x, c.y, c.x2, c.y2 ];
987
  var interv = options.animationDelay;
 
 
 
 
988
 
989
  var x = animat[0];
990
  var y = animat[1];
1015
 
1016
  if (pcent >= 99.8) pcent = 100;
1017
 
1018
+ setSelectRaw(animat);
1019
  };
1020
  }();
1021
 
1023
  { window.setTimeout(animator,interv); };
1024
 
1025
  animateStart();
 
1026
  };
1027
  /*}}}*/
1028
+ function setSelect(rect)//{{{
1029
+ {
1030
+ setSelectRaw([rect[0]/xscale,rect[1]/yscale,rect[2]/xscale,rect[3]/yscale]);
1031
+ };
1032
+ //}}}
1033
+ function setSelectRaw(l) /*{{{*/
1034
  {
1035
  Coords.setPressed([l[0],l[1]]);
1036
  Coords.setCurrent([l[2],l[3]]);
1040
  function setOptions(opt)/*{{{*/
1041
  {
1042
  if (typeof(opt) != 'object') opt = { };
1043
+ options = $.extend(options,opt);
1044
 
1045
  if (typeof(options.onChange)!=='function')
1046
  options.onChange = function() { };
1047
 
1048
  if (typeof(options.onSelect)!=='function')
1049
  options.onSelect = function() { };
1050
+
1051
  };
1052
  /*}}}*/
1053
  function tellSelect()/*{{{*/
1063
  function setOptionsNew(opt)/*{{{*/
1064
  {
1065
  setOptions(opt);
1066
+ interfaceUpdate();
1067
+ };
1068
+ /*}}}*/
1069
+ function disableCrop()//{{{
1070
+ {
1071
+ options.disabled = true;
1072
+ Selection.disableHandles();
1073
+ Selection.setCursor('default');
1074
+ Tracker.setCursor('default');
1075
+ };
1076
+ //}}}
1077
+ function enableCrop()//{{{
1078
+ {
1079
+ options.disabled = false;
1080
+ interfaceUpdate();
1081
+ };
1082
+ //}}}
1083
+ function cancelCrop()//{{{
1084
+ {
1085
+ Selection.done();
1086
+ Tracker.activateHandlers(null,null);
1087
+ };
1088
+ //}}}
1089
+ function destroy()//{{{
1090
+ {
1091
+ $div.remove();
1092
+ $origimg.show();
1093
+ };
1094
+ //}}}
1095
+
1096
+ function interfaceUpdate(alt)//{{{
1097
+ // This method tweaks the interface based on options object.
1098
+ // Called when options are changed and at end of initialization.
1099
+ {
1100
+ options.allowResize ?
1101
+ alt?Selection.enableOnly():Selection.enableHandles():
1102
+ Selection.disableHandles();
1103
+
1104
+ Tracker.setCursor( options.allowSelect? 'crosshair': 'default' );
1105
+ Selection.setCursor( options.allowMove? 'move': 'default' );
1106
+
1107
+ $div.css('backgroundColor',options.bgColor);
1108
 
1109
+ if ('setSelect' in options) {
1110
  setSelect(opt.setSelect);
1111
  Selection.done();
1112
+ delete(options.setSelect);
1113
  }
 
 
1114
 
1115
+ if ('trueSize' in options) {
1116
+ xscale = options.trueSize[0] / boundx;
1117
+ yscale = options.trueSize[1] / boundy;
1118
+ }
1119
 
1120
+ xlimit = options.maxSize[0] || 0;
1121
+ ylimit = options.maxSize[1] || 0;
1122
+ xmin = options.minSize[0] || 0;
1123
+ ymin = options.minSize[1] || 0;
1124
 
1125
+ if ('outerImage' in options)
1126
+ {
1127
+ $img.attr('src',options.outerImage);
1128
+ delete(options.outerImage);
1129
+ }
1130
 
1131
+ Selection.refresh();
1132
+ };
1133
+ //}}}
1134
+
1135
+ // }}}
1136
+
1137
+ $hdl_holder.hide();
1138
+ interfaceUpdate(true);
1139
 
1140
+ var api = {
1141
  animateTo: animateTo,
1142
  setSelect: setSelect,
1143
  setOptions: setOptionsNew,
1144
  tellSelect: tellSelect,
1145
+ tellScaled: tellScaled,
1146
+
1147
+ disable: disableCrop,
1148
+ enable: enableCrop,
1149
+ cancel: cancelCrop,
1150
+
1151
+ focus: KeyManager.watchKeys,
1152
+
1153
+ getBounds: function() { return [ boundx * xscale, boundy * yscale ]; },
1154
+ getWidgetSize: function() { return [ boundx, boundy ]; },
1155
+
1156
+ release: Selection.release,
1157
+ destroy: destroy
1158
+
1159
  };
 
1160
 
1161
+ $origimg.data('Jcrop',api);
1162
+ return api;
1163
+ };
1164
 
1165
+ $.fn.Jcrop = function(options)/*{{{*/
1166
  {
1167
  function attachWhenDone(from)/*{{{*/
1168
  {
1169
  var loadsrc = options.useImg || from.src;
1170
  var img = new Image();
1171
+ img.onload = function() { $.Jcrop(from,options); };
 
 
 
 
1172
  img.src = loadsrc;
1173
  };
1174
  /*}}}*/
1178
  this.each(function()
1179
  {
1180
  // If we've already attached to this object
1181
+ if ($(this).data('Jcrop'))
1182
  {
1183
  // The API can be requested this way (undocumented)
1184
+ if (options == 'api') return $(this).data('Jcrop');
1185
  // Otherwise, we just reset the options...
1186
+ else $(this).data('Jcrop').setOptions(options);
1187
  }
1188
  // If we haven't been attached, preload and attach
1189
  else attachWhenDone(this);
1194
  };
1195
  /*}}}*/
1196
 
1197
+ })(jQuery);
admin/js/jquery.MultiFile.js CHANGED
@@ -1,294 +1,531 @@
1
  /*
2
- ### jQuery Multiple File Upload Plugin ###
3
- By Diego A., http://www.fyneworks.com, diego@fyneworks.com
4
-
5
- Website:
6
- http://www.fyneworks.com/jquery/multiple-file-upload/
7
- Project Page:
8
- http://jquery.com/plugins/project/MultiFile/
9
- Forums:
10
- http://www.nabble.com/jQuery-Multiple-File-Upload-f20931.html
11
- Blog:
12
- http://fyneworks.blogspot.com/2007/04/jquery-multiple-file-upload-plugin-v11.html
13
- (old) http://fyneworks.blogspot.com/2007/04/multiple-file-upload-plugin-for-jquery.html
14
-
15
- 12-April-2007: v1.1
16
- Added events and file extension validation
17
- See website for details.
18
-
19
- 06-June-2007: v1.2
20
- Now works in Opera.
21
-
22
- 12-June-2007: v1.21
23
- Preserves name of file input so all current server-side
24
- functions don't need to be changed on new installations.
25
-
26
- 24-June-2007: v1.22
27
- Now works perfectly in Opera, thanks to Adrian Wr�bel <adrian [dot] wrobel [at] gmail.com>
28
  */
29
 
30
  /*# AVOID COLLISIONS #*/
31
- if(jQuery) (function($){
32
  /*# AVOID COLLISIONS #*/
33
-
34
- // Fix for Opera: 6-June-2007
35
- // Stop confusion between null, 'null' and 'undefined'
36
- function IsNull(i){
37
- return (i==null || i=='null' || i=='' || i=='undefined');
38
- };
39
-
40
- // extend jQuery - $.MultiFile hook
41
- $.extend($, {
42
- MultiFile: function( o /* Object */ ){
43
- return $("INPUT[@type='file'].multi").MultiFile(o);
44
- }
45
- });
46
-
47
- // extend jQuery function library
48
- $.extend($.fn, {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
49
 
50
- // MultiFile function
51
- MultiFile: function( o /* Object */ ){
52
- if(this._MultiFile){ return $(this); }
53
- this._MultiFile = true;
54
-
55
- // DEBUGGING: disable plugin
56
- //return false;
57
-
58
- // Bind to each element in current jQuery object
59
- return $(this).each(function(i){
60
- // Remember our ancestors...
61
- var d = this;
62
- var x = $(d);
63
-
64
- //#########################################
65
- // Find basic configuration in class string
66
- // debug???
67
- d.debug = (d.className.indexOf('debug')>0);
68
- // limit number of files that can be selected?
69
- if(IsNull(d.max)){
70
- d.max = x.attr('maxlength');
71
- if(IsNull(d.max)){
72
- d.max = ((d.className.match(/\b((max|limit)\-[0-9]+)\b/gi) || [''])[0]);
73
- if(IsNull(d.max)){
74
- d.max = -1;
75
- }else{
76
- d.max = d.max.match(/[0-9]+/gi)[0];
77
- }
78
- }
79
- }
80
- d.max = new Number(d.max);
81
- // limit extensions?
82
- if(!d.accept){
83
- d.accept = (d.className.match(/\b(accept\-[\w\|]+)\b/gi)) || '';
84
- d.accept = new String(d.accept).replace(/^(accept|ext)\-/i,'');
85
- }
86
- //#########################################
87
-
88
-
89
- // Attach a bunch of events, jQuery style ;-)
90
- $.each("on,after".split(","), function(i,o){
91
- $.each("FileSelect,FileRemove,FileAppend".split(","), function(j,event){
92
- d[o+event] = function(e, v, m){ // default functions do absolutelly nothing...
93
- // if(d.debug) alert(''+o+event+'' +'\nElement:' +e.name+ '\nValue: ' +v+ '\nMaster: ' +m.name+ '');
94
- };
95
- });
96
- });
97
- // Setup a global event handler
98
- d.trigger = function(event, e){
99
- var f = d[event];
100
- if(f){
101
- var v = $(this).attr('value');
102
- var r = f(e, v, d);
103
- if(r!=null) return r;
104
- }
105
- return true;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
106
  };
 
107
 
108
-
109
- // Initialize options
110
- if( typeof o == 'number' ){ o = {max:o}; };
111
- $.extend(d, d.data || {}, o);
112
-
113
- // Default properties - INTERNAL USE ONLY
114
- $.extend(d, {
115
- STRING: d.STRING || {}, // used to hold string constants
116
- n: 0, // How many elements are currently selected?
117
- k: 'multi', // Instance Key?
118
- f: function(z){ return d.k+'_'+String(i)+'_'+String(z); }
119
- });
120
-
121
- // Visible text strings...
122
- // $file = file name (with path), $ext = file extension
123
- d.STRING = $.extend({
124
- remove:'remove',
125
- denied:'You cannot select a $ext file.\nTry again...',
126
- selected:'File selected: $file'
127
- }, d.STRING);
128
-
129
-
130
- // Setup dynamic regular expression for extension validation
131
- // - thanks to John-Paul Bader: http://smyck.de/2006/08/11/javascript-dynamic-regular-expresions/
132
- if(String(d.accept).length>1){
133
- d.rxAccept = new RegExp('\\.('+(d.accept?d.accept:'')+')$','gi');
134
- };
135
-
136
- // Create wrapper to hold our file list
137
- d.w = d.k+'multi'+'_'+i; // Wrapper ID?
138
- x.wrap('<div id="'+d.w+'"></div>');
139
-
140
- // Bind a new element
141
- d.add = function( e, ii ){
142
-
143
- // Keep track of how many elements have been displayed
144
- d.n++;
145
-
146
- // Add reference to master element
147
- e.d = d;
148
-
149
- // Define element's ID and name (upload components need this!)
150
- e.i = ii;//d.I;
151
- e.id = d.f(e.i);
152
- e.name = (e.name || x.attr('name') || 'file') + (e.i>0?e.i:''); // same name as master element
153
 
154
- // If we've reached maximum number, disable input e
155
- if( (d.max != -1) && ((d.n-1) > (d.max)) ){ // d.n Starts at 1, so subtract 1 to find true count
156
- e.disabled = true;
157
- };
158
 
159
- // Remember most recent e
160
- d.current = e;
 
161
 
162
- /// now let's use jQuery
163
- e = $(e);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
164
 
165
- // Triggered when a file is selected
166
- e.change(function(){
167
-
168
- //# Trigger Event! onFileSelect
169
- if(!d.trigger('onFileSelect', this, d)) return false;
170
- //# End Event!
171
-
172
- // check extension
173
- if(d.accept){
174
- var v = String(e.attr('value'));
175
- if(!v.match(d.rxAccept)){
176
- // Clear element value
177
- e.val('').attr('value', '');
178
- e.get(0).value = '';
179
-
180
- // OPERA BUG FIX - 2007-06-24
181
- // Thanks to Adrian Wr�bel <adrian [dot] wrobel [at] gmail.com>
182
- // we add new input element and remove present one for browsers that can't clear value of input element
183
- var f = $('<input name="'+(x.attr('name') || '')+'" type="file"/>');
184
- d.n--;
185
- d.add(f.get(0), this.i);
186
- e.parent().prepend(f);
187
- e.remove();
188
-
189
- // Show error message
190
- // TO-DO: Some people have suggested alternative methods for displaying this message
191
- // such as inline HTML, lightbox, etc... maybe integrate with blockUI plugin?
192
- alert(d.STRING.denied.replace('$ext', String(v.match(/\.\w{1,4}$/gi))));
 
 
 
 
 
 
 
 
 
 
 
 
 
193
 
194
- return false;
195
- }
196
- };
197
-
198
- // Hide this element: display:none is evil!
199
- //this.style.display = 'block';
200
- this.style.position = 'absolute';
201
- this.style.left = '-1000px';
202
-
203
- // Create a new file input element
204
- var f = $('<input name="'+(x.attr('name') || '')+'" type="file"/>');
205
-
206
- // Add it to the form
207
- $(this).parent().prepend(f);
208
-
209
- // Update list
210
- d.list( this );
211
-
212
- // Bind functionality
213
- d.add( f.get(0), this.i+1 );
214
-
215
- //# Trigger Event! afterFileSelect
216
- if(!d.trigger('afterFileSelect', this, d)) return false;
217
- //# End Event!
218
-
219
- });
220
-
221
- };
222
- // Bind a new element
223
-
224
- // Add a new file to the list
225
- d.list = function( y ){
226
 
227
- //# Trigger Event! onFileAppend
228
- if(!d.trigger('onFileAppend', y, d)) return false;
229
- //# End Event!
230
 
231
- // Insert HTML
232
- var
233
- t = $('#'+d.w),
234
- r = $('<div></div>'),
235
- v = $(y).attr('value')+'',
236
- a = $('<span class="file" title="'+d.STRING.selected.replace('$file', v)+'">'+v.match(/[^\/\\]+$/gi)[0]+'</span>'),
237
- b = $('<a href="#'+d.w+'">'+d.STRING.remove+'</a>');
238
- t.append(r);
239
- r.append('[',b,']&nbsp;',a);//.prepend(y.i+': ');
240
- b.click(function(){
241
-
242
- //# Trigger Event! onFileRemove
243
- if(!d.trigger('onFileRemove', y, d)) return false;
244
- //# End Event!
245
-
246
- d.n--;
247
- d.current.disabled = false;
248
- $('#'+d.f(y.i)).remove();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
249
  $(this).parent().remove();
250
 
251
- //# Trigger Event! afterFileRemove
252
- if(!d.trigger('afterFileRemove', y, d)) return false;
253
- //# End Event!
 
 
 
 
254
 
255
- return false;
256
- });
257
-
258
- //# Trigger Event! afterFileAppend
259
- if(!d.trigger('afterFileAppend', y, d)) return false;
260
- //# End Event!
261
-
262
- };
 
 
 
 
 
 
 
 
 
 
263
 
264
- // Bind first file element
265
- if(!d.ft){ d.add(d, 0); d.ft = true; }
266
- d.I++;
267
- d.n++;
268
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
269
  });
270
- // each element
271
-
272
  }
273
- // MultiFile function
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
274
 
275
- });
276
- // extend jQuery function library
277
-
278
-
279
-
280
- /*
281
- ### Default implementation ###
282
- The plugin will attach itself to file inputs
283
- with the class 'multi' when the page loads
284
 
285
- Use the jQuery start plugin to
286
- */
287
- if($.start){ $.start($.MultiFile) }
288
- else $(function(){ $.MultiFile() });
289
-
290
-
291
-
292
  /*# AVOID COLLISIONS #*/
293
  })(jQuery);
294
  /*# AVOID COLLISIONS #*/
1
  /*
2
+ ### jQuery Multiple File Upload Plugin v1.44 - 2009-04-08 ###
3
+ * Home: http://www.fyneworks.com/jquery/multiple-file-upload/
4
+ * Code: http://code.google.com/p/jquery-multifile-plugin/
5
+ *
6
+ * Dual licensed under the MIT and GPL licenses:
7
+ * http://www.opensource.org/licenses/mit-license.php
8
+ * http://www.gnu.org/licenses/gpl.html
9
+ ###
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
10
  */
11
 
12
  /*# AVOID COLLISIONS #*/
13
+ ;if(window.jQuery) (function($){
14
  /*# AVOID COLLISIONS #*/
15
+
16
+ // plugin initialization
17
+ $.fn.MultiFile = function(options){
18
+ if(this.length==0) return this; // quick fail
19
+
20
+ // Handle API methods
21
+ if(typeof arguments[0]=='string'){
22
+ // Perform API methods on individual elements
23
+ if(this.length>1){
24
+ var args = arguments;
25
+ return this.each(function(){
26
+ $.fn.MultiFile.apply($(this), args);
27
+ });
28
+ };
29
+ // Invoke API method handler
30
+ $.fn.MultiFile[arguments[0]].apply(this, $.makeArray(arguments).slice(1) || []);
31
+ // Quick exit...
32
+ return this;
33
+ };
34
+
35
+ // Initialize options for this call
36
+ var options = $.extend(
37
+ {}/* new object */,
38
+ $.fn.MultiFile.options/* default options */,
39
+ options || {} /* just-in-time options */
40
+ );
41
+
42
+ // Empty Element Fix!!!
43
+ // this code will automatically intercept native form submissions
44
+ // and disable empty file elements
45
+ $('form')
46
+ .not('MultiFile-intercepted')
47
+ .addClass('MultiFile-intercepted')
48
+ .submit($.fn.MultiFile.disableEmpty);
49
+
50
+ //### http://plugins.jquery.com/node/1363
51
+ // utility method to integrate this plugin with others...
52
+ if($.fn.MultiFile.options.autoIntercept){
53
+ $.fn.MultiFile.intercept( $.fn.MultiFile.options.autoIntercept /* array of methods to intercept */ );
54
+ $.fn.MultiFile.options.autoIntercept = null; /* only run this once */
55
+ };
56
+
57
+ // loop through each matched element
58
+ this
59
+ .not('.MultiFile-applied')
60
+ .addClass('MultiFile-applied')
61
+ .each(function(){
62
+ //#####################################################################
63
+ // MAIN PLUGIN FUNCTIONALITY - START
64
+ //#####################################################################
65
 
66
+ // BUG 1251 FIX: http://plugins.jquery.com/project/comments/add/1251
67
+ // variable group_count would repeat itself on multiple calls to the plugin.
68
+ // this would cause a conflict with multiple elements
69
+ // changes scope of variable to global so id will be unique over n calls
70
+ window.MultiFile = (window.MultiFile || 0) + 1;
71
+ var group_count = window.MultiFile;
72
+
73
+ // Copy parent attributes - Thanks to Jonas Wagner
74
+ // we will use this one to create new input elements
75
+ var MultiFile = {e:this, E:$(this), clone:$(this).clone()};
76
+
77
+ //===
78
+
79
+ //# USE CONFIGURATION
80
+ if(typeof options=='number') options = {max:options};
81
+ var o = $.extend({},
82
+ $.fn.MultiFile.options,
83
+ options || {},
84
+ ($.metadata? MultiFile.E.metadata(): ($.meta?MultiFile.E.data():null)) || {}, /* metadata options */
85
+ {} /* internals */
86
+ );
87
+ // limit number of files that can be selected?
88
+ if(!(o.max>0) /*IsNull(MultiFile.max)*/){
89
+ o.max = MultiFile.E.attr('maxlength');
90
+ if(!(o.max>0) /*IsNull(MultiFile.max)*/){
91
+ o.max = (String(MultiFile.e.className.match(/\b(max|limit)\-([0-9]+)\b/gi) || ['']).match(/[0-9]+/gi) || [''])[0];
92
+ if(!(o.max>0)) o.max = -1;
93
+ else o.max = String(o.max).match(/[0-9]+/gi)[0];
94
+ }
95
+ };
96
+ o.max = new Number(o.max);
97
+ // limit extensions?
98
+ o.accept = o.accept || MultiFile.E.attr('accept') || '';
99
+ if(!o.accept){
100
+ o.accept = (MultiFile.e.className.match(/\b(accept\-[\w\|]+)\b/gi)) || '';
101
+ o.accept = new String(o.accept).replace(/^(accept|ext)\-/i,'');
102
+ };
103
+
104
+ //===
105
+
106
+ // APPLY CONFIGURATION
107
+ $.extend(MultiFile, o || {});
108
+ MultiFile.STRING = $.extend({},$.fn.MultiFile.options.STRING,MultiFile.STRING);
109
+
110
+ //===
111
+
112
+ //#########################################
113
+ // PRIVATE PROPERTIES/METHODS
114
+ $.extend(MultiFile, {
115
+ n: 0, // How many elements are currently selected?
116
+ slaves: [], files: [],
117
+ instanceKey: MultiFile.e.id || 'MultiFile'+String(group_count), // Instance Key?
118
+ generateID: function(z){ return MultiFile.instanceKey + (z>0 ?'_F'+String(z):''); },
119
+ trigger: function(event, element){
120
+ var handler = MultiFile[event], value = $(element).attr('value');
121
+ if(handler){
122
+ var returnValue = handler(element, value, MultiFile);
123
+ if( returnValue!=null ) return returnValue;
124
+ }
125
+ return true;
126
+ }
127
+ });
128
+
129
+ //===
130
+
131
+ // Setup dynamic regular expression for extension validation
132
+ // - thanks to John-Paul Bader: http://smyck.de/2006/08/11/javascript-dynamic-regular-expresions/
133
+ if(String(MultiFile.accept).length>1){
134
+ MultiFile.rxAccept = new RegExp('\\.('+(MultiFile.accept?MultiFile.accept:'')+')$','gi');
135
+ };
136
+
137
+ //===
138
+
139
+ // Create wrapper to hold our file list
140
+ MultiFile.wrapID = MultiFile.instanceKey+'_wrap'; // Wrapper ID?
141
+ MultiFile.E.wrap('<div class="MultiFile-wrap" id="'+MultiFile.wrapID+'"></div>');
142
+ MultiFile.wrapper = $('#'+MultiFile.wrapID+'');
143
+
144
+ //===
145
+
146
+ // MultiFile MUST have a name - default: file1[], file2[], file3[]
147
+ MultiFile.e.name = MultiFile.e.name || 'file'+ group_count +'[]';
148
+
149
+ //===
150
+
151
+ if(!MultiFile.list){
152
+ // Create a wrapper for the list
153
+ // * OPERA BUG: NO_MODIFICATION_ALLOWED_ERR ('list' is a read-only property)
154
+ // this change allows us to keep the files in the order they were selected
155
+ MultiFile.wrapper.append( '<div class="MultiFile-list" id="'+MultiFile.wrapID+'_list"></div>' );
156
+ MultiFile.list = $('#'+MultiFile.wrapID+'_list');
157
  };
158
+ MultiFile.list = $(MultiFile.list);
159
 
160
+ //===
161
+
162
+ // Bind a new element
163
+ MultiFile.addSlave = function( slave, slave_count ){
164
+ //if(window.console) console.log('MultiFile.addSlave',slave_count);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
165
 
166
+ // Keep track of how many elements have been displayed
167
+ MultiFile.n++;
168
+ // Add reference to master element
169
+ slave.MultiFile = MultiFile;
170
 
171
+ // BUG FIX: http://plugins.jquery.com/node/1495
172
+ // Clear identifying properties from clones
173
+ if(slave_count>0) slave.id = slave.name = '';
174
 
175
+ // Define element's ID and name (upload components need this!)
176
+ //slave.id = slave.id || MultiFile.generateID(slave_count);
177
+ if(slave_count>0) slave.id = MultiFile.generateID(slave_count);
178
+ //FIX for: http://code.google.com/p/jquery-multifile-plugin/issues/detail?id=23
179
+
180
+ // 2008-Apr-29: New customizable naming convention (see url below)
181
+ // http://groups.google.com/group/jquery-dev/browse_frm/thread/765c73e41b34f924#
182
+ slave.name = String(MultiFile.namePattern
183
+ /*master name*/.replace(/\$name/gi,$(MultiFile.clone).attr('name'))
184
+ /*master id */.replace(/\$id/gi, $(MultiFile.clone).attr('id'))
185
+ /*group count*/.replace(/\$g/gi, group_count)//(group_count>0?group_count:''))
186
+ /*slave count*/.replace(/\$i/gi, slave_count)//(slave_count>0?slave_count:''))
187
+ );
188
+
189
+ // If we've reached maximum number, disable input slave
190
+ if( (MultiFile.max > 0) && ((MultiFile.n-1) > (MultiFile.max)) )//{ // MultiFile.n Starts at 1, so subtract 1 to find true count
191
+ slave.disabled = true;
192
+ //};
193
+
194
+ // Remember most recent slave
195
+ MultiFile.current = MultiFile.slaves[slave_count] = slave;
196
+
197
+ // We'll use jQuery from now on
198
+ slave = $(slave);
199
+
200
+ // Clear value
201
+ slave.val('').attr('value','')[0].value = '';
202
+
203
+ // Stop plugin initializing on slaves
204
+ slave.addClass('MultiFile-applied');
205
 
206
+ // Triggered when a file is selected
207
+ slave.change(function(){
208
+ //if(window.console) console.log('MultiFile.slave.change',slave_count);
209
+
210
+ // Lose focus to stop IE7 firing onchange again
211
+ $(this).blur();
212
+
213
+ //# Trigger Event! onFileSelect
214
+ if(!MultiFile.trigger('onFileSelect', this, MultiFile)) return false;
215
+ //# End Event!
216
+
217
+ //# Retrive value of selected file from element
218
+ var ERROR = '', v = String(this.value || ''/*.attr('value)*/);
219
+
220
+ // check extension
221
+ if(MultiFile.accept && v && !v.match(MultiFile.rxAccept))//{
222
+ ERROR = MultiFile.STRING.denied.replace('$ext', String(v.match(/\.\w{1,4}$/gi)));
223
+ //}
224
+ //};
225
+
226
+ // Disallow duplicates
227
+ for(var f in MultiFile.slaves)//{
228
+ if(MultiFile.slaves[f] && MultiFile.slaves[f]!=this)//{
229
+ //console.log(MultiFile.slaves[f],MultiFile.slaves[f].value);
230
+ if(MultiFile.slaves[f].value==v)//{
231
+ ERROR = MultiFile.STRING.duplicate.replace('$file', v.match(/[^\/\\]+$/gi));
232
+ //};
233
+ //};
234
+ //};
235
+
236
+ // Create a new file input element
237
+ var newEle = $(MultiFile.clone).clone();// Copy parent attributes - Thanks to Jonas Wagner
238
+ //# Let's remember which input we've generated so
239
+ // we can disable the empty ones before submission
240
+ // See: http://plugins.jquery.com/node/1495
241
+ newEle.addClass('MultiFile');
242
+
243
+ // Handle error
244
+ if(ERROR!=''){
245
+ // Handle error
246
+ MultiFile.error(ERROR);
247
 
248
+ // 2007-06-24: BUG FIX - Thanks to Adrian Wr�bel <adrian [dot] wrobel [at] gmail.com>
249
+ // Ditch the trouble maker and add a fresh new element
250
+ MultiFile.n--;
251
+ MultiFile.addSlave(newEle[0], slave_count);
252
+ slave.parent().prepend(newEle);
253
+ slave.remove();
254
+ return false;
255
+ };
256
+
257
+ // Hide this element (NB: display:none is evil!)
258
+ $(this).css({ position:'absolute', top: '-3000px' });
259
+
260
+ // Add new element to the form
261
+ slave.after(newEle);
262
+
263
+ // Update list
264
+ MultiFile.addToList( this, slave_count );
265
+
266
+ // Bind functionality
267
+ MultiFile.addSlave( newEle[0], slave_count+1 );
268
+
269
+ //# Trigger Event! afterFileSelect
270
+ if(!MultiFile.trigger('afterFileSelect', this, MultiFile)) return false;
271
+ //# End Event!
272
+
273
+ }); // slave.change()
 
 
 
 
 
 
274
 
275
+ // Save control to element
276
+ $(slave).data('MultiFile', MultiFile);
 
277
 
278
+ };// MultiFile.addSlave
279
+ // Bind a new element
280
+
281
+
282
+
283
+ // Add a new file to the list
284
+ MultiFile.addToList = function( slave, slave_count ){
285
+ //if(window.console) console.log('MultiFile.addToList',slave_count);
286
+
287
+ //# Trigger Event! onFileAppend
288
+ if(!MultiFile.trigger('onFileAppend', slave, MultiFile)) return false;
289
+ //# End Event!
290
+
291
+ // Create label elements
292
+ var
293
+ r = $('<div class="MultiFile-label"></div>'),
294
+ v = String(slave.value || ''/*.attr('value)*/),
295
+ a = $('<span class="MultiFile-title" title="'+MultiFile.STRING.selected.replace('$file', v)+'">'+MultiFile.STRING.file.replace('$file', v.match(/[^\/\\]+$/gi)[0])+'</span>'),
296
+ b = $('<a class="MultiFile-remove" href="#'+MultiFile.wrapID+'">'+MultiFile.STRING.remove+'</a>');
297
+
298
+ // Insert label
299
+ MultiFile.list.append(
300
+ r.append(b, ' ', a)
301
+ );
302
+
303
+ b
304
+ .click(function(){
305
+
306
+ //# Trigger Event! onFileRemove
307
+ if(!MultiFile.trigger('onFileRemove', slave, MultiFile)) return false;
308
+ //# End Event!
309
+
310
+ MultiFile.n--;
311
+ MultiFile.current.disabled = false;
312
+
313
+ // Remove element, remove label, point to current
314
+ MultiFile.slaves[slave_count] = null;
315
+ $(slave).remove();
316
  $(this).parent().remove();
317
 
318
+ // Show most current element again (move into view) and clear selection
319
+ $(MultiFile.current).css({ position:'', top: '' });
320
+ $(MultiFile.current).reset().val('').attr('value', '')[0].value = '';
321
+
322
+ //# Trigger Event! afterFileRemove
323
+ if(!MultiFile.trigger('afterFileRemove', slave, MultiFile)) return false;
324
+ //# End Event!
325
 
326
+ return false;
327
+ });
328
+
329
+ //# Trigger Event! afterFileAppend
330
+ if(!MultiFile.trigger('afterFileAppend', slave, MultiFile)) return false;
331
+ //# End Event!
332
+
333
+ }; // MultiFile.addToList
334
+ // Add element to selected files list
335
+
336
+
337
+
338
+ // Bind functionality to the first element
339
+ if(!MultiFile.MultiFile) MultiFile.addSlave(MultiFile.e, 0);
340
+
341
+ // Increment control count
342
+ //MultiFile.I++; // using window.MultiFile
343
+ MultiFile.n++;
344
 
345
+ // Save control to element
346
+ MultiFile.E.data('MultiFile', MultiFile);
 
 
347
 
348
+
349
+ //#####################################################################
350
+ // MAIN PLUGIN FUNCTIONALITY - END
351
+ //#####################################################################
352
+ }); // each element
353
+ };
354
+
355
+ /*--------------------------------------------------------*/
356
+
357
+ /*
358
+ ### Core functionality and API ###
359
+ */
360
+ $.extend($.fn.MultiFile, {
361
+ /**
362
+ * This method removes all selected files
363
+ *
364
+ * Returns a jQuery collection of all affected elements.
365
+ *
366
+ * @name reset
367
+ * @type jQuery
368
+ * @cat Plugins/MultiFile
369
+ * @author Diego A. (http://www.fyneworks.com/)
370
+ *
371
+ * @example $.fn.MultiFile.reset();
372
+ */
373
+ reset: function(){
374
+ var settings = $(this).data('MultiFile');
375
+ //if(settings) settings.wrapper.find('a.MultiFile-remove').click();
376
+ if(settings) settings.list.find('a.MultiFile-remove').click();
377
+ return $(this);
378
+ },
379
+
380
+
381
+ /**
382
+ * This utility makes it easy to disable all 'empty' file elements in the document before submitting a form.
383
+ * It marks the affected elements so they can be easily re-enabled after the form submission or validation.
384
+ *
385
+ * Returns a jQuery collection of all affected elements.
386
+ *
387
+ * @name disableEmpty
388
+ * @type jQuery
389
+ * @cat Plugins/MultiFile
390
+ * @author Diego A. (http://www.fyneworks.com/)
391
+ *
392
+ * @example $.fn.MultiFile.disableEmpty();
393
+ * @param String class (optional) A string specifying a class to be applied to all affected elements - Default: 'mfD'.
394
+ */
395
+ disableEmpty: function(klass){ klass = String(klass || 'mfD');
396
+ var o = [];
397
+ $('input:file').each(function(){ if($(this).val()=='') o[o.length] = this; });
398
+ return $(o).each(function(){ this.disabled = true }).addClass(klass);
399
+ },
400
+
401
+
402
+ /**
403
+ * This method re-enables 'empty' file elements that were disabled (and marked) with the $.fn.MultiFile.disableEmpty method.
404
+ *
405
+ * Returns a jQuery collection of all affected elements.
406
+ *
407
+ * @name reEnableEmpty
408
+ * @type jQuery
409
+ * @cat Plugins/MultiFile
410
+ * @author Diego A. (http://www.fyneworks.com/)
411
+ *
412
+ * @example $.fn.MultiFile.reEnableEmpty();
413
+ * @param String klass (optional) A string specifying the class that was used to mark affected elements - Default: 'mfD'.
414
+ */
415
+ reEnableEmpty: function(klass){ klass = String(klass || 'mfD');
416
+ return $('input:file.'+klass).removeClass(klass).each(function(){ this.disabled = false });
417
+ },
418
+
419
+
420
+ /**
421
+ * This method will intercept other jQuery plugins and disable empty file input elements prior to form submission
422
+ *
423
+ * @name intercept
424
+ * @cat Plugins/MultiFile
425
+ * @author Diego A. (http://www.fyneworks.com/)
426
+ *
427
+ * @example $.fn.MultiFile.intercept();
428
+ * @param Array methods (optional) Array of method names to be intercepted
429
+ */
430
+ intercepted: {},
431
+ intercept: function(methods, context, args){
432
+ var method, value; args = args || [];
433
+ if(args.constructor.toString().indexOf("Array")<0) args = [ args ];
434
+ if(typeof(methods)=='function'){
435
+ $.fn.MultiFile.disableEmpty();
436
+ value = methods.apply(context || window, args);
437
+ $.fn.MultiFile.reEnableEmpty();
438
+ return value;
439
+ };
440
+ if(methods.constructor.toString().indexOf("Array")<0) methods = [methods];
441
+ for(var i=0;i<methods.length;i++){
442
+ method = methods[i]+''; // make sure that we have a STRING
443
+ if(method) (function(method){ // make sure that method is ISOLATED for the interception
444
+ $.fn.MultiFile.intercepted[method] = $.fn[method] || function(){};
445
+ $.fn[method] = function(){
446
+ $.fn.MultiFile.disableEmpty();
447
+ value = $.fn.MultiFile.intercepted[method].apply(this, arguments);
448
+ $.fn.MultiFile.reEnableEmpty();
449
+ return value;
450
+ }; // interception
451
+ })(method); // MAKE SURE THAT method IS ISOLATED for the interception
452
+ };// for each method
453
+ }
454
+ });
455
+
456
+ /*--------------------------------------------------------*/
457
+
458
+ /*
459
+ ### Default Settings ###
460
+ eg.: You can override default control like this:
461
+ $.fn.MultiFile.options.accept = 'gif|jpg';
462
+ */
463
+ $.fn.MultiFile.options = { //$.extend($.fn.MultiFile, { options: {
464
+ accept: '', // accepted file extensions
465
+ max: -1, // maximum number of selectable files
466
+
467
+ // name to use for newly created elements
468
+ namePattern: '$name', // same name by default (which creates an array)
469
+
470
+ // STRING: collection lets you show messages in different languages
471
+ STRING: {
472
+ remove:'x',
473
+ denied:'You cannot select a $ext file.\nTry again...',
474
+ file:'$file',
475
+ selected:'File selected: $file',
476
+ duplicate:'This file has already been selected:\n$file'
477
+ },
478
+
479
+ // name of methods that should be automcatically intercepted so the plugin can disable
480
+ // extra file elements that are empty before execution and automatically re-enable them afterwards
481
+ autoIntercept: [ 'submit', 'ajaxSubmit', 'validate' /* array of methods to intercept */ ],
482
+
483
+ // error handling function
484
+ error: function(s){
485
+ /*
486
+ ERROR! blockUI is not currently working in IE
487
+ if($.blockUI){
488
+ $.blockUI({
489
+ message: s.replace(/\n/gi,'<br/>'),
490
+ css: {
491
+ border:'none', padding:'15px', size:'12.0pt',
492
+ backgroundColor:'#900', color:'#fff',
493
+ opacity:'.8','-webkit-border-radius': '10px','-moz-border-radius': '10px'
494
+ }
495
  });
496
+ window.setTimeout($.unblockUI, 2000);
 
497
  }
498
+ else//{// save a byte!
499
+ */
500
+ alert(s);
501
+ //}// save a byte!
502
+ }
503
+ }; //} });
504
+
505
+ /*--------------------------------------------------------*/
506
+
507
+ /*
508
+ ### Additional Methods ###
509
+ Required functionality outside the plugin's scope
510
+ */
511
+
512
+ // Native input reset method - because this alone doesn't always work: $(element).val('').attr('value', '')[0].value = '';
513
+ $.fn.reset = function(){ return this.each(function(){ try{ this.reset(); }catch(e){} }); };
514
+
515
+ /*--------------------------------------------------------*/
516
+
517
+ /*
518
+ ### Default implementation ###
519
+ The plugin will attach itself to file inputs
520
+ with the class 'multi' when the page loads
521
+ */
522
+ $(function(){
523
+ //$("input:file.multi").MultiFile();
524
+ $("input[type=file].multi").MultiFile();
525
+ });
526
+
527
 
 
 
 
 
 
 
 
 
 
528
 
 
 
 
 
 
 
 
529
  /*# AVOID COLLISIONS #*/
530
  })(jQuery);
531
  /*# AVOID COLLISIONS #*/
admin/js/jquery.MultiFile.pack.js CHANGED
@@ -1 +1,11 @@
1
- eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('2(Z)(5($){5 K(i){3(i==U||i==\'U\'||i==\'\'||i==\'1R\')};$.D($,{E:5(o){3 $("1t[@W=\'h\'].V").E(o)}});$.D($.1U,{E:5(o){2(6.1a){3 $(6)}6.1a=J;3 $(6).P(5(i){g d=6;g x=$(d);d.1e=(d.R.1q(\'1e\')>0);2(K(d.7)){d.7=x.l(\'1h\');2(K(d.7)){d.7=((d.R.C(/\\b((7|1T)\\-[0-9]+)\\b/B)||[\'\'])[0]);2(K(d.7)){d.7=-1}19{d.7=d.7.C(/[0-9]+/B)[0]}}}d.7=L 1J(d.7);2(!d.8){d.8=(d.R.C(/\\b(8\\-[\\w\\|]+)\\b/B))||\'\';d.8=L u(d.8).S(/^(8|N)\\-/i,\'\')}$.P("1D,1C".10(","),5(i,o){$.P("1y,1w,1u".10(","),5(j,a){d[o+a]=5(e,v,m){}})});d.s=5(a,e){g f=d[a];2(f){g v=$(6).l(\'F\');g r=f(e,v,d);2(r!=U)3 r}3 J};2(1i o==\'1g\'){o={7:o}};$.D(d,d.1f||{},o);$.D(d,{q:d.q||{},n:0,k:\'V\',f:5(z){3 d.k+\'T\'+u(i)+\'T\'+u(z)}});d.q=$.D({A:\'A\',1c:\'1S 1Q 1P a $N h.\\1O 1N...\',M:\'1M M: $h\'},d.q);2(u(d.8).1L>1){d.18=L 1I(\'\\\\.(\'+(d.8?d.8:\'\')+\')$\',\'B\')};d.w=d.k+\'V\'+\'T\'+i;x.1H(\'<H 16="\'+d.w+\'"></H>\');d.G=5(e,a){d.n++;e.d=d;e.i=a;e.16=d.f(e.i);e.p=(e.p||x.l(\'p\')||\'h\')+(e.i>0?e.i:\'\');2((d.7!=-1)&&((d.n-1)>(d.7))){e.15=J};d.14=e;e=$(e);e.1G(5(){2(!d.s(\'1F\',6,d))3 c;2(d.8){g v=u(e.l(\'F\'));2(!v.C(d.18)){e.1E(\'\').l(\'F\',\'\');e.Q(0).F=\'\';g f=$(\'<12 p="\'+(x.l(\'p\')||\'\')+\'" W="h"/>\');d.n--;d.G(f.Q(0),6.i);e.O().11(f);e.A();1z(d.q.1c.S(\'$N\',u(v.C(/\\.\\w{1,4}$/B))));3 c}};6.Y.1x=\'1v\';6.Y.1A=\'-1B\';g f=$(\'<12 p="\'+(x.l(\'p\')||\'\')+\'" W="h"/>\');$(6).O().11(f);d.17(6);d.G(f.Q(0),6.i+1);2(!d.s(\'1s\',6,d))3 c})};d.17=5(y){2(!d.s(\'1r\',y,d))3 c;g t=$(\'#\'+d.w),r=$(\'<H></H>\'),v=$(y).l(\'F\')+\'\',a=$(\'<13 1p="h" 1o="\'+d.q.M.S(\'$h\',v)+\'">\'+v.C(/[^\\/\\\\]+$/B)[0]+\'</13>\'),b=$(\'<a 1K="#\'+d.w+\'">\'+d.q.A+\'</a>\');t.X(r);r.X(\'[\',b,\']&1n;\',a);b.1m(5(){2(!d.s(\'1l\',y,d))3 c;d.n--;d.14.15=c;$(\'#\'+d.f(y.i)).A();$(6).O().A();2(!d.s(\'1k\',y,d))3 c;3 c});2(!d.s(\'1j\',y,d))3 c};2(!d.1b){d.G(d,0);d.1b=J}d.I++;d.n++})}});2($.1d){$.1d($.E)}19 $(5(){$.E()})})(Z);',62,119,'||if|return||function|this|max|accept||||false||||var|file||||attr||||name|STRING||trigger||String||||||remove|gi|match|extend|MultiFile|value|add|div||true|IsNull|new|selected|ext|parent|each|get|className|replace|_|null|multi|type|append|style|jQuery|split|prepend|input|span|current|disabled|id|list|rxAccept|else|_MultiFile|ft|denied|start|debug|data|number|maxlength|typeof|afterFileAppend|afterFileRemove|onFileRemove|click|nbsp|title|class|indexOf|onFileAppend|afterFileSelect|INPUT|FileAppend|absolute|FileRemove|position|FileSelect|alert|left|1000px|after|on|val|onFileSelect|change|wrap|RegExp|Number|href|length|File|again|nTry|select|cannot|undefined|You|limit|fn'.split('|'),0,{}))
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ ### jQuery Multiple File Upload Plugin v1.44 - 2009-04-08 ###
3
+ * Home: http://www.fyneworks.com/jquery/multiple-file-upload/
4
+ * Code: http://code.google.com/p/jquery-multifile-plugin/
5
+ *
6
+ * Dual licensed under the MIT and GPL licenses:
7
+ * http://www.opensource.org/licenses/mit-license.php
8
+ * http://www.gnu.org/licenses/gpl.html
9
+ ###
10
+ */
11
+ eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}(';3(Q.1w)(6($){$.7.2=6(h){3(5.U==0)8 5;3(18 T[0]==\'1J\'){3(5.U>1){l i=T;8 5.L(6(){$.7.2.10($(5),i)})};$.7.2[T[0]].10(5,$.28(T).1Z(1)||[]);8 5};l h=$.O({},$.7.2.I,h||{});$(\'1X\').1l(\'2-R\').S(\'2-R\').1k($.7.2.12);3($.7.2.I.13){$.7.2.1i($.7.2.I.13);$.7.2.I.13=W};5.1l(\'.2-16\').S(\'2-16\').L(6(){Q.2=(Q.2||0)+1;l e=Q.2;l g={e:5,E:$(5),N:$(5).N()};3(18 h==\'26\')h={k:h};l o=$.O({},$.7.2.I,h||{},($.1D?g.E.1D():($.1Q?g.E.Y():W))||{},{});3(!(o.k>0)){o.k=g.E.H(\'1N\');3(!(o.k>0)){o.k=(q(g.e.1I.B(/\\b(k|1S)\\-([0-9]+)\\b/t)||[\'\']).B(/[0-9]+/t)||[\'\'])[0];3(!(o.k>0))o.k=-1;2o o.k=q(o.k).B(/[0-9]+/t)[0]}};o.k=1e 25(o.k);o.p=o.p||g.E.H(\'p\')||\'\';3(!o.p){o.p=(g.e.1I.B(/\\b(p\\-[\\w\\|]+)\\b/t))||\'\';o.p=1e q(o.p).y(/^(p|1b)\\-/i,\'\')};$.O(g,o||{});g.A=$.O({},$.7.2.I.A,g.A);$.O(g,{n:0,J:[],2a:[],1f:g.e.K||\'2\'+q(e),1g:6(z){8 g.1f+(z>0?\'1L\'+q(z):\'\')},F:6(a,b){l c=g[a],j=$(b).H(\'j\');3(c){l d=c(b,j,g);3(d!=W)8 d}8 1d}});3(q(g.p).U>1){g.1m=1e 2b(\'\\\\.(\'+(g.p?g.p:\'\')+\')$\',\'t\')};g.P=g.1f+\'1K\';g.E.1z(\'<M V="2-1z" K="\'+g.P+\'"></M>\');g.1C=$(\'#\'+g.P+\'\');g.e.D=g.e.D||\'m\'+e+\'[]\';3(!g.G){g.1C.1c(\'<M V="2-G" K="\'+g.P+\'1h"></M>\');g.G=$(\'#\'+g.P+\'1h\')};g.G=$(g.G);g.11=6(c,d){g.n++;c.2=g;3(d>0)c.K=c.D=\'\';3(d>0)c.K=g.1g(d);c.D=q(g.1j.y(/\\$D/t,$(g.N).H(\'D\')).y(/\\$K/t,$(g.N).H(\'K\')).y(/\\$g/t,e).y(/\\$i/t,d));3((g.k>0)&&((g.n-1)>(g.k)))c.Z=1d;g.X=g.J[d]=c;c=$(c);c.17(\'\').H(\'j\',\'\')[0].j=\'\';c.S(\'2-16\');c.1T(6(){$(5).1V();3(!g.F(\'1W\',5,g))8 u;l a=\'\',v=q(5.j||\'\');3(g.p&&v&&!v.B(g.1m))a=g.A.1n.y(\'$1b\',q(v.B(/\\.\\w{1,4}$/t)));1o(l f 29 g.J)3(g.J[f]&&g.J[f]!=5)3(g.J[f].j==v)a=g.A.1p.y(\'$m\',v.B(/[^\\/\\\\]+$/t));l b=$(g.N).N();b.S(\'2\');3(a!=\'\'){g.1q(a);g.n--;g.11(b[0],d);c.1r().2t(b);c.C();8 u};$(5).1s({1t:\'1M\',1u:\'-1O\'});c.1P(b);g.1v(5,d);g.11(b[0],d+1);3(!g.F(\'1R\',5,g))8 u});$(c).Y(\'2\',g)};g.1v=6(c,d){3(!g.F(\'2u\',c,g))8 u;l r=$(\'<M V="2-1U"></M>\'),v=q(c.j||\'\'),a=$(\'<1x V="2-1y" 1y="\'+g.A.14.y(\'$m\',v)+\'">\'+g.A.m.y(\'$m\',v.B(/[^\\/\\\\]+$/t)[0])+\'</1x>\'),b=$(\'<a V="2-C" 1Y="#\'+g.P+\'">\'+g.A.C+\'</a>\');g.G.1c(r.1c(b,\' \',a));b.1A(6(){3(!g.F(\'20\',c,g))8 u;g.n--;g.X.Z=u;g.J[d]=W;$(c).C();$(5).1r().C();$(g.X).1s({1t:\'\',1u:\'\'});$(g.X).15().17(\'\').H(\'j\',\'\')[0].j=\'\';3(!g.F(\'22\',c,g))8 u;8 u});3(!g.F(\'23\',c,g))8 u};3(!g.2)g.11(g.e,0);g.n++;g.E.Y(\'2\',g)})};$.O($.7.2,{15:6(){l a=$(5).Y(\'2\');3(a)a.G.24(\'a.2-C\').1A();8 $(5)},12:6(a){a=q(a||\'1B\');l o=[];$(\'1a:m\').L(6(){3($(5).17()==\'\')o[o.U]=5});8 $(o).L(6(){5.Z=1d}).S(a)},19:6(a){a=q(a||\'1B\');8 $(\'1a:m.\'+a).27(a).L(6(){5.Z=u})},R:{},1i:6(b,c,d){l e,j;d=d||[];3(d.1E.1F().1G("1H")<0)d=[d];3(18(b)==\'6\'){$.7.2.12();j=b.10(c||Q,d);$.7.2.19();8 j};3(b.1E.1F().1G("1H")<0)b=[b];1o(l i=0;i<b.U;i++){e=b[i]+\'\';3(e)(6(a){$.7.2.R[a]=$.7[a]||6(){};$.7[a]=6(){$.7.2.12();j=$.7.2.R[a].10(5,T);$.7.2.19();8 j}})(e)}}});$.7.2.I={p:\'\',k:-1,1j:\'$D\',A:{C:\'x\',1n:\'2c 2d 2e a $1b m.\\2f 2g...\',m:\'$m\',14:\'2h 14: $m\',1p:\'2i m 2j 2k 2l 14:\\n$m\'},13:[\'1k\',\'2m\',\'2n\'],1q:6(s){2p(s)}};$.7.15=6(){8 5.L(6(){2q{5.15()}2r(e){}})};$(6(){$("1a[2s=m].21").2()})})(1w);',62,155,'||MultiFile|if||this|function|fn|return|||||||||||value|max|var|file|||accept|String|||gi|false||||replace||STRING|match|remove|name||trigger|list|attr|options|slaves|id|each|div|clone|extend|wrapID|window|intercepted|addClass|arguments|length|class|null|current|data|disabled|apply|addSlave|disableEmpty|autoIntercept|selected|reset|applied|val|typeof|reEnableEmpty|input|ext|append|true|new|instanceKey|generateID|_list|intercept|namePattern|submit|not|rxAccept|denied|for|duplicate|error|parent|css|position|top|addToList|jQuery|span|title|wrap|click|mfD|wrapper|metadata|constructor|toString|indexOf|Array|className|string|_wrap|_F|absolute|maxlength|3000px|after|meta|afterFileSelect|limit|change|label|blur|onFileSelect|form|href|slice|onFileRemove|multi|afterFileRemove|afterFileAppend|find|Number|number|removeClass|makeArray|in|files|RegExp|You|cannot|select|nTry|again|File|This|has|already|been|ajaxSubmit|validate|else|alert|try|catch|type|prepend|onFileAppend'.split('|'),0,{}))
admin/js/swfupload.js CHANGED
@@ -50,7 +50,7 @@ SWFUpload.prototype.initSWFUpload = function (settings) {
50
  /* *************** */
51
  SWFUpload.instances = {};
52
  SWFUpload.movieCount = 0;
53
- SWFUpload.version = "2.2.0 Beta 5 2008-01-29";
54
  SWFUpload.QUEUE_ERROR = {
55
  QUEUE_LIMIT_EXCEEDED : -100,
56
  FILE_EXCEEDS_SIZE_LIMIT : -110,
@@ -91,6 +91,27 @@ SWFUpload.WINDOW_MODE = {
91
  OPAQUE : "opaque"
92
  };
93
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
94
  /* ******************** */
95
  /* Instance Members */
96
  /* ******************** */
@@ -104,11 +125,13 @@ SWFUpload.prototype.initSettings = function () {
104
 
105
  // Upload backend settings
106
  this.ensureDefault("upload_url", "");
 
107
  this.ensureDefault("file_post_name", "Filedata");
108
  this.ensureDefault("post_params", {});
109
  this.ensureDefault("use_query_string", false);
110
  this.ensureDefault("requeue_on_error", false);
111
  this.ensureDefault("http_success", []);
 
112
 
113
  // File Settings
114
  this.ensureDefault("file_types", "*.*");
@@ -132,6 +155,7 @@ SWFUpload.prototype.initSettings = function () {
132
  this.ensureDefault("button_action", SWFUpload.BUTTON_ACTION.SELECT_FILES);
133
  this.ensureDefault("button_disabled", false);
134
  this.ensureDefault("button_placeholder_id", "");
 
135
  this.ensureDefault("button_cursor", SWFUpload.CURSOR.ARROW);
136
  this.ensureDefault("button_window_mode", SWFUpload.WINDOW_MODE.WINDOW);
137
 
@@ -165,6 +189,12 @@ SWFUpload.prototype.initSettings = function () {
165
  this.settings.flash_url = this.settings.flash_url + (this.settings.flash_url.indexOf("?") < 0 ? "?" : "&") + "preventswfcaching=" + new Date().getTime();
166
  }
167
 
 
 
 
 
 
 
168
  delete this.ensureDefault;
169
  };
170
 
@@ -178,7 +208,7 @@ SWFUpload.prototype.loadFlash = function () {
178
  }
179
 
180
  // Get the element where we will be placing the flash movie
181
- targetElement = document.getElementById(this.settings.button_placeholder_id);
182
 
183
  if (targetElement == undefined) {
184
  throw "Could not find the placeholder element: " + this.settings.button_placeholder_id;
@@ -222,6 +252,7 @@ SWFUpload.prototype.getFlashVars = function () {
222
  "&amp;useQueryString=", encodeURIComponent(this.settings.use_query_string),
223
  "&amp;requeueOnError=", encodeURIComponent(this.settings.requeue_on_error),
224
  "&amp;httpSuccess=", encodeURIComponent(httpSuccessString),
 
225
  "&amp;params=", encodeURIComponent(paramString),
226
  "&amp;filePostName=", encodeURIComponent(this.settings.file_post_name),
227
  "&amp;fileTypes=", encodeURIComponent(this.settings.file_types),
@@ -341,6 +372,7 @@ SWFUpload.prototype.displayDebugInfo = function () {
341
  "\t", "use_query_string: ", this.settings.use_query_string.toString(), "\n",
342
  "\t", "requeue_on_error: ", this.settings.requeue_on_error.toString(), "\n",
343
  "\t", "http_success: ", this.settings.http_success.join(", "), "\n",
 
344
  "\t", "file_post_name: ", this.settings.file_post_name, "\n",
345
  "\t", "post_params: ", this.settings.post_params.toString(), "\n",
346
  "\t", "file_types: ", this.settings.file_types, "\n",
@@ -353,6 +385,7 @@ SWFUpload.prototype.displayDebugInfo = function () {
353
  "\t", "prevent_swf_caching: ", this.settings.prevent_swf_caching.toString(), "\n",
354
 
355
  "\t", "button_placeholder_id: ", this.settings.button_placeholder_id.toString(), "\n",
 
356
  "\t", "button_image_url: ", this.settings.button_image_url.toString(), "\n",
357
  "\t", "button_width: ", this.settings.button_width.toString(), "\n",
358
  "\t", "button_height: ", this.settings.button_height.toString(), "\n",
@@ -427,7 +460,6 @@ SWFUpload.prototype.callFlash = function (functionName, argumentArray) {
427
  return returnValue;
428
  };
429
 
430
-
431
  /* *****************************
432
  -- Flash control methods --
433
  Your UI should use these
@@ -595,6 +627,11 @@ SWFUpload.prototype.setHTTPSuccess = function (http_status_codes) {
595
  this.callFlash("SetHTTPSuccess", [http_status_codes]);
596
  };
597
 
 
 
 
 
 
598
 
599
  // Public: setDebugEnabled changes the debug_enabled setting
600
  SWFUpload.prototype.setDebugEnabled = function (debugEnabled) {
@@ -816,8 +853,8 @@ SWFUpload.prototype.fileQueueError = function (file, errorCode, message) {
816
 
817
  /* Called after the file dialog has closed and the selected files have been queued.
818
  You could call startUpload here if you want the queued files to begin uploading immediately. */
819
- SWFUpload.prototype.fileDialogComplete = function (numFilesSelected, numFilesQueued) {
820
- this.queueEvent("file_dialog_complete_handler", [numFilesSelected, numFilesQueued]);
821
  };
822
 
823
  SWFUpload.prototype.uploadStart = function (file) {
@@ -857,9 +894,9 @@ SWFUpload.prototype.uploadError = function (file, errorCode, message) {
857
  this.queueEvent("upload_error_handler", [file, errorCode, message]);
858
  };
859
 
860
- SWFUpload.prototype.uploadSuccess = function (file, serverData) {
861
  file = this.unescapeFilePostParams(file);
862
- this.queueEvent("upload_success_handler", [file, serverData]);
863
  };
864
 
865
  SWFUpload.prototype.uploadComplete = function (file) {
50
  /* *************** */
51
  SWFUpload.instances = {};
52
  SWFUpload.movieCount = 0;
53
+ SWFUpload.version = "2.2.0 2009-03-25";
54
  SWFUpload.QUEUE_ERROR = {
55
  QUEUE_LIMIT_EXCEEDED : -100,
56
  FILE_EXCEEDS_SIZE_LIMIT : -110,
91
  OPAQUE : "opaque"
92
  };
93
 
94
+ // Private: takes a URL, determines if it is relative and converts to an absolute URL
95
+ // using the current site. Only processes the URL if it can, otherwise returns the URL untouched
96
+ SWFUpload.completeURL = function(url) {
97
+ if (typeof(url) !== "string" || url.match(/^https?:\/\//i) || url.match(/^\//)) {
98
+ return url;
99
+ }
100
+
101
+ var currentURL = window.location.protocol + "//" + window.location.hostname + (window.location.port ? ":" + window.location.port : "");
102
+
103
+ var indexSlash = window.location.pathname.lastIndexOf("/");
104
+ if (indexSlash <= 0) {
105
+ path = "/";
106
+ } else {
107
+ path = window.location.pathname.substr(0, indexSlash) + "/";
108
+ }
109
+
110
+ return /*currentURL +*/ path + url;
111
+
112
+ };
113
+
114
+
115
  /* ******************** */
116
  /* Instance Members */
117
  /* ******************** */
125
 
126
  // Upload backend settings
127
  this.ensureDefault("upload_url", "");
128
+ this.ensureDefault("preserve_relative_urls", false);
129
  this.ensureDefault("file_post_name", "Filedata");
130
  this.ensureDefault("post_params", {});
131
  this.ensureDefault("use_query_string", false);
132
  this.ensureDefault("requeue_on_error", false);
133
  this.ensureDefault("http_success", []);
134
+ this.ensureDefault("assume_success_timeout", 0);
135
 
136
  // File Settings
137
  this.ensureDefault("file_types", "*.*");
155
  this.ensureDefault("button_action", SWFUpload.BUTTON_ACTION.SELECT_FILES);
156
  this.ensureDefault("button_disabled", false);
157
  this.ensureDefault("button_placeholder_id", "");
158
+ this.ensureDefault("button_placeholder", null);
159
  this.ensureDefault("button_cursor", SWFUpload.CURSOR.ARROW);
160
  this.ensureDefault("button_window_mode", SWFUpload.WINDOW_MODE.WINDOW);
161
 
189
  this.settings.flash_url = this.settings.flash_url + (this.settings.flash_url.indexOf("?") < 0 ? "?" : "&") + "preventswfcaching=" + new Date().getTime();
190
  }
191
 
192
+ if (!this.settings.preserve_relative_urls) {
193
+ //this.settings.flash_url = SWFUpload.completeURL(this.settings.flash_url); // Don't need to do this one since flash doesn't look at it
194
+ this.settings.upload_url = SWFUpload.completeURL(this.settings.upload_url);
195
+ this.settings.button_image_url = SWFUpload.completeURL(this.settings.button_image_url);
196
+ }
197
+
198
  delete this.ensureDefault;
199
  };
200
 
208
  }
209
 
210
  // Get the element where we will be placing the flash movie
211
+ targetElement = document.getElementById(this.settings.button_placeholder_id) || this.settings.button_placeholder;
212
 
213
  if (targetElement == undefined) {
214
  throw "Could not find the placeholder element: " + this.settings.button_placeholder_id;
252
  "&amp;useQueryString=", encodeURIComponent(this.settings.use_query_string),
253
  "&amp;requeueOnError=", encodeURIComponent(this.settings.requeue_on_error),
254
  "&amp;httpSuccess=", encodeURIComponent(httpSuccessString),
255
+ "&amp;assumeSuccessTimeout=", encodeURIComponent(this.settings.assume_success_timeout),
256
  "&amp;params=", encodeURIComponent(paramString),
257
  "&amp;filePostName=", encodeURIComponent(this.settings.file_post_name),
258
  "&amp;fileTypes=", encodeURIComponent(this.settings.file_types),
372
  "\t", "use_query_string: ", this.settings.use_query_string.toString(), "\n",
373
  "\t", "requeue_on_error: ", this.settings.requeue_on_error.toString(), "\n",
374
  "\t", "http_success: ", this.settings.http_success.join(", "), "\n",
375
+ "\t", "assume_success_timeout: ", this.settings.assume_success_timeout, "\n",
376
  "\t", "file_post_name: ", this.settings.file_post_name, "\n",
377
  "\t", "post_params: ", this.settings.post_params.toString(), "\n",
378
  "\t", "file_types: ", this.settings.file_types, "\n",
385
  "\t", "prevent_swf_caching: ", this.settings.prevent_swf_caching.toString(), "\n",
386
 
387
  "\t", "button_placeholder_id: ", this.settings.button_placeholder_id.toString(), "\n",
388
+ "\t", "button_placeholder: ", (this.settings.button_placeholder ? "Set" : "Not Set"), "\n",
389
  "\t", "button_image_url: ", this.settings.button_image_url.toString(), "\n",
390
  "\t", "button_width: ", this.settings.button_width.toString(), "\n",
391
  "\t", "button_height: ", this.settings.button_height.toString(), "\n",
460
  return returnValue;
461
  };
462
 
 
463
  /* *****************************
464
  -- Flash control methods --
465
  Your UI should use these
627
  this.callFlash("SetHTTPSuccess", [http_status_codes]);
628
  };
629
 
630
+ // Public: setHTTPSuccess changes the http_success setting
631
+ SWFUpload.prototype.setAssumeSuccessTimeout = function (timeout_seconds) {
632
+ this.settings.assume_success_timeout = timeout_seconds;
633
+ this.callFlash("SetAssumeSuccessTimeout", [timeout_seconds]);
634
+ };
635
 
636
  // Public: setDebugEnabled changes the debug_enabled setting
637
  SWFUpload.prototype.setDebugEnabled = function (debugEnabled) {
853
 
854
  /* Called after the file dialog has closed and the selected files have been queued.
855
  You could call startUpload here if you want the queued files to begin uploading immediately. */
856
+ SWFUpload.prototype.fileDialogComplete = function (numFilesSelected, numFilesQueued, numFilesInQueue) {
857
+ this.queueEvent("file_dialog_complete_handler", [numFilesSelected, numFilesQueued, numFilesInQueue]);
858
  };
859
 
860
  SWFUpload.prototype.uploadStart = function (file) {
894
  this.queueEvent("upload_error_handler", [file, errorCode, message]);
895
  };
896
 
897
+ SWFUpload.prototype.uploadSuccess = function (file, serverData, responseReceived) {
898
  file = this.unescapeFilePostParams(file);
899
+ this.queueEvent("upload_success_handler", [file, serverData, responseReceived]);
900
  };
901
 
902
  SWFUpload.prototype.uploadComplete = function (file) {
admin/js/swfupload.swf CHANGED
Binary file
admin/manage-galleries.php CHANGED
@@ -7,6 +7,13 @@ function nggallery_manage_gallery_main() {
7
 
8
  global $wpdb, $ngg, $nggdb, $wp_query;
9
 
 
 
 
 
 
 
 
10
  if ( ! isset( $_GET['paged'] ) || $_GET['paged'] < 1 )
11
  $_GET['paged'] = 1;
12
 
@@ -21,10 +28,33 @@ function nggallery_manage_gallery_main() {
21
  'total' => $nggdb->paged['max_objects_per_page'],
22
  'current' => $_GET['paged']
23
  ));
24
-
 
25
  ?>
 
 
 
 
 
 
 
26
  <div class="wrap">
27
- <h2><?php _e('Gallery Overview', 'nggallery') ?></h2>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
28
  <?php if ( $page_links ) : ?>
29
  <div class="tablenav">
30
  <div class="tablenav-pages"><?php $page_links_text = sprintf( '<span class="displaying-num">' . __( 'Displaying %s&#8211;%s of %s' ) . '</span>%s',
@@ -33,18 +63,17 @@ function nggallery_manage_gallery_main() {
33
  number_format_i18n( $nggdb->paged['total_objects'] ),
34
  $page_links
35
  ); echo $page_links_text; ?></div>
36
- <br class="clear" />
37
  </div>
38
  <?php endif; ?>
39
  <table class="widefat" cellspacing="0">
40
  <thead>
41
  <tr>
42
- <th scope="col" ><?php _e('ID') ?></th>
43
- <th scope="col" ><?php _e('Title', 'nggallery') ?></th>
44
- <th scope="col" ><?php _e('Description', 'nggallery') ?></th>
45
- <th scope="col" ><?php _e('Author', 'nggallery') ?></th>
46
- <th scope="col" ><?php _e('Page ID', 'nggallery') ?></th>
47
- <th scope="col" ><?php _e('Quantity', 'nggallery') ?></th>
48
  <th scope="col" ><?php _e('Action'); ?></th>
49
  </tr>
50
  </thead>
@@ -53,7 +82,7 @@ function nggallery_manage_gallery_main() {
53
 
54
  if($gallerylist) {
55
  foreach($gallerylist as $gallery) {
56
- $class = ( $class == 'class="alternate"' ) ? '' : 'class="alternate"';
57
  $gid = $gallery->gid;
58
  $name = (empty($gallery->title) ) ? $gallery->name : $gallery->title;
59
  $author_user = get_userdata( (int) $gallery->author );
@@ -62,7 +91,7 @@ if($gallerylist) {
62
  <th scope="row"><?php echo $gid; ?></th>
63
  <td>
64
  <?php if (nggAdmin::can_manage_this_gallery($gallery->author)) { ?>
65
- <a href="<?php echo wp_nonce_url( $ngg->manage_page->base_page . "&amp;mode=edit&amp;gid=" . $gid, 'ngg_editgallery')?>" class='edit' title="<?php _e('Edit') ?>" >
66
  <?php echo nggGallery::i18n($name); ?>
67
  </a>
68
  <?php } else { ?>
@@ -75,19 +104,44 @@ if($gallerylist) {
75
  <td><?php echo $gallery->counter; ?></td>
76
  <td>
77
  <?php if (nggAdmin::can_manage_this_gallery($gallery->author)) : ?>
78
- <a href="<?php echo wp_nonce_url( $ngg->manage_page->base_page . "&amp;mode=delete&amp;gid=" . $gid, 'ngg_editgallery')?>" class="delete" onclick="javascript:check=confirm( '<?php _e("Delete this gallery ?",'nggallery')?>');if(check==false) return false;"><?php _e('Delete') ?></a>
79
  <?php endif; ?>
80
  </td>
81
  </tr>
82
  <?php
83
  }
84
  } else {
85
- echo '<tr><td colspan="7" align="center"><strong>'.__('No entries found','nggallery').'</strong></td></tr>';
86
  }
87
  ?>
88
  </tbody>
89
  </table>
90
  </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
91
  <?php
92
  }
93
  ?>
7
 
8
  global $wpdb, $ngg, $nggdb, $wp_query;
9
 
10
+ if (isset ($_POST['addgallery']) && isset ($_POST['galleryname'])){
11
+ check_admin_referer('ngg_addgallery');
12
+ $newgallery = attribute_escape( $_POST['galleryname']);
13
+ if ( !empty($newgallery) )
14
+ nggAdmin::create_gallery($newgallery, $defaultpath);
15
+ }
16
+
17
  if ( ! isset( $_GET['paged'] ) || $_GET['paged'] < 1 )
18
  $_GET['paged'] = 1;
19
 
28
  'total' => $nggdb->paged['max_objects_per_page'],
29
  'current' => $_GET['paged']
30
  ));
31
+
32
+ $defaultpath = $ngg->options['gallerypath'];
33
  ?>
34
+ <script type="text/javascript">
35
+ <!--
36
+ function showDialog( windowId ) {
37
+ tb_show("", "#TB_inline?width=640&height=130&inlineId=" + windowId + "&modal=true", false);
38
+ }
39
+ //-->
40
+ </script>
41
  <div class="wrap">
42
+ <h2><?php _e('Gallery Overview', 'nggallery'); ?></h2>
43
+ <form class="search-form" action="" method="get">
44
+ <p class="search-box">
45
+ <label class="hidden" for="media-search-input"><?php _e( 'Search Images', 'nggallery' ); ?>:</label>
46
+ <input type="hidden" id="page-name" name="page" value="nggallery-manage-gallery" />
47
+ <input type="text" id="media-search-input" name="s" value="<?php the_search_query(); ?>" />
48
+ <input type="submit" value="<?php _e( 'Search Images', 'nggallery' ); ?>" class="button" />
49
+ </p>
50
+ </form>
51
+ <div class="tablenav">
52
+ <?php if ( current_user_can('NextGEN Upload images') ) : ?>
53
+ <div class="alignleft actions">
54
+ <input id="doaction" class="button-secondary action" type="submit" onclick="showDialog('addGallery');" name="doaction" value="<?php _e('Add new gallery', 'nggallery') ?>"/>
55
+ </div>
56
+ <?php endif; ?>
57
+ </div>
58
  <?php if ( $page_links ) : ?>
59
  <div class="tablenav">
60
  <div class="tablenav-pages"><?php $page_links_text = sprintf( '<span class="displaying-num">' . __( 'Displaying %s&#8211;%s of %s' ) . '</span>%s',
63
  number_format_i18n( $nggdb->paged['total_objects'] ),
64
  $page_links
65
  ); echo $page_links_text; ?></div>
 
66
  </div>
67
  <?php endif; ?>
68
  <table class="widefat" cellspacing="0">
69
  <thead>
70
  <tr>
71
+ <th scope="col" ><?php _e('ID'); ?></th>
72
+ <th scope="col" ><?php _e('Title', 'nggallery'); ?></th>
73
+ <th scope="col" ><?php _e('Description', 'nggallery'); ?></th>
74
+ <th scope="col" ><?php _e('Author', 'nggallery'); ?></th>
75
+ <th scope="col" ><?php _e('Page ID', 'nggallery'); ?></th>
76
+ <th scope="col" ><?php _e('Quantity', 'nggallery'); ?></th>
77
  <th scope="col" ><?php _e('Action'); ?></th>
78
  </tr>
79
  </thead>
82
 
83
  if($gallerylist) {
84
  foreach($gallerylist as $gallery) {
85
+ $class = ( !isset($class) || $class == 'class="alternate"' ) ? '' : 'class="alternate"';
86
  $gid = $gallery->gid;
87
  $name = (empty($gallery->title) ) ? $gallery->name : $gallery->title;
88
  $author_user = get_userdata( (int) $gallery->author );
91
  <th scope="row"><?php echo $gid; ?></th>
92
  <td>
93
  <?php if (nggAdmin::can_manage_this_gallery($gallery->author)) { ?>
94
+ <a href="<?php echo wp_nonce_url( $ngg->manage_page->base_page . '&amp;mode=edit&amp;gid=' . $gid, 'ngg_editgallery')?>" class='edit' title="<?php _e('Edit'); ?>" >
95
  <?php echo nggGallery::i18n($name); ?>
96
  </a>
97
  <?php } else { ?>
104
  <td><?php echo $gallery->counter; ?></td>
105
  <td>
106
  <?php if (nggAdmin::can_manage_this_gallery($gallery->author)) : ?>
107
+ <a href="<?php echo wp_nonce_url( $ngg->manage_page->base_page . '&amp;mode=delete&amp;gid=' . $gid, 'ngg_editgallery')?>" class="delete" onclick="javascript:check=confirm( '<?php _e('Delete this gallery ?', 'nggallery'); ?>');if(check==false) return false;"><?php _e('Delete'); ?></a>
108
  <?php endif; ?>
109
  </td>
110
  </tr>
111
  <?php
112
  }
113
  } else {
114
+ echo '<tr><td colspan="7" align="center"><strong>' . __('No entries found', 'nggallery') . '</strong></td></tr>';
115
  }
116
  ?>
117
  </tbody>
118
  </table>
119
  </div>
120
+ <!-- #addGallery -->
121
+ <div id="addGallery" style="display: none;" >
122
+ <form id="form-tags" method="POST" accept-charset="utf-8">
123
+ <?php wp_nonce_field('ngg_addgallery'); ?>
124
+ <table width="100%" border="0" cellspacing="3" cellpadding="3" >
125
+ <tr>
126
+ <td>
127
+ <strong><?php _e('New Gallery', 'nggallery') ;?>:</strong> <input type="text" size="35" name="galleryname" value="" /><br />
128
+ <?php if(!IS_WPMU) { ?>
129
+ <?php _e('Create a new , empty gallery below the folder', 'nggallery') ;?> <strong><?php echo $defaultpath ?></strong><br />
130
+ <?php } ?>
131
+ <i>( <?php _e('Allowed characters for file and folder names are', 'nggallery') ;?>: a-z, A-Z, 0-9, -, _ )</i>
132
+ </td>
133
+ </tr>
134
+ <tr align="right">
135
+ <td class="submit">
136
+ <input class="button-primary" type="submit" name="addgallery" value="<?php _e('OK','nggallery'); ?>" />
137
+ &nbsp;
138
+ <input class="button-secondary" type="reset" value="&nbsp;<?php _e('Cancel', 'nggallery'); ?>&nbsp;" onclick="tb_remove()"/>
139
+ </td>
140
+ </tr>
141
+ </table>
142
+ </form>
143
+ </div>
144
+ <!-- /#addGallery -->
145
  <?php
146
  }
147
  ?>
admin/manage-images.php CHANGED
@@ -6,52 +6,70 @@ function nggallery_picturelist() {
6
  // *** show picture list
7
  global $wpdb, $nggdb, $user_ID, $ngg;
8
 
9
- // GET variables
10
- $act_gid = $ngg->manage_page->gid;
11
 
12
- // Load the gallery metadata
13
- $gallery = $nggdb->find_gallery($act_gid);
14
 
15
- if (!$gallery) {
16
- nggGallery::show_error(__('Gallery not found.', 'nggallery'));
17
- return;
18
- }
19
-
20
- // Check if you have the correct capability
21
- if (!nggAdmin::can_manage_this_gallery($gallery->author)) {
22
- nggGallery::show_error(__('Sorry, you have no access here', 'nggallery'));
23
- return;
24
- }
25
-
26
- // look for pagination
27
- if ( ! isset( $_GET['paged'] ) || $_GET['paged'] < 1 )
28
  $_GET['paged'] = 1;
 
 
 
29
 
30
- $start = ( $_GET['paged'] - 1 ) * 50;
31
-
32
- // get picture values
33
- $picturelist = $nggdb->get_gallery($act_gid, $ngg->options['galSort'], $ngg->options['galSortDir'], false, 50, $start );
34
-
35
- // build pagination
36
- $page_links = paginate_links( array(
37
- 'base' => add_query_arg( 'paged', '%#%' ),
38
- 'format' => '',
39
- 'prev_text' => __('&laquo;'),
40
- 'next_text' => __('&raquo;'),
41
- 'total' => $nggdb->paged['max_objects_per_page'],
42
- 'current' => $_GET['paged']
43
- ));
44
-
45
- // get the current author
46
- $act_author_user = get_userdata( (int) $gallery->author );
47
-
48
- // list all galleries
49
- $gallerylist = $nggdb->find_all_galleries();
50
 
51
- //get the columns
52
- $gallery_columns = ngg_manage_gallery_columns();
53
- $hidden_columns = get_hidden_columns('nggallery-manage-images');
54
- $num_columns = count($gallery_columns) - count($hidden_columns);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
55
  ?>
56
 
57
  <script type="text/javascript">
@@ -148,6 +166,23 @@ jQuery(document).ready( function() {
148
 
149
  <div class="wrap">
150
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
151
  <h2><?php echo __ngettext( 'Gallery', 'Galleries', 1, 'nggallery' ); ?> : <?php echo nggGallery::i18n($gallery->title); ?></h2>
152
 
153
  <br style="clear: both;" />
@@ -226,6 +261,7 @@ jQuery(document).ready( function() {
226
  </div>
227
  </div>
228
  </div> <!-- poststuff -->
 
229
 
230
  <div class="tablenav ngg-tablenav">
231
  <?php if ( $page_links ) : ?>
@@ -252,7 +288,7 @@ jQuery(document).ready( function() {
252
  </select>
253
  <input class="button-secondary" type="submit" name="showThickbox" value="<?php _e("OK",'nggallery')?>" onclick="if ( !checkSelected() ) return false;" />
254
 
255
- <?php if ($ngg->options['galSort'] == "sortorder") { ?>
256
  <input class="button-secondary" type="submit" name="sortGallery" value="<?php _e("Sort gallery",'nggallery')?>" />
257
  <?php } ?>
258
 
@@ -276,19 +312,23 @@ jQuery(document).ready( function() {
276
  <?php
277
  if($picturelist) {
278
 
279
- $thumbsize = '';
280
- if ($ngg->options['thumbfix']) {
281
- $thumbsize = 'width="'.$ngg->options['thumbwidth'].'" height="'.$ngg->options['thumbheight'].'"';
282
- }
283
 
284
- if ($ngg->options['thumbcrop']) {
285
- $thumbsize = 'width="'.$ngg->options['thumbwidth'].'" height="'.$ngg->options['thumbwidth'].'"';
286
- }
287
 
288
  foreach($picturelist as $picture) {
289
-
 
 
 
 
 
290
  $pid = (int) $picture->pid;
291
- $alternate = ( $alternate == 'alternate' ) ? '' : 'alternate';
292
  $exclude = ( $picture->exclude ) ? 'checked="checked"' : '';
293
  $date = mysql2date(get_option('date_format'), $picture->imagedate);
294
  $time = mysql2date(get_option('time_format'), $picture->imagedate);
@@ -386,9 +426,12 @@ if($picturelist) {
386
  </tr>
387
  <?php
388
  }
389
- } else {
390
- echo '<tr><td colspan="' . $num_columns . '" align="center"><strong>'.__('No entries found','nggallery').'</strong></td></tr>';
391
  }
 
 
 
 
 
392
  ?>
393
 
394
  </tbody>
6
  // *** show picture list
7
  global $wpdb, $nggdb, $user_ID, $ngg;
8
 
9
+ // Look if its a search result
10
+ $is_search = isset ($_GET['s']) ? true : false;
11
 
12
+ if ($is_search) {
 
13
 
14
+ // fetch the imagelist
15
+ $picturelist = $ngg->manage_page->search_result;
16
+
17
+ // we didn't set a gallery or a pagination
18
+ $act_gid = 0;
 
 
 
 
 
 
 
 
19
  $_GET['paged'] = 1;
20
+ $page_links = false;
21
+
22
+ } else {
23
 
24
+ // GET variables
25
+ $act_gid = $ngg->manage_page->gid;
26
+
27
+ // Load the gallery metadata
28
+ $gallery = $nggdb->find_gallery($act_gid);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
29
 
30
+ if (!$gallery) {
31
+ nggGallery::show_error(__('Gallery not found.', 'nggallery'));
32
+ return;
33
+ }
34
+
35
+ // Check if you have the correct capability
36
+ if (!nggAdmin::can_manage_this_gallery($gallery->author)) {
37
+ nggGallery::show_error(__('Sorry, you have no access here', 'nggallery'));
38
+ return;
39
+ }
40
+
41
+ // look for pagination
42
+ if ( ! isset( $_GET['paged'] ) || $_GET['paged'] < 1 )
43
+ $_GET['paged'] = 1;
44
+
45
+ $start = ( $_GET['paged'] - 1 ) * 50;
46
+
47
+ // get picture values
48
+ $picturelist = $nggdb->get_gallery($act_gid, $ngg->options['galSort'], $ngg->options['galSortDir'], false, 50, $start );
49
+
50
+ // build pagination
51
+ $page_links = paginate_links( array(
52
+ 'base' => add_query_arg( 'paged', '%#%' ),
53
+ 'format' => '',
54
+ 'prev_text' => __('&laquo;'),
55
+ 'next_text' => __('&raquo;'),
56
+ 'total' => $nggdb->paged['max_objects_per_page'],
57
+ 'current' => $_GET['paged']
58
+ ));
59
+
60
+ // get the current author
61
+ $act_author_user = get_userdata( (int) $gallery->author );
62
+
63
+ }
64
+
65
+ // list all galleries
66
+ $gallerylist = $nggdb->find_all_galleries();
67
+
68
+ //get the columns
69
+ $gallery_columns = ngg_manage_gallery_columns();
70
+ $hidden_columns = get_hidden_columns('nggallery-manage-images');
71
+ $num_columns = count($gallery_columns) - count($hidden_columns);
72
+
73
  ?>
74
 
75
  <script type="text/javascript">
166
 
167
  <div class="wrap">
168
 
169
+ <?php if ($is_search) :?>
170
+ <h2><?php printf( __('Search results for &#8220;%s&#8221;', 'nggallery'), wp_specialchars( get_search_query() ) ); ?></h2>
171
+ <form class="search-form" action="" method="get">
172
+ <p class="search-box">
173
+ <label class="hidden" for="media-search-input"><?php _e( 'Search Images', 'nggallery' ); ?>:</label>
174
+ <input type="hidden" id="page-name" name="page" value="nggallery-manage-gallery" />
175
+ <input type="text" id="media-search-input" name="s" value="<?php the_search_query(); ?>" />
176
+ <input type="submit" value="<?php _e( 'Search Images', 'nggallery' ); ?>" class="button" />
177
+ </p>
178
+ </form>
179
+
180
+ <br style="clear: both;" />
181
+
182
+ <form id="updategallery" class="nggform" method="POST" action="<?php echo $ngg->manage_page->base_page . '&amp;mode=edit&amp;s=' . $_GET['s']; ?>" accept-charset="utf-8">
183
+ <?php wp_nonce_field('ngg_updategallery') ?>
184
+
185
+ <?php else :?>
186
  <h2><?php echo __ngettext( 'Gallery', 'Galleries', 1, 'nggallery' ); ?> : <?php echo nggGallery::i18n($gallery->title); ?></h2>
187
 
188
  <br style="clear: both;" />
261
  </div>
262
  </div>
263
  </div> <!-- poststuff -->
264
+ <?php endif; ?>
265
 
266
  <div class="tablenav ngg-tablenav">
267
  <?php if ( $page_links ) : ?>
288
  </select>
289
  <input class="button-secondary" type="submit" name="showThickbox" value="<?php _e("OK",'nggallery')?>" onclick="if ( !checkSelected() ) return false;" />
290
 
291
+ <?php if (($ngg->options['galSort'] == "sortorder") && (!$is_search) ) { ?>
292
  <input class="button-secondary" type="submit" name="sortGallery" value="<?php _e("Sort gallery",'nggallery')?>" />
293
  <?php } ?>
294
 
312
  <?php
313
  if($picturelist) {
314
 
315
+ $thumbsize = '';
316
+ $counter = 0;
317
+ if ($ngg->options['thumbfix'])
318
+ $thumbsize = 'width="' . $ngg->options['thumbwidth'] . '" height="' . $ngg->options['thumbheight'] . '"';
319
 
320
+ if ($ngg->options['thumbcrop'])
321
+ $thumbsize = 'width="' . $ngg->options['thumbwidth'] . '" height="' . $ngg->options['thumbwidth'] . '"';
 
322
 
323
  foreach($picturelist as $picture) {
324
+
325
+ //for search result we need to check the capatibiliy
326
+ if ( !nggAdmin::can_manage_this_gallery($picture->author) && $is_search )
327
+ continue;
328
+
329
+ $counter++;
330
  $pid = (int) $picture->pid;
331
+ $alternate = ( !isset($alternate) || $alternate == 'alternate' ) ? '' : 'alternate';
332
  $exclude = ( $picture->exclude ) ? 'checked="checked"' : '';
333
  $date = mysql2date(get_option('date_format'), $picture->imagedate);
334
  $time = mysql2date(get_option('time_format'), $picture->imagedate);
426
  </tr>
427
  <?php
428
  }
 
 
429
  }
430
+
431
+ // In the case you have no capaptibility to see the search result
432
+ if ( $counter==0 )
433
+ echo '<tr><td colspan="' . $num_columns . '" align="center"><strong>'.__('No entries found','nggallery').'</strong></td></tr>';
434
+
435
  ?>
436
 
437
  </tbody>
admin/manage.php CHANGED
@@ -8,14 +8,18 @@ class nggManageGallery {
8
  var $gid = false;
9
  var $pid = false;
10
  var $base_page = 'admin.php?page=nggallery-manage-gallery';
 
11
 
12
  // initiate the manage page
13
  function nggManageGallery() {
14
 
15
  // GET variables
16
- $this->gid = (int) $_GET['gid'];
17
- $this->pid = (int) $_GET['pid'];
18
- $this->mode = trim ($_GET['mode']);
 
 
 
19
 
20
  //Look for POST process
21
  if ( !empty($_POST) || !empty($_GET) )
@@ -44,10 +48,10 @@ class nggManageGallery {
44
 
45
  function processor() {
46
 
47
- global $wpdb, $ngg;
48
 
49
- if ($this->mode == 'delete') {
50
  // Delete a gallery
 
51
 
52
  check_admin_referer('ngg_editgallery');
53
 
@@ -80,21 +84,17 @@ class nggManageGallery {
80
  $this->mode = 'main'; // show mainpage
81
  }
82
 
83
- if ($this->mode == 'delpic') {
84
  // Delete a picture
 
85
  //TODO:Remove also Tag reference
86
  check_admin_referer('ngg_delpicture');
87
- $filename = $wpdb->get_var("SELECT filename FROM $wpdb->nggpictures WHERE pid = '$this->pid' ");
88
- if ($filename) {
89
- $gallerypath = $wpdb->get_var("SELECT path FROM $wpdb->nggallery WHERE gid = '$this->gid' ");
90
- if ($gallerypath){
91
- $thumb_folder = nggGallery::get_thumbnail_folder($gallerypath, FALSE);
92
- if ($ngg->options['deleteImg']) {
93
- @unlink(WINABSPATH . $gallerypath . '/thumbs/thumbs_' .$filename);
94
- @unlink(WINABSPATH . $gallerypath . '/' . $filename);
95
- }
96
- }
97
- $delete_pic = $wpdb->query("DELETE FROM $wpdb->nggpictures WHERE pid = $this->pid");
98
  }
99
  if($delete_pic)
100
  nggGallery::show_message( __('Picture','nggallery').' \''.$this->pid.'\' '.__('deleted successfully','nggallery') );
@@ -103,20 +103,11 @@ class nggManageGallery {
103
 
104
  }
105
 
 
106
  if (isset ($_POST['bulkaction']) && isset ($_POST['doaction'])) {
107
- // do bulk update
108
 
109
  check_admin_referer('ngg_updategallery');
110
 
111
- $gallerypath = $wpdb->get_var("SELECT path FROM $wpdb->nggallery WHERE gid = '$this->gid' ");
112
- $imageslist = array();
113
-
114
- if ( is_array($_POST['doaction']) ) {
115
- foreach ( $_POST['doaction'] as $imageID ) {
116
- $imageslist[] = $wpdb->get_var("SELECT filename FROM $wpdb->nggpictures WHERE pid = '$imageID' ");
117
- }
118
- }
119
-
120
  switch ($_POST['bulkaction']) {
121
  case 'no_action';
122
  // No action
@@ -136,19 +127,18 @@ class nggManageGallery {
136
  case 'delete_images':
137
  // Delete images
138
  if ( is_array($_POST['doaction']) ) {
139
- if ($gallerypath){
140
- $thumb_folder = nggGallery::get_thumbnail_folder($gallerypath, FALSE);
141
  foreach ( $_POST['doaction'] as $imageID ) {
142
- $filename = $wpdb->get_var("SELECT filename FROM $wpdb->nggpictures WHERE pid = '$imageID' ");
143
- if ($ngg->options['deleteImg']) {
144
- @unlink(WINABSPATH.$gallerypath.'/'.$thumb_folder.'/'. "thumbs_" .$filename);
145
- @unlink(WINABSPATH.$gallerypath.'/'.$filename);
146
- }
147
- $delete_pic = $wpdb->query("DELETE FROM $wpdb->nggpictures WHERE pid = $imageID");
 
 
148
  }
149
- }
150
- if($delete_pic)
151
- nggGallery::show_message(__('Pictures deleted successfully ',"nggallery"));
152
  }
153
  break;
154
  case 'import_meta':
@@ -297,6 +287,9 @@ class nggManageGallery {
297
  if ( isset ($_POST['sortGallery']) )
298
  $this->mode = 'sort';
299
 
 
 
 
300
  }
301
 
302
  function update_pictures() {
@@ -368,5 +361,19 @@ class nggManageGallery {
368
 
369
  return $wpdb->get_col( $query );
370
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
371
  }
372
  ?>
8
  var $gid = false;
9
  var $pid = false;
10
  var $base_page = 'admin.php?page=nggallery-manage-gallery';
11
+ var $search_result = false;
12
 
13
  // initiate the manage page
14
  function nggManageGallery() {
15
 
16
  // GET variables
17
+ if(isset($_GET['gid']))
18
+ $this->gid = (int) $_GET['gid'];
19
+ if(isset($_GET['pid']))
20
+ $this->pid = (int) $_GET['pid'];
21
+ if(isset($_GET['mode']))
22
+ $this->mode = trim ($_GET['mode']);
23
 
24
  //Look for POST process
25
  if ( !empty($_POST) || !empty($_GET) )
48
 
49
  function processor() {
50
 
51
+ global $wpdb, $ngg, $nggdb;
52
 
 
53
  // Delete a gallery
54
+ if ($this->mode == 'delete') {
55
 
56
  check_admin_referer('ngg_editgallery');
57
 
84
  $this->mode = 'main'; // show mainpage
85
  }
86
 
 
87
  // Delete a picture
88
+ if ($this->mode == 'delpic') {
89
  //TODO:Remove also Tag reference
90
  check_admin_referer('ngg_delpicture');
91
+ $image = $nggdb->find_image( $this->pid );
92
+ if ($image) {
93
+ if ($ngg->options['deleteImg']) {
94
+ @unlink($image->imagePath);
95
+ @unlink($image->thumbPath);
96
+ }
97
+ $delete_pic = $wpdb->query("DELETE FROM $wpdb->nggpictures WHERE pid = $image->pid");
 
 
 
 
98
  }
99
  if($delete_pic)
100
  nggGallery::show_message( __('Picture','nggallery').' \''.$this->pid.'\' '.__('deleted successfully','nggallery') );
103
 
104
  }
105
 
106
+ // do bulk update
107
  if (isset ($_POST['bulkaction']) && isset ($_POST['doaction'])) {
 
108
 
109
  check_admin_referer('ngg_updategallery');
110
 
 
 
 
 
 
 
 
 
 
111
  switch ($_POST['bulkaction']) {
112
  case 'no_action';
113
  // No action
127
  case 'delete_images':
128
  // Delete images
129
  if ( is_array($_POST['doaction']) ) {
 
 
130
  foreach ( $_POST['doaction'] as $imageID ) {
131
+ $image = $nggdb->find_image( $imageID );
132
+ if ($image) {
133
+ if ($ngg->options['deleteImg']) {
134
+ @unlink($image->imagePath);
135
+ @unlink($image->thumbPath);
136
+ }
137
+ $delete_pic = $wpdb->query("DELETE FROM $wpdb->nggpictures WHERE pid = $image->pid");
138
+ }
139
  }
140
+ if($delete_pic)
141
+ nggGallery::show_message(__('Pictures deleted successfully ', "nggallery"));
 
142
  }
143
  break;
144
  case 'import_meta':
287
  if ( isset ($_POST['sortGallery']) )
288
  $this->mode = 'sort';
289
 
290
+ if ( isset ($_GET['s']) )
291
+ $this->search_images();
292
+
293
  }
294
 
295
  function update_pictures() {
361
 
362
  return $wpdb->get_col( $query );
363
  }
364
+
365
+ function search_images() {
366
+ global $nggdb;
367
+
368
+ if ( empty($_GET['s']) )
369
+ return;
370
+ //on what ever reason I need to set again the query var
371
+ set_query_var('s', $_GET['s']);
372
+ $request = get_search_query();
373
+ // looknow for the images
374
+ $this->search_result = $nggdb->search_for_images( $request );
375
+ // show pictures page
376
+ $this->mode = 'edit';
377
+ }
378
  }
379
  ?>
admin/overview.php CHANGED
@@ -4,27 +4,61 @@ if(preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die('You
4
  /**
5
  * nggallery_admin_overview()
6
  *
7
- * Add the admin overview in wp2.7 style
8
  * @return mixed content
9
  */
10
- function nggallery_admin_overview() {
11
- ?>
12
- <div class="wrap ngg-wrap">
13
- <h2><?php _e('NextGEN Gallery Overview', 'nggallery') ?></h2>
14
- <div id="dashboard-widgets-wrap" class="ngg-overview">
15
- <div id="dashboard-widgets" class="metabox-holder">
16
- <div id="side-info-column" class="inner-sidebar">
17
- <?php do_meta_boxes('ngg_overview', 'right', ''); ?>
18
- </div>
19
- <div id="post-body" class="has-sidebar">
20
- <div id="dashboard-widgets-main-content" class="has-sidebar-content">
21
- <?php do_meta_boxes('ngg_overview', 'left', ''); ?>
 
 
 
 
 
 
22
  </div>
23
- </div>
24
- </div>
25
  </div>
26
- </div>
27
- <?php
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
28
  }
29
 
30
  /**
@@ -74,6 +108,51 @@ function ngg_overview_graphic_lib() {
74
  <?php
75
  }
76
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
77
  /**
78
  * Show the latest NextGEN Gallery news
79
  *
@@ -167,6 +246,7 @@ function ngg_overview_right_now() {
167
 
168
  add_meta_box('dashboard_right_now', __('Welcome to NextGEN Gallery !', 'nggallery'), 'ngg_overview_right_now', 'ngg_overview', 'left', 'core');
169
  add_meta_box('dashboard_primary', __('Latest News', 'nggallery'), 'ngg_overview_news', 'ngg_overview', 'right', 'core');
 
170
  add_meta_box('ngg_server', __('Server Settings', 'nggallery'), 'ngg_overview_server', 'ngg_overview', 'left', 'core');
171
  add_meta_box('ngg_gd_lib', __('Graphic Library', 'nggallery'), 'ngg_overview_graphic_lib', 'ngg_overview', 'right', 'core');
172
 
4
  /**
5
  * nggallery_admin_overview()
6
  *
7
+ * Add the admin overview the dashboard style
8
  * @return mixed content
9
  */
10
+ function nggallery_admin_overview() {
11
+
12
+ // new way since wp 2.8
13
+ if ( version_compare($GLOBALS['wp_version'], '2.7.999', '>') ) {
14
+ ?>
15
+ <div class="wrap ngg-wrap">
16
+ <h2><?php _e('NextGEN Gallery Overview', 'nggallery') ?></h2>
17
+ <div id="dashboard-widgets-wrap" class="ngg-overview">
18
+ <div id="dashboard-widgets" class="metabox-holder">
19
+ <div id="post-body">
20
+ <div id="dashboard-widgets-main-content">
21
+ <div class="postbox-container" style="width:49%;">
22
+ <?php do_meta_boxes('ngg_overview', 'left', ''); ?>
23
+ </div>
24
+ <div class="postbox-container" style="width:49%;">
25
+ <?php do_meta_boxes('ngg_overview', 'right', ''); ?>
26
+ </div>
27
+ </div>
28
  </div>
29
+ </div>
30
+ </div>
31
  </div>
32
+ <script type="text/javascript">
33
+ //<![CDATA[
34
+ jQuery(document).ready( function($) {
35
+ // postboxes setup
36
+ postboxes.add_postbox_toggles('ngg-overview');
37
+ });
38
+ //]]>
39
+ </script>
40
+ <?php
41
+
42
+ } else {
43
+
44
+ ?>
45
+ <div class="wrap ngg-wrap">
46
+ <h2><?php _e('NextGEN Gallery Overview', 'nggallery') ?></h2>
47
+ <div id="dashboard-widgets-wrap" class="ngg-overview">
48
+ <div id="dashboard-widgets" class="metabox-holder">
49
+ <div id="side-info-column" class="inner-sidebar">
50
+ <?php do_meta_boxes('ngg_overview', 'right', ''); ?>
51
+ </div>
52
+ <div id="post-body" class="has-sidebar">
53
+ <div id="dashboard-widgets-main-content" class="has-sidebar-content">
54
+ <?php do_meta_boxes('ngg_overview', 'left', ''); ?>
55
+ </div>
56
+ </div>
57
+ </div>
58
+ </div>
59
+ </div>
60
+ <?php
61
+ }
62
  }
63
 
64
  /**
108
  <?php
109
  }
110
 
111
+ /**
112
+ * Show the GD ibfos
113
+ *
114
+ * @return void
115
+ */
116
+ function ngg_overview_donators() {
117
+ global $ngg;
118
+
119
+ $i = 0;
120
+ $list = '';
121
+
122
+ $supporter = nggAdminPanel::get_remote_array($ngg->donators);
123
+
124
+ // Ensure that this is a array
125
+ if ( !is_array($supporter) )
126
+ return _e('Thanks to all donators...', 'nggallery');
127
+
128
+ $supporter = array_reverse($supporter);
129
+
130
+ foreach ($supporter as $name => $url) {
131
+ $i++;
132
+ if ($url)
133
+ $list .= "<li><a href=\"$url\">$name</a></li>\n";
134
+ else
135
+ $list .= "<li>$name</li>";
136
+ if ($i > 4)
137
+ break;
138
+ }
139
+
140
+ ?>
141
+ <div id="dashboard_server_settings" class="dashboard-widget-holder">
142
+ <div class="ngg-dashboard-widget">
143
+ <div class="dashboard-widget-content">
144
+ <ul class="settings">
145
+ <?php echo $list; ?>
146
+ </ul>
147
+ <p class="textright">
148
+ <a class="button" href="admin.php?page=nggallery-about#donators"><?php _e('View all', 'nggallery'); ?></a>
149
+ </p>
150
+ </div>
151
+ </div>
152
+ </div>
153
+ <?php
154
+ }
155
+
156
  /**
157
  * Show the latest NextGEN Gallery news
158
  *
246
 
247
  add_meta_box('dashboard_right_now', __('Welcome to NextGEN Gallery !', 'nggallery'), 'ngg_overview_right_now', 'ngg_overview', 'left', 'core');
248
  add_meta_box('dashboard_primary', __('Latest News', 'nggallery'), 'ngg_overview_news', 'ngg_overview', 'right', 'core');
249
+ add_meta_box('ngg_lastdonators', __('Recent donators', 'nggallery'), 'ngg_overview_donators', 'ngg_overview', 'left', 'core');
250
  add_meta_box('ngg_server', __('Server Settings', 'nggallery'), 'ngg_overview_server', 'ngg_overview', 'left', 'core');
251
  add_meta_box('ngg_gd_lib', __('Graphic Library', 'nggallery'), 'ngg_overview_graphic_lib', 'ngg_overview', 'right', 'core');
252
 
admin/settings.php CHANGED
@@ -66,7 +66,7 @@ if(preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die('You
66
  ?>
67
  <script type="text/javascript">
68
  jQuery(document).ready(function(){
69
- jQuery('#slider > ul').tabs({ fxFade: true, fxSpeed: 'fast' });
70
  });
71
 
72
  function insertcode(value) {
@@ -431,7 +431,7 @@ if(preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die('You
431
  }
432
  ?>
433
  </select><br /><span class="setting-description">
434
- <?php if ( !function_exists(ImageTTFBBox) )
435
  _e('This function will not work, cause you need the FreeType library','nggallery');
436
  else
437
  _e('You can upload more fonts in the folder <strong>nggallery/fonts</strong>','nggallery'); ?>
66
  ?>
67
  <script type="text/javascript">
68
  jQuery(document).ready(function(){
69
+ jQuery('#slider').tabs({ fxFade: true, fxSpeed: 'fast' });
70
  });
71
 
72
  function insertcode(value) {
431
  }
432
  ?>
433
  </select><br /><span class="setting-description">
434
+ <?php if ( !function_exists('ImageTTFBBox') )
435
  _e('This function will not work, cause you need the FreeType library','nggallery');
436
  else
437
  _e('You can upload more fonts in the folder <strong>nggallery/fonts</strong>','nggallery'); ?>
admin/tinymce/tinymce.php CHANGED
@@ -89,7 +89,7 @@ class add_nextgen_button {
89
  * @return $versio
90
  */
91
  function change_tinymce_version($version) {
92
- $version = $version + $internalVersion;
93
  return $version;
94
  }
95
 
89
  * @return $versio
90
  */
91
  function change_tinymce_version($version) {
92
+ $version = $version + $this->internalVersion;
93
  return $version;
94
  }
95
 
admin/tinymce/window.php CHANGED
@@ -26,9 +26,9 @@ global $wpdb;
26
  <form name="NextGEN" action="#">
27
  <div class="tabs">
28
  <ul>
29
- <li id="gallery_tab" class="current"><span><a href="javascript:mcTabs.displayTab('gallery_tab','gallery_panel');" onmousedown="return false;"><?php _e("Gallery", 'nggallery'); ?></a></span></li>
30
- <li id="album_tab"><span><a href="javascript:mcTabs.displayTab('album_tab','album_panel');" onmousedown="return false;"><?php _e("Album", 'nggallery'); ?></a></span></li>
31
- <li id="singlepic_tab"><span><a href="javascript:mcTabs.displayTab('singlepic_tab','singlepic_panel');" onmousedown="return false;"><?php _e("Picture", 'nggallery'); ?></a></span></li>
32
  </ul>
33
  </div>
34
 
26
  <form name="NextGEN" action="#">
27
  <div class="tabs">
28
  <ul>
29
+ <li id="gallery_tab" class="current"><span><a href="javascript:mcTabs.displayTab('gallery_tab','gallery_panel');" onmousedown="return false;"><?php echo __ngettext( 'Gallery', 'Galleries', 1, 'nggallery' ) ?></a></span></li>
30
+ <li id="album_tab"><span><a href="javascript:mcTabs.displayTab('album_tab','album_panel');" onmousedown="return false;"><?php echo __ngettext( 'Album', 'Albums', 1, 'nggallery' ) ?></a></span></li>
31
+ <li id="singlepic_tab"><span><a href="javascript:mcTabs.displayTab('singlepic_tab','singlepic_panel');" onmousedown="return false;"><?php _e('Picture', 'nggallery'); ?></a></span></li>
32
  </ul>
33
  </div>
34
 
admin/upgrade.php CHANGED
@@ -73,6 +73,20 @@ function ngg_upgrade() {
73
  ngg_maybe_add_column( $wpdb->nggpictures, 'imagedate', "DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00' AFTER alttext");
74
  }
75
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
76
  // update now the database
77
  update_option( "ngg_db_version", NGG_DBVERSION );
78
  echo __('finished', 'nggallery') . "<br />\n";
@@ -151,7 +165,7 @@ function ngg_convert_filestructure() {
151
  $gallerypath = WINABSPATH.$gallery->path;
152
 
153
  // old mygallery check, convert the wrong folder/ file name now
154
- if (@is_dir($gallerypath .'/tumbs')) {
155
  if ( !@rename($gallerypath . '/tumbs' , $gallerypath .'/thumbs') )
156
  $errors[] = $gallery->path . '/thumbs';
157
  // read list of images
@@ -281,7 +295,6 @@ function nggallery_upgrade_page() {
281
  * @return void
282
  */
283
  function nggallery_start_upgrade($filepath) {
284
- global $wpdb;
285
  ?>
286
  <div class="wrap">
287
  <h2><?php _e('Upgrade NextGEN Gallery', 'nggallery') ;?></h2>
73
  ngg_maybe_add_column( $wpdb->nggpictures, 'imagedate', "DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00' AFTER alttext");
74
  }
75
 
76
+ // v0.97 -> v1.3.0
77
+ if (version_compare($installed_ver, '1.3.0', '<')) {
78
+ ngg_maybe_add_column( $wpdb->nggpictures, 'post_id', "BIGINT(20) DEFAULT '0' NOT NULL AFTER pid");
79
+ ngg_maybe_add_column( $wpdb->nggpictures, 'meta_data', "LONGTEXT AFTER sortorder");
80
+ $wpdb->query("ALTER TABLE " . $wpdb->nggpictures . " ADD INDEX post_id ( post_id )");
81
+ }
82
+
83
+ // v1.3.0 -> v1.3.1
84
+ if (version_compare($installed_ver, '1.3.1', '<')) {
85
+ // add description and previewpic for the ablum itself
86
+ ngg_maybe_add_column( $wpdb->nggalbum, 'previewpic', "BIGINT(20) DEFAULT '0' NOT NULL AFTER name");
87
+ ngg_maybe_add_column( $wpdb->nggalbum, 'albumdesc', "MEDIUMTEXT NULL AFTER previewpic");
88
+ }
89
+
90
  // update now the database
91
  update_option( "ngg_db_version", NGG_DBVERSION );
92
  echo __('finished', 'nggallery') . "<br />\n";
165
  $gallerypath = WINABSPATH.$gallery->path;
166
 
167
  // old mygallery check, convert the wrong folder/ file name now
168
+ if (@is_dir($gallerypath . '/tumbs')) {
169
  if ( !@rename($gallerypath . '/tumbs' , $gallerypath .'/thumbs') )
170
  $errors[] = $gallery->path . '/thumbs';
171
  // read list of images
295
  * @return void
296
  */
297
  function nggallery_start_upgrade($filepath) {
 
298
  ?>
299
  <div class="wrap">
300
  <h2><?php _e('Upgrade NextGEN Gallery', 'nggallery') ;?></h2>
changelog.txt CHANGED
@@ -1,6 +1,20 @@
1
  NextGEN Gallery
2
  by Alex Rabe & NextGEN DEV Team
3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4
  V1.2.1 - 22.03.2009
5
  - NEW : Support for IE8 Web Slices in widgets
6
  - NEW : Add filter ngg_image_object
1
  NextGEN Gallery
2
  by Alex Rabe & NextGEN DEV Team
3
 
4
+ V1.3.0 - 07.06.2009
5
+ - NEW : Subalbum support
6
+ - NEW : Search for images in the admin tab
7
+ - NEW : Add new gallery also in manage tab
8
+ - NEW : AJAX support for Imagebrowser and gallery navigation (THX to Anty)
9
+ - NEW : Added zip upload via URL (THX to Juan Jose Galvez)
10
+ - Added : jQuery Multiple File Upload Plugin v1.44
11
+ - Added : SWFUpload V2.2.0
12
+ - Changed : Remove extension for Alttext during first import
13
+ - Changed : Meta tag added via wp_head hook (THX to Viper)
14
+ - Bugfix : Correct various PHP notice messages
15
+ - Bugfix : Typo fix in custom fields for ngg_gal_ImageBrowser
16
+ - Bugfix : Avoid upload of images in gallery without correct capability
17
+
18
  V1.2.1 - 22.03.2009
19
  - NEW : Support for IE8 Web Slices in widgets
20
  - NEW : Add filter ngg_image_object
images/ajax-loader.gif ADDED
Binary file
js/ngg.js ADDED
@@ -0,0 +1,180 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ jQuery("document").ready(function(){
2
+ // register ajax gallery-navigation listeners
3
+ jQuery("a.page-numbers").click(function(e) {
4
+ return ngg_ajax_navigation(e, this);
5
+ });
6
+ jQuery("a.prev").click(function(e) {
7
+ return ngg_ajax_navigation(e, this);
8
+ });
9
+ jQuery("a.next").click(function(e) {
10
+ return ngg_ajax_navigation(e, this);
11
+ });
12
+
13
+ // register ajax browser-navigation listeners
14
+ jQuery("a.ngg-browser-next").click(function(e) {
15
+ return ngg_ajax_browser_navigation(e, this);
16
+ });
17
+ jQuery("a.ngg-browser-prev").click(function(e) {
18
+ return ngg_ajax_browser_navigation(e, this);
19
+ });
20
+ });
21
+
22
+ function ngg_ajax_navigation(e, obj) {
23
+ // try to find page number
24
+ var pageNumber = 0;
25
+ if (jQuery(obj).hasClass("page-numbers")) {
26
+ pageNumber = jQuery(obj).contents()[0].data;
27
+ } else if (jQuery(obj).hasClass("prev")) {
28
+ pageNumber = jQuery(obj).attr("id").substr(9);
29
+ } else if (jQuery(obj).hasClass("next")) {
30
+ pageNumber = jQuery(obj).attr("id").substr(9);
31
+ }
32
+
33
+ // try to find gallery number by checking the parents ID until we find a matching one
34
+ var currentNode = obj;
35
+ while (null != currentNode.parentNode && !jQuery.nodeName(currentNode.parentNode, "body") && "ngg-gallery-" != jQuery(currentNode.parentNode).attr("id").substring(0, 12)) {
36
+ currentNode = currentNode.parentNode;
37
+ }
38
+
39
+ if (jQuery(currentNode.parentNode).attr("id")) {
40
+ var gallery = jQuery(currentNode.parentNode);
41
+
42
+ // we found a gallery, let's extract the post id & gallery id
43
+ var payload = gallery.attr("id").substring(12);
44
+ var separatorPosition = parseInt(payload.indexOf("-"));
45
+
46
+ var galleryId = payload.substr(0, separatorPosition);
47
+ var postId = payload.substr(separatorPosition + 1);
48
+
49
+ ngg_show_loading(e);
50
+
51
+ // load gallery content
52
+ jQuery.get(ngg_ajax.path + "nggajax.php", {p: postId, galleryid: galleryId, nggpage: pageNumber, type: "gallery"}, function (data, textStatus) {
53
+
54
+ // delete old content
55
+ gallery.children().remove();
56
+
57
+ // add new content
58
+ gallery.replaceWith(data);
59
+
60
+ // add ajax-navigation, again
61
+ jQuery("document").ready(function(){
62
+ // remove old listeners to avoid double-clicks
63
+ jQuery("a.page-numbers").unbind("click");
64
+ jQuery("a.prev").unbind("click");
65
+ jQuery("a.next").unbind("click");
66
+
67
+ // add shutter-listeners again
68
+ shutterReloaded.init('sh');
69
+
70
+ jQuery("a.page-numbers").click(function(e) {
71
+ return ngg_ajax_navigation(e, this);
72
+ });
73
+ jQuery("a.prev").click(function(e) {
74
+ return ngg_ajax_navigation(e, this);
75
+ });
76
+ jQuery("a.next").click(function(e) {
77
+ return ngg_ajax_navigation(e, this);
78
+ });
79
+
80
+ ngg_remove_loading();
81
+ });
82
+ });
83
+
84
+ // deactivate HTML link
85
+ return false;
86
+ }
87
+
88
+ // an error occurred, use traditional HTML link
89
+ return true;
90
+ };
91
+
92
+ function ngg_ajax_browser_navigation(e, obj) {
93
+
94
+
95
+ // try to find gallery number
96
+ if ("ngg-prev-" == jQuery(obj).attr("id").substr(0, 9) || "ngg-next-" == jQuery(obj).attr("id").substr(0, 9)) {
97
+
98
+ // extract the image-id
99
+ var imageNumber = jQuery(obj).attr("id").substr(9);
100
+
101
+ // find the image-browser-container
102
+ var currentNode = obj;
103
+ while (null != currentNode.parentNode && !jQuery.nodeName(currentNode.parentNode, "body") && !jQuery(currentNode.parentNode).hasClass("ngg-imagebrowser")) {
104
+ currentNode = currentNode.parentNode;
105
+ }
106
+
107
+ if (jQuery(currentNode.parentNode).hasClass("ngg-imagebrowser")) {
108
+ var gallery = jQuery(currentNode.parentNode);
109
+
110
+ // let's extract the post id & gallery id
111
+ var payload = gallery.attr("id").substring(17);
112
+ var separatorPosition = parseInt(payload.indexOf("-"));
113
+
114
+ var galleryId = payload.substr(0, separatorPosition);
115
+ var postId = payload.substr(separatorPosition + 1);
116
+
117
+ ngg_show_loading(e);
118
+
119
+ // get content
120
+ jQuery.get(ngg_ajax.path + "nggajax.php", {p: postId, galleryid: galleryId, pid: imageNumber, type: "browser"}, function (data, textStatus) {
121
+ // delete old content
122
+ gallery.children().remove();
123
+
124
+ // add new content
125
+ gallery.replaceWith(data);
126
+
127
+ // add ajax-navigation, again
128
+ jQuery("document").ready(function(){
129
+ // remove old listeners to avoid double-clicks
130
+ jQuery("a.ngg-browser-next").unbind("click");
131
+ jQuery("a.ngg-browser-prev").unbind("click");
132
+
133
+ // add shutter-listeners again
134
+ shutterReloaded.init('sh');
135
+
136
+ // register ajax browser-navigation listeners
137
+ jQuery("a.ngg-browser-next").click(function(e) {
138
+ return ngg_ajax_browser_navigation(e, this);
139
+ });
140
+ jQuery("a.ngg-browser-prev").click(function(e) {
141
+ return ngg_ajax_browser_navigation(e, this);
142
+ });
143
+
144
+ ngg_remove_loading();
145
+ });
146
+ });
147
+
148
+ // deactivate HTML link
149
+ return false;
150
+ }
151
+ }
152
+
153
+ return true;
154
+ }
155
+
156
+ var loadingImage;
157
+ function ngg_show_loading(obj) {
158
+ loadingImage = jQuery(document.createElement("img")).attr("src", ngg_ajax.path + "images/ajax-loader.gif").attr("alt", ngg_ajax.loading);
159
+
160
+ jQuery("body").append(loadingImage);
161
+
162
+ jQuery(loadingImage).css({
163
+ position: "absolute",
164
+ top: (obj.pageY + 15) + "px",
165
+ left: (obj.pageX + 15) + "px"
166
+ });
167
+
168
+ jQuery(document).mousemove(function(e) {
169
+ loadingImage.css({
170
+ top: (e.pageY + 15) + "px",
171
+ left: (e.pageX + 15) + "px"
172
+ });
173
+ });
174
+ }
175
+
176
+ function ngg_remove_loading() {
177
+ jQuery(document).unbind("mousemove");
178
+
179
+ jQuery(loadingImage).remove();
180
+ }
lang/nggallery-de_DE.mo CHANGED
Binary file
lang/nggallery-de_DE.po CHANGED
@@ -2,8 +2,8 @@ msgid ""
2
  msgstr ""
3
  "Project-Id-Version: NextGEN Gallery\n"
4
  "Report-Msgid-Bugs-To: \n"
5
- "POT-Creation-Date: 2009-03-21 13:53+0100\n"
6
- "PO-Revision-Date: 2009-03-21 13:54+0100\n"
7
  "Last-Translator: Alex Rabe\n"
8
  "Language-Team: Alex Rabe\n"
9
  "MIME-Version: 1.0\n"
@@ -18,53 +18,57 @@ msgstr ""
18
  "X-Poedit-SearchPath-0: .\n"
19
  "X-Poedit-SearchPath-1: ..\n"
20
 
21
- #: ../nggallery.php:156
22
  msgid "Sorry, NextGEN Gallery works only with a Memory Limit of 16 MB higher"
23
  msgstr "Tut mir leid, aber NextGEN Galerie benötigt minimum 16MB Speicher (Memory Limit) oder mehr"
24
 
25
- #: ../nggallery.php:181
26
  msgid "Picture tag"
27
  msgstr "Bilder Stichwort"
28
 
29
- #: ../nggallery.php:182
30
  msgid "Picture tag: %2$l."
31
  msgstr "Bilder Stichwort: %2$l."
32
 
33
- #: ../nggallery.php:183
34
  msgid "Separate picture tags with commas."
35
  msgstr "Trenne Stichwörter mittels Komma"
36
 
37
- #: ../nggallery.php:276
38
  msgid "L O A D I N G"
39
- msgstr "B I T T E W A R T E N"
40
 
41
- #: ../nggallery.php:277
42
  msgid "Click to Close"
43
  msgstr "Klicken zum Schliessen "
44
 
 
 
 
 
45
  #: ../nggfunctions.php:37
46
  msgid "The <a href=\"http://www.macromedia.com/go/getflashplayer\">Flash Player</a> and <a href=\"http://www.mozilla.com/firefox/\">a browser with Javascript support</a> are needed.."
47
  msgstr "Es wird der <a href=\"http://www.macromedia.com/go/getflashplayer\">Adobe Flash Player</a> benötigt und <a href=\"http://www.mozilla.com/firefox/\">im Browser muss Javascript</a> aktiviert sein.."
48
 
49
  #: ../nggfunctions.php:101
50
- #: ../nggfunctions.php:437
51
  msgid "[Gallery not found]"
52
  msgstr "[Galerie nicht gefunden]"
53
 
54
- #: ../nggfunctions.php:292
55
  msgid "[Album not found]"
56
  msgstr "[Album nicht gefunden]"
57
 
58
- #: ../nggfunctions.php:540
59
  msgid "[SinglePic not found]"
60
  msgstr "[Bild nicht gefunden]"
61
 
62
- #: ../nggfunctions.php:665
63
  msgid "Related images for"
64
  msgstr "Verwandte Bilder von"
65
 
66
- #: ../nggfunctions.php:700
67
- #: ../admin/admin.php:32
68
  msgid "Overview"
69
  msgstr "Übersicht"
70
 
@@ -72,119 +76,119 @@ msgstr "Übersicht"
72
  msgid "Copyright notes / Credits"
73
  msgstr "Copyright Hinweise / Credits"
74
 
75
- #: ../admin/about.php:10
76
  msgid "NextGEN DEV Team"
77
  msgstr "NextGEN DEV Team"
78
 
79
- #: ../admin/about.php:11
80
  msgid "This plugin is primarily developed, maintained, supported, documented by"
81
  msgstr "Dieses Plugin wird hauptsächlich entwickelt, dokumentiert und supportet von"
82
 
83
- #: ../admin/about.php:11
84
  msgid "There are many other folks who have made contributions to this project :"
85
  msgstr "Folgende Personen haben die Entwicklung bisher unterstützt :"
86
 
87
- #: ../admin/about.php:13
88
  msgid "Contributors / Tribute to"
89
  msgstr "Anerkennung / Hinweise"
90
 
91
- #: ../admin/about.php:14
92
  msgid "If you study the code of this plugin, you will find out that we mixed a lot of good already existing code and ideas together."
93
  msgstr "Falls Du Dir den Sourcecode dieses Plugins ansiehst wirst Du merken, das wir verschiedene gute Scripte sowie Ideen verwendet haben."
94
 
95
- #: ../admin/about.php:15
96
  msgid "So, we would like to thank the following people for their pioneer work (without this work it's impossible to create such a plugin so fast)"
97
  msgstr "Wir möchten folgenden Menschen für Ihre Pionier-Arbeit danken (ohne diese Vorleistung wäre es unmöglich ein Plugin so schnell zu entwickeln)"
98
 
99
- #: ../admin/about.php:17
100
  msgid "for their great documented code"
101
  msgstr "für Ihren großartig dokumentierten Code"
102
 
103
- #: ../admin/about.php:18
104
  msgid "for jQuery, which is the best Web2.0 framework"
105
  msgstr "für jQuery, das Beste Web 2.0 Framework"
106
 
107
- #: ../admin/about.php:19
108
  msgid "for the fantastic PHP Thumbnail Class"
109
  msgstr "für die fantastische PHP Thumbnail Klasse"
110
 
111
- #: ../admin/about.php:20
112
  msgid "for PclZip , a PHP library that manage ZIP archives"
113
  msgstr "für PclZip, eine ZIP PHP Library"
114
 
115
- #: ../admin/about.php:21
116
  msgid "for a lot of very useful plugins and ideas"
117
  msgstr "für viele nützliche Plugins und Ideen"
118
 
119
- #: ../admin/about.php:22
120
  msgid "for Shutter Reloaded, a real lightweight image effect"
121
  msgstr "für Shutter Reloaded, ein wirklich smarten Bildeffekt"
122
 
123
- #: ../admin/about.php:23
124
  msgid "for the best Media Flash Scripts on earth"
125
  msgstr "für die besten Media Flash Scripte"
126
 
127
- #: ../admin/about.php:24
128
  msgid "for the Fugue Iconset"
129
  msgstr "für das Fugue Iconset"
130
 
131
- #: ../admin/about.php:25
132
  msgid "for the Watermark plugin"
133
  msgstr "für das Wasserzeichen Plugin"
134
 
135
- #: ../admin/about.php:27
136
  msgid "If you didn't find your name on this list and there is some code which I integrate in my plugin, don't hesitate to send me a mail."
137
  msgstr "Falls Du deinen Namen nicht auf dieser Liste findest und es aber Code gibt, den ich in meinem Plugin verwendet habe, so schicken mir bitte sofort eine EMail."
138
 
139
- #: ../admin/about.php:28
140
  msgid "How to support ?"
141
  msgstr "Unterstützung / Hilfe"
142
 
143
- #: ../admin/about.php:29
144
  msgid "There exist several ways to contribute, help or support us in this work. Non of them are mandatory."
145
  msgstr "Es existieren verschiedene Möglichkeiten diese Arbeit zu unterstützen."
146
 
147
- #: ../admin/about.php:31
148
  msgid "Send us bugfixes / code changes"
149
  msgstr "Schicke uns Verbesserungen / Bugfixes"
150
 
151
- #: ../admin/about.php:31
152
  msgid "The most motivated support for this plugin are your ideas and brain work"
153
  msgstr "Der beste Support für dieses Plugin sind Deine Ideen und Gedanken"
154
 
155
- #: ../admin/about.php:32
156
  msgid "Translate the plugin"
157
  msgstr "Übersetze das Plugin"
158
 
159
- #: ../admin/about.php:32
160
  msgid "To help people to work with this plugin, I would like to have it in all available languages"
161
  msgstr "Um jedem das Arbeiten mit diesem Plugin zu vereinfachen, würde ich es gerne in allen möglichen Sprachen anbieten"
162
 
163
- #: ../admin/about.php:33
164
  msgid "Donate the work via paypal"
165
  msgstr "Zeig Dich für diese Arbeit per PayPal dankbar"
166
 
167
- #: ../admin/about.php:44
168
  msgid "No doubt a very useful and easy motivation :-)"
169
  msgstr "Kein Zweifel, eine schöne und einfache Motivationshilfe"
170
 
171
- #: ../admin/about.php:46
172
  msgid "Place a link to the plugin in your blog/webpage"
173
  msgstr "Setze einen Link zu diesem Plugin auf Deinen Blog"
174
 
175
- #: ../admin/about.php:46
176
  msgid "Yes, share and trackback is also a good support for this work "
177
  msgstr "Natürlich sind Trackbacks und Links auch ein guter Support für diese Arbeit"
178
 
179
- #: ../admin/about.php:48
180
  msgid "Thanks!"
181
  msgstr "Vielen Dank!"
182
 
183
- #: ../admin/about.php:49
184
  msgid "We would like to thank this people which support us in the work :"
185
  msgstr "Ich möchte mich bei diesen Menschen für Ihre Unterstützung bedanken:"
186
 
187
- #: ../admin/about.php:143
188
  msgid "and all donators..."
189
  msgstr "und allen anderen Spendern..."
190
 
@@ -194,8 +198,8 @@ msgid "Upload failed!"
194
  msgstr "Upload fehlgeschlagen!"
195
 
196
  #: ../admin/addgallery.php:58
197
- #: ../admin/functions.php:568
198
- #: ../admin/functions.php:658
199
  msgid "No gallery selected !"
200
  msgstr "Keine Galerie ausgewählt !"
201
 
@@ -213,12 +217,13 @@ msgid "Browse..."
213
  msgstr "Durchsuche..."
214
 
215
  #: ../admin/addgallery.php:126
216
- #: ../admin/addgallery.php:282
217
  msgid "Upload images"
218
  msgstr "Bilder hochladen"
219
 
220
  #: ../admin/addgallery.php:174
221
  #: ../admin/addgallery.php:186
 
222
  msgid "Add new gallery"
223
  msgstr "Neue Galerie erstellen"
224
 
@@ -228,24 +233,27 @@ msgid "Upload a Zip-File"
228
  msgstr "Zip-Datei hochladen"
229
 
230
  #: ../admin/addgallery.php:179
231
- #: ../admin/addgallery.php:237
232
  msgid "Import image folder"
233
  msgstr "Bilder-Verzeichnis importieren"
234
 
235
  #: ../admin/addgallery.php:181
236
- #: ../admin/addgallery.php:254
237
  msgid "Upload Images"
238
  msgstr "Bilder hochladen"
239
 
240
  #: ../admin/addgallery.php:191
 
241
  msgid "New Gallery"
242
  msgstr "Neue Galerie"
243
 
244
  #: ../admin/addgallery.php:194
 
245
  msgid "Create a new , empty gallery below the folder"
246
  msgstr "Erstelle eine neue, leere Galerie unter dem Verzeichnis"
247
 
248
  #: ../admin/addgallery.php:196
 
249
  msgid "Allowed characters for file and folder names are"
250
  msgstr "Erlaubte Zeichen für die Datei- und Verzeichnisnamen sind"
251
 
@@ -261,536 +269,593 @@ msgstr "Wähle Zip-Datei"
261
  msgid "Upload a zip file with images"
262
  msgstr "Lade eine Zip-Datei mit Bildern hoch"
263
 
264
- #: ../admin/addgallery.php:215
265
- #: ../admin/addgallery.php:263
 
 
 
 
 
 
 
 
266
  msgid "in to"
267
  msgstr "in"
268
 
269
- #: ../admin/addgallery.php:217
270
  msgid "a new gallery"
271
  msgstr "eine neue Galerie"
272
 
273
- #: ../admin/addgallery.php:226
274
  msgid "Note : The upload limit on your server is "
275
  msgstr "Hinweis : Das Upload-Limit auf dem Server beträgt "
276
 
277
- #: ../admin/addgallery.php:230
278
  msgid "Start upload"
279
  msgstr "Upload starten"
280
 
281
- #: ../admin/addgallery.php:242
282
  msgid "Import from Server path:"
283
  msgstr "Importieren aus Server-Pfad:"
284
 
285
- #: ../admin/addgallery.php:245
286
  msgid " Please note : For safe-mode = ON you need to add the subfolder thumbs manually"
287
  msgstr "Achtung : Da der Safe-Mode (PHP.INI) eingeschaltet ist, mußt Du das Unterverzeichnis für die Vorschaubilder (\"thumbs\") manuell (per FTP) anlegen"
288
 
289
- #: ../admin/addgallery.php:248
290
  msgid "Import folder"
291
  msgstr "Verzeichnis importieren"
292
 
293
- #: ../admin/addgallery.php:259
294
  msgid "Upload image"
295
  msgstr "Bild hochladen"
296
 
297
- #: ../admin/addgallery.php:265
298
  msgid "Choose gallery"
299
  msgstr "Wähle Galerie"
300
 
301
- #: ../admin/addgallery.php:278
302
  msgid "The batch upload requires Adobe Flash 10, disable it if you have problems"
303
  msgstr "Das Batch-Upload benötigt Adbode Flash 10, wenn es Probleme gibt deaktiviere es besser."
304
 
305
- #: ../admin/addgallery.php:278
306
  msgid "Disable flash upload"
307
  msgstr "Deaktiviere Batch-Upload"
308
 
309
- #: ../admin/addgallery.php:280
310
  msgid "Upload multiple files at once by ctrl/shift-selecting in dialog"
311
  msgstr "Wähle im Dialog mit Ctrl/Shift mehrere Bilder gleichzeitig aus."
312
 
313
- #: ../admin/addgallery.php:280
314
  msgid "Enable flash based upload"
315
  msgstr "Aktiviere Flash Batch Upload"
316
 
317
- #: ../admin/admin.php:31
318
- #: ../admin/admin.php:204
319
- #: ../admin/admin.php:272
320
- #: ../admin/functions.php:82
321
- #: ../admin/functions.php:145
322
- #: ../admin/manage-images.php:151
323
- #: ../admin/manage.php:78
324
  msgid "Gallery"
325
  msgid_plural "Galleries"
326
  msgstr[0] "Galerie"
327
  msgstr[1] "Galerien"
328
 
329
- #: ../admin/admin.php:33
330
  msgid "Add Gallery / Images"
331
  msgstr "Galerie / Bilder hinzufügen"
332
 
333
- #: ../admin/admin.php:34
334
  msgid "Manage Gallery"
335
  msgstr "Galerie verwalten"
336
 
337
- #: ../admin/admin.php:35
338
  msgid "Album"
339
  msgid_plural "Albums"
340
  msgstr[0] "Album"
341
  msgstr[1] "Alben"
342
 
343
- #: ../admin/admin.php:36
344
  msgid "Tags"
345
  msgstr "Stichwörter"
346
 
347
- #: ../admin/admin.php:37
348
  msgid "Options"
349
  msgstr "Optionen"
350
 
351
- #: ../admin/admin.php:39
352
  msgid "Style"
353
  msgstr "Style"
354
 
355
- #: ../admin/admin.php:40
356
  msgid "Setup Gallery"
357
  msgstr "Galerie Setup"
358
 
359
- #: ../admin/admin.php:40
360
  msgid "Setup"
361
  msgstr "Setup"
362
 
363
- #: ../admin/admin.php:42
364
  msgid "Roles"
365
  msgstr "Zugriff"
366
 
367
- #: ../admin/admin.php:43
368
  msgid "About this Gallery"
369
  msgstr "Über diese Galerie"
370
 
371
- #: ../admin/admin.php:43
372
  msgid "About"
373
  msgstr "Über"
374
 
375
- #: ../admin/admin.php:45
376
  msgid "NextGEN Gallery"
377
  msgstr "NextGEN Gallery"
378
 
379
- #: ../admin/admin.php:70
380
  msgid "A new version of NextGEN Gallery is available !"
381
  msgstr "Eine neue Version von NextGEN Gallery ist jetzt verfügbar"
382
 
383
- #: ../admin/admin.php:70
384
  msgid "Download here"
385
  msgstr "Hier downloaden"
386
 
387
- #: ../admin/admin.php:141
388
  msgid "You do not have the correct permission"
389
  msgstr "Du hast keine Zugriffsrechte"
390
 
391
- #: ../admin/admin.php:142
392
  msgid "Unexpected Error"
393
  msgstr "Unerwarteter Fehler"
394
 
395
- #: ../admin/admin.php:143
396
  msgid "A failure occurred"
397
  msgstr "Ein Fehler ist aufgetreten"
398
 
399
- #: ../admin/admin.php:208
400
  msgid "<a href=\"http://dpotter.net/Technical/2008/03/nextgen-gallery-review-introduction/\" target=\"_blank\">Introduction</a>"
401
  msgstr "<a href=\"http://www.curlyrob.de/curlyrob/?page_id=129\" target=\"_blank\">Einführung</a>"
402
 
403
- #: ../admin/admin.php:211
404
  msgid "<a href=\"http://dpotter.net/Technical/2008/03/nextgen-gallery-review-introduction/\" target=\"_blank\">Setup</a>"
405
  msgstr "<a href=\"http://www.curlyrob.de/curlyrob/?page_id=129\" target=\"_blank\">Setup</a>"
406
 
407
- #: ../admin/admin.php:214
408
  msgid "<a href=\"http://alexrabe.boelinger.com/wordpress-plugins/nextgen-gallery/languages/\" target=\"_blank\">Translation by alex rabe</a>"
409
  msgstr "<a href=\"http://alexrabe.boelinger.com/wordpress-plugins/nextgen-gallery/languages/\" target=\"_blank\">Unterstütze bei der Übersetzung</a>"
410
 
411
- #: ../admin/admin.php:217
412
  msgid "<a href=\"http://dpotter.net/Technical/2008/03/nextgen-gallery-review-introduction/\" target=\"_blank\">Roles / Capabilities</a>"
413
  msgstr "<a href=\"http://www.curlyrob.de/curlyrob/?page_id=129\" target=\"_blank\">Einführung</a>"
414
 
415
- #: ../admin/admin.php:220
416
  msgid "<a href=\"http://dpotter.net/Technical/2008/03/nextgen-gallery-review-introduction/\" target=\"_blank\">Styles</a>"
417
  msgstr "<a href=\"http://www.curlyrob.de/curlyrob/?page_id=129\" target=\"_blank\">Einführung</a>"
418
 
419
- #: ../admin/admin.php:221
420
  msgid "Templates"
421
  msgstr "Vorlagen"
422
 
423
- #: ../admin/admin.php:224
424
- #: ../admin/admin.php:230
425
  msgid "<a href=\"http://dpotter.net/Technical/2008/03/nextgen-gallery-review-introduction/\" target=\"_blank\">Gallery management</a>"
426
  msgstr "<a href=\"http://www.curlyrob.de/curlyrob/?page_id=129\" target=\"_blank\">Einführung</a>"
427
 
428
- #: ../admin/admin.php:225
429
  msgid "Gallery example"
430
  msgstr "Galerie Beispiel"
431
 
432
- #: ../admin/admin.php:231
433
- #: ../admin/admin.php:241
434
  msgid "Gallery tags"
435
  msgstr "Galerie Stichwörter"
436
 
437
- #: ../admin/admin.php:234
438
  msgid "<a href=\"http://dpotter.net/Technical/2008/03/nextgen-gallery-review-introduction/\" target=\"_blank\">Album management</a>"
439
  msgstr "<a href=\"http://www.curlyrob.de/curlyrob/?page_id=129\" target=\"_blank\">Einführung</a>"
440
 
441
- #: ../admin/admin.php:235
442
  msgid "Album example"
443
  msgstr "Album Beispiel"
444
 
445
- #: ../admin/admin.php:236
446
- #: ../admin/admin.php:242
447
  msgid "Album tags"
448
  msgstr "Album Stichwörter"
449
 
450
- #: ../admin/admin.php:239
451
  msgid "<a href=\"http://dpotter.net/Technical/2008/03/nextgen-gallery-review-introduction/\" target=\"_blank\">Gallery tags</a>"
452
  msgstr "<a href=\"http://www.curlyrob.de/curlyrob/?page_id=129\" target=\"_blank\">Einführung</a>"
453
 
454
- #: ../admin/admin.php:240
455
  msgid "Related images"
456
  msgstr "Verwandte Bilder"
457
 
458
- #: ../admin/admin.php:245
459
  msgid "<a href=\"http://dpotter.net/Technical/2008/03/nextgen-gallery-review-image-management/\" target=\"_blank\">Image management</a>"
460
  msgstr "<a href=\"http://dpotter.net/Technical/2008/03/nextgen-gallery-review-image-management/\" target=\"_blank\">Bilderverwaltung (Englisch)</a>"
461
 
462
- #: ../admin/admin.php:246
463
  msgid "Custom fields"
464
  msgstr "Spezialfelder"
465
 
466
- #: ../admin/admin.php:251
467
  msgid "Get help with NextGEN Gallery"
468
  msgstr "Weitere Hilfe zu NextGEN Gallery"
469
 
470
- #: ../admin/admin.php:255
471
  msgid "More Help & Info"
472
  msgstr "Weitere Hilfe & Informationen"
473
 
474
- #: ../admin/admin.php:257
475
  msgid "<a href=\"http://wordpress.org/tags/nextgen-gallery\" target=\"_blank\">Support Forums</a>"
476
  msgstr "<a href=\"http://wordpress.org/tags/nextgen-gallery\" target=\"_blank\">Support Forum (Englisch)</a>"
477
 
478
- #: ../admin/admin.php:258
479
  msgid "FAQ"
480
  msgstr "FAQ (englisch)"
481
 
482
- #: ../admin/admin.php:259
483
  msgid "Feature request"
484
  msgstr "Wünsch dir was"
485
 
486
- #: ../admin/admin.php:260
487
  msgid "Get your language pack"
488
  msgstr "Lade deine Sprachdatei"
489
 
490
- #: ../admin/admin.php:261
491
  msgid "Contribute development"
492
  msgstr "Entwicklung helfen"
493
 
494
- #: ../admin/admin.php:262
495
  msgid "Download latest version"
496
  msgstr "Aktuelle Version downloaden"
497
 
498
- #: ../admin/album.php:19
499
- #: ../admin/album.php:31
 
500
  msgid "Update Successfully"
501
  msgstr "Update erfolgreich"
502
 
503
- #: ../admin/album.php:40
504
  msgid "Album deleted"
505
  msgstr "Album gelöscht"
506
 
507
- #: ../admin/album.php:125
508
  msgid "Manage Albums"
509
  msgstr "Verwalte Alben"
510
 
511
- #: ../admin/album.php:131
 
512
  msgid "Select album"
513
  msgstr "Wähle Album"
514
 
515
- #: ../admin/album.php:133
516
  msgid "No album selected"
517
  msgstr "Kein Album ausgewählt"
518
 
519
- #: ../admin/album.php:146
520
  msgid "Update"
521
  msgstr "Aktualisiere"
522
 
523
- #: ../admin/album.php:147
524
- #: ../admin/manage-galleries.php:78
525
- #: ../admin/manage-images.php:336
 
 
 
 
526
  msgid "Delete"
527
  msgstr "Lösche"
528
 
529
- #: ../admin/album.php:147
530
  msgid "Delete album ?"
531
  msgstr "Album löschen ?"
532
 
533
- #: ../admin/album.php:149
534
  msgid "Add new album"
535
  msgstr "Album hinzufügen"
536
 
537
- #: ../admin/album.php:150
538
  msgid "Add"
539
  msgstr "Hinzufügen"
540
 
541
- #: ../admin/album.php:158
 
 
 
 
542
  msgid "[Show all]"
543
  msgstr "[Alle zeigen]"
544
 
545
- #: ../admin/album.php:159
 
 
 
 
546
  msgid "[Maximize]"
547
  msgstr "[Vergrößern]"
548
 
549
- #: ../admin/album.php:160
 
 
 
 
550
  msgid "[Minimize]"
551
  msgstr "[Verkleinern]"
552
 
553
- #: ../admin/album.php:162
554
- msgid "After you create and select a album, you can drag and drop a gallery into your album below"
555
- msgstr "Nachdem du ein Album erstellt und ausgewählt hast, kannst du per Drag & Drop eine Galerie in das Album ziehen"
556
 
557
- #: ../admin/album.php:169
558
- msgid "Select Gallery"
559
  msgstr "Wähle Galerie"
560
 
561
- #: ../admin/album.php:208
562
- msgid "Album Page ID"
563
- msgstr "Album Seiten ID (Page ID)"
564
 
565
- #: ../admin/album.php:220
566
  msgid "No album selected!"
567
  msgstr "Kein Album ausgewählt"
568
 
569
- #: ../admin/album.php:254
570
- #: ../admin/manage-galleries.php:42
571
- #: ../admin/manage-images.php:473
572
- msgid "ID"
573
- msgstr "ID"
 
 
 
 
 
 
574
 
575
- #: ../admin/album.php:255
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
576
  msgid "Name"
577
  msgstr "Name"
578
 
579
- #: ../admin/album.php:256
580
- #: ../admin/manage-galleries.php:43
581
- #: ../admin/manage-images.php:165
582
  msgid "Title"
583
  msgstr "Titel"
584
 
585
- #: ../admin/album.php:257
586
  msgid "Page"
587
  msgstr "Seite"
588
 
589
- #: ../admin/functions.php:23
590
  msgid "No valid gallery name!"
591
  msgstr "Kein gültiger Galerie-Name!"
592
 
593
- #: ../admin/functions.php:30
594
- #: ../admin/functions.php:39
595
- #: ../admin/functions.php:53
596
- #: ../admin/functions.php:117
597
- #: ../admin/functions.php:124
598
  msgid "Directory"
599
  msgstr "Verzeichnis"
600
 
601
- #: ../admin/functions.php:30
602
  msgid "didn't exist. Please create first the main gallery folder "
603
  msgstr "nicht gefunden. Bitte erstelle zuerst das Hauptverzeichnis."
604
 
605
- #: ../admin/functions.php:31
606
- #: ../admin/functions.php:40
607
  msgid "Check this link, if you didn't know how to set the permission :"
608
  msgstr "Dieser Link zeigt dir wie man Verzeichnisrechte ändert :"
609
 
610
- #: ../admin/functions.php:39
611
- #: ../admin/functions.php:53
612
  msgid "is not writeable !"
613
  msgstr "ist schreibgeschützt !"
614
 
615
- #: ../admin/functions.php:48
616
- #: ../admin/functions.php:58
617
- #: ../admin/functions.php:531
618
  msgid "Unable to create directory "
619
  msgstr "Kann Verzeichnis nicht erstellen "
620
 
621
- #: ../admin/functions.php:62
622
  msgid "The server setting Safe-Mode is on !"
623
  msgstr "Auf dem Server ist Safe-Mode aktiviert (PHP.INI)"
624
 
625
- #: ../admin/functions.php:63
626
  msgid "If you have problems, please create directory"
627
  msgstr "Wenn Probleme auftreten, erstelle bitte das Verzeichnis"
628
 
629
- #: ../admin/functions.php:64
630
  msgid "and the thumbnails directory"
631
  msgstr "und das Thumbnails-Verzeichnis"
632
 
633
- #: ../admin/functions.php:64
634
  msgid "with permission 777 manually !"
635
  msgstr "mit den Berechtigungen 777 manuell !"
636
 
637
- #: ../admin/functions.php:82
638
  msgid "already exists"
639
  msgstr "gibt es bereits"
640
 
641
- #: ../admin/functions.php:87
642
  #, php-format
643
  msgid "Gallery %1$s successfully created.<br/>You can show this gallery with the tag %2$s.<br/>"
644
  msgstr "Galerie %1$s erstellt..<br/>Du kannst diese Galerie jetzt mit dem Stichwort %2$s einbinden.<br/>"
645
 
646
- #: ../admin/functions.php:90
647
  msgid "Edit gallery"
648
  msgstr "Galerie ändern"
649
 
650
- #: ../admin/functions.php:117
651
  msgid "doesn&#96;t exist!"
652
  msgstr "gibt es nicht !"
653
 
654
- #: ../admin/functions.php:124
655
  msgid "contains no pictures"
656
  msgstr "enthält keine Bilder"
657
 
658
- #: ../admin/functions.php:142
659
  msgid "Database error. Could not add gallery!"
660
  msgstr "Datenbank-Fehler. Kann Galerie nicht hinzufügen!"
661
 
662
- #: ../admin/functions.php:145
663
  msgid "successfully created!"
664
  msgstr "erfolgreich erstellt!"
665
 
666
- #: ../admin/functions.php:174
667
- #: ../admin/functions.php:640
668
- #: ../admin/manage-images.php:243
669
- #: ../admin/manage.php:130
670
  msgid "Create new thumbnails"
671
  msgstr "Neue Thumbnails erstellen"
672
 
673
- #: ../admin/functions.php:177
674
  msgid " picture(s) successfully added"
675
  msgstr " Bild(er) erfolgreich hinzugefügt"
676
 
677
- #: ../admin/functions.php:216
678
- #: ../admin/functions.php:295
679
- #: ../admin/functions.php:336
680
  msgid "Object didn't contain correct data"
681
  msgstr "Das Objekt enhält nicht die notwendigen Daten"
682
 
683
- #: ../admin/functions.php:221
684
  msgid " is not writeable "
685
  msgstr "ist schreibgeschützt !"
686
 
687
- #: ../admin/functions.php:302
688
- #: ../admin/functions.php:339
689
  msgid " is not writeable"
690
  msgstr "ist schreibgeschützt !"
691
 
692
- #: ../admin/functions.php:500
 
 
 
 
 
 
 
 
693
  msgid "Uploaded file was no or a faulty zip file ! The server recognize : "
694
  msgstr "Die hochgeladene Datei war keine korrekte Zip-Datei. Servermeldung :"
695
 
696
- #: ../admin/functions.php:515
697
  msgid "Could not get a valid foldername"
698
  msgstr "Konnte keinen gültigen Verzeichnisnamen finden"
699
 
700
- #: ../admin/functions.php:526
701
  #, php-format
702
  msgid "Unable to create directory %s. Is its parent directory writable by the server?"
703
  msgstr "Kann das Verzeichnis %s nicht erstellen. Is das Hauptverzeichnis vielleicht schreibgeschützt ?"
704
 
705
- #: ../admin/functions.php:541
706
  msgid "Zip-File successfully unpacked"
707
  msgstr "Zip-Datei erfolgreich entpackt"
708
 
709
- #: ../admin/functions.php:576
710
- #: ../admin/functions.php:685
711
  msgid "Failure in database, no gallery path set !"
712
  msgstr "Datenbankfehler! Kein Galerie-Pfad gesetzt !"
713
 
714
- #: ../admin/functions.php:597
715
- #: ../admin/functions.php:679
716
  msgid "is no valid image file!"
717
  msgstr "ist keine zulässige Bilddatei !"
718
 
719
- #: ../admin/functions.php:611
720
- #: ../admin/functions.php:787
721
- #: ../admin/functions.php:855
722
  #, php-format
723
  msgid "Unable to write to directory %s. Is this directory writable by the server?"
724
  msgstr "Kann das Verzeichnis %s nicht erstellen. Is das Hauptverzeichnis vielleicht schreibgeschützt ?"
725
 
726
- #: ../admin/functions.php:618
727
- #: ../admin/functions.php:702
728
  msgid "Error, the file could not moved to : "
729
  msgstr "Fehler: Diese Datei kann nicht verschoben werden zu :"
730
 
731
- #: ../admin/functions.php:623
732
- #: ../admin/functions.php:706
733
  msgid "Error, the file permissions could not set"
734
  msgstr "Fehler: Die Berechtigungen für diese Datei können nicht gesetzt werden"
735
 
736
- #: ../admin/functions.php:644
737
  msgid " Image(s) successfully added"
738
  msgstr " Bild(er) erfolgreich hinzugefügt"
739
 
740
- #: ../admin/functions.php:667
741
  msgid "Invalid upload. Error Code : "
742
  msgstr "Ungültiger Upload. Fehler Code :"
743
 
744
- #: ../admin/functions.php:716
745
  msgid "Sorry, you have used your space allocation. Please delete some files to upload more files."
746
  msgstr "Schade, dein freier Speicher scheint aufgebraucht zu sein. Bitte lösche zuerst ein paar Bilder."
747
 
748
- #: ../admin/functions.php:743
749
  #, php-format
750
  msgid "SAFE MODE Restriction in effect! You need to create the folder <strong>%s</strong> manually"
751
  msgstr "SAFE MODE Einschränkungen ist aktiv. Du must das Verzeichnis <strong>%s</strong> manuell anlegen."
752
 
753
- #: ../admin/functions.php:744
754
  #, php-format
755
  msgid "When safe_mode is on, PHP checks to see if the owner (%s) of the current script matches the owner (%s) of the file to be operated on by a file function or its directory"
756
  msgstr "Wenn der Safe-Mode eingeschaltet ist, überprüft PHP ob der Besitzer (%s) des Skript mit dem Besitzer (%s) der Datei/Verzeichnis übereinstimmt."
757
 
758
- #: ../admin/functions.php:781
759
- #: ../admin/functions.php:849
760
  msgid "The destination gallery does not exist"
761
  msgstr "Die ausgewählte Galerie existiert nicht"
762
 
763
- #: ../admin/functions.php:812
764
  #, php-format
765
  msgid "Failed to move image %1$s to %2$s"
766
  msgstr "Konte das Bild %1$s nicht nach %2$s verschieben"
767
 
768
- #: ../admin/functions.php:830
769
  #, php-format
770
  msgid "Moved %1$s picture(s) to gallery : %2$s ."
771
  msgstr " %1$s Bild(er) in Galerie : %2$s verschoben."
772
 
773
- #: ../admin/functions.php:882
774
  #, php-format
775
  msgid "Failed to copy image %1$s to %2$s"
776
  msgstr "Konnte das Bild %1$s nicht nach %2$s kopieren"
777
 
778
- #: ../admin/functions.php:894
779
  #, php-format
780
  msgid "Failed to copy database row for picture %s"
781
  msgstr "Fehler bei der Datenbank-Operation für Bild %s"
782
 
783
- #: ../admin/functions.php:902
784
  #, php-format
785
  msgid "Image %1$s (%2$s) copied as image %3$s (%4$s) &raquo; The file already existed in the destination gallery."
786
  msgstr "Bild %1$s (%2$s) als Bild %3$s (%4$s) kopiert &raquo; Die Datei existierte bereits."
787
 
788
- #: ../admin/functions.php:905
789
  #, php-format
790
  msgid "Image %1$s (%2$s) copied as image %3$s (%4$s)"
791
  msgstr "Bild %1$s (%2$s) kopiert als Bild %3$s (%4$s)"
792
 
793
- #: ../admin/functions.php:914
794
  #, php-format
795
  msgid "Copied %1$s picture(s) to gallery: %2$s ."
796
  msgstr "Kopiere %1$s Bild(er) in die Galerie : %2$s ."
@@ -799,87 +864,99 @@ msgstr "Kopiere %1$s Bild(er) in die Galerie : %2$s ."
799
  msgid "Sorry, NextGEN Gallery works only with a role called administrator"
800
  msgstr "Tut mir leid, aber NextGEN Galerie benötigt zwingend die Rolle \"Administrator\""
801
 
802
- #: ../admin/install.php:102
803
  msgid "NextGEN Gallery : Tables could not created, please check your database settings"
804
  msgstr "NextGEN Gallery : Tabellen konnten nicht erstellt werden, überprüfe deine Datenbank"
805
 
806
- #: ../admin/install.php:160
807
  msgid "[Show as slideshow]"
808
  msgstr "[Zeige als Diashow]"
809
 
810
- #: ../admin/install.php:161
811
  msgid "[Show picture list]"
812
  msgstr "[Zeige Bilder-Liste]"
813
 
814
- #: ../admin/manage-galleries.php:19
815
- #: ../admin/manage-images.php:39
816
  msgid "&laquo;"
817
  msgstr "&laquo;"
818
 
819
- #: ../admin/manage-galleries.php:20
820
- #: ../admin/manage-images.php:40
821
  msgid "&raquo;"
822
  msgstr "&raquo;"
823
 
824
- #: ../admin/manage-galleries.php:27
825
  msgid "Gallery Overview"
826
  msgstr "Galerie Übersicht"
827
 
828
- #: ../admin/manage-galleries.php:30
829
- #: ../admin/manage-images.php:232
 
 
 
 
 
 
 
830
  #, php-format
831
  msgid "Displaying %s&#8211;%s of %s"
832
  msgstr "Zeige %s&#8211;%s von %s"
833
 
834
- #: ../admin/manage-galleries.php:44
835
- #: ../admin/manage-images.php:176
836
- #: ../admin/manage-images.php:478
 
 
 
 
 
837
  msgid "Description"
838
  msgstr "Beschreibung"
839
 
840
- #: ../admin/manage-galleries.php:45
841
- #: ../admin/manage-images.php:196
842
  msgid "Author"
843
  msgstr "Autor"
844
 
845
- #: ../admin/manage-galleries.php:46
846
  msgid "Page ID"
847
  msgstr "Seiten ID"
848
 
849
- #: ../admin/manage-galleries.php:47
850
  msgid "Quantity"
851
  msgstr "Anzahl"
852
 
853
- #: ../admin/manage-galleries.php:48
854
  msgid "Action"
855
  msgstr "Aktion"
856
 
857
- #: ../admin/manage-galleries.php:65
858
  msgid "Edit"
859
  msgstr "Bearbeiten"
860
 
861
- #: ../admin/manage-galleries.php:78
862
  msgid "Delete this gallery ?"
863
  msgstr "Diese Galerie löschen ?"
864
 
865
- #: ../admin/manage-galleries.php:85
866
- #: ../admin/manage-images.php:390
867
  msgid "No entries found"
868
  msgstr "Keine Einträge gefunden"
869
 
870
- #: ../admin/manage-images.php:16
871
  msgid "Gallery not found."
872
  msgstr "Galerie nicht gefunden"
873
 
874
- #: ../admin/manage-images.php:22
875
  msgid "Sorry, you have no access here"
876
  msgstr "Sorry, du hast nicht genügend Rechte"
877
 
878
- #: ../admin/manage-images.php:112
879
  msgid "No images selected"
880
  msgstr "Keine Bilder ausgewählt"
881
 
882
- #: ../admin/manage-images.php:132
883
  #, php-format
884
  msgid ""
885
  "You are about to start the bulk edit for %s images \n"
@@ -890,169 +967,161 @@ msgstr ""
890
  " \n"
891
  " 'Abbrechen' um zu stoppen, 'OK' um die Bearbeitung durchzuführen."
892
 
893
- #: ../admin/manage-images.php:161
 
 
 
 
 
894
  msgid "Gallery settings"
895
  msgstr "Galerie Einstellungen"
896
 
897
- #: ../admin/manage-images.php:161
898
  msgid "Click here for more settings"
899
  msgstr "Hier klicken für weitere Einstellungen"
900
 
901
- #: ../admin/manage-images.php:167
902
  msgid "Page Link to"
903
  msgstr "Seite verlinkt zu"
904
 
905
- #: ../admin/manage-images.php:170
906
  msgid "Not linked"
907
  msgstr "Nicht verlinkt"
908
 
909
- #: ../admin/manage-images.php:178
910
  msgid "Preview image"
911
  msgstr "Vorschau-Bild"
912
 
913
- #: ../admin/manage-images.php:181
914
  msgid "No Picture"
915
  msgstr "Kein Bild"
916
 
917
- #: ../admin/manage-images.php:194
918
  msgid "Path"
919
  msgstr "Pfad"
920
 
921
- #: ../admin/manage-images.php:210
922
  msgid "Create new page"
923
  msgstr "Neue Seite erstellen"
924
 
925
- #: ../admin/manage-images.php:213
926
  msgid "Main page (No parent)"
927
  msgstr "Haupseite (keine Unterseite)"
928
 
929
- #: ../admin/manage-images.php:216
930
  msgid "Add page"
931
  msgstr "Seite hinzufügen"
932
 
933
- #: ../admin/manage-images.php:222
934
  msgid "Scan Folder for new images"
935
  msgstr "Überprüfe Verzeichnis nach neuen Bildern"
936
 
937
- #: ../admin/manage-images.php:223
938
- #: ../admin/manage-images.php:259
939
- #: ../admin/manage-images.php:396
940
  msgid "Save Changes"
941
  msgstr "Änderungen speichern"
942
 
943
- #: ../admin/manage-images.php:241
944
  msgid "No action"
945
  msgstr "Keine Aktion"
946
 
947
- #: ../admin/manage-images.php:242
948
- #: ../admin/manage.php:126
949
  msgid "Set watermark"
950
  msgstr "Wasserzeichen setzen"
951
 
952
- #: ../admin/manage-images.php:244
953
- #: ../admin/manage.php:134
954
  msgid "Resize images"
955
  msgstr "Bilder verkleinern"
956
 
957
- #: ../admin/manage-images.php:245
958
  msgid "Delete images"
959
  msgstr "Bilder löschen"
960
 
961
- #: ../admin/manage-images.php:246
962
  msgid "Import metadata"
963
  msgstr "Metadaten importieren"
964
 
965
- #: ../admin/manage-images.php:247
966
  msgid "Copy to..."
967
  msgstr "Kopiere nach..."
968
 
969
- #: ../admin/manage-images.php:248
970
  msgid "Move to..."
971
  msgstr "Verschiebe nach..."
972
 
973
- #: ../admin/manage-images.php:249
974
  msgid "Add tags"
975
  msgstr "Stichwörter hinzufügen"
976
 
977
- #: ../admin/manage-images.php:250
978
  msgid "Delete tags"
979
  msgstr "Stichwörter löschen"
980
 
981
- #: ../admin/manage-images.php:251
982
  msgid "Overwrite tags"
983
  msgstr "Stichwörter überschreiben"
984
 
985
- #: ../admin/manage-images.php:253
986
- #: ../admin/manage-images.php:413
987
- #: ../admin/manage-images.php:448
988
- msgid "OK"
989
- msgstr "OK"
990
-
991
- #: ../admin/manage-images.php:256
992
  msgid "Sort gallery"
993
  msgstr "Sortiere Bilder"
994
 
995
- #: ../admin/manage-images.php:333
996
  #, php-format
997
  msgid "View \"%s\""
998
  msgstr "Anzeigen \"%s\""
999
 
1000
- #: ../admin/manage-images.php:333
1001
  msgid "View"
1002
  msgstr "Ansehen"
1003
 
1004
- #: ../admin/manage-images.php:334
1005
  msgid "Show Meta data"
1006
  msgstr "Zeige Metadaten"
1007
 
1008
- #: ../admin/manage-images.php:334
1009
  msgid "Meta"
1010
  msgstr "Meta"
1011
 
1012
- #: ../admin/manage-images.php:335
1013
  msgid "Customize thumbnail"
1014
  msgstr "Thumbnails anpassen"
1015
 
1016
- #: ../admin/manage-images.php:335
1017
  msgid "Edit thumb"
1018
  msgstr "Thumbnail ändern"
1019
 
1020
- #: ../admin/manage-images.php:336
1021
  #, php-format
1022
  msgid "Delete \"%s\""
1023
  msgstr "Lösche \"%s\""
1024
 
1025
- #: ../admin/manage-images.php:409
1026
  msgid "Enter the tags"
1027
  msgstr "Stichwörter angeben"
1028
 
1029
- #: ../admin/manage-images.php:415
1030
- #: ../admin/manage-images.php:450
1031
- msgid "Cancel"
1032
- msgstr "Abbrechen"
1033
-
1034
- #: ../admin/manage-images.php:432
1035
  msgid "Select the destination gallery:"
1036
  msgstr "Galerie auswählen:"
1037
 
1038
- #: ../admin/manage-images.php:474
1039
  msgid "Thumbnail"
1040
  msgstr "Thumbnail"
1041
 
1042
- #: ../admin/manage-images.php:476
1043
  #: ../admin/manage-sort.php:80
1044
  msgid "Filename"
1045
  msgstr "Dateiname"
1046
 
1047
- #: ../admin/manage-images.php:478
1048
  msgid "Alt &amp; Title Text"
1049
  msgstr "Alt &amp; Titel Text"
1050
 
1051
- #: ../admin/manage-images.php:479
1052
  msgid "Tags (comma separated list)"
1053
  msgstr "Stichwörter (Tags)"
1054
 
1055
- #: ../admin/manage-images.php:481
1056
  msgid "exclude"
1057
  msgstr "ausschließen"
1058
 
@@ -1100,40 +1169,41 @@ msgstr "Aufsteigend"
1100
  msgid "Descending"
1101
  msgstr "Absteigend"
1102
 
1103
- #: ../admin/manage.php:78
1104
  #: ../admin/manage.php:100
1105
  msgid "deleted successfully"
1106
  msgstr "erfolgreich gelöscht"
1107
 
1108
  #: ../admin/manage.php:100
 
1109
  msgid "Picture"
1110
  msgstr "Bild"
1111
 
1112
- #: ../admin/manage.php:151
1113
  msgid "Pictures deleted successfully "
1114
  msgstr "Bilder erfolgreich gelöscht"
1115
 
1116
- #: ../admin/manage.php:157
1117
  msgid "Import metadata finished"
1118
  msgstr "Import der Metadaten beendet"
1119
 
1120
- #: ../admin/manage.php:165
1121
  msgid "Operation successful. Please clear your browser cache."
1122
  msgstr "Thumbnails erfolgreich erstellt. Bitte Browser-Cache aktualisieren."
1123
 
1124
- #: ../admin/manage.php:228
1125
  msgid "Tags changed"
1126
  msgstr "Stichwörter geändert"
1127
 
1128
- #: ../admin/manage.php:255
1129
  msgid "Update successful"
1130
  msgstr "Aktualisierung erfolgreich"
1131
 
1132
- #: ../admin/manage.php:289
1133
  msgid "New gallery page ID"
1134
  msgstr "Neue Galerie Seiten ID"
1135
 
1136
- #: ../admin/manage.php:289
1137
  msgid "created"
1138
  msgstr "erstellt"
1139
 
@@ -1226,175 +1296,188 @@ msgstr "In den Beitrag einfügen"
1226
  msgid "Save all changes"
1227
  msgstr "Änderungen Speichern"
1228
 
1229
- #: ../admin/overview.php:13
 
1230
  msgid "NextGEN Gallery Overview"
1231
  msgstr "NextGEN Galerie Übersicht"
1232
 
1233
- #: ../admin/overview.php:108
 
 
 
 
 
 
 
 
1234
  #, php-format
1235
  msgid "Newsfeed could not be loaded. Check the <a href=\"%s\">front page</a> to check for updates."
1236
  msgstr "Der Newsfeed kann nicht geladen werden. Schaue auf die <a href=\"%s\">Hauptseite</a> um Updates mitzubekommen."
1237
 
1238
- #: ../admin/overview.php:128
1239
  msgid "At a Glance"
1240
  msgstr "Übersicht"
1241
 
1242
- #: ../admin/overview.php:134
1243
  msgid "Image"
1244
  msgid_plural "Images"
1245
  msgstr[0] "Bild"
1246
  msgstr[1] "Bilder"
1247
 
1248
- #: ../admin/overview.php:155
1249
  msgid "Upload pictures"
1250
  msgstr "Bilder hochladen"
1251
 
1252
- #: ../admin/overview.php:156
1253
  msgid "Here you can control your images, galleries and albums."
1254
  msgstr "Hier kannst Du die Bilder, Galerien und Alben verwalten."
1255
 
1256
- #: ../admin/overview.php:160
1257
  msgid "Gallery Administrator"
1258
  msgstr "Galerie-Administrator"
1259
 
1260
- #: ../admin/overview.php:160
1261
  msgid "Gallery Editor"
1262
  msgstr "Galerie-Mitarbeiter"
1263
 
1264
- #: ../admin/overview.php:161
1265
  #, php-format
1266
  msgid "You currently have %s rights."
1267
  msgstr "Du hast derzeit %s Rechte."
1268
 
1269
- #: ../admin/overview.php:168
1270
  msgid "Welcome to NextGEN Gallery !"
1271
  msgstr "Willkomen bei NextGEN Gallery"
1272
 
1273
- #: ../admin/overview.php:169
1274
  msgid "Latest News"
1275
  msgstr "Letzte Informationen"
1276
 
1277
- #: ../admin/overview.php:170
 
 
 
 
1278
  msgid "Server Settings"
1279
  msgstr "Server- Einstellungen"
1280
 
1281
- #: ../admin/overview.php:171
1282
  msgid "Graphic Library"
1283
  msgstr "Grafik Bibliothek"
1284
 
1285
- #: ../admin/overview.php:187
1286
  msgid "No GD support"
1287
  msgstr "Keine GD Unterstützung"
1288
 
1289
- #: ../admin/overview.php:194
1290
- #: ../admin/overview.php:233
1291
- #: ../admin/overview.php:236
1292
- #: ../admin/overview.php:239
1293
  msgid "Yes"
1294
  msgstr "Ja"
1295
 
1296
- #: ../admin/overview.php:196
1297
- #: ../admin/overview.php:234
1298
- #: ../admin/overview.php:237
1299
- #: ../admin/overview.php:240
1300
  msgid "No"
1301
  msgstr "Nein"
1302
 
1303
- #: ../admin/overview.php:210
1304
  msgid "Not set"
1305
  msgstr "Nicht gesetzt"
1306
 
1307
- #: ../admin/overview.php:212
1308
- #: ../admin/overview.php:215
1309
  msgid "On"
1310
  msgstr "An"
1311
 
1312
- #: ../admin/overview.php:213
1313
- #: ../admin/overview.php:216
1314
  msgid "Off"
1315
  msgstr "Aus"
1316
 
1317
- #: ../admin/overview.php:219
1318
- #: ../admin/overview.php:222
1319
- #: ../admin/overview.php:225
1320
- #: ../admin/overview.php:228
1321
- #: ../admin/overview.php:231
1322
  msgid "N/A"
1323
  msgstr "N/A"
1324
 
1325
- #: ../admin/overview.php:230
1326
  msgid " MByte"
1327
  msgstr " MByte"
1328
 
1329
- #: ../admin/overview.php:243
1330
  msgid "Operating System"
1331
  msgstr "Betriebssystem"
1332
 
1333
- #: ../admin/overview.php:244
1334
  msgid "Server"
1335
  msgstr "Server"
1336
 
1337
- #: ../admin/overview.php:245
1338
  msgid "Memory usage"
1339
  msgstr "Speicherverbrauch"
1340
 
1341
- #: ../admin/overview.php:246
1342
  msgid "MYSQL Version"
1343
  msgstr "MySQL Version"
1344
 
1345
- #: ../admin/overview.php:247
1346
  msgid "SQL Mode"
1347
  msgstr "SQL Modus"
1348
 
1349
- #: ../admin/overview.php:248
1350
  msgid "PHP Version"
1351
  msgstr "PHP Version"
1352
 
1353
- #: ../admin/overview.php:249
1354
  msgid "PHP Safe Mode"
1355
  msgstr "PHP Safe Mode"
1356
 
1357
- #: ../admin/overview.php:250
1358
  msgid "PHP Allow URL fopen"
1359
  msgstr "PHP Allow URL fopen"
1360
 
1361
- #: ../admin/overview.php:251
1362
  msgid "PHP Memory Limit"
1363
  msgstr "PHP Memory Limit"
1364
 
1365
- #: ../admin/overview.php:252
1366
  msgid "PHP Max Upload Size"
1367
  msgstr "PHP Max Upload Größe"
1368
 
1369
- #: ../admin/overview.php:253
1370
  msgid "PHP Max Post Size"
1371
  msgstr "PHP Max Post Größe"
1372
 
1373
- #: ../admin/overview.php:254
1374
  msgid "PHP Max Script Execute Time"
1375
  msgstr "PHP Max Script Execute Time"
1376
 
1377
- #: ../admin/overview.php:255
1378
  msgid "PHP Exif support"
1379
  msgstr "PHP Exif Modul"
1380
 
1381
- #: ../admin/overview.php:256
1382
  msgid "PHP IPTC support"
1383
  msgstr "PHP IPTC Modul"
1384
 
1385
- #: ../admin/overview.php:257
1386
  msgid "PHP XML support"
1387
  msgstr "PHP XML Modul"
1388
 
1389
- #: ../admin/overview.php:315
1390
  msgid "Storage Space"
1391
  msgstr "Speicherplatz"
1392
 
1393
- #: ../admin/overview.php:318
1394
  msgid "Upload Space Used:"
1395
  msgstr "Verbrauchter Uploadspeicher:"
1396
 
1397
- #: ../admin/overview.php:324
1398
  msgid "Upload Space Remaining:"
1399
  msgstr "Verbleibender Speicher:"
1400
 
@@ -1778,7 +1861,7 @@ msgstr "URL zur Datei"
1778
 
1779
  #: ../admin/settings.php:420
1780
  msgid "The accessing of URL files is disabled at your server (allow_url_fopen)"
1781
- msgstr "Der Dateizugriff von URL's ist auf diesem Server deaktiviert (allow_url_fopen)"
1782
 
1783
  #: ../admin/settings.php:423
1784
  msgid "Use text as watermark"
@@ -2236,63 +2319,63 @@ msgstr "Schlagwörter setzen:"
2236
  msgid "Upgrade database structure..."
2237
  msgstr "Aktualisiere die Datenbank-Struturen..."
2238
 
2239
- #: ../admin/upgrade.php:78
2240
- #: ../admin/upgrade.php:88
2241
- #: ../admin/upgrade.php:95
2242
- #: ../admin/upgrade.php:106
2243
  msgid "finished"
2244
  msgstr "beendet"
2245
 
2246
- #: ../admin/upgrade.php:86
2247
  msgid "Update file structure..."
2248
  msgstr "Aktualisiere Verzeichnisse..."
2249
 
2250
- #: ../admin/upgrade.php:93
2251
  msgid "Import date and time information..."
2252
  msgstr "Importiere Datum/Uhrzeit..."
2253
 
2254
- #: ../admin/upgrade.php:101
2255
  msgid "Move imagerotator to new location..."
2256
  msgstr "Verschiebe den Image Rotator in ein neues Verzeichnis..."
2257
 
2258
- #: ../admin/upgrade.php:170
2259
  msgid "Some folders/files could not renamed, please recheck the permission and rescan the folder in the manage gallery section."
2260
  msgstr "Einige Verzeichnisse / Bilder konnten nicht umbenannt werden, bitte überprüfe die Zugriffsrechte und Scanne dann das Verzeichnis neu ein."
2261
 
2262
- #: ../admin/upgrade.php:172
2263
  msgid "Rename failed"
2264
  msgstr "Konnte nicht umbenannt werden"
2265
 
2266
- #: ../admin/upgrade.php:267
2267
- #: ../admin/upgrade.php:287
2268
  msgid "Upgrade NextGEN Gallery"
2269
  msgstr "NextGEN Gallery aktualisieren"
2270
 
2271
- #: ../admin/upgrade.php:268
2272
  msgid "The script detect that you upgrade from a older version."
2273
  msgstr "Es wurde eine ältere NextGEN Datenbank erkannt."
2274
 
2275
- #: ../admin/upgrade.php:269
2276
  msgid "Your database tables for NextGEN Gallery is out-of-date, and must be upgraded before you can continue."
2277
  msgstr "Deinen Datenbank für NextGEN Gallery ist nicht auf dem aktuellen Stand, Sie muss jetzt aktualisiert werden."
2278
 
2279
- #: ../admin/upgrade.php:270
2280
  msgid "If you would like to downgrade later, please make first a complete backup of your database and the images."
2281
  msgstr "Wenn du wieder auf eine älter Version zurückgehen möchtest, musst du vorher die Datenbank sichern."
2282
 
2283
- #: ../admin/upgrade.php:271
2284
  msgid "The upgrade process may take a while, so please be patient."
2285
  msgstr "Der Upgrade Prozess kann etwas dauern, bitte sei geduldig..."
2286
 
2287
- #: ../admin/upgrade.php:272
2288
  msgid "Start upgrade now"
2289
  msgstr "Aktualisierung starten"
2290
 
2291
- #: ../admin/upgrade.php:289
2292
  msgid "Upgrade sucessful"
2293
  msgstr "Aktualisierung erfolgreich"
2294
 
2295
- #: ../admin/upgrade.php:290
2296
  msgid "Continue"
2297
  msgstr "Weiter"
2298
 
@@ -2352,10 +2435,6 @@ msgstr "Wähle das Default-Stylesheet für die Galerien"
2352
  msgid "You are not allowed to be here"
2353
  msgstr "Keine Zugrangsberechtigung"
2354
 
2355
- #: ../admin/tinymce/window.php:41
2356
- msgid "Select gallery"
2357
- msgstr "Wähle Galerie"
2358
-
2359
  #: ../admin/tinymce/window.php:56
2360
  #: ../admin/tinymce/window.php:84
2361
  msgid "Show as"
@@ -2385,10 +2464,6 @@ msgstr "Kompakte Version"
2385
  msgid "Select picture"
2386
  msgstr "Wähle Bild"
2387
 
2388
- #: ../admin/tinymce/window.php:99
2389
- msgid "No picture"
2390
- msgstr "Kein Bild"
2391
-
2392
  #: ../admin/tinymce/window.php:111
2393
  msgid "Width x Height"
2394
  msgstr "Breite x Höhe"
@@ -2417,7 +2492,7 @@ msgstr "Kein Float"
2417
  msgid "Insert"
2418
  msgstr "Einfügen"
2419
 
2420
- #: ../lib/core.php:419
2421
  #, php-format
2422
  msgid "Note : Based on your server memory limit you should not upload larger images then <strong>%d x %d</strong> pixel"
2423
  msgstr "Hinweis : Basierend auf der Speicherbegrenzung auf dem Server, solltest du keine Bilder grösser als <strong>%d x %d</strong> Pixel hochladen"
@@ -2545,7 +2620,8 @@ msgstr "Programm"
2545
  msgid "Format"
2546
  msgstr "Format"
2547
 
2548
- #: ../lib/ngg-db.php:243
 
2549
  msgid "Album overview"
2550
  msgstr "Album Übersicht"
2551
 
@@ -2621,8 +2697,8 @@ msgstr "Kein Stichwort geändert"
2621
  msgid "%s slug(s) edited."
2622
  msgstr "%s Stichwörter geändert"
2623
 
2624
- #: ../view/album-compact.php:31
2625
- #: ../view/album-extend.php:29
2626
  msgid "Photos"
2627
  msgstr "Fotos"
2628
 
@@ -2781,7 +2857,7 @@ msgstr "Galerie ID :"
2781
 
2782
  #: ../widgets/widgets.php:336
2783
  msgid "Gallery IDs, separated by commas."
2784
- msgstr "Galerie ID's, mit Kommas getrennt"
2785
 
2786
  #: ../xml/media-rss.php:58
2787
  msgid "No galleries have been yet created."
@@ -2806,6 +2882,13 @@ msgstr "Album-ID %s existiert nicht"
2806
  msgid "Invalid MediaRSS command (%s)."
2807
  msgstr "Ungültiger Media RSS Befehl (%s)"
2808
 
 
 
 
 
 
 
 
2809
  #~ msgid "Import a folder with all images."
2810
  #~ msgstr "Importiere ein Verzeichnis mit Bildern."
2811
  #~ msgid "Show tags"
@@ -2862,8 +2945,6 @@ msgstr "Ungültiger Media RSS Befehl (%s)"
2862
  #~ msgstr "Wie viele NextGEN Gallery Widgets möchtest du haben ?"
2863
  #~ msgid "Save"
2864
  #~ msgstr "Speichern"
2865
- #~ msgid "Select loading image"
2866
- #~ msgstr "Wähle Ladeanimation"
2867
  #~ msgid "for Simple:Press Forum, it saved me a lot of time"
2868
  #~ msgstr "für das Simple:Press Forum, welches mir viel Zeit sparte"
2869
  #~ msgid "Sorry, NextGEN Gallery works only under WordPress 2.5 or higher"
2
  msgstr ""
3
  "Project-Id-Version: NextGEN Gallery\n"
4
  "Report-Msgid-Bugs-To: \n"
5
+ "POT-Creation-Date: 2009-06-07 13:00+0100\n"
6
+ "PO-Revision-Date: 2009-06-07 13:05+0100\n"
7
  "Last-Translator: Alex Rabe\n"
8
  "Language-Team: Alex Rabe\n"
9
  "MIME-Version: 1.0\n"
18
  "X-Poedit-SearchPath-0: .\n"
19
  "X-Poedit-SearchPath-1: ..\n"
20
 
21
+ #: ../nggallery.php:160
22
  msgid "Sorry, NextGEN Gallery works only with a Memory Limit of 16 MB higher"
23
  msgstr "Tut mir leid, aber NextGEN Galerie benötigt minimum 16MB Speicher (Memory Limit) oder mehr"
24
 
25
+ #: ../nggallery.php:185
26
  msgid "Picture tag"
27
  msgstr "Bilder Stichwort"
28
 
29
+ #: ../nggallery.php:186
30
  msgid "Picture tag: %2$l."
31
  msgstr "Bilder Stichwort: %2$l."
32
 
33
+ #: ../nggallery.php:187
34
  msgid "Separate picture tags with commas."
35
  msgstr "Trenne Stichwörter mittels Komma"
36
 
37
+ #: ../nggallery.php:278
38
  msgid "L O A D I N G"
39
+ msgstr "B I T T E &nbsp;&nbsp;W A R T E N"
40
 
41
+ #: ../nggallery.php:279
42
  msgid "Click to Close"
43
  msgstr "Klicken zum Schliessen "
44
 
45
+ #: ../nggallery.php:293
46
+ msgid "loading"
47
+ msgstr "lade..."
48
+
49
  #: ../nggfunctions.php:37
50
  msgid "The <a href=\"http://www.macromedia.com/go/getflashplayer\">Flash Player</a> and <a href=\"http://www.mozilla.com/firefox/\">a browser with Javascript support</a> are needed.."
51
  msgstr "Es wird der <a href=\"http://www.macromedia.com/go/getflashplayer\">Adobe Flash Player</a> benötigt und <a href=\"http://www.mozilla.com/firefox/\">im Browser muss Javascript</a> aktiviert sein.."
52
 
53
  #: ../nggfunctions.php:101
54
+ #: ../nggfunctions.php:475
55
  msgid "[Gallery not found]"
56
  msgstr "[Galerie nicht gefunden]"
57
 
58
+ #: ../nggfunctions.php:300
59
  msgid "[Album not found]"
60
  msgstr "[Album nicht gefunden]"
61
 
62
+ #: ../nggfunctions.php:587
63
  msgid "[SinglePic not found]"
64
  msgstr "[Bild nicht gefunden]"
65
 
66
+ #: ../nggfunctions.php:720
67
  msgid "Related images for"
68
  msgstr "Verwandte Bilder von"
69
 
70
+ #: ../nggfunctions.php:755
71
+ #: ../admin/admin.php:30
72
  msgid "Overview"
73
  msgstr "Übersicht"
74
 
76
  msgid "Copyright notes / Credits"
77
  msgstr "Copyright Hinweise / Credits"
78
 
79
+ #: ../admin/about.php:12
80
  msgid "NextGEN DEV Team"
81
  msgstr "NextGEN DEV Team"
82
 
83
+ #: ../admin/about.php:14
84
  msgid "This plugin is primarily developed, maintained, supported, documented by"
85
  msgstr "Dieses Plugin wird hauptsächlich entwickelt, dokumentiert und supportet von"
86
 
87
+ #: ../admin/about.php:14
88
  msgid "There are many other folks who have made contributions to this project :"
89
  msgstr "Folgende Personen haben die Entwicklung bisher unterstützt :"
90
 
91
+ #: ../admin/about.php:19
92
  msgid "Contributors / Tribute to"
93
  msgstr "Anerkennung / Hinweise"
94
 
95
+ #: ../admin/about.php:21
96
  msgid "If you study the code of this plugin, you will find out that we mixed a lot of good already existing code and ideas together."
97
  msgstr "Falls Du Dir den Sourcecode dieses Plugins ansiehst wirst Du merken, das wir verschiedene gute Scripte sowie Ideen verwendet haben."
98
 
99
+ #: ../admin/about.php:22
100
  msgid "So, we would like to thank the following people for their pioneer work (without this work it's impossible to create such a plugin so fast)"
101
  msgstr "Wir möchten folgenden Menschen für Ihre Pionier-Arbeit danken (ohne diese Vorleistung wäre es unmöglich ein Plugin so schnell zu entwickeln)"
102
 
103
+ #: ../admin/about.php:24
104
  msgid "for their great documented code"
105
  msgstr "für Ihren großartig dokumentierten Code"
106
 
107
+ #: ../admin/about.php:25
108
  msgid "for jQuery, which is the best Web2.0 framework"
109
  msgstr "für jQuery, das Beste Web 2.0 Framework"
110
 
111
+ #: ../admin/about.php:26
112
  msgid "for the fantastic PHP Thumbnail Class"
113
  msgstr "für die fantastische PHP Thumbnail Klasse"
114
 
115
+ #: ../admin/about.php:27
116
  msgid "for PclZip , a PHP library that manage ZIP archives"
117
  msgstr "für PclZip, eine ZIP PHP Library"
118
 
119
+ #: ../admin/about.php:28
120
  msgid "for a lot of very useful plugins and ideas"
121
  msgstr "für viele nützliche Plugins und Ideen"
122
 
123
+ #: ../admin/about.php:29
124
  msgid "for Shutter Reloaded, a real lightweight image effect"
125
  msgstr "für Shutter Reloaded, ein wirklich smarten Bildeffekt"
126
 
127
+ #: ../admin/about.php:30
128
  msgid "for the best Media Flash Scripts on earth"
129
  msgstr "für die besten Media Flash Scripte"
130
 
131
+ #: ../admin/about.php:31
132
  msgid "for the Fugue Iconset"
133
  msgstr "für das Fugue Iconset"
134
 
135
+ #: ../admin/about.php:32
136
  msgid "for the Watermark plugin"
137
  msgstr "für das Wasserzeichen Plugin"
138
 
139
+ #: ../admin/about.php:34
140
  msgid "If you didn't find your name on this list and there is some code which I integrate in my plugin, don't hesitate to send me a mail."
141
  msgstr "Falls Du deinen Namen nicht auf dieser Liste findest und es aber Code gibt, den ich in meinem Plugin verwendet habe, so schicken mir bitte sofort eine EMail."
142
 
143
+ #: ../admin/about.php:38
144
  msgid "How to support ?"
145
  msgstr "Unterstützung / Hilfe"
146
 
147
+ #: ../admin/about.php:40
148
  msgid "There exist several ways to contribute, help or support us in this work. Non of them are mandatory."
149
  msgstr "Es existieren verschiedene Möglichkeiten diese Arbeit zu unterstützen."
150
 
151
+ #: ../admin/about.php:42
152
  msgid "Send us bugfixes / code changes"
153
  msgstr "Schicke uns Verbesserungen / Bugfixes"
154
 
155
+ #: ../admin/about.php:42
156
  msgid "The most motivated support for this plugin are your ideas and brain work"
157
  msgstr "Der beste Support für dieses Plugin sind Deine Ideen und Gedanken"
158
 
159
+ #: ../admin/about.php:43
160
  msgid "Translate the plugin"
161
  msgstr "Übersetze das Plugin"
162
 
163
+ #: ../admin/about.php:43
164
  msgid "To help people to work with this plugin, I would like to have it in all available languages"
165
  msgstr "Um jedem das Arbeiten mit diesem Plugin zu vereinfachen, würde ich es gerne in allen möglichen Sprachen anbieten"
166
 
167
+ #: ../admin/about.php:44
168
  msgid "Donate the work via paypal"
169
  msgstr "Zeig Dich für diese Arbeit per PayPal dankbar"
170
 
171
+ #: ../admin/about.php:55
172
  msgid "No doubt a very useful and easy motivation :-)"
173
  msgstr "Kein Zweifel, eine schöne und einfache Motivationshilfe"
174
 
175
+ #: ../admin/about.php:57
176
  msgid "Place a link to the plugin in your blog/webpage"
177
  msgstr "Setze einen Link zu diesem Plugin auf Deinen Blog"
178
 
179
+ #: ../admin/about.php:57
180
  msgid "Yes, share and trackback is also a good support for this work "
181
  msgstr "Natürlich sind Trackbacks und Links auch ein guter Support für diese Arbeit"
182
 
183
+ #: ../admin/about.php:62
184
  msgid "Thanks!"
185
  msgstr "Vielen Dank!"
186
 
187
+ #: ../admin/about.php:64
188
  msgid "We would like to thank this people which support us in the work :"
189
  msgstr "Ich möchte mich bei diesen Menschen für Ihre Unterstützung bedanken:"
190
 
191
+ #: ../admin/about.php:162
192
  msgid "and all donators..."
193
  msgstr "und allen anderen Spendern..."
194
 
198
  msgstr "Upload fehlgeschlagen!"
199
 
200
  #: ../admin/addgallery.php:58
201
+ #: ../admin/functions.php:679
202
+ #: ../admin/functions.php:775
203
  msgid "No gallery selected !"
204
  msgstr "Keine Galerie ausgewählt !"
205
 
217
  msgstr "Durchsuche..."
218
 
219
  #: ../admin/addgallery.php:126
220
+ #: ../admin/addgallery.php:293
221
  msgid "Upload images"
222
  msgstr "Bilder hochladen"
223
 
224
  #: ../admin/addgallery.php:174
225
  #: ../admin/addgallery.php:186
226
+ #: ../admin/manage-galleries.php:54
227
  msgid "Add new gallery"
228
  msgstr "Neue Galerie erstellen"
229
 
233
  msgstr "Zip-Datei hochladen"
234
 
235
  #: ../admin/addgallery.php:179
236
+ #: ../admin/addgallery.php:246
237
  msgid "Import image folder"
238
  msgstr "Bilder-Verzeichnis importieren"
239
 
240
  #: ../admin/addgallery.php:181
241
+ #: ../admin/addgallery.php:263
242
  msgid "Upload Images"
243
  msgstr "Bilder hochladen"
244
 
245
  #: ../admin/addgallery.php:191
246
+ #: ../admin/manage-galleries.php:127
247
  msgid "New Gallery"
248
  msgstr "Neue Galerie"
249
 
250
  #: ../admin/addgallery.php:194
251
+ #: ../admin/manage-galleries.php:129
252
  msgid "Create a new , empty gallery below the folder"
253
  msgstr "Erstelle eine neue, leere Galerie unter dem Verzeichnis"
254
 
255
  #: ../admin/addgallery.php:196
256
+ #: ../admin/manage-galleries.php:131
257
  msgid "Allowed characters for file and folder names are"
258
  msgstr "Erlaubte Zeichen für die Datei- und Verzeichnisnamen sind"
259
 
269
  msgid "Upload a zip file with images"
270
  msgstr "Lade eine Zip-Datei mit Bildern hoch"
271
 
272
+ #: ../admin/addgallery.php:216
273
+ msgid "or enter a Zip-File URL"
274
+ msgstr "oder gib eine URL zur ZIP-Datei an"
275
+
276
+ #: ../admin/addgallery.php:218
277
+ msgid "Import a zip file with images from a url"
278
+ msgstr "Lade eine Zip-Datei mit Bildern über ein URL hoch"
279
+
280
+ #: ../admin/addgallery.php:222
281
+ #: ../admin/addgallery.php:272
282
  msgid "in to"
283
  msgstr "in"
284
 
285
+ #: ../admin/addgallery.php:224
286
  msgid "a new gallery"
287
  msgstr "eine neue Galerie"
288
 
289
+ #: ../admin/addgallery.php:235
290
  msgid "Note : The upload limit on your server is "
291
  msgstr "Hinweis : Das Upload-Limit auf dem Server beträgt "
292
 
293
+ #: ../admin/addgallery.php:239
294
  msgid "Start upload"
295
  msgstr "Upload starten"
296
 
297
+ #: ../admin/addgallery.php:251
298
  msgid "Import from Server path:"
299
  msgstr "Importieren aus Server-Pfad:"
300
 
301
+ #: ../admin/addgallery.php:254
302
  msgid " Please note : For safe-mode = ON you need to add the subfolder thumbs manually"
303
  msgstr "Achtung : Da der Safe-Mode (PHP.INI) eingeschaltet ist, mußt Du das Unterverzeichnis für die Vorschaubilder (\"thumbs\") manuell (per FTP) anlegen"
304
 
305
+ #: ../admin/addgallery.php:257
306
  msgid "Import folder"
307
  msgstr "Verzeichnis importieren"
308
 
309
+ #: ../admin/addgallery.php:268
310
  msgid "Upload image"
311
  msgstr "Bild hochladen"
312
 
313
+ #: ../admin/addgallery.php:274
314
  msgid "Choose gallery"
315
  msgstr "Wähle Galerie"
316
 
317
+ #: ../admin/addgallery.php:289
318
  msgid "The batch upload requires Adobe Flash 10, disable it if you have problems"
319
  msgstr "Das Batch-Upload benötigt Adbode Flash 10, wenn es Probleme gibt deaktiviere es besser."
320
 
321
+ #: ../admin/addgallery.php:289
322
  msgid "Disable flash upload"
323
  msgstr "Deaktiviere Batch-Upload"
324
 
325
+ #: ../admin/addgallery.php:291
326
  msgid "Upload multiple files at once by ctrl/shift-selecting in dialog"
327
  msgstr "Wähle im Dialog mit Ctrl/Shift mehrere Bilder gleichzeitig aus."
328
 
329
+ #: ../admin/addgallery.php:291
330
  msgid "Enable flash based upload"
331
  msgstr "Aktiviere Flash Batch Upload"
332
 
333
+ #: ../admin/admin.php:29
334
+ #: ../admin/admin.php:218
335
+ #: ../admin/admin.php:286
336
+ #: ../admin/functions.php:97
337
+ #: ../admin/functions.php:164
338
+ #: ../admin/manage-images.php:186
 
339
  msgid "Gallery"
340
  msgid_plural "Galleries"
341
  msgstr[0] "Galerie"
342
  msgstr[1] "Galerien"
343
 
344
+ #: ../admin/admin.php:31
345
  msgid "Add Gallery / Images"
346
  msgstr "Galerie / Bilder hinzufügen"
347
 
348
+ #: ../admin/admin.php:32
349
  msgid "Manage Gallery"
350
  msgstr "Galerie verwalten"
351
 
352
+ #: ../admin/admin.php:33
353
  msgid "Album"
354
  msgid_plural "Albums"
355
  msgstr[0] "Album"
356
  msgstr[1] "Alben"
357
 
358
+ #: ../admin/admin.php:34
359
  msgid "Tags"
360
  msgstr "Stichwörter"
361
 
362
+ #: ../admin/admin.php:35
363
  msgid "Options"
364
  msgstr "Optionen"
365
 
366
+ #: ../admin/admin.php:37
367
  msgid "Style"
368
  msgstr "Style"
369
 
370
+ #: ../admin/admin.php:38
371
  msgid "Setup Gallery"
372
  msgstr "Galerie Setup"
373
 
374
+ #: ../admin/admin.php:38
375
  msgid "Setup"
376
  msgstr "Setup"
377
 
378
+ #: ../admin/admin.php:40
379
  msgid "Roles"
380
  msgstr "Zugriff"
381
 
382
+ #: ../admin/admin.php:41
383
  msgid "About this Gallery"
384
  msgstr "Über diese Galerie"
385
 
386
+ #: ../admin/admin.php:41
387
  msgid "About"
388
  msgstr "Über"
389
 
390
+ #: ../admin/admin.php:43
391
  msgid "NextGEN Gallery"
392
  msgstr "NextGEN Gallery"
393
 
394
+ #: ../admin/admin.php:71
395
  msgid "A new version of NextGEN Gallery is available !"
396
  msgstr "Eine neue Version von NextGEN Gallery ist jetzt verfügbar"
397
 
398
+ #: ../admin/admin.php:71
399
  msgid "Download here"
400
  msgstr "Hier downloaden"
401
 
402
+ #: ../admin/admin.php:147
403
  msgid "You do not have the correct permission"
404
  msgstr "Du hast keine Zugriffsrechte"
405
 
406
+ #: ../admin/admin.php:148
407
  msgid "Unexpected Error"
408
  msgstr "Unerwarteter Fehler"
409
 
410
+ #: ../admin/admin.php:149
411
  msgid "A failure occurred"
412
  msgstr "Ein Fehler ist aufgetreten"
413
 
414
+ #: ../admin/admin.php:222
415
  msgid "<a href=\"http://dpotter.net/Technical/2008/03/nextgen-gallery-review-introduction/\" target=\"_blank\">Introduction</a>"
416
  msgstr "<a href=\"http://www.curlyrob.de/curlyrob/?page_id=129\" target=\"_blank\">Einführung</a>"
417
 
418
+ #: ../admin/admin.php:225
419
  msgid "<a href=\"http://dpotter.net/Technical/2008/03/nextgen-gallery-review-introduction/\" target=\"_blank\">Setup</a>"
420
  msgstr "<a href=\"http://www.curlyrob.de/curlyrob/?page_id=129\" target=\"_blank\">Setup</a>"
421
 
422
+ #: ../admin/admin.php:228
423
  msgid "<a href=\"http://alexrabe.boelinger.com/wordpress-plugins/nextgen-gallery/languages/\" target=\"_blank\">Translation by alex rabe</a>"
424
  msgstr "<a href=\"http://alexrabe.boelinger.com/wordpress-plugins/nextgen-gallery/languages/\" target=\"_blank\">Unterstütze bei der Übersetzung</a>"
425
 
426
+ #: ../admin/admin.php:231
427
  msgid "<a href=\"http://dpotter.net/Technical/2008/03/nextgen-gallery-review-introduction/\" target=\"_blank\">Roles / Capabilities</a>"
428
  msgstr "<a href=\"http://www.curlyrob.de/curlyrob/?page_id=129\" target=\"_blank\">Einführung</a>"
429
 
430
+ #: ../admin/admin.php:234
431
  msgid "<a href=\"http://dpotter.net/Technical/2008/03/nextgen-gallery-review-introduction/\" target=\"_blank\">Styles</a>"
432
  msgstr "<a href=\"http://www.curlyrob.de/curlyrob/?page_id=129\" target=\"_blank\">Einführung</a>"
433
 
434
+ #: ../admin/admin.php:235
435
  msgid "Templates"
436
  msgstr "Vorlagen"
437
 
438
+ #: ../admin/admin.php:238
439
+ #: ../admin/admin.php:244
440
  msgid "<a href=\"http://dpotter.net/Technical/2008/03/nextgen-gallery-review-introduction/\" target=\"_blank\">Gallery management</a>"
441
  msgstr "<a href=\"http://www.curlyrob.de/curlyrob/?page_id=129\" target=\"_blank\">Einführung</a>"
442
 
443
+ #: ../admin/admin.php:239
444
  msgid "Gallery example"
445
  msgstr "Galerie Beispiel"
446
 
447
+ #: ../admin/admin.php:245
448
+ #: ../admin/admin.php:255
449
  msgid "Gallery tags"
450
  msgstr "Galerie Stichwörter"
451
 
452
+ #: ../admin/admin.php:248
453
  msgid "<a href=\"http://dpotter.net/Technical/2008/03/nextgen-gallery-review-introduction/\" target=\"_blank\">Album management</a>"
454
  msgstr "<a href=\"http://www.curlyrob.de/curlyrob/?page_id=129\" target=\"_blank\">Einführung</a>"
455
 
456
+ #: ../admin/admin.php:249
457
  msgid "Album example"
458
  msgstr "Album Beispiel"
459
 
460
+ #: ../admin/admin.php:250
461
+ #: ../admin/admin.php:256
462
  msgid "Album tags"
463
  msgstr "Album Stichwörter"
464
 
465
+ #: ../admin/admin.php:253
466
  msgid "<a href=\"http://dpotter.net/Technical/2008/03/nextgen-gallery-review-introduction/\" target=\"_blank\">Gallery tags</a>"
467
  msgstr "<a href=\"http://www.curlyrob.de/curlyrob/?page_id=129\" target=\"_blank\">Einführung</a>"
468
 
469
+ #: ../admin/admin.php:254
470
  msgid "Related images"
471
  msgstr "Verwandte Bilder"
472
 
473
+ #: ../admin/admin.php:259
474
  msgid "<a href=\"http://dpotter.net/Technical/2008/03/nextgen-gallery-review-image-management/\" target=\"_blank\">Image management</a>"
475
  msgstr "<a href=\"http://dpotter.net/Technical/2008/03/nextgen-gallery-review-image-management/\" target=\"_blank\">Bilderverwaltung (Englisch)</a>"
476
 
477
+ #: ../admin/admin.php:260
478
  msgid "Custom fields"
479
  msgstr "Spezialfelder"
480
 
481
+ #: ../admin/admin.php:265
482
  msgid "Get help with NextGEN Gallery"
483
  msgstr "Weitere Hilfe zu NextGEN Gallery"
484
 
485
+ #: ../admin/admin.php:269
486
  msgid "More Help & Info"
487
  msgstr "Weitere Hilfe & Informationen"
488
 
489
+ #: ../admin/admin.php:271
490
  msgid "<a href=\"http://wordpress.org/tags/nextgen-gallery\" target=\"_blank\">Support Forums</a>"
491
  msgstr "<a href=\"http://wordpress.org/tags/nextgen-gallery\" target=\"_blank\">Support Forum (Englisch)</a>"
492
 
493
+ #: ../admin/admin.php:272
494
  msgid "FAQ"
495
  msgstr "FAQ (englisch)"
496
 
497
+ #: ../admin/admin.php:273
498
  msgid "Feature request"
499
  msgstr "Wünsch dir was"
500
 
501
+ #: ../admin/admin.php:274
502
  msgid "Get your language pack"
503
  msgstr "Lade deine Sprachdatei"
504
 
505
+ #: ../admin/admin.php:275
506
  msgid "Contribute development"
507
  msgstr "Entwicklung helfen"
508
 
509
+ #: ../admin/admin.php:276
510
  msgid "Download latest version"
511
  msgstr "Aktuelle Version downloaden"
512
 
513
+ #: ../admin/album.php:78
514
+ #: ../admin/album.php:91
515
+ #: ../admin/album.php:116
516
  msgid "Update Successfully"
517
  msgstr "Update erfolgreich"
518
 
519
+ #: ../admin/album.php:99
520
  msgid "Album deleted"
521
  msgstr "Album gelöscht"
522
 
523
+ #: ../admin/album.php:226
524
  msgid "Manage Albums"
525
  msgstr "Verwalte Alben"
526
 
527
+ #: ../admin/album.php:232
528
+ #: ../admin/album.php:275
529
  msgid "Select album"
530
  msgstr "Wähle Album"
531
 
532
+ #: ../admin/album.php:234
533
  msgid "No album selected"
534
  msgstr "Kein Album ausgewählt"
535
 
536
+ #: ../admin/album.php:245
537
  msgid "Update"
538
  msgstr "Aktualisiere"
539
 
540
+ #: ../admin/album.php:246
541
+ msgid "Edit album"
542
+ msgstr "Album ändern"
543
+
544
+ #: ../admin/album.php:247
545
+ #: ../admin/manage-galleries.php:107
546
+ #: ../admin/manage-images.php:376
547
  msgid "Delete"
548
  msgstr "Lösche"
549
 
550
+ #: ../admin/album.php:247
551
  msgid "Delete album ?"
552
  msgstr "Album löschen ?"
553
 
554
+ #: ../admin/album.php:249
555
  msgid "Add new album"
556
  msgstr "Album hinzufügen"
557
 
558
+ #: ../admin/album.php:251
559
  msgid "Add"
560
  msgstr "Hinzufügen"
561
 
562
+ #: ../admin/album.php:261
563
+ msgid "Show / hide used galleries"
564
+ msgstr "Zeige / Verstecke verwendete Galerien"
565
+
566
+ #: ../admin/album.php:261
567
  msgid "[Show all]"
568
  msgstr "[Alle zeigen]"
569
 
570
+ #: ../admin/album.php:262
571
+ msgid "Maximize the widget content"
572
+ msgstr "Maximiere die Widgets"
573
+
574
+ #: ../admin/album.php:262
575
  msgid "[Maximize]"
576
  msgstr "[Vergrößern]"
577
 
578
+ #: ../admin/album.php:263
579
+ msgid "Minimize the widget content"
580
+ msgstr "Minimiere die Widgets"
581
+
582
+ #: ../admin/album.php:263
583
  msgid "[Minimize]"
584
  msgstr "[Verkleinern]"
585
 
586
+ #: ../admin/album.php:265
587
+ msgid "After you create and select a album, you can drag and drop a gallery or another album into your new album below"
588
+ msgstr "Nachdem du ein Album erstellt und ausgewählt hast, kannst du per Drag & Drop eine Galerie oder ein anderes Album in das neue Album ziehen"
589
 
590
+ #: ../admin/album.php:291
591
+ msgid "Select gallery"
592
  msgstr "Wähle Galerie"
593
 
594
+ #: ../admin/album.php:320
595
+ msgid "Album ID"
596
+ msgstr "Album ID"
597
 
598
+ #: ../admin/album.php:333
599
  msgid "No album selected!"
600
  msgstr "Kein Album ausgewählt"
601
 
602
+ #: ../admin/album.php:353
603
+ msgid "Album name:"
604
+ msgstr "Album Name :"
605
+
606
+ #: ../admin/album.php:359
607
+ msgid "Album description:"
608
+ msgstr "Beschreibung:"
609
+
610
+ #: ../admin/album.php:365
611
+ msgid "Select a preview image:"
612
+ msgstr "Wähle Vorschaubild:"
613
 
614
+ #: ../admin/album.php:367
615
+ msgid "No picture"
616
+ msgstr "Kein Bild"
617
+
618
+ #: ../admin/album.php:381
619
+ #: ../admin/manage-galleries.php:136
620
+ #: ../admin/manage-images.php:289
621
+ #: ../admin/manage-images.php:456
622
+ #: ../admin/manage-images.php:491
623
+ msgid "OK"
624
+ msgstr "OK"
625
+
626
+ #: ../admin/album.php:383
627
+ #: ../admin/manage-galleries.php:138
628
+ #: ../admin/manage-images.php:458
629
+ #: ../admin/manage-images.php:493
630
+ msgid "Cancel"
631
+ msgstr "Abbrechen"
632
+
633
+ #: ../admin/album.php:455
634
  msgid "Name"
635
  msgstr "Name"
636
 
637
+ #: ../admin/album.php:456
638
+ #: ../admin/manage-galleries.php:72
639
+ #: ../admin/manage-images.php:200
640
  msgid "Title"
641
  msgstr "Titel"
642
 
643
+ #: ../admin/album.php:457
644
  msgid "Page"
645
  msgstr "Seite"
646
 
647
+ #: ../admin/functions.php:38
648
  msgid "No valid gallery name!"
649
  msgstr "Kein gültiger Galerie-Name!"
650
 
651
+ #: ../admin/functions.php:45
652
+ #: ../admin/functions.php:54
653
+ #: ../admin/functions.php:68
654
+ #: ../admin/functions.php:136
655
+ #: ../admin/functions.php:143
656
  msgid "Directory"
657
  msgstr "Verzeichnis"
658
 
659
+ #: ../admin/functions.php:45
660
  msgid "didn't exist. Please create first the main gallery folder "
661
  msgstr "nicht gefunden. Bitte erstelle zuerst das Hauptverzeichnis."
662
 
663
+ #: ../admin/functions.php:46
664
+ #: ../admin/functions.php:55
665
  msgid "Check this link, if you didn't know how to set the permission :"
666
  msgstr "Dieser Link zeigt dir wie man Verzeichnisrechte ändert :"
667
 
668
+ #: ../admin/functions.php:54
669
+ #: ../admin/functions.php:68
670
  msgid "is not writeable !"
671
  msgstr "ist schreibgeschützt !"
672
 
673
+ #: ../admin/functions.php:63
674
+ #: ../admin/functions.php:73
675
+ #: ../admin/functions.php:638
676
  msgid "Unable to create directory "
677
  msgstr "Kann Verzeichnis nicht erstellen "
678
 
679
+ #: ../admin/functions.php:77
680
  msgid "The server setting Safe-Mode is on !"
681
  msgstr "Auf dem Server ist Safe-Mode aktiviert (PHP.INI)"
682
 
683
+ #: ../admin/functions.php:78
684
  msgid "If you have problems, please create directory"
685
  msgstr "Wenn Probleme auftreten, erstelle bitte das Verzeichnis"
686
 
687
+ #: ../admin/functions.php:79
688
  msgid "and the thumbnails directory"
689
  msgstr "und das Thumbnails-Verzeichnis"
690
 
691
+ #: ../admin/functions.php:79
692
  msgid "with permission 777 manually !"
693
  msgstr "mit den Berechtigungen 777 manuell !"
694
 
695
+ #: ../admin/functions.php:97
696
  msgid "already exists"
697
  msgstr "gibt es bereits"
698
 
699
+ #: ../admin/functions.php:102
700
  #, php-format
701
  msgid "Gallery %1$s successfully created.<br/>You can show this gallery with the tag %2$s.<br/>"
702
  msgstr "Galerie %1$s erstellt..<br/>Du kannst diese Galerie jetzt mit dem Stichwort %2$s einbinden.<br/>"
703
 
704
+ #: ../admin/functions.php:105
705
  msgid "Edit gallery"
706
  msgstr "Galerie ändern"
707
 
708
+ #: ../admin/functions.php:136
709
  msgid "doesn&#96;t exist!"
710
  msgstr "gibt es nicht !"
711
 
712
+ #: ../admin/functions.php:143
713
  msgid "contains no pictures"
714
  msgstr "enthält keine Bilder"
715
 
716
+ #: ../admin/functions.php:161
717
  msgid "Database error. Could not add gallery!"
718
  msgstr "Datenbank-Fehler. Kann Galerie nicht hinzufügen!"
719
 
720
+ #: ../admin/functions.php:164
721
  msgid "successfully created!"
722
  msgstr "erfolgreich erstellt!"
723
 
724
+ #: ../admin/functions.php:193
725
+ #: ../admin/functions.php:751
726
+ #: ../admin/manage-images.php:279
 
727
  msgid "Create new thumbnails"
728
  msgstr "Neue Thumbnails erstellen"
729
 
730
+ #: ../admin/functions.php:196
731
  msgid " picture(s) successfully added"
732
  msgstr " Bild(er) erfolgreich hinzugefügt"
733
 
734
+ #: ../admin/functions.php:243
735
+ #: ../admin/functions.php:323
736
+ #: ../admin/functions.php:365
737
  msgid "Object didn't contain correct data"
738
  msgstr "Das Objekt enhält nicht die notwendigen Daten"
739
 
740
+ #: ../admin/functions.php:248
741
  msgid " is not writeable "
742
  msgstr "ist schreibgeschützt !"
743
 
744
+ #: ../admin/functions.php:330
745
+ #: ../admin/functions.php:368
746
  msgid " is not writeable"
747
  msgstr "ist schreibgeschützt !"
748
 
749
+ #: ../admin/functions.php:575
750
+ msgid "No valid URL path "
751
+ msgstr "Kein gültiger URL Pfad"
752
+
753
+ #: ../admin/functions.php:591
754
+ msgid "Import via cURL failed."
755
+ msgstr "Import via cURL abgebrochen"
756
+
757
+ #: ../admin/functions.php:606
758
  msgid "Uploaded file was no or a faulty zip file ! The server recognize : "
759
  msgstr "Die hochgeladene Datei war keine korrekte Zip-Datei. Servermeldung :"
760
 
761
+ #: ../admin/functions.php:622
762
  msgid "Could not get a valid foldername"
763
  msgstr "Konnte keinen gültigen Verzeichnisnamen finden"
764
 
765
+ #: ../admin/functions.php:633
766
  #, php-format
767
  msgid "Unable to create directory %s. Is its parent directory writable by the server?"
768
  msgstr "Kann das Verzeichnis %s nicht erstellen. Is das Hauptverzeichnis vielleicht schreibgeschützt ?"
769
 
770
+ #: ../admin/functions.php:648
771
  msgid "Zip-File successfully unpacked"
772
  msgstr "Zip-Datei erfolgreich entpackt"
773
 
774
+ #: ../admin/functions.php:687
775
+ #: ../admin/functions.php:802
776
  msgid "Failure in database, no gallery path set !"
777
  msgstr "Datenbankfehler! Kein Galerie-Pfad gesetzt !"
778
 
779
+ #: ../admin/functions.php:708
780
+ #: ../admin/functions.php:796
781
  msgid "is no valid image file!"
782
  msgstr "ist keine zulässige Bilddatei !"
783
 
784
+ #: ../admin/functions.php:722
785
+ #: ../admin/functions.php:938
786
+ #: ../admin/functions.php:1011
787
  #, php-format
788
  msgid "Unable to write to directory %s. Is this directory writable by the server?"
789
  msgstr "Kann das Verzeichnis %s nicht erstellen. Is das Hauptverzeichnis vielleicht schreibgeschützt ?"
790
 
791
+ #: ../admin/functions.php:729
792
+ #: ../admin/functions.php:819
793
  msgid "Error, the file could not moved to : "
794
  msgstr "Fehler: Diese Datei kann nicht verschoben werden zu :"
795
 
796
+ #: ../admin/functions.php:734
797
+ #: ../admin/functions.php:823
798
  msgid "Error, the file permissions could not set"
799
  msgstr "Fehler: Die Berechtigungen für diese Datei können nicht gesetzt werden"
800
 
801
+ #: ../admin/functions.php:755
802
  msgid " Image(s) successfully added"
803
  msgstr " Bild(er) erfolgreich hinzugefügt"
804
 
805
+ #: ../admin/functions.php:784
806
  msgid "Invalid upload. Error Code : "
807
  msgstr "Ungültiger Upload. Fehler Code :"
808
 
809
+ #: ../admin/functions.php:838
810
  msgid "Sorry, you have used your space allocation. Please delete some files to upload more files."
811
  msgstr "Schade, dein freier Speicher scheint aufgebraucht zu sein. Bitte lösche zuerst ein paar Bilder."
812
 
813
+ #: ../admin/functions.php:878
814
  #, php-format
815
  msgid "SAFE MODE Restriction in effect! You need to create the folder <strong>%s</strong> manually"
816
  msgstr "SAFE MODE Einschränkungen ist aktiv. Du must das Verzeichnis <strong>%s</strong> manuell anlegen."
817
 
818
+ #: ../admin/functions.php:879
819
  #, php-format
820
  msgid "When safe_mode is on, PHP checks to see if the owner (%s) of the current script matches the owner (%s) of the file to be operated on by a file function or its directory"
821
  msgstr "Wenn der Safe-Mode eingeschaltet ist, überprüft PHP ob der Besitzer (%s) des Skript mit dem Besitzer (%s) der Datei/Verzeichnis übereinstimmt."
822
 
823
+ #: ../admin/functions.php:932
824
+ #: ../admin/functions.php:1005
825
  msgid "The destination gallery does not exist"
826
  msgstr "Die ausgewählte Galerie existiert nicht"
827
 
828
+ #: ../admin/functions.php:963
829
  #, php-format
830
  msgid "Failed to move image %1$s to %2$s"
831
  msgstr "Konte das Bild %1$s nicht nach %2$s verschieben"
832
 
833
+ #: ../admin/functions.php:981
834
  #, php-format
835
  msgid "Moved %1$s picture(s) to gallery : %2$s ."
836
  msgstr " %1$s Bild(er) in Galerie : %2$s verschoben."
837
 
838
+ #: ../admin/functions.php:1038
839
  #, php-format
840
  msgid "Failed to copy image %1$s to %2$s"
841
  msgstr "Konnte das Bild %1$s nicht nach %2$s kopieren"
842
 
843
+ #: ../admin/functions.php:1050
844
  #, php-format
845
  msgid "Failed to copy database row for picture %s"
846
  msgstr "Fehler bei der Datenbank-Operation für Bild %s"
847
 
848
+ #: ../admin/functions.php:1058
849
  #, php-format
850
  msgid "Image %1$s (%2$s) copied as image %3$s (%4$s) &raquo; The file already existed in the destination gallery."
851
  msgstr "Bild %1$s (%2$s) als Bild %3$s (%4$s) kopiert &raquo; Die Datei existierte bereits."
852
 
853
+ #: ../admin/functions.php:1061
854
  #, php-format
855
  msgid "Image %1$s (%2$s) copied as image %3$s (%4$s)"
856
  msgstr "Bild %1$s (%2$s) kopiert als Bild %3$s (%4$s)"
857
 
858
+ #: ../admin/functions.php:1070
859
  #, php-format
860
  msgid "Copied %1$s picture(s) to gallery: %2$s ."
861
  msgstr "Kopiere %1$s Bild(er) in die Galerie : %2$s ."
864
  msgid "Sorry, NextGEN Gallery works only with a role called administrator"
865
  msgstr "Tut mir leid, aber NextGEN Galerie benötigt zwingend die Rolle \"Administrator\""
866
 
867
+ #: ../admin/install.php:107
868
  msgid "NextGEN Gallery : Tables could not created, please check your database settings"
869
  msgstr "NextGEN Gallery : Tabellen konnten nicht erstellt werden, überprüfe deine Datenbank"
870
 
871
+ #: ../admin/install.php:165
872
  msgid "[Show as slideshow]"
873
  msgstr "[Zeige als Diashow]"
874
 
875
+ #: ../admin/install.php:166
876
  msgid "[Show picture list]"
877
  msgstr "[Zeige Bilder-Liste]"
878
 
879
+ #: ../admin/manage-galleries.php:26
880
+ #: ../admin/manage-images.php:54
881
  msgid "&laquo;"
882
  msgstr "&laquo;"
883
 
884
+ #: ../admin/manage-galleries.php:27
885
+ #: ../admin/manage-images.php:55
886
  msgid "&raquo;"
887
  msgstr "&raquo;"
888
 
889
+ #: ../admin/manage-galleries.php:42
890
  msgid "Gallery Overview"
891
  msgstr "Galerie Übersicht"
892
 
893
+ #: ../admin/manage-galleries.php:45
894
+ #: ../admin/manage-galleries.php:48
895
+ #: ../admin/manage-images.php:173
896
+ #: ../admin/manage-images.php:176
897
+ msgid "Search Images"
898
+ msgstr "Suche Bilder"
899
+
900
+ #: ../admin/manage-galleries.php:60
901
+ #: ../admin/manage-images.php:268
902
  #, php-format
903
  msgid "Displaying %s&#8211;%s of %s"
904
  msgstr "Zeige %s&#8211;%s von %s"
905
 
906
+ #: ../admin/manage-galleries.php:71
907
+ #: ../admin/manage-images.php:516
908
+ msgid "ID"
909
+ msgstr "ID"
910
+
911
+ #: ../admin/manage-galleries.php:73
912
+ #: ../admin/manage-images.php:211
913
+ #: ../admin/manage-images.php:521
914
  msgid "Description"
915
  msgstr "Beschreibung"
916
 
917
+ #: ../admin/manage-galleries.php:74
918
+ #: ../admin/manage-images.php:231
919
  msgid "Author"
920
  msgstr "Autor"
921
 
922
+ #: ../admin/manage-galleries.php:75
923
  msgid "Page ID"
924
  msgstr "Seiten ID"
925
 
926
+ #: ../admin/manage-galleries.php:76
927
  msgid "Quantity"
928
  msgstr "Anzahl"
929
 
930
+ #: ../admin/manage-galleries.php:77
931
  msgid "Action"
932
  msgstr "Aktion"
933
 
934
+ #: ../admin/manage-galleries.php:94
935
  msgid "Edit"
936
  msgstr "Bearbeiten"
937
 
938
+ #: ../admin/manage-galleries.php:107
939
  msgid "Delete this gallery ?"
940
  msgstr "Diese Galerie löschen ?"
941
 
942
+ #: ../admin/manage-galleries.php:114
943
+ #: ../admin/manage-images.php:433
944
  msgid "No entries found"
945
  msgstr "Keine Einträge gefunden"
946
 
947
+ #: ../admin/manage-images.php:31
948
  msgid "Gallery not found."
949
  msgstr "Galerie nicht gefunden"
950
 
951
+ #: ../admin/manage-images.php:37
952
  msgid "Sorry, you have no access here"
953
  msgstr "Sorry, du hast nicht genügend Rechte"
954
 
955
+ #: ../admin/manage-images.php:130
956
  msgid "No images selected"
957
  msgstr "Keine Bilder ausgewählt"
958
 
959
+ #: ../admin/manage-images.php:150
960
  #, php-format
961
  msgid ""
962
  "You are about to start the bulk edit for %s images \n"
967
  " \n"
968
  " 'Abbrechen' um zu stoppen, 'OK' um die Bearbeitung durchzuführen."
969
 
970
+ #: ../admin/manage-images.php:170
971
+ #, php-format
972
+ msgid "Search results for &#8220;%s&#8221;"
973
+ msgstr "Suchergebinsse für &#8220;%s&#8221;"
974
+
975
+ #: ../admin/manage-images.php:196
976
  msgid "Gallery settings"
977
  msgstr "Galerie Einstellungen"
978
 
979
+ #: ../admin/manage-images.php:196
980
  msgid "Click here for more settings"
981
  msgstr "Hier klicken für weitere Einstellungen"
982
 
983
+ #: ../admin/manage-images.php:202
984
  msgid "Page Link to"
985
  msgstr "Seite verlinkt zu"
986
 
987
+ #: ../admin/manage-images.php:205
988
  msgid "Not linked"
989
  msgstr "Nicht verlinkt"
990
 
991
+ #: ../admin/manage-images.php:213
992
  msgid "Preview image"
993
  msgstr "Vorschau-Bild"
994
 
995
+ #: ../admin/manage-images.php:216
996
  msgid "No Picture"
997
  msgstr "Kein Bild"
998
 
999
+ #: ../admin/manage-images.php:229
1000
  msgid "Path"
1001
  msgstr "Pfad"
1002
 
1003
+ #: ../admin/manage-images.php:245
1004
  msgid "Create new page"
1005
  msgstr "Neue Seite erstellen"
1006
 
1007
+ #: ../admin/manage-images.php:248
1008
  msgid "Main page (No parent)"
1009
  msgstr "Haupseite (keine Unterseite)"
1010
 
1011
+ #: ../admin/manage-images.php:251
1012
  msgid "Add page"
1013
  msgstr "Seite hinzufügen"
1014
 
1015
+ #: ../admin/manage-images.php:257
1016
  msgid "Scan Folder for new images"
1017
  msgstr "Überprüfe Verzeichnis nach neuen Bildern"
1018
 
1019
+ #: ../admin/manage-images.php:258
1020
+ #: ../admin/manage-images.php:295
1021
+ #: ../admin/manage-images.php:439
1022
  msgid "Save Changes"
1023
  msgstr "Änderungen speichern"
1024
 
1025
+ #: ../admin/manage-images.php:277
1026
  msgid "No action"
1027
  msgstr "Keine Aktion"
1028
 
1029
+ #: ../admin/manage-images.php:278
 
1030
  msgid "Set watermark"
1031
  msgstr "Wasserzeichen setzen"
1032
 
1033
+ #: ../admin/manage-images.php:280
 
1034
  msgid "Resize images"
1035
  msgstr "Bilder verkleinern"
1036
 
1037
+ #: ../admin/manage-images.php:281
1038
  msgid "Delete images"
1039
  msgstr "Bilder löschen"
1040
 
1041
+ #: ../admin/manage-images.php:282
1042
  msgid "Import metadata"
1043
  msgstr "Metadaten importieren"
1044
 
1045
+ #: ../admin/manage-images.php:283
1046
  msgid "Copy to..."
1047
  msgstr "Kopiere nach..."
1048
 
1049
+ #: ../admin/manage-images.php:284
1050
  msgid "Move to..."
1051
  msgstr "Verschiebe nach..."
1052
 
1053
+ #: ../admin/manage-images.php:285
1054
  msgid "Add tags"
1055
  msgstr "Stichwörter hinzufügen"
1056
 
1057
+ #: ../admin/manage-images.php:286
1058
  msgid "Delete tags"
1059
  msgstr "Stichwörter löschen"
1060
 
1061
+ #: ../admin/manage-images.php:287
1062
  msgid "Overwrite tags"
1063
  msgstr "Stichwörter überschreiben"
1064
 
1065
+ #: ../admin/manage-images.php:292
 
 
 
 
 
 
1066
  msgid "Sort gallery"
1067
  msgstr "Sortiere Bilder"
1068
 
1069
+ #: ../admin/manage-images.php:373
1070
  #, php-format
1071
  msgid "View \"%s\""
1072
  msgstr "Anzeigen \"%s\""
1073
 
1074
+ #: ../admin/manage-images.php:373
1075
  msgid "View"
1076
  msgstr "Ansehen"
1077
 
1078
+ #: ../admin/manage-images.php:374
1079
  msgid "Show Meta data"
1080
  msgstr "Zeige Metadaten"
1081
 
1082
+ #: ../admin/manage-images.php:374
1083
  msgid "Meta"
1084
  msgstr "Meta"
1085
 
1086
+ #: ../admin/manage-images.php:375
1087
  msgid "Customize thumbnail"
1088
  msgstr "Thumbnails anpassen"
1089
 
1090
+ #: ../admin/manage-images.php:375
1091
  msgid "Edit thumb"
1092
  msgstr "Thumbnail ändern"
1093
 
1094
+ #: ../admin/manage-images.php:376
1095
  #, php-format
1096
  msgid "Delete \"%s\""
1097
  msgstr "Lösche \"%s\""
1098
 
1099
+ #: ../admin/manage-images.php:452
1100
  msgid "Enter the tags"
1101
  msgstr "Stichwörter angeben"
1102
 
1103
+ #: ../admin/manage-images.php:475
 
 
 
 
 
1104
  msgid "Select the destination gallery:"
1105
  msgstr "Galerie auswählen:"
1106
 
1107
+ #: ../admin/manage-images.php:517
1108
  msgid "Thumbnail"
1109
  msgstr "Thumbnail"
1110
 
1111
+ #: ../admin/manage-images.php:519
1112
  #: ../admin/manage-sort.php:80
1113
  msgid "Filename"
1114
  msgstr "Dateiname"
1115
 
1116
+ #: ../admin/manage-images.php:521
1117
  msgid "Alt &amp; Title Text"
1118
  msgstr "Alt &amp; Titel Text"
1119
 
1120
+ #: ../admin/manage-images.php:522
1121
  msgid "Tags (comma separated list)"
1122
  msgstr "Stichwörter (Tags)"
1123
 
1124
+ #: ../admin/manage-images.php:524
1125
  msgid "exclude"
1126
  msgstr "ausschließen"
1127
 
1169
  msgid "Descending"
1170
  msgstr "Absteigend"
1171
 
1172
+ #: ../admin/manage.php:82
1173
  #: ../admin/manage.php:100
1174
  msgid "deleted successfully"
1175
  msgstr "erfolgreich gelöscht"
1176
 
1177
  #: ../admin/manage.php:100
1178
+ #: ../admin/tinymce/window.php:31
1179
  msgid "Picture"
1180
  msgstr "Bild"
1181
 
1182
+ #: ../admin/manage.php:141
1183
  msgid "Pictures deleted successfully "
1184
  msgstr "Bilder erfolgreich gelöscht"
1185
 
1186
+ #: ../admin/manage.php:147
1187
  msgid "Import metadata finished"
1188
  msgstr "Import der Metadaten beendet"
1189
 
1190
+ #: ../admin/manage.php:155
1191
  msgid "Operation successful. Please clear your browser cache."
1192
  msgstr "Thumbnails erfolgreich erstellt. Bitte Browser-Cache aktualisieren."
1193
 
1194
+ #: ../admin/manage.php:218
1195
  msgid "Tags changed"
1196
  msgstr "Stichwörter geändert"
1197
 
1198
+ #: ../admin/manage.php:245
1199
  msgid "Update successful"
1200
  msgstr "Aktualisierung erfolgreich"
1201
 
1202
+ #: ../admin/manage.php:279
1203
  msgid "New gallery page ID"
1204
  msgstr "Neue Galerie Seiten ID"
1205
 
1206
+ #: ../admin/manage.php:279
1207
  msgid "created"
1208
  msgstr "erstellt"
1209
 
1296
  msgid "Save all changes"
1297
  msgstr "Änderungen Speichern"
1298
 
1299
+ #: ../admin/overview.php:16
1300
+ #: ../admin/overview.php:46
1301
  msgid "NextGEN Gallery Overview"
1302
  msgstr "NextGEN Galerie Übersicht"
1303
 
1304
+ #: ../admin/overview.php:126
1305
+ msgid "Thanks to all donators..."
1306
+ msgstr "Danke an alle Spender..."
1307
+
1308
+ #: ../admin/overview.php:148
1309
+ msgid "View all"
1310
+ msgstr "Alle ansehen"
1311
+
1312
+ #: ../admin/overview.php:187
1313
  #, php-format
1314
  msgid "Newsfeed could not be loaded. Check the <a href=\"%s\">front page</a> to check for updates."
1315
  msgstr "Der Newsfeed kann nicht geladen werden. Schaue auf die <a href=\"%s\">Hauptseite</a> um Updates mitzubekommen."
1316
 
1317
+ #: ../admin/overview.php:207
1318
  msgid "At a Glance"
1319
  msgstr "Übersicht"
1320
 
1321
+ #: ../admin/overview.php:213
1322
  msgid "Image"
1323
  msgid_plural "Images"
1324
  msgstr[0] "Bild"
1325
  msgstr[1] "Bilder"
1326
 
1327
+ #: ../admin/overview.php:234
1328
  msgid "Upload pictures"
1329
  msgstr "Bilder hochladen"
1330
 
1331
+ #: ../admin/overview.php:235
1332
  msgid "Here you can control your images, galleries and albums."
1333
  msgstr "Hier kannst Du die Bilder, Galerien und Alben verwalten."
1334
 
1335
+ #: ../admin/overview.php:239
1336
  msgid "Gallery Administrator"
1337
  msgstr "Galerie-Administrator"
1338
 
1339
+ #: ../admin/overview.php:239
1340
  msgid "Gallery Editor"
1341
  msgstr "Galerie-Mitarbeiter"
1342
 
1343
+ #: ../admin/overview.php:240
1344
  #, php-format
1345
  msgid "You currently have %s rights."
1346
  msgstr "Du hast derzeit %s Rechte."
1347
 
1348
+ #: ../admin/overview.php:247
1349
  msgid "Welcome to NextGEN Gallery !"
1350
  msgstr "Willkomen bei NextGEN Gallery"
1351
 
1352
+ #: ../admin/overview.php:248
1353
  msgid "Latest News"
1354
  msgstr "Letzte Informationen"
1355
 
1356
+ #: ../admin/overview.php:249
1357
+ msgid "Recent donators"
1358
+ msgstr "Neusten Spender"
1359
+
1360
+ #: ../admin/overview.php:250
1361
  msgid "Server Settings"
1362
  msgstr "Server- Einstellungen"
1363
 
1364
+ #: ../admin/overview.php:251
1365
  msgid "Graphic Library"
1366
  msgstr "Grafik Bibliothek"
1367
 
1368
+ #: ../admin/overview.php:267
1369
  msgid "No GD support"
1370
  msgstr "Keine GD Unterstützung"
1371
 
1372
+ #: ../admin/overview.php:274
1373
+ #: ../admin/overview.php:313
1374
+ #: ../admin/overview.php:316
1375
+ #: ../admin/overview.php:319
1376
  msgid "Yes"
1377
  msgstr "Ja"
1378
 
1379
+ #: ../admin/overview.php:276
1380
+ #: ../admin/overview.php:314
1381
+ #: ../admin/overview.php:317
1382
+ #: ../admin/overview.php:320
1383
  msgid "No"
1384
  msgstr "Nein"
1385
 
1386
+ #: ../admin/overview.php:290
1387
  msgid "Not set"
1388
  msgstr "Nicht gesetzt"
1389
 
1390
+ #: ../admin/overview.php:292
1391
+ #: ../admin/overview.php:295
1392
  msgid "On"
1393
  msgstr "An"
1394
 
1395
+ #: ../admin/overview.php:293
1396
+ #: ../admin/overview.php:296
1397
  msgid "Off"
1398
  msgstr "Aus"
1399
 
1400
+ #: ../admin/overview.php:299
1401
+ #: ../admin/overview.php:302
1402
+ #: ../admin/overview.php:305
1403
+ #: ../admin/overview.php:308
1404
+ #: ../admin/overview.php:311
1405
  msgid "N/A"
1406
  msgstr "N/A"
1407
 
1408
+ #: ../admin/overview.php:310
1409
  msgid " MByte"
1410
  msgstr " MByte"
1411
 
1412
+ #: ../admin/overview.php:323
1413
  msgid "Operating System"
1414
  msgstr "Betriebssystem"
1415
 
1416
+ #: ../admin/overview.php:324
1417
  msgid "Server"
1418
  msgstr "Server"
1419
 
1420
+ #: ../admin/overview.php:325
1421
  msgid "Memory usage"
1422
  msgstr "Speicherverbrauch"
1423
 
1424
+ #: ../admin/overview.php:326
1425
  msgid "MYSQL Version"
1426
  msgstr "MySQL Version"
1427
 
1428
+ #: ../admin/overview.php:327
1429
  msgid "SQL Mode"
1430
  msgstr "SQL Modus"
1431
 
1432
+ #: ../admin/overview.php:328
1433
  msgid "PHP Version"
1434
  msgstr "PHP Version"
1435
 
1436
+ #: ../admin/overview.php:329
1437
  msgid "PHP Safe Mode"
1438
  msgstr "PHP Safe Mode"
1439
 
1440
+ #: ../admin/overview.php:330
1441
  msgid "PHP Allow URL fopen"
1442
  msgstr "PHP Allow URL fopen"
1443
 
1444
+ #: ../admin/overview.php:331
1445
  msgid "PHP Memory Limit"
1446
  msgstr "PHP Memory Limit"
1447
 
1448
+ #: ../admin/overview.php:332
1449
  msgid "PHP Max Upload Size"
1450
  msgstr "PHP Max Upload Größe"
1451
 
1452
+ #: ../admin/overview.php:333
1453
  msgid "PHP Max Post Size"
1454
  msgstr "PHP Max Post Größe"
1455
 
1456
+ #: ../admin/overview.php:334
1457
  msgid "PHP Max Script Execute Time"
1458
  msgstr "PHP Max Script Execute Time"
1459
 
1460
+ #: ../admin/overview.php:335
1461
  msgid "PHP Exif support"
1462
  msgstr "PHP Exif Modul"
1463
 
1464
+ #: ../admin/overview.php:336
1465
  msgid "PHP IPTC support"
1466
  msgstr "PHP IPTC Modul"
1467
 
1468
+ #: ../admin/overview.php:337
1469
  msgid "PHP XML support"
1470
  msgstr "PHP XML Modul"
1471
 
1472
+ #: ../admin/overview.php:395
1473
  msgid "Storage Space"
1474
  msgstr "Speicherplatz"
1475
 
1476
+ #: ../admin/overview.php:398
1477
  msgid "Upload Space Used:"
1478
  msgstr "Verbrauchter Uploadspeicher:"
1479
 
1480
+ #: ../admin/overview.php:404
1481
  msgid "Upload Space Remaining:"
1482
  msgstr "Verbleibender Speicher:"
1483
 
1861
 
1862
  #: ../admin/settings.php:420
1863
  msgid "The accessing of URL files is disabled at your server (allow_url_fopen)"
1864
+ msgstr "Der Dateizugriff von URLs ist auf diesem Server deaktiviert (allow_url_fopen)"
1865
 
1866
  #: ../admin/settings.php:423
1867
  msgid "Use text as watermark"
2319
  msgid "Upgrade database structure..."
2320
  msgstr "Aktualisiere die Datenbank-Struturen..."
2321
 
2322
+ #: ../admin/upgrade.php:92
2323
+ #: ../admin/upgrade.php:102
2324
+ #: ../admin/upgrade.php:109
2325
+ #: ../admin/upgrade.php:120
2326
  msgid "finished"
2327
  msgstr "beendet"
2328
 
2329
+ #: ../admin/upgrade.php:100
2330
  msgid "Update file structure..."
2331
  msgstr "Aktualisiere Verzeichnisse..."
2332
 
2333
+ #: ../admin/upgrade.php:107
2334
  msgid "Import date and time information..."
2335
  msgstr "Importiere Datum/Uhrzeit..."
2336
 
2337
+ #: ../admin/upgrade.php:115
2338
  msgid "Move imagerotator to new location..."
2339
  msgstr "Verschiebe den Image Rotator in ein neues Verzeichnis..."
2340
 
2341
+ #: ../admin/upgrade.php:184
2342
  msgid "Some folders/files could not renamed, please recheck the permission and rescan the folder in the manage gallery section."
2343
  msgstr "Einige Verzeichnisse / Bilder konnten nicht umbenannt werden, bitte überprüfe die Zugriffsrechte und Scanne dann das Verzeichnis neu ein."
2344
 
2345
+ #: ../admin/upgrade.php:186
2346
  msgid "Rename failed"
2347
  msgstr "Konnte nicht umbenannt werden"
2348
 
2349
+ #: ../admin/upgrade.php:281
2350
+ #: ../admin/upgrade.php:300
2351
  msgid "Upgrade NextGEN Gallery"
2352
  msgstr "NextGEN Gallery aktualisieren"
2353
 
2354
+ #: ../admin/upgrade.php:282
2355
  msgid "The script detect that you upgrade from a older version."
2356
  msgstr "Es wurde eine ältere NextGEN Datenbank erkannt."
2357
 
2358
+ #: ../admin/upgrade.php:283
2359
  msgid "Your database tables for NextGEN Gallery is out-of-date, and must be upgraded before you can continue."
2360
  msgstr "Deinen Datenbank für NextGEN Gallery ist nicht auf dem aktuellen Stand, Sie muss jetzt aktualisiert werden."
2361
 
2362
+ #: ../admin/upgrade.php:284
2363
  msgid "If you would like to downgrade later, please make first a complete backup of your database and the images."
2364
  msgstr "Wenn du wieder auf eine älter Version zurückgehen möchtest, musst du vorher die Datenbank sichern."
2365
 
2366
+ #: ../admin/upgrade.php:285
2367
  msgid "The upgrade process may take a while, so please be patient."
2368
  msgstr "Der Upgrade Prozess kann etwas dauern, bitte sei geduldig..."
2369
 
2370
+ #: ../admin/upgrade.php:286
2371
  msgid "Start upgrade now"
2372
  msgstr "Aktualisierung starten"
2373
 
2374
+ #: ../admin/upgrade.php:302
2375
  msgid "Upgrade sucessful"
2376
  msgstr "Aktualisierung erfolgreich"
2377
 
2378
+ #: ../admin/upgrade.php:303
2379
  msgid "Continue"
2380
  msgstr "Weiter"
2381
 
2435
  msgid "You are not allowed to be here"
2436
  msgstr "Keine Zugrangsberechtigung"
2437
 
 
 
 
 
2438
  #: ../admin/tinymce/window.php:56
2439
  #: ../admin/tinymce/window.php:84
2440
  msgid "Show as"
2464
  msgid "Select picture"
2465
  msgstr "Wähle Bild"
2466
 
 
 
 
 
2467
  #: ../admin/tinymce/window.php:111
2468
  msgid "Width x Height"
2469
  msgstr "Breite x Höhe"
2492
  msgid "Insert"
2493
  msgstr "Einfügen"
2494
 
2495
+ #: ../lib/core.php:425
2496
  #, php-format
2497
  msgid "Note : Based on your server memory limit you should not upload larger images then <strong>%d x %d</strong> pixel"
2498
  msgstr "Hinweis : Basierend auf der Speicherbegrenzung auf dem Server, solltest du keine Bilder grösser als <strong>%d x %d</strong> Pixel hochladen"
2620
  msgid "Format"
2621
  msgstr "Format"
2622
 
2623
+ #: ../lib/ngg-db.php:290
2624
+ #: ../lib/ngg-db.php:291
2625
  msgid "Album overview"
2626
  msgstr "Album Übersicht"
2627
 
2697
  msgid "%s slug(s) edited."
2698
  msgstr "%s Stichwörter geändert"
2699
 
2700
+ #: ../view/album-compact.php:32
2701
+ #: ../view/album-extend.php:30
2702
  msgid "Photos"
2703
  msgstr "Fotos"
2704
 
2857
 
2858
  #: ../widgets/widgets.php:336
2859
  msgid "Gallery IDs, separated by commas."
2860
+ msgstr "Galerie IDs, mit Kommas getrennt"
2861
 
2862
  #: ../xml/media-rss.php:58
2863
  msgid "No galleries have been yet created."
2882
  msgid "Invalid MediaRSS command (%s)."
2883
  msgstr "Ungültiger Media RSS Befehl (%s)"
2884
 
2885
+ #, fuzzy
2886
+ #~ msgid "Search Media"
2887
+ #~ msgstr "Suche nach Stichwörter"
2888
+ #~ msgid "Select Gallery"
2889
+ #~ msgstr "Wähle Galerie"
2890
+ #~ msgid "Album Page ID"
2891
+ #~ msgstr "Album Seiten ID (Page ID)"
2892
  #~ msgid "Import a folder with all images."
2893
  #~ msgstr "Importiere ein Verzeichnis mit Bildern."
2894
  #~ msgid "Show tags"
2945
  #~ msgstr "Wie viele NextGEN Gallery Widgets möchtest du haben ?"
2946
  #~ msgid "Save"
2947
  #~ msgstr "Speichern"
 
 
2948
  #~ msgid "for Simple:Press Forum, it saved me a lot of time"
2949
  #~ msgstr "für das Simple:Press Forum, welches mir viel Zeit sparte"
2950
  #~ msgid "Sorry, NextGEN Gallery works only under WordPress 2.5 or higher"
lang/{nggallery.po → nggallery.pot} RENAMED
@@ -2,8 +2,8 @@ msgid ""
2
  msgstr ""
3
  "Project-Id-Version: NextGEN Gallery\n"
4
  "Report-Msgid-Bugs-To: \n"
5
- "POT-Creation-Date: 2009-03-21 13:53+0100\n"
6
- "PO-Revision-Date: 2009-03-21 13:53+0100\n"
7
  "Last-Translator: Alex Rabe\n"
8
  "Language-Team: Alex Rabe\n"
9
  "MIME-Version: 1.0\n"
@@ -17,53 +17,57 @@ msgstr ""
17
  "X-Poedit-SearchPath-0: .\n"
18
  "X-Poedit-SearchPath-1: ..\n"
19
 
20
- #: ../nggallery.php:156
21
  msgid "Sorry, NextGEN Gallery works only with a Memory Limit of 16 MB higher"
22
  msgstr "asd"
23
 
24
- #: ../nggallery.php:181
25
  msgid "Picture tag"
26
  msgstr ""
27
 
28
- #: ../nggallery.php:182
29
  msgid "Picture tag: %2$l."
30
  msgstr ""
31
 
32
- #: ../nggallery.php:183
33
  msgid "Separate picture tags with commas."
34
  msgstr ""
35
 
36
- #: ../nggallery.php:276
37
  msgid "L O A D I N G"
38
  msgstr ""
39
 
40
- #: ../nggallery.php:277
41
  msgid "Click to Close"
42
  msgstr ""
43
 
 
 
 
 
44
  #: ../nggfunctions.php:37
45
  msgid "The <a href=\"http://www.macromedia.com/go/getflashplayer\">Flash Player</a> and <a href=\"http://www.mozilla.com/firefox/\">a browser with Javascript support</a> are needed.."
46
  msgstr "asd"
47
 
48
  #: ../nggfunctions.php:101
49
- #: ../nggfunctions.php:437
50
  msgid "[Gallery not found]"
51
  msgstr ""
52
 
53
- #: ../nggfunctions.php:292
54
  msgid "[Album not found]"
55
  msgstr ""
56
 
57
- #: ../nggfunctions.php:540
58
  msgid "[SinglePic not found]"
59
  msgstr ""
60
 
61
- #: ../nggfunctions.php:665
62
  msgid "Related images for"
63
  msgstr ""
64
 
65
- #: ../nggfunctions.php:700
66
- #: ../admin/admin.php:32
67
  msgid "Overview"
68
  msgstr ""
69
 
@@ -71,119 +75,119 @@ msgstr ""
71
  msgid "Copyright notes / Credits"
72
  msgstr ""
73
 
74
- #: ../admin/about.php:10
75
  msgid "NextGEN DEV Team"
76
  msgstr ""
77
 
78
- #: ../admin/about.php:11
79
  msgid "This plugin is primarily developed, maintained, supported, documented by"
80
  msgstr ""
81
 
82
- #: ../admin/about.php:11
83
  msgid "There are many other folks who have made contributions to this project :"
84
  msgstr ""
85
 
86
- #: ../admin/about.php:13
87
  msgid "Contributors / Tribute to"
88
  msgstr ""
89
 
90
- #: ../admin/about.php:14
91
  msgid "If you study the code of this plugin, you will find out that we mixed a lot of good already existing code and ideas together."
92
  msgstr ""
93
 
94
- #: ../admin/about.php:15
95
  msgid "So, we would like to thank the following people for their pioneer work (without this work it's impossible to create such a plugin so fast)"
96
  msgstr ""
97
 
98
- #: ../admin/about.php:17
99
  msgid "for their great documented code"
100
  msgstr ""
101
 
102
- #: ../admin/about.php:18
103
  msgid "for jQuery, which is the best Web2.0 framework"
104
  msgstr ""
105
 
106
- #: ../admin/about.php:19
107
  msgid "for the fantastic PHP Thumbnail Class"
108
  msgstr ""
109
 
110
- #: ../admin/about.php:20
111
  msgid "for PclZip , a PHP library that manage ZIP archives"
112
  msgstr ""
113
 
114
- #: ../admin/about.php:21
115
  msgid "for a lot of very useful plugins and ideas"
116
  msgstr ""
117
 
118
- #: ../admin/about.php:22
119
  msgid "for Shutter Reloaded, a real lightweight image effect"
120
  msgstr ""
121
 
122
- #: ../admin/about.php:23
123
  msgid "for the best Media Flash Scripts on earth"
124
  msgstr ""
125
 
126
- #: ../admin/about.php:24
127
  msgid "for the Fugue Iconset"
128
  msgstr ""
129
 
130
- #: ../admin/about.php:25
131
  msgid "for the Watermark plugin"
132
  msgstr ""
133
 
134
- #: ../admin/about.php:27
135
  msgid "If you didn't find your name on this list and there is some code which I integrate in my plugin, don't hesitate to send me a mail."
136
  msgstr ""
137
 
138
- #: ../admin/about.php:28
139
  msgid "How to support ?"
140
  msgstr ""
141
 
142
- #: ../admin/about.php:29
143
  msgid "There exist several ways to contribute, help or support us in this work. Non of them are mandatory."
144
  msgstr ""
145
 
146
- #: ../admin/about.php:31
147
  msgid "Send us bugfixes / code changes"
148
  msgstr ""
149
 
150
- #: ../admin/about.php:31
151
  msgid "The most motivated support for this plugin are your ideas and brain work"
152
  msgstr ""
153
 
154
- #: ../admin/about.php:32
155
  msgid "Translate the plugin"
156
  msgstr ""
157
 
158
- #: ../admin/about.php:32
159
  msgid "To help people to work with this plugin, I would like to have it in all available languages"
160
  msgstr ""
161
 
162
- #: ../admin/about.php:33
163
  msgid "Donate the work via paypal"
164
  msgstr ""
165
 
166
- #: ../admin/about.php:44
167
  msgid "No doubt a very useful and easy motivation :-)"
168
  msgstr ""
169
 
170
- #: ../admin/about.php:46
171
  msgid "Place a link to the plugin in your blog/webpage"
172
  msgstr ""
173
 
174
- #: ../admin/about.php:46
175
  msgid "Yes, share and trackback is also a good support for this work "
176
  msgstr ""
177
 
178
- #: ../admin/about.php:48
179
  msgid "Thanks!"
180
  msgstr ""
181
 
182
- #: ../admin/about.php:49
183
  msgid "We would like to thank this people which support us in the work :"
184
  msgstr ""
185
 
186
- #: ../admin/about.php:143
187
  msgid "and all donators..."
188
  msgstr ""
189
 
@@ -193,8 +197,8 @@ msgid "Upload failed!"
193
  msgstr ""
194
 
195
  #: ../admin/addgallery.php:58
196
- #: ../admin/functions.php:568
197
- #: ../admin/functions.php:658
198
  msgid "No gallery selected !"
199
  msgstr ""
200
 
@@ -212,12 +216,13 @@ msgid "Browse..."
212
  msgstr ""
213
 
214
  #: ../admin/addgallery.php:126
215
- #: ../admin/addgallery.php:282
216
  msgid "Upload images"
217
  msgstr ""
218
 
219
  #: ../admin/addgallery.php:174
220
  #: ../admin/addgallery.php:186
 
221
  msgid "Add new gallery"
222
  msgstr ""
223
 
@@ -227,24 +232,27 @@ msgid "Upload a Zip-File"
227
  msgstr ""
228
 
229
  #: ../admin/addgallery.php:179
230
- #: ../admin/addgallery.php:237
231
  msgid "Import image folder"
232
  msgstr ""
233
 
234
  #: ../admin/addgallery.php:181
235
- #: ../admin/addgallery.php:254
236
  msgid "Upload Images"
237
  msgstr ""
238
 
239
  #: ../admin/addgallery.php:191
 
240
  msgid "New Gallery"
241
  msgstr ""
242
 
243
  #: ../admin/addgallery.php:194
 
244
  msgid "Create a new , empty gallery below the folder"
245
  msgstr ""
246
 
247
  #: ../admin/addgallery.php:196
 
248
  msgid "Allowed characters for file and folder names are"
249
  msgstr ""
250
 
@@ -260,536 +268,593 @@ msgstr ""
260
  msgid "Upload a zip file with images"
261
  msgstr ""
262
 
263
- #: ../admin/addgallery.php:215
264
- #: ../admin/addgallery.php:263
 
 
 
 
 
 
 
 
265
  msgid "in to"
266
  msgstr ""
267
 
268
- #: ../admin/addgallery.php:217
269
  msgid "a new gallery"
270
  msgstr ""
271
 
272
- #: ../admin/addgallery.php:226
273
  msgid "Note : The upload limit on your server is "
274
  msgstr ""
275
 
276
- #: ../admin/addgallery.php:230
277
  msgid "Start upload"
278
  msgstr ""
279
 
280
- #: ../admin/addgallery.php:242
281
  msgid "Import from Server path:"
282
  msgstr ""
283
 
284
- #: ../admin/addgallery.php:245
285
  msgid " Please note : For safe-mode = ON you need to add the subfolder thumbs manually"
286
  msgstr ""
287
 
288
- #: ../admin/addgallery.php:248
289
  msgid "Import folder"
290
  msgstr ""
291
 
292
- #: ../admin/addgallery.php:259
293
  msgid "Upload image"
294
  msgstr ""
295
 
296
- #: ../admin/addgallery.php:265
297
  msgid "Choose gallery"
298
  msgstr ""
299
 
300
- #: ../admin/addgallery.php:278
301
  msgid "The batch upload requires Adobe Flash 10, disable it if you have problems"
302
  msgstr ""
303
 
304
- #: ../admin/addgallery.php:278
305
  msgid "Disable flash upload"
306
  msgstr ""
307
 
308
- #: ../admin/addgallery.php:280
309
  msgid "Upload multiple files at once by ctrl/shift-selecting in dialog"
310
  msgstr ""
311
 
312
- #: ../admin/addgallery.php:280
313
  msgid "Enable flash based upload"
314
  msgstr ""
315
 
316
- #: ../admin/admin.php:31
317
- #: ../admin/admin.php:204
318
- #: ../admin/admin.php:272
319
- #: ../admin/functions.php:82
320
- #: ../admin/functions.php:145
321
- #: ../admin/manage-images.php:151
322
- #: ../admin/manage.php:78
323
  msgid "Gallery"
324
  msgid_plural "Galleries"
325
  msgstr[0] ""
326
  msgstr[1] ""
327
 
328
- #: ../admin/admin.php:33
329
  msgid "Add Gallery / Images"
330
  msgstr ""
331
 
332
- #: ../admin/admin.php:34
333
  msgid "Manage Gallery"
334
  msgstr ""
335
 
336
- #: ../admin/admin.php:35
337
  msgid "Album"
338
  msgid_plural "Albums"
339
  msgstr[0] ""
340
  msgstr[1] ""
341
 
342
- #: ../admin/admin.php:36
343
  msgid "Tags"
344
  msgstr ""
345
 
346
- #: ../admin/admin.php:37
347
  msgid "Options"
348
  msgstr ""
349
 
350
- #: ../admin/admin.php:39
351
  msgid "Style"
352
  msgstr ""
353
 
354
- #: ../admin/admin.php:40
355
  msgid "Setup Gallery"
356
  msgstr ""
357
 
358
- #: ../admin/admin.php:40
359
  msgid "Setup"
360
  msgstr ""
361
 
362
- #: ../admin/admin.php:42
363
  msgid "Roles"
364
  msgstr ""
365
 
366
- #: ../admin/admin.php:43
367
  msgid "About this Gallery"
368
  msgstr ""
369
 
370
- #: ../admin/admin.php:43
371
  msgid "About"
372
  msgstr ""
373
 
374
- #: ../admin/admin.php:45
375
  msgid "NextGEN Gallery"
376
  msgstr ""
377
 
378
- #: ../admin/admin.php:70
379
  msgid "A new version of NextGEN Gallery is available !"
380
  msgstr ""
381
 
382
- #: ../admin/admin.php:70
383
  msgid "Download here"
384
  msgstr ""
385
 
386
- #: ../admin/admin.php:141
387
  msgid "You do not have the correct permission"
388
  msgstr ""
389
 
390
- #: ../admin/admin.php:142
391
  msgid "Unexpected Error"
392
  msgstr ""
393
 
394
- #: ../admin/admin.php:143
395
  msgid "A failure occurred"
396
  msgstr ""
397
 
398
- #: ../admin/admin.php:208
399
  msgid "<a href=\"http://dpotter.net/Technical/2008/03/nextgen-gallery-review-introduction/\" target=\"_blank\">Introduction</a>"
400
  msgstr ""
401
 
402
- #: ../admin/admin.php:211
403
  msgid "<a href=\"http://dpotter.net/Technical/2008/03/nextgen-gallery-review-introduction/\" target=\"_blank\">Setup</a>"
404
  msgstr ""
405
 
406
- #: ../admin/admin.php:214
407
  msgid "<a href=\"http://alexrabe.boelinger.com/wordpress-plugins/nextgen-gallery/languages/\" target=\"_blank\">Translation by alex rabe</a>"
408
  msgstr ""
409
 
410
- #: ../admin/admin.php:217
411
  msgid "<a href=\"http://dpotter.net/Technical/2008/03/nextgen-gallery-review-introduction/\" target=\"_blank\">Roles / Capabilities</a>"
412
  msgstr ""
413
 
414
- #: ../admin/admin.php:220
415
  msgid "<a href=\"http://dpotter.net/Technical/2008/03/nextgen-gallery-review-introduction/\" target=\"_blank\">Styles</a>"
416
  msgstr ""
417
 
418
- #: ../admin/admin.php:221
419
  msgid "Templates"
420
  msgstr ""
421
 
422
- #: ../admin/admin.php:224
423
- #: ../admin/admin.php:230
424
  msgid "<a href=\"http://dpotter.net/Technical/2008/03/nextgen-gallery-review-introduction/\" target=\"_blank\">Gallery management</a>"
425
  msgstr ""
426
 
427
- #: ../admin/admin.php:225
428
  msgid "Gallery example"
429
  msgstr ""
430
 
431
- #: ../admin/admin.php:231
432
- #: ../admin/admin.php:241
433
  msgid "Gallery tags"
434
  msgstr ""
435
 
436
- #: ../admin/admin.php:234
437
  msgid "<a href=\"http://dpotter.net/Technical/2008/03/nextgen-gallery-review-introduction/\" target=\"_blank\">Album management</a>"
438
  msgstr ""
439
 
440
- #: ../admin/admin.php:235
441
  msgid "Album example"
442
  msgstr ""
443
 
444
- #: ../admin/admin.php:236
445
- #: ../admin/admin.php:242
446
  msgid "Album tags"
447
  msgstr ""
448
 
449
- #: ../admin/admin.php:239
450
  msgid "<a href=\"http://dpotter.net/Technical/2008/03/nextgen-gallery-review-introduction/\" target=\"_blank\">Gallery tags</a>"
451
  msgstr ""
452
 
453
- #: ../admin/admin.php:240
454
  msgid "Related images"
455
  msgstr ""
456
 
457
- #: ../admin/admin.php:245
458
  msgid "<a href=\"http://dpotter.net/Technical/2008/03/nextgen-gallery-review-image-management/\" target=\"_blank\">Image management</a>"
459
  msgstr ""
460
 
461
- #: ../admin/admin.php:246
462
  msgid "Custom fields"
463
  msgstr ""
464
 
465
- #: ../admin/admin.php:251
466
  msgid "Get help with NextGEN Gallery"
467
  msgstr ""
468
 
469
- #: ../admin/admin.php:255
470
  msgid "More Help & Info"
471
  msgstr ""
472
 
473
- #: ../admin/admin.php:257
474
  msgid "<a href=\"http://wordpress.org/tags/nextgen-gallery\" target=\"_blank\">Support Forums</a>"
475
  msgstr ""
476
 
477
- #: ../admin/admin.php:258
478
  msgid "FAQ"
479
  msgstr ""
480
 
481
- #: ../admin/admin.php:259
482
  msgid "Feature request"
483
  msgstr ""
484
 
485
- #: ../admin/admin.php:260
486
  msgid "Get your language pack"
487
  msgstr ""
488
 
489
- #: ../admin/admin.php:261
490
  msgid "Contribute development"
491
  msgstr ""
492
 
493
- #: ../admin/admin.php:262
494
  msgid "Download latest version"
495
  msgstr ""
496
 
497
- #: ../admin/album.php:19
498
- #: ../admin/album.php:31
 
499
  msgid "Update Successfully"
500
  msgstr ""
501
 
502
- #: ../admin/album.php:40
503
  msgid "Album deleted"
504
  msgstr ""
505
 
506
- #: ../admin/album.php:125
507
  msgid "Manage Albums"
508
  msgstr ""
509
 
510
- #: ../admin/album.php:131
 
511
  msgid "Select album"
512
  msgstr ""
513
 
514
- #: ../admin/album.php:133
515
  msgid "No album selected"
516
  msgstr ""
517
 
518
- #: ../admin/album.php:146
519
  msgid "Update"
520
  msgstr ""
521
 
522
- #: ../admin/album.php:147
523
- #: ../admin/manage-galleries.php:78
524
- #: ../admin/manage-images.php:336
 
 
 
 
525
  msgid "Delete"
526
  msgstr ""
527
 
528
- #: ../admin/album.php:147
529
  msgid "Delete album ?"
530
  msgstr ""
531
 
532
- #: ../admin/album.php:149
533
  msgid "Add new album"
534
  msgstr ""
535
 
536
- #: ../admin/album.php:150
537
  msgid "Add"
538
  msgstr ""
539
 
540
- #: ../admin/album.php:158
 
 
 
 
541
  msgid "[Show all]"
542
  msgstr ""
543
 
544
- #: ../admin/album.php:159
 
 
 
 
545
  msgid "[Maximize]"
546
  msgstr ""
547
 
548
- #: ../admin/album.php:160
 
 
 
 
549
  msgid "[Minimize]"
550
  msgstr ""
551
 
552
- #: ../admin/album.php:162
553
- msgid "After you create and select a album, you can drag and drop a gallery into your album below"
554
  msgstr ""
555
 
556
- #: ../admin/album.php:169
557
- msgid "Select Gallery"
558
  msgstr ""
559
 
560
- #: ../admin/album.php:208
561
- msgid "Album Page ID"
562
  msgstr ""
563
 
564
- #: ../admin/album.php:220
565
  msgid "No album selected!"
566
  msgstr ""
567
 
568
- #: ../admin/album.php:254
569
- #: ../admin/manage-galleries.php:42
570
- #: ../admin/manage-images.php:473
571
- msgid "ID"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
572
  msgstr ""
573
 
574
- #: ../admin/album.php:255
575
  msgid "Name"
576
  msgstr ""
577
 
578
- #: ../admin/album.php:256
579
- #: ../admin/manage-galleries.php:43
580
- #: ../admin/manage-images.php:165
581
  msgid "Title"
582
  msgstr ""
583
 
584
- #: ../admin/album.php:257
585
  msgid "Page"
586
  msgstr ""
587
 
588
- #: ../admin/functions.php:23
589
  msgid "No valid gallery name!"
590
  msgstr ""
591
 
592
- #: ../admin/functions.php:30
593
- #: ../admin/functions.php:39
594
- #: ../admin/functions.php:53
595
- #: ../admin/functions.php:117
596
- #: ../admin/functions.php:124
597
  msgid "Directory"
598
  msgstr ""
599
 
600
- #: ../admin/functions.php:30
601
  msgid "didn't exist. Please create first the main gallery folder "
602
  msgstr ""
603
 
604
- #: ../admin/functions.php:31
605
- #: ../admin/functions.php:40
606
  msgid "Check this link, if you didn't know how to set the permission :"
607
  msgstr ""
608
 
609
- #: ../admin/functions.php:39
610
- #: ../admin/functions.php:53
611
  msgid "is not writeable !"
612
  msgstr ""
613
 
614
- #: ../admin/functions.php:48
615
- #: ../admin/functions.php:58
616
- #: ../admin/functions.php:531
617
  msgid "Unable to create directory "
618
  msgstr ""
619
 
620
- #: ../admin/functions.php:62
621
  msgid "The server setting Safe-Mode is on !"
622
  msgstr ""
623
 
624
- #: ../admin/functions.php:63
625
  msgid "If you have problems, please create directory"
626
  msgstr ""
627
 
628
- #: ../admin/functions.php:64
629
  msgid "and the thumbnails directory"
630
  msgstr ""
631
 
632
- #: ../admin/functions.php:64
633
  msgid "with permission 777 manually !"
634
  msgstr ""
635
 
636
- #: ../admin/functions.php:82
637
  msgid "already exists"
638
  msgstr ""
639
 
640
- #: ../admin/functions.php:87
641
  #, php-format
642
  msgid "Gallery %1$s successfully created.<br/>You can show this gallery with the tag %2$s.<br/>"
643
  msgstr ""
644
 
645
- #: ../admin/functions.php:90
646
  msgid "Edit gallery"
647
  msgstr ""
648
 
649
- #: ../admin/functions.php:117
650
  msgid "doesn&#96;t exist!"
651
  msgstr ""
652
 
653
- #: ../admin/functions.php:124
654
  msgid "contains no pictures"
655
  msgstr ""
656
 
657
- #: ../admin/functions.php:142
658
  msgid "Database error. Could not add gallery!"
659
  msgstr ""
660
 
661
- #: ../admin/functions.php:145
662
  msgid "successfully created!"
663
  msgstr ""
664
 
665
- #: ../admin/functions.php:174
666
- #: ../admin/functions.php:640
667
- #: ../admin/manage-images.php:243
668
- #: ../admin/manage.php:130
669
  msgid "Create new thumbnails"
670
  msgstr ""
671
 
672
- #: ../admin/functions.php:177
673
  msgid " picture(s) successfully added"
674
  msgstr ""
675
 
676
- #: ../admin/functions.php:216
677
- #: ../admin/functions.php:295
678
- #: ../admin/functions.php:336
679
  msgid "Object didn't contain correct data"
680
  msgstr ""
681
 
682
- #: ../admin/functions.php:221
683
  msgid " is not writeable "
684
  msgstr ""
685
 
686
- #: ../admin/functions.php:302
687
- #: ../admin/functions.php:339
688
  msgid " is not writeable"
689
  msgstr ""
690
 
691
- #: ../admin/functions.php:500
 
 
 
 
 
 
 
 
692
  msgid "Uploaded file was no or a faulty zip file ! The server recognize : "
693
  msgstr ""
694
 
695
- #: ../admin/functions.php:515
696
  msgid "Could not get a valid foldername"
697
  msgstr ""
698
 
699
- #: ../admin/functions.php:526
700
  #, php-format
701
  msgid "Unable to create directory %s. Is its parent directory writable by the server?"
702
  msgstr ""
703
 
704
- #: ../admin/functions.php:541
705
  msgid "Zip-File successfully unpacked"
706
  msgstr ""
707
 
708
- #: ../admin/functions.php:576
709
- #: ../admin/functions.php:685
710
  msgid "Failure in database, no gallery path set !"
711
  msgstr ""
712
 
713
- #: ../admin/functions.php:597
714
- #: ../admin/functions.php:679
715
  msgid "is no valid image file!"
716
  msgstr ""
717
 
718
- #: ../admin/functions.php:611
719
- #: ../admin/functions.php:787
720
- #: ../admin/functions.php:855
721
  #, php-format
722
  msgid "Unable to write to directory %s. Is this directory writable by the server?"
723
  msgstr ""
724
 
725
- #: ../admin/functions.php:618
726
- #: ../admin/functions.php:702
727
  msgid "Error, the file could not moved to : "
728
  msgstr ""
729
 
730
- #: ../admin/functions.php:623
731
- #: ../admin/functions.php:706
732
  msgid "Error, the file permissions could not set"
733
  msgstr ""
734
 
735
- #: ../admin/functions.php:644
736
  msgid " Image(s) successfully added"
737
  msgstr ""
738
 
739
- #: ../admin/functions.php:667
740
  msgid "Invalid upload. Error Code : "
741
  msgstr ""
742
 
743
- #: ../admin/functions.php:716
744
  msgid "Sorry, you have used your space allocation. Please delete some files to upload more files."
745
  msgstr ""
746
 
747
- #: ../admin/functions.php:743
748
  #, php-format
749
  msgid "SAFE MODE Restriction in effect! You need to create the folder <strong>%s</strong> manually"
750
  msgstr ""
751
 
752
- #: ../admin/functions.php:744
753
  #, php-format
754
  msgid "When safe_mode is on, PHP checks to see if the owner (%s) of the current script matches the owner (%s) of the file to be operated on by a file function or its directory"
755
  msgstr ""
756
 
757
- #: ../admin/functions.php:781
758
- #: ../admin/functions.php:849
759
  msgid "The destination gallery does not exist"
760
  msgstr ""
761
 
762
- #: ../admin/functions.php:812
763
  #, php-format
764
  msgid "Failed to move image %1$s to %2$s"
765
  msgstr ""
766
 
767
- #: ../admin/functions.php:830
768
  #, php-format
769
  msgid "Moved %1$s picture(s) to gallery : %2$s ."
770
  msgstr ""
771
 
772
- #: ../admin/functions.php:882
773
  #, php-format
774
  msgid "Failed to copy image %1$s to %2$s"
775
  msgstr ""
776
 
777
- #: ../admin/functions.php:894
778
  #, php-format
779
  msgid "Failed to copy database row for picture %s"
780
  msgstr ""
781
 
782
- #: ../admin/functions.php:902
783
  #, php-format
784
  msgid "Image %1$s (%2$s) copied as image %3$s (%4$s) &raquo; The file already existed in the destination gallery."
785
  msgstr ""
786
 
787
- #: ../admin/functions.php:905
788
  #, php-format
789
  msgid "Image %1$s (%2$s) copied as image %3$s (%4$s)"
790
  msgstr ""
791
 
792
- #: ../admin/functions.php:914
793
  #, php-format
794
  msgid "Copied %1$s picture(s) to gallery: %2$s ."
795
  msgstr ""
@@ -798,87 +863,99 @@ msgstr ""
798
  msgid "Sorry, NextGEN Gallery works only with a role called administrator"
799
  msgstr ""
800
 
801
- #: ../admin/install.php:102
802
  msgid "NextGEN Gallery : Tables could not created, please check your database settings"
803
  msgstr ""
804
 
805
- #: ../admin/install.php:160
806
  msgid "[Show as slideshow]"
807
  msgstr ""
808
 
809
- #: ../admin/install.php:161
810
  msgid "[Show picture list]"
811
  msgstr ""
812
 
813
- #: ../admin/manage-galleries.php:19
814
- #: ../admin/manage-images.php:39
815
  msgid "&laquo;"
816
  msgstr ""
817
 
818
- #: ../admin/manage-galleries.php:20
819
- #: ../admin/manage-images.php:40
820
  msgid "&raquo;"
821
  msgstr ""
822
 
823
- #: ../admin/manage-galleries.php:27
824
  msgid "Gallery Overview"
825
  msgstr ""
826
 
827
- #: ../admin/manage-galleries.php:30
828
- #: ../admin/manage-images.php:232
 
 
 
 
 
 
 
829
  #, php-format
830
  msgid "Displaying %s&#8211;%s of %s"
831
  msgstr ""
832
 
833
- #: ../admin/manage-galleries.php:44
834
- #: ../admin/manage-images.php:176
835
- #: ../admin/manage-images.php:478
 
 
 
 
 
836
  msgid "Description"
837
  msgstr ""
838
 
839
- #: ../admin/manage-galleries.php:45
840
- #: ../admin/manage-images.php:196
841
  msgid "Author"
842
  msgstr ""
843
 
844
- #: ../admin/manage-galleries.php:46
845
  msgid "Page ID"
846
  msgstr ""
847
 
848
- #: ../admin/manage-galleries.php:47
849
  msgid "Quantity"
850
  msgstr ""
851
 
852
- #: ../admin/manage-galleries.php:48
853
  msgid "Action"
854
  msgstr ""
855
 
856
- #: ../admin/manage-galleries.php:65
857
  msgid "Edit"
858
  msgstr ""
859
 
860
- #: ../admin/manage-galleries.php:78
861
  msgid "Delete this gallery ?"
862
  msgstr ""
863
 
864
- #: ../admin/manage-galleries.php:85
865
- #: ../admin/manage-images.php:390
866
  msgid "No entries found"
867
  msgstr ""
868
 
869
- #: ../admin/manage-images.php:16
870
  msgid "Gallery not found."
871
  msgstr ""
872
 
873
- #: ../admin/manage-images.php:22
874
  msgid "Sorry, you have no access here"
875
  msgstr ""
876
 
877
- #: ../admin/manage-images.php:112
878
  msgid "No images selected"
879
  msgstr ""
880
 
881
- #: ../admin/manage-images.php:132
882
  #, php-format
883
  msgid ""
884
  "You are about to start the bulk edit for %s images \n"
@@ -886,169 +963,161 @@ msgid ""
886
  " 'Cancel' to stop, 'OK' to proceed."
887
  msgstr ""
888
 
889
- #: ../admin/manage-images.php:161
 
 
 
 
 
890
  msgid "Gallery settings"
891
  msgstr ""
892
 
893
- #: ../admin/manage-images.php:161
894
  msgid "Click here for more settings"
895
  msgstr ""
896
 
897
- #: ../admin/manage-images.php:167
898
  msgid "Page Link to"
899
  msgstr ""
900
 
901
- #: ../admin/manage-images.php:170
902
  msgid "Not linked"
903
  msgstr ""
904
 
905
- #: ../admin/manage-images.php:178
906
  msgid "Preview image"
907
  msgstr ""
908
 
909
- #: ../admin/manage-images.php:181
910
  msgid "No Picture"
911
  msgstr ""
912
 
913
- #: ../admin/manage-images.php:194
914
  msgid "Path"
915
  msgstr ""
916
 
917
- #: ../admin/manage-images.php:210
918
  msgid "Create new page"
919
  msgstr ""
920
 
921
- #: ../admin/manage-images.php:213
922
  msgid "Main page (No parent)"
923
  msgstr ""
924
 
925
- #: ../admin/manage-images.php:216
926
  msgid "Add page"
927
  msgstr ""
928
 
929
- #: ../admin/manage-images.php:222
930
  msgid "Scan Folder for new images"
931
  msgstr ""
932
 
933
- #: ../admin/manage-images.php:223
934
- #: ../admin/manage-images.php:259
935
- #: ../admin/manage-images.php:396
936
  msgid "Save Changes"
937
  msgstr ""
938
 
939
- #: ../admin/manage-images.php:241
940
  msgid "No action"
941
  msgstr ""
942
 
943
- #: ../admin/manage-images.php:242
944
- #: ../admin/manage.php:126
945
  msgid "Set watermark"
946
  msgstr ""
947
 
948
- #: ../admin/manage-images.php:244
949
- #: ../admin/manage.php:134
950
  msgid "Resize images"
951
  msgstr ""
952
 
953
- #: ../admin/manage-images.php:245
954
  msgid "Delete images"
955
  msgstr ""
956
 
957
- #: ../admin/manage-images.php:246
958
  msgid "Import metadata"
959
  msgstr ""
960
 
961
- #: ../admin/manage-images.php:247
962
  msgid "Copy to..."
963
  msgstr ""
964
 
965
- #: ../admin/manage-images.php:248
966
  msgid "Move to..."
967
  msgstr ""
968
 
969
- #: ../admin/manage-images.php:249
970
  msgid "Add tags"
971
  msgstr ""
972
 
973
- #: ../admin/manage-images.php:250
974
  msgid "Delete tags"
975
  msgstr ""
976
 
977
- #: ../admin/manage-images.php:251
978
  msgid "Overwrite tags"
979
  msgstr ""
980
 
981
- #: ../admin/manage-images.php:253
982
- #: ../admin/manage-images.php:413
983
- #: ../admin/manage-images.php:448
984
- msgid "OK"
985
- msgstr ""
986
-
987
- #: ../admin/manage-images.php:256
988
  msgid "Sort gallery"
989
  msgstr ""
990
 
991
- #: ../admin/manage-images.php:333
992
  #, php-format
993
  msgid "View \"%s\""
994
  msgstr ""
995
 
996
- #: ../admin/manage-images.php:333
997
  msgid "View"
998
  msgstr ""
999
 
1000
- #: ../admin/manage-images.php:334
1001
  msgid "Show Meta data"
1002
  msgstr ""
1003
 
1004
- #: ../admin/manage-images.php:334
1005
  msgid "Meta"
1006
  msgstr ""
1007
 
1008
- #: ../admin/manage-images.php:335
1009
  msgid "Customize thumbnail"
1010
  msgstr ""
1011
 
1012
- #: ../admin/manage-images.php:335
1013
  msgid "Edit thumb"
1014
  msgstr ""
1015
 
1016
- #: ../admin/manage-images.php:336
1017
  #, php-format
1018
  msgid "Delete \"%s\""
1019
  msgstr ""
1020
 
1021
- #: ../admin/manage-images.php:409
1022
  msgid "Enter the tags"
1023
  msgstr ""
1024
 
1025
- #: ../admin/manage-images.php:415
1026
- #: ../admin/manage-images.php:450
1027
- msgid "Cancel"
1028
- msgstr ""
1029
-
1030
- #: ../admin/manage-images.php:432
1031
  msgid "Select the destination gallery:"
1032
  msgstr ""
1033
 
1034
- #: ../admin/manage-images.php:474
1035
  msgid "Thumbnail"
1036
  msgstr ""
1037
 
1038
- #: ../admin/manage-images.php:476
1039
  #: ../admin/manage-sort.php:80
1040
  msgid "Filename"
1041
  msgstr ""
1042
 
1043
- #: ../admin/manage-images.php:478
1044
  msgid "Alt &amp; Title Text"
1045
  msgstr ""
1046
 
1047
- #: ../admin/manage-images.php:479
1048
  msgid "Tags (comma separated list)"
1049
  msgstr ""
1050
 
1051
- #: ../admin/manage-images.php:481
1052
  msgid "exclude"
1053
  msgstr ""
1054
 
@@ -1096,40 +1165,41 @@ msgstr ""
1096
  msgid "Descending"
1097
  msgstr ""
1098
 
1099
- #: ../admin/manage.php:78
1100
  #: ../admin/manage.php:100
1101
  msgid "deleted successfully"
1102
  msgstr ""
1103
 
1104
  #: ../admin/manage.php:100
 
1105
  msgid "Picture"
1106
  msgstr ""
1107
 
1108
- #: ../admin/manage.php:151
1109
  msgid "Pictures deleted successfully "
1110
  msgstr ""
1111
 
1112
- #: ../admin/manage.php:157
1113
  msgid "Import metadata finished"
1114
  msgstr ""
1115
 
1116
- #: ../admin/manage.php:165
1117
  msgid "Operation successful. Please clear your browser cache."
1118
  msgstr ""
1119
 
1120
- #: ../admin/manage.php:228
1121
  msgid "Tags changed"
1122
  msgstr ""
1123
 
1124
- #: ../admin/manage.php:255
1125
  msgid "Update successful"
1126
  msgstr ""
1127
 
1128
- #: ../admin/manage.php:289
1129
  msgid "New gallery page ID"
1130
  msgstr ""
1131
 
1132
- #: ../admin/manage.php:289
1133
  msgid "created"
1134
  msgstr ""
1135
 
@@ -1222,175 +1292,188 @@ msgstr ""
1222
  msgid "Save all changes"
1223
  msgstr ""
1224
 
1225
- #: ../admin/overview.php:13
 
1226
  msgid "NextGEN Gallery Overview"
1227
  msgstr ""
1228
 
1229
- #: ../admin/overview.php:108
 
 
 
 
 
 
 
 
1230
  #, php-format
1231
  msgid "Newsfeed could not be loaded. Check the <a href=\"%s\">front page</a> to check for updates."
1232
  msgstr ""
1233
 
1234
- #: ../admin/overview.php:128
1235
  msgid "At a Glance"
1236
  msgstr ""
1237
 
1238
- #: ../admin/overview.php:134
1239
  msgid "Image"
1240
  msgid_plural "Images"
1241
  msgstr[0] ""
1242
  msgstr[1] ""
1243
 
1244
- #: ../admin/overview.php:155
1245
  msgid "Upload pictures"
1246
  msgstr ""
1247
 
1248
- #: ../admin/overview.php:156
1249
  msgid "Here you can control your images, galleries and albums."
1250
  msgstr ""
1251
 
1252
- #: ../admin/overview.php:160
1253
  msgid "Gallery Administrator"
1254
  msgstr ""
1255
 
1256
- #: ../admin/overview.php:160
1257
  msgid "Gallery Editor"
1258
  msgstr ""
1259
 
1260
- #: ../admin/overview.php:161
1261
  #, php-format
1262
  msgid "You currently have %s rights."
1263
  msgstr ""
1264
 
1265
- #: ../admin/overview.php:168
1266
  msgid "Welcome to NextGEN Gallery !"
1267
  msgstr ""
1268
 
1269
- #: ../admin/overview.php:169
1270
  msgid "Latest News"
1271
  msgstr ""
1272
 
1273
- #: ../admin/overview.php:170
 
 
 
 
1274
  msgid "Server Settings"
1275
  msgstr ""
1276
 
1277
- #: ../admin/overview.php:171
1278
  msgid "Graphic Library"
1279
  msgstr ""
1280
 
1281
- #: ../admin/overview.php:187
1282
  msgid "No GD support"
1283
  msgstr ""
1284
 
1285
- #: ../admin/overview.php:194
1286
- #: ../admin/overview.php:233
1287
- #: ../admin/overview.php:236
1288
- #: ../admin/overview.php:239
1289
  msgid "Yes"
1290
  msgstr ""
1291
 
1292
- #: ../admin/overview.php:196
1293
- #: ../admin/overview.php:234
1294
- #: ../admin/overview.php:237
1295
- #: ../admin/overview.php:240
1296
  msgid "No"
1297
  msgstr ""
1298
 
1299
- #: ../admin/overview.php:210
1300
  msgid "Not set"
1301
  msgstr ""
1302
 
1303
- #: ../admin/overview.php:212
1304
- #: ../admin/overview.php:215
1305
  msgid "On"
1306
  msgstr ""
1307
 
1308
- #: ../admin/overview.php:213
1309
- #: ../admin/overview.php:216
1310
  msgid "Off"
1311
  msgstr ""
1312
 
1313
- #: ../admin/overview.php:219
1314
- #: ../admin/overview.php:222
1315
- #: ../admin/overview.php:225
1316
- #: ../admin/overview.php:228
1317
- #: ../admin/overview.php:231
1318
  msgid "N/A"
1319
  msgstr ""
1320
 
1321
- #: ../admin/overview.php:230
1322
  msgid " MByte"
1323
  msgstr ""
1324
 
1325
- #: ../admin/overview.php:243
1326
  msgid "Operating System"
1327
  msgstr ""
1328
 
1329
- #: ../admin/overview.php:244
1330
  msgid "Server"
1331
  msgstr ""
1332
 
1333
- #: ../admin/overview.php:245
1334
  msgid "Memory usage"
1335
  msgstr ""
1336
 
1337
- #: ../admin/overview.php:246
1338
  msgid "MYSQL Version"
1339
  msgstr ""
1340
 
1341
- #: ../admin/overview.php:247
1342
  msgid "SQL Mode"
1343
  msgstr ""
1344
 
1345
- #: ../admin/overview.php:248
1346
  msgid "PHP Version"
1347
  msgstr ""
1348
 
1349
- #: ../admin/overview.php:249
1350
  msgid "PHP Safe Mode"
1351
  msgstr ""
1352
 
1353
- #: ../admin/overview.php:250
1354
  msgid "PHP Allow URL fopen"
1355
  msgstr ""
1356
 
1357
- #: ../admin/overview.php:251
1358
  msgid "PHP Memory Limit"
1359
  msgstr ""
1360
 
1361
- #: ../admin/overview.php:252
1362
  msgid "PHP Max Upload Size"
1363
  msgstr ""
1364
 
1365
- #: ../admin/overview.php:253
1366
  msgid "PHP Max Post Size"
1367
  msgstr ""
1368
 
1369
- #: ../admin/overview.php:254
1370
  msgid "PHP Max Script Execute Time"
1371
  msgstr ""
1372
 
1373
- #: ../admin/overview.php:255
1374
  msgid "PHP Exif support"
1375
  msgstr ""
1376
 
1377
- #: ../admin/overview.php:256
1378
  msgid "PHP IPTC support"
1379
  msgstr ""
1380
 
1381
- #: ../admin/overview.php:257
1382
  msgid "PHP XML support"
1383
  msgstr ""
1384
 
1385
- #: ../admin/overview.php:315
1386
  msgid "Storage Space"
1387
  msgstr ""
1388
 
1389
- #: ../admin/overview.php:318
1390
  msgid "Upload Space Used:"
1391
  msgstr ""
1392
 
1393
- #: ../admin/overview.php:324
1394
  msgid "Upload Space Remaining:"
1395
  msgstr ""
1396
 
@@ -2225,63 +2308,63 @@ msgstr ""
2225
  msgid "Upgrade database structure..."
2226
  msgstr ""
2227
 
2228
- #: ../admin/upgrade.php:78
2229
- #: ../admin/upgrade.php:88
2230
- #: ../admin/upgrade.php:95
2231
- #: ../admin/upgrade.php:106
2232
  msgid "finished"
2233
  msgstr ""
2234
 
2235
- #: ../admin/upgrade.php:86
2236
  msgid "Update file structure..."
2237
  msgstr ""
2238
 
2239
- #: ../admin/upgrade.php:93
2240
  msgid "Import date and time information..."
2241
  msgstr ""
2242
 
2243
- #: ../admin/upgrade.php:101
2244
  msgid "Move imagerotator to new location..."
2245
  msgstr ""
2246
 
2247
- #: ../admin/upgrade.php:170
2248
  msgid "Some folders/files could not renamed, please recheck the permission and rescan the folder in the manage gallery section."
2249
  msgstr ""
2250
 
2251
- #: ../admin/upgrade.php:172
2252
  msgid "Rename failed"
2253
  msgstr ""
2254
 
2255
- #: ../admin/upgrade.php:267
2256
- #: ../admin/upgrade.php:287
2257
  msgid "Upgrade NextGEN Gallery"
2258
  msgstr ""
2259
 
2260
- #: ../admin/upgrade.php:268
2261
  msgid "The script detect that you upgrade from a older version."
2262
  msgstr ""
2263
 
2264
- #: ../admin/upgrade.php:269
2265
  msgid "Your database tables for NextGEN Gallery is out-of-date, and must be upgraded before you can continue."
2266
  msgstr ""
2267
 
2268
- #: ../admin/upgrade.php:270
2269
  msgid "If you would like to downgrade later, please make first a complete backup of your database and the images."
2270
  msgstr ""
2271
 
2272
- #: ../admin/upgrade.php:271
2273
  msgid "The upgrade process may take a while, so please be patient."
2274
  msgstr ""
2275
 
2276
- #: ../admin/upgrade.php:272
2277
  msgid "Start upgrade now"
2278
  msgstr ""
2279
 
2280
- #: ../admin/upgrade.php:289
2281
  msgid "Upgrade sucessful"
2282
  msgstr ""
2283
 
2284
- #: ../admin/upgrade.php:290
2285
  msgid "Continue"
2286
  msgstr ""
2287
 
@@ -2341,10 +2424,6 @@ msgstr ""
2341
  msgid "You are not allowed to be here"
2342
  msgstr ""
2343
 
2344
- #: ../admin/tinymce/window.php:41
2345
- msgid "Select gallery"
2346
- msgstr ""
2347
-
2348
  #: ../admin/tinymce/window.php:56
2349
  #: ../admin/tinymce/window.php:84
2350
  msgid "Show as"
@@ -2374,10 +2453,6 @@ msgstr ""
2374
  msgid "Select picture"
2375
  msgstr ""
2376
 
2377
- #: ../admin/tinymce/window.php:99
2378
- msgid "No picture"
2379
- msgstr ""
2380
-
2381
  #: ../admin/tinymce/window.php:111
2382
  msgid "Width x Height"
2383
  msgstr ""
@@ -2406,7 +2481,7 @@ msgstr ""
2406
  msgid "Insert"
2407
  msgstr ""
2408
 
2409
- #: ../lib/core.php:419
2410
  #, php-format
2411
  msgid "Note : Based on your server memory limit you should not upload larger images then <strong>%d x %d</strong> pixel"
2412
  msgstr ""
@@ -2534,7 +2609,8 @@ msgstr ""
2534
  msgid "Format"
2535
  msgstr ""
2536
 
2537
- #: ../lib/ngg-db.php:243
 
2538
  msgid "Album overview"
2539
  msgstr ""
2540
 
@@ -2610,8 +2686,8 @@ msgstr ""
2610
  msgid "%s slug(s) edited."
2611
  msgstr ""
2612
 
2613
- #: ../view/album-compact.php:31
2614
- #: ../view/album-extend.php:29
2615
  msgid "Photos"
2616
  msgstr ""
2617
 
2
  msgstr ""
3
  "Project-Id-Version: NextGEN Gallery\n"
4
  "Report-Msgid-Bugs-To: \n"
5
+ "POT-Creation-Date: 2009-06-07 13:06+0100\n"
6
+ "PO-Revision-Date: 2009-06-07 13:07+0100\n"
7
  "Last-Translator: Alex Rabe\n"
8
  "Language-Team: Alex Rabe\n"
9
  "MIME-Version: 1.0\n"
17
  "X-Poedit-SearchPath-0: .\n"
18
  "X-Poedit-SearchPath-1: ..\n"
19
 
20
+ #: ../nggallery.php:160
21
  msgid "Sorry, NextGEN Gallery works only with a Memory Limit of 16 MB higher"
22
  msgstr "asd"
23
 
24
+ #: ../nggallery.php:185
25
  msgid "Picture tag"
26
  msgstr ""
27
 
28
+ #: ../nggallery.php:186
29
  msgid "Picture tag: %2$l."
30
  msgstr ""
31
 
32
+ #: ../nggallery.php:187
33
  msgid "Separate picture tags with commas."
34
  msgstr ""
35
 
36
+ #: ../nggallery.php:278
37
  msgid "L O A D I N G"
38
  msgstr ""
39
 
40
+ #: ../nggallery.php:279
41
  msgid "Click to Close"
42
  msgstr ""
43
 
44
+ #: ../nggallery.php:293
45
+ msgid "loading"
46
+ msgstr ""
47
+
48
  #: ../nggfunctions.php:37
49
  msgid "The <a href=\"http://www.macromedia.com/go/getflashplayer\">Flash Player</a> and <a href=\"http://www.mozilla.com/firefox/\">a browser with Javascript support</a> are needed.."
50
  msgstr "asd"
51
 
52
  #: ../nggfunctions.php:101
53
+ #: ../nggfunctions.php:475
54
  msgid "[Gallery not found]"
55
  msgstr ""
56
 
57
+ #: ../nggfunctions.php:300
58
  msgid "[Album not found]"
59
  msgstr ""
60
 
61
+ #: ../nggfunctions.php:587
62
  msgid "[SinglePic not found]"
63
  msgstr ""
64
 
65
+ #: ../nggfunctions.php:720
66
  msgid "Related images for"
67
  msgstr ""
68
 
69
+ #: ../nggfunctions.php:755
70
+ #: ../admin/admin.php:30
71
  msgid "Overview"
72
  msgstr ""
73
 
75
  msgid "Copyright notes / Credits"
76
  msgstr ""
77
 
78
+ #: ../admin/about.php:12
79
  msgid "NextGEN DEV Team"
80
  msgstr ""
81
 
82
+ #: ../admin/about.php:14
83
  msgid "This plugin is primarily developed, maintained, supported, documented by"
84
  msgstr ""
85
 
86
+ #: ../admin/about.php:14
87
  msgid "There are many other folks who have made contributions to this project :"
88
  msgstr ""
89
 
90
+ #: ../admin/about.php:19
91
  msgid "Contributors / Tribute to"
92
  msgstr ""
93
 
94
+ #: ../admin/about.php:21
95
  msgid "If you study the code of this plugin, you will find out that we mixed a lot of good already existing code and ideas together."
96
  msgstr ""
97
 
98
+ #: ../admin/about.php:22
99
  msgid "So, we would like to thank the following people for their pioneer work (without this work it's impossible to create such a plugin so fast)"
100
  msgstr ""
101
 
102
+ #: ../admin/about.php:24
103
  msgid "for their great documented code"
104
  msgstr ""
105
 
106
+ #: ../admin/about.php:25
107
  msgid "for jQuery, which is the best Web2.0 framework"
108
  msgstr ""
109
 
110
+ #: ../admin/about.php:26
111
  msgid "for the fantastic PHP Thumbnail Class"
112
  msgstr ""
113
 
114
+ #: ../admin/about.php:27
115
  msgid "for PclZip , a PHP library that manage ZIP archives"
116
  msgstr ""
117
 
118
+ #: ../admin/about.php:28
119
  msgid "for a lot of very useful plugins and ideas"
120
  msgstr ""
121
 
122
+ #: ../admin/about.php:29
123
  msgid "for Shutter Reloaded, a real lightweight image effect"
124
  msgstr ""
125
 
126
+ #: ../admin/about.php:30
127
  msgid "for the best Media Flash Scripts on earth"
128
  msgstr ""
129
 
130
+ #: ../admin/about.php:31
131
  msgid "for the Fugue Iconset"
132
  msgstr ""
133
 
134
+ #: ../admin/about.php:32
135
  msgid "for the Watermark plugin"
136
  msgstr ""
137
 
138
+ #: ../admin/about.php:34
139
  msgid "If you didn't find your name on this list and there is some code which I integrate in my plugin, don't hesitate to send me a mail."
140
  msgstr ""
141
 
142
+ #: ../admin/about.php:38
143
  msgid "How to support ?"
144
  msgstr ""
145
 
146
+ #: ../admin/about.php:40
147
  msgid "There exist several ways to contribute, help or support us in this work. Non of them are mandatory."
148
  msgstr ""
149
 
150
+ #: ../admin/about.php:42
151
  msgid "Send us bugfixes / code changes"
152
  msgstr ""
153
 
154
+ #: ../admin/about.php:42
155
  msgid "The most motivated support for this plugin are your ideas and brain work"
156
  msgstr ""
157
 
158
+ #: ../admin/about.php:43
159
  msgid "Translate the plugin"
160
  msgstr ""
161
 
162
+ #: ../admin/about.php:43
163
  msgid "To help people to work with this plugin, I would like to have it in all available languages"
164
  msgstr ""
165
 
166
+ #: ../admin/about.php:44
167
  msgid "Donate the work via paypal"
168
  msgstr ""
169
 
170
+ #: ../admin/about.php:55
171
  msgid "No doubt a very useful and easy motivation :-)"
172
  msgstr ""
173
 
174
+ #: ../admin/about.php:57
175
  msgid "Place a link to the plugin in your blog/webpage"
176
  msgstr ""
177
 
178
+ #: ../admin/about.php:57
179
  msgid "Yes, share and trackback is also a good support for this work "
180
  msgstr ""
181
 
182
+ #: ../admin/about.php:62
183
  msgid "Thanks!"
184
  msgstr ""
185
 
186
+ #: ../admin/about.php:64
187
  msgid "We would like to thank this people which support us in the work :"
188
  msgstr ""
189
 
190
+ #: ../admin/about.php:162
191
  msgid "and all donators..."
192
  msgstr ""
193
 
197
  msgstr ""
198
 
199
  #: ../admin/addgallery.php:58
200
+ #: ../admin/functions.php:679
201
+ #: ../admin/functions.php:775
202
  msgid "No gallery selected !"
203
  msgstr ""
204
 
216
  msgstr ""
217
 
218
  #: ../admin/addgallery.php:126
219
+ #: ../admin/addgallery.php:293
220
  msgid "Upload images"
221
  msgstr ""
222
 
223
  #: ../admin/addgallery.php:174
224
  #: ../admin/addgallery.php:186
225
+ #: ../admin/manage-galleries.php:54
226
  msgid "Add new gallery"
227
  msgstr ""
228
 
232
  msgstr ""
233
 
234
  #: ../admin/addgallery.php:179
235
+ #: ../admin/addgallery.php:246
236
  msgid "Import image folder"
237
  msgstr ""
238
 
239
  #: ../admin/addgallery.php:181
240
+ #: ../admin/addgallery.php:263
241
  msgid "Upload Images"
242
  msgstr ""
243
 
244
  #: ../admin/addgallery.php:191
245
+ #: ../admin/manage-galleries.php:127
246
  msgid "New Gallery"
247
  msgstr ""
248
 
249
  #: ../admin/addgallery.php:194
250
+ #: ../admin/manage-galleries.php:129
251
  msgid "Create a new , empty gallery below the folder"
252
  msgstr ""
253
 
254
  #: ../admin/addgallery.php:196
255
+ #: ../admin/manage-galleries.php:131
256
  msgid "Allowed characters for file and folder names are"
257
  msgstr ""
258
 
268
  msgid "Upload a zip file with images"
269
  msgstr ""
270
 
271
+ #: ../admin/addgallery.php:216
272
+ msgid "or enter a Zip-File URL"
273
+ msgstr ""
274
+
275
+ #: ../admin/addgallery.php:218
276
+ msgid "Import a zip file with images from a url"
277
+ msgstr ""
278
+
279
+ #: ../admin/addgallery.php:222
280
+ #: ../admin/addgallery.php:272
281
  msgid "in to"
282
  msgstr ""
283
 
284
+ #: ../admin/addgallery.php:224
285
  msgid "a new gallery"
286
  msgstr ""
287
 
288
+ #: ../admin/addgallery.php:235
289
  msgid "Note : The upload limit on your server is "
290
  msgstr ""
291
 
292
+ #: ../admin/addgallery.php:239
293
  msgid "Start upload"
294
  msgstr ""
295
 
296
+ #: ../admin/addgallery.php:251
297
  msgid "Import from Server path:"
298
  msgstr ""
299
 
300
+ #: ../admin/addgallery.php:254
301
  msgid " Please note : For safe-mode = ON you need to add the subfolder thumbs manually"
302
  msgstr ""
303
 
304
+ #: ../admin/addgallery.php:257
305
  msgid "Import folder"
306
  msgstr ""
307
 
308
+ #: ../admin/addgallery.php:268
309
  msgid "Upload image"
310
  msgstr ""
311
 
312
+ #: ../admin/addgallery.php:274
313
  msgid "Choose gallery"
314
  msgstr ""
315
 
316
+ #: ../admin/addgallery.php:289
317
  msgid "The batch upload requires Adobe Flash 10, disable it if you have problems"
318
  msgstr ""
319
 
320
+ #: ../admin/addgallery.php:289
321
  msgid "Disable flash upload"
322
  msgstr ""
323
 
324
+ #: ../admin/addgallery.php:291
325
  msgid "Upload multiple files at once by ctrl/shift-selecting in dialog"
326
  msgstr ""
327
 
328
+ #: ../admin/addgallery.php:291
329
  msgid "Enable flash based upload"
330
  msgstr ""
331
 
332
+ #: ../admin/admin.php:29
333
+ #: ../admin/admin.php:218
334
+ #: ../admin/admin.php:286
335
+ #: ../admin/functions.php:97
336
+ #: ../admin/functions.php:164
337
+ #: ../admin/manage-images.php:186
 
338
  msgid "Gallery"
339
  msgid_plural "Galleries"
340
  msgstr[0] ""
341
  msgstr[1] ""
342
 
343
+ #: ../admin/admin.php:31
344
  msgid "Add Gallery / Images"
345
  msgstr ""
346
 
347
+ #: ../admin/admin.php:32
348
  msgid "Manage Gallery"
349
  msgstr ""
350
 
351
+ #: ../admin/admin.php:33
352
  msgid "Album"
353
  msgid_plural "Albums"
354
  msgstr[0] ""
355
  msgstr[1] ""
356
 
357
+ #: ../admin/admin.php:34
358
  msgid "Tags"
359
  msgstr ""
360
 
361
+ #: ../admin/admin.php:35
362
  msgid "Options"
363
  msgstr ""
364
 
365
+ #: ../admin/admin.php:37
366
  msgid "Style"
367
  msgstr ""
368
 
369
+ #: ../admin/admin.php:38
370
  msgid "Setup Gallery"
371
  msgstr ""
372
 
373
+ #: ../admin/admin.php:38
374
  msgid "Setup"
375
  msgstr ""
376
 
377
+ #: ../admin/admin.php:40
378
  msgid "Roles"
379
  msgstr ""
380
 
381
+ #: ../admin/admin.php:41
382
  msgid "About this Gallery"
383
  msgstr ""
384
 
385
+ #: ../admin/admin.php:41
386
  msgid "About"
387
  msgstr ""
388
 
389
+ #: ../admin/admin.php:43
390
  msgid "NextGEN Gallery"
391
  msgstr ""
392
 
393
+ #: ../admin/admin.php:71
394
  msgid "A new version of NextGEN Gallery is available !"
395
  msgstr ""
396
 
397
+ #: ../admin/admin.php:71
398
  msgid "Download here"
399
  msgstr ""
400
 
401
+ #: ../admin/admin.php:147
402
  msgid "You do not have the correct permission"
403
  msgstr ""
404
 
405
+ #: ../admin/admin.php:148
406
  msgid "Unexpected Error"
407
  msgstr ""
408
 
409
+ #: ../admin/admin.php:149
410
  msgid "A failure occurred"
411
  msgstr ""
412
 
413
+ #: ../admin/admin.php:222
414
  msgid "<a href=\"http://dpotter.net/Technical/2008/03/nextgen-gallery-review-introduction/\" target=\"_blank\">Introduction</a>"
415
  msgstr ""
416
 
417
+ #: ../admin/admin.php:225
418
  msgid "<a href=\"http://dpotter.net/Technical/2008/03/nextgen-gallery-review-introduction/\" target=\"_blank\">Setup</a>"
419
  msgstr ""
420
 
421
+ #: ../admin/admin.php:228
422
  msgid "<a href=\"http://alexrabe.boelinger.com/wordpress-plugins/nextgen-gallery/languages/\" target=\"_blank\">Translation by alex rabe</a>"
423
  msgstr ""
424
 
425
+ #: ../admin/admin.php:231
426
  msgid "<a href=\"http://dpotter.net/Technical/2008/03/nextgen-gallery-review-introduction/\" target=\"_blank\">Roles / Capabilities</a>"
427
  msgstr ""
428
 
429
+ #: ../admin/admin.php:234
430
  msgid "<a href=\"http://dpotter.net/Technical/2008/03/nextgen-gallery-review-introduction/\" target=\"_blank\">Styles</a>"
431
  msgstr ""
432
 
433
+ #: ../admin/admin.php:235
434
  msgid "Templates"
435
  msgstr ""
436
 
437
+ #: ../admin/admin.php:238
438
+ #: ../admin/admin.php:244
439
  msgid "<a href=\"http://dpotter.net/Technical/2008/03/nextgen-gallery-review-introduction/\" target=\"_blank\">Gallery management</a>"
440
  msgstr ""
441
 
442
+ #: ../admin/admin.php:239
443
  msgid "Gallery example"
444
  msgstr ""
445
 
446
+ #: ../admin/admin.php:245
447
+ #: ../admin/admin.php:255
448
  msgid "Gallery tags"
449
  msgstr ""
450
 
451
+ #: ../admin/admin.php:248
452
  msgid "<a href=\"http://dpotter.net/Technical/2008/03/nextgen-gallery-review-introduction/\" target=\"_blank\">Album management</a>"
453
  msgstr ""
454
 
455
+ #: ../admin/admin.php:249
456
  msgid "Album example"
457
  msgstr ""
458
 
459
+ #: ../admin/admin.php:250
460
+ #: ../admin/admin.php:256
461
  msgid "Album tags"
462
  msgstr ""
463
 
464
+ #: ../admin/admin.php:253
465
  msgid "<a href=\"http://dpotter.net/Technical/2008/03/nextgen-gallery-review-introduction/\" target=\"_blank\">Gallery tags</a>"
466
  msgstr ""
467
 
468
+ #: ../admin/admin.php:254
469
  msgid "Related images"
470
  msgstr ""
471
 
472
+ #: ../admin/admin.php:259
473
  msgid "<a href=\"http://dpotter.net/Technical/2008/03/nextgen-gallery-review-image-management/\" target=\"_blank\">Image management</a>"
474
  msgstr ""
475
 
476
+ #: ../admin/admin.php:260
477
  msgid "Custom fields"
478
  msgstr ""
479
 
480
+ #: ../admin/admin.php:265
481
  msgid "Get help with NextGEN Gallery"
482
  msgstr ""
483
 
484
+ #: ../admin/admin.php:269
485
  msgid "More Help & Info"
486
  msgstr ""
487
 
488
+ #: ../admin/admin.php:271
489
  msgid "<a href=\"http://wordpress.org/tags/nextgen-gallery\" target=\"_blank\">Support Forums</a>"
490
  msgstr ""
491
 
492
+ #: ../admin/admin.php:272
493
  msgid "FAQ"
494
  msgstr ""
495
 
496
+ #: ../admin/admin.php:273
497
  msgid "Feature request"
498
  msgstr ""
499
 
500
+ #: ../admin/admin.php:274
501
  msgid "Get your language pack"
502
  msgstr ""
503
 
504
+ #: ../admin/admin.php:275
505
  msgid "Contribute development"
506
  msgstr ""
507
 
508
+ #: ../admin/admin.php:276
509
  msgid "Download latest version"
510
  msgstr ""
511
 
512
+ #: ../admin/album.php:78
513
+ #: ../admin/album.php:91
514
+ #: ../admin/album.php:116
515
  msgid "Update Successfully"
516
  msgstr ""
517
 
518
+ #: ../admin/album.php:99
519
  msgid "Album deleted"
520
  msgstr ""
521
 
522
+ #: ../admin/album.php:226
523
  msgid "Manage Albums"
524
  msgstr ""
525
 
526
+ #: ../admin/album.php:232
527
+ #: ../admin/album.php:275
528
  msgid "Select album"
529
  msgstr ""
530
 
531
+ #: ../admin/album.php:234
532
  msgid "No album selected"
533
  msgstr ""
534
 
535
+ #: ../admin/album.php:245
536
  msgid "Update"
537
  msgstr ""
538
 
539
+ #: ../admin/album.php:246
540
+ msgid "Edit album"
541
+ msgstr ""
542
+
543
+ #: ../admin/album.php:247
544
+ #: ../admin/manage-galleries.php:107
545
+ #: ../admin/manage-images.php:376
546
  msgid "Delete"
547
  msgstr ""
548
 
549
+ #: ../admin/album.php:247
550
  msgid "Delete album ?"
551
  msgstr ""
552
 
553
+ #: ../admin/album.php:249
554
  msgid "Add new album"
555
  msgstr ""
556
 
557
+ #: ../admin/album.php:251
558
  msgid "Add"
559
  msgstr ""
560
 
561
+ #: ../admin/album.php:261
562
+ msgid "Show / hide used galleries"
563
+ msgstr ""
564
+
565
+ #: ../admin/album.php:261
566
  msgid "[Show all]"
567
  msgstr ""
568
 
569
+ #: ../admin/album.php:262
570
+ msgid "Maximize the widget content"
571
+ msgstr ""
572
+
573
+ #: ../admin/album.php:262
574
  msgid "[Maximize]"
575
  msgstr ""
576
 
577
+ #: ../admin/album.php:263
578
+ msgid "Minimize the widget content"
579
+ msgstr ""
580
+
581
+ #: ../admin/album.php:263
582
  msgid "[Minimize]"
583
  msgstr ""
584
 
585
+ #: ../admin/album.php:265
586
+ msgid "After you create and select a album, you can drag and drop a gallery or another album into your new album below"
587
  msgstr ""
588
 
589
+ #: ../admin/album.php:291
590
+ msgid "Select gallery"
591
  msgstr ""
592
 
593
+ #: ../admin/album.php:320
594
+ msgid "Album ID"
595
  msgstr ""
596
 
597
+ #: ../admin/album.php:333
598
  msgid "No album selected!"
599
  msgstr ""
600
 
601
+ #: ../admin/album.php:353
602
+ msgid "Album name:"
603
+ msgstr ""
604
+
605
+ #: ../admin/album.php:359
606
+ msgid "Album description:"
607
+ msgstr ""
608
+
609
+ #: ../admin/album.php:365
610
+ msgid "Select a preview image:"
611
+ msgstr ""
612
+
613
+ #: ../admin/album.php:367
614
+ msgid "No picture"
615
+ msgstr ""
616
+
617
+ #: ../admin/album.php:381
618
+ #: ../admin/manage-galleries.php:136
619
+ #: ../admin/manage-images.php:289
620
+ #: ../admin/manage-images.php:456
621
+ #: ../admin/manage-images.php:491
622
+ msgid "OK"
623
+ msgstr ""
624
+
625
+ #: ../admin/album.php:383
626
+ #: ../admin/manage-galleries.php:138
627
+ #: ../admin/manage-images.php:458
628
+ #: ../admin/manage-images.php:493
629
+ msgid "Cancel"
630
  msgstr ""
631
 
632
+ #: ../admin/album.php:455
633
  msgid "Name"
634
  msgstr ""
635
 
636
+ #: ../admin/album.php:456
637
+ #: ../admin/manage-galleries.php:72
638
+ #: ../admin/manage-images.php:200
639
  msgid "Title"
640
  msgstr ""
641
 
642
+ #: ../admin/album.php:457
643
  msgid "Page"
644
  msgstr ""
645
 
646
+ #: ../admin/functions.php:38
647
  msgid "No valid gallery name!"
648
  msgstr ""
649
 
650
+ #: ../admin/functions.php:45
651
+ #: ../admin/functions.php:54
652
+ #: ../admin/functions.php:68
653
+ #: ../admin/functions.php:136
654
+ #: ../admin/functions.php:143
655
  msgid "Directory"
656
  msgstr ""
657
 
658
+ #: ../admin/functions.php:45
659
  msgid "didn't exist. Please create first the main gallery folder "
660
  msgstr ""
661
 
662
+ #: ../admin/functions.php:46
663
+ #: ../admin/functions.php:55
664
  msgid "Check this link, if you didn't know how to set the permission :"
665
  msgstr ""
666
 
667
+ #: ../admin/functions.php:54
668
+ #: ../admin/functions.php:68
669
  msgid "is not writeable !"
670
  msgstr ""
671
 
672
+ #: ../admin/functions.php:63
673
+ #: ../admin/functions.php:73
674
+ #: ../admin/functions.php:638
675
  msgid "Unable to create directory "
676
  msgstr ""
677
 
678
+ #: ../admin/functions.php:77
679
  msgid "The server setting Safe-Mode is on !"
680
  msgstr ""
681
 
682
+ #: ../admin/functions.php:78
683
  msgid "If you have problems, please create directory"
684
  msgstr ""
685
 
686
+ #: ../admin/functions.php:79
687
  msgid "and the thumbnails directory"
688
  msgstr ""
689
 
690
+ #: ../admin/functions.php:79
691
  msgid "with permission 777 manually !"
692
  msgstr ""
693
 
694
+ #: ../admin/functions.php:97
695
  msgid "already exists"
696
  msgstr ""
697
 
698
+ #: ../admin/functions.php:102
699
  #, php-format
700
  msgid "Gallery %1$s successfully created.<br/>You can show this gallery with the tag %2$s.<br/>"
701
  msgstr ""
702
 
703
+ #: ../admin/functions.php:105
704
  msgid "Edit gallery"
705
  msgstr ""
706
 
707
+ #: ../admin/functions.php:136
708
  msgid "doesn&#96;t exist!"
709
  msgstr ""
710
 
711
+ #: ../admin/functions.php:143
712
  msgid "contains no pictures"
713
  msgstr ""
714
 
715
+ #: ../admin/functions.php:161
716
  msgid "Database error. Could not add gallery!"
717
  msgstr ""
718
 
719
+ #: ../admin/functions.php:164
720
  msgid "successfully created!"
721
  msgstr ""
722
 
723
+ #: ../admin/functions.php:193
724
+ #: ../admin/functions.php:751
725
+ #: ../admin/manage-images.php:279
 
726
  msgid "Create new thumbnails"
727
  msgstr ""
728
 
729
+ #: ../admin/functions.php:196
730
  msgid " picture(s) successfully added"
731
  msgstr ""
732
 
733
+ #: ../admin/functions.php:243
734
+ #: ../admin/functions.php:323
735
+ #: ../admin/functions.php:365
736
  msgid "Object didn't contain correct data"
737
  msgstr ""
738
 
739
+ #: ../admin/functions.php:248
740
  msgid " is not writeable "
741
  msgstr ""
742
 
743
+ #: ../admin/functions.php:330
744
+ #: ../admin/functions.php:368
745
  msgid " is not writeable"
746
  msgstr ""
747
 
748
+ #: ../admin/functions.php:575
749
+ msgid "No valid URL path "
750
+ msgstr ""
751
+
752
+ #: ../admin/functions.php:591
753
+ msgid "Import via cURL failed."
754
+ msgstr ""
755
+
756
+ #: ../admin/functions.php:606
757
  msgid "Uploaded file was no or a faulty zip file ! The server recognize : "
758
  msgstr ""
759
 
760
+ #: ../admin/functions.php:622
761
  msgid "Could not get a valid foldername"
762
  msgstr ""
763
 
764
+ #: ../admin/functions.php:633
765
  #, php-format
766
  msgid "Unable to create directory %s. Is its parent directory writable by the server?"
767
  msgstr ""
768
 
769
+ #: ../admin/functions.php:648
770
  msgid "Zip-File successfully unpacked"
771
  msgstr ""
772
 
773
+ #: ../admin/functions.php:687
774
+ #: ../admin/functions.php:802
775
  msgid "Failure in database, no gallery path set !"
776
  msgstr ""
777
 
778
+ #: ../admin/functions.php:708
779
+ #: ../admin/functions.php:796
780
  msgid "is no valid image file!"
781
  msgstr ""
782
 
783
+ #: ../admin/functions.php:722
784
+ #: ../admin/functions.php:938
785
+ #: ../admin/functions.php:1011
786
  #, php-format
787
  msgid "Unable to write to directory %s. Is this directory writable by the server?"
788
  msgstr ""
789
 
790
+ #: ../admin/functions.php:729
791
+ #: ../admin/functions.php:819
792
  msgid "Error, the file could not moved to : "
793
  msgstr ""
794
 
795
+ #: ../admin/functions.php:734
796
+ #: ../admin/functions.php:823
797
  msgid "Error, the file permissions could not set"
798
  msgstr ""
799
 
800
+ #: ../admin/functions.php:755
801
  msgid " Image(s) successfully added"
802
  msgstr ""
803
 
804
+ #: ../admin/functions.php:784
805
  msgid "Invalid upload. Error Code : "
806
  msgstr ""
807
 
808
+ #: ../admin/functions.php:838
809
  msgid "Sorry, you have used your space allocation. Please delete some files to upload more files."
810
  msgstr ""
811
 
812
+ #: ../admin/functions.php:878
813
  #, php-format
814
  msgid "SAFE MODE Restriction in effect! You need to create the folder <strong>%s</strong> manually"
815
  msgstr ""
816
 
817
+ #: ../admin/functions.php:879
818
  #, php-format
819
  msgid "When safe_mode is on, PHP checks to see if the owner (%s) of the current script matches the owner (%s) of the file to be operated on by a file function or its directory"
820
  msgstr ""
821
 
822
+ #: ../admin/functions.php:932
823
+ #: ../admin/functions.php:1005
824
  msgid "The destination gallery does not exist"
825
  msgstr ""
826
 
827
+ #: ../admin/functions.php:963
828
  #, php-format
829
  msgid "Failed to move image %1$s to %2$s"
830
  msgstr ""
831
 
832
+ #: ../admin/functions.php:981
833
  #, php-format
834
  msgid "Moved %1$s picture(s) to gallery : %2$s ."
835
  msgstr ""
836
 
837
+ #: ../admin/functions.php:1038
838
  #, php-format
839
  msgid "Failed to copy image %1$s to %2$s"
840
  msgstr ""
841
 
842
+ #: ../admin/functions.php:1050
843
  #, php-format
844
  msgid "Failed to copy database row for picture %s"
845
  msgstr ""
846
 
847
+ #: ../admin/functions.php:1058
848
  #, php-format
849
  msgid "Image %1$s (%2$s) copied as image %3$s (%4$s) &raquo; The file already existed in the destination gallery."
850
  msgstr ""
851
 
852
+ #: ../admin/functions.php:1061
853
  #, php-format
854
  msgid "Image %1$s (%2$s) copied as image %3$s (%4$s)"
855
  msgstr ""
856
 
857
+ #: ../admin/functions.php:1070
858
  #, php-format
859
  msgid "Copied %1$s picture(s) to gallery: %2$s ."
860
  msgstr ""
863
  msgid "Sorry, NextGEN Gallery works only with a role called administrator"
864
  msgstr ""
865
 
866
+ #: ../admin/install.php:107
867
  msgid "NextGEN Gallery : Tables could not created, please check your database settings"
868
  msgstr ""
869
 
870
+ #: ../admin/install.php:165
871
  msgid "[Show as slideshow]"
872
  msgstr ""
873
 
874
+ #: ../admin/install.php:166
875
  msgid "[Show picture list]"
876
  msgstr ""
877
 
878
+ #: ../admin/manage-galleries.php:26
879
+ #: ../admin/manage-images.php:54
880
  msgid "&laquo;"
881
  msgstr ""
882
 
883
+ #: ../admin/manage-galleries.php:27
884
+ #: ../admin/manage-images.php:55
885
  msgid "&raquo;"
886
  msgstr ""
887
 
888
+ #: ../admin/manage-galleries.php:42
889
  msgid "Gallery Overview"
890
  msgstr ""
891
 
892
+ #: ../admin/manage-galleries.php:45
893
+ #: ../admin/manage-galleries.php:48
894
+ #: ../admin/manage-images.php:173
895
+ #: ../admin/manage-images.php:176
896
+ msgid "Search Images"
897
+ msgstr ""
898
+
899
+ #: ../admin/manage-galleries.php:60
900
+ #: ../admin/manage-images.php:268
901
  #, php-format
902
  msgid "Displaying %s&#8211;%s of %s"
903
  msgstr ""
904
 
905
+ #: ../admin/manage-galleries.php:71
906
+ #: ../admin/manage-images.php:516
907
+ msgid "ID"
908
+ msgstr ""
909
+
910
+ #: ../admin/manage-galleries.php:73
911
+ #: ../admin/manage-images.php:211
912
+ #: ../admin/manage-images.php:521
913
  msgid "Description"
914
  msgstr ""
915
 
916
+ #: ../admin/manage-galleries.php:74
917
+ #: ../admin/manage-images.php:231
918
  msgid "Author"
919
  msgstr ""
920
 
921
+ #: ../admin/manage-galleries.php:75
922
  msgid "Page ID"
923
  msgstr ""
924
 
925
+ #: ../admin/manage-galleries.php:76
926
  msgid "Quantity"
927
  msgstr ""
928
 
929
+ #: ../admin/manage-galleries.php:77
930
  msgid "Action"
931
  msgstr ""
932
 
933
+ #: ../admin/manage-galleries.php:94
934
  msgid "Edit"
935
  msgstr ""
936
 
937
+ #: ../admin/manage-galleries.php:107
938
  msgid "Delete this gallery ?"
939
  msgstr ""
940
 
941
+ #: ../admin/manage-galleries.php:114
942
+ #: ../admin/manage-images.php:433
943
  msgid "No entries found"
944
  msgstr ""
945
 
946
+ #: ../admin/manage-images.php:31
947
  msgid "Gallery not found."
948
  msgstr ""
949
 
950
+ #: ../admin/manage-images.php:37
951
  msgid "Sorry, you have no access here"
952
  msgstr ""
953
 
954
+ #: ../admin/manage-images.php:130
955
  msgid "No images selected"
956
  msgstr ""
957
 
958
+ #: ../admin/manage-images.php:150
959
  #, php-format
960
  msgid ""
961
  "You are about to start the bulk edit for %s images \n"
963
  " 'Cancel' to stop, 'OK' to proceed."
964
  msgstr ""
965
 
966
+ #: ../admin/manage-images.php:170
967
+ #, php-format
968
+ msgid "Search results for &#8220;%s&#8221;"
969
+ msgstr ""
970
+
971
+ #: ../admin/manage-images.php:196
972
  msgid "Gallery settings"
973
  msgstr ""
974
 
975
+ #: ../admin/manage-images.php:196
976
  msgid "Click here for more settings"
977
  msgstr ""
978
 
979
+ #: ../admin/manage-images.php:202
980
  msgid "Page Link to"
981
  msgstr ""
982
 
983
+ #: ../admin/manage-images.php:205
984
  msgid "Not linked"
985
  msgstr ""
986
 
987
+ #: ../admin/manage-images.php:213
988
  msgid "Preview image"
989
  msgstr ""
990
 
991
+ #: ../admin/manage-images.php:216
992
  msgid "No Picture"
993
  msgstr ""
994
 
995
+ #: ../admin/manage-images.php:229
996
  msgid "Path"
997
  msgstr ""
998
 
999
+ #: ../admin/manage-images.php:245
1000
  msgid "Create new page"
1001
  msgstr ""
1002
 
1003
+ #: ../admin/manage-images.php:248
1004
  msgid "Main page (No parent)"
1005
  msgstr ""
1006
 
1007
+ #: ../admin/manage-images.php:251
1008
  msgid "Add page"
1009
  msgstr ""
1010
 
1011
+ #: ../admin/manage-images.php:257
1012
  msgid "Scan Folder for new images"
1013
  msgstr ""
1014
 
1015
+ #: ../admin/manage-images.php:258
1016
+ #: ../admin/manage-images.php:295
1017
+ #: ../admin/manage-images.php:439
1018
  msgid "Save Changes"
1019
  msgstr ""
1020
 
1021
+ #: ../admin/manage-images.php:277
1022
  msgid "No action"
1023
  msgstr ""
1024
 
1025
+ #: ../admin/manage-images.php:278
 
1026
  msgid "Set watermark"
1027
  msgstr ""
1028
 
1029
+ #: ../admin/manage-images.php:280
 
1030
  msgid "Resize images"
1031
  msgstr ""
1032
 
1033
+ #: ../admin/manage-images.php:281
1034
  msgid "Delete images"
1035
  msgstr ""
1036
 
1037
+ #: ../admin/manage-images.php:282
1038
  msgid "Import metadata"
1039
  msgstr ""
1040
 
1041
+ #: ../admin/manage-images.php:283
1042
  msgid "Copy to..."
1043
  msgstr ""
1044
 
1045
+ #: ../admin/manage-images.php:284
1046
  msgid "Move to..."
1047
  msgstr ""
1048
 
1049
+ #: ../admin/manage-images.php:285
1050
  msgid "Add tags"
1051
  msgstr ""
1052
 
1053
+ #: ../admin/manage-images.php:286
1054
  msgid "Delete tags"
1055
  msgstr ""
1056
 
1057
+ #: ../admin/manage-images.php:287
1058
  msgid "Overwrite tags"
1059
  msgstr ""
1060
 
1061
+ #: ../admin/manage-images.php:292
 
 
 
 
 
 
1062
  msgid "Sort gallery"
1063
  msgstr ""
1064
 
1065
+ #: ../admin/manage-images.php:373
1066
  #, php-format
1067
  msgid "View \"%s\""
1068
  msgstr ""
1069
 
1070
+ #: ../admin/manage-images.php:373
1071
  msgid "View"
1072
  msgstr ""
1073
 
1074
+ #: ../admin/manage-images.php:374
1075
  msgid "Show Meta data"
1076
  msgstr ""
1077
 
1078
+ #: ../admin/manage-images.php:374
1079
  msgid "Meta"
1080
  msgstr ""
1081
 
1082
+ #: ../admin/manage-images.php:375
1083
  msgid "Customize thumbnail"
1084
  msgstr ""
1085
 
1086
+ #: ../admin/manage-images.php:375
1087
  msgid "Edit thumb"
1088
  msgstr ""
1089
 
1090
+ #: ../admin/manage-images.php:376
1091
  #, php-format
1092
  msgid "Delete \"%s\""
1093
  msgstr ""
1094
 
1095
+ #: ../admin/manage-images.php:452
1096
  msgid "Enter the tags"
1097
  msgstr ""
1098
 
1099
+ #: ../admin/manage-images.php:475
 
 
 
 
 
1100
  msgid "Select the destination gallery:"
1101
  msgstr ""
1102
 
1103
+ #: ../admin/manage-images.php:517
1104
  msgid "Thumbnail"
1105
  msgstr ""
1106
 
1107
+ #: ../admin/manage-images.php:519
1108
  #: ../admin/manage-sort.php:80
1109
  msgid "Filename"
1110
  msgstr ""
1111
 
1112
+ #: ../admin/manage-images.php:521
1113
  msgid "Alt &amp; Title Text"
1114
  msgstr ""
1115
 
1116
+ #: ../admin/manage-images.php:522
1117
  msgid "Tags (comma separated list)"
1118
  msgstr ""
1119
 
1120
+ #: ../admin/manage-images.php:524
1121
  msgid "exclude"
1122
  msgstr ""
1123
 
1165
  msgid "Descending"
1166
  msgstr ""
1167
 
1168
+ #: ../admin/manage.php:82
1169
  #: ../admin/manage.php:100
1170
  msgid "deleted successfully"
1171
  msgstr ""
1172
 
1173
  #: ../admin/manage.php:100
1174
+ #: ../admin/tinymce/window.php:31
1175
  msgid "Picture"
1176
  msgstr ""
1177
 
1178
+ #: ../admin/manage.php:141
1179
  msgid "Pictures deleted successfully "
1180
  msgstr ""
1181
 
1182
+ #: ../admin/manage.php:147
1183
  msgid "Import metadata finished"
1184
  msgstr ""
1185
 
1186
+ #: ../admin/manage.php:155
1187
  msgid "Operation successful. Please clear your browser cache."
1188
  msgstr ""
1189
 
1190
+ #: ../admin/manage.php:218
1191
  msgid "Tags changed"
1192
  msgstr ""
1193
 
1194
+ #: ../admin/manage.php:245
1195
  msgid "Update successful"
1196
  msgstr ""
1197
 
1198
+ #: ../admin/manage.php:279
1199
  msgid "New gallery page ID"
1200
  msgstr ""
1201
 
1202
+ #: ../admin/manage.php:279
1203
  msgid "created"
1204
  msgstr ""
1205
 
1292
  msgid "Save all changes"
1293
  msgstr ""
1294
 
1295
+ #: ../admin/overview.php:16
1296
+ #: ../admin/overview.php:46
1297
  msgid "NextGEN Gallery Overview"
1298
  msgstr ""
1299
 
1300
+ #: ../admin/overview.php:126
1301
+ msgid "Thanks to all donators..."
1302
+ msgstr ""
1303
+
1304
+ #: ../admin/overview.php:148
1305
+ msgid "View all"
1306
+ msgstr ""
1307
+
1308
+ #: ../admin/overview.php:187
1309
  #, php-format
1310
  msgid "Newsfeed could not be loaded. Check the <a href=\"%s\">front page</a> to check for updates."
1311
  msgstr ""
1312
 
1313
+ #: ../admin/overview.php:207
1314
  msgid "At a Glance"
1315
  msgstr ""
1316
 
1317
+ #: ../admin/overview.php:213
1318
  msgid "Image"
1319
  msgid_plural "Images"
1320
  msgstr[0] ""
1321
  msgstr[1] ""
1322
 
1323
+ #: ../admin/overview.php:234
1324
  msgid "Upload pictures"
1325
  msgstr ""
1326
 
1327
+ #: ../admin/overview.php:235
1328
  msgid "Here you can control your images, galleries and albums."
1329
  msgstr ""
1330
 
1331
+ #: ../admin/overview.php:239
1332
  msgid "Gallery Administrator"
1333
  msgstr ""
1334
 
1335
+ #: ../admin/overview.php:239
1336
  msgid "Gallery Editor"
1337
  msgstr ""
1338
 
1339
+ #: ../admin/overview.php:240
1340
  #, php-format
1341
  msgid "You currently have %s rights."
1342
  msgstr ""
1343
 
1344
+ #: ../admin/overview.php:247
1345
  msgid "Welcome to NextGEN Gallery !"
1346
  msgstr ""
1347
 
1348
+ #: ../admin/overview.php:248
1349
  msgid "Latest News"
1350
  msgstr ""
1351
 
1352
+ #: ../admin/overview.php:249
1353
+ msgid "Recent donators"
1354
+ msgstr ""
1355
+
1356
+ #: ../admin/overview.php:250
1357
  msgid "Server Settings"
1358
  msgstr ""
1359
 
1360
+ #: ../admin/overview.php:251
1361
  msgid "Graphic Library"
1362
  msgstr ""
1363
 
1364
+ #: ../admin/overview.php:267
1365
  msgid "No GD support"
1366
  msgstr ""
1367
 
1368
+ #: ../admin/overview.php:274
1369
+ #: ../admin/overview.php:313
1370
+ #: ../admin/overview.php:316
1371
+ #: ../admin/overview.php:319
1372
  msgid "Yes"
1373
  msgstr ""
1374
 
1375
+ #: ../admin/overview.php:276
1376
+ #: ../admin/overview.php:314
1377
+ #: ../admin/overview.php:317
1378
+ #: ../admin/overview.php:320
1379
  msgid "No"
1380
  msgstr ""
1381
 
1382
+ #: ../admin/overview.php:290
1383
  msgid "Not set"
1384
  msgstr ""
1385
 
1386
+ #: ../admin/overview.php:292
1387
+ #: ../admin/overview.php:295
1388
  msgid "On"
1389
  msgstr ""
1390
 
1391
+ #: ../admin/overview.php:293
1392
+ #: ../admin/overview.php:296
1393
  msgid "Off"
1394
  msgstr ""
1395
 
1396
+ #: ../admin/overview.php:299
1397
+ #: ../admin/overview.php:302
1398
+ #: ../admin/overview.php:305
1399
+ #: ../admin/overview.php:308
1400
+ #: ../admin/overview.php:311
1401
  msgid "N/A"
1402
  msgstr ""
1403
 
1404
+ #: ../admin/overview.php:310
1405
  msgid " MByte"
1406
  msgstr ""
1407
 
1408
+ #: ../admin/overview.php:323
1409
  msgid "Operating System"
1410
  msgstr ""
1411
 
1412
+ #: ../admin/overview.php:324
1413
  msgid "Server"
1414
  msgstr ""
1415
 
1416
+ #: ../admin/overview.php:325
1417
  msgid "Memory usage"
1418
  msgstr ""
1419
 
1420
+ #: ../admin/overview.php:326
1421
  msgid "MYSQL Version"
1422
  msgstr ""
1423
 
1424
+ #: ../admin/overview.php:327
1425
  msgid "SQL Mode"
1426
  msgstr ""
1427
 
1428
+ #: ../admin/overview.php:328
1429
  msgid "PHP Version"
1430
  msgstr ""
1431
 
1432
+ #: ../admin/overview.php:329
1433
  msgid "PHP Safe Mode"
1434
  msgstr ""
1435
 
1436
+ #: ../admin/overview.php:330
1437
  msgid "PHP Allow URL fopen"
1438
  msgstr ""
1439
 
1440
+ #: ../admin/overview.php:331
1441
  msgid "PHP Memory Limit"
1442
  msgstr ""
1443
 
1444
+ #: ../admin/overview.php:332
1445
  msgid "PHP Max Upload Size"
1446
  msgstr ""
1447
 
1448
+ #: ../admin/overview.php:333
1449
  msgid "PHP Max Post Size"
1450
  msgstr ""
1451
 
1452
+ #: ../admin/overview.php:334
1453
  msgid "PHP Max Script Execute Time"
1454
  msgstr ""
1455
 
1456
+ #: ../admin/overview.php:335
1457
  msgid "PHP Exif support"
1458
  msgstr ""
1459
 
1460
+ #: ../admin/overview.php:336
1461
  msgid "PHP IPTC support"
1462
  msgstr ""
1463
 
1464
+ #: ../admin/overview.php:337
1465
  msgid "PHP XML support"
1466
  msgstr ""
1467
 
1468
+ #: ../admin/overview.php:395
1469
  msgid "Storage Space"
1470
  msgstr ""
1471
 
1472
+ #: ../admin/overview.php:398
1473
  msgid "Upload Space Used:"
1474
  msgstr ""
1475
 
1476
+ #: ../admin/overview.php:404
1477
  msgid "Upload Space Remaining:"
1478
  msgstr ""
1479
 
2308
  msgid "Upgrade database structure..."
2309
  msgstr ""
2310
 
2311
+ #: ../admin/upgrade.php:92
2312
+ #: ../admin/upgrade.php:102
2313
+ #: ../admin/upgrade.php:109
2314
+ #: ../admin/upgrade.php:120
2315
  msgid "finished"
2316
  msgstr ""
2317
 
2318
+ #: ../admin/upgrade.php:100
2319
  msgid "Update file structure..."
2320
  msgstr ""
2321
 
2322
+ #: ../admin/upgrade.php:107
2323
  msgid "Import date and time information..."
2324
  msgstr ""
2325
 
2326
+ #: ../admin/upgrade.php:115
2327
  msgid "Move imagerotator to new location..."
2328
  msgstr ""
2329
 
2330
+ #: ../admin/upgrade.php:184
2331
  msgid "Some folders/files could not renamed, please recheck the permission and rescan the folder in the manage gallery section."
2332
  msgstr ""
2333
 
2334
+ #: ../admin/upgrade.php:186
2335
  msgid "Rename failed"
2336
  msgstr ""
2337
 
2338
+ #: ../admin/upgrade.php:281
2339
+ #: ../admin/upgrade.php:300
2340
  msgid "Upgrade NextGEN Gallery"
2341
  msgstr ""
2342
 
2343
+ #: ../admin/upgrade.php:282
2344
  msgid "The script detect that you upgrade from a older version."
2345
  msgstr ""
2346
 
2347
+ #: ../admin/upgrade.php:283
2348
  msgid "Your database tables for NextGEN Gallery is out-of-date, and must be upgraded before you can continue."
2349
  msgstr ""
2350
 
2351
+ #: ../admin/upgrade.php:284
2352
  msgid "If you would like to downgrade later, please make first a complete backup of your database and the images."
2353
  msgstr ""
2354
 
2355
+ #: ../admin/upgrade.php:285
2356
  msgid "The upgrade process may take a while, so please be patient."
2357
  msgstr ""
2358
 
2359
+ #: ../admin/upgrade.php:286
2360
  msgid "Start upgrade now"
2361
  msgstr ""
2362
 
2363
+ #: ../admin/upgrade.php:302
2364
  msgid "Upgrade sucessful"
2365
  msgstr ""
2366
 
2367
+ #: ../admin/upgrade.php:303
2368
  msgid "Continue"
2369
  msgstr ""
2370
 
2424
  msgid "You are not allowed to be here"
2425
  msgstr ""
2426
 
 
 
 
 
2427
  #: ../admin/tinymce/window.php:56
2428
  #: ../admin/tinymce/window.php:84
2429
  msgid "Show as"
2453
  msgid "Select picture"
2454
  msgstr ""
2455
 
 
 
 
 
2456
  #: ../admin/tinymce/window.php:111
2457
  msgid "Width x Height"
2458
  msgstr ""
2481
  msgid "Insert"
2482
  msgstr ""
2483
 
2484
+ #: ../lib/core.php:425
2485
  #, php-format
2486
  msgid "Note : Based on your server memory limit you should not upload larger images then <strong>%d x %d</strong> pixel"
2487
  msgstr ""
2609
  msgid "Format"
2610
  msgstr ""
2611
 
2612
+ #: ../lib/ngg-db.php:290
2613
+ #: ../lib/ngg-db.php:291
2614
  msgid "Album overview"
2615
  msgstr ""
2616
 
2686
  msgid "%s slug(s) edited."
2687
  msgstr ""
2688
 
2689
+ #: ../view/album-compact.php:32
2690
+ #: ../view/album-extend.php:30
2691
  msgid "Photos"
2692
  msgstr ""
2693
 
lib/core.php CHANGED
@@ -156,10 +156,16 @@ class nggGallery {
156
  $r = '';
157
  if ( 1 < $page ) {
158
  $args['nggpage'] = ( 1 == $page - 1 ) ? FALSE : $page - 1;
159
- $r .= '<a class="prev" href="'. $nggRewrite->get_permalink( $args ) . '">&#9668;</a>';
 
 
 
 
160
  }
161
 
162
- if ( ( $total_pages = ceil( $total / $maxElement ) ) > 1 ) {
 
 
163
  for ( $page_num = 1; $page_num <= $total_pages; $page_num++ ) {
164
  if ( $page == $page_num ) {
165
  $r .= '<span>' . $page_num . '</span>';
@@ -179,7 +185,7 @@ class nggGallery {
179
 
180
  if ( ( $page ) * $maxElement < $total || -1 == $total ) {
181
  $args['nggpage'] = $page + 1;
182
- $r .= '<a class="next" href="' . $nggRewrite->get_permalink ( $args ) . '">&#9658;</a>';
183
  }
184
 
185
  $navigation = "<div class='ngg-navigation'>$r</div>";
@@ -236,7 +242,7 @@ class nggGallery {
236
  'bool' => array(
237
  'ngg_gal_ShowSlide' => 'galShowSlide',
238
  'ngg_gal_ShowPiclense' => 'usePicLens',
239
- 'ngg_gal_ImgageBrowser' => 'galImgBrowser',
240
  'ngg_ir_Shuffle' => 'irShuffle',
241
  'ngg_ir_LinkFromDisplay' => 'irLinkfromdisplay',
242
  'ngg_ir_ShowNavigation' => 'irShownavigation',
@@ -404,7 +410,7 @@ class nggGallery {
404
 
405
  // build the test sizes
406
  $sizes = array();
407
- $sizes[] = array ( 'width' => 800, 'height' => 600);
408
  $sizes[] = array ( 'width' => 1024, 'height' => 768);
409
  $sizes[] = array ( 'width' => 1280, 'height' => 960); // 1MP
410
  $sizes[] = array ( 'width' => 1600, 'height' => 1200); // 2MP
@@ -416,7 +422,7 @@ class nggGallery {
416
  foreach ($sizes as $size){
417
  // very, very rough estimation
418
  if ($freeMemory < round( $size['width'] * $size['height'] * 5.09 )) {
419
- $result = sprintf( __( 'Note : Based on your server memory limit you should not upload larger images then <strong>%d x %d</strong> pixel' ), $size['width'], $size['height']);
420
  return $result;
421
  }
422
  }
156
  $r = '';
157
  if ( 1 < $page ) {
158
  $args['nggpage'] = ( 1 == $page - 1 ) ? FALSE : $page - 1;
159
+ $previous = $args['nggpage'];
160
+ if (FALSE == $args['nggpage']) {
161
+ $previous = 1;
162
+ }
163
+ $r .= '<a class="prev" id="ngg-prev-' . $previous . '" href="'. $nggRewrite->get_permalink( $args ) . '">&#9668;</a>';
164
  }
165
 
166
+ $total_pages = ceil( $total / $maxElement );
167
+
168
+ if ( $total_pages > 1 ) {
169
  for ( $page_num = 1; $page_num <= $total_pages; $page_num++ ) {
170
  if ( $page == $page_num ) {
171
  $r .= '<span>' . $page_num . '</span>';
185
 
186
  if ( ( $page ) * $maxElement < $total || -1 == $total ) {
187
  $args['nggpage'] = $page + 1;
188
+ $r .= '<a class="next" id="ngg-next-' . $args['nggpage'] . '" href="' . $nggRewrite->get_permalink ( $args ) . '">&#9658;</a>';
189
  }
190
 
191
  $navigation = "<div class='ngg-navigation'>$r</div>";
242
  'bool' => array(
243
  'ngg_gal_ShowSlide' => 'galShowSlide',
244
  'ngg_gal_ShowPiclense' => 'usePicLens',
245
+ 'ngg_gal_ImageBrowser' => 'galImgBrowser',
246
  'ngg_ir_Shuffle' => 'irShuffle',
247
  'ngg_ir_LinkFromDisplay' => 'irLinkfromdisplay',
248
  'ngg_ir_ShowNavigation' => 'irShownavigation',
410
 
411
  // build the test sizes
412
  $sizes = array();
413
+ $sizes[] = array ( 'width' => 800, 'height' => 600);
414
  $sizes[] = array ( 'width' => 1024, 'height' => 768);
415
  $sizes[] = array ( 'width' => 1280, 'height' => 960); // 1MP
416
  $sizes[] = array ( 'width' => 1600, 'height' => 1200); // 2MP
422
  foreach ($sizes as $size){
423
  // very, very rough estimation
424
  if ($freeMemory < round( $size['width'] * $size['height'] * 5.09 )) {
425
+ $result = sprintf( __( 'Note : Based on your server memory limit you should not upload larger images then <strong>%d x %d</strong> pixel', 'nggallery' ), $size['width'], $size['height']);
426
  return $result;
427
  }
428
  }
lib/image.php CHANGED
@@ -1,5 +1,5 @@
1
  <?php
2
-
3
  /**
4
  * Image PHP class for the WordPress plugin NextGEN Gallery
5
  *
@@ -188,5 +188,5 @@ class nggImage{
188
  return $this->permalink;
189
  }
190
  }
191
-
192
  ?>
1
  <?php
2
+ if ( !class_exists('nggImage') ) :
3
  /**
4
  * Image PHP class for the WordPress plugin NextGEN Gallery
5
  *
188
  return $this->permalink;
189
  }
190
  }
191
+ endif;
192
  ?>
lib/imagemagick.inc.php CHANGED
@@ -341,7 +341,12 @@ var $imageMagickBefore;
341
 
342
  //string to resize the picture to $this->newDimensions['newWidth'],$this->newDimensions['newHeight']
343
  //should result in: -thumbnail $this->newDimensions['newWidth']x$this->newDimensions['newHeight']
344
- $this->imageMagickExec .= " -resize ".$maxWidth."x".$maxHeight;
 
 
 
 
 
345
 
346
  // next calculations should be done with the 'new' dimensions
347
  $this->currentDimensions['width'] = $this->newDimensions['newWidth'];
341
 
342
  //string to resize the picture to $this->newDimensions['newWidth'],$this->newDimensions['newHeight']
343
  //should result in: -thumbnail $this->newDimensions['newWidth']x$this->newDimensions['newHeight']
344
+ if($maxWidth=='0')
345
+ $this->imageMagickExec .= " -resize x".$maxHeight;
346
+ elseif($maxHeight=='0')
347
+ $this->imageMagickExec .= " -resize ".$maxWidth."x";
348
+ elseif($maxHeight!='0' && $maxWidth!='0')
349
+ $this->imageMagickExec .= " -resize ".$maxWidth."x".$maxHeight;
350
 
351
  // next calculations should be done with the 'new' dimensions
352
  $this->currentDimensions['width'] = $this->newDimensions['newWidth'];
lib/ngg-db.php CHANGED
@@ -1,10 +1,10 @@
1
  <?php
2
-
3
  /**
4
  * NextGEN Gallery Database Class
5
  *
6
  * @author Alex Rabe, Vincent Prat
7
- * @copyright 2008
8
  * @since 1.0.0
9
  */
10
  class nggdb {
@@ -17,6 +17,24 @@ class nggdb {
17
  * @var object|array
18
  */
19
  var $galleries = false;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
20
 
21
  /**
22
  * The array for the pagination
@@ -43,9 +61,11 @@ class nggdb {
43
  global $wpdb;
44
 
45
  $this->galleries = array();
46
- $this->paged = array();
 
 
47
 
48
- register_shutdown_function(array(&$this, "__destruct"));
49
 
50
  }
51
 
@@ -58,6 +78,32 @@ class nggdb {
58
  return true;
59
  }
60
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
61
  /**
62
  * Get all the galleries
63
  *
@@ -210,6 +256,7 @@ class nggdb {
210
 
211
  return $result;
212
  }
 
213
  /**
214
  * Delete a gallery AND all the pictures associated to this gallery!
215
  *
@@ -236,12 +283,14 @@ class nggdb {
236
  // Query database
237
  if ( is_numeric($id) && $id != 0 ) {
238
  $album = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM $wpdb->nggalbum WHERE id = %d", $id) );
239
- } elseif ( $id == 'all' || $id == 0 ) {
240
  // init the object and fill it
241
  $album = new stdClass();
242
  $album->id = 'all';
243
  $album->name = __('Album overview','nggallery');
244
- $album->sortorder = serialize( $wpdb->get_col("SELECT gid FROM $wpdb->nggallery") );
 
 
245
  } else {
246
  $album = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM $wpdb->nggalbum WHERE name = '%s'", $id) );
247
  }
@@ -250,6 +299,11 @@ class nggdb {
250
  if ( $album ) {
251
  if ( !empty( $album->sortorder ) )
252
  $album->gallery_ids = unserialize( $album->sortorder );
 
 
 
 
 
253
  return $album;
254
  }
255
 
@@ -500,14 +554,67 @@ class nggdb {
500
  return null;
501
  }
502
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
503
  }
 
504
 
505
- if ( ! isset($nggdb) ) {
506
  /**
507
  * Initate the NextGEN Gallery Database Object, for later cache reasons
508
  * @global object $nggdb Creates a new wpdb object based on wp-config.php Constants for the database
509
  * @since 1.1.0
510
  */
511
- $nggdb = new nggdb();
 
512
  }
513
  ?>
1
  <?php
2
+ if ( !class_exists('nggdb') ) :
3
  /**
4
  * NextGEN Gallery Database Class
5
  *
6
  * @author Alex Rabe, Vincent Prat
7
+ * @copyright 2008-2009
8
  * @since 1.0.0
9
  */
10
  class nggdb {
17
  * @var object|array
18
  */
19
  var $galleries = false;
20
+
21
+ /**
22
+ * Holds the list of all images
23
+ *
24
+ * @since 1.3.0
25
+ * @access public
26
+ * @var object|array
27
+ */
28
+ var $images = false;
29
+
30
+ /**
31
+ * Holds the list of all albums
32
+ *
33
+ * @since 1.3.0
34
+ * @access public
35
+ * @var object|array
36
+ */
37
+ var $albums = false;
38
 
39
  /**
40
  * The array for the pagination
61
  global $wpdb;
62
 
63
  $this->galleries = array();
64
+ $this->images = array();
65
+ $this->albums = array();
66
+ $this->paged = array();
67
 
68
+ register_shutdown_function(array(&$this, '__destruct'));
69
 
70
  }
71
 
78
  return true;
79
  }
80
 
81
+ /**
82
+ * Get all the album nad unserialize the content
83
+ *
84
+ * @since 1.3.0
85
+ * @param string $order_by
86
+ * @param string $order_dir
87
+ * @return array $album
88
+ */
89
+ function find_all_album( $order_by = 'id', $order_dir = 'ASC') {
90
+ global $wpdb;
91
+
92
+ $order_dir = ( $order_dir == 'DESC') ? 'DESC' : 'ASC';
93
+ $this->albums = $wpdb->get_results("SELECT * FROM $wpdb->nggalbum ORDER BY {$order_by} {$order_dir}" , OBJECT_K );
94
+
95
+ if ( !$this->albums )
96
+ return array();
97
+
98
+ foreach ($this->albums as $key => $value) {
99
+ $this->albums[$key]->galleries = (array) unserialize($this->albums[$key]->sortorder);
100
+ $this->albums[$key]->name = stripslashes( $this->albums[$key]->name );
101
+ $this->albums[$key]->albumdesc = stripslashes( $this->albums[$key]->albumdesc );
102
+ }
103
+
104
+ return $this->albums;
105
+ }
106
+
107
  /**
108
  * Get all the galleries
109
  *
256
 
257
  return $result;
258
  }
259
+
260
  /**
261
  * Delete a gallery AND all the pictures associated to this gallery!
262
  *
283
  // Query database
284
  if ( is_numeric($id) && $id != 0 ) {
285
  $album = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM $wpdb->nggalbum WHERE id = %d", $id) );
286
+ } elseif ( $id == 'all' || (is_numeric($id) && $id == 0) ) {
287
  // init the object and fill it
288
  $album = new stdClass();
289
  $album->id = 'all';
290
  $album->name = __('Album overview','nggallery');
291
+ $album->albumdesc = __('Album overview','nggallery');
292
+ $album->previewpic = 0;
293
+ $album->sortorder = serialize( $wpdb->get_col("SELECT gid FROM $wpdb->nggallery") );
294
  } else {
295
  $album = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM $wpdb->nggalbum WHERE name = '%s'", $id) );
296
  }
299
  if ( $album ) {
300
  if ( !empty( $album->sortorder ) )
301
  $album->gallery_ids = unserialize( $album->sortorder );
302
+
303
+ // it was a bad idea to use a object, stripslashes_deep() could not used here, learn from it
304
+ $album->albumdesc = stripslashes($album->albumdesc);
305
+ $album->name = stripslashes($album->name);
306
+
307
  return $album;
308
  }
309
 
554
  return null;
555
  }
556
 
557
+ /**
558
+ * search for images and return the result
559
+ *
560
+ * @since 1.3.0
561
+ * @param string $request
562
+ * @return Array Result of the request
563
+ */
564
+ function search_for_images( $request ) {
565
+ global $wpdb;
566
+
567
+ // If a search pattern is specified, load the posts that match
568
+ if ( !empty($request) ) {
569
+ // added slashes screw with quote grouping when done early, so done later
570
+ $request = stripslashes($request);
571
+
572
+ // split the words it a array if seperated by a space or comma
573
+ preg_match_all('/".*?("|$)|((?<=[\\s",+])|^)[^\\s",+]+/', $request, $matches);
574
+ $search_terms = array_map(create_function('$a', 'return trim($a, "\\"\'\\n\\r ");'), $matches[0]);
575
+
576
+ $n = '%';
577
+ $searchand = '';
578
+
579
+ foreach( (array) $search_terms as $term) {
580
+ $term = addslashes_gpc($term);
581
+ $search .= "{$searchand}((tt.description LIKE '{$n}{$term}{$n}') OR (tt.alttext LIKE '{$n}{$term}{$n}') OR (tt.filename LIKE '{$n}{$term}{$n}'))";
582
+ $searchand = ' AND ';
583
+ }
584
+
585
+ $term = $wpdb->escape($request);
586
+ if (count($search_terms) > 1 && $search_terms[0] != $request )
587
+ $search .= " OR (tt.description LIKE '{$n}{$term}{$n}') OR (tt.alttext LIKE '{$n}{$term}{$n}') OR (tt.filename LIKE '{$n}{$term}{$n}')";
588
+
589
+ if ( !empty($search) )
590
+ $search = " AND ({$search}) ";
591
+ }
592
+
593
+ // build the final query
594
+ $query = "SELECT t.*, tt.* FROM $wpdb->nggallery AS t INNER JOIN $wpdb->nggpictures AS tt ON t.gid = tt.galleryid WHERE 1=1 $search ORDER BY tt.pid ASC ";
595
+ $result = $wpdb->get_results($query);
596
+
597
+ // Return the object from the query result
598
+ if ($result) {
599
+ foreach ($result as $image) {
600
+ $images[] = new nggImage( $image );
601
+ }
602
+ return $images;
603
+ }
604
+
605
+ return null;
606
+ }
607
+
608
  }
609
+ endif;
610
 
611
+ if ( ! isset($GLOBALS['nggdb']) ) {
612
  /**
613
  * Initate the NextGEN Gallery Database Object, for later cache reasons
614
  * @global object $nggdb Creates a new wpdb object based on wp-config.php Constants for the database
615
  * @since 1.1.0
616
  */
617
+ unset($GLOBALS['nggdb']);
618
+ $GLOBALS['nggdb'] =& new nggdb();
619
  }
620
  ?>
lib/rewrite.php CHANGED
@@ -61,7 +61,7 @@ class nggRewrite {
61
  if ( !empty( $gallerytag ) )
62
  $args ['gallerytag'] = $gallerytag;
63
 
64
- /* urlconstructor = slug | type | tags | [nav] | [show]
65
  type : page | post
66
  tags : album, gallery -> /album-([0-9]+)/gallery-([0-9]+)/
67
  pid -> /page/([0-9]+)/
@@ -69,45 +69,44 @@ class nggRewrite {
69
  nav : nggpage -> /page-([0-9]+)/
70
  show : show=slide -> /slideshow/
71
  show=gallery -> /images/
72
- */
73
 
74
  // 1. Blog url + main slug
75
  $url = get_option('home') . '/' . $this->slug;
76
 
77
  // 2. Post or page ?
78
- if ( $post->post_type == 'page' ) {
79
  $url .= '/page-' . $post->ID; // Pagnename is nicer but how to handle /parent/pagename ? Confused...
80
- } else {
81
  $url .= '/post/' . $post->post_name;
82
- }
83
 
84
  // 3. Album, pid or tags
85
- if (isset ($args['album']) && isset ($args['gallery']) ) {
 
 
 
86
  $url .= '/album-' . $args['album'] . '/gallery-' . $args['gallery'];
87
- }
88
- if (isset ($args['gallerytag'])) {
89
  $url .= '/tags/' . $args['gallerytag'];
90
- }
91
- if (isset ($args['pid'])) {
92
  $url .= '/page/' . $args['pid'];
93
- }
94
 
95
  // 4. Navigation
96
- if (isset ($args['nggpage']) && ($args['nggpage']) ) {
97
  $url .= '/page-' . $args['nggpage'];
98
- }
99
 
100
  // 5. Show images or Slideshow
101
- if (isset ($args['show'])) {
102
  $url .= ( $args['show'] == 'slide' ) ? '/slideshow' : '/images';
103
- }
104
 
105
  return $url;
 
106
  } else {
107
  // we need to add the page/post id at the start_page otherwise we don't know which gallery is clicked
108
- if (is_home()) {
109
  $args['pageid'] = get_the_ID();
110
- }
111
 
112
  // taken from is_frontpage plugin, required for static homepage
113
  $show_on_front = get_option('show_on_front');
@@ -116,7 +115,7 @@ class nggRewrite {
116
  if (($show_on_front == 'page') && ($page_on_front == get_the_ID()))
117
  $args['page_id'] = get_the_ID();
118
 
119
- $query = htmlspecialchars(add_query_arg( $args));
120
 
121
  return $query;
122
  }
@@ -232,6 +231,8 @@ class nggRewrite {
232
  $this->slug.'/page-([0-9]+)/images/?$' => 'index.php?page_id=$matches[1]&show=gallery',
233
  $this->slug.'/page-([0-9]+)/tags/([^/]+)/?$' => 'index.php?page_id=$matches[1]&gallerytag=$matches[2]',
234
  $this->slug.'/page-([0-9]+)/tags/([^/]+)/page-([0-9]+)/?$' => 'index.php?page_id=$matches[1]&gallerytag=$matches[2]&nggpage=$matches[3]',
 
 
235
  $this->slug.'/page-([0-9]+)/album-([^/]+)/gallery-([0-9]+)/?$' => 'index.php?page_id=$matches[1]&album=$matches[2]&gallery=$matches[3]',
236
  $this->slug.'/page-([0-9]+)/album-([^/]+)/gallery-([0-9]+)/slideshow/?$' => 'index.php?page_id=$matches[1]&album=$matches[2]&gallery=$matches[3]&show=slide',
237
  $this->slug.'/page-([0-9]+)/album-([^/]+)/gallery-([0-9]+)/images/?$' => 'index.php?page_id=$matches[1]&album=$matches[2]&gallery=$matches[3]&show=gallery',
@@ -248,6 +249,8 @@ class nggRewrite {
248
  $this->slug.'/post/([^/]+)/images/?$' => 'index.php?name=$matches[1]&show=gallery',
249
  $this->slug.'/post/([^/]+)/tags/([^/]+)/?$' => 'index.php?name=$matches[1]&gallerytag=$matches[2]',
250
  $this->slug.'/post/([^/]+)/tags/([^/]+)/page-([0-9]+)/?$' => 'index.php?name=$matches[1]&gallerytag=$matches[2]&nggpage=$matches[3]',
 
 
251
  $this->slug.'/post/([^/]+)/album-([^/]+)/gallery-([0-9]+)/?$' => 'index.php?name=$matches[1]&album=$matches[2]&gallery=$matches[3]',
252
  $this->slug.'/post/([^/]+)/album-([^/]+)/gallery-([0-9]+)/slideshow/?$' => 'index.php?name=$matches[1]&album=$matches[2]&gallery=$matches[3]&show=slide',
253
  $this->slug.'/post/([^/]+)/album-([^/]+)/gallery-([0-9]+)/images/?$' => 'index.php?name=$matches[1]&album=$matches[2]&gallery=$matches[3]&show=gallery',
61
  if ( !empty( $gallerytag ) )
62
  $args ['gallerytag'] = $gallerytag;
63
 
64
+ /** urlconstructor = slug | type | tags | [nav] | [show]
65
  type : page | post
66
  tags : album, gallery -> /album-([0-9]+)/gallery-([0-9]+)/
67
  pid -> /page/([0-9]+)/
69
  nav : nggpage -> /page-([0-9]+)/
70
  show : show=slide -> /slideshow/
71
  show=gallery -> /images/
72
+ **/
73
 
74
  // 1. Blog url + main slug
75
  $url = get_option('home') . '/' . $this->slug;
76
 
77
  // 2. Post or page ?
78
+ if ( $post->post_type == 'page' )
79
  $url .= '/page-' . $post->ID; // Pagnename is nicer but how to handle /parent/pagename ? Confused...
80
+ else
81
  $url .= '/post/' . $post->post_name;
 
82
 
83
  // 3. Album, pid or tags
84
+
85
+ if (isset ($args['album']) && ($args['gallery'] == false) )
86
+ $url .= '/album-' . $args['album'];
87
+ elseif (isset ($args['album']) && isset ($args['gallery']) )
88
  $url .= '/album-' . $args['album'] . '/gallery-' . $args['gallery'];
89
+
90
+ if (isset ($args['gallerytag']))
91
  $url .= '/tags/' . $args['gallerytag'];
92
+
93
+ if (isset ($args['pid']))
94
  $url .= '/page/' . $args['pid'];
 
95
 
96
  // 4. Navigation
97
+ if (isset ($args['nggpage']) && ($args['nggpage']) )
98
  $url .= '/page-' . $args['nggpage'];
 
99
 
100
  // 5. Show images or Slideshow
101
+ if (isset ($args['show']))
102
  $url .= ( $args['show'] == 'slide' ) ? '/slideshow' : '/images';
 
103
 
104
  return $url;
105
+
106
  } else {
107
  // we need to add the page/post id at the start_page otherwise we don't know which gallery is clicked
108
+ if (is_home())
109
  $args['pageid'] = get_the_ID();
 
110
 
111
  // taken from is_frontpage plugin, required for static homepage
112
  $show_on_front = get_option('show_on_front');
115
  if (($show_on_front == 'page') && ($page_on_front == get_the_ID()))
116
  $args['page_id'] = get_the_ID();
117
 
118
+ $query = htmlspecialchars( add_query_arg($args, get_permalink( get_the_ID() )) );
119
 
120
  return $query;
121
  }
231
  $this->slug.'/page-([0-9]+)/images/?$' => 'index.php?page_id=$matches[1]&show=gallery',
232
  $this->slug.'/page-([0-9]+)/tags/([^/]+)/?$' => 'index.php?page_id=$matches[1]&gallerytag=$matches[2]',
233
  $this->slug.'/page-([0-9]+)/tags/([^/]+)/page-([0-9]+)/?$' => 'index.php?page_id=$matches[1]&gallerytag=$matches[2]&nggpage=$matches[3]',
234
+ $this->slug.'/page-([0-9]+)/album-([^/]+)/?$' => 'index.php?page_id=$matches[1]&album=$matches[2]',
235
+ $this->slug.'/page-([0-9]+)/album-([^/]+)/page-([0-9]+)/?$' => 'index.php?page_id=$matches[1]&album=$matches[2]&nggpage=$matches[3]',
236
  $this->slug.'/page-([0-9]+)/album-([^/]+)/gallery-([0-9]+)/?$' => 'index.php?page_id=$matches[1]&album=$matches[2]&gallery=$matches[3]',
237
  $this->slug.'/page-([0-9]+)/album-([^/]+)/gallery-([0-9]+)/slideshow/?$' => 'index.php?page_id=$matches[1]&album=$matches[2]&gallery=$matches[3]&show=slide',
238
  $this->slug.'/page-([0-9]+)/album-([^/]+)/gallery-([0-9]+)/images/?$' => 'index.php?page_id=$matches[1]&album=$matches[2]&gallery=$matches[3]&show=gallery',
249
  $this->slug.'/post/([^/]+)/images/?$' => 'index.php?name=$matches[1]&show=gallery',
250
  $this->slug.'/post/([^/]+)/tags/([^/]+)/?$' => 'index.php?name=$matches[1]&gallerytag=$matches[2]',
251
  $this->slug.'/post/([^/]+)/tags/([^/]+)/page-([0-9]+)/?$' => 'index.php?name=$matches[1]&gallerytag=$matches[2]&nggpage=$matches[3]',
252
+ $this->slug.'/post/([^/]+)/album-([^/]+)/?$' => 'index.php?name=$matches[1]&album=$matches[2]',
253
+ $this->slug.'/post/([^/]+)/album-([^/]+)/page-([0-9]+)/?$' => 'index.php?name=$matches[1]&album=$matches[2]&nggpage=$matches[3]',
254
  $this->slug.'/post/([^/]+)/album-([^/]+)/gallery-([0-9]+)/?$' => 'index.php?name=$matches[1]&album=$matches[2]&gallery=$matches[3]',
255
  $this->slug.'/post/([^/]+)/album-([^/]+)/gallery-([0-9]+)/slideshow/?$' => 'index.php?name=$matches[1]&album=$matches[2]&gallery=$matches[3]&show=slide',
256
  $this->slug.'/post/([^/]+)/album-([^/]+)/gallery-([0-9]+)/images/?$' => 'index.php?name=$matches[1]&album=$matches[2]&gallery=$matches[3]&show=gallery',
lib/shortcodes.php CHANGED
@@ -342,4 +342,4 @@ class NextGEN_shortcodes {
342
  // let's use it
343
  $nggShortcodes = new NextGEN_Shortcodes;
344
 
345
- ?>
342
  // let's use it
343
  $nggShortcodes = new NextGEN_Shortcodes;
344
 
345
+ ?>
nggajax.php ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ require_once('ngg-config.php');
3
+
4
+ // check if we have all needed parameter
5
+ if ((!isset($_GET['galleryid']) || !is_numeric($_GET['galleryid'])) || (!isset($_GET['p']) || !is_numeric($_GET['p'])) || !isset($_GET['type']))
6
+ die('Insufficient parameters.');
7
+
8
+ switch ($_GET['type']) {
9
+ case 'gallery':
10
+
11
+ // get the navigation page
12
+ set_query_var('nggpage', intval($_GET['nggpage']));
13
+
14
+ // get the current page/post id
15
+ set_query_var('pageid', intval($_GET['p']));
16
+ $GLOBALS['id'] = intval($_GET['p']);
17
+
18
+ echo nggShowGallery( intval($_GET['galleryid']) );
19
+
20
+ break;
21
+ case 'browser':
22
+
23
+ // which image should be shown ?
24
+ set_query_var('pid', intval($_GET['pid']));
25
+
26
+ // get the current page/post id
27
+ set_query_var('pageid', intval($_GET['p']));
28
+ $GLOBALS['id'] = intval($_GET['p']);
29
+
30
+ echo nggShowImageBrowser( intval($_GET['galleryid']) );
31
+
32
+ break;
33
+ default:
34
+ echo 'Wrong request type specified.';
35
+ }
nggallery.php CHANGED
@@ -4,7 +4,7 @@ Plugin Name: NextGEN Gallery
4
  Plugin URI: http://alexrabe.boelinger.com/?page_id=80
5
  Description: A NextGENeration Photo gallery for the Web 2.0.
6
  Author: Alex Rabe
7
- Version: 1.2.1
8
 
9
  Author URI: http://alexrabe.boelinger.com/
10
 
@@ -44,8 +44,8 @@ if(preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die('You
44
  if (!class_exists('nggLoader')) {
45
  class nggLoader {
46
 
47
- var $version = '1.2.1';
48
- var $dbversion = '1.1.0';
49
  var $minium_WP = '2.7';
50
  var $minium_WPMU = '2.7';
51
  var $updateURL = 'http://nextgen.boelinger.com/version.php';
@@ -82,6 +82,7 @@ class nggLoader {
82
 
83
  // Register_taxonomy must be used during wo init
84
  add_action( 'init', array(&$this, 'register_taxonomy') );
 
85
  }
86
 
87
  function start_plugin() {
@@ -114,6 +115,9 @@ class nggLoader {
114
  // Add the script and style files
115
  add_action('wp_print_scripts', array(&$this, 'load_scripts') );
116
  add_action('wp_print_styles', array(&$this, 'load_styles') );
 
 
 
117
 
118
  }
119
  }
@@ -258,8 +262,6 @@ class nggLoader {
258
  }
259
 
260
  function load_scripts() {
261
-
262
- echo "<meta name='NextGEN' content='" . $this->version . "' />\n";
263
 
264
  // activate Thickbox
265
  if ($this->options['thumbEffect'] == 'thickbox') {
@@ -284,6 +286,14 @@ class nggLoader {
284
  if ( NGGALLERY_IREXIST == true )
285
  wp_enqueue_script('swfobject', NGGALLERY_URLPATH .'admin/js/swfobject.js', FALSE, '2.1');
286
 
 
 
 
 
 
 
 
 
287
  }
288
 
289
  function load_thickbox_images() {
@@ -318,7 +328,7 @@ class nggLoader {
318
  function start_rewrite_module() {
319
  global $nggRewrite;
320
 
321
- if ( class_exists(nggRewrite) )
322
  $nggRewrite = new nggRewrite();
323
  }
324
 
4
  Plugin URI: http://alexrabe.boelinger.com/?page_id=80
5
  Description: A NextGENeration Photo gallery for the Web 2.0.
6
  Author: Alex Rabe
7
+ Version: 1.3.0
8
 
9
  Author URI: http://alexrabe.boelinger.com/
10
 
44
  if (!class_exists('nggLoader')) {
45
  class nggLoader {
46
 
47
+ var $version = '1.3.0';
48
+ var $dbversion = '1.3.1';
49
  var $minium_WP = '2.7';
50
  var $minium_WPMU = '2.7';
51
  var $updateURL = 'http://nextgen.boelinger.com/version.php';
82
 
83
  // Register_taxonomy must be used during wo init
84
  add_action( 'init', array(&$this, 'register_taxonomy') );
85
+
86
  }
87
 
88
  function start_plugin() {
115
  // Add the script and style files
116
  add_action('wp_print_scripts', array(&$this, 'load_scripts') );
117
  add_action('wp_print_styles', array(&$this, 'load_styles') );
118
+
119
+ // Add a version number to the header
120
+ add_action('wp_head', create_function('', 'echo "\n<meta name=\'NextGEN\' content=\'' . $this->version . '\' />\n";') );
121
 
122
  }
123
  }
262
  }
263
 
264
  function load_scripts() {
 
 
265
 
266
  // activate Thickbox
267
  if ($this->options['thumbEffect'] == 'thickbox') {
286
  if ( NGGALLERY_IREXIST == true )
287
  wp_enqueue_script('swfobject', NGGALLERY_URLPATH .'admin/js/swfobject.js', FALSE, '2.1');
288
 
289
+ // Load AJAX navigation script, works only with shutter script as we need to add the listener
290
+ if ( ($this->options['thumbEffect'] == "shutter") || function_exists('srel_makeshutter') ) {
291
+ wp_enqueue_script ( 'ngg_script', NGGALLERY_URLPATH . 'js/ngg.js', array('jquery'));
292
+ wp_localize_script( 'ngg_script', 'ngg_ajax', array('path' => NGGALLERY_URLPATH,
293
+ 'loading' => __('loading', 'nggallery'),
294
+ ) );
295
+ }
296
+
297
  }
298
 
299
  function load_thickbox_images() {
328
  function start_rewrite_module() {
329
  global $nggRewrite;
330
 
331
+ if ( class_exists('nggRewrite') )
332
  $nggRewrite = new nggRewrite();
333
  }
334
 
nggfunctions.php CHANGED
@@ -109,7 +109,9 @@ function nggShowGallery( $galleryID, $template = '' ) {
109
 
110
  // set $show if slideshow first
111
  if ( empty( $show ) AND ($ngg_options['galShowOrder'] == 'slide')) {
112
- if (is_home()) $pageid = get_the_ID();
 
 
113
  $show = 'slide';
114
  }
115
 
@@ -159,6 +161,9 @@ function nggCreateGallery($picturelist, $galleryID = false, $template = '') {
159
  // $_GET from wp_query
160
  $nggpage = get_query_var('nggpage');
161
  $pageid = get_query_var('pageid');
 
 
 
162
 
163
  if ( !is_array($picturelist) )
164
  $picturelist = array($picturelist);
@@ -172,6 +177,7 @@ function nggCreateGallery($picturelist, $galleryID = false, $template = '') {
172
  $gallery->title = stripslashes( $first_image->title );
173
  $gallery->description = html_entity_decode(stripslashes( $first_image->galdesc));
174
  $gallery->pageid = $first_image->pageid;
 
175
  reset($picturelist);
176
 
177
  $maxElement = $ngg_options['galImages'];
@@ -203,7 +209,7 @@ function nggCreateGallery($picturelist, $galleryID = false, $template = '') {
203
 
204
  // check for page navigation
205
  if ($maxElement > 0) {
206
- if ( !is_home() || $pageid == get_the_ID() ) {
207
  $page = ( !empty( $nggpage ) ) ? (int) $nggpage : 1;
208
  }
209
  else $page = 1;
@@ -222,7 +228,7 @@ function nggCreateGallery($picturelist, $galleryID = false, $template = '') {
222
  } else {
223
  $navigation = '<div class="ngg-clear">&nbsp;</div>';
224
  }
225
- //var_dump($picturelist);
226
  foreach ($picturelist as $key => $picture) {
227
  // choose link between imagebrowser or effect
228
  $link = ($ngg_options['galImgBrowser']) ? $nggRewrite->get_permalink( array('pid'=>$picture->pid) ) : $picture->imageURL;
@@ -277,14 +283,14 @@ function nggShowAlbum($albumID, $template = 'extend') {
277
  // first look for gallery variable
278
  if (!empty( $gallery )) {
279
 
280
- if ( ($albumID != $album) && ($albumID != 'all') )
281
- return;
282
-
283
  // if gallery is is submit , then show the gallery instead
284
- $galleryID = (int) $gallery;
285
- $out = nggShowGallery($galleryID);
286
  return $out;
287
  }
 
 
 
 
288
 
289
  // lookup in the database
290
  $album = nggdb::find_album( $albumID );
@@ -315,7 +321,7 @@ function nggShowAlbum($albumID, $template = 'extend') {
315
  function nggCreateAlbum( $galleriesID, $template = 'extend', $album = 0) {
316
  // create a gallery overview div
317
 
318
- global $wpdb, $nggRewrite;
319
 
320
  // $_GET from wp_query
321
  $nggpage = get_query_var('nggpage');
@@ -352,8 +358,35 @@ function nggCreateAlbum( $galleriesID, $template = 'extend', $album = 0) {
352
 
353
  // re-order them and populate some
354
  foreach ($sortorder as $key) {
355
- $galleries[$key] = $unsort_galleries[$key];
356
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
357
  // add the file name and the link
358
  if ($galleries[$key]->previewpic != 0) {
359
  $galleries[$key]->previewname = $albumPreview[$galleries[$key]->previewpic]->filename;
@@ -378,6 +411,9 @@ function nggCreateAlbum( $galleriesID, $template = 'extend', $album = 0) {
378
 
379
  // description can contain HTML tags
380
  $galleries[$key]->galdesc = html_entity_decode ( stripslashes($galleries[$key]->galdesc) ) ;
 
 
 
381
  }
382
 
383
  // check for page navigation
@@ -460,6 +496,9 @@ function nggCreateImageBrowser($picarray, $template = '') {
460
 
461
  // $_GET from wp_query
462
  $pid = get_query_var('pid');
 
 
 
463
 
464
  if ( !is_array($picarray) )
465
  $picarray = array($picarray);
@@ -493,12 +532,15 @@ function nggCreateImageBrowser($picarray, $template = '') {
493
  // add more variables for render output
494
  $picture->href_link = $picture->get_href_link();
495
  $picture->previous_image_link = $nggRewrite->get_permalink(array ('pid' => $back_pid));
 
496
  $picture->next_image_link = $nggRewrite->get_permalink(array ('pid' => $next_pid));
 
497
  $picture->number = $key + 1;
498
  $picture->total = $total;
499
  $picture->linktitle = htmlspecialchars( stripslashes($picture->description) );
500
  $picture->alttext = html_entity_decode( stripslashes($picture->alttext) );
501
  $picture->description = html_entity_decode( stripslashes($picture->description) );
 
502
 
503
  // filter to add custom content for the output
504
  $picture = apply_filters('ngg_image_object', $picture, $act_pid);
@@ -566,11 +608,16 @@ function nggSinglePicture($imageID, $width = 250, $height = 250, $mode = '', $fl
566
 
567
  // clean mode if needed
568
  $mode = ( eregi('web20|watermark', $mode) ) ? $mode : '';
 
 
 
569
 
570
  // check fo cached picture
571
  if ( ($ngg_options['imgCacheSinglePic']) && ($post->post_status == 'publish') )
572
  $picture->thumbnailURL = $picture->cached_singlepic_file($width, $height, $mode );
573
- else
 
 
574
  $picture->thumbnailURL = NGGALLERY_URLPATH . 'nggshow.php?pid=' . $imageID . '&amp;width=' . $width . '&amp;height=' . $height . '&amp;mode=' . $mode;
575
 
576
  // add more variables for render output
109
 
110
  // set $show if slideshow first
111
  if ( empty( $show ) AND ($ngg_options['galShowOrder'] == 'slide')) {
112
+ if ( is_home() )
113
+ $pageid = get_the_ID();
114
+
115
  $show = 'slide';
116
  }
117
 
161
  // $_GET from wp_query
162
  $nggpage = get_query_var('nggpage');
163
  $pageid = get_query_var('pageid');
164
+
165
+ // we need to know the current page id
166
+ $current_page = (get_the_ID() == false) ? 0 : get_the_ID();
167
 
168
  if ( !is_array($picturelist) )
169
  $picturelist = array($picturelist);
177
  $gallery->title = stripslashes( $first_image->title );
178
  $gallery->description = html_entity_decode(stripslashes( $first_image->galdesc));
179
  $gallery->pageid = $first_image->pageid;
180
+ $gallery->anchor = 'ngg-gallery-' . $galleryID . '-' . $current_page;
181
  reset($picturelist);
182
 
183
  $maxElement = $ngg_options['galImages'];
209
 
210
  // check for page navigation
211
  if ($maxElement > 0) {
212
+ if ( !is_home() || $pageid == $current_page ) {
213
  $page = ( !empty( $nggpage ) ) ? (int) $nggpage : 1;
214
  }
215
  else $page = 1;
228
  } else {
229
  $navigation = '<div class="ngg-clear">&nbsp;</div>';
230
  }
231
+
232
  foreach ($picturelist as $key => $picture) {
233
  // choose link between imagebrowser or effect
234
  $link = ($ngg_options['galImgBrowser']) ? $nggRewrite->get_permalink( array('pid'=>$picture->pid) ) : $picture->imageURL;
283
  // first look for gallery variable
284
  if (!empty( $gallery )) {
285
 
 
 
 
286
  // if gallery is is submit , then show the gallery instead
287
+ $out = nggShowGallery( intval($gallery) );
 
288
  return $out;
289
  }
290
+
291
+ //redirect to subalbum
292
+ if (!empty( $album ))
293
+ $albumID = $album;
294
 
295
  // lookup in the database
296
  $album = nggdb::find_album( $albumID );
321
  function nggCreateAlbum( $galleriesID, $template = 'extend', $album = 0) {
322
  // create a gallery overview div
323
 
324
+ global $wpdb, $nggRewrite, $nggdb;
325
 
326
  // $_GET from wp_query
327
  $nggpage = get_query_var('nggpage');
358
 
359
  // re-order them and populate some
360
  foreach ($sortorder as $key) {
361
+
362
+ //if we have a prefix 'a' then it's a subalbum, instead a gallery
363
+ if (substr( $key, 0, 1) == 'a') {
364
+ // get the album content
365
+ if ( !$subalbum = $nggdb->find_album(substr( $key, 1)) )
366
+ continue;
367
+
368
+ //populate the sub album values
369
+ $galleries[$key]->counter = 0;
370
+ if ($subalbum->previewpic > 0)
371
+ $image = $nggdb->find_image( $subalbum->previewpic );
372
+ $galleries[$key]->previewpic = $subalbum->previewpic;
373
+ $galleries[$key]->previewurl = ($image->thumbURL) ? $image->thumbURL : '';
374
+ $galleries[$key]->previewname = $subalbum->name;
375
+
376
+ //link to the subalbum
377
+ $args['album'] = $subalbum->id;
378
+ $args['gallery'] = false;
379
+ $args['nggpage'] = false;
380
+ $galleries[$key]->pagelink = $nggRewrite->get_permalink($args);
381
+ $galleries[$key]->galdesc = html_entity_decode ( nggGallery::i18n($subalbum->albumdesc) );
382
+ $galleries[$key]->title = html_entity_decode ( nggGallery::i18n($subalbum->name) );
383
+
384
+ continue;
385
+ }
386
+
387
+ // Add the counter value if avaible
388
+ $galleries[$key] = $unsort_galleries[$key];
389
+
390
  // add the file name and the link
391
  if ($galleries[$key]->previewpic != 0) {
392
  $galleries[$key]->previewname = $albumPreview[$galleries[$key]->previewpic]->filename;
411
 
412
  // description can contain HTML tags
413
  $galleries[$key]->galdesc = html_entity_decode ( stripslashes($galleries[$key]->galdesc) ) ;
414
+
415
+ // i18n
416
+ $galleries[$key]->title = html_entity_decode ( nggGallery::i18n($galleries[$key]->title) ) ;
417
  }
418
 
419
  // check for page navigation
496
 
497
  // $_GET from wp_query
498
  $pid = get_query_var('pid');
499
+
500
+ // we need to know the current page id
501
+ $current_page = (get_the_ID() == false) ? 0 : get_the_ID();
502
 
503
  if ( !is_array($picarray) )
504
  $picarray = array($picarray);
532
  // add more variables for render output
533
  $picture->href_link = $picture->get_href_link();
534
  $picture->previous_image_link = $nggRewrite->get_permalink(array ('pid' => $back_pid));
535
+ $picture->previous_pid = $back_pid;
536
  $picture->next_image_link = $nggRewrite->get_permalink(array ('pid' => $next_pid));
537
+ $picture->next_pid = $next_pid;
538
  $picture->number = $key + 1;
539
  $picture->total = $total;
540
  $picture->linktitle = htmlspecialchars( stripslashes($picture->description) );
541
  $picture->alttext = html_entity_decode( stripslashes($picture->alttext) );
542
  $picture->description = html_entity_decode( stripslashes($picture->description) );
543
+ $picture->anchor = 'ngg-imagebrowser-' . $picture->galleryid . '-' . $current_page;
544
 
545
  // filter to add custom content for the output
546
  $picture = apply_filters('ngg_image_object', $picture, $act_pid);
608
 
609
  // clean mode if needed
610
  $mode = ( eregi('web20|watermark', $mode) ) ? $mode : '';
611
+
612
+ //let's initiate the url
613
+ $picture->thumbnailURL = false;
614
 
615
  // check fo cached picture
616
  if ( ($ngg_options['imgCacheSinglePic']) && ($post->post_status == 'publish') )
617
  $picture->thumbnailURL = $picture->cached_singlepic_file($width, $height, $mode );
618
+
619
+ // if we didn't use a cached image then we take the on-the-fly mode
620
+ if (!$picture->thumbnailURL)
621
  $picture->thumbnailURL = NGGALLERY_URLPATH . 'nggshow.php?pid=' . $imageID . '&amp;width=' . $width . '&amp;height=' . $height . '&amp;mode=' . $mode;
622
 
623
  // add more variables for render output
nggshow.php CHANGED
@@ -11,7 +11,7 @@ $ngg_options = get_option('ngg_options');
11
 
12
  // Some parameters from the URL
13
  $pictureID = (int) $_GET['pid'];
14
- $mode = attribute_escape($_GET['mode']);
15
 
16
  // let's get the image data
17
  $picture = nggdb::find_image( $pictureID );
11
 
12
  // Some parameters from the URL
13
  $pictureID = (int) $_GET['pid'];
14
+ $mode = isset($_GET['mode']) ? attribute_escape($_GET['mode']) : '';
15
 
16
  // let's get the image data
17
  $picture = nggdb::find_image( $pictureID );
view/album-compact.php CHANGED
@@ -28,7 +28,9 @@ Follow variables are useable :
28
  </div>
29
  </div>
30
  <h4><a class="ngg-album-desc" title="<?php echo $gallery->title ?>" href="<?php echo $gallery->pagelink ?>" ><?php echo $gallery->title ?></a></h4>
 
31
  <p><strong><?php echo $gallery->counter ?></strong> <?php _e('Photos', 'nggallery') ?></p>
 
32
  </div>
33
 
34
  <?php endforeach; ?>
28
  </div>
29
  </div>
30
  <h4><a class="ngg-album-desc" title="<?php echo $gallery->title ?>" href="<?php echo $gallery->pagelink ?>" ><?php echo $gallery->title ?></a></h4>
31
+ <?php if ($gallery->counter > 0) : ?>
32
  <p><strong><?php echo $gallery->counter ?></strong> <?php _e('Photos', 'nggallery') ?></p>
33
+ <?php endif; ?>
34
  </div>
35
 
36
  <?php endforeach; ?>
view/album-extend.php CHANGED
@@ -26,7 +26,9 @@ Follow variables are useable :
26
  </div>
27
  <div class="ngg-description">
28
  <p><?php echo $gallery->galdesc ?></p>
 
29
  <p><strong><?php echo $gallery->counter ?></strong> <?php _e('Photos', 'nggallery') ?></p>
 
30
  </div>
31
  </div>
32
  </div>
26
  </div>
27
  <div class="ngg-description">
28
  <p><?php echo $gallery->galdesc ?></p>
29
+ <?php if ($gallery->counter > 0) : ?>
30
  <p><strong><?php echo $gallery->counter ?></strong> <?php _e('Photos', 'nggallery') ?></p>
31
+ <?php endif; ?>
32
  </div>
33
  </div>
34
  </div>
view/gallery-caption.php CHANGED
@@ -14,7 +14,7 @@ Follow variables are useable :
14
  ?>
15
  <?php if (!defined ('ABSPATH')) die ('No direct access allowed'); ?><?php if (!empty ($gallery)) : ?>
16
 
17
- <div class="ngg-galleryoverview" id="ngg-gallery-<?php echo $gallery->ID ?>">
18
 
19
  <?php if ($gallery->show_slideshow) { ?>
20
  <!-- Slideshow link -->
14
  ?>
15
  <?php if (!defined ('ABSPATH')) die ('No direct access allowed'); ?><?php if (!empty ($gallery)) : ?>
16
 
17
+ <div class="ngg-galleryoverview" id="<?php echo $gallery->anchor ?>">
18
 
19
  <?php if ($gallery->show_slideshow) { ?>
20
  <!-- Slideshow link -->
view/gallery.php CHANGED
@@ -14,7 +14,7 @@ Follow variables are useable :
14
  ?>
15
  <?php if (!defined ('ABSPATH')) die ('No direct access allowed'); ?><?php if (!empty ($gallery)) : ?>
16
 
17
- <div class="ngg-galleryoverview" id="ngg-gallery-<?php echo $gallery->ID ?>">
18
 
19
  <?php if ($gallery->show_slideshow) { ?>
20
  <!-- Slideshow link -->
14
  ?>
15
  <?php if (!defined ('ABSPATH')) die ('No direct access allowed'); ?><?php if (!empty ($gallery)) : ?>
16
 
17
+ <div class="ngg-galleryoverview" id="<?php echo $gallery->anchor ?>">
18
 
19
  <?php if ($gallery->show_slideshow) { ?>
20
  <!-- Slideshow link -->
view/imagebrowser-exif.php CHANGED
@@ -16,17 +16,17 @@ Follow variables are useable :
16
  ?>
17
  <?php if (!defined ('ABSPATH')) die ('No direct access allowed'); ?><?php if (!empty ($image)) : ?>
18
 
19
- <div class="ngg-imagebrowser" >
20
 
21
  <h3><?php echo $image->alttext ?></h3>
22
 
23
  <div class="pic"><?php echo $image->href_link ?></div>
24
  <div class="ngg-imagebrowser-nav">
25
  <div class="back">
26
- <a href="<?php echo $image->previous_image_link ?>">&#9668; <?php _e('Back', 'nggallery') ?></a>
27
  </div>
28
  <div class="next">
29
- <a href="<?php echo $image->next_image_link ?>"><?php _e('Next', 'nggallery') ?> &#9658;</a>
30
  </div>
31
  <div class="counter"><?php _e('Picture', 'nggallery') ?> <?php echo $image->number ?> <?php _e('of', 'nggallery')?> <?php echo $image->total ?></div>
32
  <div class="ngg-imagebrowser-desc"><p><?php echo $image->description ?></p></div>
16
  ?>
17
  <?php if (!defined ('ABSPATH')) die ('No direct access allowed'); ?><?php if (!empty ($image)) : ?>
18
 
19
+ <div class="ngg-imagebrowser" id="<?php echo $image->anchor ?>">
20
 
21
  <h3><?php echo $image->alttext ?></h3>
22
 
23
  <div class="pic"><?php echo $image->href_link ?></div>
24
  <div class="ngg-imagebrowser-nav">
25
  <div class="back">
26
+ <a class="ngg-browser-prev" id="ngg-prev-<?php echo $image->previous_pid ?>" href="<?php echo $image->previous_image_link ?>">&#9668; <?php _e('Back', 'nggallery') ?></a>
27
  </div>
28
  <div class="next">
29
+ <a class="ngg-browser-next" id="ngg-next-<?php echo $image->next_pid ?>" href="<?php echo $image->next_image_link ?>"><?php _e('Next', 'nggallery') ?> &#9658;</a>
30
  </div>
31
  <div class="counter"><?php _e('Picture', 'nggallery') ?> <?php echo $image->number ?> <?php _e('of', 'nggallery')?> <?php echo $image->total ?></div>
32
  <div class="ngg-imagebrowser-desc"><p><?php echo $image->description ?></p></div>
view/imagebrowser.php CHANGED
@@ -16,17 +16,17 @@ Follow variables are useable :
16
  ?>
17
  <?php if (!defined ('ABSPATH')) die ('No direct access allowed'); ?><?php if (!empty ($image)) : ?>
18
 
19
- <div class="ngg-imagebrowser" >
20
 
21
  <h3><?php echo $image->alttext ?></h3>
22
 
23
  <div class="pic"><?php echo $image->href_link ?></div>
24
  <div class="ngg-imagebrowser-nav">
25
  <div class="back">
26
- <a href="<?php echo $image->previous_image_link ?>">&#9668; <?php _e('Back', 'nggallery') ?></a>
27
  </div>
28
  <div class="next">
29
- <a href="<?php echo $image->next_image_link ?>"><?php _e('Next', 'nggallery') ?> &#9658;</a>
30
  </div>
31
  <div class="counter"><?php _e('Picture', 'nggallery') ?> <?php echo $image->number ?> <?php _e('of', 'nggallery')?> <?php echo $image->total ?></div>
32
  <div class="ngg-imagebrowser-desc"><p><?php echo $image->description ?></p></div>
16
  ?>
17
  <?php if (!defined ('ABSPATH')) die ('No direct access allowed'); ?><?php if (!empty ($image)) : ?>
18
 
19
+ <div class="ngg-imagebrowser" id="<?php echo $image->anchor ?>">
20
 
21
  <h3><?php echo $image->alttext ?></h3>
22
 
23
  <div class="pic"><?php echo $image->href_link ?></div>
24
  <div class="ngg-imagebrowser-nav">
25
  <div class="back">
26
+ <a class="ngg-browser-prev" id="ngg-prev-<?php echo $image->previous_pid ?>" href="<?php echo $image->previous_image_link ?>">&#9668; <?php _e('Back', 'nggallery') ?></a>
27
  </div>
28
  <div class="next">
29
+ <a class="ngg-browser-next" id="ngg-next-<?php echo $image->next_pid ?>" href="<?php echo $image->next_image_link ?>"><?php _e('Next', 'nggallery') ?> &#9658;</a>
30
  </div>
31
  <div class="counter"><?php _e('Picture', 'nggallery') ?> <?php echo $image->number ?> <?php _e('of', 'nggallery')?> <?php echo $image->total ?></div>
32
  <div class="ngg-imagebrowser-desc"><p><?php echo $image->description ?></p></div>
widgets/widgets.php CHANGED
@@ -392,6 +392,7 @@ function ngg_widget_control($widget_args = 1) {
392
  //TODO: If you change the title, it will not show up in widget admin panel
393
  $before_title = "\n" . '<div class="hslice" id="ngg-webslice" >' . "\n";
394
  $before_title .= '<h2 class="widgettitle entry-title">';
 
395
  $after_widget = '</div>'."\n" . $after_widget;
396
  }
397
 
392
  //TODO: If you change the title, it will not show up in widget admin panel
393
  $before_title = "\n" . '<div class="hslice" id="ngg-webslice" >' . "\n";
394
  $before_title .= '<h2 class="widgettitle entry-title">';
395
+ $after_title = '</h2>';
396
  $after_widget = '</div>'."\n" . $after_widget;
397
  }
398