NextGEN Gallery – WordPress Gallery Plugin - Version 1.4.0

Version Description

Download this release

Release Info

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

Code changes from version 1.3.6 to 1.4.0

Files changed (90) hide show
  1. admin/about.php +14 -12
  2. admin/addgallery.php +3 -2
  3. admin/admin.php +69 -26
  4. admin/ajax.php +148 -82
  5. admin/album.php +76 -31
  6. admin/css/nggColorPicker.css +14 -0
  7. admin/css/nggadmin.css +41 -14
  8. admin/{manage_thumbnail.php → edit-thumbnail.php} +173 -183
  9. admin/functions.php +273 -97
  10. admin/images/select.png +0 -0
  11. admin/install.php +3 -1
  12. admin/js/colorpicker/css/colorpicker.css +161 -0
  13. admin/js/colorpicker/images/blank.gif +0 -0
  14. admin/js/colorpicker/images/colorpicker_background.png +0 -0
  15. admin/js/colorpicker/images/colorpicker_hex.png +0 -0
  16. admin/js/colorpicker/images/colorpicker_hsb_b.png +0 -0
  17. admin/js/colorpicker/images/colorpicker_hsb_h.png +0 -0
  18. admin/js/colorpicker/images/colorpicker_hsb_s.png +0 -0
  19. admin/js/colorpicker/images/colorpicker_indic.gif +0 -0
  20. admin/js/colorpicker/images/colorpicker_overlay.png +0 -0
  21. admin/js/colorpicker/images/colorpicker_rgb_b.png +0 -0
  22. admin/js/colorpicker/images/colorpicker_rgb_g.png +0 -0
  23. admin/js/colorpicker/images/colorpicker_rgb_r.png +0 -0
  24. admin/js/colorpicker/images/colorpicker_select.gif +0 -0
  25. admin/js/colorpicker/images/colorpicker_submit.png +0 -0
  26. admin/js/colorpicker/images/custom_background.png +0 -0
  27. admin/js/colorpicker/images/custom_hex.png +0 -0
  28. admin/js/colorpicker/images/custom_hsb_b.png +0 -0
  29. admin/js/colorpicker/images/custom_hsb_h.png +0 -0
  30. admin/js/colorpicker/images/custom_hsb_s.png +0 -0
  31. admin/js/colorpicker/images/custom_indic.gif +0 -0
  32. admin/js/colorpicker/images/custom_rgb_b.png +0 -0
  33. admin/js/colorpicker/images/custom_rgb_g.png +0 -0
  34. admin/js/colorpicker/images/custom_rgb_r.png +0 -0
  35. admin/js/colorpicker/images/custom_submit.png +0 -0
  36. admin/js/colorpicker/images/select.png +0 -0
  37. admin/js/colorpicker/images/select2.png +0 -0
  38. admin/js/colorpicker/images/slider.png +0 -0
  39. admin/js/colorpicker/js/colorpicker.js +484 -0
  40. admin/js/ngg.ajax.js +55 -11
  41. admin/js/ngg.progressbar.js +3 -1
  42. admin/js/swfobject.js +3 -4
  43. admin/js/swfupload.js +9 -3
  44. admin/manage-galleries.php +170 -22
  45. admin/manage-images.php +129 -46
  46. admin/manage-sort.php +11 -9
  47. admin/manage.php +139 -44
  48. admin/media-upload.php +29 -29
  49. admin/overview.php +114 -40
  50. admin/roles.php +32 -12
  51. admin/rotate.php +95 -0
  52. admin/settings.php +73 -44
  53. admin/showmeta.php +33 -27
  54. admin/style.php +25 -3
  55. admin/tags.php +6 -6
  56. admin/tinymce/window.php +3 -3
  57. admin/upgrade.php +23 -2
  58. admin/upload.php +9 -4
  59. admin/wpmu.php +5 -7
  60. changelog.txt +30 -4
  61. css/Black_Minimalism.css +53 -1
  62. css/hovereffect.css +53 -1
  63. css/ngg_k2.css +1 -0
  64. css/ngg_shadow.css +53 -1
  65. css/ngg_shadow2.css +53 -1
  66. css/nggallery.css +53 -0
  67. lang/nggallery-de_DE.mo +0 -0
  68. lang/nggallery-de_DE.po +934 -736
  69. lang/nggallery.pot +909 -710
  70. lib/core.php +41 -65
  71. lib/gd.thumbnail.inc.php +82 -76
  72. lib/image.php +9 -7
  73. lib/imagemagick.inc.php +19 -8
  74. lib/meta.php +106 -18
  75. lib/navigation.php +117 -0
  76. lib/ngg-db.php +744 -591
  77. lib/rewrite.php +11 -8
  78. lib/shortcodes.php +328 -307
  79. lib/xmlrpc.php +335 -0
  80. nggallery.php +86 -29
  81. nggfunctions.php +1046 -954
  82. nggshow.php +1 -1
  83. readme.txt +39 -15
  84. view/gallery-caption.php +5 -2
  85. view/gallery-carousel.php +56 -0
  86. view/gallery.php +8 -3
  87. view/imagebrowser-exif.php +7 -3
  88. view/singlepic.php +6 -3
  89. widgets/media-rss-widget.php +31 -31
  90. widgets/widgets.php +62 -75
admin/about.php CHANGED
@@ -9,14 +9,14 @@ if(preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die('You
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>
@@ -24,7 +24,6 @@ if(preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die('You
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>
@@ -35,7 +34,7 @@ if(preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die('You
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">
@@ -43,12 +42,14 @@ if(preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die('You
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;"/>
@@ -59,9 +60,9 @@ if(preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die('You
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>
@@ -76,6 +77,7 @@ function ngg_list_contributors() {
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/',
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.de" 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>
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.lesterchan.net/" target="_blank">GaMerZ</a> <?php _e('for a lot of very useful plugins and ideas', 'nggallery') ;?></li>
28
  <li><a href="http://www.laptoptips.ca/" target="_blank">Andrew Ozz</a> <?php _e('for Shutter Reloaded, a real lightweight image effect', 'nggallery') ;?></li>
29
  <li><a href="http://www.jeroenwijering.com/" target="_blank">Jeroen Wijering</a> <?php _e('for the best Media Flash Scripts on earth', 'nggallery') ;?></li>
34
  </div>
35
  </div>
36
  <div class="postbox">
37
+ <h3 class="hndle"><span><?php _e('How to support ?', 'nggallery'); ?></span></h3>
38
  <div class="inside">
39
  <p><?php _e('There exist several ways to contribute, help or support us in this work. Non of them are mandatory.', 'nggallery') ;?></p>
40
  <ul class="ngg-list">
42
  <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>
43
  <li><strong><?php _e('Donate the work via paypal', 'nggallery') ;?></strong><br />
44
  <form action="https://www.paypal.com/cgi-bin/webscr" method="post" >
45
+ <input type="hidden" name="cmd" value="_xclick"/>
46
+ <input type="hidden" name="business" value="alter.ego@boelinger.com"/>
47
+ <input type="hidden" name="item_name" value="NextGEN Gallery plugin"/>
48
+ <input type="hidden" name="no_shipping" value="1"/>
49
+ <input type="hidden" name="return" value="http://alexrabe.de/" />
50
+ <input type="hidden" name="cancel_return" value="http://alexrabe.de/"/>
51
  <input type="hidden" name="lc" value="US" />
52
+ <input type="hidden" name="currency_code" value="EUR"/>
53
  <input type="hidden" name="tax" value="0"/>
54
  <input type="hidden" name="bn" value="PP-DonationsBF"/>
55
  <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;"/>
60
  </div>
61
  </div>
62
  <div class="postbox" id="donators">
63
+ <h3 class="hndle"><span><?php _e('Thanks!', 'nggallery'); ?></span></h3>
64
  <div class="inside">
65
+ <p><?php _e('We would like to thank this people which support us in the work :', 'nggallery'); ?></p>
66
  <p><a href="http://www.boelinger.com/heike/" target="_blank">HEIKE</a>, <?php ngg_list_support(); ?></p>
67
  </div>
68
  </div>
77
 
78
  $contributors = array(
79
  'Anty (Code contributor)' => 'http://www.anty.at/',
80
+ 'Bjoern von Prollius (Code contributor)' => 'http://www.prollius.de/',
81
  'Simone Fumagalli (Code contributor)' => 'http://www.iliveinperego.com/',
82
  'Vincent Prat (Code contributor)' => 'http://www.vincentprat.info',
83
  'Frederic De Ranter (AJAX code contributor)' => 'http://li.deranter.com/',
admin/addgallery.php CHANGED
@@ -24,7 +24,7 @@ if(preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die('You
24
 
25
  if ($_POST['addgallery']){
26
  check_admin_referer('ngg_addgallery');
27
- $newgallery = attribute_escape( $_POST['galleryname']);
28
  if ( !empty($newgallery) )
29
  nggAdmin::create_gallery($newgallery, $defaultpath);
30
  }
@@ -100,7 +100,7 @@ if(preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die('You
100
 
101
  // File Upload Settings
102
  file_size_limit : "<?php echo wp_max_upload_size(); ?>b",
103
- file_types : "*.jpg;*.gif;*.png",
104
  file_types_description : "<?php _e('Image Files', 'nggallery') ;?>",
105
 
106
  // Queue handler
@@ -194,6 +194,7 @@ if(preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die('You
194
  <?php } ?>
195
  <i>( <?php _e('Allowed characters for file and folder names are', 'nggallery') ;?>: a-z, A-Z, 0-9, -, _ )</i></td>
196
  </tr>
 
197
  </table>
198
  <div class="submit"><input class="button-primary" type="submit" name= "addgallery" value="<?php _e('Add gallery', 'nggallery') ;?>"/></div>
199
  </form>
24
 
25
  if ($_POST['addgallery']){
26
  check_admin_referer('ngg_addgallery');
27
+ $newgallery = esc_attr( $_POST['galleryname']);
28
  if ( !empty($newgallery) )
29
  nggAdmin::create_gallery($newgallery, $defaultpath);
30
  }
100
 
101
  // File Upload Settings
102
  file_size_limit : "<?php echo wp_max_upload_size(); ?>b",
103
+ file_types : "*.jpg;*.jpeg;*.gif;*.png",
104
  file_types_description : "<?php _e('Image Files', 'nggallery') ;?>",
105
 
106
  // Queue handler
194
  <?php } ?>
195
  <i>( <?php _e('Allowed characters for file and folder names are', 'nggallery') ;?>: a-z, A-Z, 0-9, -, _ )</i></td>
196
  </tr>
197
+ <?php do_action('ngg_add_new_gallery_form'); ?>
198
  </table>
199
  <div class="submit"><input class="button-primary" type="submit" name= "addgallery" value="<?php _e('Add gallery', 'nggallery') ;?>"/></div>
200
  </form>
admin/admin.php CHANGED
@@ -19,6 +19,8 @@ class nggAdminPanel{
19
  add_action('admin_print_scripts', array(&$this, 'load_scripts') );
20
  add_action('admin_print_styles', array(&$this, 'load_styles') );
21
 
 
 
22
  add_filter('contextual_help', array(&$this, 'show_help'), 10, 2);
23
  add_filter('screen_meta_screen', array(&$this, 'edit_screen_meta'));
24
  }
@@ -71,14 +73,43 @@ class nggAdminPanel{
71
  echo '<div class="plugin-update">' . __('A new version of NextGEN Gallery is available !', 'nggallery') . ' <a href="http://wordpress.org/extend/plugins/nextgen-gallery/download/" target="_blank">' . __('Download here', 'nggallery') . '</a></div>' ."\n";
72
  }
73
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
74
  switch ($_GET['page']){
75
  case "nggallery-add-gallery" :
76
- include_once ( dirname (__FILE__) . '/functions.php' ); // admin functions
77
  include_once ( dirname (__FILE__) . '/addgallery.php' ); // nggallery_admin_add_gallery
78
  nggallery_admin_add_gallery();
79
  break;
80
  case "nggallery-manage-gallery" :
81
- include_once ( dirname (__FILE__) . '/functions.php' ); // admin functions
82
  include_once ( dirname (__FILE__) . '/manage.php' ); // nggallery_admin_manage_gallery
83
  // Initate the Manage Gallery page
84
  $ngg->manage_page = new nggManageGallery ();
@@ -87,7 +118,7 @@ class nggAdminPanel{
87
 
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;
@@ -99,15 +130,15 @@ class nggAdminPanel{
99
  include_once ( dirname (__FILE__) . '/tags.php' ); // nggallery_admin_tags
100
  break;
101
  case "nggallery-style" :
102
- include_once ( dirname (__FILE__) . '/style.php' ); // nggallery_admin_style
103
  nggallery_admin_style();
104
  break;
105
  case "nggallery-setup" :
106
- include_once ( dirname (__FILE__) . '/setup.php' ); // nggallery_admin_setup
107
  nggallery_admin_setup();
108
  break;
109
  case "nggallery-roles" :
110
- include_once ( dirname (__FILE__) . '/roles.php' ); // nggallery_admin_roles
111
  nggallery_admin_roles();
112
  break;
113
  case "nggallery-import" :
@@ -134,10 +165,10 @@ class nggAdminPanel{
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'),
143
  'action' => 'ngg_ajax_operation',
@@ -154,6 +185,8 @@ class nggAdminPanel{
154
  switch ($_GET['page']) {
155
  case NGGFOLDER :
156
  wp_enqueue_script( 'postbox' );
 
 
157
  case "nggallery-manage-gallery" :
158
  wp_enqueue_script( 'postbox' );
159
  wp_enqueue_script( 'ngg-ajax' );
@@ -169,6 +202,7 @@ class nggAdminPanel{
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' );
@@ -177,29 +211,36 @@ class nggAdminPanel{
177
  wp_enqueue_script( 'ngg-ajax' );
178
  wp_enqueue_script( 'ngg-progressbar' );
179
  break;
 
 
 
 
 
180
  }
181
  }
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;
195
  case "nggallery-add-gallery" :
196
  case "nggallery-options" :
197
  wp_enqueue_style( 'nggtabs', NGGALLERY_URLPATH .'admin/css/jquery.ui.tabs.css', false, '2.5.0', 'screen' );
 
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;
205
  case "nggallery-tags" :
@@ -207,6 +248,8 @@ class nggAdminPanel{
207
  break;
208
  case "nggallery-style" :
209
  wp_admin_css( 'css/theme-editor' );
 
 
210
  break;
211
  }
212
  }
@@ -215,7 +258,7 @@ class nggAdminPanel{
215
 
216
  $link = '';
217
  // menu title is localized...
218
- $i18n = strtolower ( __ngettext( 'Gallery', 'Galleries', 1, 'nggallery' ) );
219
 
220
  switch ($screen) {
221
  case 'toplevel_page_' . NGGFOLDER :
@@ -225,39 +268,39 @@ class nggAdminPanel{
225
  $link = __('<a href="http://dpotter.net/Technical/2008/03/nextgen-gallery-review-introduction/" target="_blank">Setup</a>', 'nggallery');
226
  break;
227
  case "{$i18n}_page_nggallery-about" :
228
- $link = __('<a href="http://alexrabe.boelinger.com/wordpress-plugins/nextgen-gallery/languages/" target="_blank">Translation by alex rabe</a>', 'nggallery');
229
  break;
230
  case "{$i18n}_page_nggallery-roles" :
231
  $link = __('<a href="http://dpotter.net/Technical/2008/03/nextgen-gallery-review-introduction/" target="_blank">Roles / Capabilities</a>', 'nggallery');
232
  break;
233
  case "{$i18n}_page_nggallery-style" :
234
  $link = __('<a href="http://dpotter.net/Technical/2008/03/nextgen-gallery-review-introduction/" target="_blank">Styles</a>', 'nggallery');
235
- $link .= ' | <a href="http://nextgen.boelinger.com/templates/" target="_blank">' . __('Templates', 'nggallery') . '</a>';
236
  break;
237
  case "{$i18n}_page_nggallery-gallery" :
238
  $link = __('<a href="http://dpotter.net/Technical/2008/03/nextgen-gallery-review-introduction/" target="_blank">Gallery management</a>', 'nggallery');
239
- $link .= ' | <a href="http://nextgen.boelinger.com/gallery-page/" target="_blank">' . __('Gallery example', 'nggallery') . '</a>';
240
  break;
241
  case "{$i18n}_page_nggallery-manage-gallery" :
242
  case "nggallery-manage-gallery":
243
  case "nggallery-manage-images":
244
  $link = __('<a href="http://dpotter.net/Technical/2008/03/nextgen-gallery-review-introduction/" target="_blank">Gallery management</a>', 'nggallery');
245
- $link .= ' | <a href="http://nextgen.boelinger.com/gallery-tags/" target="_blank">' . __('Gallery tags', 'nggallery') . '</a>';
246
  break;
247
  case "{$i18n}_page_nggallery-manage-album" :
248
  $link = __('<a href="http://dpotter.net/Technical/2008/03/nextgen-gallery-review-introduction/" target="_blank">Album management</a>', 'nggallery');
249
- $link .= ' | <a href="http://nextgen.boelinger.com/album/" target="_blank">' . __('Album example', 'nggallery') . '</a>';
250
- $link .= ' | <a href="http://nextgen.boelinger.com/albumtags/" target="_blank">' . __('Album tags', 'nggallery') . '</a>';
251
  break;
252
  case "{$i18n}_page_nggallery-tags" :
253
  $link = __('<a href="http://dpotter.net/Technical/2008/03/nextgen-gallery-review-introduction/" target="_blank">Gallery tags</a>', 'nggallery');
254
- $link .= ' | <a href="http://nextgen.boelinger.com/related-images/" target="_blank">' . __('Related images', 'nggallery') . '</a>';
255
- $link .= ' | <a href="http://nextgen.boelinger.com/gallery-tags/" target="_blank">' . __('Gallery tags', 'nggallery') . '</a>';
256
- $link .= ' | <a href="http://nextgen.boelinger.com/albumtags/" target="_blank">' . __('Album tags', 'nggallery') . '</a>';
257
  break;
258
  case "{$i18n}_page_nggallery-options" :
259
  $link = __('<a href="http://dpotter.net/Technical/2008/03/nextgen-gallery-review-image-management/" target="_blank">Image management</a>', 'nggallery');
260
- $link .= ' | <a href="http://nextgen.boelinger.com/custom-fields/" target="_blank">' . __('Custom fields', 'nggallery') . '</a>';
261
  break;
262
  }
263
 
@@ -268,10 +311,10 @@ class nggAdminPanel{
268
  $help .= "</div>\n";
269
  $help .= '<h5>' . __('More Help & Info', 'nggallery') . '</h5>';
270
  $help .= '<div class="metabox-prefs">';
271
- $help .= __('<a href="http://wordpress.org/tags/nextgen-gallery" target="_blank">Support Forums</a>', 'nggallery');
272
- $help .= ' | <a href="http://alexrabe.boelinger.com/wordpress-plugins/nextgen-gallery/faq/" target="_blank">' . __('FAQ', 'nggallery') . '</a>';
273
  $help .= ' | <a href="http://code.google.com/p/nextgen-gallery/issues/list" target="_blank">' . __('Feature request', 'nggallery') . '</a>';
274
- $help .= ' | <a href="http://alexrabe.boelinger.com/wordpress-plugins/nextgen-gallery/languages/" target="_blank">' . __('Get your language pack', 'nggallery') . '</a>';
275
  $help .= ' | <a href="http://code.google.com/p/nextgen-gallery/" target="_blank">' . __('Contribute development', 'nggallery') . '</a>';
276
  $help .= ' | <a href="http://wordpress.org/extend/plugins/nextgen-gallery" target="_blank">' . __('Download latest version', 'nggallery') . '</a>';
277
  $help .= "</div>\n";
@@ -283,7 +326,7 @@ class nggAdminPanel{
283
  function edit_screen_meta($screen) {
284
 
285
  // menu title is localized, so we need to change the toplevel name
286
- $i18n = strtolower ( __ngettext( 'Gallery', 'Galleries', 1, 'nggallery' ) );
287
 
288
  switch ($screen) {
289
  case "{$i18n}_page_nggallery-manage-gallery" :
19
  add_action('admin_print_scripts', array(&$this, 'load_scripts') );
20
  add_action('admin_print_styles', array(&$this, 'load_styles') );
21
 
22
+ add_action( 'admin_print_footer_scripts', 'codepress_footer_js' );
23
+
24
  add_filter('contextual_help', array(&$this, 'show_help'), 10, 2);
25
  add_filter('screen_meta_screen', array(&$this, 'edit_screen_meta'));
26
  }
73
  echo '<div class="plugin-update">' . __('A new version of NextGEN Gallery is available !', 'nggallery') . ' <a href="http://wordpress.org/extend/plugins/nextgen-gallery/download/" target="_blank">' . __('Download here', 'nggallery') . '</a></div>' ."\n";
74
  }
75
 
76
+ // Set installation date
77
+ if( empty($ngg->options['installDate']) ) {
78
+ $ngg->options['installDate'] = time();
79
+ update_option('ngg_options', $ngg->options);
80
+ }
81
+
82
+ // Show donation message only one time.
83
+ if (isset ( $_GET['hide_donation']) ) {
84
+ $ngg->options['hideDonation'] = true;
85
+ update_option('ngg_options', $ngg->options);
86
+ }
87
+
88
+ if( $ngg->options['hideDonation'] !== true ) {
89
+ if ( time() > ( $ngg->options['installDate'] + ( 60 * 60 * 24 * 30 ) ) ) {
90
+ ?>
91
+ <div id="donator_message">
92
+ <p><?php echo str_replace('%s', 'http://alexrabe.de/donation', __('Thanks for using this plugin, I hope you are satisfied ! If you would like to support the further development, please consider a <strong><a href="%s">donation</a></strong>! If you still need some help, please post your questions <a href="http://wordpress.org/tags/nextgen-gallery?forum_id=10">here</a> .', 'nggallery')); ?>
93
+ <span>
94
+ <a href="<?php echo add_query_arg( array( 'hide_donation' => 'true') ); ?>" >
95
+ <small><?php _e('OK, hide this message now !', 'nggallery'); ?></small>
96
+ </a>
97
+ <span>
98
+ </p>
99
+ <br />
100
+ </div>
101
+ <?php
102
+ }
103
+ }
104
+
105
  switch ($_GET['page']){
106
  case "nggallery-add-gallery" :
107
+ include_once ( dirname (__FILE__) . '/functions.php' ); // admin functions
108
  include_once ( dirname (__FILE__) . '/addgallery.php' ); // nggallery_admin_add_gallery
109
  nggallery_admin_add_gallery();
110
  break;
111
  case "nggallery-manage-gallery" :
112
+ include_once ( dirname (__FILE__) . '/functions.php' ); // admin functions
113
  include_once ( dirname (__FILE__) . '/manage.php' ); // nggallery_admin_manage_gallery
114
  // Initate the Manage Gallery page
115
  $ngg->manage_page = new nggManageGallery ();
118
 
119
  break;
120
  case "nggallery-manage-album" :
121
+ include_once ( dirname (__FILE__) . '/album.php' ); // nggallery_admin_manage_album
122
  $ngg->manage_album = new nggManageAlbum ();
123
  $ngg->manage_album->controller();
124
  break;
130
  include_once ( dirname (__FILE__) . '/tags.php' ); // nggallery_admin_tags
131
  break;
132
  case "nggallery-style" :
133
+ include_once ( dirname (__FILE__) . '/style.php' ); // nggallery_admin_style
134
  nggallery_admin_style();
135
  break;
136
  case "nggallery-setup" :
137
+ include_once ( dirname (__FILE__) . '/setup.php' ); // nggallery_admin_setup
138
  nggallery_admin_setup();
139
  break;
140
  case "nggallery-roles" :
141
+ include_once ( dirname (__FILE__) . '/roles.php' ); // nggallery_admin_roles
142
  nggallery_admin_roles();
143
  break;
144
  case "nggallery-import" :
165
  function load_scripts() {
166
 
167
  // no need to go on if it's not a plugin page
168
+ if( !isset($_GET['page']) )
169
  return;
170
 
171
+ wp_register_script('ngg-ajax', NGGALLERY_URLPATH .'admin/js/ngg.ajax.js', array('jquery'), '1.4.0');
172
  wp_localize_script('ngg-ajax', 'nggAjaxSetup', array(
173
  'url' => admin_url('admin-ajax.php'),
174
  'action' => 'ngg_ajax_operation',
185
  switch ($_GET['page']) {
186
  case NGGFOLDER :
187
  wp_enqueue_script( 'postbox' );
188
+ add_thickbox();
189
+ break;
190
  case "nggallery-manage-gallery" :
191
  wp_enqueue_script( 'postbox' );
192
  wp_enqueue_script( 'ngg-ajax' );
202
  break;
203
  case "nggallery-options" :
204
  wp_enqueue_script( 'jquery-ui-tabs' );
205
+ wp_enqueue_script( 'ngg-colorpicker', NGGALLERY_URLPATH .'admin/js/colorpicker/js/colorpicker.js', array('jquery'), '1.0');
206
  break;
207
  case "nggallery-add-gallery" :
208
  wp_enqueue_script( 'jquery-ui-tabs' );
211
  wp_enqueue_script( 'ngg-ajax' );
212
  wp_enqueue_script( 'ngg-progressbar' );
213
  break;
214
+ case "nggallery-style" :
215
+ wp_enqueue_script( 'codepress' );
216
+ wp_enqueue_script( 'ngg-colorpicker', NGGALLERY_URLPATH .'admin/js/colorpicker/js/colorpicker.js', array('jquery'), '1.0');
217
+ break;
218
+
219
  }
220
  }
221
 
222
  function load_styles() {
223
 
224
  // no need to go on if it's not a plugin page
225
+ if( !isset($_GET['page']) )
226
  return;
227
 
228
  switch ($_GET['page']) {
229
  case NGGFOLDER :
230
+ wp_enqueue_style( 'thickbox');
231
  case "nggallery-about" :
232
+ wp_enqueue_style( 'nggadmin', NGGALLERY_URLPATH .'admin/css/nggadmin.css', false, '2.8.0', 'screen' );
233
  wp_admin_css( 'css/dashboard' );
234
  break;
235
  case "nggallery-add-gallery" :
236
  case "nggallery-options" :
237
  wp_enqueue_style( 'nggtabs', NGGALLERY_URLPATH .'admin/css/jquery.ui.tabs.css', false, '2.5.0', 'screen' );
238
+ wp_enqueue_style( 'nggcolorpicker', NGGALLERY_URLPATH .'admin/js/colorpicker/css/colorpicker.css', false, '1.0', 'screen');
239
  case "nggallery-manage-gallery" :
240
  case "nggallery-roles" :
241
  case "nggallery-manage-album" :
242
  //wp_enqueue_style( 'jqueryui', NGGALLERY_URLPATH .'admin/css/jquery-ui.css', false, '1.7.1', 'screen' );
243
+ wp_enqueue_style( 'nggadmin', NGGALLERY_URLPATH .'admin/css/nggadmin.css', false, '2.8.0', 'screen' );
244
  wp_enqueue_style( 'thickbox');
245
  break;
246
  case "nggallery-tags" :
248
  break;
249
  case "nggallery-style" :
250
  wp_admin_css( 'css/theme-editor' );
251
+ wp_enqueue_style('nggcolorpicker', NGGALLERY_URLPATH.'admin/js/colorpicker/css/colorpicker.css', false, '1.0', 'screen');
252
+ wp_enqueue_style('nggadmincp', NGGALLERY_URLPATH.'admin/css/nggColorPicker.css', false, '1.0', 'screen');
253
  break;
254
  }
255
  }
258
 
259
  $link = '';
260
  // menu title is localized...
261
+ $i18n = strtolower ( _n( 'Gallery', 'Galleries', 1, 'nggallery' ) );
262
 
263
  switch ($screen) {
264
  case 'toplevel_page_' . NGGFOLDER :
268
  $link = __('<a href="http://dpotter.net/Technical/2008/03/nextgen-gallery-review-introduction/" target="_blank">Setup</a>', 'nggallery');
269
  break;
270
  case "{$i18n}_page_nggallery-about" :
271
+ $link = __('<a href="http://alexrabe.de/wordpress-plugins/nextgen-gallery/languages/" target="_blank">Translation by alex rabe</a>', 'nggallery');
272
  break;
273
  case "{$i18n}_page_nggallery-roles" :
274
  $link = __('<a href="http://dpotter.net/Technical/2008/03/nextgen-gallery-review-introduction/" target="_blank">Roles / Capabilities</a>', 'nggallery');
275
  break;
276
  case "{$i18n}_page_nggallery-style" :
277
  $link = __('<a href="http://dpotter.net/Technical/2008/03/nextgen-gallery-review-introduction/" target="_blank">Styles</a>', 'nggallery');
278
+ $link .= ' | <a href="http://nextgen-gallery.com/templates/" target="_blank">' . __('Templates', 'nggallery') . '</a>';
279
  break;
280
  case "{$i18n}_page_nggallery-gallery" :
281
  $link = __('<a href="http://dpotter.net/Technical/2008/03/nextgen-gallery-review-introduction/" target="_blank">Gallery management</a>', 'nggallery');
282
+ $link .= ' | <a href="http://nextgen-gallery.com/gallery-page/" target="_blank">' . __('Gallery example', 'nggallery') . '</a>';
283
  break;
284
  case "{$i18n}_page_nggallery-manage-gallery" :
285
  case "nggallery-manage-gallery":
286
  case "nggallery-manage-images":
287
  $link = __('<a href="http://dpotter.net/Technical/2008/03/nextgen-gallery-review-introduction/" target="_blank">Gallery management</a>', 'nggallery');
288
+ $link .= ' | <a href="http://nextgen-gallery.com/gallery-tags/" target="_blank">' . __('Gallery tags', 'nggallery') . '</a>';
289
  break;
290
  case "{$i18n}_page_nggallery-manage-album" :
291
  $link = __('<a href="http://dpotter.net/Technical/2008/03/nextgen-gallery-review-introduction/" target="_blank">Album management</a>', 'nggallery');
292
+ $link .= ' | <a href="http://nextgen-gallery.com/album/" target="_blank">' . __('Album example', 'nggallery') . '</a>';
293
+ $link .= ' | <a href="http://nextgen-gallery.com/albumtags/" target="_blank">' . __('Album tags', 'nggallery') . '</a>';
294
  break;
295
  case "{$i18n}_page_nggallery-tags" :
296
  $link = __('<a href="http://dpotter.net/Technical/2008/03/nextgen-gallery-review-introduction/" target="_blank">Gallery tags</a>', 'nggallery');
297
+ $link .= ' | <a href="http://nextgen-gallery.com/related-images/" target="_blank">' . __('Related images', 'nggallery') . '</a>';
298
+ $link .= ' | <a href="http://nextgen-gallery.com/gallery-tags/" target="_blank">' . __('Gallery tags', 'nggallery') . '</a>';
299
+ $link .= ' | <a href="http://nextgen-gallery.com/albumtags/" target="_blank">' . __('Album tags', 'nggallery') . '</a>';
300
  break;
301
  case "{$i18n}_page_nggallery-options" :
302
  $link = __('<a href="http://dpotter.net/Technical/2008/03/nextgen-gallery-review-image-management/" target="_blank">Image management</a>', 'nggallery');
303
+ $link .= ' | <a href="http://nextgen-gallery.com/custom-fields/" target="_blank">' . __('Custom fields', 'nggallery') . '</a>';
304
  break;
305
  }
306
 
311
  $help .= "</div>\n";
312
  $help .= '<h5>' . __('More Help & Info', 'nggallery') . '</h5>';
313
  $help .= '<div class="metabox-prefs">';
314
+ $help .= __('<a href="http://wordpress.org/tags/nextgen-gallery?forum_id=10" target="_blank">Support Forums</a>', 'nggallery');
315
+ $help .= ' | <a href="http://alexrabe.de/wordpress-plugins/nextgen-gallery/faq/" target="_blank">' . __('FAQ', 'nggallery') . '</a>';
316
  $help .= ' | <a href="http://code.google.com/p/nextgen-gallery/issues/list" target="_blank">' . __('Feature request', 'nggallery') . '</a>';
317
+ $help .= ' | <a href="http://alexrabe.de/wordpress-plugins/nextgen-gallery/languages/" target="_blank">' . __('Get your language pack', 'nggallery') . '</a>';
318
  $help .= ' | <a href="http://code.google.com/p/nextgen-gallery/" target="_blank">' . __('Contribute development', 'nggallery') . '</a>';
319
  $help .= ' | <a href="http://wordpress.org/extend/plugins/nextgen-gallery" target="_blank">' . __('Download latest version', 'nggallery') . '</a>';
320
  $help .= "</div>\n";
326
  function edit_screen_meta($screen) {
327
 
328
  // menu title is localized, so we need to change the toplevel name
329
+ $i18n = strtolower ( _n( 'Gallery', 'Galleries', 1, 'nggallery' ) );
330
 
331
  switch ($screen) {
332
  case "{$i18n}_page_nggallery-manage-gallery" :
admin/ajax.php CHANGED
@@ -2,109 +2,175 @@
2
 
3
  /**
4
  * @author Alex Rabe
5
- * @copyright 2008
6
  */
7
 
8
  add_action('wp_ajax_ngg_ajax_operation', 'ngg_ajax_operation' );
9
 
10
  function ngg_ajax_operation() {
11
 
12
- global $wpdb;
13
 
14
- // if nonce is not correct it returns -1
15
- check_ajax_referer( "ngg-ajax" );
16
-
17
- // check for correct capability
18
- if ( !is_user_logged_in() )
19
- die('-1');
20
-
21
- // check for correct NextGEN capability. TODO : Can we check here already for "can_manage_this_gallery($gallery->author)" ?
22
- if ( !current_user_can('NextGEN Upload images') && !current_user_can('NextGEN Manage gallery') )
23
- die('-1');
24
-
25
- // include the ngg function
26
- include_once (dirname (__FILE__). '/functions.php');
27
 
28
- // Get the image id
29
- if ( isset($_POST['image'])) {
30
- $id = (int) $_POST['image'];
31
- // let's get the image data
32
- $picture = nggdb::find_image($id);
33
- // what do you want to do ?
34
- switch ( $_POST['operation'] ) {
35
- case 'create_thumbnail' :
36
- $result = nggAdmin::create_thumbnail($picture);
37
- break;
38
- case 'resize_image' :
39
- $result = nggAdmin::resize_image($picture);
40
- break;
41
- case 'set_watermark' :
42
- $result = nggAdmin::set_watermark($picture);
43
- break;
44
- default :
45
- die('-1');
46
- break;
47
- }
48
- // A success should return a '1'
49
- die ($result);
 
 
 
 
 
 
 
 
 
 
 
 
50
  }
51
-
52
- // The script should never stop here
53
- die('0');
 
 
 
54
  }
55
 
56
  add_action('wp_ajax_createNewThumb', 'createNewThumb');
57
 
58
- function createNewThumb() {
59
-
60
- global $wpdb;
 
 
61
 
62
- // check for correct capability
63
- if ( !is_user_logged_in() )
64
- die('-1');
65
-
66
- // check for correct NextGEN capability
67
- if ( !current_user_can('NextGEN Manage gallery') )
68
- die('-1');
69
 
70
- require_once( dirname( dirname(__FILE__) ) . '/ngg-config.php');
71
- include_once( nggGallery::graphic_library() );
72
-
73
- $ngg_options=get_option('ngg_options');
74
-
75
- $id = (int) $_POST['id'];
76
- $picture = nggdb::find_image($id);
77
 
78
- $x = round( $_POST['x'] * $_POST['rr'], 0);
79
- $y = round( $_POST['y'] * $_POST['rr'], 0);
80
- $w = round( $_POST['w'] * $_POST['rr'], 0);
81
- $h = round( $_POST['h'] * $_POST['rr'], 0);
82
-
83
- $thumb = new ngg_Thumbnail($picture->imagePath, TRUE);
84
-
85
- $thumb->crop($x, $y, $w, $h);
86
-
87
- $thumb_filename = $picture->thumbPath;
88
 
89
- if ($ngg_options['thumbfix']) {
90
- if ($thumb->currentDimensions['height'] > $thumb->currentDimensions['width']) {
91
- $thumb->resize($ngg_options['thumbwidth'], 0);
92
- } else {
93
- $thumb->resize(0,$ngg_options['thumbheight']);
94
- }
95
  } else {
96
- $thumb->resize($ngg_options['thumbwidth'],$ngg_options['thumbheight'],$ngg_options['thumbResampleMode']);
97
  }
 
 
 
 
 
98
 
99
- if ( $thumb->save($thumb_filename,100)) {
100
- echo "OK";
101
- } else {
102
- header('HTTP/1.1 500 Internal Server Error');
103
- echo "KO";
104
- }
105
 
106
- exit();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
107
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
108
  }
 
 
 
 
 
 
 
 
 
109
 
110
- ?>
2
 
3
  /**
4
  * @author Alex Rabe
5
+ * @copyright 2008 - 2009
6
  */
7
 
8
  add_action('wp_ajax_ngg_ajax_operation', 'ngg_ajax_operation' );
9
 
10
  function ngg_ajax_operation() {
11
 
12
+ global $wpdb;
13
 
14
+ // if nonce is not correct it returns -1
15
+ check_ajax_referer( "ngg-ajax" );
16
+
17
+ // check for correct capability
18
+ if ( !is_user_logged_in() )
19
+ die('-1');
20
+
21
+ // check for correct NextGEN capability
22
+ if ( !current_user_can('NextGEN Upload images') && !current_user_can('NextGEN Manage gallery') )
23
+ die('-1');
24
+
25
+ // include the ngg function
26
+ include_once (dirname (__FILE__). '/functions.php');
27
 
28
+ // Get the image id
29
+ if ( isset($_POST['image'])) {
30
+ $id = (int) $_POST['image'];
31
+ // let's get the image data
32
+ $picture = nggdb::find_image( $id );
33
+ // what do you want to do ?
34
+ switch ( $_POST['operation'] ) {
35
+ case 'create_thumbnail' :
36
+ $result = nggAdmin::create_thumbnail($picture);
37
+ break;
38
+ case 'resize_image' :
39
+ $result = nggAdmin::resize_image($picture);
40
+ break;
41
+ case 'rotate_cw' :
42
+ $result = nggAdmin::rotate_image($picture, 'CW');
43
+ nggAdmin::create_thumbnail($picture);
44
+ break;
45
+ case 'rotate_ccw' :
46
+ $result = nggAdmin::rotate_image($picture, 'CCW');
47
+ nggAdmin::create_thumbnail($picture);
48
+ break;
49
+ case 'set_watermark' :
50
+ $result = nggAdmin::set_watermark($picture);
51
+ break;
52
+ case 'import_metadata' :
53
+ $result = nggAdmin::import_MetaData( $id );
54
+ break;
55
+ case 'get_image_ids' :
56
+ $result = nggAdmin::get_image_ids( $id );
57
+ break;
58
+ default :
59
+ do_action( 'ngg_ajax_' . $_POST['operation'] );
60
+ die('-1');
61
+ break;
62
  }
63
+ // A success should return a '1'
64
+ die ($result);
65
+ }
66
+
67
+ // The script should never stop here
68
+ die('0');
69
  }
70
 
71
  add_action('wp_ajax_createNewThumb', 'createNewThumb');
72
 
73
+ function createNewThumb() {
74
+
75
+ // check for correct capability
76
+ if ( !is_user_logged_in() )
77
+ die('-1');
78
 
79
+ // check for correct NextGEN capability
80
+ if ( !current_user_can('NextGEN Manage gallery') )
81
+ die('-1');
 
 
 
 
82
 
83
+ require_once( dirname( dirname(__FILE__) ) . '/ngg-config.php');
84
+ include_once( nggGallery::graphic_library() );
85
+
86
+ $ngg_options=get_option('ngg_options');
87
+
88
+ $id = (int) $_POST['id'];
89
+ $picture = nggdb::find_image( $id );
90
 
91
+ $x = round( $_POST['x'] * $_POST['rr'], 0);
92
+ $y = round( $_POST['y'] * $_POST['rr'], 0);
93
+ $w = round( $_POST['w'] * $_POST['rr'], 0);
94
+ $h = round( $_POST['h'] * $_POST['rr'], 0);
95
+
96
+ $thumb = new ngg_Thumbnail($picture->imagePath, TRUE);
97
+
98
+ $thumb->crop($x, $y, $w, $h);
 
 
99
 
100
+ if ($ngg_options['thumbfix']) {
101
+ if ($thumb->currentDimensions['height'] > $thumb->currentDimensions['width']) {
102
+ $thumb->resize($ngg_options['thumbwidth'], 0);
 
 
 
103
  } else {
104
+ $thumb->resize(0, $ngg_options['thumbheight']);
105
  }
106
+ } else {
107
+ $thumb->resize($ngg_options['thumbwidth'], $ngg_options['thumbheight'], $ngg_options['thumbResampleMode']);
108
+ }
109
+
110
+ if ( $thumb->save($picture->thumbPath, 100)) {
111
 
112
+ //read the new sizes
113
+ $new_size = @getimagesize ( $picture->thumbPath );
114
+ $size['width'] = $new_size[0];
115
+ $size['height'] = $new_size[1];
 
 
116
 
117
+ // add them to the database
118
+ nggdb::update_image_meta($picture->pid, array( 'thumbnail' => $size) );
119
+
120
+ echo "OK";
121
+ } else {
122
+ header('HTTP/1.1 500 Internal Server Error');
123
+ echo "KO";
124
+ }
125
+
126
+ exit();
127
+
128
+ }
129
+
130
+ add_action('wp_ajax_rotateImage', 'ngg_rotateImage');
131
+
132
+ function ngg_rotateImage() {
133
+
134
+ // check for correct capability
135
+ if ( !is_user_logged_in() )
136
+ die('-1');
137
 
138
+ // check for correct NextGEN capability
139
+ if ( !current_user_can('NextGEN Manage gallery') )
140
+ die('-1');
141
+
142
+ require_once( dirname( dirname(__FILE__) ) . '/ngg-config.php');
143
+
144
+ // include the ngg function
145
+ include_once (dirname (__FILE__). '/functions.php');
146
+
147
+ $ngg_options = get_option('ngg_options');
148
+
149
+ $id = (int) $_POST['id'];
150
+ $result = '-1';
151
+
152
+ switch ( $_POST['ra'] ) {
153
+ case 'cw' :
154
+ $result = nggAdmin::rotate_image($id, 'CW');
155
+ break;
156
+ case 'ccw' :
157
+ $result = nggAdmin::rotate_image($id, 'CCW');
158
+ break;
159
+ case 'fv' :
160
+ $result = nggAdmin::rotate_image($id, 0, 'V');
161
+ break;
162
+ case 'fh' :
163
+ $result = nggAdmin::rotate_image($id, 0, 'H');
164
+ break;
165
  }
166
+
167
+ // recreate the thumbnail
168
+ nggAdmin::create_thumbnail($id);
169
+
170
+ if ( $result == 1 )
171
+ die('1');
172
+
173
+ header('HTTP/1.1 500 Internal Server Error');
174
+ die( $result );
175
 
176
+ }
admin/album.php CHANGED
@@ -31,6 +31,24 @@ class nggManageAlbum {
31
  */
32
  var $albums = false;
33
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
34
  /**
35
  * PHP4 compatibility layer for calling the PHP5 constructor.
36
  *
@@ -49,7 +67,7 @@ class nggManageAlbum {
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'] ) )
@@ -61,7 +79,8 @@ class nggManageAlbum {
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
  }
@@ -72,8 +91,10 @@ class nggManageAlbum {
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
  }
@@ -106,11 +127,12 @@ class nggManageAlbum {
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'));
@@ -217,7 +239,7 @@ function ngg_serialize(s)
217
  }
218
 
219
  function showDialog() {
220
- tb_show("", "#TB_inline?width=640&height=240&inlineId=editalbum&modal=true", false);
221
  }
222
 
223
  </script>
@@ -227,7 +249,7 @@ function showDialog() {
227
  <form id="selectalbum" method="POST" onsubmit="ngg_serialize()" accept-charset="utf-8">
228
  <?php wp_nonce_field('ngg_album') ?>
229
  <input name="sortorder" type="hidden" />
230
- <div class="tablenav">
231
  <div class="alignleft actions">
232
  <?php _e('Select album', 'nggallery') ?>
233
  <select id="act_album" name="act_album" onchange="this.form.submit();">
@@ -236,7 +258,7 @@ function showDialog() {
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
  ?>
@@ -246,9 +268,9 @@ function showDialog() {
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>
@@ -258,9 +280,9 @@ function showDialog() {
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>
@@ -351,13 +373,13 @@ function showDialog() {
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>
@@ -366,16 +388,28 @@ function showDialog() {
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')?>" />
@@ -403,22 +437,30 @@ function showDialog() {
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
 
@@ -431,13 +473,16 @@ function showDialog() {
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
 
31
  */
32
  var $albums = false;
33
 
34
+ /**
35
+ * The amount of all galleries
36
+ *
37
+ * @since 1.4.0
38
+ * @access privat
39
+ * @var int
40
+ */
41
+ var $num_galleries = false;
42
+
43
+ /**
44
+ * The amount of all albums
45
+ *
46
+ * @since 1.4.0
47
+ * @access privat
48
+ * @var int
49
+ */
50
+ var $num_albums = false;
51
+
52
  /**
53
  * PHP4 compatibility layer for calling the PHP5 constructor.
54
  *
67
 
68
  function controller() {
69
  global $nggdb;
70
+
71
  $this->currentID = isset($_POST['act_album']) ? (int) $_POST['act_album'] : 0 ;
72
 
73
  if (isset ($_POST['update']) || isset( $_POST['delete'] ) || isset( $_POST['add'] ) )
79
  // get first all galleries & albums
80
  $this->albums = $nggdb->find_all_album();
81
  $this->galleries = $nggdb->find_all_galleries();
82
+ $this->num_albums = count( $this->albums );
83
+ $this->num_galleries = count( $this->galleries );
84
  $this->output();
85
 
86
  }
91
  check_admin_referer('ngg_album');
92
 
93
  if ( isset($_POST['add']) && isset ($_POST['newalbum']) ) {
94
+ $newalbum = esc_attr($_POST['newalbum']);
95
  $result = $wpdb->query("INSERT INTO $wpdb->nggalbum (name, sortorder) VALUES ('$newalbum','0')");
96
+ $this->currentID = (int) $wpdb->insert_id;
97
+
98
  if ($result)
99
  nggGallery::show_message(__('Update Successfully','nggallery'));
100
  }
127
 
128
  check_admin_referer('ngg_thickbox_form');
129
 
130
+ $name = esc_attr( $_POST['album_name'] );
131
+ $desc = esc_attr( $_POST['album_desc'] );
132
  $prev = (int) $_POST['previewpic'];
133
+ $link = (int) $_POST['pageid'];
134
 
135
+ $result = $wpdb->query( $wpdb->prepare( "UPDATE $wpdb->nggalbum SET name= '%s', albumdesc= '%s', previewpic= %d, pageid= %d WHERE id = '$this->currentID'" , $name, $desc, $prev, $link ) );
136
 
137
  if ($result)
138
  nggGallery::show_message(__('Update Successfully','nggallery'));
239
  }
240
 
241
  function showDialog() {
242
+ tb_show("", "#TB_inline?width=640&height=305&inlineId=editalbum&modal=true", false);
243
  }
244
 
245
  </script>
249
  <form id="selectalbum" method="POST" onsubmit="ngg_serialize()" accept-charset="utf-8">
250
  <?php wp_nonce_field('ngg_album') ?>
251
  <input name="sortorder" type="hidden" />
252
+ <div class="albumnav tablenav">
253
  <div class="alignleft actions">
254
  <?php _e('Select album', 'nggallery') ?>
255
  <select id="act_album" name="act_album" onchange="this.form.submit();">
258
  if( is_array($this->albums) ) {
259
  foreach($this->albums as $album) {
260
  $selected = ($this->currentID == $album->id) ? 'selected="selected" ' : '';
261
+ echo '<option value="' . $album->id . '" ' . $selected . '>' . $album->name . '</option>'."\n";
262
  }
263
  }
264
  ?>
268
  <input class="button-secondary" type="submit" name="showThickbox" value="<?php _e( 'Edit album', 'nggallery'); ?>" onclick="showDialog(); return false;" />
269
  <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;"/>
270
  <?php } else { ?>
271
+ <span><?php _e('Add new album', 'nggallery'); ?>&nbsp;</span>
272
  <input class="search-input" id="newalbum" name="newalbum" type="text" value="" />
273
+ <input class="button-secondary action" type="submit" name="add" value="<?php _e('Add', 'nggallery'); ?>"/>
274
  <?php } ?>
275
  </div>
276
  </div>
280
 
281
  <div>
282
  <div style="float:right;">
283
+ <a href="#" title="<?php _e('Show / hide used galleries','nggallery'); ?>" id="toggle_used"><?php _e('[Show all]', 'nggallery'); ?></a>
284
+ | <a href="#" title="<?php _e('Maximize the widget content','nggallery'); ?>" id="all_max"><?php _e('[Maximize]', 'nggallery'); ?></a>
285
+ | <a href="#" title="<?php _e('Minimize the widget content','nggallery'); ?>" id="all_min"><?php _e('[Minimize]', 'nggallery'); ?></a>
286
  </div>
287
  <?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'); ?>
288
  </div>
373
  <tr>
374
  <th>
375
  <?php _e('Album name:', 'nggallery'); ?><br />
376
+ <input class="search-input" id="album_name" name="album_name" type="text" value="<?php echo esc_attr( $album->name ); ?>" style="width:95%" />
377
  </th>
378
  </tr>
379
  <tr>
380
  <th>
381
  <?php _e('Album description:', 'nggallery'); ?><br />
382
+ <textarea class="search-input" id="album_desc" name="album_desc" cols="50" rows="2" style="width:95%" ><?php echo esc_attr( $album->albumdesc ); ?></textarea>
383
  </th>
384
  </tr>
385
  <tr>
388
  <select name="previewpic" style="width:95%" >
389
  <option value="0"><?php _e('No picture', 'nggallery'); ?></option>
390
  <?php
391
+ $picturelist = $wpdb->get_results("SELECT t.*, tt.* FROM $wpdb->nggallery AS t INNER JOIN $wpdb->nggpictures AS tt ON t.gid = tt.galleryid WHERE tt.exclude != 1 GROUP BY tt.galleryid ORDER by tt.galleryid");
392
  if( is_array($picturelist) ) {
393
  foreach($picturelist as $picture) {
394
+ echo '<option value="' . $picture->pid . '"'. (($picture->pid == $album->previewpic) ? ' selected="selected"' : '') . ' >'. $picture->pid . ' - ' . $picture->filename.'</option>'."\n";
395
  }
396
  }
397
  ?>
398
  </select>
399
  </th>
400
  </tr>
401
+ <tr>
402
+ <th>
403
+ <?php _e('Page Link to', 'nggallery')?><br />
404
+ <select name="pageid" style="width:95%">
405
+ <option value="0" ><?php _e('Not linked', 'nggallery') ?></option>
406
+ <?php
407
+ if (!isset($album->pageid))
408
+ $album->pageid = 0;
409
+ parent_dropdown($album->pageid); ?>
410
+ </select>
411
+ </th>
412
+ </tr>
413
  <tr align="right">
414
  <td class="submit">
415
  <input type="submit" class="button-primary" name="update_album" value="<?php _e("OK",'nggallery')?>" />
437
  global $wpdb, $nggdb;
438
 
439
  $obj = array();
440
+ $preview_image = '';
441
 
442
  // if the id started with a 'a', then it's a sub album
443
  if (substr( $id, 0, 1) == 'a') {
444
 
445
  if ( !$album = $this->albums[ substr( $id, 1) ] )
446
  return;
447
+
448
  $obj['id'] = $album->id;
449
  $obj['name'] = $obj['title'] = $album->name;
 
450
  $class = 'album_obj';
 
 
 
 
451
 
452
+ // get the post name
453
+ $post = get_post($album->pageid);
454
+ $obj['pagenname'] = ($post == null) ? '---' : $post->post_title;
455
+
456
+ // for spped reason we limit it to 50
457
+ if ( $this->num_albums < 50 ) {
458
+ if ($album->previewpic != 0)
459
+ $image = $nggdb->find_image( $album->previewpic );
460
+
461
+ $preview_image = ($image->thumbURL) ? '<div class="inlinepicture"><img src="' . $image->thumbURL . '" /></div>' : '';
462
+ }
463
+
464
  // this indicates that we have a album container
465
  $prefix = 'a';
466
 
473
  $obj['title'] = $gallery->title;
474
 
475
  // get the post name
476
+ $post = get_post($gallery->pageid);
477
+ $obj['pagenname'] = ($post == null) ? '---' : $post->post_title;
478
+
479
+ // for spped reason we limit it to 50
480
+ if ( $this->num_galleries < 50 ) {
481
+ // set image url
482
+ $image = $nggdb->find_image( $gallery->previewpic );
483
+ $preview_image = ($image->thumbURL) ? '<div class="inlinepicture"><img src="' . $image->thumbURL . '" /></div>' : '';
484
+ }
485
+
486
  $prefix = '';
487
  }
488
 
admin/css/nggColorPicker.css ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #colorSelector{
2
+ background:transparent url(../images/select.png) repeat scroll 0 0;
3
+ height:36px;
4
+ position:relative;
5
+ width:36px;
6
+ }
7
+ #colorSelector div{
8
+ background:transparent url(../images/select.png) repeat scroll center center;
9
+ height:30px;
10
+ left:3px;
11
+ position:absolute;
12
+ top:3px;
13
+ width:30px;
14
+ }
admin/css/nggadmin.css CHANGED
@@ -1,5 +1,5 @@
1
  /*
2
- ** NextGEN Gallery Style for Wordpress 2.8
3
  */
4
 
5
  /* SETTINGS FOR Overview Gallery */
@@ -25,7 +25,38 @@
25
  width:24px;
26
  }
27
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
28
 
 
 
 
 
 
 
 
 
 
 
29
  /* SETTING FOR FLASH UPLOAD BUTTON */
30
  .swfupload {
31
  position:absolute;
@@ -38,6 +69,10 @@
38
  width:22%;
39
  }
40
 
 
 
 
 
41
  /* WATERMARK */
42
  #wm-preview {
43
  float:right;
@@ -103,10 +138,6 @@ p#ngg-inlinebutton {
103
  vertical-align: top;
104
  }
105
 
106
- #ngg-listimages td, #ngg-listimages th {
107
-
108
- }
109
-
110
  .fixed tbody th.column-cb {
111
  padding:7px 0 22px;
112
  }
@@ -116,7 +147,7 @@ p#ngg-inlinebutton {
116
  }
117
 
118
  .fixed .column-thumbnail{
119
- width:80px;
120
  }
121
 
122
  .fixed .column-thumbnail img{
@@ -125,18 +156,13 @@ p#ngg-inlinebutton {
125
  }
126
 
127
  .fixed .column-id {
128
- width: 2em;
129
- }
130
-
131
- .fixed .column-alt_title_desc {
132
-
133
  }
134
 
135
  .fixed .column-exclude, .fixed .column-action, .fixed .column-delete {
136
  width: 10%;
137
  }
138
 
139
-
140
  /* SETTINGS FOR PROGRESS BAR */
141
 
142
  div .progressborder {
@@ -190,11 +216,11 @@ div .progressbar span {
190
 
191
  /* SETTINGS FOR ALBUM PAGE */
192
 
193
- .tablenav select[name="act_album"] {
194
  width:150px;
195
  }
196
 
197
- .tablenav span {
198
  padding-left: 50px;
199
  }
200
 
@@ -410,6 +436,7 @@ DIV that shows the image as you drag it
410
  margin:5px auto;
411
  padding:10px;
412
  }
 
413
  /* ABOUT PAGE */
414
  .ngg-list {
415
  font-size:11px;
1
  /*
2
+ ** NextGEN Gallery Style for Wordpress 2.9
3
  */
4
 
5
  /* SETTINGS FOR Overview Gallery */
25
  width:24px;
26
  }
27
 
28
+ .warning {
29
+ color: #9F6000;
30
+ background-color: #FEEFB3;
31
+ border: 1px solid;
32
+ margin: 5px 0px;
33
+ padding:5px;
34
+ }
35
+
36
+ #donator_message {
37
+ margin:5px 0 15px;
38
+ background-color:#BDE5F8;
39
+ border-color:#00529B;
40
+ -moz-border-radius-bottomleft:3px;
41
+ -moz-border-radius-bottomright:3px;
42
+ -moz-border-radius-topleft:3px;
43
+ -moz-border-radius-topright:3px;
44
+ border-style:solid;
45
+ border-width:1px;
46
+ margin:5px 15px 2px;
47
+ padding:0 0.6em;
48
+ }
49
 
50
+ #donator_message p{
51
+ line-height:1;
52
+ margin:0.5em 0;
53
+ padding:2px;
54
+ }
55
+
56
+ #donator_message span{
57
+ padding-top:10px;
58
+ float:right;
59
+ }
60
  /* SETTING FOR FLASH UPLOAD BUTTON */
61
  .swfupload {
62
  position:absolute;
69
  width:22%;
70
  }
71
 
72
+ a.switch-expert {
73
+ text-decoration:none;
74
+ }
75
+
76
  /* WATERMARK */
77
  #wm-preview {
78
  float:right;
138
  vertical-align: top;
139
  }
140
 
 
 
 
 
141
  .fixed tbody th.column-cb {
142
  padding:7px 0 22px;
143
  }
147
  }
148
 
149
  .fixed .column-thumbnail{
150
+ width:85px;
151
  }
152
 
153
  .fixed .column-thumbnail img{
156
  }
157
 
158
  .fixed .column-id {
159
+ width: 5em;
 
 
 
 
160
  }
161
 
162
  .fixed .column-exclude, .fixed .column-action, .fixed .column-delete {
163
  width: 10%;
164
  }
165
 
 
166
  /* SETTINGS FOR PROGRESS BAR */
167
 
168
  div .progressborder {
216
 
217
  /* SETTINGS FOR ALBUM PAGE */
218
 
219
+ .albumnav select[name="act_album"] {
220
  width:150px;
221
  }
222
 
223
+ .albumnav span {
224
  padding-left: 50px;
225
  }
226
 
436
  margin:5px auto;
437
  padding:10px;
438
  }
439
+
440
  /* ABOUT PAGE */
441
  .ngg-list {
442
  font-size:11px;
admin/{manage_thumbnail.php → edit-thumbnail.php} RENAMED
@@ -1,183 +1,173 @@
1
- <?php
2
-
3
- /**
4
-
5
- Custom thumbnail for NGG
6
- Author : Simone Fumagalli | simone@iliveinperego.com
7
- More info and update : http://www.iliveinperego.com/custom_thumbnail_for_ngg/
8
-
9
- Credits:
10
- NextGen Gallery : Alex Rabe | http://alexrabe.boelinger.com/wordpress-plugins/nextgen-gallery/
11
- jCrop : Kelly Hallman <khallman@wrack.org> | http://deepliquid.com/content/Jcrop.html
12
-
13
- **/
14
-
15
- require_once( dirname( dirname(__FILE__) ) . '/ngg-config.php');
16
- require_once( NGGALLERY_ABSPATH . '/lib/image.php' );
17
-
18
- if ( !is_user_logged_in() )
19
- die(__('Cheatin&#8217; uh?'));
20
-
21
- if ( !current_user_can('NextGEN Manage gallery') )
22
- die(__('Cheatin&#8217; uh?'));
23
-
24
- global $wpdb;
25
-
26
- $id = (int) $_GET['id'];
27
-
28
- // let's get the image data
29
- $picture = nggdb::find_image($id);
30
-
31
- include_once( nggGallery::graphic_library() );
32
- $ngg_options=get_option('ngg_options');
33
-
34
- $thumb = new ngg_Thumbnail($picture->imagePath, TRUE);
35
- $thumb->resize(350,350);
36
- // we need the new dimension
37
- $resizedPreviewInfo = $thumb->newDimensions;
38
- $thumb->destruct();
39
-
40
- $preview_image = NGGALLERY_URLPATH . 'nggshow.php?pid=' . $picture->pid . '&amp;width=350&amp;height=350';
41
- $imageInfo = getimagesize($picture->imagePath);
42
- $rr = round($imageInfo[0] / $resizedPreviewInfo['newWidth'], 2);
43
-
44
- if ( ($ngg_options['thumbfix'] == 1) and (!$ngg_options['thumbcrop']) ) {
45
- $WidthHtmlPrev = $ngg_options['thumbwidth'];
46
- $HeightHtmlPrev = $ngg_options['thumbheight'];
47
- }
48
-
49
- if ( ($ngg_options['thumbfix'] == 1) and ($ngg_options['thumbcrop'] == 1) ) {
50
- $WidthHtmlPrev = $ngg_options['thumbwidth'];
51
- $HeightHtmlPrev = $ngg_options['thumbheight'];
52
- }
53
-
54
- if ( (!$ngg_options['thumbfix']) and ($ngg_options['thumbcrop'] == 1) ) {
55
- $WidthHtmlPrev = $ngg_options['thumbwidth'];
56
- $HeightHtmlPrev = $ngg_options['thumbwidth'];
57
- }
58
-
59
- if ( (!$ngg_options['thumbfix']) and (!$ngg_options['thumbcrop']) ) {
60
- // H > W
61
- if ($imageInfo[1] > $imageInfo[0]) {
62
-
63
- $HeightHtmlPrev = $ngg_options['thumbheight'];
64
- $WidthHtmlPrev = round($imageInfo[0] / ($imageInfo[1] / $ngg_options['thumbheight']),0);
65
-
66
- } else {
67
-
68
- $WidthtHtmlPrev = $ngg_options['thumbwidth'];
69
- $HeightHtmlPrev = round($imageInfo[1] / ($imageInfo[0] / $ngg_options['thumbwidth']),0);
70
-
71
- }
72
- }
73
-
74
- ?>
75
- <script src="<?php echo NGGALLERY_URLPATH ?>/admin/js/Jcrop/js/jquery.Jcrop.js"></script>
76
- <link rel="stylesheet" href="<?php echo NGGALLERY_URLPATH ?>/admin/js/Jcrop/css/jquery.Jcrop.css" type="text/css" />
77
-
78
- <script language="JavaScript">
79
- <!--
80
-
81
- var status = 'start';
82
- var xT, yT, wT, hT, selectedCoords;
83
- var selectedImage = "thumb<?php echo $id ?>";
84
-
85
- function showPreview(coords)
86
- {
87
-
88
- if (status != 'edit') {
89
- jQuery('#actualThumb').hide();
90
- jQuery('#previewNewThumb').show();
91
- status = 'edit';
92
- }
93
-
94
- var rx = <?php echo $WidthHtmlPrev ?> / coords.w;
95
- var ry = <?php echo $HeightHtmlPrev ?> / coords.h;
96
-
97
- jQuery('#imageToEditPreview').css({
98
- width: Math.round(rx * <?php echo $resizedPreviewInfo['newWidth'] ?>) + 'px',
99
- height: Math.round(ry * <?php echo $resizedPreviewInfo['newHeight'] ?>) + 'px',
100
- marginLeft: '-' + Math.round(rx * coords.x) + 'px',
101
- marginTop: '-' + Math.round(ry * coords.y) + 'px'
102
- });
103
-
104
- xT = coords.x;
105
- yT = coords.y;
106
- wT = coords.w;
107
- hT = coords.h;
108
-
109
- jQuery("#sizeThumb").html(xT+" "+yT+" "+wT+" "+hT);
110
-
111
- };
112
-
113
- function updateThumb() {
114
-
115
- if ( (wT == 0) || (hT == 0) || (wT == undefined) || (hT == undefined) ) {
116
- alert("<?php _e('Select with the mouse the area for the new thumbnail.', 'nggallery') ?>");
117
- return false;
118
- }
119
-
120
- jQuery.ajax({
121
- url: "admin-ajax.php",
122
- type : "POST",
123
- data: {x: xT, y: yT, w: wT, h: hT, action: 'createNewThumb', id: <?php echo $id ?>, rr: <?php echo $rr ?>},
124
- cache: false,
125
- success: function(data){
126
- var d = new Date();
127
- newUrl = jQuery("#"+selectedImage).attr("src") + "?" + d.getTime();
128
- jQuery("#"+selectedImage).attr("src" , newUrl);
129
-
130
- jQuery('#thumbMsg').html("<?php echo _e("Thumbnail updated", "nggallery") ?>");
131
- jQuery('#thumbMsg').css({'display':'block'});
132
- setTimeout(function(){ jQuery('#thumbMsg').fadeOut('slow'); }, 1500);
133
- },
134
- error: function() {
135
- jQuery('#thumbMsg').html("<?php echo _e("Error updating thumbnail.", "nggallery") ?>");
136
- jQuery('#thumbMsg').css({'display':'block'});
137
- setTimeout(function(){ jQuery('#thumbMsg').fadeOut('slow'); }, 1500);
138
- }
139
- });
140
-
141
- }
142
-
143
- -->
144
- </script>
145
-
146
- <table width="98%" align="center" style="border:1px solid #DADADA">
147
- <tr>
148
- <td rowspan="3" valign="middle" align="center" width="350" style="background-color:#DADADA;">
149
- <img src="<?php echo $preview_image ?>" alt="" id="imageToEdit" />
150
- </td>
151
- <td width="300" style="background-color : #DADADA;">
152
- <small style="margin-left:6px; display:block;"><?php _e('Select the area for the thumbnail from the picture on the left.', 'nggallery') ?></small>
153
- </td>
154
- </tr>
155
- <tr>
156
- <td align="center" width="300" height="320">
157
- <div id="previewNewThumb" style="display:none;width:<?php echo $WidthHtmlPrev ?>px;height:<?php echo $HeightHtmlPrev ?>px;overflow:hidden; margin-left:5px;">
158
- <img src="<?php echo $preview_image ?>" id="imageToEditPreview" />
159
- </div>
160
- <div id="actualThumb">
161
- <img src="<?php echo $picture->thumbURL ?>?<?php echo time()?>" />
162
- </div>
163
- </td>
164
- </tr>
165
- <tr style="background-color:#DADADA;">
166
- <td>
167
- <input type="button" name="update" value="<?php _e('Update', 'nggallery') ?>" onclick="updateThumb()" class="button-secondary" style="float:left; margin-left:4px;"/>
168
- <div id="thumbMsg" style="color:#FF0000; display : none;font-size:11px; float:right; width:60%; height:2em; line-height:2em;"></div>
169
- </td>
170
- </tr>
171
- </table>
172
-
173
- <script type="text/javascript">
174
- <!--
175
- jQuery(document).ready(function(){
176
- jQuery('#imageToEdit').Jcrop({
177
- onChange: showPreview,
178
- onSelect: showPreview,
179
- aspectRatio: <?php echo round($WidthHtmlPrev/$HeightHtmlPrev,1) ?>
180
- });
181
- });
182
- -->
183
- </script>
1
+ <?php
2
+
3
+ /**
4
+
5
+ Custom thumbnail for NGG
6
+ Author : Simone Fumagalli | simone@iliveinperego.com
7
+ More info and update : http://www.iliveinperego.com/custom_thumbnail_for_ngg/
8
+
9
+ Credits:
10
+ NextGen Gallery : Alex Rabe | http://alexrabe.boelinger.com/wordpress-plugins/nextgen-gallery/
11
+ jCrop : Kelly Hallman <khallman@wrack.org> | http://deepliquid.com/content/Jcrop.html
12
+
13
+ **/
14
+
15
+ require_once( dirname( dirname(__FILE__) ) . '/ngg-config.php');
16
+ require_once( NGGALLERY_ABSPATH . '/lib/image.php' );
17
+
18
+ if ( !is_user_logged_in() )
19
+ die(__('Cheatin&#8217; uh?'));
20
+
21
+ if ( !current_user_can('NextGEN Manage gallery') )
22
+ die(__('Cheatin&#8217; uh?'));
23
+
24
+ global $wpdb;
25
+
26
+ $id = (int) $_GET['id'];
27
+
28
+ // let's get the image data
29
+ $picture = nggdb::find_image($id);
30
+
31
+ include_once( nggGallery::graphic_library() );
32
+ $ngg_options=get_option('ngg_options');
33
+
34
+ $thumb = new ngg_Thumbnail($picture->imagePath, TRUE);
35
+ $thumb->resize(350,350);
36
+ // we need the new dimension
37
+ $resizedPreviewInfo = $thumb->newDimensions;
38
+ $thumb->destruct();
39
+
40
+ $preview_image = NGGALLERY_URLPATH . 'nggshow.php?pid=' . $picture->pid . '&amp;width=350&amp;height=350';
41
+ $imageInfo = @getimagesize($picture->imagePath);
42
+ $rr = round($imageInfo[0] / $resizedPreviewInfo['newWidth'], 2);
43
+
44
+ if ( ($ngg_options['thumbfix'] == 1) ) {
45
+
46
+ $WidthHtmlPrev = $ngg_options['thumbwidth'];
47
+ $HeightHtmlPrev = $ngg_options['thumbheight'];
48
+
49
+ } else {
50
+ // H > W
51
+ if ($imageInfo[1] > $imageInfo[0]) {
52
+
53
+ $HeightHtmlPrev = $ngg_options['thumbheight'];
54
+ $WidthHtmlPrev = round($imageInfo[0] / ($imageInfo[1] / $ngg_options['thumbheight']),0);
55
+
56
+ } else {
57
+
58
+ $WidthHtmlPrev = $ngg_options['thumbwidth'];
59
+ $HeightHtmlPrev = round($imageInfo[1] / ($imageInfo[0] / $ngg_options['thumbwidth']),0);
60
+
61
+ }
62
+ }
63
+
64
+ ?>
65
+ <script src="<?php echo NGGALLERY_URLPATH; ?>/admin/js/Jcrop/js/jquery.Jcrop.js"></script>
66
+ <link rel="stylesheet" href="<?php echo NGGALLERY_URLPATH; ?>/admin/js/Jcrop/css/jquery.Jcrop.css" type="text/css" />
67
+
68
+ <script language="JavaScript">
69
+ <!--
70
+
71
+ var status = 'start';
72
+ var xT, yT, wT, hT, selectedCoords;
73
+ var selectedImage = "thumb<?php echo $id ?>";
74
+
75
+ function showPreview(coords)
76
+ {
77
+
78
+ if (status != 'edit') {
79
+ jQuery('#actualThumb').hide();
80
+ jQuery('#previewNewThumb').show();
81
+ status = 'edit';
82
+ }
83
+
84
+ var rx = <?php echo $WidthHtmlPrev; ?> / coords.w;
85
+ var ry = <?php echo $HeightHtmlPrev; ?> / coords.h;
86
+
87
+ jQuery('#imageToEditPreview').css({
88
+ width: Math.round(rx * <?php echo $resizedPreviewInfo['newWidth']; ?>) + 'px',
89
+ height: Math.round(ry * <?php echo $resizedPreviewInfo['newHeight']; ?>) + 'px',
90
+ marginLeft: '-' + Math.round(rx * coords.x) + 'px',
91
+ marginTop: '-' + Math.round(ry * coords.y) + 'px'
92
+ });
93
+
94
+ xT = coords.x;
95
+ yT = coords.y;
96
+ wT = coords.w;
97
+ hT = coords.h;
98
+
99
+ jQuery("#sizeThumb").html(xT+" "+yT+" "+wT+" "+hT);
100
+
101
+ };
102
+
103
+ function updateThumb() {
104
+
105
+ if ( (wT == 0) || (hT == 0) || (wT == undefined) || (hT == undefined) ) {
106
+ alert("<?php _e('Select with the mouse the area for the new thumbnail', 'nggallery'); ?>");
107
+ return false;
108
+ }
109
+
110
+ jQuery.ajax({
111
+ url: "admin-ajax.php",
112
+ type : "POST",
113
+ data: {x: xT, y: yT, w: wT, h: hT, action: 'createNewThumb', id: <?php echo $id; ?>, rr: <?php echo $rr; ?>},
114
+ cache: false,
115
+ success: function(data){
116
+ var d = new Date();
117
+ newUrl = jQuery("#"+selectedImage).attr("src") + "?" + d.getTime();
118
+ jQuery("#"+selectedImage).attr("src" , newUrl);
119
+
120
+ jQuery('#thumbMsg').html("<?php _e('Thumbnail updated', 'nggallery') ?>");
121
+ jQuery('#thumbMsg').css({'display':'block'});
122
+ setTimeout(function(){ jQuery('#thumbMsg').fadeOut('slow'); }, 1500);
123
+ },
124
+ error: function() {
125
+ jQuery('#thumbMsg').html("<?php _e('Error updating thumbnail', 'nggallery') ?>");
126
+ jQuery('#thumbMsg').css({'display':'block'});
127
+ setTimeout(function(){ jQuery('#thumbMsg').fadeOut('slow'); }, 1500);
128
+ }
129
+ });
130
+
131
+ }
132
+
133
+ -->
134
+ </script>
135
+
136
+ <table width="98%" align="center" style="border:1px solid #DADADA">
137
+ <tr>
138
+ <td rowspan="3" valign="middle" align="center" width="350" style="background-color:#DADADA;">
139
+ <img src="<?php echo $preview_image; ?>" alt="" id="imageToEdit" />
140
+ </td>
141
+ <td width="300" style="background-color : #DADADA;">
142
+ <small style="margin-left:6px; display:block;"><?php _e('Select the area for the thumbnail from the picture on the left.', 'nggallery'); ?></small>
143
+ </td>
144
+ </tr>
145
+ <tr>
146
+ <td align="center" width="300" height="320">
147
+ <div id="previewNewThumb" style="display:none;width:<?php echo $WidthHtmlPrev; ?>px;height:<?php echo $HeightHtmlPrev; ?>px;overflow:hidden; margin-left:5px;">
148
+ <img src="<?php echo $preview_image; ?>" id="imageToEditPreview" />
149
+ </div>
150
+ <div id="actualThumb">
151
+ <img src="<?php echo $picture->thumbURL; ?>?<?php echo time()?>" />
152
+ </div>
153
+ </td>
154
+ </tr>
155
+ <tr style="background-color:#DADADA;">
156
+ <td>
157
+ <input type="button" name="update" value="<?php _e('Update', 'nggallery'); ?>" onclick="updateThumb()" class="button-secondary" style="float:left; margin-left:4px;"/>
158
+ <div id="thumbMsg" style="color:#FF0000; display : none;font-size:11px; float:right; width:60%; height:2em; line-height:2em;"></div>
159
+ </td>
160
+ </tr>
161
+ </table>
162
+
163
+ <script type="text/javascript">
164
+ <!--
165
+ jQuery(document).ready(function(){
166
+ jQuery('#imageToEdit').Jcrop({
167
+ onChange: showPreview,
168
+ onSelect: showPreview,
169
+ aspectRatio: <?php echo round($WidthHtmlPrev/$HeightHtmlPrev,1) ?>
170
+ });
171
+ });
172
+ -->
173
+ </script>
 
 
 
 
 
 
 
 
 
 
admin/functions.php CHANGED
@@ -7,7 +7,7 @@ if(preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die('You
7
  *
8
  * @package NextGEN Gallery
9
  * @author Alex Rabe
10
- * @copyright 2007-2209
11
  * @access public
12
  */
13
  class nggAdmin{
@@ -18,9 +18,10 @@ class nggAdmin{
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
 
@@ -28,14 +29,15 @@ class nggAdmin{
28
  get_currentuserinfo();
29
 
30
  //cleanup pathname
31
- $galleryname = apply_filters('ngg_gallery_name', $gallerytitle);
 
32
  $nggpath = $defaultpath . $galleryname;
33
  $nggRoot = WINABSPATH . $defaultpath;
34
  $txt = '';
35
 
36
  // No gallery name ?
37
- if (empty($galleryname)) {
38
- nggGallery::show_error( __('No valid gallery name!', 'nggallery') );
39
  return false;
40
  }
41
 
@@ -44,7 +46,7 @@ class nggAdmin{
44
  if ( !wp_mkdir_p( $nggRoot ) ) {
45
  $txt = __('Directory', 'nggallery').' <strong>' . $defaultpath . '</strong> '.__('didn\'t exist. Please create first the main gallery folder ', 'nggallery').'!<br />';
46
  $txt .= __('Check this link, if you didn\'t know how to set the permission :', 'nggallery').' <a href="http://codex.wordpress.org/Changing_File_Permissions">http://codex.wordpress.org/Changing_File_Permissions</a> ';
47
- nggGallery::show_error($txt);
48
  return false;
49
  }
50
  }
@@ -53,7 +55,7 @@ class nggAdmin{
53
  if ( !is_writeable( $nggRoot ) ) {
54
  $txt = __('Directory', 'nggallery').' <strong>' . $defaultpath . '</strong> '.__('is not writeable !', 'nggallery').'<br />';
55
  $txt .= __('Check this link, if you didn\'t know how to set the permission :', 'nggallery').' <a href="http://codex.wordpress.org/Changing_File_Permissions">http://codex.wordpress.org/Changing_File_Permissions</a> ';
56
- nggGallery::show_error($txt);
57
  return false;
58
  }
59
 
@@ -77,7 +79,7 @@ class nggAdmin{
77
  $help = __('The server setting Safe-Mode is on !', 'nggallery');
78
  $help .= '<br />'.__('If you have problems, please create directory', 'nggallery').' <strong>' . $nggpath . '</strong> ';
79
  $help .= __('and the thumbnails directory', 'nggallery').' <strong>' . $nggpath . '/thumbs</strong> '.__('with permission 777 manually !', 'nggallery');
80
- nggGallery::show_message($help);
81
  }
82
 
83
  // show a error message
@@ -87,25 +89,34 @@ class nggAdmin{
87
  @rmdir(WINABSPATH . $nggpath . '/thumbs');
88
  @rmdir(WINABSPATH . $nggpath);
89
  }
90
- nggGallery::show_error($txt);
91
  return false;
92
  }
93
 
94
  $result = $wpdb->get_var("SELECT name FROM $wpdb->nggallery WHERE name = '$galleryname' ");
95
 
96
  if ($result) {
97
- nggGallery::show_error( __ngettext( 'Gallery', 'Galleries', 1, 'nggallery' ) .' <strong>' . $galleryname . '</strong> '.__('already exists', 'nggallery'));
98
  return false;
99
  } else {
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>';
107
 
108
- nggGallery::show_message($message);
109
  }
110
  return true;
111
  }
@@ -161,7 +172,7 @@ class nggAdmin{
161
  nggGallery::show_error(__('Database error. Could not add gallery!','nggallery'));
162
  return;
163
  }
164
- $created_msg = __ngettext( 'Gallery', 'Galleries', 1, 'nggallery' ) . ' <strong>' . $galleryname . '</strong> ' . __('successfully created!','nggallery') . '<br />';
165
  $gallery_id = $wpdb->insert_id; // get index_id
166
  }
167
 
@@ -251,37 +262,22 @@ class nggAdmin{
251
 
252
  // skip if file is not there
253
  if (!$thumb->error) {
254
- if ($ngg->options['thumbcrop']) {
255
-
256
- // THX to Kees de Bruin, better thumbnails if portrait format
257
- $width = $ngg->options['thumbwidth'];
258
- $height = $ngg->options['thumbheight'];
259
- $curwidth = $thumb->currentDimensions['width'];
260
- $curheight = $thumb->currentDimensions['height'];
261
- if ($curwidth > $curheight) {
262
- $aspect = (100 * $curwidth) / $curheight;
263
- } else {
264
- $aspect = (100 * $curheight) / $curwidth;
265
- }
266
- $width = round(($width * $aspect) / 100);
267
- $height = round(($height * $aspect) / 100);
268
-
269
- $thumb->resize($width,$height);
270
- $thumb->cropFromCenter($width);
271
- }
272
- elseif ($ngg->options['thumbfix']) {
273
  // check for portrait format
274
  if ($thumb->currentDimensions['height'] > $thumb->currentDimensions['width']) {
 
275
  $thumb->resize($ngg->options['thumbwidth'], 0);
276
  // get optimal y startpos
277
  $ypos = ($thumb->currentDimensions['height'] - $ngg->options['thumbheight']) / 2;
278
  $thumb->crop(0, $ypos, $ngg->options['thumbwidth'],$ngg->options['thumbheight']);
279
  } else {
280
- $thumb->resize(0,$ngg->options['thumbheight']);
 
281
  // get optimal x startpos
282
  $xpos = ($thumb->currentDimensions['width'] - $ngg->options['thumbwidth']) / 2;
283
  $thumb->crop($xpos, 0, $ngg->options['thumbwidth'],$ngg->options['thumbheight']);
284
  }
 
285
  } else {
286
  $thumb->resize($ngg->options['thumbwidth'],$ngg->options['thumbheight']);
287
  }
@@ -289,6 +285,14 @@ class nggAdmin{
289
  // save the new thumbnail
290
  $thumb->save($image->thumbPath, $ngg->options['thumbquality']);
291
  nggAdmin::chmod ($image->thumbPath);
 
 
 
 
 
 
 
 
292
  }
293
 
294
  $thumb->destruct();
@@ -321,7 +325,10 @@ class nggAdmin{
321
 
322
  if ( !is_object($image) )
323
  return __('Object didn\'t contain correct data','nggallery');
324
-
 
 
 
325
  // if no parameter is set, take global settings
326
  $width = ($width == 0) ? $ngg->options['imgWidth'] : $width;
327
  $height = ($height == 0) ? $ngg->options['imgHeight'] : $height;
@@ -335,6 +342,10 @@ class nggAdmin{
335
  if (!$file->error) {
336
  $file->resize($width, $height, 4);
337
  $file->save($image->imagePath, $ngg->options['imgQuality']);
 
 
 
 
338
  $file->destruct();
339
  } else {
340
  $file->destruct();
@@ -343,6 +354,100 @@ class nggAdmin{
343
 
344
  return '1';
345
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
346
 
347
  /**
348
  * nggAdmin::set_watermark() - set the watermarl for the image
@@ -363,7 +468,10 @@ class nggAdmin{
363
 
364
  if ( !is_object($image) )
365
  return __('Object didn\'t contain correct data','nggallery');
366
-
 
 
 
367
  if (!is_writable($image->imagePath))
368
  return ' <strong>' . $image->filename . __(' is not writeable','nggallery') . '</strong>';
369
 
@@ -421,6 +529,9 @@ class nggAdmin{
421
  // add the metadata
422
  nggAdmin::import_MetaData($pic_id);
423
 
 
 
 
424
  // action hook for post process after the image is added to the database
425
  $image = array( 'id' => $pic_id, 'filename' => $picture, 'galleryID' => $galleryID);
426
  do_action('ngg_added_new_image', $image);
@@ -433,11 +544,11 @@ class nggAdmin{
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
 
@@ -448,32 +559,50 @@ class nggAdmin{
448
  if (!is_array($imagesIds))
449
  $imagesIds = array($imagesIds);
450
 
451
- foreach($imagesIds as $pic_id) {
452
- $picture = nggdb::find_image($pic_id);
453
- if (!$picture->error) {
 
454
 
455
- $meta = nggAdmin::get_MetaData($picture->imagePath);
456
 
457
  // get the title
458
  if (!$alttext = $meta['title'])
459
- $alttext = $picture->alttext;
460
  // get the caption / description field
461
  if (!$description = $meta['caption'])
462
- $description = $picture->description;
463
  // get the file date/time from exif
464
  $timestamp = $meta['timestamp'];
465
- // update database
466
- $result = $wpdb->query( $wpdb->prepare("UPDATE $wpdb->nggpictures SET alttext = %s, description = %s, imagedate = %s WHERE pid = %d", $alttext, $description, $timestamp, $pic_id) );
467
- // add the tags
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
468
  if ($meta['keywords']) {
469
  $taglist = explode(',', $meta['keywords']);
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
  /**
@@ -481,25 +610,53 @@ class nggAdmin{
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
 
491
  $meta = array();
492
 
493
- $pdata = new nggMeta($picPath);
 
494
  $meta['title'] = $pdata->get_META('title');
495
  $meta['caption'] = $pdata->get_META('caption');
496
  $meta['keywords'] = $pdata->get_META('keywords');
497
- $meta['timestamp'] = $pdata->get_date_time();
 
 
498
 
499
  return $meta;
500
 
501
  }
502
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
503
  /**
504
  * Unzip a file via the PclZip class
505
  *
@@ -601,7 +758,7 @@ class nggAdmin{
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;
@@ -663,7 +820,7 @@ class nggAdmin{
663
  */
664
  function upload_images() {
665
 
666
- global $wpdb;
667
 
668
  // WPMU action
669
  if (nggAdmin::check_quota())
@@ -681,15 +838,15 @@ class nggAdmin{
681
  }
682
 
683
  // get the path to the gallery
684
- $gallerypath = $wpdb->get_var("SELECT path FROM $wpdb->nggallery WHERE gid = '$galleryID' ");
685
 
686
- if (!$gallerypath){
687
  nggGallery::show_error(__('Failure in database, no gallery path set !','nggallery'));
688
  return;
689
  }
690
-
691
  // read list of images
692
- $dirlist = nggAdmin::scandir(WINABSPATH.$gallerypath);
693
 
694
  $imagefiles = $_FILES['imagefiles'];
695
 
@@ -700,41 +857,40 @@ class nggAdmin{
700
  if ($imagefiles['error'][$key] == 0) {
701
 
702
  $temp_file = $imagefiles['tmp_name'][$key];
703
- $filepart = pathinfo ( strtolower($imagefiles['name'][$key]) );
704
- // required until PHP 5.2.0
705
- $filepart['filename'] = substr($filepart["basename"],0 ,strlen($filepart["basename"]) - (strlen($filepart["extension"]) + 1) );
706
 
707
- $filename = sanitize_title($filepart['filename']) . '.' . $filepart['extension'];
708
-
 
 
709
  // check for allowed extension and if it's an image file
710
- $ext = array('jpeg', 'jpg', 'png', 'gif');
711
  if ( !in_array($filepart['extension'], $ext) || !@getimagesize($temp_file) ){
712
- nggGallery::show_error('<strong>' . $imagefiles['name'][$key] . ' </strong>'.__('is no valid image file!','nggallery'));
713
  continue;
714
  }
715
 
716
  // check if this filename already exist in the folder
717
  $i = 0;
718
- while (in_array($filename,$dirlist)) {
719
- $filename = sanitize_title($filepart['filename']) . '_' . $i++ . '.' .$filepart['extension'];
720
  }
721
 
722
- $dest_file = WINABSPATH . $gallerypath . '/' . $filename;
723
 
724
  //check for folder permission
725
- if (!is_writeable(WINABSPATH.$gallerypath)) {
726
- $message = sprintf(__('Unable to write to directory %s. Is this directory writable by the server?', 'nggallery'), WINABSPATH.$gallerypath);
727
  nggGallery::show_error($message);
728
  return;
729
  }
730
 
731
  // save temp file to gallery
732
- if (!@move_uploaded_file($temp_file, $dest_file)){
733
  nggGallery::show_error(__('Error, the file could not moved to : ','nggallery') . $dest_file);
734
- nggAdmin::check_safemode(WINABSPATH.$gallerypath);
735
  continue;
736
  }
737
- if (!nggAdmin::chmod ($dest_file)) {
738
  nggGallery::show_error(__('Error, the file permissions could not set','nggallery'));
739
  continue;
740
  }
@@ -777,7 +933,7 @@ class nggAdmin{
777
 
778
  if ($galleryID == 0) {
779
  @unlink($temp_file);
780
- return __('No gallery selected !','nggallery');;
781
  }
782
 
783
  // WPMU action
@@ -785,35 +941,34 @@ class nggAdmin{
785
  return '0';
786
 
787
  // Check the upload
788
- if (!isset($_FILES['Filedata']) || !is_uploaded_file($_FILES["Filedata"]["tmp_name"]) || $_FILES["Filedata"]["error"] != 0)
789
- return __('Invalid upload. Error Code : ','nggallery') . $_FILES["Filedata"]["error"];
790
 
791
  // get the filename and extension
792
- $temp_file = $_FILES["Filedata"]['tmp_name'];
793
- $filepart = pathinfo ( strtolower($_FILES['Filedata']['name']) );
794
- // required until PHP 5.2.0
795
- $filepart['filename'] = substr($filepart['basename'],0 ,strlen($filepart['basename']) - (strlen($filepart["extension"]) + 1) );
796
- $filename = sanitize_title($filepart['filename']) . '.' . $filepart['extension'];
797
 
798
  // check for allowed extension
799
- $ext = array('jpeg', 'jpg', 'png', 'gif');
800
  if (!in_array($filepart['extension'], $ext))
801
- return $_FILES[$key]['name'] . __('is no valid image file!','nggallery');
802
 
803
  // get the path to the gallery
804
  $gallerypath = $wpdb->get_var("SELECT path FROM $wpdb->nggallery WHERE gid = '$galleryID' ");
805
  if (!$gallerypath){
806
  @unlink($temp_file);
807
- return __('Failure in database, no gallery path set !','nggallery');
808
  }
809
 
810
  // read list of images
811
- $imageslist = nggAdmin::scandir( WINABSPATH.$gallerypath );
812
 
813
  // check if this filename already exist
814
  $i = 0;
815
  while (in_array($filename,$imageslist)) {
816
- $filename = sanitize_title($filepart['filename']) . '_' . $i++ . '.' . $filepart['extension'];
817
  }
818
 
819
  $dest_file = WINABSPATH . $gallerypath . '/' . $filename;
@@ -891,10 +1046,10 @@ class nggAdmin{
891
  }
892
 
893
  /**
894
- * Cpapbility check. Check is the ID fit's to the user_ID'
895
  *
896
  * @class nggAdmin
897
- * @param int $check_ID is teh user_id
898
  * @return bool $result
899
  */
900
  function can_manage_this_gallery($check_ID) {
@@ -1135,18 +1290,39 @@ class nggAdmin{
1135
 
1136
  global $wpdb;
1137
 
1138
- $imageID = $wpdb->get_var("SELECT previewpic FROM $wpdb->nggallery WHERE gid = '$galleryID' ");
1139
 
1140
  // in the case no preview image is setup, we do this now
1141
- if ($imageID == 0) {
1142
  $firstImage = $wpdb->get_var("SELECT pid FROM $wpdb->nggpictures WHERE exclude != 1 AND galleryid = '$galleryID' ORDER by pid DESC limit 0,1");
1143
- if ($firstImage)
1144
  $wpdb->query("UPDATE $wpdb->nggallery SET previewpic = '$firstImage' WHERE gid = '$galleryID'");
 
 
1145
  }
1146
 
1147
  return;
1148
  }
1149
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1150
  } // END class nggAdmin
1151
 
1152
  /**
@@ -1161,4 +1337,4 @@ function ngg_getOnlyImages($p_event, $p_header) {
1161
  return nggAdmin::getOnlyImages($p_event, $p_header);
1162
 
1163
  }
1164
- ?>
7
  *
8
  * @package NextGEN Gallery
9
  * @author Alex Rabe
10
+ * @copyright 2007-2009
11
  * @access public
12
  */
13
  class nggAdmin{
18
  * @class nggAdmin
19
  * @param string $gallerytitle
20
  * @param string $defaultpath
21
+ * @param bool $output if the function should show an error messsage or not
22
+ * @return
23
  */
24
+ function create_gallery($gallerytitle, $defaultpath, $output = true) {
25
 
26
  global $wpdb, $user_ID;
27
 
29
  get_currentuserinfo();
30
 
31
  //cleanup pathname
32
+ $galleryname = sanitize_file_name( $gallerytitle );
33
+ $galleryname = apply_filters('ngg_gallery_name', $galleryname);
34
  $nggpath = $defaultpath . $galleryname;
35
  $nggRoot = WINABSPATH . $defaultpath;
36
  $txt = '';
37
 
38
  // No gallery name ?
39
+ if ( empty($galleryname) ) {
40
+ if ($output) nggGallery::show_error( __('No valid gallery name!', 'nggallery') );
41
  return false;
42
  }
43
 
46
  if ( !wp_mkdir_p( $nggRoot ) ) {
47
  $txt = __('Directory', 'nggallery').' <strong>' . $defaultpath . '</strong> '.__('didn\'t exist. Please create first the main gallery folder ', 'nggallery').'!<br />';
48
  $txt .= __('Check this link, if you didn\'t know how to set the permission :', 'nggallery').' <a href="http://codex.wordpress.org/Changing_File_Permissions">http://codex.wordpress.org/Changing_File_Permissions</a> ';
49
+ if ($output) nggGallery::show_error($txt);
50
  return false;
51
  }
52
  }
55
  if ( !is_writeable( $nggRoot ) ) {
56
  $txt = __('Directory', 'nggallery').' <strong>' . $defaultpath . '</strong> '.__('is not writeable !', 'nggallery').'<br />';
57
  $txt .= __('Check this link, if you didn\'t know how to set the permission :', 'nggallery').' <a href="http://codex.wordpress.org/Changing_File_Permissions">http://codex.wordpress.org/Changing_File_Permissions</a> ';
58
+ if ($output) nggGallery::show_error($txt);
59
  return false;
60
  }
61
 
79
  $help = __('The server setting Safe-Mode is on !', 'nggallery');
80
  $help .= '<br />'.__('If you have problems, please create directory', 'nggallery').' <strong>' . $nggpath . '</strong> ';
81
  $help .= __('and the thumbnails directory', 'nggallery').' <strong>' . $nggpath . '/thumbs</strong> '.__('with permission 777 manually !', 'nggallery');
82
+ if ($output) nggGallery::show_message($help);
83
  }
84
 
85
  // show a error message
89
  @rmdir(WINABSPATH . $nggpath . '/thumbs');
90
  @rmdir(WINABSPATH . $nggpath);
91
  }
92
+ if ($output) nggGallery::show_error($txt);
93
  return false;
94
  }
95
 
96
  $result = $wpdb->get_var("SELECT name FROM $wpdb->nggallery WHERE name = '$galleryname' ");
97
 
98
  if ($result) {
99
+ if ($output) nggGallery::show_error( _n( 'Gallery', 'Galleries', 1, 'nggallery' ) .' <strong>' . $galleryname . '</strong> '.__('already exists', 'nggallery'));
100
  return false;
101
  } else {
102
  $result = $wpdb->query( $wpdb->prepare("INSERT INTO $wpdb->nggallery (name, path, title, author) VALUES (%s, %s, %s, %s)", $galleryname, $nggpath, $gallerytitle , $user_ID) );
103
+ // and give me the new id
104
+ $gallery_id = (int) $wpdb->insert_id;
105
+ // here you can inject a custom function
106
+ do_action('ngg_created_new_gallery', $gallery_id);
107
+
108
+ // return only the id if defined
109
+ if ($return_id)
110
+ return $gallery_id;
111
+
112
  if ($result) {
113
  $message = __('Gallery %1$s successfully created.<br/>You can show this gallery with the tag %2$s.<br/>','nggallery');
114
+ $message = sprintf($message, $galleryname, '[nggallery id=' . $gallery_id . ']');
115
+ $message .= '<a href="' . admin_url() . 'admin.php?page=nggallery-manage-gallery&mode=edit&gid=' . $gallery_id . '" >';
116
  $message .= __('Edit gallery','nggallery');
117
  $message .= '</a>';
118
 
119
+ if ($output) nggGallery::show_message($message);
120
  }
121
  return true;
122
  }
172
  nggGallery::show_error(__('Database error. Could not add gallery!','nggallery'));
173
  return;
174
  }
175
+ $created_msg = _n( 'Gallery', 'Galleries', 1, 'nggallery' ) . ' <strong>' . $galleryname . '</strong> ' . __('successfully created!','nggallery') . '<br />';
176
  $gallery_id = $wpdb->insert_id; // get index_id
177
  }
178
 
262
 
263
  // skip if file is not there
264
  if (!$thumb->error) {
265
+ if ($ngg->options['thumbfix']) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
266
  // check for portrait format
267
  if ($thumb->currentDimensions['height'] > $thumb->currentDimensions['width']) {
268
+ // first resize to the wanted width
269
  $thumb->resize($ngg->options['thumbwidth'], 0);
270
  // get optimal y startpos
271
  $ypos = ($thumb->currentDimensions['height'] - $ngg->options['thumbheight']) / 2;
272
  $thumb->crop(0, $ypos, $ngg->options['thumbwidth'],$ngg->options['thumbheight']);
273
  } else {
274
+ // first resize to the wanted height
275
+ $thumb->resize(0, $ngg->options['thumbheight']);
276
  // get optimal x startpos
277
  $xpos = ($thumb->currentDimensions['width'] - $ngg->options['thumbwidth']) / 2;
278
  $thumb->crop($xpos, 0, $ngg->options['thumbwidth'],$ngg->options['thumbheight']);
279
  }
280
+ //this create a thumbnail but keep ratio settings
281
  } else {
282
  $thumb->resize($ngg->options['thumbwidth'],$ngg->options['thumbheight']);
283
  }
285
  // save the new thumbnail
286
  $thumb->save($image->thumbPath, $ngg->options['thumbquality']);
287
  nggAdmin::chmod ($image->thumbPath);
288
+
289
+ //read the new sizes
290
+ $new_size = @getimagesize ( $image->thumbPath );
291
+ $size['width'] = $new_size[0];
292
+ $size['height'] = $new_size[1];
293
+
294
+ // add them to the database
295
+ nggdb::update_image_meta($image->pid, array( 'thumbnail' => $size) );
296
  }
297
 
298
  $thumb->destruct();
325
 
326
  if ( !is_object($image) )
327
  return __('Object didn\'t contain correct data','nggallery');
328
+
329
+ // before we start we import the meta data to database (required for uploads before V1.4.0)
330
+ nggAdmin::maybe_import_meta( $image->pid );
331
+
332
  // if no parameter is set, take global settings
333
  $width = ($width == 0) ? $ngg->options['imgWidth'] : $width;
334
  $height = ($height == 0) ? $ngg->options['imgHeight'] : $height;
342
  if (!$file->error) {
343
  $file->resize($width, $height, 4);
344
  $file->save($image->imagePath, $ngg->options['imgQuality']);
345
+ // read the new sizes
346
+ $size = @getimagesize ( $image->imagePath );
347
+ // add them to the database
348
+ nggdb::update_image_meta($image->pid, array( 'width' => $size[0], 'height' => $size[1] ) );
349
  $file->destruct();
350
  } else {
351
  $file->destruct();
354
 
355
  return '1';
356
  }
357
+
358
+ /**
359
+ * Rotated/Flip an image based on the orientation flag or a definded angle
360
+ *
361
+ * @param int|object $image
362
+ * @param string (optional) $dir, CW (clockwise)or CCW (counter clockwise), if set to false, the exif flag will be used
363
+ * @param string (optional) $flip, could be either false | V (flip vertical) | H (flip horizontal)
364
+ * @return string result code
365
+ */
366
+ function rotate_image($image, $dir = false, $flip = false) {
367
+
368
+ global $ngg;
369
+
370
+ if(! class_exists('ngg_Thumbnail'))
371
+ require_once( nggGallery::graphic_library() );
372
+
373
+ if ( is_numeric($image) )
374
+ $image = nggdb::find_image( $image );
375
+
376
+ if ( !is_object($image) )
377
+ return __('Object didn\'t contain correct data','nggallery');
378
+
379
+ if (!is_writable($image->imagePath))
380
+ return ' <strong>' . $image->filename . __(' is not writeable','nggallery') . '</strong>';
381
+
382
+ // if you didn't define a rotation, we look for the orientation flag in EXIF
383
+ if ( $dir === false ) {
384
+ $meta = new nggMeta( $image->pid );
385
+ $exif = $meta->get_EXIF();
386
+
387
+ if (isset($exif['Orientation'])) {
388
+
389
+ switch ($exif['Orientation']) {
390
+ case 5 : // vertical flip + 90 rotate right
391
+ $flip = 'V';
392
+ case 6 : // 90 rotate right
393
+ $dir = 'CW';
394
+ break;
395
+ case 7 : // horizontal flip + 90 rotate right
396
+ $flip = 'H';
397
+ case 8 : // 90 rotate left
398
+ $dir = 'CCW';
399
+ break;
400
+ case 4 : // vertical flip
401
+ $flip = 'V';
402
+ break;
403
+ case 3 : // 180 rotate left
404
+ $dir = 180;
405
+ break;
406
+ case 2 : // horizontal flip
407
+ $flip = 'H';
408
+ break;
409
+ case 1 : // no action in the case it doesn't need a rotation
410
+ default:
411
+ return '0';
412
+ break;
413
+ }
414
+ } else
415
+ return '0';
416
+ }
417
+ $file = new ngg_Thumbnail( $image->imagePath, TRUE );
418
+
419
+ // skip if file is not there
420
+ if (!$file->error) {
421
+
422
+ // before we start we import the meta data to database (required for uploads before V1.4.X)
423
+ nggAdmin::maybe_import_meta( $image->pid );
424
+
425
+ if ( $dir !== 0 )
426
+ $file->rotateImage( $dir );
427
+ if ( $dir === 180)
428
+ $file->rotateImage( 'CCW' ); // very special case, we rotate the image two times
429
+ if ( $flip == 'H')
430
+ $file->flipImage(true, false);
431
+ if ( $flip == 'V')
432
+ $file->flipImage(false, true);
433
+
434
+ $file->save($image->imagePath, $ngg->options['imgQuality']);
435
+
436
+ // read the new sizes
437
+ $size = @getimagesize ( $image->imagePath );
438
+ // add them to the database
439
+ nggdb::update_image_meta($image->pid, array( 'width' => $size[0], 'height' => $size[1] ) );
440
+
441
+ }
442
+
443
+ $file->destruct();
444
+
445
+ if ( !empty($file->errmsg) )
446
+ return ' <strong>' . $image->filename . ' (Error : '.$file->errmsg .')</strong>';
447
+
448
+ return '1';
449
+
450
+ }
451
 
452
  /**
453
  * nggAdmin::set_watermark() - set the watermarl for the image
468
 
469
  if ( !is_object($image) )
470
  return __('Object didn\'t contain correct data','nggallery');
471
+
472
+ // before we start we import the meta data to database (required for uploads before V1.4.0)
473
+ nggAdmin::maybe_import_meta( $image->pid );
474
+
475
  if (!is_writable($image->imagePath))
476
  return ' <strong>' . $image->filename . __(' is not writeable','nggallery') . '</strong>';
477
 
529
  // add the metadata
530
  nggAdmin::import_MetaData($pic_id);
531
 
532
+ // auto rotate
533
+ nggAdmin::rotate_image($pic_id);
534
+
535
  // action hook for post process after the image is added to the database
536
  $image = array( 'id' => $pic_id, 'filename' => $picture, 'galleryID' => $galleryID);
537
  do_action('ngg_added_new_image', $image);
544
  }
545
 
546
  /**
547
+ * Import some meta data into the database (if avialable)
548
  *
549
  * @class nggAdmin
550
  * @param array|int $imagesIds
551
+ * @return string result code
552
  */
553
  function import_MetaData($imagesIds) {
554
 
559
  if (!is_array($imagesIds))
560
  $imagesIds = array($imagesIds);
561
 
562
+ foreach($imagesIds as $imageID) {
563
+
564
+ $image = nggdb::find_image( $imageID );
565
+ if (!$image->error) {
566
 
567
+ $meta = nggAdmin::get_MetaData( $image->pid );
568
 
569
  // get the title
570
  if (!$alttext = $meta['title'])
571
+ $alttext = $image->alttext;
572
  // get the caption / description field
573
  if (!$description = $meta['caption'])
574
+ $description = $image->description;
575
  // get the file date/time from exif
576
  $timestamp = $meta['timestamp'];
577
+ // first update database
578
+ $result = $wpdb->query(
579
+ $wpdb->prepare("UPDATE $wpdb->nggpictures SET
580
+ alttext = %s,
581
+ description = %s,
582
+ imagedate = %s
583
+ WHERE pid = %d", $alttext, $description, $timestamp, $image->pid) );
584
+
585
+ if ($result === false)
586
+ return ' <strong>' . $image->filename . ' ' . __('(Error : Couldn\'t not update data base)', 'nggallery') . '</strong>';
587
+
588
+ //this flag will inform us the the import is already one time performed
589
+ $meta['common']['saved'] = true;
590
+ $result = nggdb::update_image_meta($image->pid, $meta['common']);
591
+
592
+ if ($result === false)
593
+ return ' <strong>' . $image->filename . ' ' . __('(Error : Couldn\'t not update meta data)', 'nggallery') . '</strong>';
594
+
595
+ // add the tags if we found some
596
  if ($meta['keywords']) {
597
  $taglist = explode(',', $meta['keywords']);
598
+ wp_set_object_terms($image->pid, $taglist, 'ngg_tag');
599
+ }
600
+
601
+ } else
602
+ return ' <strong>' . $image->filename . ' ' . __('(Error : Couldn\'t not find image)', 'nggallery') . '</strong>';// error check
603
  }
604
 
605
+ return '1';
 
606
  }
607
 
608
  /**
610
  *
611
  * @class nggAdmin
612
  * @require NextGEN Meta class
613
+ * @param int $id image ID
614
  * @return array metadata
615
  */
616
+ function get_MetaData($id) {
617
 
618
  require_once(NGGALLERY_ABSPATH . '/lib/meta.php');
619
 
620
  $meta = array();
621
 
622
+ $pdata = new nggMeta( $id );
623
+
624
  $meta['title'] = $pdata->get_META('title');
625
  $meta['caption'] = $pdata->get_META('caption');
626
  $meta['keywords'] = $pdata->get_META('keywords');
627
+ $meta['timestamp'] = $pdata->get_date_time();
628
+ // this contain other useful meta information
629
+ $meta['common'] = $pdata->get_common_meta();
630
 
631
  return $meta;
632
 
633
  }
634
 
635
+ /**
636
+ * Maybe import some meta data to the database. The functions checks the flag 'saved'
637
+ * and if based on compat reason (pre V1.4.0) we save then some meta datas to the database
638
+ *
639
+ * @since V1.4.0
640
+ * @param int $id
641
+ * @return result
642
+ */
643
+ function maybe_import_meta( $id ) {
644
+
645
+ require_once(NGGALLERY_ABSPATH . '/lib/meta.php');
646
+
647
+ $image = new nggMeta( $id );
648
+
649
+ if ( $image->meta_data['saved'] != true ) {
650
+ //this flag will inform us the the import is already one time performed
651
+ $meta['saved'] = true;
652
+ $result = nggdb::update_image_meta($image->pid, $meta['common']);
653
+ } else
654
+ return false;
655
+
656
+ return $result;
657
+
658
+ }
659
+
660
  /**
661
  * Unzip a file via the PclZip class
662
  *
758
  $filename = $_FILES['zipfile']['name'];
759
 
760
  // check if file is a zip file
761
+ if ( !preg_match('/(zip|download|octet-stream)/i', $_FILES['zipfile']['type']) ) {
762
  @unlink($temp_zipfile); // del temp file
763
  nggGallery::show_error(__('Uploaded file was no or a faulty zip file ! The server recognize : ','nggallery').$_FILES['zipfile']['type']);
764
  return false;
820
  */
821
  function upload_images() {
822
 
823
+ global $nggdb;
824
 
825
  // WPMU action
826
  if (nggAdmin::check_quota())
838
  }
839
 
840
  // get the path to the gallery
841
+ $gallery = $nggdb->find_gallery($galleryID);
842
 
843
+ if ( empty($gallery->path) ){
844
  nggGallery::show_error(__('Failure in database, no gallery path set !','nggallery'));
845
  return;
846
  }
847
+
848
  // read list of images
849
+ $dirlist = nggAdmin::scandir($gallery->abspath);
850
 
851
  $imagefiles = $_FILES['imagefiles'];
852
 
857
  if ($imagefiles['error'][$key] == 0) {
858
 
859
  $temp_file = $imagefiles['tmp_name'][$key];
 
 
 
860
 
861
+ //clean filename and extract extension
862
+ $filepart = nggGallery::fileinfo( $imagefiles['name'][$key] );
863
+ $filename = $filepart['basename'];
864
+
865
  // check for allowed extension and if it's an image file
866
+ $ext = array('jpg', 'png', 'gif');
867
  if ( !in_array($filepart['extension'], $ext) || !@getimagesize($temp_file) ){
868
+ nggGallery::show_error('<strong>' . $imagefiles['name'][$key] . ' </strong>' . __('is no valid image file!','nggallery'));
869
  continue;
870
  }
871
 
872
  // check if this filename already exist in the folder
873
  $i = 0;
874
+ while ( in_array( $filename, $dirlist ) ) {
875
+ $filename = $filepart['filename'] . '_' . $i++ . '.' .$filepart['extension'];
876
  }
877
 
878
+ $dest_file = $gallery->abspath . '/' . $filename;
879
 
880
  //check for folder permission
881
+ if ( !is_writeable($gallery->abspath) ) {
882
+ $message = sprintf(__('Unable to write to directory %s. Is this directory writable by the server?', 'nggallery'), $gallery->abspath);
883
  nggGallery::show_error($message);
884
  return;
885
  }
886
 
887
  // save temp file to gallery
888
+ if ( !@move_uploaded_file($temp_file, $dest_file) ){
889
  nggGallery::show_error(__('Error, the file could not moved to : ','nggallery') . $dest_file);
890
+ nggAdmin::check_safemode( $gallery->abspath );
891
  continue;
892
  }
893
+ if ( !nggAdmin::chmod($dest_file) ) {
894
  nggGallery::show_error(__('Error, the file permissions could not set','nggallery'));
895
  continue;
896
  }
933
 
934
  if ($galleryID == 0) {
935
  @unlink($temp_file);
936
+ return __('No gallery selected !', 'nggallery');
937
  }
938
 
939
  // WPMU action
941
  return '0';
942
 
943
  // Check the upload
944
+ if (!isset($_FILES['Filedata']) || !is_uploaded_file($_FILES['Filedata']['tmp_name']) || $_FILES['Filedata']['error'] != 0)
945
+ return __('Invalid upload. Error Code : ', 'nggallery') . $_FILES['Filedata']['error'];
946
 
947
  // get the filename and extension
948
+ $temp_file = $_FILES['Filedata']['tmp_name'];
949
+
950
+ $filepart = nggGallery::fileinfo( $_FILES['Filedata']['name'] );
951
+ $filename = $filepart['basename'];
 
952
 
953
  // check for allowed extension
954
+ $ext = array('jpg', 'png', 'gif');
955
  if (!in_array($filepart['extension'], $ext))
956
+ return $_FILES[$key]['name'] . __('is no valid image file!', 'nggallery');
957
 
958
  // get the path to the gallery
959
  $gallerypath = $wpdb->get_var("SELECT path FROM $wpdb->nggallery WHERE gid = '$galleryID' ");
960
  if (!$gallerypath){
961
  @unlink($temp_file);
962
+ return __('Failure in database, no gallery path set !', 'nggallery');
963
  }
964
 
965
  // read list of images
966
+ $imageslist = nggAdmin::scandir( WINABSPATH . $gallerypath );
967
 
968
  // check if this filename already exist
969
  $i = 0;
970
  while (in_array($filename,$imageslist)) {
971
+ $filename = $filepart['filename'] . '_' . $i++ . '.' . $filepart['extension'];
972
  }
973
 
974
  $dest_file = WINABSPATH . $gallerypath . '/' . $filename;
1046
  }
1047
 
1048
  /**
1049
+ * Capability check. Check is the ID fit's to the user_ID
1050
  *
1051
  * @class nggAdmin
1052
+ * @param int $check_ID is the user_id
1053
  * @return bool $result
1054
  */
1055
  function can_manage_this_gallery($check_ID) {
1290
 
1291
  global $wpdb;
1292
 
1293
+ $gallery = nggdb::find_gallery( $galleryID );
1294
 
1295
  // in the case no preview image is setup, we do this now
1296
+ if ($gallery->previewpic == 0) {
1297
  $firstImage = $wpdb->get_var("SELECT pid FROM $wpdb->nggpictures WHERE exclude != 1 AND galleryid = '$galleryID' ORDER by pid DESC limit 0,1");
1298
+ if ($firstImage) {
1299
  $wpdb->query("UPDATE $wpdb->nggallery SET previewpic = '$firstImage' WHERE gid = '$galleryID'");
1300
+ wp_cache_delete($galleryID, 'ngg_gallery');
1301
+ }
1302
  }
1303
 
1304
  return;
1305
  }
1306
 
1307
+ /**
1308
+ * Return a JSON coded array of Image ids for a requested gallery
1309
+ *
1310
+ * @param int $galleryID
1311
+ * @return arry (JSON)
1312
+ */
1313
+ function get_image_ids( $galleryID ) {
1314
+
1315
+ if ( !function_exists('json_encode') )
1316
+ return(-2);
1317
+
1318
+ $gallery = nggdb::get_ids_from_gallery($galleryID, 'pid', 'ASC', false);
1319
+
1320
+ header('Content-Type: text/plain; charset=' . get_option('blog_charset'), true);
1321
+ $output = json_encode($gallery);
1322
+
1323
+ return $output;
1324
+ }
1325
+
1326
  } // END class nggAdmin
1327
 
1328
  /**
1337
  return nggAdmin::getOnlyImages($p_event, $p_header);
1338
 
1339
  }
1340
+ ?>
admin/images/select.png ADDED
Binary file
admin/install.php CHANGED
@@ -96,6 +96,7 @@ function nggallery_install () {
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;";
101
 
@@ -147,7 +148,6 @@ function ngg_default_options() {
147
  $ngg_options['thumbwidth'] = 100; // Thumb Width
148
  $ngg_options['thumbheight'] = 75; // Thumb height
149
  $ngg_options['thumbfix'] = true; // Fix the dimension
150
- $ngg_options['thumbcrop'] = false; // Crop square thumbnail
151
  $ngg_options['thumbquality'] = 100; // Thumb Quality
152
 
153
  // Image Settings
@@ -169,6 +169,8 @@ function ngg_default_options() {
169
  $ngg_options['galSortDir'] = 'ASC'; // Sort direction
170
  $ngg_options['galNoPages'] = true; // use no subpages for gallery
171
  $ngg_options['galImgBrowser'] = false; // Show ImageBrowser, instead effect
 
 
172
 
173
  // Thumbnail Effect
174
  $ngg_options['thumbEffect'] = 'shutter'; // select effect
96
  previewpic BIGINT(20) DEFAULT '0' NOT NULL ,
97
  albumdesc MEDIUMTEXT NULL ,
98
  sortorder LONGTEXT NOT NULL,
99
+ pageid BIGINT(20) DEFAULT '0' NOT NULL,
100
  PRIMARY KEY id (id)
101
  ) $charset_collate;";
102
 
148
  $ngg_options['thumbwidth'] = 100; // Thumb Width
149
  $ngg_options['thumbheight'] = 75; // Thumb height
150
  $ngg_options['thumbfix'] = true; // Fix the dimension
 
151
  $ngg_options['thumbquality'] = 100; // Thumb Quality
152
 
153
  // Image Settings
169
  $ngg_options['galSortDir'] = 'ASC'; // Sort direction
170
  $ngg_options['galNoPages'] = true; // use no subpages for gallery
171
  $ngg_options['galImgBrowser'] = false; // Show ImageBrowser, instead effect
172
+ $ngg_options['galHiddenImg'] = false; // For paged galleries we can hide image
173
+ $ngg_options['galAjaxNav'] = false; // AJAX Navigation for Shutter effect
174
 
175
  // Thumbnail Effect
176
  $ngg_options['thumbEffect'] = 'shutter'; // select effect
admin/js/colorpicker/css/colorpicker.css ADDED
@@ -0,0 +1,161 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .colorpicker {
2
+ width: 356px;
3
+ height: 176px;
4
+ overflow: hidden;
5
+ position: absolute;
6
+ background: url(../images/colorpicker_background.png);
7
+ font-family: Arial, Helvetica, sans-serif;
8
+ display: none;
9
+ }
10
+ .colorpicker_color {
11
+ width: 150px;
12
+ height: 150px;
13
+ left: 14px;
14
+ top: 13px;
15
+ position: absolute;
16
+ background: #f00;
17
+ overflow: hidden;
18
+ cursor: crosshair;
19
+ }
20
+ .colorpicker_color div {
21
+ position: absolute;
22
+ top: 0;
23
+ left: 0;
24
+ width: 150px;
25
+ height: 150px;
26
+ background: url(../images/colorpicker_overlay.png);
27
+ }
28
+ .colorpicker_color div div {
29
+ position: absolute;
30
+ top: 0;
31
+ left: 0;
32
+ width: 11px;
33
+ height: 11px;
34
+ overflow: hidden;
35
+ background: url(../images/colorpicker_select.gif);
36
+ margin: -5px 0 0 -5px;
37
+ }
38
+ .colorpicker_hue {
39
+ position: absolute;
40
+ top: 13px;
41
+ left: 171px;
42
+ width: 35px;
43
+ height: 150px;
44
+ cursor: n-resize;
45
+ }
46
+ .colorpicker_hue div {
47
+ position: absolute;
48
+ width: 35px;
49
+ height: 9px;
50
+ overflow: hidden;
51
+ background: url(../images/colorpicker_indic.gif) left top;
52
+ margin: -4px 0 0 0;
53
+ left: 0px;
54
+ }
55
+ .colorpicker_new_color {
56
+ position: absolute;
57
+ width: 60px;
58
+ height: 30px;
59
+ left: 213px;
60
+ top: 13px;
61
+ background: #f00;
62
+ }
63
+ .colorpicker_current_color {
64
+ position: absolute;
65
+ width: 60px;
66
+ height: 30px;
67
+ left: 283px;
68
+ top: 13px;
69
+ background: #f00;
70
+ }
71
+ .colorpicker input {
72
+ background-color: transparent;
73
+ border: 1px solid transparent;
74
+ position: absolute;
75
+ font-size: 10px;
76
+ font-family: Arial, Helvetica, sans-serif;
77
+ color: #898989;
78
+ top: 4px;
79
+ right: 11px;
80
+ text-align: right;
81
+ margin: 0;
82
+ padding: 0;
83
+ height: 13px;
84
+ }
85
+ .colorpicker_hex {
86
+ position: absolute;
87
+ width: 72px;
88
+ height: 22px;
89
+ background: url(../images/colorpicker_hex.png) top;
90
+ left: 212px;
91
+ top: 142px;
92
+ }
93
+ .colorpicker_hex input {
94
+ right: 6px;
95
+ }
96
+ .colorpicker_field {
97
+ height: 22px;
98
+ width: 62px;
99
+ background-position: top;
100
+ position: absolute;
101
+ }
102
+ .colorpicker_field span {
103
+ position: absolute;
104
+ width: 12px;
105
+ height: 22px;
106
+ overflow: hidden;
107
+ top: 0;
108
+ right: 0;
109
+ cursor: n-resize;
110
+ }
111
+ .colorpicker_rgb_r {
112
+ background-image: url(../images/colorpicker_rgb_r.png);
113
+ top: 52px;
114
+ left: 212px;
115
+ }
116
+ .colorpicker_rgb_g {
117
+ background-image: url(../images/colorpicker_rgb_g.png);
118
+ top: 82px;
119
+ left: 212px;
120
+ }
121
+ .colorpicker_rgb_b {
122
+ background-image: url(../images/colorpicker_rgb_b.png);
123
+ top: 112px;
124
+ left: 212px;
125
+ }
126
+ .colorpicker_hsb_h {
127
+ background-image: url(../images/colorpicker_hsb_h.png);
128
+ top: 52px;
129
+ left: 282px;
130
+ }
131
+ .colorpicker_hsb_s {
132
+ background-image: url(../images/colorpicker_hsb_s.png);
133
+ top: 82px;
134
+ left: 282px;
135
+ }
136
+ .colorpicker_hsb_b {
137
+ background-image: url(../images/colorpicker_hsb_b.png);
138
+ top: 112px;
139
+ left: 282px;
140
+ }
141
+ .colorpicker_submit {
142
+ position: absolute;
143
+ width: 22px;
144
+ height: 22px;
145
+ background: url(../images/colorpicker_submit.png) top;
146
+ left: 322px;
147
+ top: 142px;
148
+ overflow: hidden;
149
+ }
150
+ .colorpicker_focus {
151
+ background-position: center;
152
+ }
153
+ .colorpicker_hex.colorpicker_focus {
154
+ background-position: bottom;
155
+ }
156
+ .colorpicker_submit.colorpicker_focus {
157
+ background-position: bottom;
158
+ }
159
+ .colorpicker_slider {
160
+ background-position: bottom;
161
+ }
admin/js/colorpicker/images/blank.gif ADDED
Binary file
admin/js/colorpicker/images/colorpicker_background.png ADDED
Binary file
admin/js/colorpicker/images/colorpicker_hex.png ADDED
Binary file
admin/js/colorpicker/images/colorpicker_hsb_b.png ADDED
Binary file
admin/js/colorpicker/images/colorpicker_hsb_h.png ADDED
Binary file
admin/js/colorpicker/images/colorpicker_hsb_s.png ADDED
Binary file
admin/js/colorpicker/images/colorpicker_indic.gif ADDED
Binary file
admin/js/colorpicker/images/colorpicker_overlay.png ADDED
Binary file
admin/js/colorpicker/images/colorpicker_rgb_b.png ADDED
Binary file
admin/js/colorpicker/images/colorpicker_rgb_g.png ADDED
Binary file
admin/js/colorpicker/images/colorpicker_rgb_r.png ADDED
Binary file
admin/js/colorpicker/images/colorpicker_select.gif ADDED
Binary file
admin/js/colorpicker/images/colorpicker_submit.png ADDED
Binary file
admin/js/colorpicker/images/custom_background.png ADDED
Binary file
admin/js/colorpicker/images/custom_hex.png ADDED
Binary file
admin/js/colorpicker/images/custom_hsb_b.png ADDED
Binary file
admin/js/colorpicker/images/custom_hsb_h.png ADDED
Binary file
admin/js/colorpicker/images/custom_hsb_s.png ADDED
Binary file
admin/js/colorpicker/images/custom_indic.gif ADDED
Binary file
admin/js/colorpicker/images/custom_rgb_b.png ADDED
Binary file
admin/js/colorpicker/images/custom_rgb_g.png ADDED
Binary file
admin/js/colorpicker/images/custom_rgb_r.png ADDED
Binary file
admin/js/colorpicker/images/custom_submit.png ADDED
Binary file
admin/js/colorpicker/images/select.png ADDED
Binary file
admin/js/colorpicker/images/select2.png ADDED
Binary file
admin/js/colorpicker/images/slider.png ADDED
Binary file
admin/js/colorpicker/js/colorpicker.js ADDED
@@ -0,0 +1,484 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ *
3
+ * Color picker
4
+ * Author: Stefan Petre www.eyecon.ro
5
+ *
6
+ * Dual licensed under the MIT and GPL licenses
7
+ *
8
+ */
9
+ (function ($) {
10
+ var ColorPicker = function () {
11
+ var
12
+ ids = {},
13
+ inAction,
14
+ charMin = 65,
15
+ visible,
16
+ tpl = '<div class="colorpicker"><div class="colorpicker_color"><div><div></div></div></div><div class="colorpicker_hue"><div></div></div><div class="colorpicker_new_color"></div><div class="colorpicker_current_color"></div><div class="colorpicker_hex"><input type="text" maxlength="6" size="6" /></div><div class="colorpicker_rgb_r colorpicker_field"><input type="text" maxlength="3" size="3" /><span></span></div><div class="colorpicker_rgb_g colorpicker_field"><input type="text" maxlength="3" size="3" /><span></span></div><div class="colorpicker_rgb_b colorpicker_field"><input type="text" maxlength="3" size="3" /><span></span></div><div class="colorpicker_hsb_h colorpicker_field"><input type="text" maxlength="3" size="3" /><span></span></div><div class="colorpicker_hsb_s colorpicker_field"><input type="text" maxlength="3" size="3" /><span></span></div><div class="colorpicker_hsb_b colorpicker_field"><input type="text" maxlength="3" size="3" /><span></span></div><div class="colorpicker_submit"></div></div>',
17
+ defaults = {
18
+ eventName: 'click',
19
+ onShow: function () {},
20
+ onBeforeShow: function(){},
21
+ onHide: function () {},
22
+ onChange: function () {},
23
+ onSubmit: function () {},
24
+ color: 'ff0000',
25
+ livePreview: true,
26
+ flat: false
27
+ },
28
+ fillRGBFields = function (hsb, cal) {
29
+ var rgb = HSBToRGB(hsb);
30
+ $(cal).data('colorpicker').fields
31
+ .eq(1).val(rgb.r).end()
32
+ .eq(2).val(rgb.g).end()
33
+ .eq(3).val(rgb.b).end();
34
+ },
35
+ fillHSBFields = function (hsb, cal) {
36
+ $(cal).data('colorpicker').fields
37
+ .eq(4).val(hsb.h).end()
38
+ .eq(5).val(hsb.s).end()
39
+ .eq(6).val(hsb.b).end();
40
+ },
41
+ fillHexFields = function (hsb, cal) {
42
+ $(cal).data('colorpicker').fields
43
+ .eq(0).val(HSBToHex(hsb)).end();
44
+ },
45
+ setSelector = function (hsb, cal) {
46
+ $(cal).data('colorpicker').selector.css('backgroundColor', '#' + HSBToHex({h: hsb.h, s: 100, b: 100}));
47
+ $(cal).data('colorpicker').selectorIndic.css({
48
+ left: parseInt(150 * hsb.s/100, 10),
49
+ top: parseInt(150 * (100-hsb.b)/100, 10)
50
+ });
51
+ },
52
+ setHue = function (hsb, cal) {
53
+ $(cal).data('colorpicker').hue.css('top', parseInt(150 - 150 * hsb.h/360, 10));
54
+ },
55
+ setCurrentColor = function (hsb, cal) {
56
+ $(cal).data('colorpicker').currentColor.css('backgroundColor', '#' + HSBToHex(hsb));
57
+ },
58
+ setNewColor = function (hsb, cal) {
59
+ $(cal).data('colorpicker').newColor.css('backgroundColor', '#' + HSBToHex(hsb));
60
+ },
61
+ keyDown = function (ev) {
62
+ var pressedKey = ev.charCode || ev.keyCode || -1;
63
+ if ((pressedKey > charMin && pressedKey <= 90) || pressedKey == 32) {
64
+ return false;
65
+ }
66
+ var cal = $(this).parent().parent();
67
+ if (cal.data('colorpicker').livePreview === true) {
68
+ change.apply(this);
69
+ }
70
+ },
71
+ change = function (ev) {
72
+ var cal = $(this).parent().parent(), col;
73
+ if (this.parentNode.className.indexOf('_hex') > 0) {
74
+ cal.data('colorpicker').color = col = HexToHSB(fixHex(this.value));
75
+ } else if (this.parentNode.className.indexOf('_hsb') > 0) {
76
+ cal.data('colorpicker').color = col = fixHSB({
77
+ h: parseInt(cal.data('colorpicker').fields.eq(4).val(), 10),
78
+ s: parseInt(cal.data('colorpicker').fields.eq(5).val(), 10),
79
+ b: parseInt(cal.data('colorpicker').fields.eq(6).val(), 10)
80
+ });
81
+ } else {
82
+ cal.data('colorpicker').color = col = RGBToHSB(fixRGB({
83
+ r: parseInt(cal.data('colorpicker').fields.eq(1).val(), 10),
84
+ g: parseInt(cal.data('colorpicker').fields.eq(2).val(), 10),
85
+ b: parseInt(cal.data('colorpicker').fields.eq(3).val(), 10)
86
+ }));
87
+ }
88
+ if (ev) {
89
+ fillRGBFields(col, cal.get(0));
90
+ fillHexFields(col, cal.get(0));
91
+ fillHSBFields(col, cal.get(0));
92
+ }
93
+ setSelector(col, cal.get(0));
94
+ setHue(col, cal.get(0));
95
+ setNewColor(col, cal.get(0));
96
+ cal.data('colorpicker').onChange.apply(cal, [col, HSBToHex(col), HSBToRGB(col)]);
97
+ },
98
+ blur = function (ev) {
99
+ var cal = $(this).parent().parent();
100
+ cal.data('colorpicker').fields.parent().removeClass('colorpicker_focus');
101
+ },
102
+ focus = function () {
103
+ charMin = this.parentNode.className.indexOf('_hex') > 0 ? 70 : 65;
104
+ $(this).parent().parent().data('colorpicker').fields.parent().removeClass('colorpicker_focus');
105
+ $(this).parent().addClass('colorpicker_focus');
106
+ },
107
+ downIncrement = function (ev) {
108
+ var field = $(this).parent().find('input').focus();
109
+ var current = {
110
+ el: $(this).parent().addClass('colorpicker_slider'),
111
+ max: this.parentNode.className.indexOf('_hsb_h') > 0 ? 360 : (this.parentNode.className.indexOf('_hsb') > 0 ? 100 : 255),
112
+ y: ev.pageY,
113
+ field: field,
114
+ val: parseInt(field.val(), 10),
115
+ preview: $(this).parent().parent().data('colorpicker').livePreview
116
+ };
117
+ $(document).bind('mouseup', current, upIncrement);
118
+ $(document).bind('mousemove', current, moveIncrement);
119
+ },
120
+ moveIncrement = function (ev) {
121
+ ev.data.field.val(Math.max(0, Math.min(ev.data.max, parseInt(ev.data.val + ev.pageY - ev.data.y, 10))));
122
+ if (ev.data.preview) {
123
+ change.apply(ev.data.field.get(0), [true]);
124
+ }
125
+ return false;
126
+ },
127
+ upIncrement = function (ev) {
128
+ change.apply(ev.data.field.get(0), [true]);
129
+ ev.data.el.removeClass('colorpicker_slider').find('input').focus();
130
+ $(document).unbind('mouseup', upIncrement);
131
+ $(document).unbind('mousemove', moveIncrement);
132
+ return false;
133
+ },
134
+ downHue = function (ev) {
135
+ var current = {
136
+ cal: $(this).parent(),
137
+ y: $(this).offset().top
138
+ };
139
+ current.preview = current.cal.data('colorpicker').livePreview;
140
+ $(document).bind('mouseup', current, upHue);
141
+ $(document).bind('mousemove', current, moveHue);
142
+ },
143
+ moveHue = function (ev) {
144
+ change.apply(
145
+ ev.data.cal.data('colorpicker')
146
+ .fields
147
+ .eq(4)
148
+ .val(parseInt(360*(150 - Math.max(0,Math.min(150,(ev.pageY - ev.data.y))))/150, 10))
149
+ .get(0),
150
+ [ev.data.preview]
151
+ );
152
+ return false;
153
+ },
154
+ upHue = function (ev) {
155
+ fillRGBFields(ev.data.cal.data('colorpicker').color, ev.data.cal.get(0));
156
+ fillHexFields(ev.data.cal.data('colorpicker').color, ev.data.cal.get(0));
157
+ $(document).unbind('mouseup', upHue);
158
+ $(document).unbind('mousemove', moveHue);
159
+ return false;
160
+ },
161
+ downSelector = function (ev) {
162
+ var current = {
163
+ cal: $(this).parent(),
164
+ pos: $(this).offset()
165
+ };
166
+ current.preview = current.cal.data('colorpicker').livePreview;
167
+ $(document).bind('mouseup', current, upSelector);
168
+ $(document).bind('mousemove', current, moveSelector);
169
+ },
170
+ moveSelector = function (ev) {
171
+ change.apply(
172
+ ev.data.cal.data('colorpicker')
173
+ .fields
174
+ .eq(6)
175
+ .val(parseInt(100*(150 - Math.max(0,Math.min(150,(ev.pageY - ev.data.pos.top))))/150, 10))
176
+ .end()
177
+ .eq(5)
178
+ .val(parseInt(100*(Math.max(0,Math.min(150,(ev.pageX - ev.data.pos.left))))/150, 10))
179
+ .get(0),
180
+ [ev.data.preview]
181
+ );
182
+ return false;
183
+ },
184
+ upSelector = function (ev) {
185
+ fillRGBFields(ev.data.cal.data('colorpicker').color, ev.data.cal.get(0));
186
+ fillHexFields(ev.data.cal.data('colorpicker').color, ev.data.cal.get(0));
187
+ $(document).unbind('mouseup', upSelector);
188
+ $(document).unbind('mousemove', moveSelector);
189
+ return false;
190
+ },
191
+ enterSubmit = function (ev) {
192
+ $(this).addClass('colorpicker_focus');
193
+ },
194
+ leaveSubmit = function (ev) {
195
+ $(this).removeClass('colorpicker_focus');
196
+ },
197
+ clickSubmit = function (ev) {
198
+ var cal = $(this).parent();
199
+ var col = cal.data('colorpicker').color;
200
+ cal.data('colorpicker').origColor = col;
201
+ setCurrentColor(col, cal.get(0));
202
+ cal.data('colorpicker').onSubmit(col, HSBToHex(col), HSBToRGB(col), cal.data('colorpicker').el);
203
+ },
204
+ show = function (ev) {
205
+ var cal = $('#' + $(this).data('colorpickerId'));
206
+ cal.data('colorpicker').onBeforeShow.apply(this, [cal.get(0)]);
207
+ var pos = $(this).offset();
208
+ var viewPort = getViewport();
209
+ var top = pos.top + this.offsetHeight;
210
+ var left = pos.left;
211
+ if (top + 176 > viewPort.t + viewPort.h) {
212
+ top -= this.offsetHeight + 176;
213
+ }
214
+ if (left + 356 > viewPort.l + viewPort.w) {
215
+ left -= 356;
216
+ }
217
+ cal.css({left: left + 'px', top: top + 'px'});
218
+ if (cal.data('colorpicker').onShow.apply(this, [cal.get(0)]) != false) {
219
+ cal.show();
220
+ }
221
+ $(document).bind('mousedown', {cal: cal}, hide);
222
+ return false;
223
+ },
224
+ hide = function (ev) {
225
+ if (!isChildOf(ev.data.cal.get(0), ev.target, ev.data.cal.get(0))) {
226
+ if (ev.data.cal.data('colorpicker').onHide.apply(this, [ev.data.cal.get(0)]) != false) {
227
+ ev.data.cal.hide();
228
+ }
229
+ $(document).unbind('mousedown', hide);
230
+ }
231
+ },
232
+ isChildOf = function(parentEl, el, container) {
233
+ if (parentEl == el) {
234
+ return true;
235
+ }
236
+ if (parentEl.contains) {
237
+ return parentEl.contains(el);
238
+ }
239
+ if ( parentEl.compareDocumentPosition ) {
240
+ return !!(parentEl.compareDocumentPosition(el) & 16);
241
+ }
242
+ var prEl = el.parentNode;
243
+ while(prEl && prEl != container) {
244
+ if (prEl == parentEl)
245
+ return true;
246
+ prEl = prEl.parentNode;
247
+ }
248
+ return false;
249
+ },
250
+ getViewport = function () {
251
+ var m = document.compatMode == 'CSS1Compat';
252
+ return {
253
+ l : window.pageXOffset || (m ? document.documentElement.scrollLeft : document.body.scrollLeft),
254
+ t : window.pageYOffset || (m ? document.documentElement.scrollTop : document.body.scrollTop),
255
+ w : window.innerWidth || (m ? document.documentElement.clientWidth : document.body.clientWidth),
256
+ h : window.innerHeight || (m ? document.documentElement.clientHeight : document.body.clientHeight)
257
+ };
258
+ },
259
+ fixHSB = function (hsb) {
260
+ return {
261
+ h: Math.min(360, Math.max(0, hsb.h)),
262
+ s: Math.min(100, Math.max(0, hsb.s)),
263
+ b: Math.min(100, Math.max(0, hsb.b))
264
+ };
265
+ },
266
+ fixRGB = function (rgb) {
267
+ return {
268
+ r: Math.min(255, Math.max(0, rgb.r)),
269
+ g: Math.min(255, Math.max(0, rgb.g)),
270
+ b: Math.min(255, Math.max(0, rgb.b))
271
+ };
272
+ },
273
+ fixHex = function (hex) {
274
+ var len = 6 - hex.length;
275
+ if (len > 0) {
276
+ var o = [];
277
+ for (var i=0; i<len; i++) {
278
+ o.push('0');
279
+ }
280
+ o.push(hex);
281
+ hex = o.join('');
282
+ }
283
+ return hex;
284
+ },
285
+ HexToRGB = function (hex) {
286
+ var hex = parseInt(((hex.indexOf('#') > -1) ? hex.substring(1) : hex), 16);
287
+ return {r: hex >> 16, g: (hex & 0x00FF00) >> 8, b: (hex & 0x0000FF)};
288
+ },
289
+ HexToHSB = function (hex) {
290
+ return RGBToHSB(HexToRGB(hex));
291
+ },
292
+ RGBToHSB = function (rgb) {
293
+ var hsb = {
294
+ h: 0,
295
+ s: 0,
296
+ b: 0
297
+ };
298
+ var min = Math.min(rgb.r, rgb.g, rgb.b);
299
+ var max = Math.max(rgb.r, rgb.g, rgb.b);
300
+ var delta = max - min;
301
+ hsb.b = max;
302
+ if (max != 0) {
303
+
304
+ }
305
+ hsb.s = max != 0 ? 255 * delta / max : 0;
306
+ if (hsb.s != 0) {
307
+ if (rgb.r == max) {
308
+ hsb.h = (rgb.g - rgb.b) / delta;
309
+ } else if (rgb.g == max) {
310
+ hsb.h = 2 + (rgb.b - rgb.r) / delta;
311
+ } else {
312
+ hsb.h = 4 + (rgb.r - rgb.g) / delta;
313
+ }
314
+ } else {
315
+ hsb.h = -1;
316
+ }
317
+ hsb.h *= 60;
318
+ if (hsb.h < 0) {
319
+ hsb.h += 360;
320
+ }
321
+ hsb.s *= 100/255;
322
+ hsb.b *= 100/255;
323
+ return hsb;
324
+ },
325
+ HSBToRGB = function (hsb) {
326
+ var rgb = {};
327
+ var h = Math.round(hsb.h);
328
+ var s = Math.round(hsb.s*255/100);
329
+ var v = Math.round(hsb.b*255/100);
330
+ if(s == 0) {
331
+ rgb.r = rgb.g = rgb.b = v;
332
+ } else {
333
+ var t1 = v;
334
+ var t2 = (255-s)*v/255;
335
+ var t3 = (t1-t2)*(h%60)/60;
336
+ if(h==360) h = 0;
337
+ if(h<60) {rgb.r=t1; rgb.b=t2; rgb.g=t2+t3}
338
+ else if(h<120) {rgb.g=t1; rgb.b=t2; rgb.r=t1-t3}
339
+ else if(h<180) {rgb.g=t1; rgb.r=t2; rgb.b=t2+t3}
340
+ else if(h<240) {rgb.b=t1; rgb.r=t2; rgb.g=t1-t3}
341
+ else if(h<300) {rgb.b=t1; rgb.g=t2; rgb.r=t2+t3}
342
+ else if(h<360) {rgb.r=t1; rgb.g=t2; rgb.b=t1-t3}
343
+ else {rgb.r=0; rgb.g=0; rgb.b=0}
344
+ }
345
+ return {r:Math.round(rgb.r), g:Math.round(rgb.g), b:Math.round(rgb.b)};
346
+ },
347
+ RGBToHex = function (rgb) {
348
+ var hex = [
349
+ rgb.r.toString(16),
350
+ rgb.g.toString(16),
351
+ rgb.b.toString(16)
352
+ ];
353
+ $.each(hex, function (nr, val) {
354
+ if (val.length == 1) {
355
+ hex[nr] = '0' + val;
356
+ }
357
+ });
358
+ return hex.join('');
359
+ },
360
+ HSBToHex = function (hsb) {
361
+ return RGBToHex(HSBToRGB(hsb));
362
+ },
363
+ restoreOriginal = function () {
364
+ var cal = $(this).parent();
365
+ var col = cal.data('colorpicker').origColor;
366
+ cal.data('colorpicker').color = col;
367
+ fillRGBFields(col, cal.get(0));
368
+ fillHexFields(col, cal.get(0));
369
+ fillHSBFields(col, cal.get(0));
370
+ setSelector(col, cal.get(0));
371
+ setHue(col, cal.get(0));
372
+ setNewColor(col, cal.get(0));
373
+ };
374
+ return {
375
+ init: function (opt) {
376
+ opt = $.extend({}, defaults, opt||{});
377
+ if (typeof opt.color == 'string') {
378
+ opt.color = HexToHSB(opt.color);
379
+ } else if (opt.color.r != undefined && opt.color.g != undefined && opt.color.b != undefined) {
380
+ opt.color = RGBToHSB(opt.color);
381
+ } else if (opt.color.h != undefined && opt.color.s != undefined && opt.color.b != undefined) {
382
+ opt.color = fixHSB(opt.color);
383
+ } else {
384
+ return this;
385
+ }
386
+ return this.each(function () {
387
+ if (!$(this).data('colorpickerId')) {
388
+ var options = $.extend({}, opt);
389
+ options.origColor = opt.color;
390
+ var id = 'collorpicker_' + parseInt(Math.random() * 1000);
391
+ $(this).data('colorpickerId', id);
392
+ var cal = $(tpl).attr('id', id);
393
+ if (options.flat) {
394
+ cal.appendTo(this).show();
395
+ } else {
396
+ cal.appendTo(document.body);
397
+ }
398
+ options.fields = cal
399
+ .find('input')
400
+ .bind('keyup', keyDown)
401
+ .bind('change', change)
402
+ .bind('blur', blur)
403
+ .bind('focus', focus);
404
+ cal
405
+ .find('span').bind('mousedown', downIncrement).end()
406
+ .find('>div.colorpicker_current_color').bind('click', restoreOriginal);
407
+ options.selector = cal.find('div.colorpicker_color').bind('mousedown', downSelector);
408
+ options.selectorIndic = options.selector.find('div div');
409
+ options.el = this;
410
+ options.hue = cal.find('div.colorpicker_hue div');
411
+ cal.find('div.colorpicker_hue').bind('mousedown', downHue);
412
+ options.newColor = cal.find('div.colorpicker_new_color');
413
+ options.currentColor = cal.find('div.colorpicker_current_color');
414
+ cal.data('colorpicker', options);
415
+ cal.find('div.colorpicker_submit')
416
+ .bind('mouseenter', enterSubmit)
417
+ .bind('mouseleave', leaveSubmit)
418
+ .bind('click', clickSubmit);
419
+ fillRGBFields(options.color, cal.get(0));
420
+ fillHSBFields(options.color, cal.get(0));
421
+ fillHexFields(options.color, cal.get(0));
422
+ setHue(options.color, cal.get(0));
423
+ setSelector(options.color, cal.get(0));
424
+ setCurrentColor(options.color, cal.get(0));
425
+ setNewColor(options.color, cal.get(0));
426
+ if (options.flat) {
427
+ cal.css({
428
+ position: 'relative',
429
+ display: 'block'
430
+ });
431
+ } else {
432
+ $(this).bind(options.eventName, show);
433
+ }
434
+ }
435
+ });
436
+ },
437
+ showPicker: function() {
438
+ return this.each( function () {
439
+ if ($(this).data('colorpickerId')) {
440
+ show.apply(this);
441
+ }
442
+ });
443
+ },
444
+ hidePicker: function() {
445
+ return this.each( function () {
446
+ if ($(this).data('colorpickerId')) {
447
+ $('#' + $(this).data('colorpickerId')).hide();
448
+ }
449
+ });
450
+ },
451
+ setColor: function(col) {
452
+ if (typeof col == 'string') {
453
+ col = HexToHSB(col);
454
+ } else if (col.r != undefined && col.g != undefined && col.b != undefined) {
455
+ col = RGBToHSB(col);
456
+ } else if (col.h != undefined && col.s != undefined && col.b != undefined) {
457
+ col = fixHSB(col);
458
+ } else {
459
+ return this;
460
+ }
461
+ return this.each(function(){
462
+ if ($(this).data('colorpickerId')) {
463
+ var cal = $('#' + $(this).data('colorpickerId'));
464
+ cal.data('colorpicker').color = col;
465
+ cal.data('colorpicker').origColor = col;
466
+ fillRGBFields(col, cal.get(0));
467
+ fillHSBFields(col, cal.get(0));
468
+ fillHexFields(col, cal.get(0));
469
+ setHue(col, cal.get(0));
470
+ setSelector(col, cal.get(0));
471
+ setCurrentColor(col, cal.get(0));
472
+ setNewColor(col, cal.get(0));
473
+ }
474
+ });
475
+ }
476
+ };
477
+ }();
478
+ $.fn.extend({
479
+ ColorPicker: ColorPicker.init,
480
+ ColorPickerHide: ColorPicker.hidePicker,
481
+ ColorPickerShow: ColorPicker.showPicker,
482
+ ColorPickerSetColor: ColorPicker.setColor
483
+ });
484
+ })(jQuery)
admin/js/ngg.ajax.js CHANGED
@@ -1,6 +1,6 @@
1
  /*
2
  * Ajax Plugin for NextGEN gallery
3
- * Version: 1.0.0
4
  * Author : Alex Rabe
5
  */
6
  (function($) {
@@ -27,14 +27,14 @@ nggAjax = {
27
  cache: false,
28
  timeout: 10000,
29
  success: function(msg){
30
- switch (msg) {
31
- case "-1":
32
  nggProgressBar.addNote( nggAjax.settings.permission );
33
  break;
34
- case "0":
35
  nggProgressBar.addNote( nggAjax.settings.error );
36
  break;
37
- case "1":
38
  // show nothing, its better
39
  break;
40
  default:
@@ -45,7 +45,7 @@ nggAjax = {
45
 
46
  },
47
  error: function (msg) {
48
- nggProgressBar.addNote( "<strong>ID " + nggAjax.settings.ids[index] + ":</strong> " + nggAjax.settings.failure, msg );
49
  },
50
  complete: function () {
51
  index++;
@@ -58,16 +58,60 @@ nggAjax = {
58
  }
59
  });
60
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
61
 
62
  init: function( s ) {
63
 
64
- var index = 0;
65
-
66
  // get the settings
67
  this.settings = $.extend( {}, this.settings, {}, s || {} );
68
-
69
- // start the ajax process
70
- this.run( index );
 
 
 
 
 
 
 
 
 
71
  }
72
  }
73
  }(jQuery));
1
  /*
2
  * Ajax Plugin for NextGEN gallery
3
+ * Version: 1.4.0
4
  * Author : Alex Rabe
5
  */
6
  (function($) {
27
  cache: false,
28
  timeout: 10000,
29
  success: function(msg){
30
+ switch ( parseInt(msg) ) {
31
+ case -1:
32
  nggProgressBar.addNote( nggAjax.settings.permission );
33
  break;
34
+ case 0:
35
  nggProgressBar.addNote( nggAjax.settings.error );
36
  break;
37
+ case 1:
38
  // show nothing, its better
39
  break;
40
  default:
45
 
46
  },
47
  error: function (msg) {
48
+ nggProgressBar.addNote( "<strong>ID " + nggAjax.settings.ids[index] + ":</strong> " + nggAjax.settings.failure, msg.responseText );
49
  },
50
  complete: function () {
51
  index++;
58
  }
59
  });
60
  },
61
+
62
+ readIDs: function( index ) {
63
+ s = this.settings;
64
+ var req = $.ajax({
65
+ type: "POST",
66
+ url: s.url,
67
+ data:"action=" + s.action + "&operation=" + s.operation + "&_wpnonce=" + s.nonce + "&image=" + s.ids[index],
68
+ dataType: "json",
69
+ cache: false,
70
+ timeout: 10000,
71
+ success: function(msg){
72
+ // join the array
73
+ imageIDS = imageIDS.concat(msg);
74
+ },
75
+ error: function (msg) {
76
+ nggProgressBar.addNote( "<strong>ID " + nggAjax.settings.ids[index] + ":</strong> " + nggAjax.settings.failure, msg.responseText );
77
+ },
78
+ complete: function () {
79
+ index++;
80
+ nggProgressBar.increase( index );
81
+ // parse the whole array
82
+ if (index < nggAjax.settings.ids.length)
83
+ nggAjax.readIDs( index );
84
+ else {
85
+ // and now run the image operation
86
+ index = 0;
87
+ nggAjax.settings.ids = imageIDS;
88
+ nggAjax.settings.operation = nextOperation;
89
+ nggAjax.settings.maxStep = imageIDS.length;
90
+ nggProgressBar.init( nggAjax.settings );
91
+ nggAjax.run( index );
92
+ }
93
+ }
94
+ });
95
+ },
96
 
97
  init: function( s ) {
98
 
99
+ var index = 0;
100
+
101
  // get the settings
102
  this.settings = $.extend( {}, this.settings, {}, s || {} );
103
+
104
+ // a gallery operation need first all image ids via ajax
105
+ if ( this.settings.operation.substring(0, 8) == 'gallery_' ) {
106
+ nextOperation = this.settings.operation.substring(8);
107
+ //first run, get all the ids
108
+ this.settings.operation = 'get_image_ids';
109
+ imageIDS = new Array();
110
+ this.readIDs( index );
111
+ } else {
112
+ // start the ajax process
113
+ this.run( index );
114
+ }
115
  }
116
  }
117
  }(jQuery));
admin/js/ngg.progressbar.js CHANGED
@@ -69,7 +69,9 @@
69
  jQuery('.nggform').submit();
70
  });
71
  } else {
72
- div.hide("slow");
 
 
73
  jQuery('.nggform').prepend("<input type=\"hidden\" name=\"ajax_callback\" value=\"1\">");
74
  jQuery('.nggform').submit();
75
  }
69
  jQuery('.nggform').submit();
70
  });
71
  } else {
72
+ //div.hide("slow");
73
+ jQuery("#" + s.id).hide("slow");
74
+ jQuery("#" + s.id + "_container h2").hide("slow");
75
  jQuery('.nggform').prepend("<input type=\"hidden\" name=\"ajax_callback\" value=\"1\">");
76
  jQuery('.nggform').submit();
77
  }
admin/js/swfobject.js CHANGED
@@ -1,5 +1,4 @@
1
- /* SWFObject v2.1 <http://code.google.com/p/swfobject/>
2
- Copyright (c) 2007-2008 Geoff Stearns, Michael Williams, and Bobby van der Sluis
3
- This software is released under the MIT License <http://www.opensource.org/licenses/mit-license.php>
4
  */
5
- var swfobject=function(){var b="undefined",Q="object",n="Shockwave Flash",p="ShockwaveFlash.ShockwaveFlash",P="application/x-shockwave-flash",m="SWFObjectExprInst",j=window,K=document,T=navigator,o=[],N=[],i=[],d=[],J,Z=null,M=null,l=null,e=false,A=false;var h=function(){var v=typeof K.getElementById!=b&&typeof K.getElementsByTagName!=b&&typeof K.createElement!=b,AC=[0,0,0],x=null;if(typeof T.plugins!=b&&typeof T.plugins[n]==Q){x=T.plugins[n].description;if(x&&!(typeof T.mimeTypes!=b&&T.mimeTypes[P]&&!T.mimeTypes[P].enabledPlugin)){x=x.replace(/^.*\s+(\S+\s+\S+$)/,"$1");AC[0]=parseInt(x.replace(/^(.*)\..*$/,"$1"),10);AC[1]=parseInt(x.replace(/^.*\.(.*)\s.*$/,"$1"),10);AC[2]=/r/.test(x)?parseInt(x.replace(/^.*r(.*)$/,"$1"),10):0}}else{if(typeof j.ActiveXObject!=b){var y=null,AB=false;try{y=new ActiveXObject(p+".7")}catch(t){try{y=new ActiveXObject(p+".6");AC=[6,0,21];y.AllowScriptAccess="always"}catch(t){if(AC[0]==6){AB=true}}if(!AB){try{y=new ActiveXObject(p)}catch(t){}}}if(!AB&&y){try{x=y.GetVariable("$version");if(x){x=x.split(" ")[1].split(",");AC=[parseInt(x[0],10),parseInt(x[1],10),parseInt(x[2],10)]}}catch(t){}}}}var AD=T.userAgent.toLowerCase(),r=T.platform.toLowerCase(),AA=/webkit/.test(AD)?parseFloat(AD.replace(/^.*webkit\/(\d+(\.\d+)?).*$/,"$1")):false,q=false,z=r?/win/.test(r):/win/.test(AD),w=r?/mac/.test(r):/mac/.test(AD);/*@cc_on q=true;@if(@_win32)z=true;@elif(@_mac)w=true;@end@*/return{w3cdom:v,pv:AC,webkit:AA,ie:q,win:z,mac:w}}();var L=function(){if(!h.w3cdom){return }f(H);if(h.ie&&h.win){try{K.write("<script id=__ie_ondomload defer=true src=//:><\/script>");J=C("__ie_ondomload");if(J){I(J,"onreadystatechange",S)}}catch(q){}}if(h.webkit&&typeof K.readyState!=b){Z=setInterval(function(){if(/loaded|complete/.test(K.readyState)){E()}},10)}if(typeof K.addEventListener!=b){K.addEventListener("DOMContentLoaded",E,null)}R(E)}();function S(){if(J.readyState=="complete"){J.parentNode.removeChild(J);E()}}function E(){if(e){return }if(h.ie&&h.win){var v=a("span");try{var u=K.getElementsByTagName("body")[0].appendChild(v);u.parentNode.removeChild(u)}catch(w){return }}e=true;if(Z){clearInterval(Z);Z=null}var q=o.length;for(var r=0;r<q;r++){o[r]()}}function f(q){if(e){q()}else{o[o.length]=q}}function R(r){if(typeof j.addEventListener!=b){j.addEventListener("load",r,false)}else{if(typeof K.addEventListener!=b){K.addEventListener("load",r,false)}else{if(typeof j.attachEvent!=b){I(j,"onload",r)}else{if(typeof j.onload=="function"){var q=j.onload;j.onload=function(){q();r()}}else{j.onload=r}}}}}function H(){var t=N.length;for(var q=0;q<t;q++){var u=N[q].id;if(h.pv[0]>0){var r=C(u);if(r){N[q].width=r.getAttribute("width")?r.getAttribute("width"):"0";N[q].height=r.getAttribute("height")?r.getAttribute("height"):"0";if(c(N[q].swfVersion)){if(h.webkit&&h.webkit<312){Y(r)}W(u,true)}else{if(N[q].expressInstall&&!A&&c("6.0.65")&&(h.win||h.mac)){k(N[q])}else{O(r)}}}}else{W(u,true)}}}function Y(t){var q=t.getElementsByTagName(Q)[0];if(q){var w=a("embed"),y=q.attributes;if(y){var v=y.length;for(var u=0;u<v;u++){if(y[u].nodeName=="DATA"){w.setAttribute("src",y[u].nodeValue)}else{w.setAttribute(y[u].nodeName,y[u].nodeValue)}}}var x=q.childNodes;if(x){var z=x.length;for(var r=0;r<z;r++){if(x[r].nodeType==1&&x[r].nodeName=="PARAM"){w.setAttribute(x[r].getAttribute("name"),x[r].getAttribute("value"))}}}t.parentNode.replaceChild(w,t)}}function k(w){A=true;var u=C(w.id);if(u){if(w.altContentId){var y=C(w.altContentId);if(y){M=y;l=w.altContentId}}else{M=G(u)}if(!(/%$/.test(w.width))&&parseInt(w.width,10)<310){w.width="310"}if(!(/%$/.test(w.height))&&parseInt(w.height,10)<137){w.height="137"}K.title=K.title.slice(0,47)+" - Flash Player Installation";var z=h.ie&&h.win?"ActiveX":"PlugIn",q=K.title,r="MMredirectURL="+j.location+"&MMplayerType="+z+"&MMdoctitle="+q,x=w.id;if(h.ie&&h.win&&u.readyState!=4){var t=a("div");x+="SWFObjectNew";t.setAttribute("id",x);u.parentNode.insertBefore(t,u);u.style.display="none";var v=function(){u.parentNode.removeChild(u)};I(j,"onload",v)}U({data:w.expressInstall,id:m,width:w.width,height:w.height},{flashvars:r},x)}}function O(t){if(h.ie&&h.win&&t.readyState!=4){var r=a("div");t.parentNode.insertBefore(r,t);r.parentNode.replaceChild(G(t),r);t.style.display="none";var q=function(){t.parentNode.removeChild(t)};I(j,"onload",q)}else{t.parentNode.replaceChild(G(t),t)}}function G(v){var u=a("div");if(h.win&&h.ie){u.innerHTML=v.innerHTML}else{var r=v.getElementsByTagName(Q)[0];if(r){var w=r.childNodes;if(w){var q=w.length;for(var t=0;t<q;t++){if(!(w[t].nodeType==1&&w[t].nodeName=="PARAM")&&!(w[t].nodeType==8)){u.appendChild(w[t].cloneNode(true))}}}}}return u}function U(AG,AE,t){var q,v=C(t);if(v){if(typeof AG.id==b){AG.id=t}if(h.ie&&h.win){var AF="";for(var AB in AG){if(AG[AB]!=Object.prototype[AB]){if(AB.toLowerCase()=="data"){AE.movie=AG[AB]}else{if(AB.toLowerCase()=="styleclass"){AF+=' class="'+AG[AB]+'"'}else{if(AB.toLowerCase()!="classid"){AF+=" "+AB+'="'+AG[AB]+'"'}}}}}var AD="";for(var AA in AE){if(AE[AA]!=Object.prototype[AA]){AD+='<param name="'+AA+'" value="'+AE[AA]+'" />'}}v.outerHTML='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"'+AF+">"+AD+"</object>";i[i.length]=AG.id;q=C(AG.id)}else{if(h.webkit&&h.webkit<312){var AC=a("embed");AC.setAttribute("type",P);for(var z in AG){if(AG[z]!=Object.prototype[z]){if(z.toLowerCase()=="data"){AC.setAttribute("src",AG[z])}else{if(z.toLowerCase()=="styleclass"){AC.setAttribute("class",AG[z])}else{if(z.toLowerCase()!="classid"){AC.setAttribute(z,AG[z])}}}}}for(var y in AE){if(AE[y]!=Object.prototype[y]){if(y.toLowerCase()!="movie"){AC.setAttribute(y,AE[y])}}}v.parentNode.replaceChild(AC,v);q=AC}else{var u=a(Q);u.setAttribute("type",P);for(var x in AG){if(AG[x]!=Object.prototype[x]){if(x.toLowerCase()=="styleclass"){u.setAttribute("class",AG[x])}else{if(x.toLowerCase()!="classid"){u.setAttribute(x,AG[x])}}}}for(var w in AE){if(AE[w]!=Object.prototype[w]&&w.toLowerCase()!="movie"){F(u,w,AE[w])}}v.parentNode.replaceChild(u,v);q=u}}}return q}function F(t,q,r){var u=a("param");u.setAttribute("name",q);u.setAttribute("value",r);t.appendChild(u)}function X(r){var q=C(r);if(q&&(q.nodeName=="OBJECT"||q.nodeName=="EMBED")){if(h.ie&&h.win){if(q.readyState==4){B(r)}else{j.attachEvent("onload",function(){B(r)})}}else{q.parentNode.removeChild(q)}}}function B(t){var r=C(t);if(r){for(var q in r){if(typeof r[q]=="function"){r[q]=null}}r.parentNode.removeChild(r)}}function C(t){var q=null;try{q=K.getElementById(t)}catch(r){}return q}function a(q){return K.createElement(q)}function I(t,q,r){t.attachEvent(q,r);d[d.length]=[t,q,r]}function c(t){var r=h.pv,q=t.split(".");q[0]=parseInt(q[0],10);q[1]=parseInt(q[1],10)||0;q[2]=parseInt(q[2],10)||0;return(r[0]>q[0]||(r[0]==q[0]&&r[1]>q[1])||(r[0]==q[0]&&r[1]==q[1]&&r[2]>=q[2]))?true:false}function V(v,r){if(h.ie&&h.mac){return }var u=K.getElementsByTagName("head")[0],t=a("style");t.setAttribute("type","text/css");t.setAttribute("media","screen");if(!(h.ie&&h.win)&&typeof K.createTextNode!=b){t.appendChild(K.createTextNode(v+" {"+r+"}"))}u.appendChild(t);if(h.ie&&h.win&&typeof K.styleSheets!=b&&K.styleSheets.length>0){var q=K.styleSheets[K.styleSheets.length-1];if(typeof q.addRule==Q){q.addRule(v,r)}}}function W(t,q){var r=q?"visible":"hidden";if(e&&C(t)){C(t).style.visibility=r}else{V("#"+t,"visibility:"+r)}}function g(s){var r=/[\\\"<>\.;]/;var q=r.exec(s)!=null;return q?encodeURIComponent(s):s}var D=function(){if(h.ie&&h.win){window.attachEvent("onunload",function(){var w=d.length;for(var v=0;v<w;v++){d[v][0].detachEvent(d[v][1],d[v][2])}var t=i.length;for(var u=0;u<t;u++){X(i[u])}for(var r in h){h[r]=null}h=null;for(var q in swfobject){swfobject[q]=null}swfobject=null})}}();return{registerObject:function(u,q,t){if(!h.w3cdom||!u||!q){return }var r={};r.id=u;r.swfVersion=q;r.expressInstall=t?t:false;N[N.length]=r;W(u,false)},getObjectById:function(v){var q=null;if(h.w3cdom){var t=C(v);if(t){var u=t.getElementsByTagName(Q)[0];if(!u||(u&&typeof t.SetVariable!=b)){q=t}else{if(typeof u.SetVariable!=b){q=u}}}}return q},embedSWF:function(x,AE,AB,AD,q,w,r,z,AC){if(!h.w3cdom||!x||!AE||!AB||!AD||!q){return }AB+="";AD+="";if(c(q)){W(AE,false);var AA={};if(AC&&typeof AC===Q){for(var v in AC){if(AC[v]!=Object.prototype[v]){AA[v]=AC[v]}}}AA.data=x;AA.width=AB;AA.height=AD;var y={};if(z&&typeof z===Q){for(var u in z){if(z[u]!=Object.prototype[u]){y[u]=z[u]}}}if(r&&typeof r===Q){for(var t in r){if(r[t]!=Object.prototype[t]){if(typeof y.flashvars!=b){y.flashvars+="&"+t+"="+r[t]}else{y.flashvars=t+"="+r[t]}}}}f(function(){U(AA,y,AE);if(AA.id==AE){W(AE,true)}})}else{if(w&&!A&&c("6.0.65")&&(h.win||h.mac)){A=true;W(AE,false);f(function(){var AF={};AF.id=AF.altContentId=AE;AF.width=AB;AF.height=AD;AF.expressInstall=w;k(AF)})}}},getFlashPlayerVersion:function(){return{major:h.pv[0],minor:h.pv[1],release:h.pv[2]}},hasFlashPlayerVersion:c,createSWF:function(t,r,q){if(h.w3cdom){return U(t,r,q)}else{return undefined}},removeSWF:function(q){if(h.w3cdom){X(q)}},createCSS:function(r,q){if(h.w3cdom){V(r,q)}},addDomLoadEvent:f,addLoadEvent:R,getQueryParamValue:function(v){var u=K.location.search||K.location.hash;if(v==null){return g(u)}if(u){var t=u.substring(1).split("&");for(var r=0;r<t.length;r++){if(t[r].substring(0,t[r].indexOf("="))==v){return g(t[r].substring((t[r].indexOf("=")+1)))}}}return""},expressInstallCallback:function(){if(A&&M){var q=C(m);if(q){q.parentNode.replaceChild(M,q);if(l){W(l,true);if(h.ie&&h.win){M.style.display="block"}}M=null;l=null;A=false}}}}}();
1
+ /* SWFObject v2.2 <http://code.google.com/p/swfobject/>
2
+ is released under the MIT License <http://www.opensource.org/licenses/mit-license.php>
 
3
  */
4
+ var swfobject=function(){var D="undefined",r="object",S="Shockwave Flash",W="ShockwaveFlash.ShockwaveFlash",q="application/x-shockwave-flash",R="SWFObjectExprInst",x="onreadystatechange",O=window,j=document,t=navigator,T=false,U=[h],o=[],N=[],I=[],l,Q,E,B,J=false,a=false,n,G,m=true,M=function(){var aa=typeof j.getElementById!=D&&typeof j.getElementsByTagName!=D&&typeof j.createElement!=D,ah=t.userAgent.toLowerCase(),Y=t.platform.toLowerCase(),ae=Y?/win/.test(Y):/win/.test(ah),ac=Y?/mac/.test(Y):/mac/.test(ah),af=/webkit/.test(ah)?parseFloat(ah.replace(/^.*webkit\/(\d+(\.\d+)?).*$/,"$1")):false,X=!+"\v1",ag=[0,0,0],ab=null;if(typeof t.plugins!=D&&typeof t.plugins[S]==r){ab=t.plugins[S].description;if(ab&&!(typeof t.mimeTypes!=D&&t.mimeTypes[q]&&!t.mimeTypes[q].enabledPlugin)){T=true;X=false;ab=ab.replace(/^.*\s+(\S+\s+\S+$)/,"$1");ag[0]=parseInt(ab.replace(/^(.*)\..*$/,"$1"),10);ag[1]=parseInt(ab.replace(/^.*\.(.*)\s.*$/,"$1"),10);ag[2]=/[a-zA-Z]/.test(ab)?parseInt(ab.replace(/^.*[a-zA-Z]+(.*)$/,"$1"),10):0}}else{if(typeof O.ActiveXObject!=D){try{var ad=new ActiveXObject(W);if(ad){ab=ad.GetVariable("$version");if(ab){X=true;ab=ab.split(" ")[1].split(",");ag=[parseInt(ab[0],10),parseInt(ab[1],10),parseInt(ab[2],10)]}}}catch(Z){}}}return{w3:aa,pv:ag,wk:af,ie:X,win:ae,mac:ac}}(),k=function(){if(!M.w3){return}if((typeof j.readyState!=D&&j.readyState=="complete")||(typeof j.readyState==D&&(j.getElementsByTagName("body")[0]||j.body))){f()}if(!J){if(typeof j.addEventListener!=D){j.addEventListener("DOMContentLoaded",f,false)}if(M.ie&&M.win){j.attachEvent(x,function(){if(j.readyState=="complete"){j.detachEvent(x,arguments.callee);f()}});if(O==top){(function(){if(J){return}try{j.documentElement.doScroll("left")}catch(X){setTimeout(arguments.callee,0);return}f()})()}}if(M.wk){(function(){if(J){return}if(!/loaded|complete/.test(j.readyState)){setTimeout(arguments.callee,0);return}f()})()}s(f)}}();function f(){if(J){return}try{var Z=j.getElementsByTagName("body")[0].appendChild(C("span"));Z.parentNode.removeChild(Z)}catch(aa){return}J=true;var X=U.length;for(var Y=0;Y<X;Y++){U[Y]()}}function K(X){if(J){X()}else{U[U.length]=X}}function s(Y){if(typeof O.addEventListener!=D){O.addEventListener("load",Y,false)}else{if(typeof j.addEventListener!=D){j.addEventListener("load",Y,false)}else{if(typeof O.attachEvent!=D){i(O,"onload",Y)}else{if(typeof O.onload=="function"){var X=O.onload;O.onload=function(){X();Y()}}else{O.onload=Y}}}}}function h(){if(T){V()}else{H()}}function V(){var X=j.getElementsByTagName("body")[0];var aa=C(r);aa.setAttribute("type",q);var Z=X.appendChild(aa);if(Z){var Y=0;(function(){if(typeof Z.GetVariable!=D){var ab=Z.GetVariable("$version");if(ab){ab=ab.split(" ")[1].split(",");M.pv=[parseInt(ab[0],10),parseInt(ab[1],10),parseInt(ab[2],10)]}}else{if(Y<10){Y++;setTimeout(arguments.callee,10);return}}X.removeChild(aa);Z=null;H()})()}else{H()}}function H(){var ag=o.length;if(ag>0){for(var af=0;af<ag;af++){var Y=o[af].id;var ab=o[af].callbackFn;var aa={success:false,id:Y};if(M.pv[0]>0){var ae=c(Y);if(ae){if(F(o[af].swfVersion)&&!(M.wk&&M.wk<312)){w(Y,true);if(ab){aa.success=true;aa.ref=z(Y);ab(aa)}}else{if(o[af].expressInstall&&A()){var ai={};ai.data=o[af].expressInstall;ai.width=ae.getAttribute("width")||"0";ai.height=ae.getAttribute("height")||"0";if(ae.getAttribute("class")){ai.styleclass=ae.getAttribute("class")}if(ae.getAttribute("align")){ai.align=ae.getAttribute("align")}var ah={};var X=ae.getElementsByTagName("param");var ac=X.length;for(var ad=0;ad<ac;ad++){if(X[ad].getAttribute("name").toLowerCase()!="movie"){ah[X[ad].getAttribute("name")]=X[ad].getAttribute("value")}}P(ai,ah,Y,ab)}else{p(ae);if(ab){ab(aa)}}}}}else{w(Y,true);if(ab){var Z=z(Y);if(Z&&typeof Z.SetVariable!=D){aa.success=true;aa.ref=Z}ab(aa)}}}}}function z(aa){var X=null;var Y=c(aa);if(Y&&Y.nodeName=="OBJECT"){if(typeof Y.SetVariable!=D){X=Y}else{var Z=Y.getElementsByTagName(r)[0];if(Z){X=Z}}}return X}function A(){return !a&&F("6.0.65")&&(M.win||M.mac)&&!(M.wk&&M.wk<312)}function P(aa,ab,X,Z){a=true;E=Z||null;B={success:false,id:X};var ae=c(X);if(ae){if(ae.nodeName=="OBJECT"){l=g(ae);Q=null}else{l=ae;Q=X}aa.id=R;if(typeof aa.width==D||(!/%$/.test(aa.width)&&parseInt(aa.width,10)<310)){aa.width="310"}if(typeof aa.height==D||(!/%$/.test(aa.height)&&parseInt(aa.height,10)<137)){aa.height="137"}j.title=j.title.slice(0,47)+" - Flash Player Installation";var ad=M.ie&&M.win?"ActiveX":"PlugIn",ac="MMredirectURL="+O.location.toString().replace(/&/g,"%26")+"&MMplayerType="+ad+"&MMdoctitle="+j.title;if(typeof ab.flashvars!=D){ab.flashvars+="&"+ac}else{ab.flashvars=ac}if(M.ie&&M.win&&ae.readyState!=4){var Y=C("div");X+="SWFObjectNew";Y.setAttribute("id",X);ae.parentNode.insertBefore(Y,ae);ae.style.display="none";(function(){if(ae.readyState==4){ae.parentNode.removeChild(ae)}else{setTimeout(arguments.callee,10)}})()}u(aa,ab,X)}}function p(Y){if(M.ie&&M.win&&Y.readyState!=4){var X=C("div");Y.parentNode.insertBefore(X,Y);X.parentNode.replaceChild(g(Y),X);Y.style.display="none";(function(){if(Y.readyState==4){Y.parentNode.removeChild(Y)}else{setTimeout(arguments.callee,10)}})()}else{Y.parentNode.replaceChild(g(Y),Y)}}function g(ab){var aa=C("div");if(M.win&&M.ie){aa.innerHTML=ab.innerHTML}else{var Y=ab.getElementsByTagName(r)[0];if(Y){var ad=Y.childNodes;if(ad){var X=ad.length;for(var Z=0;Z<X;Z++){if(!(ad[Z].nodeType==1&&ad[Z].nodeName=="PARAM")&&!(ad[Z].nodeType==8)){aa.appendChild(ad[Z].cloneNode(true))}}}}}return aa}function u(ai,ag,Y){var X,aa=c(Y);if(M.wk&&M.wk<312){return X}if(aa){if(typeof ai.id==D){ai.id=Y}if(M.ie&&M.win){var ah="";for(var ae in ai){if(ai[ae]!=Object.prototype[ae]){if(ae.toLowerCase()=="data"){ag.movie=ai[ae]}else{if(ae.toLowerCase()=="styleclass"){ah+=' class="'+ai[ae]+'"'}else{if(ae.toLowerCase()!="classid"){ah+=" "+ae+'="'+ai[ae]+'"'}}}}}var af="";for(var ad in ag){if(ag[ad]!=Object.prototype[ad]){af+='<param name="'+ad+'" value="'+ag[ad]+'" />'}}aa.outerHTML='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"'+ah+">"+af+"</object>";N[N.length]=ai.id;X=c(ai.id)}else{var Z=C(r);Z.setAttribute("type",q);for(var ac in ai){if(ai[ac]!=Object.prototype[ac]){if(ac.toLowerCase()=="styleclass"){Z.setAttribute("class",ai[ac])}else{if(ac.toLowerCase()!="classid"){Z.setAttribute(ac,ai[ac])}}}}for(var ab in ag){if(ag[ab]!=Object.prototype[ab]&&ab.toLowerCase()!="movie"){e(Z,ab,ag[ab])}}aa.parentNode.replaceChild(Z,aa);X=Z}}return X}function e(Z,X,Y){var aa=C("param");aa.setAttribute("name",X);aa.setAttribute("value",Y);Z.appendChild(aa)}function y(Y){var X=c(Y);if(X&&X.nodeName=="OBJECT"){if(M.ie&&M.win){X.style.display="none";(function(){if(X.readyState==4){b(Y)}else{setTimeout(arguments.callee,10)}})()}else{X.parentNode.removeChild(X)}}}function b(Z){var Y=c(Z);if(Y){for(var X in Y){if(typeof Y[X]=="function"){Y[X]=null}}Y.parentNode.removeChild(Y)}}function c(Z){var X=null;try{X=j.getElementById(Z)}catch(Y){}return X}function C(X){return j.createElement(X)}function i(Z,X,Y){Z.attachEvent(X,Y);I[I.length]=[Z,X,Y]}function F(Z){var Y=M.pv,X=Z.split(".");X[0]=parseInt(X[0],10);X[1]=parseInt(X[1],10)||0;X[2]=parseInt(X[2],10)||0;return(Y[0]>X[0]||(Y[0]==X[0]&&Y[1]>X[1])||(Y[0]==X[0]&&Y[1]==X[1]&&Y[2]>=X[2]))?true:false}function v(ac,Y,ad,ab){if(M.ie&&M.mac){return}var aa=j.getElementsByTagName("head")[0];if(!aa){return}var X=(ad&&typeof ad=="string")?ad:"screen";if(ab){n=null;G=null}if(!n||G!=X){var Z=C("style");Z.setAttribute("type","text/css");Z.setAttribute("media",X);n=aa.appendChild(Z);if(M.ie&&M.win&&typeof j.styleSheets!=D&&j.styleSheets.length>0){n=j.styleSheets[j.styleSheets.length-1]}G=X}if(M.ie&&M.win){if(n&&typeof n.addRule==r){n.addRule(ac,Y)}}else{if(n&&typeof j.createTextNode!=D){n.appendChild(j.createTextNode(ac+" {"+Y+"}"))}}}function w(Z,X){if(!m){return}var Y=X?"visible":"hidden";if(J&&c(Z)){c(Z).style.visibility=Y}else{v("#"+Z,"visibility:"+Y)}}function L(Y){var Z=/[\\\"<>\.;]/;var X=Z.exec(Y)!=null;return X&&typeof encodeURIComponent!=D?encodeURIComponent(Y):Y}var d=function(){if(M.ie&&M.win){window.attachEvent("onunload",function(){var ac=I.length;for(var ab=0;ab<ac;ab++){I[ab][0].detachEvent(I[ab][1],I[ab][2])}var Z=N.length;for(var aa=0;aa<Z;aa++){y(N[aa])}for(var Y in M){M[Y]=null}M=null;for(var X in swfobject){swfobject[X]=null}swfobject=null})}}();return{registerObject:function(ab,X,aa,Z){if(M.w3&&ab&&X){var Y={};Y.id=ab;Y.swfVersion=X;Y.expressInstall=aa;Y.callbackFn=Z;o[o.length]=Y;w(ab,false)}else{if(Z){Z({success:false,id:ab})}}},getObjectById:function(X){if(M.w3){return z(X)}},embedSWF:function(ab,ah,ae,ag,Y,aa,Z,ad,af,ac){var X={success:false,id:ah};if(M.w3&&!(M.wk&&M.wk<312)&&ab&&ah&&ae&&ag&&Y){w(ah,false);K(function(){ae+="";ag+="";var aj={};if(af&&typeof af===r){for(var al in af){aj[al]=af[al]}}aj.data=ab;aj.width=ae;aj.height=ag;var am={};if(ad&&typeof ad===r){for(var ak in ad){am[ak]=ad[ak]}}if(Z&&typeof Z===r){for(var ai in Z){if(typeof am.flashvars!=D){am.flashvars+="&"+ai+"="+Z[ai]}else{am.flashvars=ai+"="+Z[ai]}}}if(F(Y)){var an=u(aj,am,ah);if(aj.id==ah){w(ah,true)}X.success=true;X.ref=an}else{if(aa&&A()){aj.data=aa;P(aj,am,ah,ac);return}else{w(ah,true)}}if(ac){ac(X)}})}else{if(ac){ac(X)}}},switchOffAutoHideShow:function(){m=false},ua:M,getFlashPlayerVersion:function(){return{major:M.pv[0],minor:M.pv[1],release:M.pv[2]}},hasFlashPlayerVersion:F,createSWF:function(Z,Y,X){if(M.w3){return u(Z,Y,X)}else{return undefined}},showExpressInstall:function(Z,aa,X,Y){if(M.w3&&A()){P(Z,aa,X,Y)}},removeSWF:function(X){if(M.w3){y(X)}},createCSS:function(aa,Z,Y,X){if(M.w3){v(aa,Z,Y,X)}},addDomLoadEvent:K,addLoadEvent:s,getQueryParamValue:function(aa){var Z=j.location.search||j.location.hash;if(Z){if(/\?/.test(Z)){Z=Z.split("?")[1]}if(aa==null){return L(Z)}var Y=Z.split("&");for(var X=0;X<Y.length;X++){if(Y[X].substring(0,Y[X].indexOf("="))==aa){return L(Y[X].substring((Y[X].indexOf("=")+1)))}}}return""},expressInstallCallback:function(){if(a){var X=c(R);if(X&&l){X.parentNode.replaceChild(l,X);if(Q){w(Q,true);if(M.ie&&M.win){l.style.display="block"}}if(E){E(B)}}a=false}}}}();
admin/js/swfupload.js CHANGED
@@ -941,9 +941,15 @@ SWFUpload.prototype.debugMessage = function (message) {
941
  exceptionMessage = exceptionValues.join("\n") || "";
942
  exceptionValues = exceptionMessage.split("\n");
943
  exceptionMessage = "EXCEPTION: " + exceptionValues.join("\nEXCEPTION: ");
944
- SWFUpload.Console.writeLine(exceptionMessage);
 
 
 
945
  } else {
946
- SWFUpload.Console.writeLine(message);
 
 
 
947
  }
948
  }
949
  };
@@ -965,7 +971,7 @@ SWFUpload.Console.writeLine = function (message) {
965
  console.setAttribute("wrap", "off");
966
  console.wrap = "off";
967
  console.style.overflow = "auto";
968
- console.style.width = "700px";
969
  console.style.height = "350px";
970
  console.style.margin = "5px";
971
  documentForm.appendChild(console);
941
  exceptionMessage = exceptionValues.join("\n") || "";
942
  exceptionValues = exceptionMessage.split("\n");
943
  exceptionMessage = "EXCEPTION: " + exceptionValues.join("\nEXCEPTION: ");
944
+ if (window.console)
945
+ console.log(exceptionMessage);
946
+ else
947
+ SWFUpload.Console.writeLine(exceptionMessage);
948
  } else {
949
+ if (window.console)
950
+ console.log(message);
951
+ else
952
+ SWFUpload.Console.writeLine(message);
953
  }
954
  }
955
  };
971
  console.setAttribute("wrap", "off");
972
  console.wrap = "off";
973
  console.style.overflow = "auto";
974
+ console.style.width = "99%";
975
  console.style.height = "350px";
976
  console.style.margin = "5px";
977
  documentForm.appendChild(console);
admin/manage-galleries.php CHANGED
@@ -5,23 +5,14 @@ if(preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die('You
5
  // *** show main gallery list
6
  function nggallery_manage_gallery_main() {
7
 
8
- global $wpdb, $ngg, $nggdb, $wp_query;
9
-
10
- // get the default path for a new gallery
11
- $defaultpath = $ngg->options['gallerypath'];
12
-
13
- if (isset ($_POST['addgallery']) && isset ($_POST['galleryname'])){
14
- check_admin_referer('ngg_addgallery');
15
- $newgallery = attribute_escape( $_POST['galleryname']);
16
- if ( !empty($newgallery) )
17
- nggAdmin::create_gallery($newgallery, $defaultpath);
18
- }
19
 
 
20
  if ( ! isset( $_GET['paged'] ) || $_GET['paged'] < 1 )
21
  $_GET['paged'] = 1;
22
 
23
  $start = ( $_GET['paged'] - 1 ) * 25;
24
- $gallerylist = $nggdb->find_all_galleries('gid', 'asc', TRUE, 25, $start);
25
 
26
  $page_links = paginate_links( array(
27
  'base' => add_query_arg( 'paged', '%#%' ),
@@ -35,8 +26,80 @@ function nggallery_manage_gallery_main() {
35
  ?>
36
  <script type="text/javascript">
37
  <!--
38
- function showDialog( windowId ) {
39
- tb_show("", "#TB_inline?width=640&height=130&inlineId=" + windowId + "&modal=true", false);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
40
  }
41
  //-->
42
  </script>
@@ -50,26 +113,44 @@ function nggallery_manage_gallery_main() {
50
  <input type="submit" value="<?php _e( 'Search Images', 'nggallery' ); ?>" class="button" />
51
  </p>
52
  </form>
 
 
 
 
53
  <div class="tablenav">
54
- <?php if ( current_user_can('NextGEN Upload images') ) : ?>
55
  <div class="alignleft actions">
56
- <input id="doaction" class="button-secondary action" type="submit" onclick="showDialog('addGallery');" name="doaction" value="<?php _e('Add new gallery', 'nggallery') ?>"/>
 
 
 
 
 
 
 
 
 
 
 
 
57
  </div>
58
- <?php endif; ?>
59
- </div>
60
  <?php if ( $page_links ) : ?>
61
- <div class="tablenav">
62
  <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( ( $_GET['paged'] - 1 ) * $nggdb->paged['objects_per_page'] + 1 ),
64
  number_format_i18n( min( $_GET['paged'] * $nggdb->paged['objects_per_page'], $nggdb->paged['total_objects'] ) ),
65
  number_format_i18n( $nggdb->paged['total_objects'] ),
66
  $page_links
67
  ); echo $page_links_text; ?></div>
68
- </div>
69
  <?php endif; ?>
 
 
70
  <table class="widefat" cellspacing="0">
71
  <thead>
72
  <tr>
 
 
 
73
  <th scope="col" ><?php _e('ID'); ?></th>
74
  <th scope="col" ><?php _e('Title', 'nggallery'); ?></th>
75
  <th scope="col" ><?php _e('Description', 'nggallery'); ?></th>
@@ -90,7 +171,12 @@ if($gallerylist) {
90
  $author_user = get_userdata( (int) $gallery->author );
91
  ?>
92
  <tr id="gallery-<?php echo $gid ?>" <?php echo $class; ?> >
93
- <th scope="row"><?php echo $gid; ?></th>
 
 
 
 
 
94
  <td>
95
  <?php if (nggAdmin::can_manage_this_gallery($gallery->author)) { ?>
96
  <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'); ?>" >
@@ -118,17 +204,19 @@ if($gallerylist) {
118
  ?>
119
  </tbody>
120
  </table>
 
121
  </div>
122
  <!-- #addGallery -->
123
  <div id="addGallery" style="display: none;" >
124
  <form id="form-tags" method="POST" accept-charset="utf-8">
125
  <?php wp_nonce_field('ngg_addgallery'); ?>
 
126
  <table width="100%" border="0" cellspacing="3" cellpadding="3" >
127
  <tr>
128
  <td>
129
  <strong><?php _e('New Gallery', 'nggallery') ;?>:</strong> <input type="text" size="35" name="galleryname" value="" /><br />
130
  <?php if(!IS_WPMU) { ?>
131
- <?php _e('Create a new , empty gallery below the folder', 'nggallery') ;?> <strong><?php echo $defaultpath ?></strong><br />
132
  <?php } ?>
133
  <i>( <?php _e('Allowed characters for file and folder names are', 'nggallery') ;?>: a-z, A-Z, 0-9, -, _ )</i>
134
  </td>
@@ -144,6 +232,66 @@ if($gallerylist) {
144
  </form>
145
  </div>
146
  <!-- /#addGallery -->
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
147
  <?php
148
  }
149
  ?>
5
  // *** show main gallery list
6
  function nggallery_manage_gallery_main() {
7
 
8
+ global $ngg, $nggdb, $wp_query;
 
 
 
 
 
 
 
 
 
 
9
 
10
+ //Build the pagination for more than 25 galleries
11
  if ( ! isset( $_GET['paged'] ) || $_GET['paged'] < 1 )
12
  $_GET['paged'] = 1;
13
 
14
  $start = ( $_GET['paged'] - 1 ) * 25;
15
+ $gallerylist = $nggdb->find_all_galleries('gid', 'asc', TRUE, 25, $start, false);
16
 
17
  $page_links = paginate_links( array(
18
  'base' => add_query_arg( 'paged', '%#%' ),
26
  ?>
27
  <script type="text/javascript">
28
  <!--
29
+ function checkAll(form)
30
+ {
31
+ for (i = 0, n = form.elements.length; i < n; i++) {
32
+ if(form.elements[i].type == "checkbox") {
33
+ if(form.elements[i].name == "doaction[]") {
34
+ if(form.elements[i].checked == true)
35
+ form.elements[i].checked = false;
36
+ else
37
+ form.elements[i].checked = true;
38
+ }
39
+ }
40
+ }
41
+ }
42
+
43
+ function getNumChecked(form)
44
+ {
45
+ var num = 0;
46
+ for (i = 0, n = form.elements.length; i < n; i++) {
47
+ if(form.elements[i].type == "checkbox") {
48
+ if(form.elements[i].name == "doaction[]")
49
+ if(form.elements[i].checked == true)
50
+ num++;
51
+ }
52
+ }
53
+ return num;
54
+ }
55
+
56
+ // this function check for a the number of selected images, sumbmit false when no one selected
57
+ function checkSelected() {
58
+
59
+ var numchecked = getNumChecked(document.getElementById('editgalleries'));
60
+
61
+ if(numchecked < 1) {
62
+ alert('<?php echo js_escape(__('No images selected', 'nggallery')); ?>');
63
+ return false;
64
+ }
65
+
66
+ actionId = jQuery('#bulkaction').val();
67
+
68
+ switch (actionId) {
69
+ case "resize_images":
70
+ showDialog('resize_images', 120);
71
+ return false;
72
+ break;
73
+ case "new_thumbnail":
74
+ showDialog('new_thumbnail', 160);
75
+ return false;
76
+ break;
77
+ }
78
+
79
+ return confirm('<?php echo sprintf(js_escape(__("You are about to start the bulk edit for %s galleries \n \n 'Cancel' to stop, 'OK' to proceed.",'nggallery')), "' + numchecked + '") ; ?>');
80
+ }
81
+
82
+ function showDialog( windowId, height ) {
83
+ var form = document.getElementById('editgalleries');
84
+ var elementlist = "";
85
+ for (i = 0, n = form.elements.length; i < n; i++) {
86
+ if(form.elements[i].type == "checkbox") {
87
+ if(form.elements[i].name == "doaction[]")
88
+ if(form.elements[i].checked == true)
89
+ if (elementlist == "")
90
+ elementlist = form.elements[i].value
91
+ else
92
+ elementlist += "," + form.elements[i].value ;
93
+ }
94
+ }
95
+ jQuery("#" + windowId + "_bulkaction").val(jQuery("#bulkaction").val());
96
+ jQuery("#" + windowId + "_imagelist").val(elementlist);
97
+ // console.log (jQuery("#TB_imagelist").val());
98
+ tb_show("", "#TB_inline?width=640&height=" + height + "&inlineId=" + windowId + "&modal=true", false);
99
+ }
100
+
101
+ function showAddGallery() {
102
+ tb_show("", "#TB_inline?width=640&height=140&inlineId=addGallery&modal=true", false);
103
  }
104
  //-->
105
  </script>
113
  <input type="submit" value="<?php _e( 'Search Images', 'nggallery' ); ?>" class="button" />
114
  </p>
115
  </form>
116
+ <form id="editgalleries" class="nggform" method="POST" action="<?php echo $ngg->manage_page->base_page . '&amp;paged=' . $_GET['paged']; ?>" accept-charset="utf-8">
117
+ <?php wp_nonce_field('ngg_bulkgallery') ?>
118
+ <input type="hidden" name="page" value="manage-galleries" />
119
+
120
  <div class="tablenav">
121
+
122
  <div class="alignleft actions">
123
+ <?php if ( function_exists('json_encode') ) : ?>
124
+ <select name="bulkaction" id="bulkaction">
125
+ <option value="no_action" ><?php _e("No action",'nggallery'); ?></option>
126
+ <option value="set_watermark" ><?php _e("Set watermark",'nggallery'); ?></option>
127
+ <option value="new_thumbnail" ><?php _e("Create new thumbnails",'nggallery'); ?></option>
128
+ <option value="resize_images" ><?php _e("Resize images",'nggallery'); ?></option>
129
+ <option value="import_meta" ><?php _e("Import metadata",'nggallery'); ?></option>
130
+ </select>
131
+ <input name="showThickbox" class="button-secondary" type="submit" value="<?php _e('Apply','nggallery'); ?>" onclick="if ( !checkSelected() ) return false;" />
132
+ <?php endif; ?>
133
+ <?php if ( current_user_can('NextGEN Upload images') ) : ?>
134
+ <input name="doaction" class="button-secondary action" type="submit" onclick="showAddGallery(); return false;" value="<?php _e('Add new gallery', 'nggallery') ?>"/>
135
+ <?php endif; ?>
136
  </div>
137
+
 
138
  <?php if ( $page_links ) : ?>
 
139
  <div class="tablenav-pages"><?php $page_links_text = sprintf( '<span class="displaying-num">' . __( 'Displaying %s&#8211;%s of %s' ) . '</span>%s',
140
  number_format_i18n( ( $_GET['paged'] - 1 ) * $nggdb->paged['objects_per_page'] + 1 ),
141
  number_format_i18n( min( $_GET['paged'] * $nggdb->paged['objects_per_page'], $nggdb->paged['total_objects'] ) ),
142
  number_format_i18n( $nggdb->paged['total_objects'] ),
143
  $page_links
144
  ); echo $page_links_text; ?></div>
 
145
  <?php endif; ?>
146
+
147
+ </div>
148
  <table class="widefat" cellspacing="0">
149
  <thead>
150
  <tr>
151
+ <th scope="col" class="column-cb" >
152
+ <input type="checkbox" onclick="checkAll(document.getElementById('editgalleries'));" name="checkall"/>
153
+ </th>
154
  <th scope="col" ><?php _e('ID'); ?></th>
155
  <th scope="col" ><?php _e('Title', 'nggallery'); ?></th>
156
  <th scope="col" ><?php _e('Description', 'nggallery'); ?></th>
171
  $author_user = get_userdata( (int) $gallery->author );
172
  ?>
173
  <tr id="gallery-<?php echo $gid ?>" <?php echo $class; ?> >
174
+ <th scope="row" class="cb column-cb">
175
+ <?php if (nggAdmin::can_manage_this_gallery($gallery->author)) { ?>
176
+ <input name="doaction[]" type="checkbox" value="<?php echo $gid ?>" />
177
+ <?php } ?>
178
+ </th>
179
+ <td scope="row"><?php echo $gid; ?></td>
180
  <td>
181
  <?php if (nggAdmin::can_manage_this_gallery($gallery->author)) { ?>
182
  <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'); ?>" >
204
  ?>
205
  </tbody>
206
  </table>
207
+ </form>
208
  </div>
209
  <!-- #addGallery -->
210
  <div id="addGallery" style="display: none;" >
211
  <form id="form-tags" method="POST" accept-charset="utf-8">
212
  <?php wp_nonce_field('ngg_addgallery'); ?>
213
+ <input type="hidden" name="page" value="manage-galleries" />
214
  <table width="100%" border="0" cellspacing="3" cellpadding="3" >
215
  <tr>
216
  <td>
217
  <strong><?php _e('New Gallery', 'nggallery') ;?>:</strong> <input type="text" size="35" name="galleryname" value="" /><br />
218
  <?php if(!IS_WPMU) { ?>
219
+ <?php _e('Create a new , empty gallery below the folder', 'nggallery') ;?> <strong><?php echo $ngg->options['gallerypath']; ?></strong><br />
220
  <?php } ?>
221
  <i>( <?php _e('Allowed characters for file and folder names are', 'nggallery') ;?>: a-z, A-Z, 0-9, -, _ )</i>
222
  </td>
232
  </form>
233
  </div>
234
  <!-- /#addGallery -->
235
+
236
+ <!-- #resize_images -->
237
+ <div id="resize_images" style="display: none;" >
238
+ <form id="form-resize-images" method="POST" accept-charset="utf-8">
239
+ <?php wp_nonce_field('ngg_thickbox_form') ?>
240
+ <input type="hidden" id="resize_images_imagelist" name="TB_imagelist" value="" />
241
+ <input type="hidden" id="resize_images_bulkaction" name="TB_bulkaction" value="" />
242
+ <input type="hidden" name="page" value="manage-galleries" />
243
+ <table width="100%" border="0" cellspacing="3" cellpadding="3" >
244
+ <tr valign="top">
245
+ <td>
246
+ <strong><?php _e('Resize Images to', 'nggallery'); ?>:</strong>
247
+ </td>
248
+ <td>
249
+ <input type="text" size="5" name="imgWidth" value="<?php echo $ngg->options['imgWidth']; ?>" /> x <input type="text" size="5" name="imgHeight" value="<?php echo $ngg->options['imgHeight']; ?>" />
250
+ <br /><small><?php _e('Width x height (in pixel). NextGEN Gallery will keep ratio size','nggallery') ?></small>
251
+ </td>
252
+ </tr>
253
+ <tr align="right">
254
+ <td colspan="2" class="submit">
255
+ <input class="button-primary" type="submit" name="TB_ResizeImages" value="<?php _e('OK', 'nggallery'); ?>" />
256
+ &nbsp;
257
+ <input class="button-secondary" type="reset" value="&nbsp;<?php _e('Cancel', 'nggallery'); ?>&nbsp;" onclick="tb_remove()"/>
258
+ </td>
259
+ </tr>
260
+ </table>
261
+ </form>
262
+ </div>
263
+ <!-- /#resize_images -->
264
+
265
+ <!-- #new_thumbnail -->
266
+ <div id="new_thumbnail" style="display: none;" >
267
+ <form id="form-new-thumbnail" method="POST" accept-charset="utf-8">
268
+ <?php wp_nonce_field('ngg_thickbox_form') ?>
269
+ <input type="hidden" id="new_thumbnail_imagelist" name="TB_imagelist" value="" />
270
+ <input type="hidden" id="new_thumbnail_bulkaction" name="TB_bulkaction" value="" />
271
+ <input type="hidden" name="page" value="manage-galleries" />
272
+ <table width="100%" border="0" cellspacing="3" cellpadding="3" >
273
+ <tr valign="top">
274
+ <th align="left"><?php _e('Width x height (in pixel)','nggallery') ?></th>
275
+ <td><input type="text" size="5" maxlength="5" name="thumbwidth" value="<?php echo $ngg->options['thumbwidth']; ?>" /> x <input type="text" size="5" maxlength="5" name="thumbheight" value="<?php echo $ngg->options['thumbheight']; ?>" />
276
+ <br /><small><?php _e('These values are maximum values ','nggallery') ?></small></td>
277
+ </tr>
278
+ <tr valign="top">
279
+ <th align="left"><?php _e('Set fix dimension','nggallery') ?></th>
280
+ <td><input type="checkbox" name="thumbfix" value="1" <?php checked('1', $ngg->options['thumbfix']); ?> />
281
+ <br /><small><?php _e('Ignore the aspect ratio, no portrait thumbnails','nggallery') ?></small></td>
282
+ </tr>
283
+ <tr align="right">
284
+ <td colspan="2" class="submit">
285
+ <input class="button-primary" type="submit" name="TB_NewThumbnail" value="<?php _e('OK', 'nggallery');?>" />
286
+ &nbsp;
287
+ <input class="button-secondary" type="reset" value="&nbsp;<?php _e('Cancel', 'nggallery'); ?>&nbsp;" onclick="tb_remove()"/>
288
+ </td>
289
+ </tr>
290
+ </table>
291
+ </form>
292
+ </div>
293
+ <!-- /#new_thumbnail -->
294
+
295
  <?php
296
  }
297
  ?>
admin/manage-images.php CHANGED
@@ -71,11 +71,18 @@ function nggallery_picturelist() {
71
  $num_columns = count($gallery_columns) - count($hidden_columns);
72
 
73
  ?>
 
 
 
 
 
 
 
74
 
75
  <script type="text/javascript">
76
  <!--
77
 
78
- function showDialog( windowId ) {
79
  var form = document.getElementById('updategallery');
80
  var elementlist = "";
81
  for (i = 0, n = form.elements.length; i < n; i++) {
@@ -91,7 +98,7 @@ function showDialog( windowId ) {
91
  jQuery("#" + windowId + "_bulkaction").val(jQuery("#bulkaction").val());
92
  jQuery("#" + windowId + "_imagelist").val(elementlist);
93
  // console.log (jQuery("#TB_imagelist").val());
94
- tb_show("", "#TB_inline?width=640&height=120&inlineId=" + windowId + "&modal=true", false);
95
  }
96
 
97
  function checkAll(form)
@@ -127,7 +134,7 @@ function checkSelected() {
127
  var numchecked = getNumChecked(document.getElementById('updategallery'));
128
 
129
  if(numchecked < 1) {
130
- alert('<?php echo js_escape(__("No images selected", 'nggallery')); ?>');
131
  return false;
132
  }
133
 
@@ -136,15 +143,23 @@ function checkSelected() {
136
  switch (actionId) {
137
  case "copy_to":
138
  case "move_to":
139
- showDialog('selectgallery');
140
  return false;
141
  break;
142
  case "add_tags":
143
  case "delete_tags":
144
  case "overwrite_tags":
145
- showDialog('entertags');
 
 
 
 
146
  return false;
147
  break;
 
 
 
 
148
  }
149
 
150
  return confirm('<?php echo sprintf(js_escape(__("You are about to start the bulk edit for %s images \n \n 'Cancel' to stop, 'OK' to proceed.",'nggallery')), "' + numchecked + '") ; ?>');
@@ -153,11 +168,7 @@ function checkSelected() {
153
  jQuery(document).ready( function() {
154
  // close postboxes that should be closed
155
  jQuery('.if-js-closed').removeClass('if-js-closed').addClass('closed');
156
-
157
- if (typeof postboxes != "undefined")
158
- postboxes.add_postbox_toggles('ngg-manage-gallery'); // WP 2.7
159
- else
160
- add_postbox_toggles('ngg-manage-gallery'); // WP 2.6
161
 
162
  });
163
 
@@ -181,14 +192,16 @@ jQuery(document).ready( function() {
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;" />
189
 
190
  <form id="updategallery" class="nggform" method="POST" action="<?php echo $ngg->manage_page->base_page . '&amp;mode=edit&amp;gid=' . $act_gid . '&amp;paged=' . $_GET['paged']; ?>" accept-charset="utf-8">
191
  <?php wp_nonce_field('ngg_updategallery') ?>
 
192
 
193
  <div id="poststuff">
194
  <?php wp_nonce_field( 'closedpostboxes', 'closedpostboxesnonce', false ); ?>
@@ -239,6 +252,7 @@ jQuery(document).ready( function() {
239
  ?>
240
  </th>
241
  </tr>
 
242
  <tr>
243
  <th align="left">&nbsp;</th>
244
  <th align="left">&nbsp;</th>
@@ -251,11 +265,12 @@ jQuery(document).ready( function() {
251
  <input class="button-secondary action" type="submit" name="addnewpage" value="<?php _e ('Add page', 'nggallery'); ?>" id="group"/>
252
  </th>
253
  </tr>
 
254
  </table>
255
 
256
  <div class="submit">
257
- <input type="submit" class="button-secondary" name="scanfolder" value="<?php _e("Scan Folder for new images",'nggallery')?> " />
258
- <input type="submit" class="button-primary action" name="updatepictures" value="<?php _e("Save Changes",'nggallery')?>" />
259
  </div>
260
 
261
  </div>
@@ -274,25 +289,27 @@ jQuery(document).ready( function() {
274
  <?php endif; ?>
275
  <div class="alignleft actions">
276
  <select id="bulkaction" name="bulkaction">
277
- <option value="no_action" ><?php _e("No action",'nggallery')?></option>
278
- <option value="set_watermark" ><?php _e("Set watermark",'nggallery')?></option>
279
- <option value="new_thumbnail" ><?php _e("Create new thumbnails",'nggallery')?></option>
280
- <option value="resize_images" ><?php _e("Resize images",'nggallery')?></option>
281
- <option value="delete_images" ><?php _e("Delete images",'nggallery')?></option>
282
- <option value="import_meta" ><?php _e("Import metadata",'nggallery')?></option>
283
- <option value="copy_to" ><?php _e("Copy to...",'nggallery')?></option>
284
- <option value="move_to"><?php _e("Move to...",'nggallery')?></option>
285
- <option value="add_tags" ><?php _e("Add tags",'nggallery')?></option>
286
- <option value="delete_tags" ><?php _e("Delete tags",'nggallery')?></option>
287
- <option value="overwrite_tags" ><?php _e("Overwrite tags",'nggallery')?></option>
 
 
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
 
295
- <input type="submit" name="updatepictures" class="button-primary action" value="<?php _e("Save Changes",'nggallery')?>" />
296
  </div>
297
  </div>
298
 
@@ -313,13 +330,11 @@ jQuery(document).ready( function() {
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
@@ -332,7 +347,7 @@ if($picturelist) {
332
  $exclude = ( $picture->exclude ) ? 'checked="checked"' : '';
333
  $date = mysql2date(get_option('date_format'), $picture->imagedate);
334
  $time = mysql2date(get_option('time_format'), $picture->imagedate);
335
-
336
  ?>
337
  <tr id="picture-<?php echo $pid ?>" class="<?php echo $alternate ?> iedit" valign="top">
338
  <?php
@@ -364,16 +379,20 @@ if($picturelist) {
364
  <strong><a href="<?php echo $picture->imageURL; ?>" class="thickbox" title="<?php echo $picture->filename ?>">
365
  <?php echo ( empty($picture->alttext) ) ? $picture->filename : stripslashes(nggGallery::i18n($picture->alttext)); ?>
366
  </a></strong>
367
- <br /><?php echo $date?>
 
 
 
368
  <p>
369
  <?php
370
  $actions = array();
371
  //TODO:Add a JS edit option
372
  //$actions['edit'] = '<a class="editinline" href="#">' . __('Edit') . '</a>';
373
- $actions['view'] = '<a class="thickbox" href="' . $picture->imageURL . '" title="' . attribute_escape(sprintf(__('View "%s"'), $picture->filename)) . '">' . __('View', 'nggallery') . '</a>';
374
  $actions['meta'] = '<a class="thickbox" href="' . NGGALLERY_URLPATH . 'admin/showmeta.php?id=' . $pid . '" title="' . __('Show Meta data','nggallery') . '">' . __('Meta', 'nggallery') . '</a>';
375
- $actions['custom_thumb'] = '<a class="thickbox" href="' . NGGALLERY_URLPATH . 'admin/manage_thumbnail.php?id=' . $pid . '" title="' . __('Customize thumbnail','nggallery') . '">' . __('Edit thumb', 'nggallery') . '</a>';
376
- $actions['delete'] = '<a class="submitdelete" href="' . wp_nonce_url("admin.php?page=nggallery-manage-gallery&amp;mode=delpic&amp;gid=".$act_gid."&amp;pid=".$pid, 'ngg_delpicture'). '" class="delete column-delete" onclick="javascript:check=confirm( \'' . attribute_escape(sprintf(__('Delete "%s"' , 'nggallery'), $picture->filename)). '\');if(check==false) return false;">' . __('Delete') . '</a>';
 
377
  $action_count = count($actions);
378
  $i = 0;
379
  echo '<div class="row-actions">';
@@ -388,9 +407,12 @@ if($picturelist) {
388
  <?php
389
  break;
390
  case 'thumbnail' :
 
 
 
391
  ?>
392
- <td <?php echo $attributes ?>><a href="<?php echo $picture->imageURL; ?>" class="thickbox" title="<?php echo $picture->filename ?>">
393
- <img class="thumb" src="<?php echo $picture->thumbURL; ?>" <?php echo $thumbsize ?> id="thumb<?php echo $pid ?>" />
394
  </a>
395
  </td>
396
  <?php
@@ -436,7 +458,7 @@ if ( $counter==0 )
436
 
437
  </tbody>
438
  </table>
439
- <p class="submit"><input type="submit" class="button-primary action" name="updatepictures" value="<?php _e("Save Changes",'nggallery')?>" /></p>
440
  </form>
441
  <br class="clear"/>
442
  </div><!-- /#wrap -->
@@ -447,15 +469,16 @@ if ( $counter==0 )
447
  <?php wp_nonce_field('ngg_thickbox_form') ?>
448
  <input type="hidden" id="entertags_imagelist" name="TB_imagelist" value="" />
449
  <input type="hidden" id="entertags_bulkaction" name="TB_bulkaction" value="" />
 
450
  <table width="100%" border="0" cellspacing="3" cellpadding="3" >
451
  <tr>
452
- <th><?php _e("Enter the tags",'nggallery')?> : <input name="taglist" type="text" style="width:90%" value="" /></th>
453
  </tr>
454
  <tr align="right">
455
  <td class="submit">
456
- <input class="button-primary" type="submit" name="TB_EditTags" value="<?php _e("OK",'nggallery')?>" />
457
  &nbsp;
458
- <input class="button-secondary" type="reset" value="&nbsp;<?php _e("Cancel",'nggallery')?>&nbsp;" onclick="tb_remove()"/>
459
  </td>
460
  </tr>
461
  </table>
@@ -469,6 +492,7 @@ if ( $counter==0 )
469
  <?php wp_nonce_field('ngg_thickbox_form') ?>
470
  <input type="hidden" id="selectgallery_imagelist" name="TB_imagelist" value="" />
471
  <input type="hidden" id="selectgallery_bulkaction" name="TB_bulkaction" value="" />
 
472
  <table width="100%" border="0" cellspacing="3" cellpadding="3" >
473
  <tr>
474
  <th>
@@ -488,9 +512,9 @@ if ( $counter==0 )
488
  </tr>
489
  <tr align="right">
490
  <td class="submit">
491
- <input type="submit" class="button-primary" name="TB_SelectGallery" value="<?php _e("OK",'nggallery')?>" />
492
  &nbsp;
493
- <input class="button-secondary" type="reset" value="<?php _e("Cancel",'nggallery')?>" onclick="tb_remove()"/>
494
  </td>
495
  </tr>
496
  </table>
@@ -498,6 +522,65 @@ if ( $counter==0 )
498
  </div>
499
  <!-- /#selectgallery -->
500
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
501
  <script type="text/javascript">
502
  /* <![CDATA[ */
503
  jQuery(document).ready(function(){columns.init('nggallery-manage-images');});
@@ -528,4 +611,4 @@ function ngg_manage_gallery_columns() {
528
  return $gallery_columns;
529
  }
530
 
531
- ?>
71
  $num_columns = count($gallery_columns) - count($hidden_columns);
72
 
73
  ?>
74
+ <!--[if IE]>
75
+ <style type="text/css">
76
+ .custom_thumb {
77
+ display : none;
78
+ }
79
+ </style>
80
+ <![endif]-->
81
 
82
  <script type="text/javascript">
83
  <!--
84
 
85
+ function showDialog( windowId, height ) {
86
  var form = document.getElementById('updategallery');
87
  var elementlist = "";
88
  for (i = 0, n = form.elements.length; i < n; i++) {
98
  jQuery("#" + windowId + "_bulkaction").val(jQuery("#bulkaction").val());
99
  jQuery("#" + windowId + "_imagelist").val(elementlist);
100
  // console.log (jQuery("#TB_imagelist").val());
101
+ tb_show("", "#TB_inline?width=640&height=" + height + "&inlineId=" + windowId + "&modal=true", false);
102
  }
103
 
104
  function checkAll(form)
134
  var numchecked = getNumChecked(document.getElementById('updategallery'));
135
 
136
  if(numchecked < 1) {
137
+ alert('<?php echo js_escape(__('No images selected', 'nggallery')); ?>');
138
  return false;
139
  }
140
 
143
  switch (actionId) {
144
  case "copy_to":
145
  case "move_to":
146
+ showDialog('selectgallery', 120);
147
  return false;
148
  break;
149
  case "add_tags":
150
  case "delete_tags":
151
  case "overwrite_tags":
152
+ showDialog('entertags', 120);
153
+ return false;
154
+ break;
155
+ case "resize_images":
156
+ showDialog('resize_images', 120);
157
  return false;
158
  break;
159
+ case "new_thumbnail":
160
+ showDialog('new_thumbnail', 160);
161
+ return false;
162
+ break;
163
  }
164
 
165
  return confirm('<?php echo sprintf(js_escape(__("You are about to start the bulk edit for %s images \n \n 'Cancel' to stop, 'OK' to proceed.",'nggallery')), "' + numchecked + '") ; ?>');
168
  jQuery(document).ready( function() {
169
  // close postboxes that should be closed
170
  jQuery('.if-js-closed').removeClass('if-js-closed').addClass('closed');
171
+ postboxes.add_postbox_toggles('ngg-manage-gallery');
 
 
 
 
172
 
173
  });
174
 
192
 
193
  <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">
194
  <?php wp_nonce_field('ngg_updategallery') ?>
195
+ <input type="hidden" name="page" value="manage-images" />
196
 
197
  <?php else :?>
198
+ <h2><?php echo _n( 'Gallery', 'Galleries', 1, 'nggallery' ); ?> : <?php echo nggGallery::i18n($gallery->title); ?></h2>
199
 
200
  <br style="clear: both;" />
201
 
202
  <form id="updategallery" class="nggform" method="POST" action="<?php echo $ngg->manage_page->base_page . '&amp;mode=edit&amp;gid=' . $act_gid . '&amp;paged=' . $_GET['paged']; ?>" accept-charset="utf-8">
203
  <?php wp_nonce_field('ngg_updategallery') ?>
204
+ <input type="hidden" name="page" value="manage-images" />
205
 
206
  <div id="poststuff">
207
  <?php wp_nonce_field( 'closedpostboxes', 'closedpostboxesnonce', false ); ?>
252
  ?>
253
  </th>
254
  </tr>
255
+ <?php if(current_user_can("publish_pages")) : ?>
256
  <tr>
257
  <th align="left">&nbsp;</th>
258
  <th align="left">&nbsp;</th>
265
  <input class="button-secondary action" type="submit" name="addnewpage" value="<?php _e ('Add page', 'nggallery'); ?>" id="group"/>
266
  </th>
267
  </tr>
268
+ <?php endif; ?>
269
  </table>
270
 
271
  <div class="submit">
272
+ <input type="submit" class="button-secondary" name="scanfolder" value="<?php _e("Scan Folder for new images",'nggallery'); ?> " />
273
+ <input type="submit" class="button-primary action" name="updatepictures" value="<?php _e("Save Changes",'nggallery'); ?>" />
274
  </div>
275
 
276
  </div>
289
  <?php endif; ?>
290
  <div class="alignleft actions">
291
  <select id="bulkaction" name="bulkaction">
292
+ <option value="no_action" ><?php _e("No action",'nggallery'); ?></option>
293
+ <option value="set_watermark" ><?php _e("Set watermark",'nggallery'); ?></option>
294
+ <option value="new_thumbnail" ><?php _e("Create new thumbnails",'nggallery'); ?></option>
295
+ <option value="resize_images" ><?php _e("Resize images",'nggallery'); ?></option>
296
+ <option value="delete_images" ><?php _e("Delete images",'nggallery'); ?></option>
297
+ <option value="import_meta" ><?php _e("Import metadata",'nggallery'); ?></option>
298
+ <option value="rotate_cw" ><?php _e("Rotate images clockwise",'nggallery'); ?></option>
299
+ <option value="rotate_ccw" ><?php _e("Rotate images counter-clockwise",'nggallery'); ?></option>
300
+ <option value="copy_to" ><?php _e("Copy to...",'nggallery'); ?></option>
301
+ <option value="move_to"><?php _e("Move to...",'nggallery'); ?></option>
302
+ <option value="add_tags" ><?php _e("Add tags",'nggallery'); ?></option>
303
+ <option value="delete_tags" ><?php _e("Delete tags",'nggallery'); ?></option>
304
+ <option value="overwrite_tags" ><?php _e("Overwrite tags",'nggallery'); ?></option>
305
  </select>
306
+ <input class="button-secondary" type="submit" name="showThickbox" value="<?php _e('Apply', 'nggallery'); ?>" onclick="if ( !checkSelected() ) return false;" />
307
 
308
  <?php if (($ngg->options['galSort'] == "sortorder") && (!$is_search) ) { ?>
309
+ <input class="button-secondary" type="submit" name="sortGallery" value="<?php _e('Sort gallery', 'nggallery');?>" />
310
  <?php } ?>
311
 
312
+ <input type="submit" name="updatepictures" class="button-primary action" value="<?php _e('Save Changes', 'nggallery');?>" />
313
  </div>
314
  </div>
315
 
330
  if($picturelist) {
331
 
332
  $thumbsize = '';
333
+ $counter = 0;
334
+
335
  if ($ngg->options['thumbfix'])
336
  $thumbsize = 'width="' . $ngg->options['thumbwidth'] . '" height="' . $ngg->options['thumbheight'] . '"';
337
+
 
 
 
338
  foreach($picturelist as $picture) {
339
 
340
  //for search result we need to check the capatibiliy
347
  $exclude = ( $picture->exclude ) ? 'checked="checked"' : '';
348
  $date = mysql2date(get_option('date_format'), $picture->imagedate);
349
  $time = mysql2date(get_option('time_format'), $picture->imagedate);
350
+
351
  ?>
352
  <tr id="picture-<?php echo $pid ?>" class="<?php echo $alternate ?> iedit" valign="top">
353
  <?php
379
  <strong><a href="<?php echo $picture->imageURL; ?>" class="thickbox" title="<?php echo $picture->filename ?>">
380
  <?php echo ( empty($picture->alttext) ) ? $picture->filename : stripslashes(nggGallery::i18n($picture->alttext)); ?>
381
  </a></strong>
382
+ <br /><?php echo $date; ?>
383
+ <?php if ( !empty($picture->meta_data) ): ?>
384
+ <br /><?php echo $picture->meta_data['width']; ?> x <?php echo $picture->meta_data['height']; ?> <?php _e('pixel', 'nggallery'); ?>
385
+ <?php endif; ?>
386
  <p>
387
  <?php
388
  $actions = array();
389
  //TODO:Add a JS edit option
390
  //$actions['edit'] = '<a class="editinline" href="#">' . __('Edit') . '</a>';
391
+ $actions['view'] = '<a class="thickbox" href="' . $picture->imageURL . '" title="' . esc_attr(sprintf(__('View "%s"'), $picture->filename)) . '">' . __('View', 'nggallery') . '</a>';
392
  $actions['meta'] = '<a class="thickbox" href="' . NGGALLERY_URLPATH . 'admin/showmeta.php?id=' . $pid . '" title="' . __('Show Meta data','nggallery') . '">' . __('Meta', 'nggallery') . '</a>';
393
+ $actions['custom_thumb'] = '<a class="thickbox" href="' . NGGALLERY_URLPATH . 'admin/edit-thumbnail.php?id=' . $pid . '" title="' . __('Customize thumbnail','nggallery') . '">' . __('Edit thumb', 'nggallery') . '</a>';
394
+ $actions['rotate'] = '<a class="thickbox" href="' . NGGALLERY_URLPATH . 'admin/rotate.php?id=' . $pid . '" title="' . __('Rotate','nggallery') . '">' . __('Rotate', 'nggallery') . '</a>';
395
+ $actions['delete'] = '<a class="submitdelete" href="' . wp_nonce_url("admin.php?page=nggallery-manage-gallery&amp;mode=delpic&amp;gid=" . $act_gid . "&amp;pid=" . $pid, 'ngg_delpicture'). '" class="delete column-delete" onclick="javascript:check=confirm( \'' . esc_attr(sprintf(__('Delete "%s"' , 'nggallery'), $picture->filename)). '\');if(check==false) return false;">' . __('Delete') . '</a>';
396
  $action_count = count($actions);
397
  $i = 0;
398
  echo '<div class="row-actions">';
407
  <?php
408
  break;
409
  case 'thumbnail' :
410
+ // generate the thumbnail size if the meta data available
411
+ if (is_array ($size = $picture->meta_data['thumbnail']) )
412
+ $thumbsize = 'width="' . $size['width'] . '" height="' . $size['height'] . '"';
413
  ?>
414
+ <td <?php echo $attributes ?>><a href="<?php echo $picture->imageURL . '?' . mt_rand(); ?>" class="thickbox" title="<?php echo $picture->filename ?>">
415
+ <img class="thumb" src="<?php echo $picture->thumbURL . '?' . mt_rand(); ?>" <?php echo $thumbsize ?> id="thumb<?php echo $pid ?>" />
416
  </a>
417
  </td>
418
  <?php
458
 
459
  </tbody>
460
  </table>
461
+ <p class="submit"><input type="submit" class="button-primary action" name="updatepictures" value="<?php _e("Save Changes",'nggallery'); ?>" /></p>
462
  </form>
463
  <br class="clear"/>
464
  </div><!-- /#wrap -->
469
  <?php wp_nonce_field('ngg_thickbox_form') ?>
470
  <input type="hidden" id="entertags_imagelist" name="TB_imagelist" value="" />
471
  <input type="hidden" id="entertags_bulkaction" name="TB_bulkaction" value="" />
472
+ <input type="hidden" name="page" value="manage-images" />
473
  <table width="100%" border="0" cellspacing="3" cellpadding="3" >
474
  <tr>
475
+ <th><?php _e("Enter the tags",'nggallery'); ?> : <input name="taglist" type="text" style="width:90%" value="" /></th>
476
  </tr>
477
  <tr align="right">
478
  <td class="submit">
479
+ <input class="button-primary" type="submit" name="TB_EditTags" value="<?php _e("OK",'nggallery'); ?>" />
480
  &nbsp;
481
+ <input class="button-secondary" type="reset" value="&nbsp;<?php _e("Cancel",'nggallery'); ?>&nbsp;" onclick="tb_remove()"/>
482
  </td>
483
  </tr>
484
  </table>
492
  <?php wp_nonce_field('ngg_thickbox_form') ?>
493
  <input type="hidden" id="selectgallery_imagelist" name="TB_imagelist" value="" />
494
  <input type="hidden" id="selectgallery_bulkaction" name="TB_bulkaction" value="" />
495
+ <input type="hidden" name="page" value="manage-images" />
496
  <table width="100%" border="0" cellspacing="3" cellpadding="3" >
497
  <tr>
498
  <th>
512
  </tr>
513
  <tr align="right">
514
  <td class="submit">
515
+ <input type="submit" class="button-primary" name="TB_SelectGallery" value="<?php _e("OK",'nggallery'); ?>" />
516
  &nbsp;
517
+ <input class="button-secondary" type="reset" value="<?php _e("Cancel",'nggallery'); ?>" onclick="tb_remove()"/>
518
  </td>
519
  </tr>
520
  </table>
522
  </div>
523
  <!-- /#selectgallery -->
524
 
525
+ <!-- #resize_images -->
526
+ <div id="resize_images" style="display: none;" >
527
+ <form id="form-resize-images" method="POST" accept-charset="utf-8">
528
+ <?php wp_nonce_field('ngg_thickbox_form') ?>
529
+ <input type="hidden" id="resize_images_imagelist" name="TB_imagelist" value="" />
530
+ <input type="hidden" id="resize_images_bulkaction" name="TB_bulkaction" value="" />
531
+ <input type="hidden" name="page" value="manage-images" />
532
+ <table width="100%" border="0" cellspacing="3" cellpadding="3" >
533
+ <tr valign="top">
534
+ <td>
535
+ <strong><?php _e('Resize Images to', 'nggallery'); ?>:</strong>
536
+ </td>
537
+ <td>
538
+ <input type="text" size="5" name="imgWidth" value="<?php echo $ngg->options['imgWidth']; ?>" /> x <input type="text" size="5" name="imgHeight" value="<?php echo $ngg->options['imgHeight']; ?>" />
539
+ <br /><small><?php _e('Width x height (in pixel). NextGEN Gallery will keep ratio size','nggallery') ?></small>
540
+ </td>
541
+ </tr>
542
+ <tr align="right">
543
+ <td colspan="2" class="submit">
544
+ <input class="button-primary" type="submit" name="TB_ResizeImages" value="<?php _e('OK', 'nggallery'); ?>" />
545
+ &nbsp;
546
+ <input class="button-secondary" type="reset" value="&nbsp;<?php _e('Cancel', 'nggallery'); ?>&nbsp;" onclick="tb_remove()"/>
547
+ </td>
548
+ </tr>
549
+ </table>
550
+ </form>
551
+ </div>
552
+ <!-- /#resize_images -->
553
+
554
+ <!-- #new_thumbnail -->
555
+ <div id="new_thumbnail" style="display: none;" >
556
+ <form id="form-new-thumbnail" method="POST" accept-charset="utf-8">
557
+ <?php wp_nonce_field('ngg_thickbox_form') ?>
558
+ <input type="hidden" id="new_thumbnail_imagelist" name="TB_imagelist" value="" />
559
+ <input type="hidden" id="new_thumbnail_bulkaction" name="TB_bulkaction" value="" />
560
+ <input type="hidden" name="page" value="manage-images" />
561
+ <table width="100%" border="0" cellspacing="3" cellpadding="3" >
562
+ <tr valign="top">
563
+ <th align="left"><?php _e('Width x height (in pixel)','nggallery') ?></th>
564
+ <td><input type="text" size="5" maxlength="5" name="thumbwidth" value="<?php echo $ngg->options['thumbwidth']; ?>" /> x <input type="text" size="5" maxlength="5" name="thumbheight" value="<?php echo $ngg->options['thumbheight']; ?>" />
565
+ <br /><small><?php _e('These values are maximum values ','nggallery') ?></small></td>
566
+ </tr>
567
+ <tr valign="top">
568
+ <th align="left"><?php _e('Set fix dimension','nggallery') ?></th>
569
+ <td><input type="checkbox" name="thumbfix" value="1" <?php checked('1', $ngg->options['thumbfix']); ?> />
570
+ <br /><small><?php _e('Ignore the aspect ratio, no portrait thumbnails','nggallery') ?></small></td>
571
+ </tr>
572
+ <tr align="right">
573
+ <td colspan="2" class="submit">
574
+ <input class="button-primary" type="submit" name="TB_NewThumbnail" value="<?php _e('OK', 'nggallery');?>" />
575
+ &nbsp;
576
+ <input class="button-secondary" type="reset" value="&nbsp;<?php _e('Cancel', 'nggallery'); ?>&nbsp;" onclick="tb_remove()"/>
577
+ </td>
578
+ </tr>
579
+ </table>
580
+ </form>
581
+ </div>
582
+ <!-- /#new_thumbnail -->
583
+
584
  <script type="text/javascript">
585
  /* <![CDATA[ */
586
  jQuery(document).ready(function(){columns.init('nggallery-manage-images');});
611
  return $gallery_columns;
612
  }
613
 
614
+ ?>
admin/manage-sort.php CHANGED
@@ -43,10 +43,12 @@ function nggallery_sortorder($galleryID = 0){
43
 
44
  //this is the url without any presort variable
45
  $clean_url = 'admin.php?page=nggallery-manage-gallery&amp;mode=sort&amp;gid=' . $galleryID;
 
 
46
 
47
  // In the case somebody presort, then we take this url
48
  if ( isset($_GET['dir']) || isset($_GET['presort']) )
49
- $base_url = $_SERVER['REQUEST_URI'];
50
  else
51
  $base_url = $clean_url;
52
 
@@ -61,19 +63,19 @@ function nggallery_sortorder($galleryID = 0){
61
  <input class="button-primary action" type="submit" name="updateSortorder" onclick="saveImageOrder()" value="<?php _e('Update Sort Order', 'nggallery') ?>" />
62
  </div>
63
  <div class="alignright actions">
64
- <input class="button-secondary action" type="submit" name="backToGallery" value="<?php _e('Back to gallery', 'nggallery') ?>" />
65
  </div>
66
  </div>
67
  <input name="sortorder" type="hidden" />
68
  <ul class="subsubsub">
69
  <li><?php _e('Presort', 'nggallery') ?> :</li>
70
- <li><a href="<?php echo attribute_escape(remove_query_arg('presort', $base_url)); ?>" <?php if ($presort == '') echo 'class="current"'; ?>><?php _e('Unsorted', 'nggallery') ?></a> |</li>
71
- <li><a href="<?php echo attribute_escape(add_query_arg('presort', 'pid', $base_url)); ?>" <?php if ($presort == 'pid') echo 'class="current"'; ?>><?php _e('Image ID', 'nggallery') ?></a> |</li>
72
- <li><a href="<?php echo attribute_escape(add_query_arg('presort', 'filename', $base_url)); ?>" <?php if ($presort == 'filename') echo 'class="current"'; ?>><?php _e('Filename', 'nggallery') ?></a> |</li>
73
- <li><a href="<?php echo attribute_escape(add_query_arg('presort', 'alttext', $base_url)); ?>" <?php if ($presort == 'alttext') echo 'class="current"'; ?>><?php _e('Alt/Title text', 'nggallery') ?></a> |</li>
74
- <li><a href="<?php echo attribute_escape(add_query_arg('presort', 'imagedate', $base_url)); ?>" <?php if ($presort == 'imagedate') echo 'class="current"'; ?>><?php _e('Date/Time', 'nggallery') ?></a> |</li>
75
- <li><a href="<?php echo attribute_escape(add_query_arg('dir', 'ASC', $base_url)); ?>" <?php if ($dir == 'ASC') echo 'class="current"'; ?>><?php _e('Ascending', 'nggallery') ?></a> |</li>
76
- <li><a href="<?php echo attribute_escape(add_query_arg('dir', 'DESC', $base_url)); ?>" <?php if ($dir == 'DESC') echo 'class="current"'; ?>><?php _e('Descending', 'nggallery') ?></a></li>
77
  </ul>
78
  </form>
79
  <div id="debug" style="clear:both"></div>
43
 
44
  //this is the url without any presort variable
45
  $clean_url = 'admin.php?page=nggallery-manage-gallery&amp;mode=sort&amp;gid=' . $galleryID;
46
+ //if we go back , then the mode should be edit
47
+ $back_url = 'admin.php?page=nggallery-manage-gallery&amp;mode=edit&amp;gid=' . $galleryID;
48
 
49
  // In the case somebody presort, then we take this url
50
  if ( isset($_GET['dir']) || isset($_GET['presort']) )
51
+ $base_url = esc_url( $_SERVER['REQUEST_URI'] );
52
  else
53
  $base_url = $clean_url;
54
 
63
  <input class="button-primary action" type="submit" name="updateSortorder" onclick="saveImageOrder()" value="<?php _e('Update Sort Order', 'nggallery') ?>" />
64
  </div>
65
  <div class="alignright actions">
66
+ <a href="<?php echo $back_url; ?>" class="button"><?php _e('Back to gallery', 'nggallery'); ?></a>
67
  </div>
68
  </div>
69
  <input name="sortorder" type="hidden" />
70
  <ul class="subsubsub">
71
  <li><?php _e('Presort', 'nggallery') ?> :</li>
72
+ <li><a href="<?php echo esc_attr(remove_query_arg('presort', $base_url)); ?>" <?php if ($presort == '') echo 'class="current"'; ?>><?php _e('Unsorted', 'nggallery') ?></a> |</li>
73
+ <li><a href="<?php echo esc_attr(add_query_arg('presort', 'pid', $base_url)); ?>" <?php if ($presort == 'pid') echo 'class="current"'; ?>><?php _e('Image ID', 'nggallery') ?></a> |</li>
74
+ <li><a href="<?php echo esc_attr(add_query_arg('presort', 'filename', $base_url)); ?>" <?php if ($presort == 'filename') echo 'class="current"'; ?>><?php _e('Filename', 'nggallery') ?></a> |</li>
75
+ <li><a href="<?php echo esc_attr(add_query_arg('presort', 'alttext', $base_url)); ?>" <?php if ($presort == 'alttext') echo 'class="current"'; ?>><?php _e('Alt/Title text', 'nggallery') ?></a> |</li>
76
+ <li><a href="<?php echo esc_attr(add_query_arg('presort', 'imagedate', $base_url)); ?>" <?php if ($presort == 'imagedate') echo 'class="current"'; ?>><?php _e('Date/Time', 'nggallery') ?></a> |</li>
77
+ <li><a href="<?php echo esc_attr(add_query_arg('dir', 'ASC', $base_url)); ?>" <?php if ($dir == 'ASC') echo 'class="current"'; ?>><?php _e('Ascending', 'nggallery') ?></a> |</li>
78
+ <li><a href="<?php echo esc_attr(add_query_arg('dir', 'DESC', $base_url)); ?>" <?php if ($dir == 'DESC') echo 'class="current"'; ?>><?php _e('Descending', 'nggallery') ?></a></li>
79
  </ul>
80
  </form>
81
  <div id="debug" style="clear:both"></div>
admin/manage.php CHANGED
@@ -20,8 +20,13 @@ class nggManageGallery {
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) )
26
  $this->processor();
27
 
@@ -60,7 +65,7 @@ class nggManageGallery {
60
  if ($gallerypath){
61
 
62
  // delete pictures
63
- //TODO:Remove also Tag reference
64
  $imagelist = $wpdb->get_col("SELECT filename FROM $wpdb->nggpictures WHERE galleryid = '$this->gid' ");
65
  if ($ngg->options['deleteImg']) {
66
  if (is_array($imagelist)) {
@@ -79,7 +84,7 @@ class nggManageGallery {
79
  $delete_galllery = $wpdb->query("DELETE FROM $wpdb->nggallery WHERE gid = $this->gid");
80
 
81
  if($delete_galllery)
82
- nggGallery::show_message( __ngettext( 'Gallery', 'Galleries', 1, 'nggallery' ) . ' \''.$this->gid.'\' '.__('deleted successfully','nggallery'));
83
 
84
  $this->mode = 'main'; // show mainpage
85
  }
@@ -103,10 +108,28 @@ class nggManageGallery {
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';
@@ -114,18 +137,82 @@ class nggManageGallery {
114
  break;
115
  case 'set_watermark':
116
  // Set watermark
117
- nggAdmin::do_ajax_operation( 'set_watermark' , $_POST['doaction'], __('Set watermark','nggallery') );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
118
  break;
119
- case 'new_thumbnail':
120
- // Create new thumbnails
121
- nggAdmin::do_ajax_operation( 'create_thumbnail' , $_POST['doaction'], __('Create new thumbnails','nggallery') );
122
  break;
123
- case 'resize_images':
124
- // Resample images
125
- nggAdmin::do_ajax_operation( 'resize_image' , $_POST['doaction'], __('Resize images','nggallery') );
 
 
126
  break;
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 );
@@ -134,26 +221,45 @@ class nggManageGallery {
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':
145
- // Import Metadata
146
- nggAdmin::import_MetaData($_POST['doaction']);
147
- nggGallery::show_message(__('Import metadata finished',"nggallery"));
148
  break;
149
  }
150
  }
151
-
152
- // will be called after a ajax operation
153
- if (isset ($_POST['ajax_callback'])) {
154
- if ($_POST['ajax_callback'] == 1)
155
- nggGallery::show_message(__('Operation successful. Please clear your browser cache.',"nggallery"));
156
- $this->mode = 'edit';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
157
  }
158
 
159
  if (isset ($_POST['TB_bulkaction']) && isset ($_POST['TB_SelectGallery'])) {
@@ -215,7 +321,7 @@ class nggManageGallery {
215
  }
216
  }
217
 
218
- nggGallery::show_message( __('Tags changed',"nggallery") );
219
  }
220
  }
221
 
@@ -224,9 +330,9 @@ class nggManageGallery {
224
 
225
  check_admin_referer('ngg_updategallery');
226
 
227
- $gallery_title = attribute_escape($_POST['title']);
228
- $gallery_path = attribute_escape($_POST['path']);
229
- $gallery_desc = attribute_escape($_POST['gallerydesc']);
230
  $gallery_pageid = (int) $_POST['pageid'];
231
  $gallery_preview = (int) $_POST['previewpic'];
232
 
@@ -258,8 +364,8 @@ class nggManageGallery {
258
 
259
  check_admin_referer('ngg_updategallery');
260
 
261
- $parent_id = attribute_escape($_POST['parent_id']);
262
- $gallery_title = attribute_escape($_POST['title']);
263
  $gallery_name = $wpdb->get_var("SELECT name FROM $wpdb->nggallery WHERE gid = '$this->gid' ");
264
 
265
  // Create a WP page
@@ -279,17 +385,6 @@ class nggManageGallery {
279
  nggGallery::show_message( __('New gallery page ID','nggallery'). ' ' . $pageid . ' -> <strong>' . $gallery_title . '</strong> ' .__('created','nggallery') );
280
  }
281
  }
282
-
283
- if ( isset ($_POST['backToGallery']) )
284
- $this->mode = 'edit';
285
-
286
- // show sort order
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() {
@@ -376,4 +471,4 @@ class nggManageGallery {
376
  $this->mode = 'edit';
377
  }
378
  }
379
- ?>
20
  $this->pid = (int) $_GET['pid'];
21
  if(isset($_GET['mode']))
22
  $this->mode = trim ($_GET['mode']);
23
+ // Should be only called via manage galleries overview
24
+ if ( $_POST['page'] == 'manage-galleries' )
25
+ $this->post_processor_galleries();
26
+ // Should be only called via a edit single gallery page
27
+ if ( $_POST['page'] == 'manage-images' )
28
+ $this->post_processor_images();
29
+ //Look for other POST process
30
  if ( !empty($_POST) || !empty($_GET) )
31
  $this->processor();
32
 
65
  if ($gallerypath){
66
 
67
  // delete pictures
68
+ //TODO:Remove also Tag reference, look here for ids instead filename
69
  $imagelist = $wpdb->get_col("SELECT filename FROM $wpdb->nggpictures WHERE galleryid = '$this->gid' ");
70
  if ($ngg->options['deleteImg']) {
71
  if (is_array($imagelist)) {
84
  $delete_galllery = $wpdb->query("DELETE FROM $wpdb->nggallery WHERE gid = $this->gid");
85
 
86
  if($delete_galllery)
87
+ nggGallery::show_message( _n( 'Gallery', 'Galleries', 1, 'nggallery' ) . ' \''.$this->gid.'\' '.__('deleted successfully','nggallery'));
88
 
89
  $this->mode = 'main'; // show mainpage
90
  }
108
 
109
  }
110
 
111
+ // will be called after a ajax operation
112
+ if (isset ($_POST['ajax_callback'])) {
113
+ if ($_POST['ajax_callback'] == 1)
114
+ nggGallery::show_message(__('Operation successful. Please clear your browser cache.',"nggallery"));
115
+ }
116
+
117
+ // show sort order
118
+ if ( isset ($_POST['sortGallery']) )
119
+ $this->mode = 'sort';
120
+
121
+ if ( isset ($_GET['s']) )
122
+ $this->search_images();
123
+
124
+ }
125
+
126
+ function post_processor_galleries() {
127
+ global $wpdb, $ngg, $nggdb;
128
+
129
+ // bulk update in a single gallery
130
  if (isset ($_POST['bulkaction']) && isset ($_POST['doaction'])) {
131
+
132
+ check_admin_referer('ngg_bulkgallery');
133
 
134
  switch ($_POST['bulkaction']) {
135
  case 'no_action';
137
  break;
138
  case 'set_watermark':
139
  // Set watermark
140
+ // A prefix 'gallery_' will first fetch all ids from the selected galleries
141
+ nggAdmin::do_ajax_operation( 'gallery_set_watermark' , $_POST['doaction'], __('Set watermark','nggallery') );
142
+ break;
143
+ case 'import_meta':
144
+ // Import Metadata
145
+ // A prefix 'gallery_' will first fetch all ids from the selected galleries
146
+ nggAdmin::do_ajax_operation( 'gallery_import_metadata' , $_POST['doaction'], __('Import metadata','nggallery') );
147
+ break;
148
+ }
149
+ }
150
+
151
+ if (isset ($_POST['addgallery']) && isset ($_POST['galleryname'])){
152
+
153
+ check_admin_referer('ngg_addgallery');
154
+
155
+ // get the default path for a new gallery
156
+ $defaultpath = $ngg->options['gallerypath'];
157
+ $newgallery = esc_attr( $_POST['galleryname']);
158
+ if ( !empty($newgallery) )
159
+ nggAdmin::create_gallery($newgallery, $defaultpath);
160
+ }
161
+
162
+ if (isset ($_POST['TB_bulkaction']) && isset ($_POST['TB_ResizeImages'])) {
163
+
164
+ check_admin_referer('ngg_thickbox_form');
165
+
166
+ //save the new values for the next operation
167
+ $ngg->options['imgWidth'] = (int) $_POST['imgWidth'];
168
+ $ngg->options['imgHeight'] = (int) $_POST['imgHeight'];
169
+ // What is in the case the user has no if cap 'NextGEN Change options' ? Check feedback
170
+ update_option('ngg_options', $ngg->options);
171
+
172
+ $gallery_ids = explode(',', $_POST['TB_imagelist']);
173
+ // A prefix 'gallery_' will first fetch all ids from the selected galleries
174
+ nggAdmin::do_ajax_operation( 'gallery_resize_image' , $gallery_ids, __('Resize images','nggallery') );
175
+ }
176
+
177
+ if (isset ($_POST['TB_bulkaction']) && isset ($_POST['TB_NewThumbnail'])) {
178
+
179
+ check_admin_referer('ngg_thickbox_form');
180
+
181
+ //save the new values for the next operation
182
+ $ngg->options['thumbwidth'] = (int) $_POST['thumbwidth'];
183
+ $ngg->options['thumbheight'] = (int) $_POST['thumbheight'];
184
+ $ngg->options['thumbfix'] = (bool) $_POST['thumbfix'];
185
+ // What is in the case the user has no if cap 'NextGEN Change options' ? Check feedback
186
+ update_option('ngg_options', $ngg->options);
187
+
188
+ $gallery_ids = explode(',', $_POST['TB_imagelist']);
189
+ // A prefix 'gallery_' will first fetch all ids from the selected galleries
190
+ nggAdmin::do_ajax_operation( 'gallery_create_thumbnail' , $gallery_ids, __('Create new thumbnails','nggallery') );
191
+ }
192
+
193
+ }
194
+
195
+ function post_processor_images() {
196
+ global $wpdb, $ngg, $nggdb;
197
+
198
+ // bulk update in a single gallery
199
+ if (isset ($_POST['bulkaction']) && isset ($_POST['doaction'])) {
200
+
201
+ check_admin_referer('ngg_updategallery');
202
+
203
+ switch ($_POST['bulkaction']) {
204
+ case 'no_action';
205
  break;
206
+ case 'rotate_cw':
207
+ nggAdmin::do_ajax_operation( 'rotate_cw' , $_POST['doaction'], __('Rotate images', 'nggallery') );
 
208
  break;
209
+ case 'rotate_ccw':
210
+ nggAdmin::do_ajax_operation( 'rotate_ccw' , $_POST['doaction'], __('Rotate images', 'nggallery') );
211
+ break;
212
+ case 'set_watermark':
213
+ nggAdmin::do_ajax_operation( 'set_watermark' , $_POST['doaction'], __('Set watermark', 'nggallery') );
214
  break;
215
  case 'delete_images':
 
216
  if ( is_array($_POST['doaction']) ) {
217
  foreach ( $_POST['doaction'] as $imageID ) {
218
  $image = $nggdb->find_image( $imageID );
221
  @unlink($image->imagePath);
222
  @unlink($image->thumbPath);
223
  }
224
+ $delete_pic = nggdb::delete_image( $image->pid );
225
  }
226
  }
227
  if($delete_pic)
228
+ nggGallery::show_message(__('Pictures deleted successfully ', 'nggallery'));
229
  }
230
  break;
231
  case 'import_meta':
232
+ nggAdmin::do_ajax_operation( 'import_metadata' , $_POST['doaction'], __('Import metadata', 'nggallery') );
 
 
233
  break;
234
  }
235
  }
236
+
237
+ if (isset ($_POST['TB_bulkaction']) && isset ($_POST['TB_ResizeImages'])) {
238
+
239
+ check_admin_referer('ngg_thickbox_form');
240
+
241
+ //save the new values for the next operation
242
+ $ngg->options['imgWidth'] = (int) $_POST['imgWidth'];
243
+ $ngg->options['imgHeight'] = (int) $_POST['imgHeight'];
244
+
245
+ update_option('ngg_options', $ngg->options);
246
+
247
+ $pic_ids = explode(',', $_POST['TB_imagelist']);
248
+ nggAdmin::do_ajax_operation( 'resize_image' , $pic_ids, __('Resize images','nggallery') );
249
+ }
250
+
251
+ if (isset ($_POST['TB_bulkaction']) && isset ($_POST['TB_NewThumbnail'])) {
252
+
253
+ check_admin_referer('ngg_thickbox_form');
254
+
255
+ //save the new values for the next operation
256
+ $ngg->options['thumbwidth'] = (int) $_POST['thumbwidth'];
257
+ $ngg->options['thumbheight'] = (int) $_POST['thumbheight'];
258
+ $ngg->options['thumbfix'] = (bool) $_POST['thumbfix'];
259
+ update_option('ngg_options', $ngg->options);
260
+
261
+ $pic_ids = explode(',', $_POST['TB_imagelist']);
262
+ nggAdmin::do_ajax_operation( 'create_thumbnail' , $pic_ids, __('Create new thumbnails','nggallery') );
263
  }
264
 
265
  if (isset ($_POST['TB_bulkaction']) && isset ($_POST['TB_SelectGallery'])) {
321
  }
322
  }
323
 
324
+ nggGallery::show_message( __('Tags changed', 'nggallery') );
325
  }
326
  }
327
 
330
 
331
  check_admin_referer('ngg_updategallery');
332
 
333
+ $gallery_title = esc_attr($_POST['title']);
334
+ $gallery_path = esc_attr($_POST['path']);
335
+ $gallery_desc = esc_attr($_POST['gallerydesc']);
336
  $gallery_pageid = (int) $_POST['pageid'];
337
  $gallery_preview = (int) $_POST['previewpic'];
338
 
364
 
365
  check_admin_referer('ngg_updategallery');
366
 
367
+ $parent_id = esc_attr($_POST['parent_id']);
368
+ $gallery_title = esc_attr($_POST['title']);
369
  $gallery_name = $wpdb->get_var("SELECT name FROM $wpdb->nggallery WHERE gid = '$this->gid' ");
370
 
371
  // Create a WP page
385
  nggGallery::show_message( __('New gallery page ID','nggallery'). ' ' . $pageid . ' -> <strong>' . $gallery_title . '</strong> ' .__('created','nggallery') );
386
  }
387
  }
 
 
 
 
 
 
 
 
 
 
 
388
  }
389
 
390
  function update_pictures() {
471
  $this->mode = 'edit';
472
  }
473
  }
474
+ ?>
admin/media-upload.php CHANGED
@@ -68,8 +68,8 @@ function media_upload_nextgen_save_image() {
68
  if ( !empty($_POST['image']) ) foreach ( $_POST['image'] as $image_id => $image ) {
69
 
70
  // Function save desription
71
- $alttext = attribute_escape($image['alttext']);
72
- $description = attribute_escape($image['description']);
73
 
74
  $wpdb->query("UPDATE $wpdb->nggpictures SET alttext= '$alttext', description = '$description' WHERE pid = '$image_id'");
75
 
@@ -87,7 +87,7 @@ function media_upload_nextgen_form($errors) {
87
  $total = 1;
88
  $picarray = false;
89
 
90
- $form_action_url = get_option('siteurl') . "/wp-admin/media-upload.php?type={$GLOBALS['type']}&tab=nextgen&post_id=$post_id";
91
 
92
  // Get number of images in gallery
93
  if ($_REQUEST['select_gal']){
@@ -110,8 +110,8 @@ function media_upload_nextgen_form($errors) {
110
  ?>
111
 
112
  <form id="filter" action="" method="get">
113
- <input type="hidden" name="type" value="<?php echo attribute_escape( $GLOBALS['type'] ); ?>" />
114
- <input type="hidden" name="tab" value="<?php echo attribute_escape( $GLOBALS['tab'] ); ?>" />
115
  <input type="hidden" name="post_id" value="<?php echo (int) $post_id; ?>" />
116
 
117
  <div class="tablenav">
@@ -129,7 +129,7 @@ function media_upload_nextgen_form($errors) {
129
 
130
  <div class="alignleft actions">
131
  <select id="select_gal" name="select_gal" style="width:120px;">;
132
- <option value="0" <?php selected('0', $galleryID); ?> ><?php attribute_escape( _e('No gallery',"nggallery") ); ?></option>
133
  <?php
134
  // Show gallery selection
135
  $gallerylist = $wpdb->get_results("SELECT * FROM $wpdb->nggallery ORDER BY gid ASC");
@@ -141,13 +141,13 @@ function media_upload_nextgen_form($errors) {
141
  }
142
  ?>
143
  </select>
144
- <input type="submit" id="show-gallery" value="<?php attribute_escape( _e('Select &#187;','nggallery') ); ?>" class="button-secondary" />
145
  </div>
146
  <br style="clear:both;" />
147
  </div>
148
  </form>
149
 
150
- <form enctype="multipart/form-data" method="post" action="<?php echo attribute_escape($form_action_url); ?>" class="media-upload-form" id="library-form">
151
 
152
  <?php wp_nonce_field('ngg-media-form'); ?>
153
 
@@ -172,48 +172,48 @@ function media_upload_nextgen_form($errors) {
172
  ?>
173
  <div id='media-item-<?php echo $picid ?>' class='media-item preloaded'>
174
  <div class='filename'></div>
175
- <a class='toggle describe-toggle-on' href='#'><?php attribute_escape( _e('Show', "nggallery") ); ?></a>
176
- <a class='toggle describe-toggle-off' href='#'><?php attribute_escape( _e('Hide', "nggallery") );?></a>
177
  <div class='filename new'><?php echo ( empty($picture->alttext) ) ? wp_html_excerpt($picture->filename,60): stripslashes( wp_html_excerpt($picture->alttext,60) ); ?></div>
178
  <table class='slidetoggle describe startclosed'><tbody>
179
  <tr>
180
- <td rowspan='4'><img class='thumbnail' alt='<?php echo attribute_escape( $picture->alttext ); ?>' src='<?php echo attribute_escape( $picture->thumbURL ); ?>'/></td>
181
- <td><?php attribute_escape( _e('Image ID:', "nggallery") ); ?><?php echo $picid ?></td>
182
  </tr>
183
- <tr><td><?php echo attribute_escape( $picture->filename ); ?></td></tr>
184
- <tr><td><?php echo attribute_escape( stripslashes($picture->alttext) ); ?></td></tr>
185
  <tr><td>&nbsp;</td></tr>
186
  <tr>
187
- <td class="label"><label for="image[<?php echo $picid ?>][alttext]"><?php attribute_escape( _e('Alt/Title text', "nggallery") );?></label></td>
188
- <td class="field"><input id="image[<?php echo $picid ?>][alttext]" name="image[<?php echo $picid ?>][alttext]" value="<?php echo attribute_escape( stripslashes($picture->alttext) ); ?>" type="text"/></td>
189
  </tr>
190
  <tr>
191
- <td class="label"><label for="image[<?php echo $picid ?>][description]"><?php attribute_escape( _e("Description","nggallery") ); ?></label></td>
192
- <td class="field"><textarea name="image[<?php echo $picid ?>][description]" id="image[<?php echo $picid ?>][description]"><?php echo attribute_escape( stripslashes($picture->description) ); ?></textarea></td>
193
  </tr>
194
  <tr class="align">
195
- <td class="label"><label for="image[<?php echo $picid ?>][align]"><?php attribute_escape( _e("Alignment") ); ?></label></td>
196
  <td class="field">
197
  <input name="image[<?php echo $picid ?>][align]" id="image-align-none-<?php echo $picid ?>" checked="checked" value="none" type="radio" />
198
- <label for="image-align-none-<?php echo $picid ?>" class="align image-align-none-label"><?php attribute_escape( _e("None") );?></label>
199
  <input name="image[<?php echo $picid ?>][align]" id="image-align-left-<?php echo $picid ?>" value="left" type="radio" />
200
- <label for="image-align-left-<?php echo $picid ?>" class="align image-align-left-label"><?php attribute_escape( _e("Left") );?></label>
201
  <input name="image[<?php echo $picid ?>][align]" id="image-align-center-<?php echo $picid ?>" value="center" type="radio" />
202
- <label for="image-align-center-<?php echo $picid ?>" class="align image-align-center-label"><?php attribute_escape( _e("Center") );?></label>
203
  <input name="image[<?php echo $picid ?>][align]" id="image-align-right-<?php echo $picid ?>" value="right" type="radio" />
204
- <label for="image-align-right-<?php echo $picid ?>" class="align image-align-right-label"><?php attribute_escape( _e("Right") );?></label>
205
  </td>
206
  </tr>
207
  <tr class="image-size">
208
- <th class="label"><label for="image[<?php echo $picid ?>][size]"><span class="alignleft"><?php attribute_escape( _e("Size") ); ?></span></label>
209
  </th>
210
  <td class="field">
211
  <input name="image[<?php echo $picid ?>][size]" id="image-size-thumb-<?php echo $picid ?>" type="radio" checked="checked" value="thumbnail" />
212
- <label for="image-size-thumb-<?php echo $picid ?>"><?php attribute_escape( _e("Thumbnail") ); ?></label>
213
  <input name="image[<?php echo $picid ?>][size]" id="image-size-full-<?php echo $picid ?>" type="radio" value="full" />
214
- <label for="image-size-full-<?php echo $picid ?>"><?php attribute_escape( _e("Full size") ); ?></label>
215
  <input name="image[<?php echo $picid ?>][size]" id="image-size-singlepic-<?php echo $picid ?>" type="radio" value="singlepic" />
216
- <label for="image-size-singlepic-<?php echo $picid ?>"><?php attribute_escape( _e("Singlepic", "nggallery") ); ?></label>
217
  </td>
218
  </tr>
219
  <tr class="submit">
@@ -221,7 +221,7 @@ function media_upload_nextgen_form($errors) {
221
  <input type="hidden" name="image[<?php echo $picid ?>][thumb]" value="<?php echo $picture->thumbURL ?>" />
222
  <input type="hidden" name="image[<?php echo $picid ?>][url]" value="<?php echo $picture->imageURL ?>" />
223
  </td>
224
- <td class="savesend"><button type="submit" class="button" value="1" name="send[<?php echo $picid ?>]"><?php echo attribute_escape( __('Insert into Post') ); ?></button></td>
225
  </tr>
226
  </tbody></table>
227
  </div>
@@ -231,7 +231,7 @@ function media_upload_nextgen_form($errors) {
231
  ?>
232
  </div>
233
  <p class="ml-submit">
234
- <input type="submit" class="button savebutton" name="save" value="<?php attribute_escape( _e('Save all changes','nggallery') ); ?>" />
235
  </p>
236
  <input type="hidden" name="post_id" id="post_id" value="<?php echo (int) $post_id; ?>" />
237
  <input type="hidden" name="select_gal" id="select_gal" value="<?php echo (int) $galleryID; ?>" />
68
  if ( !empty($_POST['image']) ) foreach ( $_POST['image'] as $image_id => $image ) {
69
 
70
  // Function save desription
71
+ $alttext = esc_attr($image['alttext']);
72
+ $description = esc_attr($image['description']);
73
 
74
  $wpdb->query("UPDATE $wpdb->nggpictures SET alttext= '$alttext', description = '$description' WHERE pid = '$image_id'");
75
 
87
  $total = 1;
88
  $picarray = false;
89
 
90
+ $form_action_url = site_url( "wp-admin/media-upload.php?type={$GLOBALS['type']}&tab=nextgen&post_id=$post_id", 'admin');
91
 
92
  // Get number of images in gallery
93
  if ($_REQUEST['select_gal']){
110
  ?>
111
 
112
  <form id="filter" action="" method="get">
113
+ <input type="hidden" name="type" value="<?php echo esc_attr( $GLOBALS['type'] ); ?>" />
114
+ <input type="hidden" name="tab" value="<?php echo esc_attr( $GLOBALS['tab'] ); ?>" />
115
  <input type="hidden" name="post_id" value="<?php echo (int) $post_id; ?>" />
116
 
117
  <div class="tablenav">
129
 
130
  <div class="alignleft actions">
131
  <select id="select_gal" name="select_gal" style="width:120px;">;
132
+ <option value="0" <?php selected('0', $galleryID); ?> ><?php esc_attr( _e('No gallery',"nggallery") ); ?></option>
133
  <?php
134
  // Show gallery selection
135
  $gallerylist = $wpdb->get_results("SELECT * FROM $wpdb->nggallery ORDER BY gid ASC");
141
  }
142
  ?>
143
  </select>
144
+ <input type="submit" id="show-gallery" value="<?php esc_attr( _e('Select &#187;','nggallery') ); ?>" class="button-secondary" />
145
  </div>
146
  <br style="clear:both;" />
147
  </div>
148
  </form>
149
 
150
+ <form enctype="multipart/form-data" method="post" action="<?php echo esc_attr($form_action_url); ?>" class="media-upload-form" id="library-form">
151
 
152
  <?php wp_nonce_field('ngg-media-form'); ?>
153
 
172
  ?>
173
  <div id='media-item-<?php echo $picid ?>' class='media-item preloaded'>
174
  <div class='filename'></div>
175
+ <a class='toggle describe-toggle-on' href='#'><?php esc_attr( _e('Show', "nggallery") ); ?></a>
176
+ <a class='toggle describe-toggle-off' href='#'><?php esc_attr( _e('Hide', "nggallery") );?></a>
177
  <div class='filename new'><?php echo ( empty($picture->alttext) ) ? wp_html_excerpt($picture->filename,60): stripslashes( wp_html_excerpt($picture->alttext,60) ); ?></div>
178
  <table class='slidetoggle describe startclosed'><tbody>
179
  <tr>
180
+ <td rowspan='4'><img class='thumbnail' alt='<?php echo esc_attr( $picture->alttext ); ?>' src='<?php echo esc_attr( $picture->thumbURL ); ?>'/></td>
181
+ <td><?php esc_attr( _e('Image ID:', "nggallery") ); ?><?php echo $picid ?></td>
182
  </tr>
183
+ <tr><td><?php echo esc_attr( $picture->filename ); ?></td></tr>
184
+ <tr><td><?php echo esc_attr( stripslashes($picture->alttext) ); ?></td></tr>
185
  <tr><td>&nbsp;</td></tr>
186
  <tr>
187
+ <td class="label"><label for="image[<?php echo $picid ?>][alttext]"><?php esc_attr( _e('Alt/Title text', "nggallery") );?></label></td>
188
+ <td class="field"><input id="image[<?php echo $picid ?>][alttext]" name="image[<?php echo $picid ?>][alttext]" value="<?php echo esc_attr( stripslashes($picture->alttext) ); ?>" type="text"/></td>
189
  </tr>
190
  <tr>
191
+ <td class="label"><label for="image[<?php echo $picid ?>][description]"><?php esc_attr( _e("Description","nggallery") ); ?></label></td>
192
+ <td class="field"><textarea name="image[<?php echo $picid ?>][description]" id="image[<?php echo $picid ?>][description]"><?php echo esc_attr( stripslashes($picture->description) ); ?></textarea></td>
193
  </tr>
194
  <tr class="align">
195
+ <td class="label"><label for="image[<?php echo $picid ?>][align]"><?php esc_attr( _e("Alignment") ); ?></label></td>
196
  <td class="field">
197
  <input name="image[<?php echo $picid ?>][align]" id="image-align-none-<?php echo $picid ?>" checked="checked" value="none" type="radio" />
198
+ <label for="image-align-none-<?php echo $picid ?>" class="align image-align-none-label"><?php esc_attr( _e("None") );?></label>
199
  <input name="image[<?php echo $picid ?>][align]" id="image-align-left-<?php echo $picid ?>" value="left" type="radio" />
200
+ <label for="image-align-left-<?php echo $picid ?>" class="align image-align-left-label"><?php esc_attr( _e("Left") );?></label>
201
  <input name="image[<?php echo $picid ?>][align]" id="image-align-center-<?php echo $picid ?>" value="center" type="radio" />
202
+ <label for="image-align-center-<?php echo $picid ?>" class="align image-align-center-label"><?php esc_attr( _e("Center") );?></label>
203
  <input name="image[<?php echo $picid ?>][align]" id="image-align-right-<?php echo $picid ?>" value="right" type="radio" />
204
+ <label for="image-align-right-<?php echo $picid ?>" class="align image-align-right-label"><?php esc_attr( _e("Right") );?></label>
205
  </td>
206
  </tr>
207
  <tr class="image-size">
208
+ <th class="label"><label for="image[<?php echo $picid ?>][size]"><span class="alignleft"><?php esc_attr( _e("Size") ); ?></span></label>
209
  </th>
210
  <td class="field">
211
  <input name="image[<?php echo $picid ?>][size]" id="image-size-thumb-<?php echo $picid ?>" type="radio" checked="checked" value="thumbnail" />
212
+ <label for="image-size-thumb-<?php echo $picid ?>"><?php esc_attr( _e("Thumbnail") ); ?></label>
213
  <input name="image[<?php echo $picid ?>][size]" id="image-size-full-<?php echo $picid ?>" type="radio" value="full" />
214
+ <label for="image-size-full-<?php echo $picid ?>"><?php esc_attr( _e("Full size") ); ?></label>
215
  <input name="image[<?php echo $picid ?>][size]" id="image-size-singlepic-<?php echo $picid ?>" type="radio" value="singlepic" />
216
+ <label for="image-size-singlepic-<?php echo $picid ?>"><?php esc_attr( _e("Singlepic", "nggallery") ); ?></label>
217
  </td>
218
  </tr>
219
  <tr class="submit">
221
  <input type="hidden" name="image[<?php echo $picid ?>][thumb]" value="<?php echo $picture->thumbURL ?>" />
222
  <input type="hidden" name="image[<?php echo $picid ?>][url]" value="<?php echo $picture->imageURL ?>" />
223
  </td>
224
+ <td class="savesend"><button type="submit" class="button" value="1" name="send[<?php echo $picid ?>]"><?php echo esc_attr( __('Insert into Post') ); ?></button></td>
225
  </tr>
226
  </tbody></table>
227
  </div>
231
  ?>
232
  </div>
233
  <p class="ml-submit">
234
+ <input type="submit" class="button savebutton" name="save" value="<?php esc_attr( _e('Save all changes','nggallery') ); ?>" />
235
  </p>
236
  <input type="hidden" name="post_id" id="post_id" value="<?php echo (int) $post_id; ?>" />
237
  <input type="hidden" name="select_gal" id="select_gal" value="<?php echo (int) $galleryID; ?>" />
admin/overview.php CHANGED
@@ -8,12 +8,11 @@ if(preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die('You
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">
@@ -38,31 +37,10 @@ function nggallery_admin_overview() {
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
  /**
65
- * Show the server settings
66
  *
67
  * @return void
68
  */
@@ -90,7 +68,7 @@ function ngg_overview_server() {
90
  }
91
 
92
  /**
93
- * Show the GD ibfos
94
  *
95
  * @return void
96
  */
@@ -109,7 +87,7 @@ function ngg_overview_graphic_lib() {
109
  }
110
 
111
  /**
112
- * Show the GD ibfos
113
  *
114
  * @return void
115
  */
@@ -164,7 +142,6 @@ function ngg_overview_news(){
164
  ?>
165
  <div class="rss-widget">
166
  <?php
167
- // $rss = @fetch_rss('http://alexrabe.boelinger.com/?tag=nextgen-gallery&feed=rss2');
168
  $rss = @fetch_rss('http://feeds.feedburner.com/alexrabe/');
169
 
170
  if ( isset($rss->items) && 0 != count($rss->items) )
@@ -210,19 +187,19 @@ function ngg_overview_right_now() {
210
  <tbody>
211
  <tr class="first">
212
  <td class="first b"><a href="admin.php?page=nggallery-add-gallery"><?php echo $images; ?></a></td>
213
- <td class="t"><?php echo __ngettext( 'Image', 'Images', $images, 'nggallery' ); ?></td>
214
  <td class="b"></td>
215
  <td class="last"></td>
216
  </tr>
217
  <tr>
218
  <td class="first b"><a href="admin.php?page=nggallery-manage-gallery"><?php echo $galleries; ?></a></td>
219
- <td class="t"><?php echo __ngettext( 'Gallery', 'Galleries', $galleries, 'nggallery' ); ?></td>
220
  <td class="b"></td>
221
  <td class="last"></td>
222
  </tr>
223
  <tr>
224
  <td class="first b"><a href="admin.php?page=nggallery-manage-album"><?php echo $albums; ?></a></td>
225
- <td class="t"><?php echo __ngettext( 'Album', 'Albums', $albums, 'nggallery' ); ?></td>
226
  <td class="b"></td>
227
  <td class="last"></td>
228
  </tr>
@@ -248,9 +225,14 @@ add_meta_box('dashboard_right_now', __('Welcome to NextGEN Gallery !', 'nggaller
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
 
253
- // ***************************************************************
 
 
 
 
254
  function ngg_gd_info() {
255
 
256
  if(function_exists("gd_info")){
@@ -268,18 +250,27 @@ function ngg_gd_info() {
268
  }
269
  }
270
 
271
- // ***************************************************************
272
- function ngg_gd_yesNo($bool){
 
 
 
 
 
273
  if($bool)
274
  return __('Yes', 'nggallery');
275
  else
276
  return __('No', 'nggallery');
277
  }
278
 
279
- // ***************************************************************
 
 
 
 
 
 
280
  function ngg_get_serverinfo() {
281
- // thx to GaMerZ for WP-ServerInfo
282
- // http://www.lesterchan.net
283
 
284
  global $wpdb;
285
  // Get MYSQL Version
@@ -297,6 +288,9 @@ function ngg_get_serverinfo() {
297
  // Get PHP Max Upload Size
298
  if(ini_get('upload_max_filesize')) $upload_max = ini_get('upload_max_filesize');
299
  else $upload_max = __('N/A', 'nggallery');
 
 
 
300
  // Get PHP Max Post Size
301
  if(ini_get('post_max_size')) $post_max = ini_get('post_max_size');
302
  else $post_max = __('N/A', 'nggallery');
@@ -320,7 +314,7 @@ function ngg_get_serverinfo() {
320
  else $xml = __('No', 'nggallery');
321
 
322
  ?>
323
- <li><?php _e('Operating System', 'nggallery'); ?> : <span><?php echo PHP_OS; ?></span></li>
324
  <li><?php _e('Server', 'nggallery'); ?> : <span><?php echo $_SERVER["SERVER_SOFTWARE"]; ?></span></li>
325
  <li><?php _e('Memory usage', 'nggallery'); ?> : <span><?php echo $memory_usage; ?></span></li>
326
  <li><?php _e('MYSQL Version', 'nggallery'); ?> : <span><?php echo $sqlversion; ?></span></li>
@@ -331,6 +325,7 @@ function ngg_get_serverinfo() {
331
  <li><?php _e('PHP Memory Limit', 'nggallery'); ?> : <span><?php echo $memory_limit; ?></span></li>
332
  <li><?php _e('PHP Max Upload Size', 'nggallery'); ?> : <span><?php echo $upload_max; ?></span></li>
333
  <li><?php _e('PHP Max Post Size', 'nggallery'); ?> : <span><?php echo $post_max; ?></span></li>
 
334
  <li><?php _e('PHP Max Script Execute Time', 'nggallery'); ?> : <span><?php echo $max_execute; ?>s</span></li>
335
  <li><?php _e('PHP Exif support', 'nggallery'); ?> : <span><?php echo $exif; ?></span></li>
336
  <li><?php _e('PHP IPTC support', 'nggallery'); ?> : <span><?php echo $iptc; ?></span></li>
@@ -338,6 +333,19 @@ function ngg_get_serverinfo() {
338
  <?php
339
  }
340
 
 
 
 
 
 
 
 
 
 
 
 
 
 
341
  /**
342
  * WPMU feature taken from Z-Space Upload Quotas
343
  * @author Dylan Reeve
@@ -382,7 +390,7 @@ class ngg_SpaceManager {
382
  );
383
 
384
  $quota = ngg_SpaceManager::getQuota() * 1024 * 1024;
385
- $used = get_dirsize( constant( "ABSPATH" ) . constant( "UPLOADS" ) );
386
  // $used = get_dirsize( ABSPATH."wp-content/blogs.dir/".$blog_id."/files" );
387
 
388
  if ($used > $quota) $percentused = '100';
@@ -391,7 +399,7 @@ class ngg_SpaceManager {
391
  $remaining = $quota - $used;
392
  $percentremain = 100 - $percentused;
393
 
394
- $out = "";
395
  $out .= '<div id="spaceused"> <h3>'.__('Storage Space','nggallery').'</h3>';
396
 
397
  if ($settings['used']['display']) {
@@ -484,4 +492,70 @@ function ngg_get_phpinfo() {
484
 
485
  return $phpinfo;
486
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
487
  ?>
8
  * @return mixed content
9
  */
10
  function nggallery_admin_overview() {
11
+
 
 
12
  ?>
13
  <div class="wrap ngg-wrap">
14
  <h2><?php _e('NextGEN Gallery Overview', 'nggallery') ?></h2>
15
+ <?php if (version_compare(PHP_VERSION, '5.0.0', '<')) ngg_check_for_PHP5(); ?>
16
  <div id="dashboard-widgets-wrap" class="ngg-overview">
17
  <div id="dashboard-widgets" class="metabox-holder">
18
  <div id="post-body">
37
  //]]>
38
  </script>
39
  <?php
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
40
  }
41
 
42
  /**
43
+ * Show the server settings in a dashboard widget
44
  *
45
  * @return void
46
  */
68
  }
69
 
70
  /**
71
+ * Show the GD lib info in a dashboard widget
72
  *
73
  * @return void
74
  */
87
  }
88
 
89
  /**
90
+ * Show the most recent donators
91
  *
92
  * @return void
93
  */
142
  ?>
143
  <div class="rss-widget">
144
  <?php
 
145
  $rss = @fetch_rss('http://feeds.feedburner.com/alexrabe/');
146
 
147
  if ( isset($rss->items) && 0 != count($rss->items) )
187
  <tbody>
188
  <tr class="first">
189
  <td class="first b"><a href="admin.php?page=nggallery-add-gallery"><?php echo $images; ?></a></td>
190
+ <td class="t"><?php echo _n( 'Image', 'Images', $images, 'nggallery' ); ?></td>
191
  <td class="b"></td>
192
  <td class="last"></td>
193
  </tr>
194
  <tr>
195
  <td class="first b"><a href="admin.php?page=nggallery-manage-gallery"><?php echo $galleries; ?></a></td>
196
+ <td class="t"><?php echo _n( 'Gallery', 'Galleries', $galleries, 'nggallery' ); ?></td>
197
  <td class="b"></td>
198
  <td class="last"></td>
199
  </tr>
200
  <tr>
201
  <td class="first b"><a href="admin.php?page=nggallery-manage-album"><?php echo $albums; ?></a></td>
202
+ <td class="t"><?php echo _n( 'Album', 'Albums', $albums, 'nggallery' ); ?></td>
203
  <td class="b"></td>
204
  <td class="last"></td>
205
  </tr>
225
  add_meta_box('dashboard_primary', __('Latest News', 'nggallery'), 'ngg_overview_news', 'ngg_overview', 'right', 'core');
226
  add_meta_box('ngg_lastdonators', __('Recent donators', 'nggallery'), 'ngg_overview_donators', 'ngg_overview', 'left', 'core');
227
  add_meta_box('ngg_server', __('Server Settings', 'nggallery'), 'ngg_overview_server', 'ngg_overview', 'left', 'core');
228
+ add_meta_box('dashboard_plugins', __('Related plugins', 'nggallery'), 'ngg_related_plugins', 'ngg_overview', 'right', 'core');
229
  add_meta_box('ngg_gd_lib', __('Graphic Library', 'nggallery'), 'ngg_overview_graphic_lib', 'ngg_overview', 'right', 'core');
230
 
231
+ /**
232
+ * Show GD Library version information
233
+ *
234
+ * @return void
235
+ */
236
  function ngg_gd_info() {
237
 
238
  if(function_exists("gd_info")){
250
  }
251
  }
252
 
253
+ /**
254
+ * Return localized Yes or no
255
+ *
256
+ * @param bool $bool
257
+ * @return return 'Yes' | 'No'
258
+ */
259
+ function ngg_gd_yesNo( $bool ){
260
  if($bool)
261
  return __('Yes', 'nggallery');
262
  else
263
  return __('No', 'nggallery');
264
  }
265
 
266
+
267
+ /**
268
+ * Show up some server infor's
269
+ * @author GamerZ (http://www.lesterchan.net)
270
+ *
271
+ * @return void
272
+ */
273
  function ngg_get_serverinfo() {
 
 
274
 
275
  global $wpdb;
276
  // Get MYSQL Version
288
  // Get PHP Max Upload Size
289
  if(ini_get('upload_max_filesize')) $upload_max = ini_get('upload_max_filesize');
290
  else $upload_max = __('N/A', 'nggallery');
291
+ // Get PHP Output buffer Size
292
+ if(ini_get('output_buffering')) $output_buffer = ini_get('output_buffering');
293
+ else $output_buffer = __('N/A', 'nggallery');
294
  // Get PHP Max Post Size
295
  if(ini_get('post_max_size')) $post_max = ini_get('post_max_size');
296
  else $post_max = __('N/A', 'nggallery');
314
  else $xml = __('No', 'nggallery');
315
 
316
  ?>
317
+ <li><?php _e('Operating System', 'nggallery'); ?> : <span><?php echo PHP_OS; ?>&nbsp;(<?php echo (PHP_INT_SIZE * 8) ?>&nbsp;Bit)</span></li>
318
  <li><?php _e('Server', 'nggallery'); ?> : <span><?php echo $_SERVER["SERVER_SOFTWARE"]; ?></span></li>
319
  <li><?php _e('Memory usage', 'nggallery'); ?> : <span><?php echo $memory_usage; ?></span></li>
320
  <li><?php _e('MYSQL Version', 'nggallery'); ?> : <span><?php echo $sqlversion; ?></span></li>
325
  <li><?php _e('PHP Memory Limit', 'nggallery'); ?> : <span><?php echo $memory_limit; ?></span></li>
326
  <li><?php _e('PHP Max Upload Size', 'nggallery'); ?> : <span><?php echo $upload_max; ?></span></li>
327
  <li><?php _e('PHP Max Post Size', 'nggallery'); ?> : <span><?php echo $post_max; ?></span></li>
328
+ <li><?php _e('PHP Output Buffer Size', 'nggallery'); ?> : <span><?php echo $output_buffer; ?></span></li>
329
  <li><?php _e('PHP Max Script Execute Time', 'nggallery'); ?> : <span><?php echo $max_execute; ?>s</span></li>
330
  <li><?php _e('PHP Exif support', 'nggallery'); ?> : <span><?php echo $exif; ?></span></li>
331
  <li><?php _e('PHP IPTC support', 'nggallery'); ?> : <span><?php echo $iptc; ?></span></li>
333
  <?php
334
  }
335
 
336
+ /**
337
+ * Inform about the end of PHP4
338
+ *
339
+ * @return void
340
+ */
341
+ function ngg_check_for_PHP5() {
342
+ ?>
343
+ <div class="updated">
344
+ <p><?php _e('NextGEN Gallery contains some functions which are only available under PHP 5.2. You are using the old PHP 4 version, upgrade now! It\'s no longer supported by the PHP group. Many shared hosting providers offer both PHP 4 and PHP 5, running simultaneously. Ask your provider if they can do this.', 'nggallery'); ?></p>
345
+ </div>
346
+ <?php
347
+ }
348
+
349
  /**
350
  * WPMU feature taken from Z-Space Upload Quotas
351
  * @author Dylan Reeve
390
  );
391
 
392
  $quota = ngg_SpaceManager::getQuota() * 1024 * 1024;
393
+ $used = get_dirsize( constant( 'ABSPATH' ) . constant( 'UPLOADS' ) );
394
  // $used = get_dirsize( ABSPATH."wp-content/blogs.dir/".$blog_id."/files" );
395
 
396
  if ($used > $quota) $percentused = '100';
399
  $remaining = $quota - $used;
400
  $percentremain = 100 - $percentused;
401
 
402
+ $out = '';
403
  $out .= '<div id="spaceused"> <h3>'.__('Storage Space','nggallery').'</h3>';
404
 
405
  if ($settings['used']['display']) {
492
 
493
  return $phpinfo;
494
  }
495
+
496
+ /**
497
+ * Show NextGEN Gallery related plugins. Fetch plugins from wp.org which have added 'nextgen-gallery' as tag in readme.txt
498
+ *
499
+ * @return postbox output
500
+ */
501
+ function ngg_related_plugins() {
502
+ include(ABSPATH . 'wp-admin/includes/plugin-install.php');
503
+
504
+ // this api sucks , tags will not be used in the correct way : nextgen-gallery cannot be searched
505
+ $api = plugins_api('query_plugins', array('search' => 'nextgen') );
506
+
507
+ if ( is_wp_error($api) )
508
+ return;
509
+
510
+ // don't show my own plugin :-) and some other plugins, which come up with the search result
511
+ $blacklist = array(
512
+ 'nextgen-gallery',
513
+ 'galleria-wp',
514
+ 'photosmash-galleries',
515
+ 'flash-album-gallery',
516
+ 'events-calendar',
517
+ 'widgets',
518
+ 'side-content',
519
+ 'featurific-for-wordpress',
520
+ 'smooth-gallery-replacement',
521
+ 'livesig',
522
+ 'wordpress-gallery-slideshow',
523
+ 'nkmimagefield',
524
+ 'nextgen-ajax'
525
+ );
526
+
527
+ $i = 0;
528
+ while ( $i < 4 ) {
529
+
530
+ // pick them randomly
531
+ if ( 0 == count($api->plugins) )
532
+ return;
533
+
534
+ $key = array_rand($api->plugins);
535
+ $plugin = $api->plugins[$key];
536
+
537
+ // don't forget to remove them
538
+ unset($api->plugins[$key]);
539
+
540
+ if ( !isset($plugin->name) )
541
+ continue;
542
+
543
+ if ( in_array($plugin->slug , $blacklist ) )
544
+ continue;
545
+
546
+ $link = esc_url( $plugin->homepage );
547
+ $title = esc_html( $plugin->name );
548
+
549
+ $description = esc_html( strip_tags(@html_entity_decode($plugin->short_description, ENT_QUOTES, get_option('blog_charset'))) );
550
+
551
+ $ilink = wp_nonce_url('plugin-install.php?tab=plugin-information&plugin=' . $plugin->slug, 'install-plugin_' . $plugin->slug) .
552
+ '&amp;TB_iframe=true&amp;width=600&amp;height=800';
553
+
554
+ echo "<h5><a href='$link'>$title</a></h5>&nbsp;<span>(<a href='$ilink' class='thickbox' title='$title'>" . __( 'Install' ) . "</a>)</span>\n";
555
+ echo "<p>$description<strong> " . __( 'Author' ) . " : </strong>$plugin->author</p>\n";
556
+
557
+ $i++;
558
+ }
559
+
560
+ }
561
  ?>
admin/roles.php CHANGED
@@ -74,45 +74,65 @@ if ( isset($_POST['update_cap']) ) {
74
 
75
  }
76
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
77
  function ngg_get_role($capability){
78
  // This function return the lowest roles which has the capabilities
79
- $check_order = array("subscriber", "contributor", "author", "editor", "administrator");
80
 
81
  $args = array_slice(func_get_args(), 1);
82
  $args = array_merge(array($capability), $args);
83
 
84
- foreach ($check_order as $role) {
85
- $check_role = get_role($role);
86
-
87
  if ( empty($check_role) )
88
  return false;
89
 
90
  if (call_user_func_array(array(&$check_role, 'has_cap'), $args))
91
- return $role;
92
  }
93
  return false;
94
  }
95
 
96
  function ngg_set_capability($lowest_role, $capability){
97
  // This function set or remove the $capability
98
- $check_order = array("subscriber", "contributor", "author", "editor", "administrator");
99
 
100
  $add_capability = false;
101
 
102
- foreach ($check_order as $role) {
103
- if ($lowest_role == $role)
 
 
104
  $add_capability = true;
105
-
106
- $the_role = get_role($role);
107
 
108
- // If you rename the roles, the please use the role manager plugin
109
 
110
  if ( empty($the_role) )
111
  continue;
112
 
113
  $add_capability ? $the_role->add_cap($capability) : $the_role->remove_cap($capability) ;
114
  }
115
-
116
  }
117
 
118
  ?>
74
 
75
  }
76
 
77
+ function ngg_get_sorted_roles() {
78
+ // This function returns all roles, sorted by user level (lowest to highest)
79
+ global $wp_roles;
80
+ $roles = $wp_roles->role_objects;
81
+ $sorted = array();
82
+
83
+ if( class_exists('RoleManager') ) {
84
+ foreach( $roles as $role_key => $role_name ) {
85
+ $role = get_role($role_key);
86
+ if( empty($role) ) continue;
87
+ $role_user_level = array_reduce(array_keys($role->capabilities), array('WP_User', 'level_reduction'), 0);
88
+ $sorted[$role_user_level] = $role;
89
+ }
90
+ $sorted = array_values($sorted);
91
+ } else {
92
+ $role_order = array("subscriber", "contributor", "author", "editor", "administrator");
93
+ foreach($role_order as $role_key) {
94
+ $sorted[$role_name] = get_role($role_key);
95
+ }
96
+ }
97
+ return $sorted;
98
+ }
99
+
100
  function ngg_get_role($capability){
101
  // This function return the lowest roles which has the capabilities
102
+ $check_order = ngg_get_sorted_roles();
103
 
104
  $args = array_slice(func_get_args(), 1);
105
  $args = array_merge(array($capability), $args);
106
 
107
+ foreach ($check_order as $check_role) {
 
 
108
  if ( empty($check_role) )
109
  return false;
110
 
111
  if (call_user_func_array(array(&$check_role, 'has_cap'), $args))
112
+ return $check_role->name;
113
  }
114
  return false;
115
  }
116
 
117
  function ngg_set_capability($lowest_role, $capability){
118
  // This function set or remove the $capability
119
+ $check_order = ngg_get_sorted_roles();
120
 
121
  $add_capability = false;
122
 
123
+ foreach ($check_order as $the_role) {
124
+ $role = $the_role->name;
125
+
126
+ if ( $lowest_role == $role )
127
  $add_capability = true;
 
 
128
 
129
+ // If you rename the roles, then please use the role manager plugin
130
 
131
  if ( empty($the_role) )
132
  continue;
133
 
134
  $add_capability ? $the_role->add_cap($capability) : $the_role->remove_cap($capability) ;
135
  }
 
136
  }
137
 
138
  ?>
admin/rotate.php ADDED
@@ -0,0 +1,95 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+
4
+ Custom thumbnail for NGG
5
+ Author : Simone Fumagalli | simone@iliveinperego.com
6
+ More info and update : http://www.iliveinperego.com/rotate_for_ngg/
7
+
8
+ Credits:
9
+ NextGen Gallery : Alex Rabe | http://alexrabe.boelinger.com/wordpress-plugins/nextgen-gallery/
10
+
11
+ **/
12
+
13
+ require_once( dirname( dirname(__FILE__) ) . '/ngg-config.php');
14
+ require_once( NGGALLERY_ABSPATH . '/lib/image.php' );
15
+
16
+ if ( !is_user_logged_in() )
17
+ die(__('Cheatin&#8217; uh?'));
18
+
19
+ if ( !current_user_can('NextGEN Manage gallery') )
20
+ die(__('Cheatin&#8217; uh?'));
21
+
22
+ global $wpdb;
23
+
24
+ $id = (int) $_GET['id'];
25
+
26
+ // let's get the image data
27
+ $picture = nggdb::find_image($id);
28
+
29
+ include_once( nggGallery::graphic_library() );
30
+ $ngg_options = get_option('ngg_options');
31
+
32
+ $thumb = new ngg_Thumbnail($picture->imagePath, TRUE);
33
+ $thumb->resize(350,350);
34
+
35
+ // we need the new dimension
36
+ $resizedPreviewInfo = $thumb->newDimensions;
37
+ $thumb->destruct();
38
+
39
+ $preview_image = NGGALLERY_URLPATH . 'nggshow.php?pid=' . $picture->pid . '&amp;width=350&amp;height=350';
40
+
41
+ ?>
42
+
43
+ <script language="JavaScript">
44
+ <!--
45
+
46
+ function rotateImage() {
47
+
48
+ var rotate_angle = jQuery('input[name=ra]:checked').val();
49
+
50
+ jQuery.ajax({
51
+ url: "admin-ajax.php",
52
+ type : "POST",
53
+ data: {action: 'rotateImage', id: <?php echo $id ?>, ra: rotate_angle},
54
+ cache: false,
55
+ success: function (msg) { showMessage('<?php _e('Image rotated', 'nggallery'); ?>') },
56
+ error: function (msg, status, errorThrown) { showMessage('<?php _e('Error rotating thumbnail', 'nggallery'); ?>') }
57
+ });
58
+
59
+ }
60
+
61
+ function showMessage(message) {
62
+ jQuery('#thumbMsg').html(message);
63
+ jQuery('#thumbMsg').css({'display':'block'});
64
+ setTimeout(function(){ jQuery('#thumbMsg').fadeOut('slow'); }, 1500);
65
+
66
+ var d = new Date();
67
+ newUrl = jQuery("#imageToEdit").attr("src") + "?" + d.getTime();
68
+ jQuery("#imageToEdit").attr("src" , newUrl);
69
+
70
+ }
71
+
72
+ -->
73
+ </script>
74
+
75
+ <table width="98%" align="center" style="border:1px solid #DADADA">
76
+ <tr style="height : 360px;">
77
+ <td valign="middle" align="center" style="background-color:#DADADA; width : 370px;">
78
+ <img src="<?php echo $preview_image ?>" alt="" id="imageToEdit" />
79
+ </td>
80
+ <td>
81
+ <input type="radio" name="ra" value="cw" /><?php _e('90&deg; clockwise', 'nggallery'); ?><br />
82
+ <input type="radio" name="ra" value="ccw" /><?php _e('90&deg; anticlockwise', 'nggallery'); ?><br />
83
+ <input type="radio" name="ra" value="fv" /><?php _e('Flip vertically', 'nggallery'); ?><br />
84
+ <input type="radio" name="ra" value="fh" /><?php _e('Flip horizontally', 'nggallery'); ?>
85
+ </td>
86
+ </tr>
87
+ <tr style="background-color:#DADADA;">
88
+
89
+ <td colspan="2">
90
+ <input type="button" name="update" value="<?php _e('Update', 'nggallery'); ?>" onclick="rotateImage()" class="button-secondary" style="float:right; margin-left:4px;"/>
91
+ <div id="thumbMsg" style="color:#FF0000; display : none;font-size:11px; float:right; width:60%; height:2em; line-height:2em;"></div>
92
+
93
+ </td>
94
+ </tr>
95
+ </table>
admin/settings.php CHANGED
@@ -66,7 +66,24 @@ if(preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die('You
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) {
@@ -109,7 +126,7 @@ if(preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die('You
109
  <li><a href="#generaloptions"><?php _e('General Options', 'nggallery') ;?></a></li>
110
  <li><a href="#thumbnails"><?php _e('Thumbnails', 'nggallery') ;?></a></li>
111
  <li><a href="#images"><?php _e('Images', 'nggallery') ;?></a></li>
112
- <li><a href="#gallery"><?php echo __ngettext( 'Gallery', 'Galleries', 1, 'nggallery' ) ;?></a></li>
113
  <li><a href="#effects"><?php _e('Effects', 'nggallery') ;?></a></li>
114
  <li><a href="#watermark"><?php _e('Watermark', 'nggallery') ;?></a></li>
115
  <li><a href="#slideshow"><?php _e('Slideshow', 'nggallery') ;?></a></li>
@@ -124,11 +141,11 @@ if(preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die('You
124
  <input type="hidden" name="page_options" value="gallerypath,deleteImg,useMediaRSS,usePicLens,usePermalinks,graphicLibrary,imageMagickDir,activateTags,appendType,maxImages" />
125
  <table class="form-table ngg-options">
126
  <tr valign="top">
127
- <th align="left"><?php _e('Gallery path','nggallery') ?></th>
128
  <td><input <?php if (IS_WPMU) echo 'readonly = "readonly"'; ?> type="text" size="35" name="gallerypath" value="<?php echo $ngg->options['gallerypath']; ?>" />
129
  <span class="setting-description"><?php _e('This is the default path for all galleries','nggallery') ?></span></td>
130
  </tr>
131
- <tr valign="top">
132
  <th align="left"><?php _e('Delete image files','nggallery') ?></th>
133
  <td><input <?php if (IS_WPMU) echo 'readonly = "readonly"'; ?> type="checkbox" name="deleteImg" value="1" <?php checked('1', $ngg->options['deleteImg']); ?> />
134
  <?php _e('Delete files, when removing a gallery in the database','nggallery') ?></td>
@@ -138,7 +155,7 @@ if(preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die('You
138
  <td><input type="checkbox" name="usePermalinks" value="1" <?php checked('1', $ngg->options['usePermalinks']); ?> />
139
  <?php _e('When you activate this option, you need to update your permalink structure one time.','nggallery') ?></td>
140
  </tr>
141
- <tr>
142
  <th valign="top"><?php _e('Select graphic library','nggallery') ?>:</th>
143
  <td><label><input name="graphicLibrary" type="radio" value="gd" <?php checked('gd', $ngg->options['graphicLibrary']); ?> /> <?php _e('GD Library', 'nggallery') ;?></label><br />
144
  <label><input name="graphicLibrary" type="radio" value="im" <?php checked('im', $ngg->options['graphicLibrary']); ?> /> <?php _e('ImageMagick (Experimental). Path to the library :', 'nggallery') ;?>&nbsp;
@@ -156,8 +173,8 @@ if(preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die('You
156
  <span class="setting-description"><?php _e('When you activate this option, some javascript is added to your site footer. Make sure that wp_footer is called in your theme.','nggallery') ?></span></td>
157
  </tr>
158
  </table>
159
- <h3><?php _e('Tags / Categories','nggallery') ?></h3>
160
- <table class="form-table ngg-options">
161
  <tr>
162
  <th valign="top"><?php _e('Activate related images','nggallery') ?>:</th>
163
  <td><input name="activateTags" type="checkbox" value="1" <?php checked('1', $ngg->options['activateTags']); ?> />
@@ -177,7 +194,8 @@ if(preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die('You
177
  </td>
178
  </tr>
179
  </table>
180
- <div class="submit"><input class="button-primary" type="submit" name="updateoption" value="<?php _e('Save Changes') ;?>"/></div>
 
181
  </form>
182
  </div>
183
 
@@ -187,7 +205,7 @@ if(preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die('You
187
  <h2><?php _e('Thumbnail settings','nggallery'); ?></h2>
188
  <form name="thumbnailsettings" method="POST" action="<?php echo $filepath.'#thumbnails'; ?>" >
189
  <?php wp_nonce_field('ngg_settings') ?>
190
- <input type="hidden" name="page_options" value="thumbwidth,thumbheight,thumbfix,thumbcrop,thumbquality" />
191
  <p><?php _e('Please note : If you change the settings, you need to recreate the thumbnails under -> Manage Gallery .', 'nggallery') ?></p>
192
  <table class="form-table ngg-options">
193
  <tr valign="top">
@@ -200,16 +218,12 @@ if(preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die('You
200
  <td><input type="checkbox" name="thumbfix" value="1" <?php checked('1', $ngg->options['thumbfix']); ?> />
201
  <?php _e('Ignore the aspect ratio, no portrait thumbnails','nggallery') ?></td>
202
  </tr>
203
- <tr valign="top">
204
- <th align="left"><?php _e('Crop square thumbnail from image','nggallery') ?></th>
205
- <td><input type="checkbox" name="thumbcrop" value="1" <?php checked('1', $ngg->options['thumbcrop']); ?> />
206
- <?php _e('Create square thumbnails, use only the width setting :','nggallery') ?> <?php echo $ngg->options['thumbwidth']; ?> x <?php echo $ngg->options['thumbwidth']; ?></td>
207
- </tr>
208
- <tr valign="top">
209
  <th align="left"><?php _e('Thumbnail quality','nggallery') ?></th>
210
  <td><input type="text" size="3" maxlength="3" name="thumbquality" value="<?php echo $ngg->options['thumbquality']; ?>" /> %</td>
211
  </tr>
212
  </table>
 
213
  <div class="submit"><input class="button-primary" type="submit" name="updateoption" value="<?php _e('Save Changes') ;?>"/></div>
214
  </form>
215
  </div>
@@ -235,8 +249,8 @@ if(preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die('You
235
  <td><input type="text" size="3" maxlength="3" name="imgQuality" value="<?php echo $ngg->options['imgQuality']; ?>" /> %</td>
236
  </tr>
237
  </table>
238
- <h3><?php _e('Single picture','nggallery') ?></h3>
239
- <table class="form-table ngg-options">
240
  <tr valign="top">
241
  <th align="left"><?php _e('Cache single pictures','nggallery') ?></th>
242
  <td></td>
@@ -249,6 +263,7 @@ if(preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die('You
249
  <td><input type="submit" name="clearcache" class="button-secondary" value="<?php _e('Proceed now','nggallery') ;?> &raquo;"/></td>
250
  </tr>
251
  </table>
 
252
  <div class="submit"><input class="button-primary" type="submit" name="updateoption" value="<?php _e('Save Changes') ;?>"/></div>
253
  </form>
254
  </div>
@@ -259,9 +274,9 @@ if(preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die('You
259
  <h2><?php _e('Gallery settings','nggallery'); ?></h2>
260
  <form name="galleryform" method="POST" action="<?php echo $filepath.'#gallery'; ?>" >
261
  <?php wp_nonce_field('ngg_settings') ?>
262
- <input type="hidden" name="page_options" value="galNoPages,galImages,galColumns,galShowSlide,galTextSlide,galTextGallery,galShowOrder,galImgBrowser,galSort,galSortDir" />
263
  <table class="form-table ngg-options">
264
- <tr>
265
  <th valign="top"><?php _e('Deactivate gallery page link','nggallery') ?>:</th>
266
  <td><input name="galNoPages" type="checkbox" value="1" <?php checked('1', $ngg->options['galNoPages']); ?> />
267
  <?php _e('The album will not link to a gallery subpage. The gallery is shown on the same page.','nggallery') ?>
@@ -286,21 +301,33 @@ if(preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die('You
286
  <input type="text" name="galTextGallery" value="<?php echo $ngg->options['galTextGallery'] ?>" size="20" />
287
  </td>
288
  </tr>
289
- <tr>
290
  <th valign="top"><?php _e('Show first','nggallery') ?>:</th>
291
  <td><label><input name="galShowOrder" type="radio" value="gallery" <?php checked('gallery', $ngg->options['galShowOrder']); ?> /> <?php _e('Thumbnails', 'nggallery') ;?></label><br />
292
  <label><input name="galShowOrder" type="radio" value="slide" <?php checked('slide', $ngg->options['galShowOrder']); ?> /> <?php _e('Slideshow', 'nggallery') ;?></label>
293
  </td>
294
  </tr>
295
- <tr>
296
- <th valign="top"><?php _e('Show ImageBrowser','nggallery') ?>:</th>
297
  <td><input name="galImgBrowser" type="checkbox" value="1" <?php checked('1', $ngg->options['galImgBrowser']); ?> />
298
- <?php _e('The gallery will open the ImageBrowser instead the effect.','nggallery') ?>
 
 
 
 
 
 
 
 
 
 
 
 
299
  </td>
300
  </tr>
301
  </table>
302
- <h3><?php _e('Sort options','nggallery') ?></h3>
303
- <table class="form-table ngg-options">
304
  <tr>
305
  <th valign="top"><?php _e('Sort thumbnails','nggallery') ?>:</th>
306
  <td>
@@ -318,6 +345,7 @@ if(preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die('You
318
  </td>
319
  </tr>
320
  </table>
 
321
  <div class="submit"><input class="button-primary" type="submit" name="updateoption" value="<?php _e('Save Changes') ;?>"/></div>
322
  </form>
323
  </div>
@@ -329,7 +357,7 @@ if(preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die('You
329
  <form name="effectsform" method="POST" action="<?php echo $filepath.'#effects'; ?>" >
330
  <?php wp_nonce_field('ngg_settings') ?>
331
  <input type="hidden" name="page_options" value="thumbEffect,thumbCode" />
332
- <p><?php _e('Here you can select the thumbnail effect, NextGEN Gallery will integrate the required HTML code in the images. Please note that only the Thickbox effect will automatic added to your theme.','nggallery'); ?>
333
  <?php _e('With the placeholder','nggallery'); ?><strong> %GALLERY_NAME% </strong> <?php _e('you can activate a navigation through the images (depend on the effect). Change the code line only , when you use a different thumbnail effect or you know what you do.','nggallery'); ?></p>
334
  <table class="form-table ngg-options">
335
  <tr valign="top">
@@ -345,11 +373,12 @@ if(preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die('You
345
  </select>
346
  </td>
347
  </tr>
348
- <tr valign="top">
349
  <th><?php _e('Link Code line','nggallery') ?> :</th>
350
  <td><textarea id="thumbCode" name="thumbCode" cols="50" rows="5"><?php echo htmlspecialchars(stripslashes($ngg->options['thumbCode'])); ?></textarea></td>
351
  </tr>
352
  </table>
 
353
  <div class="submit"><input class="button-primary" type="submit" name="updateoption" value="<?php _e('Save Changes') ;?>"/></div>
354
  </form>
355
  </div>
@@ -444,7 +473,7 @@ if(preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die('You
444
  </tr>
445
  <tr>
446
  <th><?php _e('Color','nggallery') ?>:</th>
447
- <td><input type="text" size="6" maxlength="6" id="wmColor" name="wmColor" onchange="setcolor('#previewText', this.value)" value="<?php echo $ngg->options['wmColor'] ?>" />
448
  <input type="text" size="1" readonly="readonly" id="previewText" style="background-color: #<?php echo $ngg->options['wmColor'] ?>" /> <?php _e('(hex w/o #)','nggallery') ?></td>
449
  </tr>
450
  <tr>
@@ -499,24 +528,24 @@ if(preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die('You
499
  <th><?php _e('Shuffle mode','nggallery') ?>:</th>
500
  <td><input name="irShuffle" type="checkbox" value="1" <?php checked('1', $ngg->options['irShuffle']); ?> /></td>
501
  </tr>
502
- <tr>
503
  <th><?php _e('Show next image on click','nggallery') ?>:</th>
504
  <td><input name="irLinkfromdisplay" type="checkbox" value="1" <?php checked('1', $ngg->options['irLinkfromdisplay']); ?> /></td>
505
  </tr>
506
- <tr>
507
  <th><?php _e('Show navigation bar','nggallery') ?>:</th>
508
  <td><input name="irShownavigation" type="checkbox" value="1" <?php checked('1', $ngg->options['irShownavigation']); ?> /></td>
509
  </tr>
510
- <tr>
511
  <th><?php _e('Show loading icon','nggallery') ?>:</th>
512
  <td><input name="irShowicons" type="checkbox" value="1" <?php checked('1', $ngg->options['irShowicons']); ?> /></td>
513
  </tr>
514
- <tr>
515
  <th><?php _e('Use watermark logo','nggallery') ?>:</th>
516
  <td><input name="irWatermark" type="checkbox" value="1" <?php checked('1', $ngg->options['irWatermark']); ?> />
517
  <span class="setting-description"><?php _e('You can change the logo at the watermark settings','nggallery') ?></span></td>
518
  </tr>
519
- <tr>
520
  <th><?php _e('Stretch image','nggallery') ?>:</th>
521
  <td>
522
  <select size="1" name="irOverstretch">
@@ -547,41 +576,41 @@ if(preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die('You
547
  <option value="random" <?php selected('random', $ngg->options['irTransition']); ?> ><?php _e('random', 'nggallery') ;?></option>
548
  </select>
549
  </tr>
550
- <tr>
551
  <th><?php _e('Use slow zooming effect','nggallery') ?>:</th>
552
  <td><input name="irKenburns" type="checkbox" value="1" <?php checked('1', $ngg->options['irKenburns']); ?> /></td>
553
  </tr>
554
  <tr>
555
  <th><?php _e('Background Color','nggallery') ?>:</th>
556
- <td><input type="text" size="6" maxlength="6" id="irBackcolor" name="irBackcolor" onchange="setcolor('#previewBack', this.value)" value="<?php echo $ngg->options['irBackcolor'] ?>" />
557
  <input type="text" size="1" readonly="readonly" id="previewBack" style="background-color: #<?php echo $ngg->options['irBackcolor'] ?>" /></td>
558
  </tr>
559
  <tr>
560
  <th><?php _e('Texts / Buttons Color','nggallery') ?>:</th>
561
- <td><input type="text" size="6" maxlength="6" id="irFrontcolor" name="irFrontcolor" onchange="setcolor('#previewFront', this.value)" value="<?php echo $ngg->options['irFrontcolor'] ?>" />
562
  <input type="text" size="1" readonly="readonly" id="previewFront" style="background-color: #<?php echo $ngg->options['irFrontcolor'] ?>" /></td>
563
  </tr>
564
- <tr>
565
  <th><?php _e('Rollover / Active Color','nggallery') ?>:</th>
566
- <td><input type="text" size="6" maxlength="6" id="irLightcolor" name="irLightcolor" onchange="setcolor('#previewLight', this.value)" value="<?php echo $ngg->options['irLightcolor'] ?>" />
567
  <input type="text" size="1" readonly="readonly" id="previewLight" style="background-color: #<?php echo $ngg->options['irLightcolor'] ?>" /></td>
568
  </tr>
569
- <tr>
570
  <th><?php _e('Screen Color','nggallery') ?>:</th>
571
- <td><input type="text" size="6" maxlength="6" id="irScreencolor" name="irScreencolor" onchange="setcolor('#previewScreen', this.value)" value="<?php echo $ngg->options['irScreencolor'] ?>" />
572
  <input type="text" size="1" readonly="readonly" id="previewScreen" style="background-color: #<?php echo $ngg->options['irScreencolor'] ?>" /></td>
573
  </tr>
574
- <tr>
575
  <th><?php _e('Background music (URL)','nggallery') ?>:</th>
576
  <td><input type="text" size="50" id="irAudio" name="irAudio" value="<?php echo $ngg->options['irAudio'] ?>" /></td>
577
  </tr>
578
- <tr>
579
- <th><?php _e('Try XHTML validation (with CDATA)','nggallery') ?>:</th>
580
  <td><input name="irXHTMLvalid" type="checkbox" value="1" <?php checked('1', $ngg->options['irXHTMLvalid']); ?> />
581
  <span class="setting-description"><?php _e('Important : Could causes problem at some browser. Please recheck your page.','nggallery') ?></span></td>
582
  </tr>
583
  </table>
584
- <div class="clear"> &nbsp; </div>
585
  <div class="submit"><input class="button-primary" type="submit" name="updateoption" value="<?php _e('Save Changes') ;?>"/></div>
586
  </form>
587
  </div>
66
  ?>
67
  <script type="text/javascript">
68
  jQuery(document).ready(function(){
69
+ jQuery(".expert").hide();
70
+ jQuery("a.switch-expert").click(function(e) {
71
+ jQuery(".expert").toggle();
72
+ return false;
73
+ });
74
+ jQuery('#slider').tabs({ fxFade: true, fxSpeed: 'fast' });
75
+ jQuery('.picker').ColorPicker({
76
+ onSubmit: function(hsb, hex, rgb, el) {
77
+ jQuery(el).val(hex);
78
+ jQuery(el).ColorPickerHide();
79
+ },
80
+ onBeforeShow: function () {
81
+ jQuery(this).ColorPickerSetColor(this.value);
82
+ }
83
+ })
84
+ .bind('keyup', function(){
85
+ jQuery(this).ColorPickerSetColor(this.value);
86
+ });
87
  });
88
 
89
  function insertcode(value) {
126
  <li><a href="#generaloptions"><?php _e('General Options', 'nggallery') ;?></a></li>
127
  <li><a href="#thumbnails"><?php _e('Thumbnails', 'nggallery') ;?></a></li>
128
  <li><a href="#images"><?php _e('Images', 'nggallery') ;?></a></li>
129
+ <li><a href="#gallery"><?php echo _n( 'Gallery', 'Galleries', 1, 'nggallery' ) ;?></a></li>
130
  <li><a href="#effects"><?php _e('Effects', 'nggallery') ;?></a></li>
131
  <li><a href="#watermark"><?php _e('Watermark', 'nggallery') ;?></a></li>
132
  <li><a href="#slideshow"><?php _e('Slideshow', 'nggallery') ;?></a></li>
141
  <input type="hidden" name="page_options" value="gallerypath,deleteImg,useMediaRSS,usePicLens,usePermalinks,graphicLibrary,imageMagickDir,activateTags,appendType,maxImages" />
142
  <table class="form-table ngg-options">
143
  <tr valign="top">
144
+ <th align="left"><?php _e('Gallery path','nggallery'); ?></th>
145
  <td><input <?php if (IS_WPMU) echo 'readonly = "readonly"'; ?> type="text" size="35" name="gallerypath" value="<?php echo $ngg->options['gallerypath']; ?>" />
146
  <span class="setting-description"><?php _e('This is the default path for all galleries','nggallery') ?></span></td>
147
  </tr>
148
+ <tr class="expert" valign="top">
149
  <th align="left"><?php _e('Delete image files','nggallery') ?></th>
150
  <td><input <?php if (IS_WPMU) echo 'readonly = "readonly"'; ?> type="checkbox" name="deleteImg" value="1" <?php checked('1', $ngg->options['deleteImg']); ?> />
151
  <?php _e('Delete files, when removing a gallery in the database','nggallery') ?></td>
155
  <td><input type="checkbox" name="usePermalinks" value="1" <?php checked('1', $ngg->options['usePermalinks']); ?> />
156
  <?php _e('When you activate this option, you need to update your permalink structure one time.','nggallery') ?></td>
157
  </tr>
158
+ <tr class="expert">
159
  <th valign="top"><?php _e('Select graphic library','nggallery') ?>:</th>
160
  <td><label><input name="graphicLibrary" type="radio" value="gd" <?php checked('gd', $ngg->options['graphicLibrary']); ?> /> <?php _e('GD Library', 'nggallery') ;?></label><br />
161
  <label><input name="graphicLibrary" type="radio" value="im" <?php checked('im', $ngg->options['graphicLibrary']); ?> /> <?php _e('ImageMagick (Experimental). Path to the library :', 'nggallery') ;?>&nbsp;
173
  <span class="setting-description"><?php _e('When you activate this option, some javascript is added to your site footer. Make sure that wp_footer is called in your theme.','nggallery') ?></span></td>
174
  </tr>
175
  </table>
176
+ <h3 class="expert"><?php _e('Tags / Categories','nggallery') ?></h3>
177
+ <table class="expert form-table ngg-options">
178
  <tr>
179
  <th valign="top"><?php _e('Activate related images','nggallery') ?>:</th>
180
  <td><input name="activateTags" type="checkbox" value="1" <?php checked('1', $ngg->options['activateTags']); ?> />
194
  </td>
195
  </tr>
196
  </table>
197
+ <div class="alignright"><a href="" class="switch-expert" >[<?php _e('More settings','nggallery'); ?>]</a></div>
198
+ <div class="submit"><input class="button-primary" type="submit" name="updateoption" value="<?php _e('Save Changes'); ?>"/></div>
199
  </form>
200
  </div>
201
 
205
  <h2><?php _e('Thumbnail settings','nggallery'); ?></h2>
206
  <form name="thumbnailsettings" method="POST" action="<?php echo $filepath.'#thumbnails'; ?>" >
207
  <?php wp_nonce_field('ngg_settings') ?>
208
+ <input type="hidden" name="page_options" value="thumbwidth,thumbheight,thumbfix,thumbquality" />
209
  <p><?php _e('Please note : If you change the settings, you need to recreate the thumbnails under -> Manage Gallery .', 'nggallery') ?></p>
210
  <table class="form-table ngg-options">
211
  <tr valign="top">
218
  <td><input type="checkbox" name="thumbfix" value="1" <?php checked('1', $ngg->options['thumbfix']); ?> />
219
  <?php _e('Ignore the aspect ratio, no portrait thumbnails','nggallery') ?></td>
220
  </tr>
221
+ <tr class="expert" valign="top">
 
 
 
 
 
222
  <th align="left"><?php _e('Thumbnail quality','nggallery') ?></th>
223
  <td><input type="text" size="3" maxlength="3" name="thumbquality" value="<?php echo $ngg->options['thumbquality']; ?>" /> %</td>
224
  </tr>
225
  </table>
226
+ <div class="alignright"><a href="" class="switch-expert" >[<?php _e('More settings','nggallery'); ?>]</a></div>
227
  <div class="submit"><input class="button-primary" type="submit" name="updateoption" value="<?php _e('Save Changes') ;?>"/></div>
228
  </form>
229
  </div>
249
  <td><input type="text" size="3" maxlength="3" name="imgQuality" value="<?php echo $ngg->options['imgQuality']; ?>" /> %</td>
250
  </tr>
251
  </table>
252
+ <h3 class="expert"><?php _e('Single picture','nggallery') ?></h3>
253
+ <table class="expert form-table ngg-options">
254
  <tr valign="top">
255
  <th align="left"><?php _e('Cache single pictures','nggallery') ?></th>
256
  <td></td>
263
  <td><input type="submit" name="clearcache" class="button-secondary" value="<?php _e('Proceed now','nggallery') ;?> &raquo;"/></td>
264
  </tr>
265
  </table>
266
+ <div class="alignright"><a href="" class="switch-expert" >[<?php _e('More settings','nggallery'); ?>]</a></div>
267
  <div class="submit"><input class="button-primary" type="submit" name="updateoption" value="<?php _e('Save Changes') ;?>"/></div>
268
  </form>
269
  </div>
274
  <h2><?php _e('Gallery settings','nggallery'); ?></h2>
275
  <form name="galleryform" method="POST" action="<?php echo $filepath.'#gallery'; ?>" >
276
  <?php wp_nonce_field('ngg_settings') ?>
277
+ <input type="hidden" name="page_options" value="galNoPages,galImages,galColumns,galShowSlide,galTextSlide,galTextGallery,galShowOrder,galImgBrowser,galSort,galSortDir,galHiddenImg,galAjaxNav" />
278
  <table class="form-table ngg-options">
279
+ <tr class="expert" >
280
  <th valign="top"><?php _e('Deactivate gallery page link','nggallery') ?>:</th>
281
  <td><input name="galNoPages" type="checkbox" value="1" <?php checked('1', $ngg->options['galNoPages']); ?> />
282
  <?php _e('The album will not link to a gallery subpage. The gallery is shown on the same page.','nggallery') ?>
301
  <input type="text" name="galTextGallery" value="<?php echo $ngg->options['galTextGallery'] ?>" size="20" />
302
  </td>
303
  </tr>
304
+ <tr class="expert" >
305
  <th valign="top"><?php _e('Show first','nggallery') ?>:</th>
306
  <td><label><input name="galShowOrder" type="radio" value="gallery" <?php checked('gallery', $ngg->options['galShowOrder']); ?> /> <?php _e('Thumbnails', 'nggallery') ;?></label><br />
307
  <label><input name="galShowOrder" type="radio" value="slide" <?php checked('slide', $ngg->options['galShowOrder']); ?> /> <?php _e('Slideshow', 'nggallery') ;?></label>
308
  </td>
309
  </tr>
310
+ <tr class="expert" >
311
+ <th valign="top"><?php _e('Show ImageBrowser','nggallery'); ?>:</th>
312
  <td><input name="galImgBrowser" type="checkbox" value="1" <?php checked('1', $ngg->options['galImgBrowser']); ?> />
313
+ <?php _e('The gallery will open the ImageBrowser instead the effect.', 'nggallery'); ?>
314
+ </td>
315
+ </tr>
316
+ <tr class="expert" >
317
+ <th valign="top"><?php _e('Add hidden images','nggallery'); ?>:</th>
318
+ <td><input name="galHiddenImg" type="checkbox" value="1" <?php checked('1', $ngg->options['galHiddenImg']); ?> />
319
+ <?php _e('If pagination is used, this option will still show all images in the modal window (Thickbox, Lightbox etc.). Note : This increase the page load','nggallery'); ?>
320
+ </td>
321
+ </tr>
322
+ <tr class="expert" >
323
+ <th valign="top"><?php _e('Enable AJAX pagination','nggallery'); ?>:</th>
324
+ <td><input name="galHiddenImg" type="checkbox" value="1" <?php checked('1', $ngg->options['galAjaxNav']); ?> />
325
+ <?php _e('Browse images without reload the page. Note : Work only in combination with Shutter effect','nggallery'); ?>
326
  </td>
327
  </tr>
328
  </table>
329
+ <h3 class="expert" ><?php _e('Sort options','nggallery') ?></h3>
330
+ <table class="expert form-table ngg-options">
331
  <tr>
332
  <th valign="top"><?php _e('Sort thumbnails','nggallery') ?>:</th>
333
  <td>
345
  </td>
346
  </tr>
347
  </table>
348
+ <div class="alignright"><a href="" class="switch-expert" >[<?php _e('More settings','nggallery'); ?>]</a></div>
349
  <div class="submit"><input class="button-primary" type="submit" name="updateoption" value="<?php _e('Save Changes') ;?>"/></div>
350
  </form>
351
  </div>
357
  <form name="effectsform" method="POST" action="<?php echo $filepath.'#effects'; ?>" >
358
  <?php wp_nonce_field('ngg_settings') ?>
359
  <input type="hidden" name="page_options" value="thumbEffect,thumbCode" />
360
+ <p><?php _e('Here you can select the thumbnail effect, NextGEN Gallery will integrate the required HTML code in the images. Please note that only the Shutter and Thickbox effect will automatic added to your theme.','nggallery'); ?>
361
  <?php _e('With the placeholder','nggallery'); ?><strong> %GALLERY_NAME% </strong> <?php _e('you can activate a navigation through the images (depend on the effect). Change the code line only , when you use a different thumbnail effect or you know what you do.','nggallery'); ?></p>
362
  <table class="form-table ngg-options">
363
  <tr valign="top">
373
  </select>
374
  </td>
375
  </tr>
376
+ <tr class="expert" valign="top">
377
  <th><?php _e('Link Code line','nggallery') ?> :</th>
378
  <td><textarea id="thumbCode" name="thumbCode" cols="50" rows="5"><?php echo htmlspecialchars(stripslashes($ngg->options['thumbCode'])); ?></textarea></td>
379
  </tr>
380
  </table>
381
+ <div class="alignright"><a href="" class="switch-expert" >[<?php _e('More settings','nggallery'); ?>]</a></div>
382
  <div class="submit"><input class="button-primary" type="submit" name="updateoption" value="<?php _e('Save Changes') ;?>"/></div>
383
  </form>
384
  </div>
473
  </tr>
474
  <tr>
475
  <th><?php _e('Color','nggallery') ?>:</th>
476
+ <td><input class="picker" type="text" size="6" maxlength="6" id="wmColor" name="wmColor" onchange="setcolor('#previewText', this.value)" value="<?php echo $ngg->options['wmColor'] ?>" />
477
  <input type="text" size="1" readonly="readonly" id="previewText" style="background-color: #<?php echo $ngg->options['wmColor'] ?>" /> <?php _e('(hex w/o #)','nggallery') ?></td>
478
  </tr>
479
  <tr>
528
  <th><?php _e('Shuffle mode','nggallery') ?>:</th>
529
  <td><input name="irShuffle" type="checkbox" value="1" <?php checked('1', $ngg->options['irShuffle']); ?> /></td>
530
  </tr>
531
+ <tr class="expert">
532
  <th><?php _e('Show next image on click','nggallery') ?>:</th>
533
  <td><input name="irLinkfromdisplay" type="checkbox" value="1" <?php checked('1', $ngg->options['irLinkfromdisplay']); ?> /></td>
534
  </tr>
535
+ <tr class="expert">
536
  <th><?php _e('Show navigation bar','nggallery') ?>:</th>
537
  <td><input name="irShownavigation" type="checkbox" value="1" <?php checked('1', $ngg->options['irShownavigation']); ?> /></td>
538
  </tr>
539
+ <tr class="expert">
540
  <th><?php _e('Show loading icon','nggallery') ?>:</th>
541
  <td><input name="irShowicons" type="checkbox" value="1" <?php checked('1', $ngg->options['irShowicons']); ?> /></td>
542
  </tr>
543
+ <tr class="expert">
544
  <th><?php _e('Use watermark logo','nggallery') ?>:</th>
545
  <td><input name="irWatermark" type="checkbox" value="1" <?php checked('1', $ngg->options['irWatermark']); ?> />
546
  <span class="setting-description"><?php _e('You can change the logo at the watermark settings','nggallery') ?></span></td>
547
  </tr>
548
+ <tr class="expert">
549
  <th><?php _e('Stretch image','nggallery') ?>:</th>
550
  <td>
551
  <select size="1" name="irOverstretch">
576
  <option value="random" <?php selected('random', $ngg->options['irTransition']); ?> ><?php _e('random', 'nggallery') ;?></option>
577
  </select>
578
  </tr>
579
+ <tr class="expert">
580
  <th><?php _e('Use slow zooming effect','nggallery') ?>:</th>
581
  <td><input name="irKenburns" type="checkbox" value="1" <?php checked('1', $ngg->options['irKenburns']); ?> /></td>
582
  </tr>
583
  <tr>
584
  <th><?php _e('Background Color','nggallery') ?>:</th>
585
+ <td><input class="picker" type="text" size="6" maxlength="6" id="irBackcolor" name="irBackcolor" onchange="setcolor('#previewBack', this.value)" value="<?php echo $ngg->options['irBackcolor'] ?>" />
586
  <input type="text" size="1" readonly="readonly" id="previewBack" style="background-color: #<?php echo $ngg->options['irBackcolor'] ?>" /></td>
587
  </tr>
588
  <tr>
589
  <th><?php _e('Texts / Buttons Color','nggallery') ?>:</th>
590
+ <td><input class="picker" type="text" size="6" maxlength="6" id="irFrontcolor" name="irFrontcolor" onchange="setcolor('#previewFront', this.value)" value="<?php echo $ngg->options['irFrontcolor'] ?>" />
591
  <input type="text" size="1" readonly="readonly" id="previewFront" style="background-color: #<?php echo $ngg->options['irFrontcolor'] ?>" /></td>
592
  </tr>
593
+ <tr class="expert">
594
  <th><?php _e('Rollover / Active Color','nggallery') ?>:</th>
595
+ <td><input class="picker" type="text" size="6" maxlength="6" id="irLightcolor" name="irLightcolor" onchange="setcolor('#previewLight', this.value)" value="<?php echo $ngg->options['irLightcolor'] ?>" />
596
  <input type="text" size="1" readonly="readonly" id="previewLight" style="background-color: #<?php echo $ngg->options['irLightcolor'] ?>" /></td>
597
  </tr>
598
+ <tr class="expert">
599
  <th><?php _e('Screen Color','nggallery') ?>:</th>
600
+ <td><input class="picker" type="text" size="6" maxlength="6" id="irScreencolor" name="irScreencolor" onchange="setcolor('#previewScreen', this.value)" value="<?php echo $ngg->options['irScreencolor'] ?>" />
601
  <input type="text" size="1" readonly="readonly" id="previewScreen" style="background-color: #<?php echo $ngg->options['irScreencolor'] ?>" /></td>
602
  </tr>
603
+ <tr class="expert">
604
  <th><?php _e('Background music (URL)','nggallery') ?>:</th>
605
  <td><input type="text" size="50" id="irAudio" name="irAudio" value="<?php echo $ngg->options['irAudio'] ?>" /></td>
606
  </tr>
607
+ <tr class="expert">
608
+ <th ><?php _e('Try XHTML validation (with CDATA)','nggallery') ?>:</th>
609
  <td><input name="irXHTMLvalid" type="checkbox" value="1" <?php checked('1', $ngg->options['irXHTMLvalid']); ?> />
610
  <span class="setting-description"><?php _e('Important : Could causes problem at some browser. Please recheck your page.','nggallery') ?></span></td>
611
  </tr>
612
  </table>
613
+ <div class="alignright"><a href="" class="switch-expert" >[<?php _e('More settings','nggallery'); ?>]</a></div>
614
  <div class="submit"><input class="button-primary" type="submit" name="updateoption" value="<?php _e('Save Changes') ;?>"/></div>
615
  </form>
616
  </div>
admin/showmeta.php CHANGED
@@ -3,8 +3,8 @@
3
  // look up for the path
4
  require_once( dirname( dirname(__FILE__) ) . '/ngg-config.php');
5
 
6
- require_once(NGGALLERY_ABSPATH.'/lib/meta.php');
7
- require_once(NGGALLERY_ABSPATH.'/lib/image.php');
8
 
9
  if ( !is_user_logged_in() )
10
  die(__('Cheatin&#8217; uh?'));
@@ -12,36 +12,44 @@ if ( !is_user_logged_in() )
12
  if ( !current_user_can('NextGEN Manage gallery') )
13
  die(__('Cheatin&#8217; uh?'));
14
 
15
- function get_out_now() { exit; }
16
- add_action( 'shutdown', 'get_out_now', -1 );
17
-
18
  global $wpdb;
19
 
20
  $id = (int) $_GET['id'];
21
- // let's get the image data
22
- $picture = nggdb::find_image($id);
23
  // let's get the meta data'
24
- $meta = new nggMeta($picture->imagePath);
 
25
  $exifdata = $meta->get_EXIF();
26
  $iptcdata = $meta->get_IPTC();
27
  $xmpdata = $meta->get_XMP();
28
 
29
  ?>
30
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
31
- <html xmlns="http://www.w3.org/1999/xhtml">
32
- <head>
33
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
34
- <link rel="stylesheet" href="<?php echo get_option( 'siteurl' ) ?>/wp-admin/wp-admin.css?version=<?php bloginfo('version'); ?>" type="text/css" />
35
- <style type="text/css">
36
- #TB_title{
37
- background-color:#222222;
38
- color:#CFCFCF;
39
- }
40
- </style>
41
- </head>
42
- <body class="wp-admin">
43
-
 
 
 
 
 
 
 
 
 
 
 
44
  <!-- EXIF DATA -->
 
45
  <fieldset class="options nggallery">
46
  <h3><?php _e('EXIF Data','nggallery'); ?></h3>
47
  <?php if ($exifdata) { ?>
@@ -64,7 +72,8 @@ $xmpdata = $meta->get_XMP();
64
  </table>
65
  <?php } else echo "<strong>". __('No exif data','nggallery'). "</strong>"; ?>
66
  </fieldset>
67
-
 
68
  <!-- IPTC DATA -->
69
  <?php if ($iptcdata) { ?>
70
  <fieldset class="options nggallery">
@@ -111,7 +120,4 @@ $xmpdata = $meta->get_XMP();
111
  ?>
112
  </table>
113
  </fieldset>
114
- <?php } ?>
115
-
116
- </body>
117
- </html>
3
  // look up for the path
4
  require_once( dirname( dirname(__FILE__) ) . '/ngg-config.php');
5
 
6
+ require_once(NGGALLERY_ABSPATH . '/lib/meta.php');
7
+ require_once(NGGALLERY_ABSPATH . '/lib/image.php');
8
 
9
  if ( !is_user_logged_in() )
10
  die(__('Cheatin&#8217; uh?'));
12
  if ( !current_user_can('NextGEN Manage gallery') )
13
  die(__('Cheatin&#8217; uh?'));
14
 
 
 
 
15
  global $wpdb;
16
 
17
  $id = (int) $_GET['id'];
 
 
18
  // let's get the meta data'
19
+ $meta = new nggMeta($id);
20
+ $dbdata = $meta->get_saved_meta();
21
  $exifdata = $meta->get_EXIF();
22
  $iptcdata = $meta->get_IPTC();
23
  $xmpdata = $meta->get_XMP();
24
 
25
  ?>
26
+ <!-- META DATA -->
27
+ <fieldset class="options nggallery">
28
+ <h3><?php _e('Meta Data','nggallery'); ?></h3>
29
+ <?php if ($dbdata) { ?>
30
+ <table id="the-list-x" width="100%" cellspacing="3" cellpadding="3">
31
+ <thead>
32
+ <tr>
33
+ <th scope="col"><?php _e('Tag','nggallery'); ?></th>
34
+ <th scope="col"><?php _e('Value','nggallery'); ?></th>
35
+ </tr>
36
+ </thead>
37
+ <?php
38
+ foreach ($dbdata as $key => $value){
39
+ if ( is_array($value) ) continue;
40
+ $class = ( $class == 'class="alternate"' ) ? '' : 'class="alternate"';
41
+ echo '<tr '.$class.'>
42
+ <td style="width:230px">'.$meta->i8n_name($key).'</td>
43
+ <td>'.$value.'</td>
44
+ </tr>';
45
+ }
46
+ ?>
47
+ </table>
48
+ <?php } else echo "<strong>" . __('No meta data saved','nggallery') . "</strong>"; ?>
49
+ </fieldset>
50
+
51
  <!-- EXIF DATA -->
52
+ <?php if ($exifdata) { ?>
53
  <fieldset class="options nggallery">
54
  <h3><?php _e('EXIF Data','nggallery'); ?></h3>
55
  <?php if ($exifdata) { ?>
72
  </table>
73
  <?php } else echo "<strong>". __('No exif data','nggallery'). "</strong>"; ?>
74
  </fieldset>
75
+ <?php } ?>
76
+
77
  <!-- IPTC DATA -->
78
  <?php if ($iptcdata) { ?>
79
  <fieldset class="options nggallery">
120
  ?>
121
  </table>
122
  </fieldset>
123
+ <?php } ?>
 
 
 
admin/style.php CHANGED
@@ -64,7 +64,25 @@ if (!$error && filesize($real_file) > 0) {
64
  $content = htmlspecialchars($content);
65
  }
66
 
67
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
68
  <div class="wrap">
69
 
70
  <div class="bordertitle">
@@ -87,7 +105,7 @@ if (!$error && filesize($real_file) > 0) {
87
  $act_css_version = $a_cssfile['Version'];
88
  }
89
  else $selected = '';
90
- $css_name = attribute_escape($css_name);
91
  echo "\n\t<option value=\"$key\" $selected>$css_name</option>";
92
  }
93
  ?>
@@ -121,13 +139,17 @@ if (!$error && filesize($real_file) > 0) {
121
  <?php else: ?>
122
  <p><?php _e('Your theme contain a NextGEN Gallery stylesheet (nggallery.css), this file will be used','nggallery') ?></p>
123
  <?php endif; ?>
 
 
 
 
124
  </div>
125
  <?php
126
  if (!$error) {
127
  ?>
128
  <form name="template" id="template" method="post">
129
  <?php wp_nonce_field('ngg_style') ?>
130
- <div><textarea cols="70" rows="25" name="newcontent" id="newcontent" tabindex="1"><?php echo $content ?></textarea>
131
  <input type="hidden" name="updatecss" value="updatecss" />
132
  <input type="hidden" name="file" value="<?php echo $file_show ?>" />
133
  </div>
64
  $content = htmlspecialchars($content);
65
  }
66
 
67
+ ?>
68
+ <script type="text/javascript">
69
+ jQuery(document).ready(function(){
70
+ jQuery('#colorSelector').ColorPicker({
71
+ color: '#0000ff',
72
+ onShow: function (colpkr) {
73
+ jQuery(colpkr).fadeIn(500);
74
+ return false;
75
+ },
76
+ onHide: function (colpkr) {
77
+ jQuery(colpkr).fadeOut(500);
78
+ return false;
79
+ },
80
+ onChange: function (hsb, hex, rgb) {
81
+ jQuery('#colorSelector div').css('backgroundColor', '#' + hex);
82
+ }
83
+ });
84
+ });
85
+ </script>
86
  <div class="wrap">
87
 
88
  <div class="bordertitle">
105
  $act_css_version = $a_cssfile['Version'];
106
  }
107
  else $selected = '';
108
+ $css_name = esc_attr($css_name);
109
  echo "\n\t<option value=\"$key\" $selected>$css_name</option>";
110
  }
111
  ?>
139
  <?php else: ?>
140
  <p><?php _e('Your theme contain a NextGEN Gallery stylesheet (nggallery.css), this file will be used','nggallery') ?></p>
141
  <?php endif; ?>
142
+ <p><?php _e('Tip No. 2: Use the color picker below to help you find the right color scheme for your gallery!','nggallery') ?></p>
143
+ <div id="colorSelector">
144
+ <div></div>
145
+ </div>
146
  </div>
147
  <?php
148
  if (!$error) {
149
  ?>
150
  <form name="template" id="template" method="post">
151
  <?php wp_nonce_field('ngg_style') ?>
152
+ <div><textarea cols="70" rows="25" name="newcontent" id="newcontent" tabindex="1" class="codepress css"><?php echo $content ?></textarea>
153
  <input type="hidden" name="updatecss" value="updatecss" />
154
  <input type="hidden" name="file" value="<?php echo $file_show ?>" />
155
  </div>
admin/tags.php CHANGED
@@ -29,9 +29,9 @@ $admin_base_url = admin_url() . 'admin.php?page=';
29
  $nb_tags = 50; // Number of tags to show on a single page
30
 
31
  // Manage URL
32
- $sort_order = ( isset($_GET['tag_sortorder']) ) ? attribute_escape(stripslashes($_GET['tag_sortorder'])) : 'desc';
33
  $search_url = ( isset($_GET['search']) ) ? '&amp;search=' . stripslashes($_GET['search']) : '';
34
- $action_url = $admin_base_url . attribute_escape(stripslashes($_GET['page'])) . '&amp;tag_sortorder=' . $sort_order. $search_url;
35
 
36
  // Tags Filters
37
  $order_array = array(
@@ -109,7 +109,7 @@ if ($nb_tags < $tag_count && $offset>0) {
109
  <form method="get">
110
  <p>
111
  <label for="search"><?php _e('Search tags', 'nggallery'); ?></label><br />
112
- <input type="hidden" name="page" value="<?php echo attribute_escape(stripslashes($_GET['page'])); ?>" />
113
  <input type="hidden" name="tag_sortorder" value="<?php echo $sort_order; ?>" />
114
  <input type="text" name="search" id="search" size="10" value="<?php echo stripslashes($_GET['search']); ?>" />
115
  <input class="button" type="submit" value="<?php _e('Go', 'nggallery'); ?>" />
@@ -121,7 +121,7 @@ if ($nb_tags < $tag_count && $offset>0) {
121
  <?php
122
  $output = array();
123
  foreach( $order_array as $sort => $title ) {
124
- $output[] = ($sort == $sort_order) ? '<span style="color: red;">'.$title.'</span>' : '<a href="'.$admin_base_url.attribute_escape(stripslashes($_GET['page'])).'&amp;tag_sortorder='.$sort.$search_url.'">'.$title.'</a>';
125
  }
126
  echo implode('<br />', $output);
127
  $output = array();
@@ -146,7 +146,7 @@ if ($nb_tags < $tag_count && $offset>0) {
146
  <?php if ($prev_offset!='') { ?>
147
  <form method="get" style="display: inline;">
148
  <span>
149
- <input type="hidden" name="page" value="<?php echo attribute_escape(stripslashes($_GET['page'])); ?>" />
150
  <input type="hidden" name="tag_sortorder" value="<?php echo $sort_order; ?>" />
151
  <input type="hidden" name="offset" value="<?php echo $prev_offset; ?>" />
152
  <input class="button" type="submit" value="&laquo; <?php _e('Previous tags', 'nggallery'); ?>" />
@@ -159,7 +159,7 @@ if ($nb_tags < $tag_count && $offset>0) {
159
  <?php if ($next_offset!='') { ?>
160
  <form method="get" style="display: inline;">
161
  <span>
162
- <input type="hidden" name="page" value="<?php echo attribute_escape(stripslashes($_GET['page'])); ?>" />
163
  <input type="hidden" name="tag_sortorder" value="<?php echo $sort_order; ?>" />
164
  <input type="hidden" name="offset" value="<?php echo $next_offset; ?>" />
165
  <input class="button" type="submit" value="<?php _e('Next tags', 'nggallery'); ?> &raquo;" />
29
  $nb_tags = 50; // Number of tags to show on a single page
30
 
31
  // Manage URL
32
+ $sort_order = ( isset($_GET['tag_sortorder']) ) ? esc_attr(stripslashes($_GET['tag_sortorder'])) : 'desc';
33
  $search_url = ( isset($_GET['search']) ) ? '&amp;search=' . stripslashes($_GET['search']) : '';
34
+ $action_url = $admin_base_url . esc_attr(stripslashes($_GET['page'])) . '&amp;tag_sortorder=' . $sort_order. $search_url;
35
 
36
  // Tags Filters
37
  $order_array = array(
109
  <form method="get">
110
  <p>
111
  <label for="search"><?php _e('Search tags', 'nggallery'); ?></label><br />
112
+ <input type="hidden" name="page" value="<?php echo esc_attr(stripslashes($_GET['page'])); ?>" />
113
  <input type="hidden" name="tag_sortorder" value="<?php echo $sort_order; ?>" />
114
  <input type="text" name="search" id="search" size="10" value="<?php echo stripslashes($_GET['search']); ?>" />
115
  <input class="button" type="submit" value="<?php _e('Go', 'nggallery'); ?>" />
121
  <?php
122
  $output = array();
123
  foreach( $order_array as $sort => $title ) {
124
+ $output[] = ($sort == $sort_order) ? '<span style="color: red;">'.$title.'</span>' : '<a href="'.$admin_base_url.esc_attr(stripslashes($_GET['page'])).'&amp;tag_sortorder='.$sort.$search_url.'">'.$title.'</a>';
125
  }
126
  echo implode('<br />', $output);
127
  $output = array();
146
  <?php if ($prev_offset!='') { ?>
147
  <form method="get" style="display: inline;">
148
  <span>
149
+ <input type="hidden" name="page" value="<?php echo esc_attr(stripslashes($_GET['page'])); ?>" />
150
  <input type="hidden" name="tag_sortorder" value="<?php echo $sort_order; ?>" />
151
  <input type="hidden" name="offset" value="<?php echo $prev_offset; ?>" />
152
  <input class="button" type="submit" value="&laquo; <?php _e('Previous tags', 'nggallery'); ?>" />
159
  <?php if ($next_offset!='') { ?>
160
  <form method="get" style="display: inline;">
161
  <span>
162
+ <input type="hidden" name="page" value="<?php echo esc_attr(stripslashes($_GET['page'])); ?>" />
163
  <input type="hidden" name="tag_sortorder" value="<?php echo $sort_order; ?>" />
164
  <input type="hidden" name="offset" value="<?php echo $next_offset; ?>" />
165
  <input class="button" type="submit" value="<?php _e('Next tags', 'nggallery'); ?> &raquo;" />
admin/tinymce/window.php CHANGED
@@ -7,7 +7,7 @@ require_once( dirname( dirname( dirname(__FILE__) ) ) . '/ngg-config.php');
7
  if ( !is_user_logged_in() || !current_user_can('edit_posts') )
8
  wp_die(__("You are not allowed to be here"));
9
 
10
- global $wpdb;
11
 
12
  ?>
13
 
@@ -26,8 +26,8 @@ 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 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>
7
  if ( !is_user_logged_in() || !current_user_can('edit_posts') )
8
  wp_die(__("You are not allowed to be here"));
9
 
10
+ global $wpdb, $nggdb;
11
 
12
  ?>
13
 
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 _n( '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 _n( '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>
admin/upgrade.php CHANGED
@@ -82,11 +82,17 @@ function ngg_upgrade() {
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";
@@ -119,6 +125,21 @@ function ngg_upgrade() {
119
  update_option('ngg_options', $ngg_options);
120
  echo __('finished', 'nggallery') . "<br />\n";
121
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
122
  return;
123
  }
124
  }
@@ -227,7 +248,7 @@ function ngg_import_date_time() {
227
  if ( is_array($imagelist) ) {
228
  foreach ($imagelist as $image) {
229
  $picture = new nggImage($image);
230
- $meta = new nggMeta($picture->imagePath, true);
231
  $date = $meta->get_date_time();
232
  $wpdb->query("UPDATE $wpdb->nggpictures SET imagedate = '$date' WHERE pid = '$picture->pid'");
233
  }
82
 
83
  // v1.3.0 -> v1.3.1
84
  if (version_compare($installed_ver, '1.3.1', '<')) {
85
+ // add description and previewpic for the album 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
+ // v1.3.5 -> v1.4.0
91
+ if (version_compare($installed_ver, '1.4.0', '<')) {
92
+ // add link from album to a page
93
+ ngg_maybe_add_column( $wpdb->nggalbum, 'pageid', "BIGINT(20) DEFAULT '0' NOT NULL AFTER sortorder");
94
+ }
95
+
96
  // update now the database
97
  update_option( "ngg_db_version", NGG_DBVERSION );
98
  echo __('finished', 'nggallery') . "<br />\n";
125
  update_option('ngg_options', $ngg_options);
126
  echo __('finished', 'nggallery') . "<br />\n";
127
  }
128
+
129
+ // Remove thumbcrop setting, thumbfix and quare size do the same
130
+ if (version_compare($installed_ver, '1.4.0', '<')) {
131
+ $ngg_options = get_option('ngg_options');
132
+ echo __('Update settings...', 'nggallery');
133
+ if ( $ngg_options['thumpcrop'] ) {
134
+ $ngg_options['thumbfix'] = true;
135
+ $ngg_options['thumbheight'] = $ngg_options['thumbwidth'] ;
136
+ $ngg_options['galAjaxNav'] = true;
137
+ }
138
+ $ngg_options['galHiddenImg'] = false;
139
+ update_option('ngg_options', $ngg_options);
140
+ echo __('finished', 'nggallery') . "<br />\n";
141
+ }
142
+
143
  return;
144
  }
145
  }
248
  if ( is_array($imagelist) ) {
249
  foreach ($imagelist as $image) {
250
  $picture = new nggImage($image);
251
+ $meta = new nggMeta($picture->pid, true);
252
  $date = $meta->get_date_time();
253
  $wpdb->query("UPDATE $wpdb->nggpictures SET imagedate = '$date' WHERE pid = '$picture->pid'");
254
  }
admin/upload.php CHANGED
@@ -1,4 +1,12 @@
1
  <?php
 
 
 
 
 
 
 
 
2
 
3
  // look up for the path
4
  require_once( dirname( dirname(__FILE__) ) . '/ngg-config.php');
@@ -20,7 +28,7 @@ unset($current_user);
20
  // admin.php require a proper login cookie
21
  require_once(ABSPATH . '/wp-admin/admin.php');
22
 
23
- header('Content-Type: text/plain');
24
 
25
  //check for correct capability
26
  if ( !is_user_logged_in() )
@@ -30,9 +38,6 @@ if ( !is_user_logged_in() )
30
  if ( !current_user_can('NextGEN Upload images') )
31
  die('You do not have permission to upload files. -2');
32
 
33
- function get_out_now() { exit; }
34
- add_action( 'shutdown', 'get_out_now', -1 );
35
-
36
  //check for correct nonce
37
  check_admin_referer('ngg_swfupload');
38
 
1
  <?php
2
+ /**
3
+ * Accepts file uploads from swfupload.
4
+ *
5
+ * @package NextGEN-Gallery
6
+ * @subpackage Administration
7
+ */
8
+
9
+ define('WP_ADMIN', true);
10
 
11
  // look up for the path
12
  require_once( dirname( dirname(__FILE__) ) . '/ngg-config.php');
28
  // admin.php require a proper login cookie
29
  require_once(ABSPATH . '/wp-admin/admin.php');
30
 
31
+ header('Content-Type: text/plain; charset=' . get_option('blog_charset'));
32
 
33
  //check for correct capability
34
  if ( !is_user_logged_in() )
38
  if ( !current_user_can('NextGEN Upload images') )
39
  die('You do not have permission to upload files. -2');
40
 
 
 
 
41
  //check for correct nonce
42
  check_admin_referer('ngg_swfupload');
43
 
admin/wpmu.php CHANGED
@@ -12,7 +12,7 @@ if(preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die('You
12
  $ngg_options = get_site_option('ngg_options');
13
 
14
  // same as $_SERVER['REQUEST_URI'], but should work under IIS 6.0
15
- $filepath = get_option('siteurl'). '/wp-admin/wpmu-admin.php?page='.$_GET['page'];
16
 
17
  if ( isset($_POST['updateoption']) ) {
18
  check_admin_referer('ngg_wpmu_settings');
@@ -29,7 +29,7 @@ if(preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die('You
29
  }
30
 
31
  update_site_option('ngg_options', $ngg_options);
32
- $messagetext = '<font color="green">'.__('Update successfully','nggallery').'</font>';
33
  }
34
 
35
  // message windows
@@ -42,8 +42,7 @@ if(preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die('You
42
  <form name="generaloptions" method="post">
43
  <?php wp_nonce_field('ngg_wpmu_settings') ?>
44
  <input type="hidden" name="page_options" value="gallerypath,wpmuQuotaCheck,wpmuZipUpload,wpmuStyle,wpmuRoles,wpmuCSSfile" />
45
- <fieldset class="options">
46
- <table class="optiontable editform">
47
  <tr valign="top">
48
  <th align="left"><?php _e('Gallery path','nggallery') ?></th>
49
  <td><input type="text" size="50" name="gallerypath" value="<?php echo $ngg_options[gallerypath]; ?>" title="TEST" /><br />
@@ -86,7 +85,7 @@ if(preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die('You
86
  $selected = " selected='selected'";
87
  }
88
  else $selected = '';
89
- $css_name = attribute_escape($css_name);
90
  echo "\n\t<option value=\"$key\" $selected>$css_name</option>";
91
  }
92
  ?>
@@ -95,8 +94,7 @@ if(preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die('You
95
  </td>
96
  </tr>
97
  </table>
98
- <div class="submit"><input type="submit" name="updateoption" value="<?php _e('Update') ;?> &raquo;"/></div>
99
- </fieldset>
100
  </form>
101
  </div>
102
 
12
  $ngg_options = get_site_option('ngg_options');
13
 
14
  // same as $_SERVER['REQUEST_URI'], but should work under IIS 6.0
15
+ $filepath = site_url( 'wp-admin/wpmu-admin.php?page=' . $_GET['page'], 'admin' );
16
 
17
  if ( isset($_POST['updateoption']) ) {
18
  check_admin_referer('ngg_wpmu_settings');
29
  }
30
 
31
  update_site_option('ngg_options', $ngg_options);
32
+ $messagetext = __('Update successfully','nggallery');
33
  }
34
 
35
  // message windows
42
  <form name="generaloptions" method="post">
43
  <?php wp_nonce_field('ngg_wpmu_settings') ?>
44
  <input type="hidden" name="page_options" value="gallerypath,wpmuQuotaCheck,wpmuZipUpload,wpmuStyle,wpmuRoles,wpmuCSSfile" />
45
+ <table class="form-table">
 
46
  <tr valign="top">
47
  <th align="left"><?php _e('Gallery path','nggallery') ?></th>
48
  <td><input type="text" size="50" name="gallerypath" value="<?php echo $ngg_options[gallerypath]; ?>" title="TEST" /><br />
85
  $selected = " selected='selected'";
86
  }
87
  else $selected = '';
88
+ $css_name = esc_attr($css_name);
89
  echo "\n\t<option value=\"$key\" $selected>$css_name</option>";
90
  }
91
  ?>
94
  </td>
95
  </tr>
96
  </table>
97
+ <div class="submit"><input type="submit" name="updateoption" value="<?php _e('Update') ;?> &raquo;"/></div>
 
98
  </form>
99
  </div>
100
 
changelog.txt CHANGED
@@ -1,6 +1,32 @@
1
  NextGEN Gallery
2
  by Alex Rabe & NextGEN DEV Team
3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4
  = V1.3.5 - 17.07.2009 =
5
  * Bugfix : Fixed XSS issue for Page title
6
 
@@ -8,7 +34,7 @@ by Alex Rabe & NextGEN DEV Team
8
  * Added : New filter ngg_gallery_object and ngg_image_object
9
  * Bugfix : Fix double rendering of a gallery if two album shortcodes are used
10
  * Bugfix : Fix for custom field ngg_gal_sort
11
- * Bugfix : Changed capapbility check for upload
12
  * Bugfix : Check for correct version OR memory limit
13
 
14
  = V1.3.3 - 11.06.2009 =
@@ -120,11 +146,11 @@ by Alex Rabe & NextGEN DEV Team
120
  * NEW : Create output via template files, more flexible and support for multiple templates
121
  * NEW : Extended role system. Each gallery has now a author
122
  * NEW : [thumb id="4,5,12,..."] shortcode. You can now insert thumbnails for one or more images (that are not necessarly inside the same gallery).
123
- * Changed : Add swfupload 2.2.0. Support for Adobe Flash 10 upload
124
- * Changed : Update all Admin pages for Wordpress 2.7 Admin UI
125
  * Changed : New icon for TinyMCE and WP2.7 Menue from http://www.pinvoke.com/
126
  * Changed : Move update message to admin.php
127
- * Changed : Widgets are now core and doesn't need to be activate, rework as Multi Widgets
128
  * Changed : Improved the gallery management page.
129
  * Changed : Rename the filter 'ngg_create_gallery_thumbcode' to 'ngg_get_thumbcode'.
130
  * Changed : Convert tags to WP-Taxonomy tables, no more need for ngg_tags, ngg_pic2tags
1
  NextGEN Gallery
2
  by Alex Rabe & NextGEN DEV Team
3
 
4
+ = v1.4.0 - 08.11.2009 =
5
+ * NEW : Automatic rotate images during upload or via manage gallery page (THX to Simone Fumagalli)
6
+ * NEW : Include Bulkupdate for gallery overview, require PHP 5.2
7
+ * NEW : XMLRPC support with 4 new methods : see xmlrpc.php for more information
8
+ * NEW : Recent and random images can be taken from a specific gallery using the id=x parameter in the shortcode (THX to Prollius)
9
+ * NEW : Recent images can be recent by exif date (instead of database id) by using the mode=recentdate parameter in the shortcode (THX to Prollius)
10
+ * NEW : Introduce the WP_Object_cache and meta_data
11
+ * NEW : Various new hooks and filters
12
+ * Added : Better support for role manager plugin (THX to Mattias Buelens)
13
+ * Added : New option to add hidden images. Needed to show all images in a modal window (Thickbox, Lightbox et.)
14
+ * Added : New link parameter for the singlepic shortcode : [singlepic id=x w=x h=x link="http://google.com"]
15
+ * Added : New template gallery-carousel
16
+ * Added : New id parameter for recent and random shortcodes : [random max="7" template="filename" id="2"] takes only pictures from the gallery with id=2
17
+ * Added : New mode parameter for recent shortcode : [recent max="7" template="filename" id="3" mode="date" /] where mode can be one of (id, date, sort). Recent pictures are delivered by addition to database (id), exif date (date) or user sort order (sort).
18
+ * Added : Enable/Disable Ajax navigation via settings
19
+ * Added : New filter hook 'ngg_render_template' to render templates with a other plugin
20
+ * Changed : Added option to link an album with a page id
21
+ * Changed : Support templates for child themes, use STYLESHEETPATH instead TEMPLATEPATH (THX to Prollius)
22
+ * Changed : Rework of Media RSS Widget
23
+ * Bugfix : Check capability to create a new page
24
+ * Bugfix : Fix double call of filter name , changed to ngg_picturelist_object (THX to Prollius)
25
+ * Bugfix : Check for a deleted gallery in a album
26
+
27
+ = V1.3.6 - 20.09.2009 =
28
+ * Changed : Just change the feed link
29
+
30
  = V1.3.5 - 17.07.2009 =
31
  * Bugfix : Fixed XSS issue for Page title
32
 
34
  * Added : New filter ngg_gallery_object and ngg_image_object
35
  * Bugfix : Fix double rendering of a gallery if two album shortcodes are used
36
  * Bugfix : Fix for custom field ngg_gal_sort
37
+ * Bugfix : Changed capability check for upload
38
  * Bugfix : Check for correct version OR memory limit
39
 
40
  = V1.3.3 - 11.06.2009 =
146
  * NEW : Create output via template files, more flexible and support for multiple templates
147
  * NEW : Extended role system. Each gallery has now a author
148
  * NEW : [thumb id="4,5,12,..."] shortcode. You can now insert thumbnails for one or more images (that are not necessarly inside the same gallery).
149
+ * Changed : Add swfupload 2.2.0. Support for Adobe Flash 10 upload
150
+ * Changed : Update all Admin pages for Wordpress 2.7 Admin UI
151
  * Changed : New icon for TinyMCE and WP2.7 Menue from http://www.pinvoke.com/
152
  * Changed : Move update message to admin.php
153
+ * Changed : Widgets are now core and doesn't need to be activate, rework as Multi Widgets
154
  * Changed : Improved the gallery management page.
155
  * Changed : Rename the filter 'ngg_create_gallery_thumbcode' to 'ngg_get_thumbcode'.
156
  * Changed : Convert tags to WP-Taxonomy tables, no more need for ngg_tags, ngg_pic2tags
css/Black_Minimalism.css CHANGED
@@ -2,7 +2,7 @@
2
  CSS Name: Black Minimalism Theme
3
  Description: For Black Minimalism Theme
4
  Author: Alex Rabe
5
- Version: 1.35
6
 
7
  This is a template stylesheet that can be used with NextGEN Gallery. I tested the
8
  styles with a default theme Kubrick. Modify it when your theme struggle with it,
@@ -298,3 +298,55 @@ it's only a template design
298
  .ngg-related-gallery img:hover {
299
  border: 1px solid #000000;
300
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2
  CSS Name: Black Minimalism Theme
3
  Description: For Black Minimalism Theme
4
  Author: Alex Rabe
5
+ Version: 1.40
6
 
7
  This is a template stylesheet that can be used with NextGEN Gallery. I tested the
8
  styles with a default theme Kubrick. Modify it when your theme struggle with it,
298
  .ngg-related-gallery img:hover {
299
  border: 1px solid #000000;
300
  }
301
+
302
+ /* ----------- Gallery list -------------*/
303
+
304
+ .ngg-galleryoverview ul li:before {
305
+ content: '' !important;
306
+ }
307
+
308
+ .ngg-gallery-list {
309
+ list-style-type:none;
310
+ padding: 0px !important;
311
+ text-indent:0px !important;
312
+ }
313
+
314
+ .ngg-galleryoverview div.pic img{
315
+ width: 100%;
316
+ }
317
+
318
+ .ngg-gallery-list li {
319
+ float:left;
320
+ margin:0 2px 0px 2px !important;
321
+ overflow:hidden;
322
+ }
323
+
324
+ .ngg-gallery-list li a {
325
+ border:1px solid #CCCCCC;
326
+ display:block;
327
+ padding:2px;
328
+ }
329
+
330
+ .ngg-gallery-list li.selected a{
331
+ -moz-background-clip:border;
332
+ -moz-background-inline-policy:continuous;
333
+ -moz-background-origin:padding;
334
+ background:#000000 none repeat scroll 0 0;
335
+ }
336
+
337
+ .ngg-gallery-list li img {
338
+ height:40px;
339
+ width:40px;
340
+ }
341
+
342
+ li.ngg-next, li.ngg-prev {
343
+ height:40px;
344
+ width:40px;
345
+ font-size:3.5em;
346
+ }
347
+
348
+ li.ngg-next a, li.ngg-prev a {
349
+ padding-top: 10px;
350
+ border: none;
351
+ text-decoration: none;
352
+ }
css/hovereffect.css CHANGED
@@ -2,7 +2,7 @@
2
  CSS Name: Hovereffect Styles
3
  Description: Hover Stylesheet based on the idea of Hoverbox from http://host.sonspring.com/hoverbox/
4
  Author: Alex Rabe - Orginal by Nathan Smith
5
- Version: 0.61
6
 
7
  This is a template stylesheet which doesn't support description below the thumbnails. It's a experimental version.
8
 
@@ -347,4 +347,56 @@ This is a template stylesheet which doesn't support description below the thumbn
347
 
348
  .ngg-related-gallery img:hover {
349
  border: 1px solid #000000;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
350
  }
2
  CSS Name: Hovereffect Styles
3
  Description: Hover Stylesheet based on the idea of Hoverbox from http://host.sonspring.com/hoverbox/
4
  Author: Alex Rabe - Orginal by Nathan Smith
5
+ Version: 1.40
6
 
7
  This is a template stylesheet which doesn't support description below the thumbnails. It's a experimental version.
8
 
347
 
348
  .ngg-related-gallery img:hover {
349
  border: 1px solid #000000;
350
+ }
351
+
352
+ /* ----------- Gallery list -------------*/
353
+
354
+ .ngg-galleryoverview ul li:before {
355
+ content: '' !important;
356
+ }
357
+
358
+ .ngg-gallery-list {
359
+ list-style-type:none;
360
+ padding: 0px !important;
361
+ text-indent:0px !important;
362
+ }
363
+
364
+ .ngg-galleryoverview div.pic img{
365
+ width: 100%;
366
+ }
367
+
368
+ .ngg-gallery-list li {
369
+ float:left;
370
+ margin:0 2px 0px 2px !important;
371
+ overflow:hidden;
372
+ }
373
+
374
+ .ngg-gallery-list li a {
375
+ border:1px solid #CCCCCC;
376
+ display:block;
377
+ padding:2px;
378
+ }
379
+
380
+ .ngg-gallery-list li.selected a{
381
+ -moz-background-clip:border;
382
+ -moz-background-inline-policy:continuous;
383
+ -moz-background-origin:padding;
384
+ background:#000000 none repeat scroll 0 0;
385
+ }
386
+
387
+ .ngg-gallery-list li img {
388
+ height:40px;
389
+ width:40px;
390
+ }
391
+
392
+ li.ngg-next, li.ngg-prev {
393
+ height:40px;
394
+ width:40px;
395
+ font-size:3.5em;
396
+ }
397
+
398
+ li.ngg-next a, li.ngg-prev a {
399
+ padding-top: 10px;
400
+ border: none;
401
+ text-decoration: none;
402
  }
css/ngg_k2.css CHANGED
@@ -275,6 +275,7 @@ it's only a template design
275
  overflow: hidden;
276
  margin:0pt;
277
  padding:5px 0px 0px 0pt;
 
278
  }
279
 
280
  .ngg-widget img {
275
  overflow: hidden;
276
  margin:0pt;
277
  padding:5px 0px 0px 0pt;
278
+ text-align:left;
279
  }
280
 
281
  .ngg-widget img {
css/ngg_shadow.css CHANGED
@@ -2,7 +2,7 @@
2
  CSS Name: Shadow Effect
3
  Description: NextGEN Default Style with a Shadow effect
4
  Author: Alex Rabe
5
- Version: 1.40
6
 
7
  This is a template stylesheet that can be used with NextGEN Gallery. I tested the
8
  styles with a default theme Kubrick. Modify it when your theme struggle with it,
@@ -294,3 +294,55 @@ it's only a template design
294
  .ngg-related-gallery img:hover {
295
  border: 1px solid #000000;
296
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2
  CSS Name: Shadow Effect
3
  Description: NextGEN Default Style with a Shadow effect
4
  Author: Alex Rabe
5
+ Version: 1.50
6
 
7
  This is a template stylesheet that can be used with NextGEN Gallery. I tested the
8
  styles with a default theme Kubrick. Modify it when your theme struggle with it,
294
  .ngg-related-gallery img:hover {
295
  border: 1px solid #000000;
296
  }
297
+
298
+ /* ----------- Gallery list -------------*/
299
+
300
+ .ngg-galleryoverview ul li:before {
301
+ content: '' !important;
302
+ }
303
+
304
+ .ngg-gallery-list {
305
+ list-style-type:none;
306
+ padding: 0px !important;
307
+ text-indent:0px !important;
308
+ }
309
+
310
+ .ngg-galleryoverview div.pic img{
311
+ width: 100%;
312
+ }
313
+
314
+ .ngg-gallery-list li {
315
+ float:left;
316
+ margin:0 2px 0px 2px !important;
317
+ overflow:hidden;
318
+ }
319
+
320
+ .ngg-gallery-list li a {
321
+ border:1px solid #CCCCCC;
322
+ display:block;
323
+ padding:2px;
324
+ }
325
+
326
+ .ngg-gallery-list li.selected a{
327
+ -moz-background-clip:border;
328
+ -moz-background-inline-policy:continuous;
329
+ -moz-background-origin:padding;
330
+ background:#000000 none repeat scroll 0 0;
331
+ }
332
+
333
+ .ngg-gallery-list li img {
334
+ height:40px;
335
+ width:40px;
336
+ }
337
+
338
+ li.ngg-next, li.ngg-prev {
339
+ height:40px;
340
+ width:40px;
341
+ font-size:3.5em;
342
+ }
343
+
344
+ li.ngg-next a, li.ngg-prev a {
345
+ padding-top: 10px;
346
+ border: none;
347
+ text-decoration: none;
348
+ }
css/ngg_shadow2.css CHANGED
@@ -2,7 +2,7 @@
2
  CSS Name: Shadow Effect with Description text
3
  Description: NextGEN Default Style with a Shadow effect and description text below the thumbnail
4
  Author: Alex Rabe
5
- Version: 1.44
6
 
7
  This is a template stylesheet that can be used with NextGEN Gallery. I tested the
8
  styles with a default theme Kubrick. Modify it when your theme struggle with it,
@@ -302,3 +302,55 @@ it's only a template design
302
  .ngg-related-gallery img:hover {
303
  border: 1px solid #000000;
304
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2
  CSS Name: Shadow Effect with Description text
3
  Description: NextGEN Default Style with a Shadow effect and description text below the thumbnail
4
  Author: Alex Rabe
5
+ Version: 1.50
6
 
7
  This is a template stylesheet that can be used with NextGEN Gallery. I tested the
8
  styles with a default theme Kubrick. Modify it when your theme struggle with it,
302
  .ngg-related-gallery img:hover {
303
  border: 1px solid #000000;
304
  }
305
+
306
+ /* ----------- Gallery list -------------*/
307
+
308
+ .ngg-galleryoverview ul li:before {
309
+ content: '' !important;
310
+ }
311
+
312
+ .ngg-gallery-list {
313
+ list-style-type:none;
314
+ padding: 0px !important;
315
+ text-indent:0px !important;
316
+ }
317
+
318
+ .ngg-galleryoverview div.pic img{
319
+ width: 100%;
320
+ }
321
+
322
+ .ngg-gallery-list li {
323
+ float:left;
324
+ margin:0 2px 0px 2px !important;
325
+ overflow:hidden;
326
+ }
327
+
328
+ .ngg-gallery-list li a {
329
+ border:1px solid #CCCCCC;
330
+ display:block;
331
+ padding:2px;
332
+ }
333
+
334
+ .ngg-gallery-list li.selected a{
335
+ -moz-background-clip:border;
336
+ -moz-background-inline-policy:continuous;
337
+ -moz-background-origin:padding;
338
+ background:#000000 none repeat scroll 0 0;
339
+ }
340
+
341
+ .ngg-gallery-list li img {
342
+ height:40px;
343
+ width:40px;
344
+ }
345
+
346
+ li.ngg-next, li.ngg-prev {
347
+ height:40px;
348
+ width:40px;
349
+ font-size:3.5em;
350
+ }
351
+
352
+ li.ngg-next a, li.ngg-prev a {
353
+ padding-top: 10px;
354
+ border: none;
355
+ text-decoration: none;
356
+ }
css/nggallery.css CHANGED
@@ -289,6 +289,7 @@ html>body .ngg-album {
289
  overflow: hidden;
290
  margin:0pt;
291
  padding:5px 0px 0px 0pt;
 
292
  }
293
 
294
  .ngg-widget img {
@@ -318,3 +319,55 @@ html>body .ngg-album {
318
  .ngg-related-gallery img:hover {
319
  border: 1px solid #000000;
320
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
289
  overflow: hidden;
290
  margin:0pt;
291
  padding:5px 0px 0px 0pt;
292
+ text-align:left;
293
  }
294
 
295
  .ngg-widget img {
319
  .ngg-related-gallery img:hover {
320
  border: 1px solid #000000;
321
  }
322
+
323
+ /* ----------- Gallery list -------------*/
324
+
325
+ .ngg-galleryoverview ul li:before {
326
+ content: '' !important;
327
+ }
328
+
329
+ .ngg-gallery-list {
330
+ list-style-type:none;
331
+ padding: 0px !important;
332
+ text-indent:0px !important;
333
+ }
334
+
335
+ .ngg-galleryoverview div.pic img{
336
+ width: 100%;
337
+ }
338
+
339
+ .ngg-gallery-list li {
340
+ float:left;
341
+ margin:0 2px 0px 2px !important;
342
+ overflow:hidden;
343
+ }
344
+
345
+ .ngg-gallery-list li a {
346
+ border:1px solid #CCCCCC;
347
+ display:block;
348
+ padding:2px;
349
+ }
350
+
351
+ .ngg-gallery-list li.selected a{
352
+ -moz-background-clip:border;
353
+ -moz-background-inline-policy:continuous;
354
+ -moz-background-origin:padding;
355
+ background:#000000 none repeat scroll 0 0;
356
+ }
357
+
358
+ .ngg-gallery-list li img {
359
+ height:40px;
360
+ width:40px;
361
+ }
362
+
363
+ li.ngg-next, li.ngg-prev {
364
+ height:40px;
365
+ width:40px;
366
+ font-size:3.5em;
367
+ }
368
+
369
+ li.ngg-next a, li.ngg-prev a {
370
+ padding-top: 10px;
371
+ border: none;
372
+ text-decoration: none;
373
+ }
lang/nggallery-de_DE.mo CHANGED
Binary file
lang/nggallery-de_DE.po CHANGED
@@ -2,9 +2,9 @@ msgid ""
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"
10
  "Content-Type: text/plain; charset=UTF-8\n"
@@ -18,60 +18,73 @@ msgstr ""
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
-
75
  #: ../admin/about.php:9
76
  msgid "Copyright notes / Credits"
77
  msgstr "Copyright Hinweise / Credits"
@@ -113,147 +126,143 @@ 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
 
195
  #: ../admin/addgallery.php:37
196
- #: ../admin/addgallery.php:53
197
  msgid "Upload failed!"
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
 
206
- #: ../admin/addgallery.php:105
207
  msgid "Image Files"
208
  msgstr "Bilder"
209
 
210
- #: ../admin/addgallery.php:124
211
- #: ../admin/addgallery.php:155
212
  msgid "remove"
213
  msgstr "Entfernen"
214
 
215
- #: ../admin/addgallery.php:125
216
  msgid "Browse..."
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
 
230
- #: ../admin/addgallery.php:176
231
  #: ../admin/addgallery.php:205
232
  msgid "Upload a Zip-File"
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
 
@@ -330,541 +339,586 @@ msgstr "Wähle im Dialog mit Ctrl/Shift mehrere Bilder gleichzeitig aus."
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 ."
862
 
863
  #: ../admin/install.php:23
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
 
@@ -876,74 +930,123 @@ msgstr "[Zeige als Diashow]"
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"
@@ -952,11 +1055,7 @@ msgstr "Galerie nicht gefunden"
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,161 +1066,162 @@ msgstr ""
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
 
@@ -1129,109 +1229,89 @@ msgstr "ausschließen"
1129
  msgid "Sort order changed"
1130
  msgstr "Reihenfolge aktualisiert"
1131
 
1132
- #: ../admin/manage-sort.php:65
1133
  msgid "Sort Gallery"
1134
  msgstr "Sortiere Bilder"
1135
 
1136
- #: ../admin/manage-sort.php:69
1137
  msgid "Update Sort Order"
1138
  msgstr "Sortierung speichern"
1139
 
1140
- #: ../admin/manage-sort.php:72
1141
  msgid "Back to gallery"
1142
  msgstr "Zurück zur Galerie"
1143
 
1144
- #: ../admin/manage-sort.php:77
1145
  msgid "Presort"
1146
  msgstr "Vorsortieren"
1147
 
1148
- #: ../admin/manage-sort.php:78
1149
  msgid "Unsorted"
1150
  msgstr "Unsortiert"
1151
 
1152
- #: ../admin/manage-sort.php:79
 
1153
  msgid "Image ID"
1154
  msgstr "Bilder ID"
1155
 
1156
- #: ../admin/manage-sort.php:81
 
1157
  msgid "Alt/Title text"
1158
  msgstr "Alt / Titel Text"
1159
 
1160
- #: ../admin/manage-sort.php:82
1161
  msgid "Date/Time"
1162
  msgstr "Datum/Zeit"
1163
 
1164
- #: ../admin/manage-sort.php:83
 
1165
  msgid "Ascending"
1166
  msgstr "Aufsteigend"
1167
 
1168
- #: ../admin/manage-sort.php:84
 
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
 
1210
- #: ../admin/manage_thumbnail.php:19
1211
- #: ../admin/manage_thumbnail.php:22
1212
- #: ../admin/showmeta.php:10
1213
- #: ../admin/showmeta.php:13
1214
- msgid "Cheatin&#8217; uh?"
1215
- msgstr "Cheatin&#8217; uh?"
1216
-
1217
- #: ../admin/manage_thumbnail.php:116
1218
- msgid "Select with the mouse the area for the new thumbnail."
1219
- msgstr "Wähle mit der Maus den Bereich für das neue Thumbnail"
1220
-
1221
- #: ../admin/manage_thumbnail.php:130
1222
- msgid "Thumbnail updated"
1223
- msgstr "Thumbnail geändert"
1224
-
1225
- #: ../admin/manage_thumbnail.php:135
1226
- msgid "Error updating thumbnail."
1227
- msgstr "Fehler : Thumbnails konnte nicht geändert werden"
1228
-
1229
- #: ../admin/manage_thumbnail.php:152
1230
- msgid "Select the area for the thumbnail from the picture on the left."
1231
- msgstr "Wähle den Auschnitt für das Thumbanil innerhalb des Bildes"
1232
-
1233
  #: ../admin/media-upload.php:132
1234
- #: ../admin/tinymce/window.php:43
1235
  msgid "No gallery"
1236
  msgstr "Keine Galerie"
1237
 
@@ -1256,27 +1336,24 @@ msgid "Alignment"
1256
  msgstr "Ausrichtung"
1257
 
1258
  #: ../admin/media-upload.php:198
1259
- #: ../admin/settings.php:339
1260
  msgid "None"
1261
  msgstr "Keiner"
1262
 
1263
  #: ../admin/media-upload.php:200
1264
- #: ../admin/tinymce/window.php:129
1265
  msgid "Left"
1266
  msgstr "Links"
1267
 
1268
  #: ../admin/media-upload.php:202
1269
- #: ../admin/tinymce/window.php:130
1270
  msgid "Center"
1271
  msgstr "Zentrieren"
1272
 
1273
  #: ../admin/media-upload.php:204
1274
- #: ../admin/tinymce/window.php:131
1275
  msgid "Right"
1276
  msgstr "Rechts"
1277
 
1278
  #: ../admin/media-upload.php:208
1279
- #: ../admin/settings.php:442
1280
  msgid "Size"
1281
  msgstr "Größe"
1282
 
@@ -1296,191 +1373,201 @@ msgstr "In den Beitrag einfügen"
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
 
 
 
 
 
1484
  #: ../admin/roles.php:22
1485
  msgid "Updated capabilities"
1486
  msgstr "Zugriffsrechte geändert"
@@ -1537,523 +1624,542 @@ msgstr "Optionen änderen"
1537
  msgid "Update capabilities"
1538
  msgstr "Rechte aktualisieren"
1539
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1540
  #: ../admin/settings.php:61
1541
  msgid "Cache cleared"
1542
  msgstr "Cache löschen"
1543
 
1544
- #: ../admin/settings.php:109
1545
- #: ../admin/settings.php:121
1546
  msgid "General Options"
1547
  msgstr "Allg. Optionen"
1548
 
1549
- #: ../admin/settings.php:110
1550
- #: ../admin/settings.php:291
1551
  msgid "Thumbnails"
1552
  msgstr "Thumbnails"
1553
 
1554
- #: ../admin/settings.php:111
1555
  msgid "Images"
1556
  msgstr "Bilder"
1557
 
1558
- #: ../admin/settings.php:113
1559
- #: ../admin/settings.php:328
1560
  msgid "Effects"
1561
  msgstr "Effekte"
1562
 
1563
- #: ../admin/settings.php:114
1564
- #: ../admin/settings.php:366
1565
- #: ../admin/tinymce/window.php:119
1566
  msgid "Watermark"
1567
  msgstr "Wasserzeichen"
1568
 
1569
- #: ../admin/settings.php:115
1570
- #: ../admin/settings.php:292
1571
- #: ../admin/settings.php:470
1572
- #: ../admin/tinymce/window.php:58
1573
  msgid "Slideshow"
1574
  msgstr "Slideshow"
1575
 
1576
- #: ../admin/settings.php:127
1577
- #: ../admin/wpmu.php:48
1578
  msgid "Gallery path"
1579
  msgstr "Galerie-Pfad"
1580
 
1581
- #: ../admin/settings.php:129
1582
  msgid "This is the default path for all galleries"
1583
  msgstr "Dies ist der Standard-Pfad für alle Galerien"
1584
 
1585
- #: ../admin/settings.php:132
1586
  msgid "Delete image files"
1587
  msgstr "Lösche Bilddateien"
1588
 
1589
- #: ../admin/settings.php:134
1590
  msgid "Delete files, when removing a gallery in the database"
1591
  msgstr "Löscht auch die Dateien, falls die Galerie aus der Datenbank entfernt wird"
1592
 
1593
- #: ../admin/settings.php:137
1594
  msgid "Activate permalinks"
1595
  msgstr "Aktiviere Permalinks"
1596
 
1597
- #: ../admin/settings.php:139
1598
  msgid "When you activate this option, you need to update your permalink structure one time."
1599
  msgstr "Wenn du diese Option aktivierst, muss du einmal die Permalink Struktur aktualisieren."
1600
 
1601
- #: ../admin/settings.php:142
1602
  msgid "Select graphic library"
1603
  msgstr "Wähle Grafik-Bibliothek"
1604
 
1605
- #: ../admin/settings.php:143
1606
  msgid "GD Library"
1607
  msgstr "GD Bibliothek"
1608
 
1609
- #: ../admin/settings.php:144
1610
  msgid "ImageMagick (Experimental). Path to the library :"
1611
  msgstr "ImageMagick (Experimental). Pfad zur Bibliothek :"
1612
 
1613
- #: ../admin/settings.php:149
1614
  msgid "Activate Media RSS feed"
1615
  msgstr "Aktiviere Media RSS Feed"
1616
 
1617
- #: ../admin/settings.php:151
1618
  msgid "A RSS feed will be added to you blog header. Useful for CoolIris/PicLens"
1619
  msgstr "Ein Bilder-RSS Feed wird zum Blog hinzugefügt"
1620
 
1621
- #: ../admin/settings.php:154
1622
  msgid "Activate PicLens/CoolIris support"
1623
  msgstr "Aktiviere PicLens/CoolIris"
1624
 
1625
- #: ../admin/settings.php:156
1626
  msgid "When you activate this option, some javascript is added to your site footer. Make sure that wp_footer is called in your theme."
1627
  msgstr "Dieser Effekt fügt ein neues Javascript zu deinem Theme hinzu. Beachte das wp_footer() in deinen Vorlagen aufgerufen wird."
1628
 
1629
- #: ../admin/settings.php:159
1630
  msgid "Tags / Categories"
1631
  msgstr "Stichwörter / Kategorien"
1632
 
1633
- #: ../admin/settings.php:162
1634
  msgid "Activate related images"
1635
  msgstr "Verwandte Bilder anzeigen"
1636
 
1637
- #: ../admin/settings.php:164
1638
  msgid "This option will append related images to every post"
1639
  msgstr "Diese Option hängt verwandte Bilder an jeden Beitrag"
1640
 
1641
- #: ../admin/settings.php:168
1642
  msgid "Match with"
1643
  msgstr "Vergleiche mit"
1644
 
1645
- #: ../admin/settings.php:169
1646
  msgid "Categories"
1647
  msgstr "Kategorien"
1648
 
1649
- #: ../admin/settings.php:174
1650
  msgid "Max. number of images"
1651
  msgstr "Max. Anzahl der Bilder"
1652
 
1653
- #: ../admin/settings.php:176
1654
  msgid "0 will show all images"
1655
  msgstr "0 zeige alle verwandten Bilder"
1656
 
1657
- #: ../admin/settings.php:187
 
 
 
 
 
 
 
 
 
1658
  msgid "Thumbnail settings"
1659
  msgstr "Thumbnail Einstellungen"
1660
 
1661
- #: ../admin/settings.php:191
1662
  msgid "Please note : If you change the settings, you need to recreate the thumbnails under -> Manage Gallery ."
1663
  msgstr "Bitte beachten : Änderungen der Einstellungen werden erst übernommen, wenn Du neue Thumbnails unter -> \"Gallery verwalten\" erstellst"
1664
 
1665
- #: ../admin/settings.php:194
1666
- msgid "Width x height (in pixel)"
1667
- msgstr "Breite x Höhe (in Pixel)"
1668
-
1669
- #: ../admin/settings.php:196
1670
- msgid "These values are maximum values "
1671
- msgstr "Diese Angaben sind maximale Angaben."
1672
-
1673
- #: ../admin/settings.php:199
1674
- msgid "Set fix dimension"
1675
- msgstr "Setze fixe Größe"
1676
-
1677
- #: ../admin/settings.php:201
1678
- msgid "Ignore the aspect ratio, no portrait thumbnails"
1679
- msgstr "Ignoriere Bildseitenverhältnis"
1680
-
1681
- #: ../admin/settings.php:204
1682
- msgid "Crop square thumbnail from image"
1683
- msgstr "Mittige Thumbnails aus Bildern ausschneiden"
1684
-
1685
- #: ../admin/settings.php:206
1686
- msgid "Create square thumbnails, use only the width setting :"
1687
- msgstr "Erstellt viereckige Thumbnails, nutzt nur den Wert der Breite :"
1688
-
1689
- #: ../admin/settings.php:209
1690
  msgid "Thumbnail quality"
1691
  msgstr "Thumbnail Qualität"
1692
 
1693
- #: ../admin/settings.php:220
1694
  msgid "Image settings"
1695
  msgstr "Bild Einstellungen"
1696
 
1697
- #: ../admin/settings.php:226
1698
  msgid "Resize Images"
1699
  msgstr "Bilder verkleinern"
1700
 
1701
- #: ../admin/settings.php:230
1702
- msgid "Width x height (in pixel). NextGEN Gallery will keep ratio size"
1703
- msgstr "Breite x Höhe (in Pixel). NextGEN Galerie beachtet das Seitenverhältnis."
1704
-
1705
- #: ../admin/settings.php:233
1706
  msgid "Image quality"
1707
  msgstr "Bild Qualität"
1708
 
1709
- #: ../admin/settings.php:238
1710
  msgid "Single picture"
1711
  msgstr "Einzelbilder"
1712
 
1713
- #: ../admin/settings.php:241
1714
  msgid "Cache single pictures"
1715
  msgstr "Nutze Cache für Einzelbidler"
1716
 
1717
- #: ../admin/settings.php:244
1718
  msgid "Creates a file for each singlepic settings. Reduce the CPU load"
1719
  msgstr "Erstellt ein Cache-Bild für jedes Einzelbild (singlepic). Reduziert die CPU Belastung."
1720
 
1721
- #: ../admin/settings.php:247
1722
  msgid "Clear cache folder"
1723
  msgstr "Lösche Cache Verzeichnis"
1724
 
1725
- #: ../admin/settings.php:249
1726
  msgid "Proceed now"
1727
  msgstr "Jetzt durchführen"
1728
 
1729
- #: ../admin/settings.php:265
1730
  msgid "Deactivate gallery page link"
1731
  msgstr "Keine Seitenverzweigung"
1732
 
1733
- #: ../admin/settings.php:267
1734
  msgid "The album will not link to a gallery subpage. The gallery is shown on the same page."
1735
  msgstr "Ein Album benötigt dann keinen Link zur Seite. Die Galerie wird direkt angezeigt."
1736
 
1737
- #: ../admin/settings.php:271
1738
  msgid "Number of images per page"
1739
  msgstr "Anzahl der Bilder pro Seite"
1740
 
1741
- #: ../admin/settings.php:273
1742
  msgid "0 will disable pagination, all images on one page"
1743
  msgstr "0 schaltet Blätterfunktion ab ( = alle Bilder auf einer Seite )"
1744
 
1745
- #: ../admin/settings.php:277
1746
  msgid "Number of columns"
1747
  msgstr "Anzahl der Spalten"
1748
 
1749
- #: ../admin/settings.php:279
1750
  msgid "0 will display as much as possible based on the width of your theme. Setting normally only required for captions below the images"
1751
  msgstr "Mit \"0\" werden soviele Bilder wie möglich in einer Reihe dargestellt. Die Einstellung ist normalerweise nur für Beschriftungen unterhalb der Bilder sinnvoll."
1752
 
1753
- #: ../admin/settings.php:283
1754
  msgid "Integrate slideshow"
1755
  msgstr "Slideshow verwenden"
1756
 
1757
- #: ../admin/settings.php:290
1758
  msgid "Show first"
1759
  msgstr "Zeige als Erstes"
1760
 
1761
- #: ../admin/settings.php:296
1762
  msgid "Show ImageBrowser"
1763
  msgstr "Zeige Bilder Browser"
1764
 
1765
- #: ../admin/settings.php:298
1766
  msgid "The gallery will open the ImageBrowser instead the effect."
1767
  msgstr "Es wird der Bilder Browser angezeigt (Kein JavaScript Effekt)"
1768
 
1769
- #: ../admin/settings.php:302
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1770
  msgid "Sort options"
1771
  msgstr "Sortierung"
1772
 
1773
- #: ../admin/settings.php:305
1774
  msgid "Sort thumbnails"
1775
  msgstr "Thumbnails sortieren"
1776
 
1777
- #: ../admin/settings.php:307
1778
  msgid "Custom order"
1779
  msgstr "Benutzerdefiniert"
1780
 
1781
- #: ../admin/settings.php:309
1782
  msgid "File name"
1783
  msgstr "Dateiname"
1784
 
1785
- #: ../admin/settings.php:310
1786
  msgid "Alt / Title text"
1787
  msgstr "Alt / Titel Text"
1788
 
1789
- #: ../admin/settings.php:311
1790
  msgid "Date / Time"
1791
  msgstr "Datum/Zeit"
1792
 
1793
- #: ../admin/settings.php:315
1794
  msgid "Sort direction"
1795
  msgstr "Sortierreihenfolge"
1796
 
1797
- #: ../admin/settings.php:332
1798
- msgid "Here you can select the thumbnail effect, NextGEN Gallery will integrate the required HTML code in the images. Please note that only the Thickbox effect will automatic added to your theme."
1799
- msgstr "Hier kannst Du den Effekt für die Thumbnails auswählen. NextGEN Galerie wird den benötigten HTML Code verwenden. Bitte beachte, das nur der Thickbox Effekt automatisch in Dein Theme von Wordpress integriert wird. Alle anderen Effekte mußt Du selbst in die header.php eintragen (JS)."
1800
 
1801
- #: ../admin/settings.php:333
1802
  msgid "With the placeholder"
1803
  msgstr "Mit Platzhalter"
1804
 
1805
- #: ../admin/settings.php:333
1806
  msgid "you can activate a navigation through the images (depend on the effect). Change the code line only , when you use a different thumbnail effect or you know what you do."
1807
  msgstr "Du kannst eine Navigation durch die Bilder aktivieren (hängt vom Effekt ab). Ändere nur die Codezeile falls Du einen anderen Effekt für die Thumbnails verwendest oder einfach weißt, was Du tust."
1808
 
1809
- #: ../admin/settings.php:336
1810
  msgid "JavaScript Thumbnail effect"
1811
  msgstr "JavaScript Thumbnail Effekt"
1812
 
1813
- #: ../admin/settings.php:340
1814
  msgid "Thickbox"
1815
  msgstr "Thickbox"
1816
 
1817
- #: ../admin/settings.php:341
1818
  msgid "Lightbox"
1819
  msgstr "Lightbox"
1820
 
1821
- #: ../admin/settings.php:342
1822
  msgid "Highslide"
1823
  msgstr "Highslide"
1824
 
1825
- #: ../admin/settings.php:343
1826
  msgid "Shutter"
1827
  msgstr "Shutter"
1828
 
1829
- #: ../admin/settings.php:344
1830
  msgid "Custom"
1831
  msgstr "Eigener"
1832
 
1833
- #: ../admin/settings.php:349
1834
  msgid "Link Code line"
1835
  msgstr "Link Code Zeile"
1836
 
1837
- #: ../admin/settings.php:367
1838
  msgid "Please note : You can only activate the watermark under -> Manage Gallery . This action cannot be undone."
1839
  msgstr "Bitte beachten : Das Wasserzeichen kann nur unter der Galerieverwaltung gesetzt werden. "
1840
 
1841
- #: ../admin/settings.php:372
1842
  msgid "Preview"
1843
  msgstr "Vorschau"
1844
 
1845
- #: ../admin/settings.php:374
1846
- #: ../admin/settings.php:379
1847
  msgid "Position"
1848
  msgstr "Position"
1849
 
1850
- #: ../admin/settings.php:399
1851
  msgid "Offset"
1852
  msgstr "Abstand"
1853
 
1854
- #: ../admin/settings.php:415
1855
  msgid "Use image as watermark"
1856
- msgstr "Benutze Bild als Wasserzeichen"
1857
 
1858
- #: ../admin/settings.php:418
1859
  msgid "URL to file"
1860
  msgstr "URL zur Datei"
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"
1868
  msgstr "Benutze Text als Wasserzeichen"
1869
 
1870
- #: ../admin/settings.php:426
1871
  msgid "Font"
1872
  msgstr "Schriftart"
1873
 
1874
- #: ../admin/settings.php:435
1875
  msgid "This function will not work, cause you need the FreeType library"
1876
  msgstr "Diese Funktion benötigt die FreeType Bibliothek"
1877
 
1878
- #: ../admin/settings.php:437
1879
  msgid "You can upload more fonts in the folder <strong>nggallery/fonts</strong>"
1880
  msgstr "Du kannst mehr Schriftarten in das Verzeichniss <strong>nggallery/fonts</strong> hochladen."
1881
 
1882
- #: ../admin/settings.php:446
1883
  msgid "Color"
1884
  msgstr "Farbe"
1885
 
1886
- #: ../admin/settings.php:448
1887
  msgid "(hex w/o #)"
1888
  msgstr "(hex w/o #)"
1889
 
1890
- #: ../admin/settings.php:451
1891
  msgid "Text"
1892
  msgstr "Text"
1893
 
1894
- #: ../admin/settings.php:455
1895
  msgid "Opaque"
1896
  msgstr "Transparenz"
1897
 
1898
- #: ../admin/settings.php:475
1899
  msgid "The path to imagerotator.swf is not defined, the slideshow will not work."
1900
  msgstr "Der Pfad zu imagerotator.swf ist nicht gesetzt, die Flash-Diaschau kann dann nicht angezeigt werden"
1901
 
1902
- #: ../admin/settings.php:476
1903
  msgid "If you would like to use the JW Image Rotatator, please download the player <a href=\"http://www.longtailvideo.com/players/jw-image-rotator/\" target=\"_blank\" >here</a> and upload it to your Upload folder (Default is wp-content/uploads)."
1904
  msgstr "Wenn du den JW Image Rotator (Slideshow) nutzen möchtest, lade dir die aktuelle Version <a href=\"http://www.longtailvideo.com/players/jw-image-rotator/\" target=\"_blank\" >hier</a> herunter und übertrage sie dann in dein WordPress Upload Verzeichnis (Normalerweise wp-content/uploads),"
1905
 
1906
- #: ../admin/settings.php:481
1907
  msgid "The settings are used in the JW Image Rotator Version"
1908
  msgstr "Die Einstellungen werden im JW Image Rotator benutzt , in der Version"
1909
 
1910
- #: ../admin/settings.php:482
1911
  msgid "See more information for the Flash Player on the web page"
1912
  msgstr "Weitere Informationen auf der Flash Player Homepage"
1913
 
1914
- #: ../admin/settings.php:486
1915
  msgid "Path to the Imagerotator (URL)"
1916
  msgstr "Pfad zum JW Image Rotator (URL)"
1917
 
1918
- #: ../admin/settings.php:489
1919
  msgid "Search now"
1920
  msgstr "Suche jetzt"
1921
 
1922
- #: ../admin/settings.php:490
1923
  msgid "Press the button to search automatic for the imagerotator, if you uploaded it to wp-content/uploads or a subfolder"
1924
  msgstr "Drücke 'Suche jetzt' um automatisch den Pfad zum Image Rotator zu ermitteln, sofern du den Player in wp-content/uploads oder ein Unterverzeichnis hochgeladen hast."
1925
 
1926
- #: ../admin/settings.php:494
1927
  msgid "Default size (W x H)"
1928
  msgstr "Standard Größe (B x H)"
1929
 
1930
- #: ../admin/settings.php:499
1931
  msgid "Shuffle mode"
1932
  msgstr "Shuffle Modus"
1933
 
1934
- #: ../admin/settings.php:503
1935
  msgid "Show next image on click"
1936
  msgstr "Zeige nächstes Bild bei Klick"
1937
 
1938
- #: ../admin/settings.php:507
1939
  msgid "Show navigation bar"
1940
  msgstr "Zeige Navigations-Leiste"
1941
 
1942
- #: ../admin/settings.php:511
1943
  msgid "Show loading icon"
1944
  msgstr "Zeige Lade-Bildchen"
1945
 
1946
- #: ../admin/settings.php:515
1947
  msgid "Use watermark logo"
1948
  msgstr "Wasserzeichen anzeigen"
1949
 
1950
- #: ../admin/settings.php:517
1951
  msgid "You can change the logo at the watermark settings"
1952
- msgstr "Du kannst den Pfad in Einstellungen für da Wasserzeichen angeben"
1953
 
1954
- #: ../admin/settings.php:520
1955
  msgid "Stretch image"
1956
  msgstr "Bild dehnen"
1957
 
1958
- #: ../admin/settings.php:523
1959
  msgid "true"
1960
  msgstr "Ja"
1961
 
1962
- #: ../admin/settings.php:524
1963
  msgid "false"
1964
  msgstr "Nein"
1965
 
1966
- #: ../admin/settings.php:525
1967
  msgid "fit"
1968
  msgstr "Passend"
1969
 
1970
- #: ../admin/settings.php:526
1971
  msgid "none"
1972
  msgstr "keiner"
1973
 
1974
- #: ../admin/settings.php:531
1975
  msgid "Duration time"
1976
  msgstr "Dauer"
1977
 
1978
- #: ../admin/settings.php:532
1979
  msgid "sec."
1980
  msgstr "Sek."
1981
 
1982
- #: ../admin/settings.php:535
1983
  msgid "Transition / Fade effect"
1984
  msgstr "Fade Effekt"
1985
 
1986
- #: ../admin/settings.php:538
1987
  msgid "fade"
1988
  msgstr "Fade"
1989
 
1990
- #: ../admin/settings.php:539
1991
  msgid "bgfade"
1992
  msgstr "BGFade"
1993
 
1994
- #: ../admin/settings.php:540
1995
  msgid "slowfade"
1996
  msgstr "Slowfade"
1997
 
1998
- #: ../admin/settings.php:541
1999
  msgid "circles"
2000
  msgstr "Kreise"
2001
 
2002
- #: ../admin/settings.php:542
2003
  msgid "bubbles"
2004
  msgstr "Blasen"
2005
 
2006
- #: ../admin/settings.php:543
2007
  msgid "blocks"
2008
  msgstr "Blöcke"
2009
 
2010
- #: ../admin/settings.php:544
2011
  msgid "fluids"
2012
  msgstr "Fluids"
2013
 
2014
- #: ../admin/settings.php:545
2015
  msgid "flash"
2016
  msgstr "Flash"
2017
 
2018
- #: ../admin/settings.php:546
2019
  msgid "lines"
2020
  msgstr "Linien"
2021
 
2022
- #: ../admin/settings.php:547
2023
  msgid "random"
2024
  msgstr "Zufall"
2025
 
2026
- #: ../admin/settings.php:551
2027
  msgid "Use slow zooming effect"
2028
  msgstr "nutze Zoom Effekt"
2029
 
2030
- #: ../admin/settings.php:555
2031
  msgid "Background Color"
2032
  msgstr "Hintergrund (BG) Farbe"
2033
 
2034
- #: ../admin/settings.php:560
2035
  msgid "Texts / Buttons Color"
2036
  msgstr "Text- / Button Farbe"
2037
 
2038
- #: ../admin/settings.php:565
2039
  msgid "Rollover / Active Color"
2040
  msgstr "Rollover / Aktiv (Link) Farbe"
2041
 
2042
- #: ../admin/settings.php:570
2043
  msgid "Screen Color"
2044
  msgstr "Seiten Farbe"
2045
 
2046
- #: ../admin/settings.php:575
2047
  msgid "Background music (URL)"
2048
  msgstr "Hintergrundmusik (URL)"
2049
 
2050
- #: ../admin/settings.php:579
2051
  msgid "Try XHTML validation (with CDATA)"
2052
  msgstr "Integriere XHTML Validierung (mittels CDATA)"
2053
 
2054
- #: ../admin/settings.php:581
2055
  msgid "Important : Could causes problem at some browser. Please recheck your page."
2056
- msgstr "Wichtig : Es könnnten Probleme bei einigen Browser auftauchen. Unbedingt Seite prüfen."
2057
 
2058
  #: ../admin/setup.php:15
2059
  msgid "Reset all settings to default parameter"
@@ -2091,7 +2197,7 @@ msgstr "Plugin Tabellen (DB) entfernen"
2091
 
2092
  #: ../admin/setup.php:44
2093
  msgid "You don't like NextGEN Gallery ?"
2094
- msgstr "Du magst die NextGEN Galerie nicht ?"
2095
 
2096
  #: ../admin/setup.php:45
2097
  msgid "No problem, before you deactivate this plugin press the Uninstall Button, because deactivating NextGEN Gallery does not remove any data that may have been created. "
@@ -2125,31 +2231,41 @@ msgstr ""
2125
  "\\n"
2126
  "Wähle [Cancel] zum Abbrechen, [OK] zum Deinstallieren.\\n"
2127
 
2128
- #: ../admin/showmeta.php:46
2129
- msgid "EXIF Data"
2130
- msgstr "EXIF Daten"
2131
 
2132
- #: ../admin/showmeta.php:51
2133
- #: ../admin/showmeta.php:75
2134
- #: ../admin/showmeta.php:99
 
2135
  msgid "Tag"
2136
  msgstr "Stichwort"
2137
 
2138
- #: ../admin/showmeta.php:52
2139
- #: ../admin/showmeta.php:76
2140
- #: ../admin/showmeta.php:100
 
2141
  msgid "Value"
2142
  msgstr "Wert"
2143
 
2144
- #: ../admin/showmeta.php:65
 
 
 
 
 
 
 
 
2145
  msgid "No exif data"
2146
  msgstr "Keine Exif Daten"
2147
 
2148
- #: ../admin/showmeta.php:71
2149
  msgid "IPTC Data"
2150
  msgstr "IPTC Daten"
2151
 
2152
- #: ../admin/showmeta.php:95
2153
  msgid "XMP Data"
2154
  msgstr "XMP Daten"
2155
 
@@ -2165,49 +2281,53 @@ msgstr "Du hast nicht die benötigten Rechte um Vorlagen in diesem Blog zu bearb
2165
  msgid "CSS file successfully updated"
2166
  msgstr "CSS Datei erfolgreich aktualisiert"
2167
 
2168
- #: ../admin/style.php:71
2169
  msgid "Style Editor"
2170
  msgstr "CSS Editor"
2171
 
2172
- #: ../admin/style.php:75
2173
  msgid "Activate and use style sheet:"
2174
  msgstr "Aktiviere und nutze Stylesheet:"
2175
 
2176
- #: ../admin/style.php:95
2177
  msgid "Activate"
2178
  msgstr "Aktiviere"
2179
 
2180
- #: ../admin/style.php:105
2181
  #, php-format
2182
  msgid "Editing <strong>%s</strong>"
2183
  msgstr "Bearbeite <strong>%s</strong>"
2184
 
2185
- #: ../admin/style.php:107
2186
  #, php-format
2187
  msgid "Browsing <strong>%s</strong>"
2188
  msgstr "Durchsuche <strong>%s</strong>"
2189
 
2190
- #: ../admin/style.php:117
2191
  msgid "Version"
2192
  msgstr "Version"
2193
 
2194
- #: ../admin/style.php:120
2195
  msgid "Tip : Copy your stylesheet (nggallery.css) to your theme folder, so it will be not lost during a upgrade"
2196
- msgstr "Keiner Tip : Kopiere das Stylesheet (nggallery.css) in dein Theme-Verzeichnis, dadurch wird es beim nächsten Update nicht überschrieben."
2197
 
2198
- #: ../admin/style.php:122
2199
  msgid "Your theme contain a NextGEN Gallery stylesheet (nggallery.css), this file will be used"
2200
  msgstr "Dein Theme-Paket enthält eine NextGEN Gallery Stylesheet (nggallery.css), dieses Sheet wird automatisch eingebunden"
2201
 
2202
- #: ../admin/style.php:136
 
 
 
 
2203
  msgid "Update File"
2204
  msgstr "Datei aktualisieren"
2205
 
2206
- #: ../admin/style.php:139
2207
  msgid "If this file were writable you could edit it."
2208
  msgstr "Wenn diese Datei beschreibbar wäre, könntest Du sie bearbeiten."
2209
 
2210
- #: ../admin/style.php:144
2211
  msgid "Oops, no such file exists! Double check the name and try again, merci."
2212
  msgstr "Oha, eine solche Datei existiert nicht! Bitte überprüfe den Namen und probiere es erneut, danke."
2213
 
@@ -2289,7 +2409,7 @@ msgstr "Stichwort löschen"
2289
 
2290
  #: ../admin/tags.php:211
2291
  msgid "Enter the name of the tag to delete. This tag will be removed from all posts."
2292
- msgstr "Trage das zu löschenden Stichwort ein. Das Stichwort wird aus allen Bildern entfernt."
2293
 
2294
  #: ../admin/tags.php:212
2295
  msgid "You can specify multiple tags to delete by separating them with commas"
@@ -2319,63 +2439,68 @@ msgstr "Schlagwörter setzen:"
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
 
@@ -2387,47 +2512,47 @@ msgstr "Aktualisierung erfolgreich"
2387
  msgid "General WordPress MU Settings"
2388
  msgstr "WordPress MU Einstellungen"
2389
 
2390
- #: ../admin/wpmu.php:50
2391
  msgid "This is the default path for all blogs. With the placeholder %BLOG_ID% you can organize the folder structure better. The path must end with a /."
2392
  msgstr "Dieses ist der Default Pfad für alle Blogs. Mit dem Platzhalter %BLOG_ID% wird die Ordnerstruktur gesteuert. Der Pfad muss mit / enden."
2393
 
2394
- #: ../admin/wpmu.php:53
2395
  msgid "Enable upload quota check"
2396
  msgstr "Schalte die Uploadbegrenzung ein"
2397
 
2398
- #: ../admin/wpmu.php:55
2399
  msgid "Should work if the gallery is bellow the blog.dir"
2400
  msgstr "Sollte funktionieren wenn die Galerien sich unterhalb blog.dir befinden"
2401
 
2402
- #: ../admin/wpmu.php:59
2403
  msgid "Enable zip upload option"
2404
  msgstr "Erlaube ZIP-Upload"
2405
 
2406
- #: ../admin/wpmu.php:61
2407
  msgid "Allow users to upload zip folders."
2408
  msgstr "Erlaubt die Nutzung des ZIP-Upload"
2409
 
2410
- #: ../admin/wpmu.php:65
2411
  msgid "Enable style selection"
2412
  msgstr "Freie CSS Style Auswahl"
2413
 
2414
- #: ../admin/wpmu.php:67
2415
  msgid "Allow users to choose a style for the gallery."
2416
  msgstr "Erlaube dem User ein CSS für die Galerie zu wählen"
2417
 
2418
- #: ../admin/wpmu.php:71
2419
  msgid "Enable roles/capabilities"
2420
  msgstr "Rollen / Zugriffsrechte freischalten"
2421
 
2422
- #: ../admin/wpmu.php:73
2423
  msgid "Allow users to change the roles for other blog authors."
2424
  msgstr "Erlaube dem User die Anpassung der Zugangsberechtigung"
2425
 
2426
- #: ../admin/wpmu.php:77
2427
  msgid "Default style"
2428
  msgstr "Standard CSS-Style"
2429
 
2430
- #: ../admin/wpmu.php:94
2431
  msgid "Choose the default style for the galleries."
2432
  msgstr "Wähle das Default-Stylesheet für die Galerien"
2433
 
@@ -2492,140 +2617,158 @@ msgstr "Kein Float"
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"
2499
 
2500
- #: ../lib/meta.php:87
2501
  msgid " mm"
2502
  msgstr " mm"
2503
 
2504
- #: ../lib/meta.php:93
2505
  msgid " sec"
2506
  msgstr " Sek."
2507
 
2508
- #: ../lib/meta.php:371
2509
- #: ../view/imagebrowser-exif.php:42
 
 
 
 
 
 
 
2510
  msgid "Aperture"
2511
  msgstr "Blende"
2512
 
2513
- #: ../lib/meta.php:372
2514
- #: ../lib/meta.php:397
2515
  msgid "Credit"
2516
  msgstr "Autor"
2517
 
2518
- #: ../lib/meta.php:373
2519
  msgid "Camera"
2520
  msgstr "Kamera"
2521
 
2522
- #: ../lib/meta.php:374
2523
  msgid "Caption"
2524
  msgstr "Beschreibung"
2525
 
2526
- #: ../lib/meta.php:376
2527
  msgid "Copyright"
2528
  msgstr "Rechte"
2529
 
2530
- #: ../lib/meta.php:377
2531
  msgid "Focal length"
2532
  msgstr "Brennweite"
2533
 
2534
- #: ../lib/meta.php:378
2535
  msgid "ISO"
2536
  msgstr "ISO"
2537
 
2538
- #: ../lib/meta.php:379
2539
- #: ../view/imagebrowser-exif.php:50
2540
  msgid "Shutter speed"
2541
  msgstr "Belichtungszeit"
2542
 
2543
- #: ../lib/meta.php:383
2544
  msgid "Subject"
2545
  msgstr "Betreff"
2546
 
2547
- #: ../lib/meta.php:384
2548
  msgid "Make"
2549
  msgstr "Hersteller"
2550
 
2551
- #: ../lib/meta.php:385
2552
  msgid "Edit Status"
2553
  msgstr "Ändere Status"
2554
 
2555
- #: ../lib/meta.php:386
2556
  msgid "Category"
2557
  msgstr "Kategorie"
2558
 
2559
- #: ../lib/meta.php:387
2560
  msgid "Keywords"
2561
  msgstr "Schlüsselwörter"
2562
 
2563
- #: ../lib/meta.php:388
2564
  msgid "Date Created"
2565
  msgstr "erstellt (Datum)"
2566
 
2567
- #: ../lib/meta.php:389
2568
  msgid "Time Created"
2569
  msgstr "erstellt (Zeit)"
2570
 
2571
- #: ../lib/meta.php:390
2572
  msgid "Author Position"
2573
  msgstr "Autor Position"
2574
 
2575
- #: ../lib/meta.php:391
2576
  msgid "City"
2577
  msgstr "Stadt"
2578
 
2579
- #: ../lib/meta.php:392
2580
  msgid "Location"
2581
  msgstr "Ort"
2582
 
2583
- #: ../lib/meta.php:393
2584
  msgid "Province/State"
2585
  msgstr "Staat / PLZ"
2586
 
2587
- #: ../lib/meta.php:394
2588
  msgid "Country code"
2589
  msgstr "Landescode"
2590
 
2591
- #: ../lib/meta.php:395
2592
  msgid "Country"
2593
  msgstr "Land"
2594
 
2595
- #: ../lib/meta.php:396
2596
  msgid "Headline"
2597
  msgstr "Kopfzeile"
2598
 
2599
- #: ../lib/meta.php:398
2600
  msgid "Source"
2601
  msgstr "Quelle"
2602
 
2603
- #: ../lib/meta.php:399
2604
  msgid "Copyright Notice"
2605
  msgstr "Copyright Hinweise / Credits"
2606
 
2607
- #: ../lib/meta.php:400
2608
  msgid "Contact"
2609
  msgstr "Kontakt"
2610
 
2611
- #: ../lib/meta.php:401
2612
  msgid "Last modified"
2613
  msgstr "Zuletzt geändert"
2614
 
2615
- #: ../lib/meta.php:402
2616
  msgid "Program tool"
2617
  msgstr "Programm"
2618
 
2619
- #: ../lib/meta.php:403
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
 
2628
- #: ../lib/shortcodes.php:275
2629
  msgid "[Pictures not found]"
2630
  msgstr "[Bilder nicht gefunden]"
2631
 
@@ -2665,7 +2808,7 @@ msgstr "Stichwörter &laquo;%1$s&raquo; bis &laquo;%2$s&raquo; zusammengeführt.
2665
 
2666
  #: ../lib/tags.php:146
2667
  msgid "Error. No enough tags for rename. Too for merge. Choose !"
2668
- msgstr "Fehler. Es wurden nicht genung Stichwörter ausgewählt."
2669
 
2670
  #: ../lib/tags.php:163
2671
  msgid "No tag specified!"
@@ -2686,7 +2829,7 @@ msgstr "Keine neuen Stichwörter ausgewählt"
2686
 
2687
  #: ../lib/tags.php:214
2688
  msgid "Tags number and slugs number isn't the same!"
2689
- msgstr "Stichwort und Schlagwort ist nicht das gleiche!"
2690
 
2691
  #: ../lib/tags.php:241
2692
  msgid "No slug edited."
@@ -2697,40 +2840,91 @@ msgstr "Kein Stichwort geändert"
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
 
2705
  #: ../view/gallery-caption.php:32
 
2706
  #: ../view/gallery.php:32
 
2707
  msgid "[View with PicLens]"
2708
  msgstr "[Mit PicLens anzeigen]"
2709
 
2710
- #: ../view/imagebrowser-exif.php:26
2711
  #: ../view/imagebrowser.php:26
2712
  msgid "Back"
2713
  msgstr "Zurück"
2714
 
2715
- #: ../view/imagebrowser-exif.php:29
2716
  #: ../view/imagebrowser.php:29
2717
  msgid "Next"
2718
  msgstr "Vor"
2719
 
2720
- #: ../view/imagebrowser-exif.php:31
2721
  #: ../view/imagebrowser.php:31
2722
  msgid "of"
2723
  msgstr "von"
2724
 
2725
- #: ../view/imagebrowser-exif.php:34
2726
  msgid "Meta data"
2727
  msgstr "Metadaten"
2728
 
2729
- #: ../view/imagebrowser-exif.php:38
2730
  msgid "Camera / Type"
2731
  msgstr "Kameratyp"
2732
 
2733
- #: ../view/imagebrowser-exif.php:46
2734
  msgid "Focal Length"
2735
  msgstr "Brennweite"
2736
 
@@ -2743,7 +2937,7 @@ msgid "Widget that displays Media RSS links for NextGEN Gallery."
2743
  msgstr "Hiermit können NextGEN Bilder als Media RSS eingebunden werden"
2744
 
2745
  #: ../widgets/media-rss-widget.php:135
2746
- #: ../widgets/media-rss-widget.php:203
2747
  #: ../widgets/media-rss-widget.php:260
2748
  msgid "Media RSS"
2749
  msgstr "Media RSS"
@@ -2753,109 +2947,108 @@ msgstr "Media RSS"
2753
  msgid "Link to the main image feed"
2754
  msgstr "Link zum Bilder-Feed"
2755
 
2756
- #: ../widgets/media-rss-widget.php:153
2757
- #: ../widgets/widgets.php:133
2758
  msgid "Title:"
2759
  msgstr "Titel:"
2760
 
2761
- #: ../widgets/media-rss-widget.php:160
2762
- msgid "Media RSS icon:"
2763
- msgstr "Media RSS Icon:"
2764
 
2765
- #: ../widgets/media-rss-widget.php:168
2766
- msgid "Show the global Media RSS link:"
2767
- msgstr "Zeige den globalen Media RSS Link:"
2768
 
2769
- #: ../widgets/media-rss-widget.php:172
2770
  msgid "Text for the global Media RSS link:"
2771
  msgstr "Text für den globalen Media RSS link:"
2772
 
2773
- #: ../widgets/media-rss-widget.php:178
2774
  msgid "Tooltip text for the global Media RSS link:"
2775
  msgstr "Tooltip-Text für den globalen Media RSS Link."
2776
 
2777
- #: ../widgets/widgets.php:28
2778
  msgid "Show a NextGEN Gallery Slideshow"
2779
- msgstr "Binde eine NextGEN Gallery Slideshow eine"
2780
 
2781
- #: ../widgets/widgets.php:29
2782
- #: ../widgets/widgets.php:30
2783
  msgid "NextGEN Slideshow"
2784
  msgstr "NextGEN Diashow"
2785
 
2786
- #: ../widgets/widgets.php:54
2787
  msgid "<a href=\"http://www.macromedia.com/go/getflashplayer\">Get the Flash Player</a> to see the slideshow."
2788
  msgstr "<a href=\"http://www.macromedia.com/go/getflashplayer\">Lade Dir den Flash Player</a> um die Diashow zu sehen."
2789
 
2790
- #: ../widgets/widgets.php:135
2791
  msgid "Select Gallery:"
2792
  msgstr "Wähle Galerie"
2793
 
2794
- #: ../widgets/widgets.php:137
2795
  msgid "All images"
2796
  msgstr "Alle Bilder"
2797
 
2798
- #: ../widgets/widgets.php:150
2799
  msgid "Height:"
2800
  msgstr "Höhe:"
2801
 
2802
- #: ../widgets/widgets.php:151
2803
  msgid "Width:"
2804
  msgstr "Breite:"
2805
 
2806
- #: ../widgets/widgets.php:184
2807
  msgid "Add recent or random images from the galleries"
2808
  msgstr "Füge die neusten Bilder oder Zufallsbilder aus NextGEN Gallery ein"
2809
 
2810
- #: ../widgets/widgets.php:186
2811
  msgid "NextGEN Widget"
2812
  msgstr "NextGEN Widget"
2813
 
2814
- #: ../widgets/widgets.php:286
2815
  msgid "Title :"
2816
  msgstr "Titel :"
2817
 
2818
- #: ../widgets/widgets.php:292
2819
  msgid "Show :"
2820
  msgstr "Zeige als :"
2821
 
2822
- #: ../widgets/widgets.php:298
2823
  msgid "Original images"
2824
  msgstr "Original Bilder"
2825
 
2826
- #: ../widgets/widgets.php:306
2827
  msgid "recent added "
2828
  msgstr "zuletzt hinzugefügt"
2829
 
2830
- #: ../widgets/widgets.php:312
2831
  msgid "Enable IE8 Web Slices"
2832
  msgstr "IE8 Web Slices aktivieren"
2833
 
2834
- #: ../widgets/widgets.php:317
2835
  msgid "Width x Height :"
2836
  msgstr "Breite x Höhe :"
2837
 
2838
- #: ../widgets/widgets.php:324
2839
  msgid "Select :"
2840
  msgstr "Wähle :"
2841
 
2842
- #: ../widgets/widgets.php:326
2843
  msgid "All galleries"
2844
  msgstr "Alle Galerien"
2845
 
2846
- #: ../widgets/widgets.php:327
2847
  msgid "Only which are not listed"
2848
  msgstr "Nur ungelistete"
2849
 
2850
- #: ../widgets/widgets.php:328
2851
  msgid "Only which are listed"
2852
  msgstr "Nur gelistete"
2853
 
2854
- #: ../widgets/widgets.php:334
2855
  msgid "Gallery ID :"
2856
  msgstr "Galerie ID :"
2857
 
2858
- #: ../widgets/widgets.php:336
2859
  msgid "Gallery IDs, separated by commas."
2860
  msgstr "Galerie IDs, mit Kommas getrennt"
2861
 
@@ -2882,6 +3075,17 @@ msgstr "Album-ID %s existiert nicht"
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"
@@ -2905,8 +3109,6 @@ msgstr "Ungültiger Media RSS Befehl (%s)"
2905
  #~ "Willst du wirklich %s Bild(er) verschieben \n"
2906
  #~ " \n"
2907
  #~ " 'Abbrechen' um zu stoppen, 'OK' um die Bearbeitung durchzuführen."
2908
- #~ msgid "Date"
2909
- #~ msgstr "Datum"
2910
  #~ msgid "Show thumbnails "
2911
  #~ msgstr "Thumbnails zeigen"
2912
  #~ msgid "Add Gallery"
@@ -2988,8 +3190,6 @@ msgstr "Ungültiger Media RSS Befehl (%s)"
2988
  #~ "anlegen"
2989
  #~ msgid "The Zip-file is too large. Exceed Memory limit !"
2990
  #~ msgstr "Das Zip-File ist zu groß. Speicherlimit überschritten !"
2991
- #~ msgid "Main settings"
2992
- #~ msgstr "Haupteinstellungen"
2993
  #~ msgid "Summary"
2994
  #~ msgstr "Zusammenfassung"
2995
  #~ msgid "Welcome"
@@ -3020,8 +3220,6 @@ msgstr "Ungültiger Media RSS Befehl (%s)"
3020
  #~ msgstr "Zeige als:"
3021
  #~ msgid "Link to:"
3022
  #~ msgstr "Link zu:"
3023
- #~ msgid "File"
3024
- #~ msgstr "Datei"
3025
  #~ msgid "Send to editor &raquo;"
3026
  #~ msgstr "Zum Editor schicken &raquo;"
3027
  #~ msgid ""
2
  msgstr ""
3
  "Project-Id-Version: NextGEN Gallery\n"
4
  "Report-Msgid-Bugs-To: \n"
5
+ "POT-Creation-Date: 2009-10-27 10:06+0100\n"
6
+ "PO-Revision-Date: 2009-10-27 10:09+0100\n"
7
+ "Last-Translator: Alex Rabe <no@email.com>\n"
8
  "Language-Team: Alex Rabe\n"
9
  "MIME-Version: 1.0\n"
10
  "Content-Type: text/plain; charset=UTF-8\n"
18
  "X-Poedit-SearchPath-0: .\n"
19
  "X-Poedit-SearchPath-1: ..\n"
20
 
21
+ #: ../nggallery.php:169
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:194
26
  msgid "Picture tag"
27
  msgstr "Bilder Stichwort"
28
 
29
+ #: ../nggallery.php:195
30
  msgid "Picture tag: %2$l."
31
  msgstr "Bilder Stichwort: %2$l."
32
 
33
+ #: ../nggallery.php:196
34
  msgid "Separate picture tags with commas."
35
  msgstr "Trenne Stichwörter mittels Komma"
36
 
37
+ #: ../nggallery.php:292
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:293
42
  msgid "Click to Close"
43
  msgstr "Klicken zum Schliessen "
44
 
45
+ #: ../nggallery.php:308
46
  msgid "loading"
47
  msgstr "lade..."
48
 
49
+ #: ../nggallery.php:406
50
+ #: ../nggfunctions.php:848
51
+ #: ../admin/admin.php:32
52
+ msgid "Overview"
53
+ msgstr "Übersicht"
54
+
55
+ #: ../nggallery.php:407
56
+ msgid "Get help"
57
+ msgstr "Hilfe"
58
+
59
+ #: ../nggallery.php:408
60
+ msgid "Contribute"
61
+ msgstr "Mithelfen"
62
+
63
+ #: ../nggallery.php:409
64
+ msgid "Donate"
65
+ msgstr "Spenden"
66
+
67
  #: ../nggfunctions.php:37
68
  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.."
69
  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.."
70
 
71
+ #: ../nggfunctions.php:103
72
+ #: ../nggfunctions.php:558
73
  msgid "[Gallery not found]"
74
  msgstr "[Galerie nicht gefunden]"
75
 
76
+ #: ../nggfunctions.php:363
77
  msgid "[Album not found]"
78
  msgstr "[Album nicht gefunden]"
79
 
80
+ #: ../nggfunctions.php:675
81
  msgid "[SinglePic not found]"
82
  msgstr "[Bild nicht gefunden]"
83
 
84
+ #: ../nggfunctions.php:813
85
  msgid "Related images for"
86
  msgstr "Verwandte Bilder von"
87
 
 
 
 
 
 
88
  #: ../admin/about.php:9
89
  msgid "Copyright notes / Credits"
90
  msgstr "Copyright Hinweise / Credits"
126
  msgstr "für die fantastische PHP Thumbnail Klasse"
127
 
128
  #: ../admin/about.php:27
 
 
 
 
129
  msgid "for a lot of very useful plugins and ideas"
130
  msgstr "für viele nützliche Plugins und Ideen"
131
 
132
+ #: ../admin/about.php:28
133
  msgid "for Shutter Reloaded, a real lightweight image effect"
134
  msgstr "für Shutter Reloaded, ein wirklich smarten Bildeffekt"
135
 
136
+ #: ../admin/about.php:29
137
  msgid "for the best Media Flash Scripts on earth"
138
  msgstr "für die besten Media Flash Scripte"
139
 
140
+ #: ../admin/about.php:30
141
  msgid "for the Fugue Iconset"
142
  msgstr "für das Fugue Iconset"
143
 
144
+ #: ../admin/about.php:31
145
  msgid "for the Watermark plugin"
146
  msgstr "für das Wasserzeichen Plugin"
147
 
148
+ #: ../admin/about.php:33
149
  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."
150
  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."
151
 
152
+ #: ../admin/about.php:37
153
  msgid "How to support ?"
154
  msgstr "Unterstützung / Hilfe"
155
 
156
+ #: ../admin/about.php:39
157
  msgid "There exist several ways to contribute, help or support us in this work. Non of them are mandatory."
158
  msgstr "Es existieren verschiedene Möglichkeiten diese Arbeit zu unterstützen."
159
 
160
+ #: ../admin/about.php:41
161
  msgid "Send us bugfixes / code changes"
162
  msgstr "Schicke uns Verbesserungen / Bugfixes"
163
 
164
+ #: ../admin/about.php:41
165
  msgid "The most motivated support for this plugin are your ideas and brain work"
166
  msgstr "Der beste Support für dieses Plugin sind Deine Ideen und Gedanken"
167
 
168
+ #: ../admin/about.php:42
169
  msgid "Translate the plugin"
170
  msgstr "Übersetze das Plugin"
171
 
172
+ #: ../admin/about.php:42
173
  msgid "To help people to work with this plugin, I would like to have it in all available languages"
174
  msgstr "Um jedem das Arbeiten mit diesem Plugin zu vereinfachen, würde ich es gerne in allen möglichen Sprachen anbieten"
175
 
176
+ #: ../admin/about.php:43
177
  msgid "Donate the work via paypal"
178
  msgstr "Zeig Dich für diese Arbeit per PayPal dankbar"
179
 
180
+ #: ../admin/about.php:56
181
  msgid "No doubt a very useful and easy motivation :-)"
182
  msgstr "Kein Zweifel, eine schöne und einfache Motivationshilfe"
183
 
184
+ #: ../admin/about.php:58
185
  msgid "Place a link to the plugin in your blog/webpage"
186
  msgstr "Setze einen Link zu diesem Plugin auf Deinen Blog"
187
 
188
+ #: ../admin/about.php:58
189
  msgid "Yes, share and trackback is also a good support for this work "
190
  msgstr "Natürlich sind Trackbacks und Links auch ein guter Support für diese Arbeit"
191
 
192
+ #: ../admin/about.php:63
193
  msgid "Thanks!"
194
  msgstr "Vielen Dank!"
195
 
196
+ #: ../admin/about.php:65
197
  msgid "We would like to thank this people which support us in the work :"
198
  msgstr "Ich möchte mich bei diesen Menschen für Ihre Unterstützung bedanken:"
199
 
200
+ #: ../admin/about.php:164
201
  msgid "and all donators..."
202
  msgstr "und allen anderen Spendern..."
203
 
204
  #: ../admin/addgallery.php:37
205
+ #: ../admin/addgallery.php:52
206
  msgid "Upload failed!"
207
  msgstr "Upload fehlgeschlagen!"
208
 
209
+ #: ../admin/addgallery.php:57
210
+ #: ../admin/functions.php:836
211
+ #: ../admin/functions.php:936
212
  msgid "No gallery selected !"
213
  msgstr "Keine Galerie ausgewählt !"
214
 
215
+ #: ../admin/addgallery.php:104
216
  msgid "Image Files"
217
  msgstr "Bilder"
218
 
219
+ #: ../admin/addgallery.php:123
220
+ #: ../admin/addgallery.php:154
221
  msgid "remove"
222
  msgstr "Entfernen"
223
 
224
+ #: ../admin/addgallery.php:124
225
  msgid "Browse..."
226
  msgstr "Durchsuche..."
227
 
228
+ #: ../admin/addgallery.php:125
229
  #: ../admin/addgallery.php:293
230
  msgid "Upload images"
231
  msgstr "Bilder hochladen"
232
 
233
+ #: ../admin/addgallery.php:173
234
+ #: ../admin/addgallery.php:185
235
+ #: ../admin/manage-galleries.php:134
236
  msgid "Add new gallery"
237
  msgstr "Neue Galerie erstellen"
238
 
239
+ #: ../admin/addgallery.php:175
240
  #: ../admin/addgallery.php:205
241
  msgid "Upload a Zip-File"
242
  msgstr "Zip-Datei hochladen"
243
 
244
+ #: ../admin/addgallery.php:178
245
  #: ../admin/addgallery.php:246
246
  msgid "Import image folder"
247
  msgstr "Bilder-Verzeichnis importieren"
248
 
249
+ #: ../admin/addgallery.php:180
250
  #: ../admin/addgallery.php:263
251
  msgid "Upload Images"
252
  msgstr "Bilder hochladen"
253
 
254
+ #: ../admin/addgallery.php:190
255
+ #: ../admin/manage-galleries.php:217
256
  msgid "New Gallery"
257
  msgstr "Neue Galerie"
258
 
259
+ #: ../admin/addgallery.php:193
260
+ #: ../admin/manage-galleries.php:219
261
  msgid "Create a new , empty gallery below the folder"
262
  msgstr "Erstelle eine neue, leere Galerie unter dem Verzeichnis"
263
 
264
+ #: ../admin/addgallery.php:195
265
+ #: ../admin/manage-galleries.php:221
266
  msgid "Allowed characters for file and folder names are"
267
  msgstr "Erlaubte Zeichen für die Datei- und Verzeichnisnamen sind"
268
 
339
  msgid "Enable flash based upload"
340
  msgstr "Aktiviere Flash Batch Upload"
341
 
342
+ #: ../admin/admin.php:31
 
 
 
 
 
343
  msgid "Gallery"
344
  msgid_plural "Galleries"
345
  msgstr[0] "Galerie"
346
  msgstr[1] "Galerien"
347
 
348
+ #: ../admin/admin.php:33
349
  msgid "Add Gallery / Images"
350
  msgstr "Galerie / Bilder hinzufügen"
351
 
352
+ #: ../admin/admin.php:34
353
  msgid "Manage Gallery"
354
  msgstr "Galerie verwalten"
355
 
356
+ #: ../admin/admin.php:35
357
  msgid "Album"
358
  msgid_plural "Albums"
359
  msgstr[0] "Album"
360
  msgstr[1] "Alben"
361
 
362
+ #: ../admin/admin.php:36
363
  msgid "Tags"
364
  msgstr "Stichwörter"
365
 
366
+ #: ../admin/admin.php:37
367
  msgid "Options"
368
  msgstr "Optionen"
369
 
370
+ #: ../admin/admin.php:39
371
  msgid "Style"
372
  msgstr "Style"
373
 
374
+ #: ../admin/admin.php:40
375
  msgid "Setup Gallery"
376
  msgstr "Galerie Setup"
377
 
378
+ #: ../admin/admin.php:40
379
  msgid "Setup"
380
  msgstr "Setup"
381
 
382
+ #: ../admin/admin.php:42
383
  msgid "Roles"
384
  msgstr "Zugriff"
385
 
386
+ #: ../admin/admin.php:43
387
  msgid "About this Gallery"
388
  msgstr "Über diese Galerie"
389
 
390
+ #: ../admin/admin.php:43
391
  msgid "About"
392
  msgstr "Über"
393
 
394
+ #: ../admin/admin.php:45
395
  msgid "NextGEN Gallery"
396
  msgstr "NextGEN Gallery"
397
 
398
+ #: ../admin/admin.php:73
399
  msgid "A new version of NextGEN Gallery is available !"
400
  msgstr "Eine neue Version von NextGEN Gallery ist jetzt verfügbar"
401
 
402
+ #: ../admin/admin.php:73
403
  msgid "Download here"
404
  msgstr "Hier downloaden"
405
 
406
+ #: ../admin/admin.php:92
407
+ #, php-format
408
+ msgid "Thanks for using this plugin, I hope you are satisfied ! If you would like to support the further development, please consider a <strong><a href=\"%s\">donation</a></strong>! If you still need some help, please post your questions <a href=\"http://wordpress.org/tags/nextgen-gallery?forum_id=10\">here</a> ."
409
+ msgstr "Vielen Dank das du dieses Plugin nutzt. Ich hoffe du bist soweit zufrieden ! Wenn du die Weiterentwicklung unterstützen möchtest, würde ich mich über eine kleine <strong><a href=\"%s\">Spende</a></strong> freuen! Wenn du Fragen oder Problem hast, schreib sie doch <a href=\"http://wordpress.org/tags/nextgen-gallery?forum_id=10\">hier</a> ins Forum."
410
+
411
+ #: ../admin/admin.php:95
412
+ msgid "OK, hide this message now !"
413
+ msgstr "OK, danke für die Info !"
414
+
415
+ #: ../admin/admin.php:178
416
  msgid "You do not have the correct permission"
417
  msgstr "Du hast keine Zugriffsrechte"
418
 
419
+ #: ../admin/admin.php:179
420
  msgid "Unexpected Error"
421
  msgstr "Unerwarteter Fehler"
422
 
423
+ #: ../admin/admin.php:180
424
  msgid "A failure occurred"
425
  msgstr "Ein Fehler ist aufgetreten"
426
 
427
+ #: ../admin/admin.php:265
428
  msgid "<a href=\"http://dpotter.net/Technical/2008/03/nextgen-gallery-review-introduction/\" target=\"_blank\">Introduction</a>"
429
  msgstr "<a href=\"http://www.curlyrob.de/curlyrob/?page_id=129\" target=\"_blank\">Einführung</a>"
430
 
431
+ #: ../admin/admin.php:268
432
  msgid "<a href=\"http://dpotter.net/Technical/2008/03/nextgen-gallery-review-introduction/\" target=\"_blank\">Setup</a>"
433
  msgstr "<a href=\"http://www.curlyrob.de/curlyrob/?page_id=129\" target=\"_blank\">Setup</a>"
434
 
435
+ #: ../admin/admin.php:271
436
+ msgid "<a href=\"http://alexrabe.de/wordpress-plugins/nextgen-gallery/languages/\" target=\"_blank\">Translation by alex rabe</a>"
437
+ msgstr "<a href=\"http://alexrabe.de/wordpress-plugins/nextgen-gallery/languages/\" target=\"_blank\">Unterstütze bei der Übersetzung</a>"
438
 
439
+ #: ../admin/admin.php:274
440
  msgid "<a href=\"http://dpotter.net/Technical/2008/03/nextgen-gallery-review-introduction/\" target=\"_blank\">Roles / Capabilities</a>"
441
  msgstr "<a href=\"http://www.curlyrob.de/curlyrob/?page_id=129\" target=\"_blank\">Einführung</a>"
442
 
443
+ #: ../admin/admin.php:277
444
  msgid "<a href=\"http://dpotter.net/Technical/2008/03/nextgen-gallery-review-introduction/\" target=\"_blank\">Styles</a>"
445
  msgstr "<a href=\"http://www.curlyrob.de/curlyrob/?page_id=129\" target=\"_blank\">Einführung</a>"
446
 
447
+ #: ../admin/admin.php:278
448
  msgid "Templates"
449
  msgstr "Vorlagen"
450
 
451
+ #: ../admin/admin.php:281
452
+ #: ../admin/admin.php:287
453
  msgid "<a href=\"http://dpotter.net/Technical/2008/03/nextgen-gallery-review-introduction/\" target=\"_blank\">Gallery management</a>"
454
  msgstr "<a href=\"http://www.curlyrob.de/curlyrob/?page_id=129\" target=\"_blank\">Einführung</a>"
455
 
456
+ #: ../admin/admin.php:282
457
  msgid "Gallery example"
458
  msgstr "Galerie Beispiel"
459
 
460
+ #: ../admin/admin.php:288
461
+ #: ../admin/admin.php:298
462
  msgid "Gallery tags"
463
  msgstr "Galerie Stichwörter"
464
 
465
+ #: ../admin/admin.php:291
466
  msgid "<a href=\"http://dpotter.net/Technical/2008/03/nextgen-gallery-review-introduction/\" target=\"_blank\">Album management</a>"
467
  msgstr "<a href=\"http://www.curlyrob.de/curlyrob/?page_id=129\" target=\"_blank\">Einführung</a>"
468
 
469
+ #: ../admin/admin.php:292
470
  msgid "Album example"
471
  msgstr "Album Beispiel"
472
 
473
+ #: ../admin/admin.php:293
474
+ #: ../admin/admin.php:299
475
  msgid "Album tags"
476
  msgstr "Album Stichwörter"
477
 
478
+ #: ../admin/admin.php:296
479
  msgid "<a href=\"http://dpotter.net/Technical/2008/03/nextgen-gallery-review-introduction/\" target=\"_blank\">Gallery tags</a>"
480
  msgstr "<a href=\"http://www.curlyrob.de/curlyrob/?page_id=129\" target=\"_blank\">Einführung</a>"
481
 
482
+ #: ../admin/admin.php:297
483
  msgid "Related images"
484
  msgstr "Verwandte Bilder"
485
 
486
+ #: ../admin/admin.php:302
487
  msgid "<a href=\"http://dpotter.net/Technical/2008/03/nextgen-gallery-review-image-management/\" target=\"_blank\">Image management</a>"
488
  msgstr "<a href=\"http://dpotter.net/Technical/2008/03/nextgen-gallery-review-image-management/\" target=\"_blank\">Bilderverwaltung (Englisch)</a>"
489
 
490
+ #: ../admin/admin.php:303
491
  msgid "Custom fields"
492
  msgstr "Spezialfelder"
493
 
494
+ #: ../admin/admin.php:308
495
  msgid "Get help with NextGEN Gallery"
496
  msgstr "Weitere Hilfe zu NextGEN Gallery"
497
 
498
+ #: ../admin/admin.php:312
499
  msgid "More Help & Info"
500
  msgstr "Weitere Hilfe & Informationen"
501
 
502
+ #: ../admin/admin.php:314
503
+ msgid "<a href=\"http://wordpress.org/tags/nextgen-gallery?forum_id=10\" target=\"_blank\">Support Forums</a>"
504
+ msgstr "<a href=\"http://wordpress.org/tags/nextgen-gallery?forum_id=10\" target=\"_blank\">Support Forum (Englisch)</a>"
505
 
506
+ #: ../admin/admin.php:315
507
  msgid "FAQ"
508
  msgstr "FAQ (englisch)"
509
 
510
+ #: ../admin/admin.php:316
511
  msgid "Feature request"
512
  msgstr "Wünsch dir was"
513
 
514
+ #: ../admin/admin.php:317
515
  msgid "Get your language pack"
516
  msgstr "Lade deine Sprachdatei"
517
 
518
+ #: ../admin/admin.php:318
519
  msgid "Contribute development"
520
  msgstr "Entwicklung helfen"
521
 
522
+ #: ../admin/admin.php:319
523
  msgid "Download latest version"
524
  msgstr "Aktuelle Version downloaden"
525
 
526
+ #: ../admin/album.php:99
527
+ #: ../admin/album.php:112
528
+ #: ../admin/album.php:138
529
  msgid "Update Successfully"
530
  msgstr "Update erfolgreich"
531
 
532
+ #: ../admin/album.php:120
533
  msgid "Album deleted"
534
  msgstr "Album gelöscht"
535
 
536
+ #: ../admin/album.php:248
537
  msgid "Manage Albums"
538
  msgstr "Verwalte Alben"
539
 
540
+ #: ../admin/album.php:254
541
+ #: ../admin/album.php:297
542
  msgid "Select album"
543
  msgstr "Wähle Album"
544
 
545
+ #: ../admin/album.php:256
546
  msgid "No album selected"
547
  msgstr "Kein Album ausgewählt"
548
 
549
+ #: ../admin/album.php:267
550
+ #: ../admin/edit-thumbnail.php:157
551
  msgid "Update"
552
  msgstr "Aktualisiere"
553
 
554
+ #: ../admin/album.php:268
555
  msgid "Edit album"
556
  msgstr "Album ändern"
557
 
558
+ #: ../admin/album.php:269
559
+ #: ../admin/manage-galleries.php:195
 
560
  msgid "Delete"
561
  msgstr "Lösche"
562
 
563
+ #: ../admin/album.php:269
564
  msgid "Delete album ?"
565
  msgstr "Album löschen ?"
566
 
567
+ #: ../admin/album.php:271
568
  msgid "Add new album"
569
  msgstr "Album hinzufügen"
570
 
571
+ #: ../admin/album.php:273
572
  msgid "Add"
573
  msgstr "Hinzufügen"
574
 
575
+ #: ../admin/album.php:283
576
  msgid "Show / hide used galleries"
577
  msgstr "Zeige / Verstecke verwendete Galerien"
578
 
579
+ #: ../admin/album.php:283
580
  msgid "[Show all]"
581
  msgstr "[Alle zeigen]"
582
 
583
+ #: ../admin/album.php:284
584
  msgid "Maximize the widget content"
585
  msgstr "Maximiere die Widgets"
586
 
587
+ #: ../admin/album.php:284
588
  msgid "[Maximize]"
589
  msgstr "[Vergrößern]"
590
 
591
+ #: ../admin/album.php:285
592
  msgid "Minimize the widget content"
593
  msgstr "Minimiere die Widgets"
594
 
595
+ #: ../admin/album.php:285
596
  msgid "[Minimize]"
597
  msgstr "[Verkleinern]"
598
 
599
+ #: ../admin/album.php:287
600
  msgid "After you create and select a album, you can drag and drop a gallery or another album into your new album below"
601
  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"
602
 
603
+ #: ../admin/album.php:313
604
  msgid "Select gallery"
605
  msgstr "Wähle Galerie"
606
 
607
+ #: ../admin/album.php:342
608
  msgid "Album ID"
609
  msgstr "Album ID"
610
 
611
+ #: ../admin/album.php:355
612
  msgid "No album selected!"
613
  msgstr "Kein Album ausgewählt"
614
 
615
+ #: ../admin/album.php:375
616
  msgid "Album name:"
617
  msgstr "Album Name :"
618
 
619
+ #: ../admin/album.php:381
620
  msgid "Album description:"
621
  msgstr "Beschreibung:"
622
 
623
+ #: ../admin/album.php:387
624
  msgid "Select a preview image:"
625
  msgstr "Wähle Vorschaubild:"
626
 
627
+ #: ../admin/album.php:389
628
  msgid "No picture"
629
  msgstr "Kein Bild"
630
 
631
+ #: ../admin/album.php:403
632
+ msgid "Page Link to"
633
+ msgstr "Seite verlinkt zu"
634
+
635
+ #: ../admin/album.php:405
636
+ msgid "Not linked"
637
+ msgstr "Nicht verlinkt"
638
+
639
+ #: ../admin/album.php:415
640
+ #: ../admin/manage-galleries.php:226
641
+ #: ../admin/manage-galleries.php:255
642
+ #: ../admin/manage-galleries.php:285
643
  msgid "OK"
644
  msgstr "OK"
645
 
646
+ #: ../admin/album.php:417
647
+ #: ../admin/manage-galleries.php:228
648
+ #: ../admin/manage-galleries.php:257
649
+ #: ../admin/manage-galleries.php:287
650
  msgid "Cancel"
651
  msgstr "Abbrechen"
652
 
653
+ #: ../admin/album.php:500
654
  msgid "Name"
655
  msgstr "Name"
656
 
657
+ #: ../admin/album.php:501
658
+ #: ../admin/manage-galleries.php:155
 
659
  msgid "Title"
660
  msgstr "Titel"
661
 
662
+ #: ../admin/album.php:502
663
  msgid "Page"
664
  msgstr "Seite"
665
 
666
+ #: ../admin/edit-thumbnail.php:19
667
+ #: ../admin/edit-thumbnail.php:22
668
+ msgid "Cheatin&#8217; uh?"
669
+ msgstr "Cheatin&#8217; uh?"
670
+
671
+ #: ../admin/edit-thumbnail.php:106
672
+ msgid "Select with the mouse the area for the new thumbnail"
673
+ msgstr "Wähle mit der Maus den Bereich für das neue Thumbnail"
674
+
675
+ #: ../admin/edit-thumbnail.php:120
676
+ msgid "Thumbnail updated"
677
+ msgstr "Thumbnail geändert"
678
+
679
+ #: ../admin/edit-thumbnail.php:125
680
+ msgid "Error updating thumbnail"
681
+ msgstr "Konnte Vorschaubild nicht erzeugen"
682
+
683
+ #: ../admin/edit-thumbnail.php:142
684
+ msgid "Select the area for the thumbnail from the picture on the left."
685
+ msgstr "Wähle den Ausschnitt für das Vorschaubild innerhalb des Bildes"
686
+
687
+ #: ../admin/functions.php:40
688
  msgid "No valid gallery name!"
689
  msgstr "Kein gültiger Galerie-Name!"
690
 
691
+ #: ../admin/functions.php:47
692
+ #: ../admin/functions.php:56
693
+ #: ../admin/functions.php:70
694
+ #: ../admin/functions.php:147
695
+ #: ../admin/functions.php:154
696
  msgid "Directory"
697
  msgstr "Verzeichnis"
698
 
699
+ #: ../admin/functions.php:47
700
  msgid "didn't exist. Please create first the main gallery folder "
701
  msgstr "nicht gefunden. Bitte erstelle zuerst das Hauptverzeichnis."
702
 
703
+ #: ../admin/functions.php:48
704
+ #: ../admin/functions.php:57
705
  msgid "Check this link, if you didn't know how to set the permission :"
706
  msgstr "Dieser Link zeigt dir wie man Verzeichnisrechte ändert :"
707
 
708
+ #: ../admin/functions.php:56
709
+ #: ../admin/functions.php:70
710
  msgid "is not writeable !"
711
  msgstr "ist schreibgeschützt !"
712
 
713
+ #: ../admin/functions.php:65
714
+ #: ../admin/functions.php:75
715
+ #: ../admin/functions.php:795
716
  msgid "Unable to create directory "
717
  msgstr "Kann Verzeichnis nicht erstellen "
718
 
719
+ #: ../admin/functions.php:79
720
  msgid "The server setting Safe-Mode is on !"
721
  msgstr "Auf dem Server ist Safe-Mode aktiviert (PHP.INI)"
722
 
723
+ #: ../admin/functions.php:80
724
  msgid "If you have problems, please create directory"
725
  msgstr "Wenn Probleme auftreten, erstelle bitte das Verzeichnis"
726
 
727
+ #: ../admin/functions.php:81
728
  msgid "and the thumbnails directory"
729
  msgstr "und das Thumbnails-Verzeichnis"
730
 
731
+ #: ../admin/functions.php:81
732
  msgid "with permission 777 manually !"
733
  msgstr "mit den Berechtigungen 777 manuell !"
734
 
735
+ #: ../admin/functions.php:99
736
  msgid "already exists"
737
  msgstr "gibt es bereits"
738
 
739
+ #: ../admin/functions.php:113
740
  #, php-format
741
  msgid "Gallery %1$s successfully created.<br/>You can show this gallery with the tag %2$s.<br/>"
742
  msgstr "Galerie %1$s erstellt..<br/>Du kannst diese Galerie jetzt mit dem Stichwort %2$s einbinden.<br/>"
743
 
744
+ #: ../admin/functions.php:116
745
  msgid "Edit gallery"
746
  msgstr "Galerie ändern"
747
 
748
+ #: ../admin/functions.php:147
749
  msgid "doesn&#96;t exist!"
750
  msgstr "gibt es nicht !"
751
 
752
+ #: ../admin/functions.php:154
753
  msgid "contains no pictures"
754
  msgstr "enthält keine Bilder"
755
 
756
+ #: ../admin/functions.php:172
757
  msgid "Database error. Could not add gallery!"
758
  msgstr "Datenbank-Fehler. Kann Galerie nicht hinzufügen!"
759
 
760
+ #: ../admin/functions.php:175
761
  msgid "successfully created!"
762
  msgstr "erfolgreich erstellt!"
763
 
764
+ #: ../admin/functions.php:204
765
+ #: ../admin/functions.php:912
766
+ #: ../admin/manage-galleries.php:127
767
  msgid "Create new thumbnails"
768
+ msgstr "Neue Vorschaubilder erstellen"
769
 
770
+ #: ../admin/functions.php:207
771
  msgid " picture(s) successfully added"
772
  msgstr " Bild(er) erfolgreich hinzugefügt"
773
 
774
+ #: ../admin/functions.php:254
775
+ #: ../admin/functions.php:327
776
+ #: ../admin/functions.php:377
777
+ #: ../admin/functions.php:470
778
  msgid "Object didn't contain correct data"
779
  msgstr "Das Objekt enhält nicht die notwendigen Daten"
780
 
781
+ #: ../admin/functions.php:259
782
  msgid " is not writeable "
783
  msgstr "ist schreibgeschützt !"
784
 
785
+ #: ../admin/functions.php:337
786
+ #: ../admin/functions.php:380
787
+ #: ../admin/functions.php:476
788
  msgid " is not writeable"
789
  msgstr "ist schreibgeschützt !"
790
 
791
+ #: ../admin/functions.php:586
792
+ msgid "(Error : Couldn't not update data base)"
793
+ msgstr "(Fehler : Konnte Datenbank nicht updaten)"
794
+
795
+ #: ../admin/functions.php:593
796
+ msgid "(Error : Couldn't not update meta data)"
797
+ msgstr "(Fehler : Konnte Metadaten nicht speichern)"
798
+
799
+ #: ../admin/functions.php:602
800
+ msgid "(Error : Couldn't not find image)"
801
+ msgstr "(Fehler : Konnte das Bild nicht finden)"
802
+
803
+ #: ../admin/functions.php:732
804
  msgid "No valid URL path "
805
  msgstr "Kein gültiger URL Pfad"
806
 
807
+ #: ../admin/functions.php:748
808
  msgid "Import via cURL failed."
809
  msgstr "Import via cURL abgebrochen"
810
 
811
+ #: ../admin/functions.php:763
812
  msgid "Uploaded file was no or a faulty zip file ! The server recognize : "
813
  msgstr "Die hochgeladene Datei war keine korrekte Zip-Datei. Servermeldung :"
814
 
815
+ #: ../admin/functions.php:779
816
  msgid "Could not get a valid foldername"
817
  msgstr "Konnte keinen gültigen Verzeichnisnamen finden"
818
 
819
+ #: ../admin/functions.php:790
820
  #, php-format
821
  msgid "Unable to create directory %s. Is its parent directory writable by the server?"
822
  msgstr "Kann das Verzeichnis %s nicht erstellen. Is das Hauptverzeichnis vielleicht schreibgeschützt ?"
823
 
824
+ #: ../admin/functions.php:805
825
  msgid "Zip-File successfully unpacked"
826
  msgstr "Zip-Datei erfolgreich entpackt"
827
 
828
+ #: ../admin/functions.php:844
829
+ #: ../admin/functions.php:962
830
  msgid "Failure in database, no gallery path set !"
831
  msgstr "Datenbankfehler! Kein Galerie-Pfad gesetzt !"
832
 
833
+ #: ../admin/functions.php:868
834
+ #: ../admin/functions.php:956
835
  msgid "is no valid image file!"
836
  msgstr "ist keine zulässige Bilddatei !"
837
 
838
+ #: ../admin/functions.php:882
839
+ #: ../admin/functions.php:1098
840
+ #: ../admin/functions.php:1171
841
  #, php-format
842
  msgid "Unable to write to directory %s. Is this directory writable by the server?"
843
  msgstr "Kann das Verzeichnis %s nicht erstellen. Is das Hauptverzeichnis vielleicht schreibgeschützt ?"
844
 
845
+ #: ../admin/functions.php:889
846
+ #: ../admin/functions.php:979
847
  msgid "Error, the file could not moved to : "
848
  msgstr "Fehler: Diese Datei kann nicht verschoben werden zu :"
849
 
850
+ #: ../admin/functions.php:894
851
+ #: ../admin/functions.php:983
852
  msgid "Error, the file permissions could not set"
853
  msgstr "Fehler: Die Berechtigungen für diese Datei können nicht gesetzt werden"
854
 
855
+ #: ../admin/functions.php:916
856
  msgid " Image(s) successfully added"
857
  msgstr " Bild(er) erfolgreich hinzugefügt"
858
 
859
+ #: ../admin/functions.php:945
860
  msgid "Invalid upload. Error Code : "
861
  msgstr "Ungültiger Upload. Fehler Code :"
862
 
863
+ #: ../admin/functions.php:998
864
  msgid "Sorry, you have used your space allocation. Please delete some files to upload more files."
865
  msgstr "Schade, dein freier Speicher scheint aufgebraucht zu sein. Bitte lösche zuerst ein paar Bilder."
866
 
867
+ #: ../admin/functions.php:1038
868
  #, php-format
869
  msgid "SAFE MODE Restriction in effect! You need to create the folder <strong>%s</strong> manually"
870
  msgstr "SAFE MODE Einschränkungen ist aktiv. Du must das Verzeichnis <strong>%s</strong> manuell anlegen."
871
 
872
+ #: ../admin/functions.php:1039
873
  #, php-format
874
  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"
875
  msgstr "Wenn der Safe-Mode eingeschaltet ist, überprüft PHP ob der Besitzer (%s) des Skript mit dem Besitzer (%s) der Datei/Verzeichnis übereinstimmt."
876
 
877
+ #: ../admin/functions.php:1092
878
+ #: ../admin/functions.php:1165
879
  msgid "The destination gallery does not exist"
880
  msgstr "Die ausgewählte Galerie existiert nicht"
881
 
882
+ #: ../admin/functions.php:1123
883
  #, php-format
884
  msgid "Failed to move image %1$s to %2$s"
885
+ msgstr "Konnte das Bild %1$s nicht nach %2$s verschieben"
886
 
887
+ #: ../admin/functions.php:1141
888
  #, php-format
889
  msgid "Moved %1$s picture(s) to gallery : %2$s ."
890
  msgstr " %1$s Bild(er) in Galerie : %2$s verschoben."
891
 
892
+ #: ../admin/functions.php:1198
893
  #, php-format
894
  msgid "Failed to copy image %1$s to %2$s"
895
  msgstr "Konnte das Bild %1$s nicht nach %2$s kopieren"
896
 
897
+ #: ../admin/functions.php:1210
898
  #, php-format
899
  msgid "Failed to copy database row for picture %s"
900
  msgstr "Fehler bei der Datenbank-Operation für Bild %s"
901
 
902
+ #: ../admin/functions.php:1218
903
  #, php-format
904
  msgid "Image %1$s (%2$s) copied as image %3$s (%4$s) &raquo; The file already existed in the destination gallery."
905
  msgstr "Bild %1$s (%2$s) als Bild %3$s (%4$s) kopiert &raquo; Die Datei existierte bereits."
906
 
907
+ #: ../admin/functions.php:1221
908
  #, php-format
909
  msgid "Image %1$s (%2$s) copied as image %3$s (%4$s)"
910
  msgstr "Bild %1$s (%2$s) kopiert als Bild %3$s (%4$s)"
911
 
912
+ #: ../admin/functions.php:1230
913
  #, php-format
914
  msgid "Copied %1$s picture(s) to gallery: %2$s ."
915
  msgstr "Kopiere %1$s Bild(er) in die Galerie : %2$s ."
916
 
917
  #: ../admin/install.php:23
918
  msgid "Sorry, NextGEN Gallery works only with a role called administrator"
919
+ msgstr "Tut mir leid, aber NextGEN Gallery benötigt zwingend die Rolle \"Administrator\""
920
 
921
+ #: ../admin/install.php:108
922
  msgid "NextGEN Gallery : Tables could not created, please check your database settings"
923
  msgstr "NextGEN Gallery : Tabellen konnten nicht erstellt werden, überprüfe deine Datenbank"
924
 
930
  msgid "[Show picture list]"
931
  msgstr "[Zeige Bilder-Liste]"
932
 
933
+ #: ../admin/manage-galleries.php:20
 
934
  msgid "&laquo;"
935
  msgstr "&laquo;"
936
 
937
+ #: ../admin/manage-galleries.php:21
 
938
  msgid "&raquo;"
939
  msgstr "&raquo;"
940
 
941
+ #: ../admin/manage-galleries.php:62
942
+ msgid "No images selected"
943
+ msgstr "Keine Bilder ausgewählt"
944
+
945
+ #: ../admin/manage-galleries.php:79
946
+ #, php-format
947
+ msgid ""
948
+ "You are about to start the bulk edit for %s galleries \n"
949
+ " \n"
950
+ " 'Cancel' to stop, 'OK' to proceed."
951
+ msgstr ""
952
+ "Du startest die Bearbeitung von %s Galerien \n"
953
+ " \n"
954
+ " 'Abbrechen' um zu stoppen, 'OK' um die Bearbeitung durchzuführen."
955
+
956
+ #: ../admin/manage-galleries.php:107
957
  msgid "Gallery Overview"
958
  msgstr "Galerie Übersicht"
959
 
960
+ #: ../admin/manage-galleries.php:110
961
+ #: ../admin/manage-galleries.php:113
 
 
962
  msgid "Search Images"
963
  msgstr "Suche Bilder"
964
 
965
+ #: ../admin/manage-galleries.php:125
966
+ msgid "No action"
967
+ msgstr "Keine Aktion"
968
+
969
+ #: ../admin/manage-galleries.php:126
970
+ msgid "Set watermark"
971
+ msgstr "Wasserzeichen setzen"
972
+
973
+ #: ../admin/manage-galleries.php:128
974
+ msgid "Resize images"
975
+ msgstr "Bilder verkleinern"
976
+
977
+ #: ../admin/manage-galleries.php:129
978
+ msgid "Import metadata"
979
+ msgstr "Metadaten importieren"
980
+
981
+ #: ../admin/manage-galleries.php:131
982
+ msgid "Apply"
983
+ msgstr "Übernehmen"
984
+
985
+ #: ../admin/manage-galleries.php:139
986
  #, php-format
987
  msgid "Displaying %s&#8211;%s of %s"
988
  msgstr "Zeige %s&#8211;%s von %s"
989
 
990
+ #: ../admin/manage-galleries.php:154
 
991
  msgid "ID"
992
  msgstr "ID"
993
 
994
+ #: ../admin/manage-galleries.php:156
 
 
995
  msgid "Description"
996
  msgstr "Beschreibung"
997
 
998
+ #: ../admin/manage-galleries.php:157
 
999
  msgid "Author"
1000
  msgstr "Autor"
1001
 
1002
+ #: ../admin/manage-galleries.php:158
1003
  msgid "Page ID"
1004
  msgstr "Seiten ID"
1005
 
1006
+ #: ../admin/manage-galleries.php:159
1007
  msgid "Quantity"
1008
  msgstr "Anzahl"
1009
 
1010
+ #: ../admin/manage-galleries.php:160
1011
  msgid "Action"
1012
  msgstr "Aktion"
1013
 
1014
+ #: ../admin/manage-galleries.php:182
1015
  msgid "Edit"
1016
  msgstr "Bearbeiten"
1017
 
1018
+ #: ../admin/manage-galleries.php:195
1019
  msgid "Delete this gallery ?"
1020
  msgstr "Diese Galerie löschen ?"
1021
 
1022
+ #: ../admin/manage-galleries.php:202
 
1023
  msgid "No entries found"
1024
  msgstr "Keine Einträge gefunden"
1025
 
1026
+ #: ../admin/manage-galleries.php:246
1027
+ msgid "Resize Images to"
1028
+ msgstr "Verkleiner Bilder auf"
1029
+
1030
+ #: ../admin/manage-galleries.php:250
1031
+ msgid "Width x height (in pixel). NextGEN Gallery will keep ratio size"
1032
+ msgstr "Breite x Höhe (in Pixel). Das Seitenverhältnis wird berücksichtigt."
1033
+
1034
+ #: ../admin/manage-galleries.php:274
1035
+ msgid "Width x height (in pixel)"
1036
+ msgstr "Breite x Höhe (in Pixel)"
1037
+
1038
+ #: ../admin/manage-galleries.php:276
1039
+ msgid "These values are maximum values "
1040
+ msgstr "Diese Angaben sind maximale Angaben."
1041
+
1042
+ #: ../admin/manage-galleries.php:279
1043
+ msgid "Set fix dimension"
1044
+ msgstr "Setze feste Größe"
1045
+
1046
+ #: ../admin/manage-galleries.php:281
1047
+ msgid "Ignore the aspect ratio, no portrait thumbnails"
1048
+ msgstr "Ignoriere Bildseitenverhältnis"
1049
+
1050
  #: ../admin/manage-images.php:31
1051
  msgid "Gallery not found."
1052
  msgstr "Galerie nicht gefunden"
1055
  msgid "Sorry, you have no access here"
1056
  msgstr "Sorry, du hast nicht genügend Rechte"
1057
 
1058
+ #: ../admin/manage-images.php:165
 
 
 
 
1059
  #, php-format
1060
  msgid ""
1061
  "You are about to start the bulk edit for %s images \n"
1066
  " \n"
1067
  " 'Abbrechen' um zu stoppen, 'OK' um die Bearbeitung durchzuführen."
1068
 
1069
+ #: ../admin/manage-images.php:181
1070
  #, php-format
1071
  msgid "Search results for &#8220;%s&#8221;"
1072
  msgstr "Suchergebinsse für &#8220;%s&#8221;"
1073
 
1074
+ #: ../admin/manage-images.php:209
1075
+ #: ../admin/settings.php:274
1076
  msgid "Gallery settings"
1077
  msgstr "Galerie Einstellungen"
1078
 
1079
+ #: ../admin/manage-images.php:209
1080
  msgid "Click here for more settings"
1081
  msgstr "Hier klicken für weitere Einstellungen"
1082
 
1083
+ #: ../admin/manage-images.php:226
 
 
 
 
 
 
 
 
1084
  msgid "Preview image"
1085
  msgstr "Vorschau-Bild"
1086
 
1087
+ #: ../admin/manage-images.php:229
1088
  msgid "No Picture"
1089
  msgstr "Kein Bild"
1090
 
1091
+ #: ../admin/manage-images.php:242
1092
  msgid "Path"
1093
  msgstr "Pfad"
1094
 
1095
+ #: ../admin/manage-images.php:259
1096
  msgid "Create new page"
1097
  msgstr "Neue Seite erstellen"
1098
 
1099
+ #: ../admin/manage-images.php:262
1100
  msgid "Main page (No parent)"
1101
  msgstr "Haupseite (keine Unterseite)"
1102
 
1103
+ #: ../admin/manage-images.php:265
1104
  msgid "Add page"
1105
  msgstr "Seite hinzufügen"
1106
 
1107
+ #: ../admin/manage-images.php:272
1108
  msgid "Scan Folder for new images"
1109
  msgstr "Überprüfe Verzeichnis nach neuen Bildern"
1110
 
1111
+ #: ../admin/manage-images.php:273
1112
+ #: ../admin/manage-images.php:312
1113
+ #: ../admin/manage-images.php:461
1114
+ #: ../admin/settings.php:198
1115
+ #: ../admin/settings.php:227
1116
+ #: ../admin/settings.php:267
1117
+ #: ../admin/settings.php:349
1118
+ #: ../admin/settings.php:382
1119
+ #: ../admin/settings.php:489
1120
+ #: ../admin/settings.php:614
1121
  msgid "Save Changes"
1122
  msgstr "Änderungen speichern"
1123
 
1124
+ #: ../admin/manage-images.php:296
 
 
 
 
 
 
 
 
 
 
 
 
1125
  msgid "Delete images"
1126
  msgstr "Bilder löschen"
1127
 
1128
+ #: ../admin/manage-images.php:298
1129
+ msgid "Rotate images clockwise"
1130
+ msgstr "Rechts drehen"
1131
+
1132
+ #: ../admin/manage-images.php:299
1133
+ msgid "Rotate images counter-clockwise"
1134
+ msgstr "Links drehen"
1135
 
1136
+ #: ../admin/manage-images.php:300
1137
  msgid "Copy to..."
1138
  msgstr "Kopiere nach..."
1139
 
1140
+ #: ../admin/manage-images.php:301
1141
  msgid "Move to..."
1142
  msgstr "Verschiebe nach..."
1143
 
1144
+ #: ../admin/manage-images.php:302
1145
  msgid "Add tags"
1146
  msgstr "Stichwörter hinzufügen"
1147
 
1148
+ #: ../admin/manage-images.php:303
1149
  msgid "Delete tags"
1150
  msgstr "Stichwörter löschen"
1151
 
1152
+ #: ../admin/manage-images.php:304
1153
  msgid "Overwrite tags"
1154
  msgstr "Stichwörter überschreiben"
1155
 
1156
+ #: ../admin/manage-images.php:309
1157
  msgid "Sort gallery"
1158
  msgstr "Sortiere Bilder"
1159
 
1160
+ #: ../admin/manage-images.php:384
1161
+ msgid "pixel"
1162
+ msgstr "pixel"
1163
+
1164
+ #: ../admin/manage-images.php:391
1165
  #, php-format
1166
  msgid "View \"%s\""
1167
  msgstr "Anzeigen \"%s\""
1168
 
1169
+ #: ../admin/manage-images.php:391
1170
  msgid "View"
1171
  msgstr "Ansehen"
1172
 
1173
+ #: ../admin/manage-images.php:392
1174
  msgid "Show Meta data"
1175
  msgstr "Zeige Metadaten"
1176
 
1177
+ #: ../admin/manage-images.php:392
1178
  msgid "Meta"
1179
  msgstr "Meta"
1180
 
1181
+ #: ../admin/manage-images.php:393
1182
  msgid "Customize thumbnail"
1183
  msgstr "Thumbnails anpassen"
1184
 
1185
+ #: ../admin/manage-images.php:393
1186
  msgid "Edit thumb"
1187
  msgstr "Thumbnail ändern"
1188
 
1189
+ #: ../admin/manage-images.php:394
1190
+ msgid "Rotate"
1191
+ msgstr "Drehen"
1192
+
1193
+ #: ../admin/manage-images.php:395
1194
  #, php-format
1195
  msgid "Delete \"%s\""
1196
  msgstr "Lösche \"%s\""
1197
 
1198
+ #: ../admin/manage-images.php:475
1199
  msgid "Enter the tags"
1200
  msgstr "Stichwörter angeben"
1201
 
1202
+ #: ../admin/manage-images.php:499
1203
  msgid "Select the destination gallery:"
1204
  msgstr "Galerie auswählen:"
1205
 
1206
+ #: ../admin/manage-images.php:600
1207
+ #: ../admin/media-upload.php:212
1208
  msgid "Thumbnail"
1209
  msgstr "Thumbnail"
1210
 
1211
+ #: ../admin/manage-images.php:602
1212
+ #: ../admin/manage-sort.php:74
1213
  msgid "Filename"
1214
  msgstr "Dateiname"
1215
 
1216
+ #: ../admin/manage-images.php:604
1217
  msgid "Alt &amp; Title Text"
1218
  msgstr "Alt &amp; Titel Text"
1219
 
1220
+ #: ../admin/manage-images.php:605
1221
  msgid "Tags (comma separated list)"
1222
  msgstr "Stichwörter (Tags)"
1223
 
1224
+ #: ../admin/manage-images.php:607
1225
  msgid "exclude"
1226
  msgstr "ausschließen"
1227
 
1229
  msgid "Sort order changed"
1230
  msgstr "Reihenfolge aktualisiert"
1231
 
1232
+ #: ../admin/manage-sort.php:59
1233
  msgid "Sort Gallery"
1234
  msgstr "Sortiere Bilder"
1235
 
1236
+ #: ../admin/manage-sort.php:63
1237
  msgid "Update Sort Order"
1238
  msgstr "Sortierung speichern"
1239
 
1240
+ #: ../admin/manage-sort.php:66
1241
  msgid "Back to gallery"
1242
  msgstr "Zurück zur Galerie"
1243
 
1244
+ #: ../admin/manage-sort.php:71
1245
  msgid "Presort"
1246
  msgstr "Vorsortieren"
1247
 
1248
+ #: ../admin/manage-sort.php:72
1249
  msgid "Unsorted"
1250
  msgstr "Unsortiert"
1251
 
1252
+ #: ../admin/manage-sort.php:73
1253
+ #: ../admin/settings.php:335
1254
  msgid "Image ID"
1255
  msgstr "Bilder ID"
1256
 
1257
+ #: ../admin/manage-sort.php:75
1258
+ #: ../admin/media-upload.php:187
1259
  msgid "Alt/Title text"
1260
  msgstr "Alt / Titel Text"
1261
 
1262
+ #: ../admin/manage-sort.php:76
1263
  msgid "Date/Time"
1264
  msgstr "Datum/Zeit"
1265
 
1266
+ #: ../admin/manage-sort.php:77
1267
+ #: ../admin/settings.php:343
1268
  msgid "Ascending"
1269
  msgstr "Aufsteigend"
1270
 
1271
+ #: ../admin/manage-sort.php:78
1272
+ #: ../admin/settings.php:344
1273
  msgid "Descending"
1274
  msgstr "Absteigend"
1275
 
1276
+ #: ../admin/manage.php:87
1277
+ #: ../admin/manage.php:105
1278
  msgid "deleted successfully"
1279
  msgstr "erfolgreich gelöscht"
1280
 
1281
+ #: ../admin/manage.php:105
 
1282
  msgid "Picture"
1283
  msgstr "Bild"
1284
 
1285
+ #: ../admin/manage.php:114
 
 
 
 
 
 
 
 
1286
  msgid "Operation successful. Please clear your browser cache."
1287
  msgstr "Thumbnails erfolgreich erstellt. Bitte Browser-Cache aktualisieren."
1288
 
1289
+ #: ../admin/manage.php:207
1290
+ #: ../admin/manage.php:210
1291
+ msgid "Rotate images"
1292
+ msgstr "Bild drehen"
1293
+
1294
+ #: ../admin/manage.php:228
1295
+ msgid "Pictures deleted successfully "
1296
+ msgstr "Bilder erfolgreich gelöscht"
1297
+
1298
+ #: ../admin/manage.php:324
1299
  msgid "Tags changed"
1300
  msgstr "Stichwörter geändert"
1301
 
1302
+ #: ../admin/manage.php:351
1303
  msgid "Update successful"
1304
  msgstr "Aktualisierung erfolgreich"
1305
 
1306
+ #: ../admin/manage.php:385
1307
  msgid "New gallery page ID"
1308
  msgstr "Neue Galerie Seiten ID"
1309
 
1310
+ #: ../admin/manage.php:385
1311
  msgid "created"
1312
  msgstr "erstellt"
1313
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1314
  #: ../admin/media-upload.php:132
 
1315
  msgid "No gallery"
1316
  msgstr "Keine Galerie"
1317
 
1336
  msgstr "Ausrichtung"
1337
 
1338
  #: ../admin/media-upload.php:198
1339
+ #: ../admin/settings.php:367
1340
  msgid "None"
1341
  msgstr "Keiner"
1342
 
1343
  #: ../admin/media-upload.php:200
 
1344
  msgid "Left"
1345
  msgstr "Links"
1346
 
1347
  #: ../admin/media-upload.php:202
 
1348
  msgid "Center"
1349
  msgstr "Zentrieren"
1350
 
1351
  #: ../admin/media-upload.php:204
 
1352
  msgid "Right"
1353
  msgstr "Rechts"
1354
 
1355
  #: ../admin/media-upload.php:208
1356
+ #: ../admin/settings.php:471
1357
  msgid "Size"
1358
  msgstr "Größe"
1359
 
1373
  msgid "Save all changes"
1374
  msgstr "Änderungen Speichern"
1375
 
1376
+ #: ../admin/overview.php:14
 
1377
  msgid "NextGEN Gallery Overview"
1378
+ msgstr "NextGEN Gallery Übersicht"
1379
 
1380
+ #: ../admin/overview.php:104
1381
  msgid "Thanks to all donators..."
1382
  msgstr "Danke an alle Spender..."
1383
 
1384
+ #: ../admin/overview.php:126
1385
  msgid "View all"
1386
  msgstr "Alle ansehen"
1387
 
1388
+ #: ../admin/overview.php:164
1389
  #, php-format
1390
  msgid "Newsfeed could not be loaded. Check the <a href=\"%s\">front page</a> to check for updates."
1391
  msgstr "Der Newsfeed kann nicht geladen werden. Schaue auf die <a href=\"%s\">Hauptseite</a> um Updates mitzubekommen."
1392
 
1393
+ #: ../admin/overview.php:184
1394
  msgid "At a Glance"
1395
  msgstr "Übersicht"
1396
 
1397
+ #: ../admin/overview.php:211
 
 
 
 
 
 
1398
  msgid "Upload pictures"
1399
  msgstr "Bilder hochladen"
1400
 
1401
+ #: ../admin/overview.php:212
1402
  msgid "Here you can control your images, galleries and albums."
1403
  msgstr "Hier kannst Du die Bilder, Galerien und Alben verwalten."
1404
 
1405
+ #: ../admin/overview.php:216
1406
  msgid "Gallery Administrator"
1407
  msgstr "Galerie-Administrator"
1408
 
1409
+ #: ../admin/overview.php:216
1410
  msgid "Gallery Editor"
1411
  msgstr "Galerie-Mitarbeiter"
1412
 
1413
+ #: ../admin/overview.php:217
1414
  #, php-format
1415
  msgid "You currently have %s rights."
1416
  msgstr "Du hast derzeit %s Rechte."
1417
 
1418
+ #: ../admin/overview.php:224
1419
  msgid "Welcome to NextGEN Gallery !"
1420
  msgstr "Willkomen bei NextGEN Gallery"
1421
 
1422
+ #: ../admin/overview.php:225
1423
  msgid "Latest News"
1424
  msgstr "Letzte Informationen"
1425
 
1426
+ #: ../admin/overview.php:226
1427
  msgid "Recent donators"
1428
  msgstr "Neusten Spender"
1429
 
1430
+ #: ../admin/overview.php:227
1431
  msgid "Server Settings"
1432
  msgstr "Server- Einstellungen"
1433
 
1434
+ #: ../admin/overview.php:228
1435
+ msgid "Related plugins"
1436
+ msgstr "Verwandte Plugins"
1437
+
1438
+ #: ../admin/overview.php:229
1439
  msgid "Graphic Library"
1440
  msgstr "Grafik Bibliothek"
1441
 
1442
+ #: ../admin/overview.php:249
1443
  msgid "No GD support"
1444
  msgstr "Keine GD Unterstützung"
1445
 
1446
+ #: ../admin/overview.php:261
1447
+ #: ../admin/overview.php:307
1448
+ #: ../admin/overview.php:310
1449
  #: ../admin/overview.php:313
 
 
1450
  msgid "Yes"
1451
  msgstr "Ja"
1452
 
1453
+ #: ../admin/overview.php:263
1454
+ #: ../admin/overview.php:308
1455
+ #: ../admin/overview.php:311
1456
  #: ../admin/overview.php:314
 
 
1457
  msgid "No"
1458
  msgstr "Nein"
1459
 
1460
+ #: ../admin/overview.php:281
1461
  msgid "Not set"
1462
  msgstr "Nicht gesetzt"
1463
 
1464
+ #: ../admin/overview.php:283
1465
+ #: ../admin/overview.php:286
1466
  msgid "On"
1467
  msgstr "An"
1468
 
1469
+ #: ../admin/overview.php:284
1470
+ #: ../admin/overview.php:287
1471
  msgid "Off"
1472
  msgstr "Aus"
1473
 
1474
+ #: ../admin/overview.php:290
1475
+ #: ../admin/overview.php:293
1476
+ #: ../admin/overview.php:296
1477
  #: ../admin/overview.php:299
1478
  #: ../admin/overview.php:302
1479
  #: ../admin/overview.php:305
 
 
1480
  msgid "N/A"
1481
  msgstr "N/A"
1482
 
1483
+ #: ../admin/overview.php:304
1484
  msgid " MByte"
1485
  msgstr " MByte"
1486
 
1487
+ #: ../admin/overview.php:317
1488
  msgid "Operating System"
1489
  msgstr "Betriebssystem"
1490
 
1491
+ #: ../admin/overview.php:318
1492
  msgid "Server"
1493
  msgstr "Server"
1494
 
1495
+ #: ../admin/overview.php:319
1496
  msgid "Memory usage"
1497
  msgstr "Speicherverbrauch"
1498
 
1499
+ #: ../admin/overview.php:320
1500
  msgid "MYSQL Version"
1501
  msgstr "MySQL Version"
1502
 
1503
+ #: ../admin/overview.php:321
1504
  msgid "SQL Mode"
1505
  msgstr "SQL Modus"
1506
 
1507
+ #: ../admin/overview.php:322
1508
  msgid "PHP Version"
1509
  msgstr "PHP Version"
1510
 
1511
+ #: ../admin/overview.php:323
1512
  msgid "PHP Safe Mode"
1513
  msgstr "PHP Safe Mode"
1514
 
1515
+ #: ../admin/overview.php:324
1516
  msgid "PHP Allow URL fopen"
1517
  msgstr "PHP Allow URL fopen"
1518
 
1519
+ #: ../admin/overview.php:325
1520
  msgid "PHP Memory Limit"
1521
  msgstr "PHP Memory Limit"
1522
 
1523
+ #: ../admin/overview.php:326
1524
  msgid "PHP Max Upload Size"
1525
  msgstr "PHP Max Upload Größe"
1526
 
1527
+ #: ../admin/overview.php:327
1528
  msgid "PHP Max Post Size"
1529
  msgstr "PHP Max Post Größe"
1530
 
1531
+ #: ../admin/overview.php:328
1532
+ msgid "PHP Output Buffer Size"
1533
+ msgstr "PHP Output Buffer Größe"
1534
+
1535
+ #: ../admin/overview.php:329
1536
  msgid "PHP Max Script Execute Time"
1537
  msgstr "PHP Max Script Execute Time"
1538
 
1539
+ #: ../admin/overview.php:330
1540
  msgid "PHP Exif support"
1541
  msgstr "PHP Exif Modul"
1542
 
1543
+ #: ../admin/overview.php:331
1544
  msgid "PHP IPTC support"
1545
  msgstr "PHP IPTC Modul"
1546
 
1547
+ #: ../admin/overview.php:332
1548
  msgid "PHP XML support"
1549
  msgstr "PHP XML Modul"
1550
 
1551
+ #: ../admin/overview.php:344
1552
+ msgid "NextGEN Gallery contains some functions which are only available under PHP 5.2. You are using the old PHP 4 version, upgrade now! It's no longer supported by the PHP group. Many shared hosting providers offer both PHP 4 and PHP 5, running simultaneously. Ask your provider if they can do this."
1553
+ msgstr "NextGEN Gallery enthält einige Funktionen die nur unter PHP 5.2 verfügbar sind. Du nutzt immer noch die alte PHP 4 Version. Bitte aktualisiere so bald wie möglich diese Version, sie wird nicht mehr gepflegt und weiterentwicklelt. Die meisten Hoster bieten bereits PHP5 an. Bitte kontaktiere deinen Provider und frag kurz nach ob sie ein Update durchführen können."
1554
+
1555
+ #: ../admin/overview.php:403
1556
  msgid "Storage Space"
1557
  msgstr "Speicherplatz"
1558
 
1559
+ #: ../admin/overview.php:406
1560
  msgid "Upload Space Used:"
1561
  msgstr "Verbrauchter Uploadspeicher:"
1562
 
1563
+ #: ../admin/overview.php:412
1564
  msgid "Upload Space Remaining:"
1565
  msgstr "Verbleibender Speicher:"
1566
 
1567
+ #: ../admin/overview.php:554
1568
+ msgid "Install"
1569
+ msgstr "Installieren"
1570
+
1571
  #: ../admin/roles.php:22
1572
  msgid "Updated capabilities"
1573
  msgstr "Zugriffsrechte geändert"
1624
  msgid "Update capabilities"
1625
  msgstr "Rechte aktualisieren"
1626
 
1627
+ #: ../admin/rotate.php:55
1628
+ msgid "Image rotated"
1629
+ msgstr "Bild gedreht"
1630
+
1631
+ #: ../admin/rotate.php:56
1632
+ msgid "Error rotating thumbnail"
1633
+ msgstr "Konnte Bild nicht bearbeiten"
1634
+
1635
+ #: ../admin/rotate.php:81
1636
+ msgid "90&deg; clockwise"
1637
+ msgstr "90° rechts drehen"
1638
+
1639
+ #: ../admin/rotate.php:82
1640
+ msgid "90&deg; anticlockwise"
1641
+ msgstr "90° links drehen"
1642
+
1643
+ #: ../admin/rotate.php:83
1644
+ msgid "Flip vertically"
1645
+ msgstr "Vertikal spiegeln"
1646
+
1647
+ #: ../admin/rotate.php:84
1648
+ msgid "Flip horizontally"
1649
+ msgstr "Horizontal spiegeln"
1650
+
1651
  #: ../admin/settings.php:61
1652
  msgid "Cache cleared"
1653
  msgstr "Cache löschen"
1654
 
1655
+ #: ../admin/settings.php:126
1656
+ #: ../admin/settings.php:138
1657
  msgid "General Options"
1658
  msgstr "Allg. Optionen"
1659
 
1660
+ #: ../admin/settings.php:127
1661
+ #: ../admin/settings.php:306
1662
  msgid "Thumbnails"
1663
  msgstr "Thumbnails"
1664
 
1665
+ #: ../admin/settings.php:128
1666
  msgid "Images"
1667
  msgstr "Bilder"
1668
 
1669
+ #: ../admin/settings.php:130
1670
+ #: ../admin/settings.php:356
1671
  msgid "Effects"
1672
  msgstr "Effekte"
1673
 
1674
+ #: ../admin/settings.php:131
1675
+ #: ../admin/settings.php:395
 
1676
  msgid "Watermark"
1677
  msgstr "Wasserzeichen"
1678
 
1679
+ #: ../admin/settings.php:132
1680
+ #: ../admin/settings.php:307
1681
+ #: ../admin/settings.php:499
 
1682
  msgid "Slideshow"
1683
  msgstr "Slideshow"
1684
 
1685
+ #: ../admin/settings.php:144
1686
+ #: ../admin/wpmu.php:47
1687
  msgid "Gallery path"
1688
  msgstr "Galerie-Pfad"
1689
 
1690
+ #: ../admin/settings.php:146
1691
  msgid "This is the default path for all galleries"
1692
  msgstr "Dies ist der Standard-Pfad für alle Galerien"
1693
 
1694
+ #: ../admin/settings.php:149
1695
  msgid "Delete image files"
1696
  msgstr "Lösche Bilddateien"
1697
 
1698
+ #: ../admin/settings.php:151
1699
  msgid "Delete files, when removing a gallery in the database"
1700
  msgstr "Löscht auch die Dateien, falls die Galerie aus der Datenbank entfernt wird"
1701
 
1702
+ #: ../admin/settings.php:154
1703
  msgid "Activate permalinks"
1704
  msgstr "Aktiviere Permalinks"
1705
 
1706
+ #: ../admin/settings.php:156
1707
  msgid "When you activate this option, you need to update your permalink structure one time."
1708
  msgstr "Wenn du diese Option aktivierst, muss du einmal die Permalink Struktur aktualisieren."
1709
 
1710
+ #: ../admin/settings.php:159
1711
  msgid "Select graphic library"
1712
  msgstr "Wähle Grafik-Bibliothek"
1713
 
1714
+ #: ../admin/settings.php:160
1715
  msgid "GD Library"
1716
  msgstr "GD Bibliothek"
1717
 
1718
+ #: ../admin/settings.php:161
1719
  msgid "ImageMagick (Experimental). Path to the library :"
1720
  msgstr "ImageMagick (Experimental). Pfad zur Bibliothek :"
1721
 
1722
+ #: ../admin/settings.php:166
1723
  msgid "Activate Media RSS feed"
1724
  msgstr "Aktiviere Media RSS Feed"
1725
 
1726
+ #: ../admin/settings.php:168
1727
  msgid "A RSS feed will be added to you blog header. Useful for CoolIris/PicLens"
1728
  msgstr "Ein Bilder-RSS Feed wird zum Blog hinzugefügt"
1729
 
1730
+ #: ../admin/settings.php:171
1731
  msgid "Activate PicLens/CoolIris support"
1732
  msgstr "Aktiviere PicLens/CoolIris"
1733
 
1734
+ #: ../admin/settings.php:173
1735
  msgid "When you activate this option, some javascript is added to your site footer. Make sure that wp_footer is called in your theme."
1736
  msgstr "Dieser Effekt fügt ein neues Javascript zu deinem Theme hinzu. Beachte das wp_footer() in deinen Vorlagen aufgerufen wird."
1737
 
1738
+ #: ../admin/settings.php:176
1739
  msgid "Tags / Categories"
1740
  msgstr "Stichwörter / Kategorien"
1741
 
1742
+ #: ../admin/settings.php:179
1743
  msgid "Activate related images"
1744
  msgstr "Verwandte Bilder anzeigen"
1745
 
1746
+ #: ../admin/settings.php:181
1747
  msgid "This option will append related images to every post"
1748
  msgstr "Diese Option hängt verwandte Bilder an jeden Beitrag"
1749
 
1750
+ #: ../admin/settings.php:185
1751
  msgid "Match with"
1752
  msgstr "Vergleiche mit"
1753
 
1754
+ #: ../admin/settings.php:186
1755
  msgid "Categories"
1756
  msgstr "Kategorien"
1757
 
1758
+ #: ../admin/settings.php:191
1759
  msgid "Max. number of images"
1760
  msgstr "Max. Anzahl der Bilder"
1761
 
1762
+ #: ../admin/settings.php:193
1763
  msgid "0 will show all images"
1764
  msgstr "0 zeige alle verwandten Bilder"
1765
 
1766
+ #: ../admin/settings.php:197
1767
+ #: ../admin/settings.php:226
1768
+ #: ../admin/settings.php:266
1769
+ #: ../admin/settings.php:348
1770
+ #: ../admin/settings.php:381
1771
+ #: ../admin/settings.php:613
1772
+ msgid "More settings"
1773
+ msgstr "Mehr Einstellungen"
1774
+
1775
+ #: ../admin/settings.php:205
1776
  msgid "Thumbnail settings"
1777
  msgstr "Thumbnail Einstellungen"
1778
 
1779
+ #: ../admin/settings.php:209
1780
  msgid "Please note : If you change the settings, you need to recreate the thumbnails under -> Manage Gallery ."
1781
  msgstr "Bitte beachten : Änderungen der Einstellungen werden erst übernommen, wenn Du neue Thumbnails unter -> \"Gallery verwalten\" erstellst"
1782
 
1783
+ #: ../admin/settings.php:222
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1784
  msgid "Thumbnail quality"
1785
  msgstr "Thumbnail Qualität"
1786
 
1787
+ #: ../admin/settings.php:234
1788
  msgid "Image settings"
1789
  msgstr "Bild Einstellungen"
1790
 
1791
+ #: ../admin/settings.php:240
1792
  msgid "Resize Images"
1793
  msgstr "Bilder verkleinern"
1794
 
1795
+ #: ../admin/settings.php:247
 
 
 
 
1796
  msgid "Image quality"
1797
  msgstr "Bild Qualität"
1798
 
1799
+ #: ../admin/settings.php:252
1800
  msgid "Single picture"
1801
  msgstr "Einzelbilder"
1802
 
1803
+ #: ../admin/settings.php:255
1804
  msgid "Cache single pictures"
1805
  msgstr "Nutze Cache für Einzelbidler"
1806
 
1807
+ #: ../admin/settings.php:258
1808
  msgid "Creates a file for each singlepic settings. Reduce the CPU load"
1809
  msgstr "Erstellt ein Cache-Bild für jedes Einzelbild (singlepic). Reduziert die CPU Belastung."
1810
 
1811
+ #: ../admin/settings.php:261
1812
  msgid "Clear cache folder"
1813
  msgstr "Lösche Cache Verzeichnis"
1814
 
1815
+ #: ../admin/settings.php:263
1816
  msgid "Proceed now"
1817
  msgstr "Jetzt durchführen"
1818
 
1819
+ #: ../admin/settings.php:280
1820
  msgid "Deactivate gallery page link"
1821
  msgstr "Keine Seitenverzweigung"
1822
 
1823
+ #: ../admin/settings.php:282
1824
  msgid "The album will not link to a gallery subpage. The gallery is shown on the same page."
1825
  msgstr "Ein Album benötigt dann keinen Link zur Seite. Die Galerie wird direkt angezeigt."
1826
 
1827
+ #: ../admin/settings.php:286
1828
  msgid "Number of images per page"
1829
  msgstr "Anzahl der Bilder pro Seite"
1830
 
1831
+ #: ../admin/settings.php:288
1832
  msgid "0 will disable pagination, all images on one page"
1833
  msgstr "0 schaltet Blätterfunktion ab ( = alle Bilder auf einer Seite )"
1834
 
1835
+ #: ../admin/settings.php:292
1836
  msgid "Number of columns"
1837
  msgstr "Anzahl der Spalten"
1838
 
1839
+ #: ../admin/settings.php:294
1840
  msgid "0 will display as much as possible based on the width of your theme. Setting normally only required for captions below the images"
1841
  msgstr "Mit \"0\" werden soviele Bilder wie möglich in einer Reihe dargestellt. Die Einstellung ist normalerweise nur für Beschriftungen unterhalb der Bilder sinnvoll."
1842
 
1843
+ #: ../admin/settings.php:298
1844
  msgid "Integrate slideshow"
1845
  msgstr "Slideshow verwenden"
1846
 
1847
+ #: ../admin/settings.php:305
1848
  msgid "Show first"
1849
  msgstr "Zeige als Erstes"
1850
 
1851
+ #: ../admin/settings.php:311
1852
  msgid "Show ImageBrowser"
1853
  msgstr "Zeige Bilder Browser"
1854
 
1855
+ #: ../admin/settings.php:313
1856
  msgid "The gallery will open the ImageBrowser instead the effect."
1857
  msgstr "Es wird der Bilder Browser angezeigt (Kein JavaScript Effekt)"
1858
 
1859
+ #: ../admin/settings.php:317
1860
+ msgid "Add hidden images"
1861
+ msgstr "Verstecke Bilder hinzufügen"
1862
+
1863
+ #: ../admin/settings.php:319
1864
+ msgid "If pagination is used, this option will still show all images in the modal window (Thickbox, Lightbox etc.). Note : This increase the page load"
1865
+ msgstr "Wenn du die Blätterfunktion nutzt, dann kannst du mit dieser Option alle Bilder im Modal-Fenster (Thickbox,Lightbox etc.) anzeigen. Berücksichtige das die Ladezeit der Seite erhöht wird."
1866
+
1867
+ #: ../admin/settings.php:323
1868
+ msgid "Enable AJAX pagination"
1869
+ msgstr "Aktiviere AJAX Navigation"
1870
+
1871
+ #: ../admin/settings.php:325
1872
+ msgid "Browse images without reload the page. Note : Work only in combination with Shutter effect"
1873
+ msgstr "Ermöglicht das Blättern zwischen den Bildern ohne de Seite neuzuladen. Hinweis : Funktioniert nur mit dem Shutter Effekt."
1874
+
1875
+ #: ../admin/settings.php:329
1876
  msgid "Sort options"
1877
  msgstr "Sortierung"
1878
 
1879
+ #: ../admin/settings.php:332
1880
  msgid "Sort thumbnails"
1881
  msgstr "Thumbnails sortieren"
1882
 
1883
+ #: ../admin/settings.php:334
1884
  msgid "Custom order"
1885
  msgstr "Benutzerdefiniert"
1886
 
1887
+ #: ../admin/settings.php:336
1888
  msgid "File name"
1889
  msgstr "Dateiname"
1890
 
1891
+ #: ../admin/settings.php:337
1892
  msgid "Alt / Title text"
1893
  msgstr "Alt / Titel Text"
1894
 
1895
+ #: ../admin/settings.php:338
1896
  msgid "Date / Time"
1897
  msgstr "Datum/Zeit"
1898
 
1899
+ #: ../admin/settings.php:342
1900
  msgid "Sort direction"
1901
  msgstr "Sortierreihenfolge"
1902
 
1903
+ #: ../admin/settings.php:360
1904
+ msgid "Here you can select the thumbnail effect, NextGEN Gallery will integrate the required HTML code in the images. Please note that only the Shutter and Thickbox effect will automatic added to your theme."
1905
+ msgstr "Hier kannst Du den Effekt für die Thumbnails auswählen. NextGEN Galerie wird den benötigten HTML Code verwenden. Bitte beachte, das nur Shutter und der Thickbox Effekt automatisch in Dein Theme von Wordpress integriert wird. Alle anderen Effekte mußt Du selbst in die header.php eintragen (JS)."
1906
 
1907
+ #: ../admin/settings.php:361
1908
  msgid "With the placeholder"
1909
  msgstr "Mit Platzhalter"
1910
 
1911
+ #: ../admin/settings.php:361
1912
  msgid "you can activate a navigation through the images (depend on the effect). Change the code line only , when you use a different thumbnail effect or you know what you do."
1913
  msgstr "Du kannst eine Navigation durch die Bilder aktivieren (hängt vom Effekt ab). Ändere nur die Codezeile falls Du einen anderen Effekt für die Thumbnails verwendest oder einfach weißt, was Du tust."
1914
 
1915
+ #: ../admin/settings.php:364
1916
  msgid "JavaScript Thumbnail effect"
1917
  msgstr "JavaScript Thumbnail Effekt"
1918
 
1919
+ #: ../admin/settings.php:368
1920
  msgid "Thickbox"
1921
  msgstr "Thickbox"
1922
 
1923
+ #: ../admin/settings.php:369
1924
  msgid "Lightbox"
1925
  msgstr "Lightbox"
1926
 
1927
+ #: ../admin/settings.php:370
1928
  msgid "Highslide"
1929
  msgstr "Highslide"
1930
 
1931
+ #: ../admin/settings.php:371
1932
  msgid "Shutter"
1933
  msgstr "Shutter"
1934
 
1935
+ #: ../admin/settings.php:372
1936
  msgid "Custom"
1937
  msgstr "Eigener"
1938
 
1939
+ #: ../admin/settings.php:377
1940
  msgid "Link Code line"
1941
  msgstr "Link Code Zeile"
1942
 
1943
+ #: ../admin/settings.php:396
1944
  msgid "Please note : You can only activate the watermark under -> Manage Gallery . This action cannot be undone."
1945
  msgstr "Bitte beachten : Das Wasserzeichen kann nur unter der Galerieverwaltung gesetzt werden. "
1946
 
1947
+ #: ../admin/settings.php:401
1948
  msgid "Preview"
1949
  msgstr "Vorschau"
1950
 
1951
+ #: ../admin/settings.php:403
1952
+ #: ../admin/settings.php:408
1953
  msgid "Position"
1954
  msgstr "Position"
1955
 
1956
+ #: ../admin/settings.php:428
1957
  msgid "Offset"
1958
  msgstr "Abstand"
1959
 
1960
+ #: ../admin/settings.php:444
1961
  msgid "Use image as watermark"
1962
+ msgstr "Benutze das Bild als Wasserzeichen"
1963
 
1964
+ #: ../admin/settings.php:447
1965
  msgid "URL to file"
1966
  msgstr "URL zur Datei"
1967
 
1968
+ #: ../admin/settings.php:449
1969
  msgid "The accessing of URL files is disabled at your server (allow_url_fopen)"
1970
  msgstr "Der Dateizugriff von URLs ist auf diesem Server deaktiviert (allow_url_fopen)"
1971
 
1972
+ #: ../admin/settings.php:452
1973
  msgid "Use text as watermark"
1974
  msgstr "Benutze Text als Wasserzeichen"
1975
 
1976
+ #: ../admin/settings.php:455
1977
  msgid "Font"
1978
  msgstr "Schriftart"
1979
 
1980
+ #: ../admin/settings.php:464
1981
  msgid "This function will not work, cause you need the FreeType library"
1982
  msgstr "Diese Funktion benötigt die FreeType Bibliothek"
1983
 
1984
+ #: ../admin/settings.php:466
1985
  msgid "You can upload more fonts in the folder <strong>nggallery/fonts</strong>"
1986
  msgstr "Du kannst mehr Schriftarten in das Verzeichniss <strong>nggallery/fonts</strong> hochladen."
1987
 
1988
+ #: ../admin/settings.php:475
1989
  msgid "Color"
1990
  msgstr "Farbe"
1991
 
1992
+ #: ../admin/settings.php:477
1993
  msgid "(hex w/o #)"
1994
  msgstr "(hex w/o #)"
1995
 
1996
+ #: ../admin/settings.php:480
1997
  msgid "Text"
1998
  msgstr "Text"
1999
 
2000
+ #: ../admin/settings.php:484
2001
  msgid "Opaque"
2002
  msgstr "Transparenz"
2003
 
2004
+ #: ../admin/settings.php:504
2005
  msgid "The path to imagerotator.swf is not defined, the slideshow will not work."
2006
  msgstr "Der Pfad zu imagerotator.swf ist nicht gesetzt, die Flash-Diaschau kann dann nicht angezeigt werden"
2007
 
2008
+ #: ../admin/settings.php:505
2009
  msgid "If you would like to use the JW Image Rotatator, please download the player <a href=\"http://www.longtailvideo.com/players/jw-image-rotator/\" target=\"_blank\" >here</a> and upload it to your Upload folder (Default is wp-content/uploads)."
2010
  msgstr "Wenn du den JW Image Rotator (Slideshow) nutzen möchtest, lade dir die aktuelle Version <a href=\"http://www.longtailvideo.com/players/jw-image-rotator/\" target=\"_blank\" >hier</a> herunter und übertrage sie dann in dein WordPress Upload Verzeichnis (Normalerweise wp-content/uploads),"
2011
 
2012
+ #: ../admin/settings.php:510
2013
  msgid "The settings are used in the JW Image Rotator Version"
2014
  msgstr "Die Einstellungen werden im JW Image Rotator benutzt , in der Version"
2015
 
2016
+ #: ../admin/settings.php:511
2017
  msgid "See more information for the Flash Player on the web page"
2018
  msgstr "Weitere Informationen auf der Flash Player Homepage"
2019
 
2020
+ #: ../admin/settings.php:515
2021
  msgid "Path to the Imagerotator (URL)"
2022
  msgstr "Pfad zum JW Image Rotator (URL)"
2023
 
2024
+ #: ../admin/settings.php:518
2025
  msgid "Search now"
2026
  msgstr "Suche jetzt"
2027
 
2028
+ #: ../admin/settings.php:519
2029
  msgid "Press the button to search automatic for the imagerotator, if you uploaded it to wp-content/uploads or a subfolder"
2030
  msgstr "Drücke 'Suche jetzt' um automatisch den Pfad zum Image Rotator zu ermitteln, sofern du den Player in wp-content/uploads oder ein Unterverzeichnis hochgeladen hast."
2031
 
2032
+ #: ../admin/settings.php:523
2033
  msgid "Default size (W x H)"
2034
  msgstr "Standard Größe (B x H)"
2035
 
2036
+ #: ../admin/settings.php:528
2037
  msgid "Shuffle mode"
2038
  msgstr "Shuffle Modus"
2039
 
2040
+ #: ../admin/settings.php:532
2041
  msgid "Show next image on click"
2042
  msgstr "Zeige nächstes Bild bei Klick"
2043
 
2044
+ #: ../admin/settings.php:536
2045
  msgid "Show navigation bar"
2046
  msgstr "Zeige Navigations-Leiste"
2047
 
2048
+ #: ../admin/settings.php:540
2049
  msgid "Show loading icon"
2050
  msgstr "Zeige Lade-Bildchen"
2051
 
2052
+ #: ../admin/settings.php:544
2053
  msgid "Use watermark logo"
2054
  msgstr "Wasserzeichen anzeigen"
2055
 
2056
+ #: ../admin/settings.php:546
2057
  msgid "You can change the logo at the watermark settings"
2058
+ msgstr "Du kannst den Pfad in Einstellungen für das Wasserzeichen angeben"
2059
 
2060
+ #: ../admin/settings.php:549
2061
  msgid "Stretch image"
2062
  msgstr "Bild dehnen"
2063
 
2064
+ #: ../admin/settings.php:552
2065
  msgid "true"
2066
  msgstr "Ja"
2067
 
2068
+ #: ../admin/settings.php:553
2069
  msgid "false"
2070
  msgstr "Nein"
2071
 
2072
+ #: ../admin/settings.php:554
2073
  msgid "fit"
2074
  msgstr "Passend"
2075
 
2076
+ #: ../admin/settings.php:555
2077
  msgid "none"
2078
  msgstr "keiner"
2079
 
2080
+ #: ../admin/settings.php:560
2081
  msgid "Duration time"
2082
  msgstr "Dauer"
2083
 
2084
+ #: ../admin/settings.php:561
2085
  msgid "sec."
2086
  msgstr "Sek."
2087
 
2088
+ #: ../admin/settings.php:564
2089
  msgid "Transition / Fade effect"
2090
  msgstr "Fade Effekt"
2091
 
2092
+ #: ../admin/settings.php:567
2093
  msgid "fade"
2094
  msgstr "Fade"
2095
 
2096
+ #: ../admin/settings.php:568
2097
  msgid "bgfade"
2098
  msgstr "BGFade"
2099
 
2100
+ #: ../admin/settings.php:569
2101
  msgid "slowfade"
2102
  msgstr "Slowfade"
2103
 
2104
+ #: ../admin/settings.php:570
2105
  msgid "circles"
2106
  msgstr "Kreise"
2107
 
2108
+ #: ../admin/settings.php:571
2109
  msgid "bubbles"
2110
  msgstr "Blasen"
2111
 
2112
+ #: ../admin/settings.php:572
2113
  msgid "blocks"
2114
  msgstr "Blöcke"
2115
 
2116
+ #: ../admin/settings.php:573
2117
  msgid "fluids"
2118
  msgstr "Fluids"
2119
 
2120
+ #: ../admin/settings.php:574
2121
  msgid "flash"
2122
  msgstr "Flash"
2123
 
2124
+ #: ../admin/settings.php:575
2125
  msgid "lines"
2126
  msgstr "Linien"
2127
 
2128
+ #: ../admin/settings.php:576
2129
  msgid "random"
2130
  msgstr "Zufall"
2131
 
2132
+ #: ../admin/settings.php:580
2133
  msgid "Use slow zooming effect"
2134
  msgstr "nutze Zoom Effekt"
2135
 
2136
+ #: ../admin/settings.php:584
2137
  msgid "Background Color"
2138
  msgstr "Hintergrund (BG) Farbe"
2139
 
2140
+ #: ../admin/settings.php:589
2141
  msgid "Texts / Buttons Color"
2142
  msgstr "Text- / Button Farbe"
2143
 
2144
+ #: ../admin/settings.php:594
2145
  msgid "Rollover / Active Color"
2146
  msgstr "Rollover / Aktiv (Link) Farbe"
2147
 
2148
+ #: ../admin/settings.php:599
2149
  msgid "Screen Color"
2150
  msgstr "Seiten Farbe"
2151
 
2152
+ #: ../admin/settings.php:604
2153
  msgid "Background music (URL)"
2154
  msgstr "Hintergrundmusik (URL)"
2155
 
2156
+ #: ../admin/settings.php:608
2157
  msgid "Try XHTML validation (with CDATA)"
2158
  msgstr "Integriere XHTML Validierung (mittels CDATA)"
2159
 
2160
+ #: ../admin/settings.php:610
2161
  msgid "Important : Could causes problem at some browser. Please recheck your page."
2162
+ msgstr "Wichtig : Es könnten Probleme bei einigen Browser entstehen. Unbedingt Seite danach prüfen."
2163
 
2164
  #: ../admin/setup.php:15
2165
  msgid "Reset all settings to default parameter"
2197
 
2198
  #: ../admin/setup.php:44
2199
  msgid "You don't like NextGEN Gallery ?"
2200
+ msgstr "Du magst die NextGEN Gallery nicht ?"
2201
 
2202
  #: ../admin/setup.php:45
2203
  msgid "No problem, before you deactivate this plugin press the Uninstall Button, because deactivating NextGEN Gallery does not remove any data that may have been created. "
2231
  "\\n"
2232
  "Wähle [Cancel] zum Abbrechen, [OK] zum Deinstallieren.\\n"
2233
 
2234
+ #: ../admin/showmeta.php:28
2235
+ msgid "Meta Data"
2236
+ msgstr "Metadaten"
2237
 
2238
+ #: ../admin/showmeta.php:33
2239
+ #: ../admin/showmeta.php:59
2240
+ #: ../admin/showmeta.php:84
2241
+ #: ../admin/showmeta.php:108
2242
  msgid "Tag"
2243
  msgstr "Stichwort"
2244
 
2245
+ #: ../admin/showmeta.php:34
2246
+ #: ../admin/showmeta.php:60
2247
+ #: ../admin/showmeta.php:85
2248
+ #: ../admin/showmeta.php:109
2249
  msgid "Value"
2250
  msgstr "Wert"
2251
 
2252
+ #: ../admin/showmeta.php:48
2253
+ msgid "No meta data saved"
2254
+ msgstr "Keine Metadaten gespeichert"
2255
+
2256
+ #: ../admin/showmeta.php:54
2257
+ msgid "EXIF Data"
2258
+ msgstr "EXIF Daten"
2259
+
2260
+ #: ../admin/showmeta.php:73
2261
  msgid "No exif data"
2262
  msgstr "Keine Exif Daten"
2263
 
2264
+ #: ../admin/showmeta.php:80
2265
  msgid "IPTC Data"
2266
  msgstr "IPTC Daten"
2267
 
2268
+ #: ../admin/showmeta.php:104
2269
  msgid "XMP Data"
2270
  msgstr "XMP Daten"
2271
 
2281
  msgid "CSS file successfully updated"
2282
  msgstr "CSS Datei erfolgreich aktualisiert"
2283
 
2284
+ #: ../admin/style.php:89
2285
  msgid "Style Editor"
2286
  msgstr "CSS Editor"
2287
 
2288
+ #: ../admin/style.php:93
2289
  msgid "Activate and use style sheet:"
2290
  msgstr "Aktiviere und nutze Stylesheet:"
2291
 
2292
+ #: ../admin/style.php:113
2293
  msgid "Activate"
2294
  msgstr "Aktiviere"
2295
 
2296
+ #: ../admin/style.php:123
2297
  #, php-format
2298
  msgid "Editing <strong>%s</strong>"
2299
  msgstr "Bearbeite <strong>%s</strong>"
2300
 
2301
+ #: ../admin/style.php:125
2302
  #, php-format
2303
  msgid "Browsing <strong>%s</strong>"
2304
  msgstr "Durchsuche <strong>%s</strong>"
2305
 
2306
+ #: ../admin/style.php:135
2307
  msgid "Version"
2308
  msgstr "Version"
2309
 
2310
+ #: ../admin/style.php:138
2311
  msgid "Tip : Copy your stylesheet (nggallery.css) to your theme folder, so it will be not lost during a upgrade"
2312
+ msgstr "Kleiner Tip : Kopiere das Stylesheet (nggallery.css) in dein Theme-Verzeichnis, dadurch wird es beim nächsten Update nicht überschrieben."
2313
 
2314
+ #: ../admin/style.php:140
2315
  msgid "Your theme contain a NextGEN Gallery stylesheet (nggallery.css), this file will be used"
2316
  msgstr "Dein Theme-Paket enthält eine NextGEN Gallery Stylesheet (nggallery.css), dieses Sheet wird automatisch eingebunden"
2317
 
2318
+ #: ../admin/style.php:142
2319
+ msgid "Tip No. 2: Use the color picker below to help you find the right color scheme for your gallery!"
2320
+ msgstr "2.Tip : Beutze die Farbauswahl um den zugehörigen HTML Farbcode zu erhalten"
2321
+
2322
+ #: ../admin/style.php:158
2323
  msgid "Update File"
2324
  msgstr "Datei aktualisieren"
2325
 
2326
+ #: ../admin/style.php:161
2327
  msgid "If this file were writable you could edit it."
2328
  msgstr "Wenn diese Datei beschreibbar wäre, könntest Du sie bearbeiten."
2329
 
2330
+ #: ../admin/style.php:166
2331
  msgid "Oops, no such file exists! Double check the name and try again, merci."
2332
  msgstr "Oha, eine solche Datei existiert nicht! Bitte überprüfe den Namen und probiere es erneut, danke."
2333
 
2409
 
2410
  #: ../admin/tags.php:211
2411
  msgid "Enter the name of the tag to delete. This tag will be removed from all posts."
2412
+ msgstr "Trage das zu löschende Stichwort ein. Das Stichwort wird aus allen Bildern entfernt."
2413
 
2414
  #: ../admin/tags.php:212
2415
  msgid "You can specify multiple tags to delete by separating them with commas"
2439
  msgid "Upgrade database structure..."
2440
  msgstr "Aktualisiere die Datenbank-Struturen..."
2441
 
2442
+ #: ../admin/upgrade.php:98
2443
+ #: ../admin/upgrade.php:108
2444
+ #: ../admin/upgrade.php:115
2445
+ #: ../admin/upgrade.php:126
2446
+ #: ../admin/upgrade.php:140
2447
  msgid "finished"
2448
  msgstr "beendet"
2449
 
2450
+ #: ../admin/upgrade.php:106
2451
  msgid "Update file structure..."
2452
  msgstr "Aktualisiere Verzeichnisse..."
2453
 
2454
+ #: ../admin/upgrade.php:113
2455
  msgid "Import date and time information..."
2456
  msgstr "Importiere Datum/Uhrzeit..."
2457
 
2458
+ #: ../admin/upgrade.php:121
2459
  msgid "Move imagerotator to new location..."
2460
  msgstr "Verschiebe den Image Rotator in ein neues Verzeichnis..."
2461
 
2462
+ #: ../admin/upgrade.php:132
2463
+ msgid "Update settings..."
2464
+ msgstr "Einstellungen gespeichert..."
2465
+
2466
+ #: ../admin/upgrade.php:205
2467
  msgid "Some folders/files could not renamed, please recheck the permission and rescan the folder in the manage gallery section."
2468
  msgstr "Einige Verzeichnisse / Bilder konnten nicht umbenannt werden, bitte überprüfe die Zugriffsrechte und Scanne dann das Verzeichnis neu ein."
2469
 
2470
+ #: ../admin/upgrade.php:207
2471
  msgid "Rename failed"
2472
  msgstr "Konnte nicht umbenannt werden"
2473
 
2474
+ #: ../admin/upgrade.php:302
2475
+ #: ../admin/upgrade.php:321
2476
  msgid "Upgrade NextGEN Gallery"
2477
  msgstr "NextGEN Gallery aktualisieren"
2478
 
2479
+ #: ../admin/upgrade.php:303
2480
  msgid "The script detect that you upgrade from a older version."
2481
  msgstr "Es wurde eine ältere NextGEN Datenbank erkannt."
2482
 
2483
+ #: ../admin/upgrade.php:304
2484
  msgid "Your database tables for NextGEN Gallery is out-of-date, and must be upgraded before you can continue."
2485
+ msgstr "Deinen Datenbank für NextGEN Gallery ist nicht auf dem aktuellen Stand, sie muss jetzt aktualisiert werden."
2486
 
2487
+ #: ../admin/upgrade.php:305
2488
  msgid "If you would like to downgrade later, please make first a complete backup of your database and the images."
2489
+ msgstr "Wenn du wieder auf eine ältere Version zurückgehen möchtest, solltest du vorher die Datenbank sichern."
2490
 
2491
+ #: ../admin/upgrade.php:306
2492
  msgid "The upgrade process may take a while, so please be patient."
2493
  msgstr "Der Upgrade Prozess kann etwas dauern, bitte sei geduldig..."
2494
 
2495
+ #: ../admin/upgrade.php:307
2496
  msgid "Start upgrade now"
2497
  msgstr "Aktualisierung starten"
2498
 
2499
+ #: ../admin/upgrade.php:323
2500
  msgid "Upgrade sucessful"
2501
  msgstr "Aktualisierung erfolgreich"
2502
 
2503
+ #: ../admin/upgrade.php:324
2504
  msgid "Continue"
2505
  msgstr "Weiter"
2506
 
2512
  msgid "General WordPress MU Settings"
2513
  msgstr "WordPress MU Einstellungen"
2514
 
2515
+ #: ../admin/wpmu.php:49
2516
  msgid "This is the default path for all blogs. With the placeholder %BLOG_ID% you can organize the folder structure better. The path must end with a /."
2517
  msgstr "Dieses ist der Default Pfad für alle Blogs. Mit dem Platzhalter %BLOG_ID% wird die Ordnerstruktur gesteuert. Der Pfad muss mit / enden."
2518
 
2519
+ #: ../admin/wpmu.php:52
2520
  msgid "Enable upload quota check"
2521
  msgstr "Schalte die Uploadbegrenzung ein"
2522
 
2523
+ #: ../admin/wpmu.php:54
2524
  msgid "Should work if the gallery is bellow the blog.dir"
2525
  msgstr "Sollte funktionieren wenn die Galerien sich unterhalb blog.dir befinden"
2526
 
2527
+ #: ../admin/wpmu.php:58
2528
  msgid "Enable zip upload option"
2529
  msgstr "Erlaube ZIP-Upload"
2530
 
2531
+ #: ../admin/wpmu.php:60
2532
  msgid "Allow users to upload zip folders."
2533
  msgstr "Erlaubt die Nutzung des ZIP-Upload"
2534
 
2535
+ #: ../admin/wpmu.php:64
2536
  msgid "Enable style selection"
2537
  msgstr "Freie CSS Style Auswahl"
2538
 
2539
+ #: ../admin/wpmu.php:66
2540
  msgid "Allow users to choose a style for the gallery."
2541
  msgstr "Erlaube dem User ein CSS für die Galerie zu wählen"
2542
 
2543
+ #: ../admin/wpmu.php:70
2544
  msgid "Enable roles/capabilities"
2545
  msgstr "Rollen / Zugriffsrechte freischalten"
2546
 
2547
+ #: ../admin/wpmu.php:72
2548
  msgid "Allow users to change the roles for other blog authors."
2549
  msgstr "Erlaube dem User die Anpassung der Zugangsberechtigung"
2550
 
2551
+ #: ../admin/wpmu.php:76
2552
  msgid "Default style"
2553
  msgstr "Standard CSS-Style"
2554
 
2555
+ #: ../admin/wpmu.php:93
2556
  msgid "Choose the default style for the galleries."
2557
  msgstr "Wähle das Default-Stylesheet für die Galerien"
2558
 
2617
  msgid "Insert"
2618
  msgstr "Einfügen"
2619
 
2620
+ #: ../lib/core.php:368
2621
  #, php-format
2622
  msgid "Note : Based on your server memory limit you should not upload larger images then <strong>%d x %d</strong> pixel"
2623
  msgstr "Hinweis : Basierend auf der Speicherbegrenzung auf dem Server, solltest du keine Bilder grösser als <strong>%d x %d</strong> Pixel hochladen"
2624
 
2625
+ #: ../lib/meta.php:123
2626
  msgid " mm"
2627
  msgstr " mm"
2628
 
2629
+ #: ../lib/meta.php:129
2630
  msgid " sec"
2631
  msgstr " Sek."
2632
 
2633
+ #: ../lib/meta.php:133
2634
+ msgid "Fired"
2635
+ msgstr "ausgelöst"
2636
+
2637
+ #: ../lib/meta.php:133
2638
+ msgid "Not fired"
2639
+ msgstr "Nicht ausgelöst"
2640
+
2641
+ #: ../lib/meta.php:414
2642
  msgid "Aperture"
2643
  msgstr "Blende"
2644
 
2645
+ #: ../lib/meta.php:415
2646
+ #: ../lib/meta.php:440
2647
  msgid "Credit"
2648
  msgstr "Autor"
2649
 
2650
+ #: ../lib/meta.php:416
2651
  msgid "Camera"
2652
  msgstr "Kamera"
2653
 
2654
+ #: ../lib/meta.php:417
2655
  msgid "Caption"
2656
  msgstr "Beschreibung"
2657
 
2658
+ #: ../lib/meta.php:419
2659
  msgid "Copyright"
2660
  msgstr "Rechte"
2661
 
2662
+ #: ../lib/meta.php:420
2663
  msgid "Focal length"
2664
  msgstr "Brennweite"
2665
 
2666
+ #: ../lib/meta.php:421
2667
  msgid "ISO"
2668
  msgstr "ISO"
2669
 
2670
+ #: ../lib/meta.php:422
 
2671
  msgid "Shutter speed"
2672
  msgstr "Belichtungszeit"
2673
 
2674
+ #: ../lib/meta.php:426
2675
  msgid "Subject"
2676
  msgstr "Betreff"
2677
 
2678
+ #: ../lib/meta.php:427
2679
  msgid "Make"
2680
  msgstr "Hersteller"
2681
 
2682
+ #: ../lib/meta.php:428
2683
  msgid "Edit Status"
2684
  msgstr "Ändere Status"
2685
 
2686
+ #: ../lib/meta.php:429
2687
  msgid "Category"
2688
  msgstr "Kategorie"
2689
 
2690
+ #: ../lib/meta.php:430
2691
  msgid "Keywords"
2692
  msgstr "Schlüsselwörter"
2693
 
2694
+ #: ../lib/meta.php:431
2695
  msgid "Date Created"
2696
  msgstr "erstellt (Datum)"
2697
 
2698
+ #: ../lib/meta.php:432
2699
  msgid "Time Created"
2700
  msgstr "erstellt (Zeit)"
2701
 
2702
+ #: ../lib/meta.php:433
2703
  msgid "Author Position"
2704
  msgstr "Autor Position"
2705
 
2706
+ #: ../lib/meta.php:434
2707
  msgid "City"
2708
  msgstr "Stadt"
2709
 
2710
+ #: ../lib/meta.php:435
2711
  msgid "Location"
2712
  msgstr "Ort"
2713
 
2714
+ #: ../lib/meta.php:436
2715
  msgid "Province/State"
2716
  msgstr "Staat / PLZ"
2717
 
2718
+ #: ../lib/meta.php:437
2719
  msgid "Country code"
2720
  msgstr "Landescode"
2721
 
2722
+ #: ../lib/meta.php:438
2723
  msgid "Country"
2724
  msgstr "Land"
2725
 
2726
+ #: ../lib/meta.php:439
2727
  msgid "Headline"
2728
  msgstr "Kopfzeile"
2729
 
2730
+ #: ../lib/meta.php:441
2731
  msgid "Source"
2732
  msgstr "Quelle"
2733
 
2734
+ #: ../lib/meta.php:442
2735
  msgid "Copyright Notice"
2736
  msgstr "Copyright Hinweise / Credits"
2737
 
2738
+ #: ../lib/meta.php:443
2739
  msgid "Contact"
2740
  msgstr "Kontakt"
2741
 
2742
+ #: ../lib/meta.php:444
2743
  msgid "Last modified"
2744
  msgstr "Zuletzt geändert"
2745
 
2746
+ #: ../lib/meta.php:445
2747
  msgid "Program tool"
2748
  msgstr "Programm"
2749
 
2750
+ #: ../lib/meta.php:446
2751
  msgid "Format"
2752
  msgstr "Format"
2753
 
2754
+ #: ../lib/meta.php:447
2755
+ msgid "Image Width"
2756
+ msgstr "Breite"
2757
+
2758
+ #: ../lib/meta.php:448
2759
+ msgid "Image Height"
2760
+ msgstr "Höhe"
2761
+
2762
+ #: ../lib/meta.php:449
2763
+ msgid "Flash"
2764
+ msgstr "Blitz"
2765
+
2766
+ #: ../lib/ngg-db.php:313
2767
+ #: ../lib/ngg-db.php:314
2768
  msgid "Album overview"
2769
  msgstr "Album Übersicht"
2770
 
2771
+ #: ../lib/shortcodes.php:289
2772
  msgid "[Pictures not found]"
2773
  msgstr "[Bilder nicht gefunden]"
2774
 
2808
 
2809
  #: ../lib/tags.php:146
2810
  msgid "Error. No enough tags for rename. Too for merge. Choose !"
2811
+ msgstr "Fehler. Es wurden nicht genug Stichwörter ausgewählt."
2812
 
2813
  #: ../lib/tags.php:163
2814
  msgid "No tag specified!"
2829
 
2830
  #: ../lib/tags.php:214
2831
  msgid "Tags number and slugs number isn't the same!"
2832
+ msgstr "Stichwort und Schlagwort ist nicht das Gleiche!"
2833
 
2834
  #: ../lib/tags.php:241
2835
  msgid "No slug edited."
2840
  msgid "%s slug(s) edited."
2841
  msgstr "%s Stichwörter geändert"
2842
 
2843
+ #: ../lib/xmlrpc.php:55
2844
+ #, php-format
2845
+ msgid "XML-RPC services are disabled on this blog. An admin user can enable them at %s"
2846
+ msgstr "XML-RPC Service ist ausgeschaltet. Der Administartor kann es hier %s einschalten"
2847
+
2848
+ #: ../lib/xmlrpc.php:62
2849
+ msgid "Bad login/pass combination."
2850
+ msgstr "Username/Password falsch"
2851
+
2852
+ #: ../lib/xmlrpc.php:118
2853
+ msgid "You are not allowed to upload files to this site."
2854
+ msgstr "Du hast keine Berechtigung Bilder hochzuladen"
2855
+
2856
+ #: ../lib/xmlrpc.php:124
2857
+ #: ../lib/xmlrpc.php:309
2858
+ msgid "Could not find gallery "
2859
+ msgstr "Konnte Galerie nicht finden"
2860
+
2861
+ #: ../lib/xmlrpc.php:129
2862
+ #: ../lib/xmlrpc.php:314
2863
+ msgid "You are not allowed to upload files to this gallery."
2864
+ msgstr "Du hast keine Berechtigung Bilder in diese Galerie zuladen"
2865
+
2866
+ #: ../lib/xmlrpc.php:141
2867
+ msgid "This is no valid image file."
2868
+ msgstr "Das ist keine zulässige Bilddatei !"
2869
+
2870
+ #: ../lib/xmlrpc.php:153
2871
+ msgid "Could not find image id "
2872
+ msgstr "Konnte die Bild-ID nicht finden"
2873
+
2874
+ #: ../lib/xmlrpc.php:160
2875
+ #, php-format
2876
+ msgid "Failed to delete image %1$s "
2877
+ msgstr "Konnte das Bild %1$s nicht löschen"
2878
+
2879
+ #: ../lib/xmlrpc.php:169
2880
+ #, php-format
2881
+ msgid "Could not write file %1$s (%2$s)"
2882
+ msgstr "Konnte die Datei %1$s (%2$s) nicht schreiben "
2883
+
2884
+ #: ../lib/xmlrpc.php:236
2885
+ #: ../lib/xmlrpc.php:272
2886
+ msgid "Sorry, you must be able to manage galleries to view the list of galleries"
2887
+ msgstr "Sorry, du hast nicht das Recht diese Galerie anzuschauen"
2888
+
2889
+ #: ../lib/xmlrpc.php:242
2890
+ msgid "Sorry, could not create the gallery"
2891
+ msgstr "Konnte die Galerie nicht anlegen"
2892
+
2893
  #: ../view/album-compact.php:32
 
2894
  msgid "Photos"
2895
  msgstr "Fotos"
2896
 
2897
  #: ../view/gallery-caption.php:32
2898
+ #: ../view/gallery-hidden.php:32
2899
  #: ../view/gallery.php:32
2900
+ #: ../widgets/media-rss-widget.php:236
2901
  msgid "[View with PicLens]"
2902
  msgstr "[Mit PicLens anzeigen]"
2903
 
2904
+ #: ../view/imagebrowser-exif.php:30
2905
  #: ../view/imagebrowser.php:26
2906
  msgid "Back"
2907
  msgstr "Zurück"
2908
 
2909
+ #: ../view/imagebrowser-exif.php:33
2910
  #: ../view/imagebrowser.php:29
2911
  msgid "Next"
2912
  msgstr "Vor"
2913
 
2914
+ #: ../view/imagebrowser-exif.php:35
2915
  #: ../view/imagebrowser.php:31
2916
  msgid "of"
2917
  msgstr "von"
2918
 
2919
+ #: ../view/imagebrowser-exif.php:38
2920
  msgid "Meta data"
2921
  msgstr "Metadaten"
2922
 
2923
+ #: ../view/imagebrowser-exif.php:42
2924
  msgid "Camera / Type"
2925
  msgstr "Kameratyp"
2926
 
2927
+ #: ../view/imagebrowser-exif.php:50
2928
  msgid "Focal Length"
2929
  msgstr "Brennweite"
2930
 
2937
  msgstr "Hiermit können NextGEN Bilder als Media RSS eingebunden werden"
2938
 
2939
  #: ../widgets/media-rss-widget.php:135
2940
+ #: ../widgets/media-rss-widget.php:200
2941
  #: ../widgets/media-rss-widget.php:260
2942
  msgid "Media RSS"
2943
  msgstr "Media RSS"
2947
  msgid "Link to the main image feed"
2948
  msgstr "Link zum Bilder-Feed"
2949
 
2950
+ #: ../widgets/media-rss-widget.php:151
2951
+ #: ../widgets/widgets.php:121
2952
  msgid "Title:"
2953
  msgstr "Titel:"
2954
 
2955
+ #: ../widgets/media-rss-widget.php:159
2956
+ msgid "Show Media RSS icon"
2957
+ msgstr "Zeige Media RSS Icon"
2958
 
2959
+ #: ../widgets/media-rss-widget.php:165
2960
+ msgid "Show the global Media RSS link"
2961
+ msgstr "Zeige den globalen Media RSS Link"
2962
 
2963
+ #: ../widgets/media-rss-widget.php:170
2964
  msgid "Text for the global Media RSS link:"
2965
  msgstr "Text für den globalen Media RSS link:"
2966
 
2967
+ #: ../widgets/media-rss-widget.php:176
2968
  msgid "Tooltip text for the global Media RSS link:"
2969
  msgstr "Tooltip-Text für den globalen Media RSS Link."
2970
 
2971
+ #: ../widgets/widgets.php:22
2972
  msgid "Show a NextGEN Gallery Slideshow"
2973
+ msgstr "Binde eine NextGEN Gallery Slideshow ein"
2974
 
2975
+ #: ../widgets/widgets.php:23
 
2976
  msgid "NextGEN Slideshow"
2977
  msgstr "NextGEN Diashow"
2978
 
2979
+ #: ../widgets/widgets.php:66
2980
  msgid "<a href=\"http://www.macromedia.com/go/getflashplayer\">Get the Flash Player</a> to see the slideshow."
2981
  msgstr "<a href=\"http://www.macromedia.com/go/getflashplayer\">Lade Dir den Flash Player</a> um die Diashow zu sehen."
2982
 
2983
+ #: ../widgets/widgets.php:123
2984
  msgid "Select Gallery:"
2985
  msgstr "Wähle Galerie"
2986
 
2987
+ #: ../widgets/widgets.php:125
2988
  msgid "All images"
2989
  msgstr "Alle Bilder"
2990
 
2991
+ #: ../widgets/widgets.php:137
2992
  msgid "Height:"
2993
  msgstr "Höhe:"
2994
 
2995
+ #: ../widgets/widgets.php:138
2996
  msgid "Width:"
2997
  msgstr "Breite:"
2998
 
2999
+ #: ../widgets/widgets.php:171
3000
  msgid "Add recent or random images from the galleries"
3001
  msgstr "Füge die neusten Bilder oder Zufallsbilder aus NextGEN Gallery ein"
3002
 
3003
+ #: ../widgets/widgets.php:173
3004
  msgid "NextGEN Widget"
3005
  msgstr "NextGEN Widget"
3006
 
3007
+ #: ../widgets/widgets.php:273
3008
  msgid "Title :"
3009
  msgstr "Titel :"
3010
 
3011
+ #: ../widgets/widgets.php:279
3012
  msgid "Show :"
3013
  msgstr "Zeige als :"
3014
 
3015
+ #: ../widgets/widgets.php:285
3016
  msgid "Original images"
3017
  msgstr "Original Bilder"
3018
 
3019
+ #: ../widgets/widgets.php:293
3020
  msgid "recent added "
3021
  msgstr "zuletzt hinzugefügt"
3022
 
3023
+ #: ../widgets/widgets.php:299
3024
  msgid "Enable IE8 Web Slices"
3025
  msgstr "IE8 Web Slices aktivieren"
3026
 
3027
+ #: ../widgets/widgets.php:304
3028
  msgid "Width x Height :"
3029
  msgstr "Breite x Höhe :"
3030
 
3031
+ #: ../widgets/widgets.php:311
3032
  msgid "Select :"
3033
  msgstr "Wähle :"
3034
 
3035
+ #: ../widgets/widgets.php:313
3036
  msgid "All galleries"
3037
  msgstr "Alle Galerien"
3038
 
3039
+ #: ../widgets/widgets.php:314
3040
  msgid "Only which are not listed"
3041
  msgstr "Nur ungelistete"
3042
 
3043
+ #: ../widgets/widgets.php:315
3044
  msgid "Only which are listed"
3045
  msgstr "Nur gelistete"
3046
 
3047
+ #: ../widgets/widgets.php:321
3048
  msgid "Gallery ID :"
3049
  msgstr "Galerie ID :"
3050
 
3051
+ #: ../widgets/widgets.php:323
3052
  msgid "Gallery IDs, separated by commas."
3053
  msgstr "Galerie IDs, mit Kommas getrennt"
3054
 
3075
  msgid "Invalid MediaRSS command (%s)."
3076
  msgstr "Ungültiger Media RSS Befehl (%s)"
3077
 
3078
+ #~ msgid "for PclZip , a PHP library that manage ZIP archives"
3079
+ #~ msgstr "für PclZip, eine ZIP PHP Library"
3080
+ #~ msgid "Crop square thumbnail from image"
3081
+ #~ msgstr "Mittige Thumbnails aus Bildern ausschneiden"
3082
+ #~ msgid "Create square thumbnails, use only the width setting :"
3083
+ #~ msgstr "Erstellt viereckige Thumbnails, nutzt nur den Wert der Breite :"
3084
+ #~ msgid "Image"
3085
+ #~ msgid_plural "Images"
3086
+ #~ msgstr[0] "Bild"
3087
+ #~ msgstr[1] "Bilder"
3088
+
3089
  #, fuzzy
3090
  #~ msgid "Search Media"
3091
  #~ msgstr "Suche nach Stichwörter"
3109
  #~ "Willst du wirklich %s Bild(er) verschieben \n"
3110
  #~ " \n"
3111
  #~ " 'Abbrechen' um zu stoppen, 'OK' um die Bearbeitung durchzuführen."
 
 
3112
  #~ msgid "Show thumbnails "
3113
  #~ msgstr "Thumbnails zeigen"
3114
  #~ msgid "Add Gallery"
3190
  #~ "anlegen"
3191
  #~ msgid "The Zip-file is too large. Exceed Memory limit !"
3192
  #~ msgstr "Das Zip-File ist zu groß. Speicherlimit überschritten !"
 
 
3193
  #~ msgid "Summary"
3194
  #~ msgstr "Zusammenfassung"
3195
  #~ msgid "Welcome"
3220
  #~ msgstr "Zeige als:"
3221
  #~ msgid "Link to:"
3222
  #~ msgstr "Link zu:"
 
 
3223
  #~ msgid "Send to editor &raquo;"
3224
  #~ msgstr "Zum Editor schicken &raquo;"
3225
  #~ msgid ""
lang/nggallery.pot CHANGED
@@ -2,14 +2,14 @@ msgid ""
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"
10
  "Content-Type: text/plain; charset=UTF-8\n"
11
  "Content-Transfer-Encoding: 8bit\n"
12
- "X-Poedit-KeywordsList: __ngettext:1,2;__;_e\n"
13
  "X-Poedit-Basepath: .\n"
14
  "X-Poedit-Country: GERMANY\n"
15
  "X-Poedit-SourceCharset: utf-8\n"
@@ -17,60 +17,73 @@ msgstr ""
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
-
74
  #: ../admin/about.php:9
75
  msgid "Copyright notes / Credits"
76
  msgstr ""
@@ -112,147 +125,143 @@ 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
 
194
  #: ../admin/addgallery.php:37
195
- #: ../admin/addgallery.php:53
196
  msgid "Upload failed!"
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
 
205
- #: ../admin/addgallery.php:105
206
  msgid "Image Files"
207
  msgstr ""
208
 
209
- #: ../admin/addgallery.php:124
210
- #: ../admin/addgallery.php:155
211
  msgid "remove"
212
  msgstr ""
213
 
214
- #: ../admin/addgallery.php:125
215
  msgid "Browse..."
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
 
229
- #: ../admin/addgallery.php:176
230
  #: ../admin/addgallery.php:205
231
  msgid "Upload a Zip-File"
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
 
@@ -329,532 +338,574 @@ msgstr ""
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,7 +914,7 @@ 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
 
@@ -875,74 +926,120 @@ msgstr ""
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 ""
@@ -951,11 +1048,7 @@ msgstr ""
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,161 +1056,162 @@ msgid ""
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
 
@@ -1125,109 +1219,89 @@ msgstr ""
1125
  msgid "Sort order changed"
1126
  msgstr ""
1127
 
1128
- #: ../admin/manage-sort.php:65
1129
  msgid "Sort Gallery"
1130
  msgstr ""
1131
 
1132
- #: ../admin/manage-sort.php:69
1133
  msgid "Update Sort Order"
1134
  msgstr ""
1135
 
1136
- #: ../admin/manage-sort.php:72
1137
  msgid "Back to gallery"
1138
  msgstr ""
1139
 
1140
- #: ../admin/manage-sort.php:77
1141
  msgid "Presort"
1142
  msgstr ""
1143
 
1144
- #: ../admin/manage-sort.php:78
1145
  msgid "Unsorted"
1146
  msgstr ""
1147
 
1148
- #: ../admin/manage-sort.php:79
 
1149
  msgid "Image ID"
1150
  msgstr ""
1151
 
1152
- #: ../admin/manage-sort.php:81
 
1153
  msgid "Alt/Title text"
1154
  msgstr ""
1155
 
1156
- #: ../admin/manage-sort.php:82
1157
  msgid "Date/Time"
1158
  msgstr ""
1159
 
1160
- #: ../admin/manage-sort.php:83
 
1161
  msgid "Ascending"
1162
  msgstr ""
1163
 
1164
- #: ../admin/manage-sort.php:84
 
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
 
1206
- #: ../admin/manage_thumbnail.php:19
1207
- #: ../admin/manage_thumbnail.php:22
1208
- #: ../admin/showmeta.php:10
1209
- #: ../admin/showmeta.php:13
1210
- msgid "Cheatin&#8217; uh?"
1211
- msgstr ""
1212
-
1213
- #: ../admin/manage_thumbnail.php:116
1214
- msgid "Select with the mouse the area for the new thumbnail."
1215
- msgstr ""
1216
-
1217
- #: ../admin/manage_thumbnail.php:130
1218
- msgid "Thumbnail updated"
1219
- msgstr ""
1220
-
1221
- #: ../admin/manage_thumbnail.php:135
1222
- msgid "Error updating thumbnail."
1223
- msgstr ""
1224
-
1225
- #: ../admin/manage_thumbnail.php:152
1226
- msgid "Select the area for the thumbnail from the picture on the left."
1227
- msgstr ""
1228
-
1229
  #: ../admin/media-upload.php:132
1230
- #: ../admin/tinymce/window.php:43
1231
  msgid "No gallery"
1232
  msgstr ""
1233
 
@@ -1252,27 +1326,24 @@ msgid "Alignment"
1252
  msgstr ""
1253
 
1254
  #: ../admin/media-upload.php:198
1255
- #: ../admin/settings.php:339
1256
  msgid "None"
1257
  msgstr ""
1258
 
1259
  #: ../admin/media-upload.php:200
1260
- #: ../admin/tinymce/window.php:129
1261
  msgid "Left"
1262
  msgstr ""
1263
 
1264
  #: ../admin/media-upload.php:202
1265
- #: ../admin/tinymce/window.php:130
1266
  msgid "Center"
1267
  msgstr ""
1268
 
1269
  #: ../admin/media-upload.php:204
1270
- #: ../admin/tinymce/window.php:131
1271
  msgid "Right"
1272
  msgstr ""
1273
 
1274
  #: ../admin/media-upload.php:208
1275
- #: ../admin/settings.php:442
1276
  msgid "Size"
1277
  msgstr ""
1278
 
@@ -1292,191 +1363,213 @@ msgstr ""
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
 
 
 
 
 
1480
  #: ../admin/roles.php:22
1481
  msgid "Updated capabilities"
1482
  msgstr ""
@@ -1533,521 +1626,540 @@ msgstr ""
1533
  msgid "Update capabilities"
1534
  msgstr ""
1535
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1536
  #: ../admin/settings.php:61
1537
  msgid "Cache cleared"
1538
  msgstr ""
1539
 
1540
- #: ../admin/settings.php:109
1541
- #: ../admin/settings.php:121
1542
  msgid "General Options"
1543
  msgstr ""
1544
 
1545
- #: ../admin/settings.php:110
1546
- #: ../admin/settings.php:291
1547
  msgid "Thumbnails"
1548
  msgstr ""
1549
 
1550
- #: ../admin/settings.php:111
1551
  msgid "Images"
1552
  msgstr ""
1553
 
1554
- #: ../admin/settings.php:113
1555
- #: ../admin/settings.php:328
1556
  msgid "Effects"
1557
  msgstr ""
1558
 
1559
- #: ../admin/settings.php:114
1560
- #: ../admin/settings.php:366
1561
- #: ../admin/tinymce/window.php:119
1562
  msgid "Watermark"
1563
  msgstr ""
1564
 
1565
- #: ../admin/settings.php:115
1566
- #: ../admin/settings.php:292
1567
- #: ../admin/settings.php:470
1568
- #: ../admin/tinymce/window.php:58
1569
  msgid "Slideshow"
1570
  msgstr ""
1571
 
1572
- #: ../admin/settings.php:127
1573
- #: ../admin/wpmu.php:48
1574
  msgid "Gallery path"
1575
  msgstr ""
1576
 
1577
- #: ../admin/settings.php:129
1578
  msgid "This is the default path for all galleries"
1579
  msgstr ""
1580
 
1581
- #: ../admin/settings.php:132
1582
  msgid "Delete image files"
1583
  msgstr ""
1584
 
1585
- #: ../admin/settings.php:134
1586
  msgid "Delete files, when removing a gallery in the database"
1587
  msgstr ""
1588
 
1589
- #: ../admin/settings.php:137
1590
  msgid "Activate permalinks"
1591
  msgstr ""
1592
 
1593
- #: ../admin/settings.php:139
1594
  msgid "When you activate this option, you need to update your permalink structure one time."
1595
  msgstr ""
1596
 
1597
- #: ../admin/settings.php:142
1598
  msgid "Select graphic library"
1599
  msgstr ""
1600
 
1601
- #: ../admin/settings.php:143
1602
  msgid "GD Library"
1603
  msgstr ""
1604
 
1605
- #: ../admin/settings.php:144
1606
  msgid "ImageMagick (Experimental). Path to the library :"
1607
  msgstr ""
1608
 
1609
- #: ../admin/settings.php:149
1610
  msgid "Activate Media RSS feed"
1611
  msgstr ""
1612
 
1613
- #: ../admin/settings.php:151
1614
  msgid "A RSS feed will be added to you blog header. Useful for CoolIris/PicLens"
1615
  msgstr ""
1616
 
1617
- #: ../admin/settings.php:154
1618
  msgid "Activate PicLens/CoolIris support"
1619
  msgstr ""
1620
 
1621
- #: ../admin/settings.php:156
1622
  msgid "When you activate this option, some javascript is added to your site footer. Make sure that wp_footer is called in your theme."
1623
  msgstr ""
1624
 
1625
- #: ../admin/settings.php:159
1626
  msgid "Tags / Categories"
1627
  msgstr ""
1628
 
1629
- #: ../admin/settings.php:162
1630
  msgid "Activate related images"
1631
  msgstr ""
1632
 
1633
- #: ../admin/settings.php:164
1634
  msgid "This option will append related images to every post"
1635
  msgstr ""
1636
 
1637
- #: ../admin/settings.php:168
1638
  msgid "Match with"
1639
  msgstr ""
1640
 
1641
- #: ../admin/settings.php:169
1642
  msgid "Categories"
1643
  msgstr ""
1644
 
1645
- #: ../admin/settings.php:174
1646
  msgid "Max. number of images"
1647
  msgstr ""
1648
 
1649
- #: ../admin/settings.php:176
1650
  msgid "0 will show all images"
1651
  msgstr ""
1652
 
1653
- #: ../admin/settings.php:187
1654
- msgid "Thumbnail settings"
1655
- msgstr ""
1656
-
1657
- #: ../admin/settings.php:191
1658
- msgid "Please note : If you change the settings, you need to recreate the thumbnails under -> Manage Gallery ."
1659
- msgstr ""
1660
-
1661
- #: ../admin/settings.php:194
1662
- msgid "Width x height (in pixel)"
1663
- msgstr ""
1664
-
1665
- #: ../admin/settings.php:196
1666
- msgid "These values are maximum values "
1667
- msgstr ""
1668
-
1669
- #: ../admin/settings.php:199
1670
- msgid "Set fix dimension"
1671
- msgstr ""
1672
-
1673
- #: ../admin/settings.php:201
1674
- msgid "Ignore the aspect ratio, no portrait thumbnails"
1675
  msgstr ""
1676
 
1677
- #: ../admin/settings.php:204
1678
- msgid "Crop square thumbnail from image"
1679
  msgstr ""
1680
 
1681
- #: ../admin/settings.php:206
1682
- msgid "Create square thumbnails, use only the width setting :"
1683
  msgstr ""
1684
 
1685
- #: ../admin/settings.php:209
1686
  msgid "Thumbnail quality"
1687
  msgstr ""
1688
 
1689
- #: ../admin/settings.php:220
1690
  msgid "Image settings"
1691
  msgstr ""
1692
 
1693
- #: ../admin/settings.php:226
1694
  msgid "Resize Images"
1695
  msgstr ""
1696
 
1697
- #: ../admin/settings.php:230
1698
- msgid "Width x height (in pixel). NextGEN Gallery will keep ratio size"
1699
- msgstr ""
1700
-
1701
- #: ../admin/settings.php:233
1702
  msgid "Image quality"
1703
  msgstr ""
1704
 
1705
- #: ../admin/settings.php:238
1706
  msgid "Single picture"
1707
  msgstr ""
1708
 
1709
- #: ../admin/settings.php:241
1710
  msgid "Cache single pictures"
1711
  msgstr ""
1712
 
1713
- #: ../admin/settings.php:244
1714
  msgid "Creates a file for each singlepic settings. Reduce the CPU load"
1715
  msgstr ""
1716
 
1717
- #: ../admin/settings.php:247
1718
  msgid "Clear cache folder"
1719
  msgstr ""
1720
 
1721
- #: ../admin/settings.php:249
1722
  msgid "Proceed now"
1723
  msgstr ""
1724
 
1725
- #: ../admin/settings.php:265
1726
  msgid "Deactivate gallery page link"
1727
  msgstr ""
1728
 
1729
- #: ../admin/settings.php:267
1730
  msgid "The album will not link to a gallery subpage. The gallery is shown on the same page."
1731
  msgstr ""
1732
 
1733
- #: ../admin/settings.php:271
1734
  msgid "Number of images per page"
1735
  msgstr ""
1736
 
1737
- #: ../admin/settings.php:273
1738
  msgid "0 will disable pagination, all images on one page"
1739
  msgstr ""
1740
 
1741
- #: ../admin/settings.php:277
1742
  msgid "Number of columns"
1743
  msgstr ""
1744
 
1745
- #: ../admin/settings.php:279
1746
  msgid "0 will display as much as possible based on the width of your theme. Setting normally only required for captions below the images"
1747
  msgstr ""
1748
 
1749
- #: ../admin/settings.php:283
1750
  msgid "Integrate slideshow"
1751
  msgstr ""
1752
 
1753
- #: ../admin/settings.php:290
1754
  msgid "Show first"
1755
  msgstr ""
1756
 
1757
- #: ../admin/settings.php:296
1758
  msgid "Show ImageBrowser"
1759
  msgstr ""
1760
 
1761
- #: ../admin/settings.php:298
1762
  msgid "The gallery will open the ImageBrowser instead the effect."
1763
  msgstr ""
1764
 
1765
- #: ../admin/settings.php:302
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1766
  msgid "Sort options"
1767
  msgstr ""
1768
 
1769
- #: ../admin/settings.php:305
1770
  msgid "Sort thumbnails"
1771
  msgstr ""
1772
 
1773
- #: ../admin/settings.php:307
1774
  msgid "Custom order"
1775
  msgstr ""
1776
 
1777
- #: ../admin/settings.php:309
1778
  msgid "File name"
1779
  msgstr ""
1780
 
1781
- #: ../admin/settings.php:310
1782
  msgid "Alt / Title text"
1783
  msgstr ""
1784
 
1785
- #: ../admin/settings.php:311
1786
  msgid "Date / Time"
1787
  msgstr ""
1788
 
1789
- #: ../admin/settings.php:315
1790
  msgid "Sort direction"
1791
  msgstr ""
1792
 
1793
- #: ../admin/settings.php:332
1794
- msgid "Here you can select the thumbnail effect, NextGEN Gallery will integrate the required HTML code in the images. Please note that only the Thickbox effect will automatic added to your theme."
1795
  msgstr ""
1796
 
1797
- #: ../admin/settings.php:333
1798
  msgid "With the placeholder"
1799
  msgstr ""
1800
 
1801
- #: ../admin/settings.php:333
1802
  msgid "you can activate a navigation through the images (depend on the effect). Change the code line only , when you use a different thumbnail effect or you know what you do."
1803
  msgstr ""
1804
 
1805
- #: ../admin/settings.php:336
1806
  msgid "JavaScript Thumbnail effect"
1807
  msgstr ""
1808
 
1809
- #: ../admin/settings.php:340
1810
  msgid "Thickbox"
1811
  msgstr ""
1812
 
1813
- #: ../admin/settings.php:341
1814
  msgid "Lightbox"
1815
  msgstr ""
1816
 
1817
- #: ../admin/settings.php:342
1818
  msgid "Highslide"
1819
  msgstr ""
1820
 
1821
- #: ../admin/settings.php:343
1822
  msgid "Shutter"
1823
  msgstr ""
1824
 
1825
- #: ../admin/settings.php:344
1826
  msgid "Custom"
1827
  msgstr ""
1828
 
1829
- #: ../admin/settings.php:349
1830
  msgid "Link Code line"
1831
  msgstr ""
1832
 
1833
- #: ../admin/settings.php:367
1834
  msgid "Please note : You can only activate the watermark under -> Manage Gallery . This action cannot be undone."
1835
  msgstr ""
1836
 
1837
- #: ../admin/settings.php:372
1838
  msgid "Preview"
1839
  msgstr ""
1840
 
1841
- #: ../admin/settings.php:374
1842
- #: ../admin/settings.php:379
1843
  msgid "Position"
1844
  msgstr ""
1845
 
1846
- #: ../admin/settings.php:399
1847
  msgid "Offset"
1848
  msgstr ""
1849
 
1850
- #: ../admin/settings.php:415
1851
  msgid "Use image as watermark"
1852
  msgstr ""
1853
 
1854
- #: ../admin/settings.php:418
1855
  msgid "URL to file"
1856
  msgstr ""
1857
 
1858
- #: ../admin/settings.php:420
1859
  msgid "The accessing of URL files is disabled at your server (allow_url_fopen)"
1860
  msgstr ""
1861
 
1862
- #: ../admin/settings.php:423
1863
  msgid "Use text as watermark"
1864
  msgstr ""
1865
 
1866
- #: ../admin/settings.php:426
1867
  msgid "Font"
1868
  msgstr ""
1869
 
1870
- #: ../admin/settings.php:435
1871
  msgid "This function will not work, cause you need the FreeType library"
1872
  msgstr ""
1873
 
1874
- #: ../admin/settings.php:437
1875
  msgid "You can upload more fonts in the folder <strong>nggallery/fonts</strong>"
1876
  msgstr ""
1877
 
1878
- #: ../admin/settings.php:446
1879
  msgid "Color"
1880
  msgstr ""
1881
 
1882
- #: ../admin/settings.php:448
1883
  msgid "(hex w/o #)"
1884
  msgstr ""
1885
 
1886
- #: ../admin/settings.php:451
1887
  msgid "Text"
1888
  msgstr ""
1889
 
1890
- #: ../admin/settings.php:455
1891
  msgid "Opaque"
1892
  msgstr ""
1893
 
1894
- #: ../admin/settings.php:475
1895
  msgid "The path to imagerotator.swf is not defined, the slideshow will not work."
1896
  msgstr ""
1897
 
1898
- #: ../admin/settings.php:476
1899
  msgid "If you would like to use the JW Image Rotatator, please download the player <a href=\"http://www.longtailvideo.com/players/jw-image-rotator/\" target=\"_blank\" >here</a> and upload it to your Upload folder (Default is wp-content/uploads)."
1900
  msgstr ""
1901
 
1902
- #: ../admin/settings.php:481
1903
  msgid "The settings are used in the JW Image Rotator Version"
1904
  msgstr ""
1905
 
1906
- #: ../admin/settings.php:482
1907
  msgid "See more information for the Flash Player on the web page"
1908
  msgstr ""
1909
 
1910
- #: ../admin/settings.php:486
1911
  msgid "Path to the Imagerotator (URL)"
1912
  msgstr ""
1913
 
1914
- #: ../admin/settings.php:489
1915
  msgid "Search now"
1916
  msgstr ""
1917
 
1918
- #: ../admin/settings.php:490
1919
  msgid "Press the button to search automatic for the imagerotator, if you uploaded it to wp-content/uploads or a subfolder"
1920
  msgstr ""
1921
 
1922
- #: ../admin/settings.php:494
1923
  msgid "Default size (W x H)"
1924
  msgstr ""
1925
 
1926
- #: ../admin/settings.php:499
1927
  msgid "Shuffle mode"
1928
  msgstr ""
1929
 
1930
- #: ../admin/settings.php:503
1931
  msgid "Show next image on click"
1932
  msgstr ""
1933
 
1934
- #: ../admin/settings.php:507
1935
  msgid "Show navigation bar"
1936
  msgstr ""
1937
 
1938
- #: ../admin/settings.php:511
1939
  msgid "Show loading icon"
1940
  msgstr ""
1941
 
1942
- #: ../admin/settings.php:515
1943
  msgid "Use watermark logo"
1944
  msgstr ""
1945
 
1946
- #: ../admin/settings.php:517
1947
  msgid "You can change the logo at the watermark settings"
1948
  msgstr ""
1949
 
1950
- #: ../admin/settings.php:520
1951
  msgid "Stretch image"
1952
  msgstr ""
1953
 
1954
- #: ../admin/settings.php:523
1955
  msgid "true"
1956
  msgstr ""
1957
 
1958
- #: ../admin/settings.php:524
1959
  msgid "false"
1960
  msgstr ""
1961
 
1962
- #: ../admin/settings.php:525
1963
  msgid "fit"
1964
  msgstr ""
1965
 
1966
- #: ../admin/settings.php:526
1967
  msgid "none"
1968
  msgstr ""
1969
 
1970
- #: ../admin/settings.php:531
1971
  msgid "Duration time"
1972
  msgstr ""
1973
 
1974
- #: ../admin/settings.php:532
1975
  msgid "sec."
1976
  msgstr ""
1977
 
1978
- #: ../admin/settings.php:535
1979
  msgid "Transition / Fade effect"
1980
  msgstr ""
1981
 
1982
- #: ../admin/settings.php:538
1983
  msgid "fade"
1984
  msgstr ""
1985
 
1986
- #: ../admin/settings.php:539
1987
  msgid "bgfade"
1988
  msgstr ""
1989
 
1990
- #: ../admin/settings.php:540
1991
  msgid "slowfade"
1992
  msgstr ""
1993
 
1994
- #: ../admin/settings.php:541
1995
  msgid "circles"
1996
  msgstr ""
1997
 
1998
- #: ../admin/settings.php:542
1999
  msgid "bubbles"
2000
  msgstr ""
2001
 
2002
- #: ../admin/settings.php:543
2003
  msgid "blocks"
2004
  msgstr ""
2005
 
2006
- #: ../admin/settings.php:544
2007
  msgid "fluids"
2008
  msgstr ""
2009
 
2010
- #: ../admin/settings.php:545
2011
  msgid "flash"
2012
  msgstr ""
2013
 
2014
- #: ../admin/settings.php:546
2015
  msgid "lines"
2016
  msgstr ""
2017
 
2018
- #: ../admin/settings.php:547
2019
  msgid "random"
2020
  msgstr ""
2021
 
2022
- #: ../admin/settings.php:551
2023
  msgid "Use slow zooming effect"
2024
  msgstr ""
2025
 
2026
- #: ../admin/settings.php:555
2027
  msgid "Background Color"
2028
  msgstr ""
2029
 
2030
- #: ../admin/settings.php:560
2031
  msgid "Texts / Buttons Color"
2032
  msgstr ""
2033
 
2034
- #: ../admin/settings.php:565
2035
  msgid "Rollover / Active Color"
2036
  msgstr ""
2037
 
2038
- #: ../admin/settings.php:570
2039
  msgid "Screen Color"
2040
  msgstr ""
2041
 
2042
- #: ../admin/settings.php:575
2043
  msgid "Background music (URL)"
2044
  msgstr ""
2045
 
2046
- #: ../admin/settings.php:579
2047
  msgid "Try XHTML validation (with CDATA)"
2048
  msgstr ""
2049
 
2050
- #: ../admin/settings.php:581
2051
  msgid "Important : Could causes problem at some browser. Please recheck your page."
2052
  msgstr ""
2053
 
@@ -2114,31 +2226,41 @@ msgid ""
2114
  "Choose [Cancel] to Stop, [OK] to Uninstall.\\n"
2115
  msgstr ""
2116
 
2117
- #: ../admin/showmeta.php:46
2118
- msgid "EXIF Data"
2119
  msgstr ""
2120
 
2121
- #: ../admin/showmeta.php:51
2122
- #: ../admin/showmeta.php:75
2123
- #: ../admin/showmeta.php:99
 
2124
  msgid "Tag"
2125
  msgstr ""
2126
 
2127
- #: ../admin/showmeta.php:52
2128
- #: ../admin/showmeta.php:76
2129
- #: ../admin/showmeta.php:100
 
2130
  msgid "Value"
2131
  msgstr ""
2132
 
2133
- #: ../admin/showmeta.php:65
 
 
 
 
 
 
 
 
2134
  msgid "No exif data"
2135
  msgstr ""
2136
 
2137
- #: ../admin/showmeta.php:71
2138
  msgid "IPTC Data"
2139
  msgstr ""
2140
 
2141
- #: ../admin/showmeta.php:95
2142
  msgid "XMP Data"
2143
  msgstr ""
2144
 
@@ -2154,49 +2276,53 @@ msgstr ""
2154
  msgid "CSS file successfully updated"
2155
  msgstr ""
2156
 
2157
- #: ../admin/style.php:71
2158
  msgid "Style Editor"
2159
  msgstr ""
2160
 
2161
- #: ../admin/style.php:75
2162
  msgid "Activate and use style sheet:"
2163
  msgstr ""
2164
 
2165
- #: ../admin/style.php:95
2166
  msgid "Activate"
2167
  msgstr ""
2168
 
2169
- #: ../admin/style.php:105
2170
  #, php-format
2171
  msgid "Editing <strong>%s</strong>"
2172
  msgstr ""
2173
 
2174
- #: ../admin/style.php:107
2175
  #, php-format
2176
  msgid "Browsing <strong>%s</strong>"
2177
  msgstr ""
2178
 
2179
- #: ../admin/style.php:117
2180
  msgid "Version"
2181
  msgstr ""
2182
 
2183
- #: ../admin/style.php:120
2184
  msgid "Tip : Copy your stylesheet (nggallery.css) to your theme folder, so it will be not lost during a upgrade"
2185
  msgstr ""
2186
 
2187
- #: ../admin/style.php:122
2188
  msgid "Your theme contain a NextGEN Gallery stylesheet (nggallery.css), this file will be used"
2189
  msgstr ""
2190
 
2191
- #: ../admin/style.php:136
 
 
 
 
2192
  msgid "Update File"
2193
  msgstr ""
2194
 
2195
- #: ../admin/style.php:139
2196
  msgid "If this file were writable you could edit it."
2197
  msgstr ""
2198
 
2199
- #: ../admin/style.php:144
2200
  msgid "Oops, no such file exists! Double check the name and try again, merci."
2201
  msgstr ""
2202
 
@@ -2308,63 +2434,68 @@ msgstr ""
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
 
@@ -2376,47 +2507,47 @@ msgstr ""
2376
  msgid "General WordPress MU Settings"
2377
  msgstr ""
2378
 
2379
- #: ../admin/wpmu.php:50
2380
  msgid "This is the default path for all blogs. With the placeholder %BLOG_ID% you can organize the folder structure better. The path must end with a /."
2381
  msgstr ""
2382
 
2383
- #: ../admin/wpmu.php:53
2384
  msgid "Enable upload quota check"
2385
  msgstr ""
2386
 
2387
- #: ../admin/wpmu.php:55
2388
  msgid "Should work if the gallery is bellow the blog.dir"
2389
  msgstr ""
2390
 
2391
- #: ../admin/wpmu.php:59
2392
  msgid "Enable zip upload option"
2393
  msgstr ""
2394
 
2395
- #: ../admin/wpmu.php:61
2396
  msgid "Allow users to upload zip folders."
2397
  msgstr ""
2398
 
2399
- #: ../admin/wpmu.php:65
2400
  msgid "Enable style selection"
2401
  msgstr ""
2402
 
2403
- #: ../admin/wpmu.php:67
2404
  msgid "Allow users to choose a style for the gallery."
2405
  msgstr ""
2406
 
2407
- #: ../admin/wpmu.php:71
2408
  msgid "Enable roles/capabilities"
2409
  msgstr ""
2410
 
2411
- #: ../admin/wpmu.php:73
2412
  msgid "Allow users to change the roles for other blog authors."
2413
  msgstr ""
2414
 
2415
- #: ../admin/wpmu.php:77
2416
  msgid "Default style"
2417
  msgstr ""
2418
 
2419
- #: ../admin/wpmu.php:94
2420
  msgid "Choose the default style for the galleries."
2421
  msgstr ""
2422
 
@@ -2481,140 +2612,158 @@ 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 ""
2488
 
2489
- #: ../lib/meta.php:87
2490
  msgid " mm"
2491
  msgstr ""
2492
 
2493
- #: ../lib/meta.php:93
2494
  msgid " sec"
2495
  msgstr ""
2496
 
2497
- #: ../lib/meta.php:371
2498
- #: ../view/imagebrowser-exif.php:42
 
 
 
 
 
 
 
2499
  msgid "Aperture"
2500
  msgstr ""
2501
 
2502
- #: ../lib/meta.php:372
2503
- #: ../lib/meta.php:397
2504
  msgid "Credit"
2505
  msgstr ""
2506
 
2507
- #: ../lib/meta.php:373
2508
  msgid "Camera"
2509
  msgstr ""
2510
 
2511
- #: ../lib/meta.php:374
2512
  msgid "Caption"
2513
  msgstr ""
2514
 
2515
- #: ../lib/meta.php:376
2516
  msgid "Copyright"
2517
  msgstr ""
2518
 
2519
- #: ../lib/meta.php:377
2520
  msgid "Focal length"
2521
  msgstr ""
2522
 
2523
- #: ../lib/meta.php:378
2524
  msgid "ISO"
2525
  msgstr ""
2526
 
2527
- #: ../lib/meta.php:379
2528
- #: ../view/imagebrowser-exif.php:50
2529
  msgid "Shutter speed"
2530
  msgstr ""
2531
 
2532
- #: ../lib/meta.php:383
2533
  msgid "Subject"
2534
  msgstr ""
2535
 
2536
- #: ../lib/meta.php:384
2537
  msgid "Make"
2538
  msgstr ""
2539
 
2540
- #: ../lib/meta.php:385
2541
  msgid "Edit Status"
2542
  msgstr ""
2543
 
2544
- #: ../lib/meta.php:386
2545
  msgid "Category"
2546
  msgstr ""
2547
 
2548
- #: ../lib/meta.php:387
2549
  msgid "Keywords"
2550
  msgstr ""
2551
 
2552
- #: ../lib/meta.php:388
2553
  msgid "Date Created"
2554
  msgstr ""
2555
 
2556
- #: ../lib/meta.php:389
2557
  msgid "Time Created"
2558
  msgstr ""
2559
 
2560
- #: ../lib/meta.php:390
2561
  msgid "Author Position"
2562
  msgstr ""
2563
 
2564
- #: ../lib/meta.php:391
2565
  msgid "City"
2566
  msgstr ""
2567
 
2568
- #: ../lib/meta.php:392
2569
  msgid "Location"
2570
  msgstr ""
2571
 
2572
- #: ../lib/meta.php:393
2573
  msgid "Province/State"
2574
  msgstr ""
2575
 
2576
- #: ../lib/meta.php:394
2577
  msgid "Country code"
2578
  msgstr ""
2579
 
2580
- #: ../lib/meta.php:395
2581
  msgid "Country"
2582
  msgstr ""
2583
 
2584
- #: ../lib/meta.php:396
2585
  msgid "Headline"
2586
  msgstr ""
2587
 
2588
- #: ../lib/meta.php:398
2589
  msgid "Source"
2590
  msgstr ""
2591
 
2592
- #: ../lib/meta.php:399
2593
  msgid "Copyright Notice"
2594
  msgstr ""
2595
 
2596
- #: ../lib/meta.php:400
2597
  msgid "Contact"
2598
  msgstr ""
2599
 
2600
- #: ../lib/meta.php:401
2601
  msgid "Last modified"
2602
  msgstr ""
2603
 
2604
- #: ../lib/meta.php:402
2605
  msgid "Program tool"
2606
  msgstr ""
2607
 
2608
- #: ../lib/meta.php:403
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
 
2617
- #: ../lib/shortcodes.php:275
2618
  msgid "[Pictures not found]"
2619
  msgstr ""
2620
 
@@ -2686,40 +2835,91 @@ msgstr ""
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
 
2694
  #: ../view/gallery-caption.php:32
 
2695
  #: ../view/gallery.php:32
 
2696
  msgid "[View with PicLens]"
2697
  msgstr ""
2698
 
2699
- #: ../view/imagebrowser-exif.php:26
2700
  #: ../view/imagebrowser.php:26
2701
  msgid "Back"
2702
  msgstr ""
2703
 
2704
- #: ../view/imagebrowser-exif.php:29
2705
  #: ../view/imagebrowser.php:29
2706
  msgid "Next"
2707
  msgstr ""
2708
 
2709
- #: ../view/imagebrowser-exif.php:31
2710
  #: ../view/imagebrowser.php:31
2711
  msgid "of"
2712
  msgstr ""
2713
 
2714
- #: ../view/imagebrowser-exif.php:34
2715
  msgid "Meta data"
2716
  msgstr ""
2717
 
2718
- #: ../view/imagebrowser-exif.php:38
2719
  msgid "Camera / Type"
2720
  msgstr ""
2721
 
2722
- #: ../view/imagebrowser-exif.php:46
2723
  msgid "Focal Length"
2724
  msgstr ""
2725
 
@@ -2732,7 +2932,7 @@ msgid "Widget that displays Media RSS links for NextGEN Gallery."
2732
  msgstr ""
2733
 
2734
  #: ../widgets/media-rss-widget.php:135
2735
- #: ../widgets/media-rss-widget.php:203
2736
  #: ../widgets/media-rss-widget.php:260
2737
  msgid "Media RSS"
2738
  msgstr ""
@@ -2742,109 +2942,108 @@ msgstr ""
2742
  msgid "Link to the main image feed"
2743
  msgstr ""
2744
 
2745
- #: ../widgets/media-rss-widget.php:153
2746
- #: ../widgets/widgets.php:133
2747
  msgid "Title:"
2748
  msgstr ""
2749
 
2750
- #: ../widgets/media-rss-widget.php:160
2751
- msgid "Media RSS icon:"
2752
  msgstr ""
2753
 
2754
- #: ../widgets/media-rss-widget.php:168
2755
- msgid "Show the global Media RSS link:"
2756
  msgstr ""
2757
 
2758
- #: ../widgets/media-rss-widget.php:172
2759
  msgid "Text for the global Media RSS link:"
2760
  msgstr ""
2761
 
2762
- #: ../widgets/media-rss-widget.php:178
2763
  msgid "Tooltip text for the global Media RSS link:"
2764
  msgstr ""
2765
 
2766
- #: ../widgets/widgets.php:28
2767
  msgid "Show a NextGEN Gallery Slideshow"
2768
  msgstr ""
2769
 
2770
- #: ../widgets/widgets.php:29
2771
- #: ../widgets/widgets.php:30
2772
  msgid "NextGEN Slideshow"
2773
  msgstr ""
2774
 
2775
- #: ../widgets/widgets.php:54
2776
  msgid "<a href=\"http://www.macromedia.com/go/getflashplayer\">Get the Flash Player</a> to see the slideshow."
2777
  msgstr ""
2778
 
2779
- #: ../widgets/widgets.php:135
2780
  msgid "Select Gallery:"
2781
  msgstr ""
2782
 
2783
- #: ../widgets/widgets.php:137
2784
  msgid "All images"
2785
  msgstr ""
2786
 
2787
- #: ../widgets/widgets.php:150
2788
  msgid "Height:"
2789
  msgstr ""
2790
 
2791
- #: ../widgets/widgets.php:151
2792
  msgid "Width:"
2793
  msgstr ""
2794
 
2795
- #: ../widgets/widgets.php:184
2796
  msgid "Add recent or random images from the galleries"
2797
  msgstr ""
2798
 
2799
- #: ../widgets/widgets.php:186
2800
  msgid "NextGEN Widget"
2801
  msgstr ""
2802
 
2803
- #: ../widgets/widgets.php:286
2804
  msgid "Title :"
2805
  msgstr ""
2806
 
2807
- #: ../widgets/widgets.php:292
2808
  msgid "Show :"
2809
  msgstr ""
2810
 
2811
- #: ../widgets/widgets.php:298
2812
  msgid "Original images"
2813
  msgstr ""
2814
 
2815
- #: ../widgets/widgets.php:306
2816
  msgid "recent added "
2817
  msgstr ""
2818
 
2819
- #: ../widgets/widgets.php:312
2820
  msgid "Enable IE8 Web Slices"
2821
  msgstr ""
2822
 
2823
- #: ../widgets/widgets.php:317
2824
  msgid "Width x Height :"
2825
  msgstr ""
2826
 
2827
- #: ../widgets/widgets.php:324
2828
  msgid "Select :"
2829
  msgstr ""
2830
 
2831
- #: ../widgets/widgets.php:326
2832
  msgid "All galleries"
2833
  msgstr ""
2834
 
2835
- #: ../widgets/widgets.php:327
2836
  msgid "Only which are not listed"
2837
  msgstr ""
2838
 
2839
- #: ../widgets/widgets.php:328
2840
  msgid "Only which are listed"
2841
  msgstr ""
2842
 
2843
- #: ../widgets/widgets.php:334
2844
  msgid "Gallery ID :"
2845
  msgstr ""
2846
 
2847
- #: ../widgets/widgets.php:336
2848
  msgid "Gallery IDs, separated by commas."
2849
  msgstr ""
2850
 
2
  msgstr ""
3
  "Project-Id-Version: NextGEN Gallery\n"
4
  "Report-Msgid-Bugs-To: \n"
5
+ "POT-Creation-Date: 2009-10-27 10:06+0100\n"
6
+ "PO-Revision-Date: 2009-10-27 10:06+0100\n"
7
+ "Last-Translator: Alex Rabe <no@email.com>\n"
8
  "Language-Team: Alex Rabe\n"
9
  "MIME-Version: 1.0\n"
10
  "Content-Type: text/plain; charset=UTF-8\n"
11
  "Content-Transfer-Encoding: 8bit\n"
12
+ "X-Poedit-KeywordsList: _n:1,2;__;_e\n"
13
  "X-Poedit-Basepath: .\n"
14
  "X-Poedit-Country: GERMANY\n"
15
  "X-Poedit-SourceCharset: utf-8\n"
17
  "X-Poedit-SearchPath-0: .\n"
18
  "X-Poedit-SearchPath-1: ..\n"
19
 
20
+ #: ../nggallery.php:169
21
  msgid "Sorry, NextGEN Gallery works only with a Memory Limit of 16 MB higher"
22
  msgstr "asd"
23
 
24
+ #: ../nggallery.php:194
25
  msgid "Picture tag"
26
  msgstr ""
27
 
28
+ #: ../nggallery.php:195
29
  msgid "Picture tag: %2$l."
30
  msgstr ""
31
 
32
+ #: ../nggallery.php:196
33
  msgid "Separate picture tags with commas."
34
  msgstr ""
35
 
36
+ #: ../nggallery.php:292
37
  msgid "L O A D I N G"
38
  msgstr ""
39
 
40
+ #: ../nggallery.php:293
41
  msgid "Click to Close"
42
  msgstr ""
43
 
44
+ #: ../nggallery.php:308
45
  msgid "loading"
46
  msgstr ""
47
 
48
+ #: ../nggallery.php:406
49
+ #: ../nggfunctions.php:848
50
+ #: ../admin/admin.php:32
51
+ msgid "Overview"
52
+ msgstr ""
53
+
54
+ #: ../nggallery.php:407
55
+ msgid "Get help"
56
+ msgstr ""
57
+
58
+ #: ../nggallery.php:408
59
+ msgid "Contribute"
60
+ msgstr ""
61
+
62
+ #: ../nggallery.php:409
63
+ msgid "Donate"
64
+ msgstr ""
65
+
66
  #: ../nggfunctions.php:37
67
  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.."
68
  msgstr "asd"
69
 
70
+ #: ../nggfunctions.php:103
71
+ #: ../nggfunctions.php:558
72
  msgid "[Gallery not found]"
73
  msgstr ""
74
 
75
+ #: ../nggfunctions.php:363
76
  msgid "[Album not found]"
77
  msgstr ""
78
 
79
+ #: ../nggfunctions.php:675
80
  msgid "[SinglePic not found]"
81
  msgstr ""
82
 
83
+ #: ../nggfunctions.php:813
84
  msgid "Related images for"
85
  msgstr ""
86
 
 
 
 
 
 
87
  #: ../admin/about.php:9
88
  msgid "Copyright notes / Credits"
89
  msgstr ""
125
  msgstr ""
126
 
127
  #: ../admin/about.php:27
 
 
 
 
128
  msgid "for a lot of very useful plugins and ideas"
129
  msgstr ""
130
 
131
+ #: ../admin/about.php:28
132
  msgid "for Shutter Reloaded, a real lightweight image effect"
133
  msgstr ""
134
 
135
+ #: ../admin/about.php:29
136
  msgid "for the best Media Flash Scripts on earth"
137
  msgstr ""
138
 
139
+ #: ../admin/about.php:30
140
  msgid "for the Fugue Iconset"
141
  msgstr ""
142
 
143
+ #: ../admin/about.php:31
144
  msgid "for the Watermark plugin"
145
  msgstr ""
146
 
147
+ #: ../admin/about.php:33
148
  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."
149
  msgstr ""
150
 
151
+ #: ../admin/about.php:37
152
  msgid "How to support ?"
153
  msgstr ""
154
 
155
+ #: ../admin/about.php:39
156
  msgid "There exist several ways to contribute, help or support us in this work. Non of them are mandatory."
157
  msgstr ""
158
 
159
+ #: ../admin/about.php:41
160
  msgid "Send us bugfixes / code changes"
161
  msgstr ""
162
 
163
+ #: ../admin/about.php:41
164
  msgid "The most motivated support for this plugin are your ideas and brain work"
165
  msgstr ""
166
 
167
+ #: ../admin/about.php:42
168
  msgid "Translate the plugin"
169
  msgstr ""
170
 
171
+ #: ../admin/about.php:42
172
  msgid "To help people to work with this plugin, I would like to have it in all available languages"
173
  msgstr ""
174
 
175
+ #: ../admin/about.php:43
176
  msgid "Donate the work via paypal"
177
  msgstr ""
178
 
179
+ #: ../admin/about.php:56
180
  msgid "No doubt a very useful and easy motivation :-)"
181
  msgstr ""
182
 
183
+ #: ../admin/about.php:58
184
  msgid "Place a link to the plugin in your blog/webpage"
185
  msgstr ""
186
 
187
+ #: ../admin/about.php:58
188
  msgid "Yes, share and trackback is also a good support for this work "
189
  msgstr ""
190
 
191
+ #: ../admin/about.php:63
192
  msgid "Thanks!"
193
  msgstr ""
194
 
195
+ #: ../admin/about.php:65
196
  msgid "We would like to thank this people which support us in the work :"
197
  msgstr ""
198
 
199
+ #: ../admin/about.php:164
200
  msgid "and all donators..."
201
  msgstr ""
202
 
203
  #: ../admin/addgallery.php:37
204
+ #: ../admin/addgallery.php:52
205
  msgid "Upload failed!"
206
  msgstr ""
207
 
208
+ #: ../admin/addgallery.php:57
209
+ #: ../admin/functions.php:836
210
+ #: ../admin/functions.php:936
211
  msgid "No gallery selected !"
212
  msgstr ""
213
 
214
+ #: ../admin/addgallery.php:104
215
  msgid "Image Files"
216
  msgstr ""
217
 
218
+ #: ../admin/addgallery.php:123
219
+ #: ../admin/addgallery.php:154
220
  msgid "remove"
221
  msgstr ""
222
 
223
+ #: ../admin/addgallery.php:124
224
  msgid "Browse..."
225
  msgstr ""
226
 
227
+ #: ../admin/addgallery.php:125
228
  #: ../admin/addgallery.php:293
229
  msgid "Upload images"
230
  msgstr ""
231
 
232
+ #: ../admin/addgallery.php:173
233
+ #: ../admin/addgallery.php:185
234
+ #: ../admin/manage-galleries.php:134
235
  msgid "Add new gallery"
236
  msgstr ""
237
 
238
+ #: ../admin/addgallery.php:175
239
  #: ../admin/addgallery.php:205
240
  msgid "Upload a Zip-File"
241
  msgstr ""
242
 
243
+ #: ../admin/addgallery.php:178
244
  #: ../admin/addgallery.php:246
245
  msgid "Import image folder"
246
  msgstr ""
247
 
248
+ #: ../admin/addgallery.php:180
249
  #: ../admin/addgallery.php:263
250
  msgid "Upload Images"
251
  msgstr ""
252
 
253
+ #: ../admin/addgallery.php:190
254
+ #: ../admin/manage-galleries.php:217
255
  msgid "New Gallery"
256
  msgstr ""
257
 
258
+ #: ../admin/addgallery.php:193
259
+ #: ../admin/manage-galleries.php:219
260
  msgid "Create a new , empty gallery below the folder"
261
  msgstr ""
262
 
263
+ #: ../admin/addgallery.php:195
264
+ #: ../admin/manage-galleries.php:221
265
  msgid "Allowed characters for file and folder names are"
266
  msgstr ""
267
 
338
  msgid "Enable flash based upload"
339
  msgstr ""
340
 
341
+ #: ../admin/admin.php:33
 
 
 
 
 
 
 
 
 
 
 
342
  msgid "Add Gallery / Images"
343
  msgstr ""
344
 
345
+ #: ../admin/admin.php:34
346
  msgid "Manage Gallery"
347
  msgstr ""
348
 
349
+ #: ../admin/admin.php:36
 
 
 
 
 
 
350
  msgid "Tags"
351
  msgstr ""
352
 
353
+ #: ../admin/admin.php:37
354
  msgid "Options"
355
  msgstr ""
356
 
357
+ #: ../admin/admin.php:39
358
  msgid "Style"
359
  msgstr ""
360
 
361
+ #: ../admin/admin.php:40
362
  msgid "Setup Gallery"
363
  msgstr ""
364
 
365
+ #: ../admin/admin.php:40
366
  msgid "Setup"
367
  msgstr ""
368
 
369
+ #: ../admin/admin.php:42
370
  msgid "Roles"
371
  msgstr ""
372
 
373
+ #: ../admin/admin.php:43
374
  msgid "About this Gallery"
375
  msgstr ""
376
 
377
+ #: ../admin/admin.php:43
378
  msgid "About"
379
  msgstr ""
380
 
381
+ #: ../admin/admin.php:45
382
  msgid "NextGEN Gallery"
383
  msgstr ""
384
 
385
+ #: ../admin/admin.php:73
386
  msgid "A new version of NextGEN Gallery is available !"
387
  msgstr ""
388
 
389
+ #: ../admin/admin.php:73
390
  msgid "Download here"
391
  msgstr ""
392
 
393
+ #: ../admin/admin.php:92
394
+ #, php-format
395
+ msgid "Thanks for using this plugin, I hope you are satisfied ! If you would like to support the further development, please consider a <strong><a href=\"%s\">donation</a></strong>! If you still need some help, please post your questions <a href=\"http://wordpress.org/tags/nextgen-gallery?forum_id=10\">here</a> ."
396
+ msgstr ""
397
+
398
+ #: ../admin/admin.php:95
399
+ msgid "OK, hide this message now !"
400
+ msgstr ""
401
+
402
+ #: ../admin/admin.php:178
403
  msgid "You do not have the correct permission"
404
  msgstr ""
405
 
406
+ #: ../admin/admin.php:179
407
  msgid "Unexpected Error"
408
  msgstr ""
409
 
410
+ #: ../admin/admin.php:180
411
  msgid "A failure occurred"
412
  msgstr ""
413
 
414
+ #: ../admin/admin.php:261
415
+ #: ../admin/admin.php:329
416
+ #: ../admin/functions.php:99
417
+ #: ../admin/functions.php:175
418
+ msgid "Gallery"
419
+ msgid_plural "Galleries"
420
+ msgstr[0] ""
421
+ msgstr[1] ""
422
+
423
+ #: ../admin/admin.php:265
424
  msgid "<a href=\"http://dpotter.net/Technical/2008/03/nextgen-gallery-review-introduction/\" target=\"_blank\">Introduction</a>"
425
  msgstr ""
426
 
427
+ #: ../admin/admin.php:268
428
  msgid "<a href=\"http://dpotter.net/Technical/2008/03/nextgen-gallery-review-introduction/\" target=\"_blank\">Setup</a>"
429
  msgstr ""
430
 
431
+ #: ../admin/admin.php:271
432
+ msgid "<a href=\"http://alexrabe.de/wordpress-plugins/nextgen-gallery/languages/\" target=\"_blank\">Translation by alex rabe</a>"
433
  msgstr ""
434
 
435
+ #: ../admin/admin.php:274
436
  msgid "<a href=\"http://dpotter.net/Technical/2008/03/nextgen-gallery-review-introduction/\" target=\"_blank\">Roles / Capabilities</a>"
437
  msgstr ""
438
 
439
+ #: ../admin/admin.php:277
440
  msgid "<a href=\"http://dpotter.net/Technical/2008/03/nextgen-gallery-review-introduction/\" target=\"_blank\">Styles</a>"
441
  msgstr ""
442
 
443
+ #: ../admin/admin.php:278
444
  msgid "Templates"
445
  msgstr ""
446
 
447
+ #: ../admin/admin.php:281
448
+ #: ../admin/admin.php:287
449
  msgid "<a href=\"http://dpotter.net/Technical/2008/03/nextgen-gallery-review-introduction/\" target=\"_blank\">Gallery management</a>"
450
  msgstr ""
451
 
452
+ #: ../admin/admin.php:282
453
  msgid "Gallery example"
454
  msgstr ""
455
 
456
+ #: ../admin/admin.php:288
457
+ #: ../admin/admin.php:298
458
  msgid "Gallery tags"
459
  msgstr ""
460
 
461
+ #: ../admin/admin.php:291
462
  msgid "<a href=\"http://dpotter.net/Technical/2008/03/nextgen-gallery-review-introduction/\" target=\"_blank\">Album management</a>"
463
  msgstr ""
464
 
465
+ #: ../admin/admin.php:292
466
  msgid "Album example"
467
  msgstr ""
468
 
469
+ #: ../admin/admin.php:293
470
+ #: ../admin/admin.php:299
471
  msgid "Album tags"
472
  msgstr ""
473
 
474
+ #: ../admin/admin.php:296
475
  msgid "<a href=\"http://dpotter.net/Technical/2008/03/nextgen-gallery-review-introduction/\" target=\"_blank\">Gallery tags</a>"
476
  msgstr ""
477
 
478
+ #: ../admin/admin.php:297
479
  msgid "Related images"
480
  msgstr ""
481
 
482
+ #: ../admin/admin.php:302
483
  msgid "<a href=\"http://dpotter.net/Technical/2008/03/nextgen-gallery-review-image-management/\" target=\"_blank\">Image management</a>"
484
  msgstr ""
485
 
486
+ #: ../admin/admin.php:303
487
  msgid "Custom fields"
488
  msgstr ""
489
 
490
+ #: ../admin/admin.php:308
491
  msgid "Get help with NextGEN Gallery"
492
  msgstr ""
493
 
494
+ #: ../admin/admin.php:312
495
  msgid "More Help & Info"
496
  msgstr ""
497
 
498
+ #: ../admin/admin.php:314
499
+ msgid "<a href=\"http://wordpress.org/tags/nextgen-gallery?forum_id=10\" target=\"_blank\">Support Forums</a>"
500
  msgstr ""
501
 
502
+ #: ../admin/admin.php:315
503
  msgid "FAQ"
504
  msgstr ""
505
 
506
+ #: ../admin/admin.php:316
507
  msgid "Feature request"
508
  msgstr ""
509
 
510
+ #: ../admin/admin.php:317
511
  msgid "Get your language pack"
512
  msgstr ""
513
 
514
+ #: ../admin/admin.php:318
515
  msgid "Contribute development"
516
  msgstr ""
517
 
518
+ #: ../admin/admin.php:319
519
  msgid "Download latest version"
520
  msgstr ""
521
 
522
+ #: ../admin/album.php:99
523
+ #: ../admin/album.php:112
524
+ #: ../admin/album.php:138
525
  msgid "Update Successfully"
526
  msgstr ""
527
 
528
+ #: ../admin/album.php:120
529
  msgid "Album deleted"
530
  msgstr ""
531
 
532
+ #: ../admin/album.php:248
533
  msgid "Manage Albums"
534
  msgstr ""
535
 
536
+ #: ../admin/album.php:254
537
+ #: ../admin/album.php:297
538
  msgid "Select album"
539
  msgstr ""
540
 
541
+ #: ../admin/album.php:256
542
  msgid "No album selected"
543
  msgstr ""
544
 
545
+ #: ../admin/album.php:267
546
+ #: ../admin/edit-thumbnail.php:157
547
  msgid "Update"
548
  msgstr ""
549
 
550
+ #: ../admin/album.php:268
551
  msgid "Edit album"
552
  msgstr ""
553
 
554
+ #: ../admin/album.php:269
555
+ #: ../admin/manage-galleries.php:195
 
556
  msgid "Delete"
557
  msgstr ""
558
 
559
+ #: ../admin/album.php:269
560
  msgid "Delete album ?"
561
  msgstr ""
562
 
563
+ #: ../admin/album.php:271
564
  msgid "Add new album"
565
  msgstr ""
566
 
567
+ #: ../admin/album.php:273
568
  msgid "Add"
569
  msgstr ""
570
 
571
+ #: ../admin/album.php:283
572
  msgid "Show / hide used galleries"
573
  msgstr ""
574
 
575
+ #: ../admin/album.php:283
576
  msgid "[Show all]"
577
  msgstr ""
578
 
579
+ #: ../admin/album.php:284
580
  msgid "Maximize the widget content"
581
  msgstr ""
582
 
583
+ #: ../admin/album.php:284
584
  msgid "[Maximize]"
585
  msgstr ""
586
 
587
+ #: ../admin/album.php:285
588
  msgid "Minimize the widget content"
589
  msgstr ""
590
 
591
+ #: ../admin/album.php:285
592
  msgid "[Minimize]"
593
  msgstr ""
594
 
595
+ #: ../admin/album.php:287
596
  msgid "After you create and select a album, you can drag and drop a gallery or another album into your new album below"
597
  msgstr ""
598
 
599
+ #: ../admin/album.php:313
600
  msgid "Select gallery"
601
  msgstr ""
602
 
603
+ #: ../admin/album.php:342
604
  msgid "Album ID"
605
  msgstr ""
606
 
607
+ #: ../admin/album.php:355
608
  msgid "No album selected!"
609
  msgstr ""
610
 
611
+ #: ../admin/album.php:375
612
  msgid "Album name:"
613
  msgstr ""
614
 
615
+ #: ../admin/album.php:381
616
  msgid "Album description:"
617
  msgstr ""
618
 
619
+ #: ../admin/album.php:387
620
  msgid "Select a preview image:"
621
  msgstr ""
622
 
623
+ #: ../admin/album.php:389
624
  msgid "No picture"
625
  msgstr ""
626
 
627
+ #: ../admin/album.php:403
628
+ msgid "Page Link to"
629
+ msgstr ""
630
+
631
+ #: ../admin/album.php:405
632
+ msgid "Not linked"
633
+ msgstr ""
634
+
635
+ #: ../admin/album.php:415
636
+ #: ../admin/manage-galleries.php:226
637
+ #: ../admin/manage-galleries.php:255
638
+ #: ../admin/manage-galleries.php:285
639
  msgid "OK"
640
  msgstr ""
641
 
642
+ #: ../admin/album.php:417
643
+ #: ../admin/manage-galleries.php:228
644
+ #: ../admin/manage-galleries.php:257
645
+ #: ../admin/manage-galleries.php:287
646
  msgid "Cancel"
647
  msgstr ""
648
 
649
+ #: ../admin/album.php:500
650
  msgid "Name"
651
  msgstr ""
652
 
653
+ #: ../admin/album.php:501
654
+ #: ../admin/manage-galleries.php:155
 
655
  msgid "Title"
656
  msgstr ""
657
 
658
+ #: ../admin/album.php:502
659
  msgid "Page"
660
  msgstr ""
661
 
662
+ #: ../admin/edit-thumbnail.php:19
663
+ #: ../admin/edit-thumbnail.php:22
664
+ msgid "Cheatin&#8217; uh?"
665
+ msgstr ""
666
+
667
+ #: ../admin/edit-thumbnail.php:106
668
+ msgid "Select with the mouse the area for the new thumbnail"
669
+ msgstr ""
670
+
671
+ #: ../admin/edit-thumbnail.php:120
672
+ msgid "Thumbnail updated"
673
+ msgstr ""
674
+
675
+ #: ../admin/edit-thumbnail.php:125
676
+ msgid "Error updating thumbnail"
677
+ msgstr ""
678
+
679
+ #: ../admin/edit-thumbnail.php:142
680
+ msgid "Select the area for the thumbnail from the picture on the left."
681
+ msgstr ""
682
+
683
+ #: ../admin/functions.php:40
684
  msgid "No valid gallery name!"
685
  msgstr ""
686
 
687
+ #: ../admin/functions.php:47
688
+ #: ../admin/functions.php:56
689
+ #: ../admin/functions.php:70
690
+ #: ../admin/functions.php:147
691
+ #: ../admin/functions.php:154
692
  msgid "Directory"
693
  msgstr ""
694
 
695
+ #: ../admin/functions.php:47
696
  msgid "didn't exist. Please create first the main gallery folder "
697
  msgstr ""
698
 
699
+ #: ../admin/functions.php:48
700
+ #: ../admin/functions.php:57
701
  msgid "Check this link, if you didn't know how to set the permission :"
702
  msgstr ""
703
 
704
+ #: ../admin/functions.php:56
705
+ #: ../admin/functions.php:70
706
  msgid "is not writeable !"
707
  msgstr ""
708
 
709
+ #: ../admin/functions.php:65
710
+ #: ../admin/functions.php:75
711
+ #: ../admin/functions.php:795
712
  msgid "Unable to create directory "
713
  msgstr ""
714
 
715
+ #: ../admin/functions.php:79
716
  msgid "The server setting Safe-Mode is on !"
717
  msgstr ""
718
 
719
+ #: ../admin/functions.php:80
720
  msgid "If you have problems, please create directory"
721
  msgstr ""
722
 
723
+ #: ../admin/functions.php:81
724
  msgid "and the thumbnails directory"
725
  msgstr ""
726
 
727
+ #: ../admin/functions.php:81
728
  msgid "with permission 777 manually !"
729
  msgstr ""
730
 
731
+ #: ../admin/functions.php:99
732
  msgid "already exists"
733
  msgstr ""
734
 
735
+ #: ../admin/functions.php:113
736
  #, php-format
737
  msgid "Gallery %1$s successfully created.<br/>You can show this gallery with the tag %2$s.<br/>"
738
  msgstr ""
739
 
740
+ #: ../admin/functions.php:116
741
  msgid "Edit gallery"
742
  msgstr ""
743
 
744
+ #: ../admin/functions.php:147
745
  msgid "doesn&#96;t exist!"
746
  msgstr ""
747
 
748
+ #: ../admin/functions.php:154
749
  msgid "contains no pictures"
750
  msgstr ""
751
 
752
+ #: ../admin/functions.php:172
753
  msgid "Database error. Could not add gallery!"
754
  msgstr ""
755
 
756
+ #: ../admin/functions.php:175
757
  msgid "successfully created!"
758
  msgstr ""
759
 
760
+ #: ../admin/functions.php:204
761
+ #: ../admin/functions.php:912
762
+ #: ../admin/manage-galleries.php:127
763
  msgid "Create new thumbnails"
764
  msgstr ""
765
 
766
+ #: ../admin/functions.php:207
767
  msgid " picture(s) successfully added"
768
  msgstr ""
769
 
770
+ #: ../admin/functions.php:254
771
+ #: ../admin/functions.php:327
772
+ #: ../admin/functions.php:377
773
+ #: ../admin/functions.php:470
774
  msgid "Object didn't contain correct data"
775
  msgstr ""
776
 
777
+ #: ../admin/functions.php:259
778
  msgid " is not writeable "
779
  msgstr ""
780
 
781
+ #: ../admin/functions.php:337
782
+ #: ../admin/functions.php:380
783
+ #: ../admin/functions.php:476
784
  msgid " is not writeable"
785
  msgstr ""
786
 
787
+ #: ../admin/functions.php:586
788
+ msgid "(Error : Couldn't not update data base)"
789
+ msgstr ""
790
+
791
+ #: ../admin/functions.php:593
792
+ msgid "(Error : Couldn't not update meta data)"
793
+ msgstr ""
794
+
795
+ #: ../admin/functions.php:602
796
+ msgid "(Error : Couldn't not find image)"
797
+ msgstr ""
798
+
799
+ #: ../admin/functions.php:732
800
  msgid "No valid URL path "
801
  msgstr ""
802
 
803
+ #: ../admin/functions.php:748
804
  msgid "Import via cURL failed."
805
  msgstr ""
806
 
807
+ #: ../admin/functions.php:763
808
  msgid "Uploaded file was no or a faulty zip file ! The server recognize : "
809
  msgstr ""
810
 
811
+ #: ../admin/functions.php:779
812
  msgid "Could not get a valid foldername"
813
  msgstr ""
814
 
815
+ #: ../admin/functions.php:790
816
  #, php-format
817
  msgid "Unable to create directory %s. Is its parent directory writable by the server?"
818
  msgstr ""
819
 
820
+ #: ../admin/functions.php:805
821
  msgid "Zip-File successfully unpacked"
822
  msgstr ""
823
 
824
+ #: ../admin/functions.php:844
825
+ #: ../admin/functions.php:962
826
  msgid "Failure in database, no gallery path set !"
827
  msgstr ""
828
 
829
+ #: ../admin/functions.php:868
830
+ #: ../admin/functions.php:956
831
  msgid "is no valid image file!"
832
  msgstr ""
833
 
834
+ #: ../admin/functions.php:882
835
+ #: ../admin/functions.php:1098
836
+ #: ../admin/functions.php:1171
837
  #, php-format
838
  msgid "Unable to write to directory %s. Is this directory writable by the server?"
839
  msgstr ""
840
 
841
+ #: ../admin/functions.php:889
842
+ #: ../admin/functions.php:979
843
  msgid "Error, the file could not moved to : "
844
  msgstr ""
845
 
846
+ #: ../admin/functions.php:894
847
+ #: ../admin/functions.php:983
848
  msgid "Error, the file permissions could not set"
849
  msgstr ""
850
 
851
+ #: ../admin/functions.php:916
852
  msgid " Image(s) successfully added"
853
  msgstr ""
854
 
855
+ #: ../admin/functions.php:945
856
  msgid "Invalid upload. Error Code : "
857
  msgstr ""
858
 
859
+ #: ../admin/functions.php:998
860
  msgid "Sorry, you have used your space allocation. Please delete some files to upload more files."
861
  msgstr ""
862
 
863
+ #: ../admin/functions.php:1038
864
  #, php-format
865
  msgid "SAFE MODE Restriction in effect! You need to create the folder <strong>%s</strong> manually"
866
  msgstr ""
867
 
868
+ #: ../admin/functions.php:1039
869
  #, php-format
870
  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"
871
  msgstr ""
872
 
873
+ #: ../admin/functions.php:1092
874
+ #: ../admin/functions.php:1165
875
  msgid "The destination gallery does not exist"
876
  msgstr ""
877
 
878
+ #: ../admin/functions.php:1123
879
  #, php-format
880
  msgid "Failed to move image %1$s to %2$s"
881
  msgstr ""
882
 
883
+ #: ../admin/functions.php:1141
884
  #, php-format
885
  msgid "Moved %1$s picture(s) to gallery : %2$s ."
886
  msgstr ""
887
 
888
+ #: ../admin/functions.php:1198
889
  #, php-format
890
  msgid "Failed to copy image %1$s to %2$s"
891
  msgstr ""
892
 
893
+ #: ../admin/functions.php:1210
894
  #, php-format
895
  msgid "Failed to copy database row for picture %s"
896
  msgstr ""
897
 
898
+ #: ../admin/functions.php:1218
899
  #, php-format
900
  msgid "Image %1$s (%2$s) copied as image %3$s (%4$s) &raquo; The file already existed in the destination gallery."
901
  msgstr ""
902
 
903
+ #: ../admin/functions.php:1221
904
  #, php-format
905
  msgid "Image %1$s (%2$s) copied as image %3$s (%4$s)"
906
  msgstr ""
907
 
908
+ #: ../admin/functions.php:1230
909
  #, php-format
910
  msgid "Copied %1$s picture(s) to gallery: %2$s ."
911
  msgstr ""
914
  msgid "Sorry, NextGEN Gallery works only with a role called administrator"
915
  msgstr ""
916
 
917
+ #: ../admin/install.php:108
918
  msgid "NextGEN Gallery : Tables could not created, please check your database settings"
919
  msgstr ""
920
 
926
  msgid "[Show picture list]"
927
  msgstr ""
928
 
929
+ #: ../admin/manage-galleries.php:20
 
930
  msgid "&laquo;"
931
  msgstr ""
932
 
933
+ #: ../admin/manage-galleries.php:21
 
934
  msgid "&raquo;"
935
  msgstr ""
936
 
937
+ #: ../admin/manage-galleries.php:62
938
+ msgid "No images selected"
939
+ msgstr ""
940
+
941
+ #: ../admin/manage-galleries.php:79
942
+ #, php-format
943
+ msgid ""
944
+ "You are about to start the bulk edit for %s galleries \n"
945
+ " \n"
946
+ " 'Cancel' to stop, 'OK' to proceed."
947
+ msgstr ""
948
+
949
+ #: ../admin/manage-galleries.php:107
950
  msgid "Gallery Overview"
951
  msgstr ""
952
 
953
+ #: ../admin/manage-galleries.php:110
954
+ #: ../admin/manage-galleries.php:113
 
 
955
  msgid "Search Images"
956
  msgstr ""
957
 
958
+ #: ../admin/manage-galleries.php:125
959
+ msgid "No action"
960
+ msgstr ""
961
+
962
+ #: ../admin/manage-galleries.php:126
963
+ msgid "Set watermark"
964
+ msgstr ""
965
+
966
+ #: ../admin/manage-galleries.php:128
967
+ msgid "Resize images"
968
+ msgstr ""
969
+
970
+ #: ../admin/manage-galleries.php:129
971
+ msgid "Import metadata"
972
+ msgstr ""
973
+
974
+ #: ../admin/manage-galleries.php:131
975
+ msgid "Apply"
976
+ msgstr ""
977
+
978
+ #: ../admin/manage-galleries.php:139
979
  #, php-format
980
  msgid "Displaying %s&#8211;%s of %s"
981
  msgstr ""
982
 
983
+ #: ../admin/manage-galleries.php:154
 
984
  msgid "ID"
985
  msgstr ""
986
 
987
+ #: ../admin/manage-galleries.php:156
 
 
988
  msgid "Description"
989
  msgstr ""
990
 
991
+ #: ../admin/manage-galleries.php:157
 
992
  msgid "Author"
993
  msgstr ""
994
 
995
+ #: ../admin/manage-galleries.php:158
996
  msgid "Page ID"
997
  msgstr ""
998
 
999
+ #: ../admin/manage-galleries.php:159
1000
  msgid "Quantity"
1001
  msgstr ""
1002
 
1003
+ #: ../admin/manage-galleries.php:160
1004
  msgid "Action"
1005
  msgstr ""
1006
 
1007
+ #: ../admin/manage-galleries.php:182
1008
  msgid "Edit"
1009
  msgstr ""
1010
 
1011
+ #: ../admin/manage-galleries.php:195
1012
  msgid "Delete this gallery ?"
1013
  msgstr ""
1014
 
1015
+ #: ../admin/manage-galleries.php:202
 
1016
  msgid "No entries found"
1017
  msgstr ""
1018
 
1019
+ #: ../admin/manage-galleries.php:246
1020
+ msgid "Resize Images to"
1021
+ msgstr ""
1022
+
1023
+ #: ../admin/manage-galleries.php:250
1024
+ msgid "Width x height (in pixel). NextGEN Gallery will keep ratio size"
1025
+ msgstr ""
1026
+
1027
+ #: ../admin/manage-galleries.php:274
1028
+ msgid "Width x height (in pixel)"
1029
+ msgstr ""
1030
+
1031
+ #: ../admin/manage-galleries.php:276
1032
+ msgid "These values are maximum values "
1033
+ msgstr ""
1034
+
1035
+ #: ../admin/manage-galleries.php:279
1036
+ msgid "Set fix dimension"
1037
+ msgstr ""
1038
+
1039
+ #: ../admin/manage-galleries.php:281
1040
+ msgid "Ignore the aspect ratio, no portrait thumbnails"
1041
+ msgstr ""
1042
+
1043
  #: ../admin/manage-images.php:31
1044
  msgid "Gallery not found."
1045
  msgstr ""
1048
  msgid "Sorry, you have no access here"
1049
  msgstr ""
1050
 
1051
+ #: ../admin/manage-images.php:165
 
 
 
 
1052
  #, php-format
1053
  msgid ""
1054
  "You are about to start the bulk edit for %s images \n"
1056
  " 'Cancel' to stop, 'OK' to proceed."
1057
  msgstr ""
1058
 
1059
+ #: ../admin/manage-images.php:181
1060
  #, php-format
1061
  msgid "Search results for &#8220;%s&#8221;"
1062
  msgstr ""
1063
 
1064
+ #: ../admin/manage-images.php:209
1065
+ #: ../admin/settings.php:274
1066
  msgid "Gallery settings"
1067
  msgstr ""
1068
 
1069
+ #: ../admin/manage-images.php:209
1070
  msgid "Click here for more settings"
1071
  msgstr ""
1072
 
1073
+ #: ../admin/manage-images.php:226
 
 
 
 
 
 
 
 
1074
  msgid "Preview image"
1075
  msgstr ""
1076
 
1077
+ #: ../admin/manage-images.php:229
1078
  msgid "No Picture"
1079
  msgstr ""
1080
 
1081
+ #: ../admin/manage-images.php:242
1082
  msgid "Path"
1083
  msgstr ""
1084
 
1085
+ #: ../admin/manage-images.php:259
1086
  msgid "Create new page"
1087
  msgstr ""
1088
 
1089
+ #: ../admin/manage-images.php:262
1090
  msgid "Main page (No parent)"
1091
  msgstr ""
1092
 
1093
+ #: ../admin/manage-images.php:265
1094
  msgid "Add page"
1095
  msgstr ""
1096
 
1097
+ #: ../admin/manage-images.php:272
1098
  msgid "Scan Folder for new images"
1099
  msgstr ""
1100
 
1101
+ #: ../admin/manage-images.php:273
1102
+ #: ../admin/manage-images.php:312
1103
+ #: ../admin/manage-images.php:461
1104
+ #: ../admin/settings.php:198
1105
+ #: ../admin/settings.php:227
1106
+ #: ../admin/settings.php:267
1107
+ #: ../admin/settings.php:349
1108
+ #: ../admin/settings.php:382
1109
+ #: ../admin/settings.php:489
1110
+ #: ../admin/settings.php:614
1111
  msgid "Save Changes"
1112
  msgstr ""
1113
 
1114
+ #: ../admin/manage-images.php:296
1115
+ msgid "Delete images"
 
 
 
 
 
 
 
 
1116
  msgstr ""
1117
 
1118
+ #: ../admin/manage-images.php:298
1119
+ msgid "Rotate images clockwise"
1120
  msgstr ""
1121
 
1122
+ #: ../admin/manage-images.php:299
1123
+ msgid "Rotate images counter-clockwise"
1124
  msgstr ""
1125
 
1126
+ #: ../admin/manage-images.php:300
1127
  msgid "Copy to..."
1128
  msgstr ""
1129
 
1130
+ #: ../admin/manage-images.php:301
1131
  msgid "Move to..."
1132
  msgstr ""
1133
 
1134
+ #: ../admin/manage-images.php:302
1135
  msgid "Add tags"
1136
  msgstr ""
1137
 
1138
+ #: ../admin/manage-images.php:303
1139
  msgid "Delete tags"
1140
  msgstr ""
1141
 
1142
+ #: ../admin/manage-images.php:304
1143
  msgid "Overwrite tags"
1144
  msgstr ""
1145
 
1146
+ #: ../admin/manage-images.php:309
1147
  msgid "Sort gallery"
1148
  msgstr ""
1149
 
1150
+ #: ../admin/manage-images.php:384
1151
+ msgid "pixel"
1152
+ msgstr ""
1153
+
1154
+ #: ../admin/manage-images.php:391
1155
  #, php-format
1156
  msgid "View \"%s\""
1157
  msgstr ""
1158
 
1159
+ #: ../admin/manage-images.php:391
1160
  msgid "View"
1161
  msgstr ""
1162
 
1163
+ #: ../admin/manage-images.php:392
1164
  msgid "Show Meta data"
1165
  msgstr ""
1166
 
1167
+ #: ../admin/manage-images.php:392
1168
  msgid "Meta"
1169
  msgstr ""
1170
 
1171
+ #: ../admin/manage-images.php:393
1172
  msgid "Customize thumbnail"
1173
  msgstr ""
1174
 
1175
+ #: ../admin/manage-images.php:393
1176
  msgid "Edit thumb"
1177
  msgstr ""
1178
 
1179
+ #: ../admin/manage-images.php:394
1180
+ msgid "Rotate"
1181
+ msgstr ""
1182
+
1183
+ #: ../admin/manage-images.php:395
1184
  #, php-format
1185
  msgid "Delete \"%s\""
1186
  msgstr ""
1187
 
1188
+ #: ../admin/manage-images.php:475
1189
  msgid "Enter the tags"
1190
  msgstr ""
1191
 
1192
+ #: ../admin/manage-images.php:499
1193
  msgid "Select the destination gallery:"
1194
  msgstr ""
1195
 
1196
+ #: ../admin/manage-images.php:600
1197
+ #: ../admin/media-upload.php:212
1198
  msgid "Thumbnail"
1199
  msgstr ""
1200
 
1201
+ #: ../admin/manage-images.php:602
1202
+ #: ../admin/manage-sort.php:74
1203
  msgid "Filename"
1204
  msgstr ""
1205
 
1206
+ #: ../admin/manage-images.php:604
1207
  msgid "Alt &amp; Title Text"
1208
  msgstr ""
1209
 
1210
+ #: ../admin/manage-images.php:605
1211
  msgid "Tags (comma separated list)"
1212
  msgstr ""
1213
 
1214
+ #: ../admin/manage-images.php:607
1215
  msgid "exclude"
1216
  msgstr ""
1217
 
1219
  msgid "Sort order changed"
1220
  msgstr ""
1221
 
1222
+ #: ../admin/manage-sort.php:59
1223
  msgid "Sort Gallery"
1224
  msgstr ""
1225
 
1226
+ #: ../admin/manage-sort.php:63
1227
  msgid "Update Sort Order"
1228
  msgstr ""
1229
 
1230
+ #: ../admin/manage-sort.php:66
1231
  msgid "Back to gallery"
1232
  msgstr ""
1233
 
1234
+ #: ../admin/manage-sort.php:71
1235
  msgid "Presort"
1236
  msgstr ""
1237
 
1238
+ #: ../admin/manage-sort.php:72
1239
  msgid "Unsorted"
1240
  msgstr ""
1241
 
1242
+ #: ../admin/manage-sort.php:73
1243
+ #: ../admin/settings.php:335
1244
  msgid "Image ID"
1245
  msgstr ""
1246
 
1247
+ #: ../admin/manage-sort.php:75
1248
+ #: ../admin/media-upload.php:187
1249
  msgid "Alt/Title text"
1250
  msgstr ""
1251
 
1252
+ #: ../admin/manage-sort.php:76
1253
  msgid "Date/Time"
1254
  msgstr ""
1255
 
1256
+ #: ../admin/manage-sort.php:77
1257
+ #: ../admin/settings.php:343
1258
  msgid "Ascending"
1259
  msgstr ""
1260
 
1261
+ #: ../admin/manage-sort.php:78
1262
+ #: ../admin/settings.php:344
1263
  msgid "Descending"
1264
  msgstr ""
1265
 
1266
+ #: ../admin/manage.php:87
1267
+ #: ../admin/manage.php:105
1268
  msgid "deleted successfully"
1269
  msgstr ""
1270
 
1271
+ #: ../admin/manage.php:105
 
1272
  msgid "Picture"
1273
  msgstr ""
1274
 
1275
+ #: ../admin/manage.php:114
1276
+ msgid "Operation successful. Please clear your browser cache."
1277
  msgstr ""
1278
 
1279
+ #: ../admin/manage.php:207
1280
+ #: ../admin/manage.php:210
1281
+ msgid "Rotate images"
1282
  msgstr ""
1283
 
1284
+ #: ../admin/manage.php:228
1285
+ msgid "Pictures deleted successfully "
1286
  msgstr ""
1287
 
1288
+ #: ../admin/manage.php:324
1289
  msgid "Tags changed"
1290
  msgstr ""
1291
 
1292
+ #: ../admin/manage.php:351
1293
  msgid "Update successful"
1294
  msgstr ""
1295
 
1296
+ #: ../admin/manage.php:385
1297
  msgid "New gallery page ID"
1298
  msgstr ""
1299
 
1300
+ #: ../admin/manage.php:385
1301
  msgid "created"
1302
  msgstr ""
1303
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1304
  #: ../admin/media-upload.php:132
 
1305
  msgid "No gallery"
1306
  msgstr ""
1307
 
1326
  msgstr ""
1327
 
1328
  #: ../admin/media-upload.php:198
1329
+ #: ../admin/settings.php:367
1330
  msgid "None"
1331
  msgstr ""
1332
 
1333
  #: ../admin/media-upload.php:200
 
1334
  msgid "Left"
1335
  msgstr ""
1336
 
1337
  #: ../admin/media-upload.php:202
 
1338
  msgid "Center"
1339
  msgstr ""
1340
 
1341
  #: ../admin/media-upload.php:204
 
1342
  msgid "Right"
1343
  msgstr ""
1344
 
1345
  #: ../admin/media-upload.php:208
1346
+ #: ../admin/settings.php:471
1347
  msgid "Size"
1348
  msgstr ""
1349
 
1363
  msgid "Save all changes"
1364
  msgstr ""
1365
 
1366
+ #: ../admin/overview.php:14
 
1367
  msgid "NextGEN Gallery Overview"
1368
  msgstr ""
1369
 
1370
+ #: ../admin/overview.php:104
1371
  msgid "Thanks to all donators..."
1372
  msgstr ""
1373
 
1374
+ #: ../admin/overview.php:126
1375
  msgid "View all"
1376
  msgstr ""
1377
 
1378
+ #: ../admin/overview.php:164
1379
  #, php-format
1380
  msgid "Newsfeed could not be loaded. Check the <a href=\"%s\">front page</a> to check for updates."
1381
  msgstr ""
1382
 
1383
+ #: ../admin/overview.php:184
1384
  msgid "At a Glance"
1385
  msgstr ""
1386
 
1387
+ #: ../admin/overview.php:190
1388
  msgid "Image"
1389
  msgid_plural "Images"
1390
  msgstr[0] ""
1391
  msgstr[1] ""
1392
 
1393
+ #: ../admin/overview.php:202
1394
+ msgid "Album"
1395
+ msgid_plural "Albums"
1396
+ msgstr[0] ""
1397
+ msgstr[1] ""
1398
+
1399
+ #: ../admin/overview.php:211
1400
  msgid "Upload pictures"
1401
  msgstr ""
1402
 
1403
+ #: ../admin/overview.php:212
1404
  msgid "Here you can control your images, galleries and albums."
1405
  msgstr ""
1406
 
1407
+ #: ../admin/overview.php:216
1408
  msgid "Gallery Administrator"
1409
  msgstr ""
1410
 
1411
+ #: ../admin/overview.php:216
1412
  msgid "Gallery Editor"
1413
  msgstr ""
1414
 
1415
+ #: ../admin/overview.php:217
1416
  #, php-format
1417
  msgid "You currently have %s rights."
1418
  msgstr ""
1419
 
1420
+ #: ../admin/overview.php:224
1421
  msgid "Welcome to NextGEN Gallery !"
1422
  msgstr ""
1423
 
1424
+ #: ../admin/overview.php:225
1425
  msgid "Latest News"
1426
  msgstr ""
1427
 
1428
+ #: ../admin/overview.php:226
1429
  msgid "Recent donators"
1430
  msgstr ""
1431
 
1432
+ #: ../admin/overview.php:227
1433
  msgid "Server Settings"
1434
  msgstr ""
1435
 
1436
+ #: ../admin/overview.php:228
1437
+ msgid "Related plugins"
1438
+ msgstr ""
1439
+
1440
+ #: ../admin/overview.php:229
1441
  msgid "Graphic Library"
1442
  msgstr ""
1443
 
1444
+ #: ../admin/overview.php:249
1445
  msgid "No GD support"
1446
  msgstr ""
1447
 
1448
+ #: ../admin/overview.php:261
1449
+ #: ../admin/overview.php:307
1450
+ #: ../admin/overview.php:310
1451
  #: ../admin/overview.php:313
 
 
1452
  msgid "Yes"
1453
  msgstr ""
1454
 
1455
+ #: ../admin/overview.php:263
1456
+ #: ../admin/overview.php:308
1457
+ #: ../admin/overview.php:311
1458
  #: ../admin/overview.php:314
 
 
1459
  msgid "No"
1460
  msgstr ""
1461
 
1462
+ #: ../admin/overview.php:281
1463
  msgid "Not set"
1464
  msgstr ""
1465
 
1466
+ #: ../admin/overview.php:283
1467
+ #: ../admin/overview.php:286
1468
  msgid "On"
1469
  msgstr ""
1470
 
1471
+ #: ../admin/overview.php:284
1472
+ #: ../admin/overview.php:287
1473
  msgid "Off"
1474
  msgstr ""
1475
 
1476
+ #: ../admin/overview.php:290
1477
+ #: ../admin/overview.php:293
1478
+ #: ../admin/overview.php:296
1479
  #: ../admin/overview.php:299
1480
  #: ../admin/overview.php:302
1481
  #: ../admin/overview.php:305
 
 
1482
  msgid "N/A"
1483
  msgstr ""
1484
 
1485
+ #: ../admin/overview.php:304
1486
  msgid " MByte"
1487
  msgstr ""
1488
 
1489
+ #: ../admin/overview.php:317
1490
  msgid "Operating System"
1491
  msgstr ""
1492
 
1493
+ #: ../admin/overview.php:318
1494
  msgid "Server"
1495
  msgstr ""
1496
 
1497
+ #: ../admin/overview.php:319
1498
  msgid "Memory usage"
1499
  msgstr ""
1500
 
1501
+ #: ../admin/overview.php:320
1502
  msgid "MYSQL Version"
1503
  msgstr ""
1504
 
1505
+ #: ../admin/overview.php:321
1506
  msgid "SQL Mode"
1507
  msgstr ""
1508
 
1509
+ #: ../admin/overview.php:322
1510
  msgid "PHP Version"
1511
  msgstr ""
1512
 
1513
+ #: ../admin/overview.php:323
1514
  msgid "PHP Safe Mode"
1515
  msgstr ""
1516
 
1517
+ #: ../admin/overview.php:324
1518
  msgid "PHP Allow URL fopen"
1519
  msgstr ""
1520
 
1521
+ #: ../admin/overview.php:325
1522
  msgid "PHP Memory Limit"
1523
  msgstr ""
1524
 
1525
+ #: ../admin/overview.php:326
1526
  msgid "PHP Max Upload Size"
1527
  msgstr ""
1528
 
1529
+ #: ../admin/overview.php:327
1530
  msgid "PHP Max Post Size"
1531
  msgstr ""
1532
 
1533
+ #: ../admin/overview.php:328
1534
+ msgid "PHP Output Buffer Size"
1535
+ msgstr ""
1536
+
1537
+ #: ../admin/overview.php:329
1538
  msgid "PHP Max Script Execute Time"
1539
  msgstr ""
1540
 
1541
+ #: ../admin/overview.php:330
1542
  msgid "PHP Exif support"
1543
  msgstr ""
1544
 
1545
+ #: ../admin/overview.php:331
1546
  msgid "PHP IPTC support"
1547
  msgstr ""
1548
 
1549
+ #: ../admin/overview.php:332
1550
  msgid "PHP XML support"
1551
  msgstr ""
1552
 
1553
+ #: ../admin/overview.php:344
1554
+ msgid "NextGEN Gallery contains some functions which are only available under PHP 5.2. You are using the old PHP 4 version, upgrade now! It's no longer supported by the PHP group. Many shared hosting providers offer both PHP 4 and PHP 5, running simultaneously. Ask your provider if they can do this."
1555
+ msgstr ""
1556
+
1557
+ #: ../admin/overview.php:403
1558
  msgid "Storage Space"
1559
  msgstr ""
1560
 
1561
+ #: ../admin/overview.php:406
1562
  msgid "Upload Space Used:"
1563
  msgstr ""
1564
 
1565
+ #: ../admin/overview.php:412
1566
  msgid "Upload Space Remaining:"
1567
  msgstr ""
1568
 
1569
+ #: ../admin/overview.php:554
1570
+ msgid "Install"
1571
+ msgstr ""
1572
+
1573
  #: ../admin/roles.php:22
1574
  msgid "Updated capabilities"
1575
  msgstr ""
1626
  msgid "Update capabilities"
1627
  msgstr ""
1628
 
1629
+ #: ../admin/rotate.php:55
1630
+ msgid "Image rotated"
1631
+ msgstr ""
1632
+
1633
+ #: ../admin/rotate.php:56
1634
+ msgid "Error rotating thumbnail"
1635
+ msgstr ""
1636
+
1637
+ #: ../admin/rotate.php:81
1638
+ msgid "90&deg; clockwise"
1639
+ msgstr ""
1640
+
1641
+ #: ../admin/rotate.php:82
1642
+ msgid "90&deg; anticlockwise"
1643
+ msgstr ""
1644
+
1645
+ #: ../admin/rotate.php:83
1646
+ msgid "Flip vertically"
1647
+ msgstr ""
1648
+
1649
+ #: ../admin/rotate.php:84
1650
+ msgid "Flip horizontally"
1651
+ msgstr ""
1652
+
1653
  #: ../admin/settings.php:61
1654
  msgid "Cache cleared"
1655
  msgstr ""
1656
 
1657
+ #: ../admin/settings.php:126
1658
+ #: ../admin/settings.php:138
1659
  msgid "General Options"
1660
  msgstr ""
1661
 
1662
+ #: ../admin/settings.php:127
1663
+ #: ../admin/settings.php:306
1664
  msgid "Thumbnails"
1665
  msgstr ""
1666
 
1667
+ #: ../admin/settings.php:128
1668
  msgid "Images"
1669
  msgstr ""
1670
 
1671
+ #: ../admin/settings.php:130
1672
+ #: ../admin/settings.php:356
1673
  msgid "Effects"
1674
  msgstr ""
1675
 
1676
+ #: ../admin/settings.php:131
1677
+ #: ../admin/settings.php:395
 
1678
  msgid "Watermark"
1679
  msgstr ""
1680
 
1681
+ #: ../admin/settings.php:132
1682
+ #: ../admin/settings.php:307
1683
+ #: ../admin/settings.php:499
 
1684
  msgid "Slideshow"
1685
  msgstr ""
1686
 
1687
+ #: ../admin/settings.php:144
1688
+ #: ../admin/wpmu.php:47
1689
  msgid "Gallery path"
1690
  msgstr ""
1691
 
1692
+ #: ../admin/settings.php:146
1693
  msgid "This is the default path for all galleries"
1694
  msgstr ""
1695
 
1696
+ #: ../admin/settings.php:149
1697
  msgid "Delete image files"
1698
  msgstr ""
1699
 
1700
+ #: ../admin/settings.php:151
1701
  msgid "Delete files, when removing a gallery in the database"
1702
  msgstr ""
1703
 
1704
+ #: ../admin/settings.php:154
1705
  msgid "Activate permalinks"
1706
  msgstr ""
1707
 
1708
+ #: ../admin/settings.php:156
1709
  msgid "When you activate this option, you need to update your permalink structure one time."
1710
  msgstr ""
1711
 
1712
+ #: ../admin/settings.php:159
1713
  msgid "Select graphic library"
1714
  msgstr ""
1715
 
1716
+ #: ../admin/settings.php:160
1717
  msgid "GD Library"
1718
  msgstr ""
1719
 
1720
+ #: ../admin/settings.php:161
1721
  msgid "ImageMagick (Experimental). Path to the library :"
1722
  msgstr ""
1723
 
1724
+ #: ../admin/settings.php:166
1725
  msgid "Activate Media RSS feed"
1726
  msgstr ""
1727
 
1728
+ #: ../admin/settings.php:168
1729
  msgid "A RSS feed will be added to you blog header. Useful for CoolIris/PicLens"
1730
  msgstr ""
1731
 
1732
+ #: ../admin/settings.php:171
1733
  msgid "Activate PicLens/CoolIris support"
1734
  msgstr ""
1735
 
1736
+ #: ../admin/settings.php:173
1737
  msgid "When you activate this option, some javascript is added to your site footer. Make sure that wp_footer is called in your theme."
1738
  msgstr ""
1739
 
1740
+ #: ../admin/settings.php:176
1741
  msgid "Tags / Categories"
1742
  msgstr ""
1743
 
1744
+ #: ../admin/settings.php:179
1745
  msgid "Activate related images"
1746
  msgstr ""
1747
 
1748
+ #: ../admin/settings.php:181
1749
  msgid "This option will append related images to every post"
1750
  msgstr ""
1751
 
1752
+ #: ../admin/settings.php:185
1753
  msgid "Match with"
1754
  msgstr ""
1755
 
1756
+ #: ../admin/settings.php:186
1757
  msgid "Categories"
1758
  msgstr ""
1759
 
1760
+ #: ../admin/settings.php:191
1761
  msgid "Max. number of images"
1762
  msgstr ""
1763
 
1764
+ #: ../admin/settings.php:193
1765
  msgid "0 will show all images"
1766
  msgstr ""
1767
 
1768
+ #: ../admin/settings.php:197
1769
+ #: ../admin/settings.php:226
1770
+ #: ../admin/settings.php:266
1771
+ #: ../admin/settings.php:348
1772
+ #: ../admin/settings.php:381
1773
+ #: ../admin/settings.php:613
1774
+ msgid "More settings"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1775
  msgstr ""
1776
 
1777
+ #: ../admin/settings.php:205
1778
+ msgid "Thumbnail settings"
1779
  msgstr ""
1780
 
1781
+ #: ../admin/settings.php:209
1782
+ msgid "Please note : If you change the settings, you need to recreate the thumbnails under -> Manage Gallery ."
1783
  msgstr ""
1784
 
1785
+ #: ../admin/settings.php:222
1786
  msgid "Thumbnail quality"
1787
  msgstr ""
1788
 
1789
+ #: ../admin/settings.php:234
1790
  msgid "Image settings"
1791
  msgstr ""
1792
 
1793
+ #: ../admin/settings.php:240
1794
  msgid "Resize Images"
1795
  msgstr ""
1796
 
1797
+ #: ../admin/settings.php:247
 
 
 
 
1798
  msgid "Image quality"
1799
  msgstr ""
1800
 
1801
+ #: ../admin/settings.php:252
1802
  msgid "Single picture"
1803
  msgstr ""
1804
 
1805
+ #: ../admin/settings.php:255
1806
  msgid "Cache single pictures"
1807
  msgstr ""
1808
 
1809
+ #: ../admin/settings.php:258
1810
  msgid "Creates a file for each singlepic settings. Reduce the CPU load"
1811
  msgstr ""
1812
 
1813
+ #: ../admin/settings.php:261
1814
  msgid "Clear cache folder"
1815
  msgstr ""
1816
 
1817
+ #: ../admin/settings.php:263
1818
  msgid "Proceed now"
1819
  msgstr ""
1820
 
1821
+ #: ../admin/settings.php:280
1822
  msgid "Deactivate gallery page link"
1823
  msgstr ""
1824
 
1825
+ #: ../admin/settings.php:282
1826
  msgid "The album will not link to a gallery subpage. The gallery is shown on the same page."
1827
  msgstr ""
1828
 
1829
+ #: ../admin/settings.php:286
1830
  msgid "Number of images per page"
1831
  msgstr ""
1832
 
1833
+ #: ../admin/settings.php:288
1834
  msgid "0 will disable pagination, all images on one page"
1835
  msgstr ""
1836
 
1837
+ #: ../admin/settings.php:292
1838
  msgid "Number of columns"
1839
  msgstr ""
1840
 
1841
+ #: ../admin/settings.php:294
1842
  msgid "0 will display as much as possible based on the width of your theme. Setting normally only required for captions below the images"
1843
  msgstr ""
1844
 
1845
+ #: ../admin/settings.php:298
1846
  msgid "Integrate slideshow"
1847
  msgstr ""
1848
 
1849
+ #: ../admin/settings.php:305
1850
  msgid "Show first"
1851
  msgstr ""
1852
 
1853
+ #: ../admin/settings.php:311
1854
  msgid "Show ImageBrowser"
1855
  msgstr ""
1856
 
1857
+ #: ../admin/settings.php:313
1858
  msgid "The gallery will open the ImageBrowser instead the effect."
1859
  msgstr ""
1860
 
1861
+ #: ../admin/settings.php:317
1862
+ msgid "Add hidden images"
1863
+ msgstr ""
1864
+
1865
+ #: ../admin/settings.php:319
1866
+ msgid "If pagination is used, this option will still show all images in the modal window (Thickbox, Lightbox etc.). Note : This increase the page load"
1867
+ msgstr ""
1868
+
1869
+ #: ../admin/settings.php:323
1870
+ msgid "Enable AJAX pagination"
1871
+ msgstr ""
1872
+
1873
+ #: ../admin/settings.php:325
1874
+ msgid "Browse images without reload the page. Note : Work only in combination with Shutter effect"
1875
+ msgstr ""
1876
+
1877
+ #: ../admin/settings.php:329
1878
  msgid "Sort options"
1879
  msgstr ""
1880
 
1881
+ #: ../admin/settings.php:332
1882
  msgid "Sort thumbnails"
1883
  msgstr ""
1884
 
1885
+ #: ../admin/settings.php:334
1886
  msgid "Custom order"
1887
  msgstr ""
1888
 
1889
+ #: ../admin/settings.php:336
1890
  msgid "File name"
1891
  msgstr ""
1892
 
1893
+ #: ../admin/settings.php:337
1894
  msgid "Alt / Title text"
1895
  msgstr ""
1896
 
1897
+ #: ../admin/settings.php:338
1898
  msgid "Date / Time"
1899
  msgstr ""
1900
 
1901
+ #: ../admin/settings.php:342
1902
  msgid "Sort direction"
1903
  msgstr ""
1904
 
1905
+ #: ../admin/settings.php:360
1906
+ msgid "Here you can select the thumbnail effect, NextGEN Gallery will integrate the required HTML code in the images. Please note that only the Shutter and Thickbox effect will automatic added to your theme."
1907
  msgstr ""
1908
 
1909
+ #: ../admin/settings.php:361
1910
  msgid "With the placeholder"
1911
  msgstr ""
1912
 
1913
+ #: ../admin/settings.php:361
1914
  msgid "you can activate a navigation through the images (depend on the effect). Change the code line only , when you use a different thumbnail effect or you know what you do."
1915
  msgstr ""
1916
 
1917
+ #: ../admin/settings.php:364
1918
  msgid "JavaScript Thumbnail effect"
1919
  msgstr ""
1920
 
1921
+ #: ../admin/settings.php:368
1922
  msgid "Thickbox"
1923
  msgstr ""
1924
 
1925
+ #: ../admin/settings.php:369
1926
  msgid "Lightbox"
1927
  msgstr ""
1928
 
1929
+ #: ../admin/settings.php:370
1930
  msgid "Highslide"
1931
  msgstr ""
1932
 
1933
+ #: ../admin/settings.php:371
1934
  msgid "Shutter"
1935
  msgstr ""
1936
 
1937
+ #: ../admin/settings.php:372
1938
  msgid "Custom"
1939
  msgstr ""
1940
 
1941
+ #: ../admin/settings.php:377
1942
  msgid "Link Code line"
1943
  msgstr ""
1944
 
1945
+ #: ../admin/settings.php:396
1946
  msgid "Please note : You can only activate the watermark under -> Manage Gallery . This action cannot be undone."
1947
  msgstr ""
1948
 
1949
+ #: ../admin/settings.php:401
1950
  msgid "Preview"
1951
  msgstr ""
1952
 
1953
+ #: ../admin/settings.php:403
1954
+ #: ../admin/settings.php:408
1955
  msgid "Position"
1956
  msgstr ""
1957
 
1958
+ #: ../admin/settings.php:428
1959
  msgid "Offset"
1960
  msgstr ""
1961
 
1962
+ #: ../admin/settings.php:444
1963
  msgid "Use image as watermark"
1964
  msgstr ""
1965
 
1966
+ #: ../admin/settings.php:447
1967
  msgid "URL to file"
1968
  msgstr ""
1969
 
1970
+ #: ../admin/settings.php:449
1971
  msgid "The accessing of URL files is disabled at your server (allow_url_fopen)"
1972
  msgstr ""
1973
 
1974
+ #: ../admin/settings.php:452
1975
  msgid "Use text as watermark"
1976
  msgstr ""
1977
 
1978
+ #: ../admin/settings.php:455
1979
  msgid "Font"
1980
  msgstr ""
1981
 
1982
+ #: ../admin/settings.php:464
1983
  msgid "This function will not work, cause you need the FreeType library"
1984
  msgstr ""
1985
 
1986
+ #: ../admin/settings.php:466
1987
  msgid "You can upload more fonts in the folder <strong>nggallery/fonts</strong>"
1988
  msgstr ""
1989
 
1990
+ #: ../admin/settings.php:475
1991
  msgid "Color"
1992
  msgstr ""
1993
 
1994
+ #: ../admin/settings.php:477
1995
  msgid "(hex w/o #)"
1996
  msgstr ""
1997
 
1998
+ #: ../admin/settings.php:480
1999
  msgid "Text"
2000
  msgstr ""
2001
 
2002
+ #: ../admin/settings.php:484
2003
  msgid "Opaque"
2004
  msgstr ""
2005
 
2006
+ #: ../admin/settings.php:504
2007
  msgid "The path to imagerotator.swf is not defined, the slideshow will not work."
2008
  msgstr ""
2009
 
2010
+ #: ../admin/settings.php:505
2011
  msgid "If you would like to use the JW Image Rotatator, please download the player <a href=\"http://www.longtailvideo.com/players/jw-image-rotator/\" target=\"_blank\" >here</a> and upload it to your Upload folder (Default is wp-content/uploads)."
2012
  msgstr ""
2013
 
2014
+ #: ../admin/settings.php:510
2015
  msgid "The settings are used in the JW Image Rotator Version"
2016
  msgstr ""
2017
 
2018
+ #: ../admin/settings.php:511
2019
  msgid "See more information for the Flash Player on the web page"
2020
  msgstr ""
2021
 
2022
+ #: ../admin/settings.php:515
2023
  msgid "Path to the Imagerotator (URL)"
2024
  msgstr ""
2025
 
2026
+ #: ../admin/settings.php:518
2027
  msgid "Search now"
2028
  msgstr ""
2029
 
2030
+ #: ../admin/settings.php:519
2031
  msgid "Press the button to search automatic for the imagerotator, if you uploaded it to wp-content/uploads or a subfolder"
2032
  msgstr ""
2033
 
2034
+ #: ../admin/settings.php:523
2035
  msgid "Default size (W x H)"
2036
  msgstr ""
2037
 
2038
+ #: ../admin/settings.php:528
2039
  msgid "Shuffle mode"
2040
  msgstr ""
2041
 
2042
+ #: ../admin/settings.php:532
2043
  msgid "Show next image on click"
2044
  msgstr ""
2045
 
2046
+ #: ../admin/settings.php:536
2047
  msgid "Show navigation bar"
2048
  msgstr ""
2049
 
2050
+ #: ../admin/settings.php:540
2051
  msgid "Show loading icon"
2052
  msgstr ""
2053
 
2054
+ #: ../admin/settings.php:544
2055
  msgid "Use watermark logo"
2056
  msgstr ""
2057
 
2058
+ #: ../admin/settings.php:546
2059
  msgid "You can change the logo at the watermark settings"
2060
  msgstr ""
2061
 
2062
+ #: ../admin/settings.php:549
2063
  msgid "Stretch image"
2064
  msgstr ""
2065
 
2066
+ #: ../admin/settings.php:552
2067
  msgid "true"
2068
  msgstr ""
2069
 
2070
+ #: ../admin/settings.php:553
2071
  msgid "false"
2072
  msgstr ""
2073
 
2074
+ #: ../admin/settings.php:554
2075
  msgid "fit"
2076
  msgstr ""
2077
 
2078
+ #: ../admin/settings.php:555
2079
  msgid "none"
2080
  msgstr ""
2081
 
2082
+ #: ../admin/settings.php:560
2083
  msgid "Duration time"
2084
  msgstr ""
2085
 
2086
+ #: ../admin/settings.php:561
2087
  msgid "sec."
2088
  msgstr ""
2089
 
2090
+ #: ../admin/settings.php:564
2091
  msgid "Transition / Fade effect"
2092
  msgstr ""
2093
 
2094
+ #: ../admin/settings.php:567
2095
  msgid "fade"
2096
  msgstr ""
2097
 
2098
+ #: ../admin/settings.php:568
2099
  msgid "bgfade"
2100
  msgstr ""
2101
 
2102
+ #: ../admin/settings.php:569
2103
  msgid "slowfade"
2104
  msgstr ""
2105
 
2106
+ #: ../admin/settings.php:570
2107
  msgid "circles"
2108
  msgstr ""
2109
 
2110
+ #: ../admin/settings.php:571
2111
  msgid "bubbles"
2112
  msgstr ""
2113
 
2114
+ #: ../admin/settings.php:572
2115
  msgid "blocks"
2116
  msgstr ""
2117
 
2118
+ #: ../admin/settings.php:573
2119
  msgid "fluids"
2120
  msgstr ""
2121
 
2122
+ #: ../admin/settings.php:574
2123
  msgid "flash"
2124
  msgstr ""
2125
 
2126
+ #: ../admin/settings.php:575
2127
  msgid "lines"
2128
  msgstr ""
2129
 
2130
+ #: ../admin/settings.php:576
2131
  msgid "random"
2132
  msgstr ""
2133
 
2134
+ #: ../admin/settings.php:580
2135
  msgid "Use slow zooming effect"
2136
  msgstr ""
2137
 
2138
+ #: ../admin/settings.php:584
2139
  msgid "Background Color"
2140
  msgstr ""
2141
 
2142
+ #: ../admin/settings.php:589
2143
  msgid "Texts / Buttons Color"
2144
  msgstr ""
2145
 
2146
+ #: ../admin/settings.php:594
2147
  msgid "Rollover / Active Color"
2148
  msgstr ""
2149
 
2150
+ #: ../admin/settings.php:599
2151
  msgid "Screen Color"
2152
  msgstr ""
2153
 
2154
+ #: ../admin/settings.php:604
2155
  msgid "Background music (URL)"
2156
  msgstr ""
2157
 
2158
+ #: ../admin/settings.php:608
2159
  msgid "Try XHTML validation (with CDATA)"
2160
  msgstr ""
2161
 
2162
+ #: ../admin/settings.php:610
2163
  msgid "Important : Could causes problem at some browser. Please recheck your page."
2164
  msgstr ""
2165
 
2226
  "Choose [Cancel] to Stop, [OK] to Uninstall.\\n"
2227
  msgstr ""
2228
 
2229
+ #: ../admin/showmeta.php:28
2230
+ msgid "Meta Data"
2231
  msgstr ""
2232
 
2233
+ #: ../admin/showmeta.php:33
2234
+ #: ../admin/showmeta.php:59
2235
+ #: ../admin/showmeta.php:84
2236
+ #: ../admin/showmeta.php:108
2237
  msgid "Tag"
2238
  msgstr ""
2239
 
2240
+ #: ../admin/showmeta.php:34
2241
+ #: ../admin/showmeta.php:60
2242
+ #: ../admin/showmeta.php:85
2243
+ #: ../admin/showmeta.php:109
2244
  msgid "Value"
2245
  msgstr ""
2246
 
2247
+ #: ../admin/showmeta.php:48
2248
+ msgid "No meta data saved"
2249
+ msgstr ""
2250
+
2251
+ #: ../admin/showmeta.php:54
2252
+ msgid "EXIF Data"
2253
+ msgstr ""
2254
+
2255
+ #: ../admin/showmeta.php:73
2256
  msgid "No exif data"
2257
  msgstr ""
2258
 
2259
+ #: ../admin/showmeta.php:80
2260
  msgid "IPTC Data"
2261
  msgstr ""
2262
 
2263
+ #: ../admin/showmeta.php:104
2264
  msgid "XMP Data"
2265
  msgstr ""
2266
 
2276
  msgid "CSS file successfully updated"
2277
  msgstr ""
2278
 
2279
+ #: ../admin/style.php:89
2280
  msgid "Style Editor"
2281
  msgstr ""
2282
 
2283
+ #: ../admin/style.php:93
2284
  msgid "Activate and use style sheet:"
2285
  msgstr ""
2286
 
2287
+ #: ../admin/style.php:113
2288
  msgid "Activate"
2289
  msgstr ""
2290
 
2291
+ #: ../admin/style.php:123
2292
  #, php-format
2293
  msgid "Editing <strong>%s</strong>"
2294
  msgstr ""
2295
 
2296
+ #: ../admin/style.php:125
2297
  #, php-format
2298
  msgid "Browsing <strong>%s</strong>"
2299
  msgstr ""
2300
 
2301
+ #: ../admin/style.php:135
2302
  msgid "Version"
2303
  msgstr ""
2304
 
2305
+ #: ../admin/style.php:138
2306
  msgid "Tip : Copy your stylesheet (nggallery.css) to your theme folder, so it will be not lost during a upgrade"
2307
  msgstr ""
2308
 
2309
+ #: ../admin/style.php:140
2310
  msgid "Your theme contain a NextGEN Gallery stylesheet (nggallery.css), this file will be used"
2311
  msgstr ""
2312
 
2313
+ #: ../admin/style.php:142
2314
+ msgid "Tip No. 2: Use the color picker below to help you find the right color scheme for your gallery!"
2315
+ msgstr ""
2316
+
2317
+ #: ../admin/style.php:158
2318
  msgid "Update File"
2319
  msgstr ""
2320
 
2321
+ #: ../admin/style.php:161
2322
  msgid "If this file were writable you could edit it."
2323
  msgstr ""
2324
 
2325
+ #: ../admin/style.php:166
2326
  msgid "Oops, no such file exists! Double check the name and try again, merci."
2327
  msgstr ""
2328
 
2434
  msgid "Upgrade database structure..."
2435
  msgstr ""
2436
 
2437
+ #: ../admin/upgrade.php:98
2438
+ #: ../admin/upgrade.php:108
2439
+ #: ../admin/upgrade.php:115
2440
+ #: ../admin/upgrade.php:126
2441
+ #: ../admin/upgrade.php:140
2442
  msgid "finished"
2443
  msgstr ""
2444
 
2445
+ #: ../admin/upgrade.php:106
2446
  msgid "Update file structure..."
2447
  msgstr ""
2448
 
2449
+ #: ../admin/upgrade.php:113
2450
  msgid "Import date and time information..."
2451
  msgstr ""
2452
 
2453
+ #: ../admin/upgrade.php:121
2454
  msgid "Move imagerotator to new location..."
2455
  msgstr ""
2456
 
2457
+ #: ../admin/upgrade.php:132
2458
+ msgid "Update settings..."
2459
+ msgstr ""
2460
+
2461
+ #: ../admin/upgrade.php:205
2462
  msgid "Some folders/files could not renamed, please recheck the permission and rescan the folder in the manage gallery section."
2463
  msgstr ""
2464
 
2465
+ #: ../admin/upgrade.php:207
2466
  msgid "Rename failed"
2467
  msgstr ""
2468
 
2469
+ #: ../admin/upgrade.php:302
2470
+ #: ../admin/upgrade.php:321
2471
  msgid "Upgrade NextGEN Gallery"
2472
  msgstr ""
2473
 
2474
+ #: ../admin/upgrade.php:303
2475
  msgid "The script detect that you upgrade from a older version."
2476
  msgstr ""
2477
 
2478
+ #: ../admin/upgrade.php:304
2479
  msgid "Your database tables for NextGEN Gallery is out-of-date, and must be upgraded before you can continue."
2480
  msgstr ""
2481
 
2482
+ #: ../admin/upgrade.php:305
2483
  msgid "If you would like to downgrade later, please make first a complete backup of your database and the images."
2484
  msgstr ""
2485
 
2486
+ #: ../admin/upgrade.php:306
2487
  msgid "The upgrade process may take a while, so please be patient."
2488
  msgstr ""
2489
 
2490
+ #: ../admin/upgrade.php:307
2491
  msgid "Start upgrade now"
2492
  msgstr ""
2493
 
2494
+ #: ../admin/upgrade.php:323
2495
  msgid "Upgrade sucessful"
2496
  msgstr ""
2497
 
2498
+ #: ../admin/upgrade.php:324
2499
  msgid "Continue"
2500
  msgstr ""
2501
 
2507
  msgid "General WordPress MU Settings"
2508
  msgstr ""
2509
 
2510
+ #: ../admin/wpmu.php:49
2511
  msgid "This is the default path for all blogs. With the placeholder %BLOG_ID% you can organize the folder structure better. The path must end with a /."
2512
  msgstr ""
2513
 
2514
+ #: ../admin/wpmu.php:52
2515
  msgid "Enable upload quota check"
2516
  msgstr ""
2517
 
2518
+ #: ../admin/wpmu.php:54
2519
  msgid "Should work if the gallery is bellow the blog.dir"
2520
  msgstr ""
2521
 
2522
+ #: ../admin/wpmu.php:58
2523
  msgid "Enable zip upload option"
2524
  msgstr ""
2525
 
2526
+ #: ../admin/wpmu.php:60
2527
  msgid "Allow users to upload zip folders."
2528
  msgstr ""
2529
 
2530
+ #: ../admin/wpmu.php:64
2531
  msgid "Enable style selection"
2532
  msgstr ""
2533
 
2534
+ #: ../admin/wpmu.php:66
2535
  msgid "Allow users to choose a style for the gallery."
2536
  msgstr ""
2537
 
2538
+ #: ../admin/wpmu.php:70
2539
  msgid "Enable roles/capabilities"
2540
  msgstr ""
2541
 
2542
+ #: ../admin/wpmu.php:72
2543
  msgid "Allow users to change the roles for other blog authors."
2544
  msgstr ""
2545
 
2546
+ #: ../admin/wpmu.php:76
2547
  msgid "Default style"
2548
  msgstr ""
2549
 
2550
+ #: ../admin/wpmu.php:93
2551
  msgid "Choose the default style for the galleries."
2552
  msgstr ""
2553
 
2612
  msgid "Insert"
2613
  msgstr ""
2614
 
2615
+ #: ../lib/core.php:368
2616
  #, php-format
2617
  msgid "Note : Based on your server memory limit you should not upload larger images then <strong>%d x %d</strong> pixel"
2618
  msgstr ""
2619
 
2620
+ #: ../lib/meta.php:123
2621
  msgid " mm"
2622
  msgstr ""
2623
 
2624
+ #: ../lib/meta.php:129
2625
  msgid " sec"
2626
  msgstr ""
2627
 
2628
+ #: ../lib/meta.php:133
2629
+ msgid "Fired"
2630
+ msgstr ""
2631
+
2632
+ #: ../lib/meta.php:133
2633
+ msgid "Not fired"
2634
+ msgstr ""
2635
+
2636
+ #: ../lib/meta.php:414
2637
  msgid "Aperture"
2638
  msgstr ""
2639
 
2640
+ #: ../lib/meta.php:415
2641
+ #: ../lib/meta.php:440
2642
  msgid "Credit"
2643
  msgstr ""
2644
 
2645
+ #: ../lib/meta.php:416
2646
  msgid "Camera"
2647
  msgstr ""
2648
 
2649
+ #: ../lib/meta.php:417
2650
  msgid "Caption"
2651
  msgstr ""
2652
 
2653
+ #: ../lib/meta.php:419
2654
  msgid "Copyright"
2655
  msgstr ""
2656
 
2657
+ #: ../lib/meta.php:420
2658
  msgid "Focal length"
2659
  msgstr ""
2660
 
2661
+ #: ../lib/meta.php:421
2662
  msgid "ISO"
2663
  msgstr ""
2664
 
2665
+ #: ../lib/meta.php:422
 
2666
  msgid "Shutter speed"
2667
  msgstr ""
2668
 
2669
+ #: ../lib/meta.php:426
2670
  msgid "Subject"
2671
  msgstr ""
2672
 
2673
+ #: ../lib/meta.php:427
2674
  msgid "Make"
2675
  msgstr ""
2676
 
2677
+ #: ../lib/meta.php:428
2678
  msgid "Edit Status"
2679
  msgstr ""
2680
 
2681
+ #: ../lib/meta.php:429
2682
  msgid "Category"
2683
  msgstr ""
2684
 
2685
+ #: ../lib/meta.php:430
2686
  msgid "Keywords"
2687
  msgstr ""
2688
 
2689
+ #: ../lib/meta.php:431
2690
  msgid "Date Created"
2691
  msgstr ""
2692
 
2693
+ #: ../lib/meta.php:432
2694
  msgid "Time Created"
2695
  msgstr ""
2696
 
2697
+ #: ../lib/meta.php:433
2698
  msgid "Author Position"
2699
  msgstr ""
2700
 
2701
+ #: ../lib/meta.php:434
2702
  msgid "City"
2703
  msgstr ""
2704
 
2705
+ #: ../lib/meta.php:435
2706
  msgid "Location"
2707
  msgstr ""
2708
 
2709
+ #: ../lib/meta.php:436
2710
  msgid "Province/State"
2711
  msgstr ""
2712
 
2713
+ #: ../lib/meta.php:437
2714
  msgid "Country code"
2715
  msgstr ""
2716
 
2717
+ #: ../lib/meta.php:438
2718
  msgid "Country"
2719
  msgstr ""
2720
 
2721
+ #: ../lib/meta.php:439
2722
  msgid "Headline"
2723
  msgstr ""
2724
 
2725
+ #: ../lib/meta.php:441
2726
  msgid "Source"
2727
  msgstr ""
2728
 
2729
+ #: ../lib/meta.php:442
2730
  msgid "Copyright Notice"
2731
  msgstr ""
2732
 
2733
+ #: ../lib/meta.php:443
2734
  msgid "Contact"
2735
  msgstr ""
2736
 
2737
+ #: ../lib/meta.php:444
2738
  msgid "Last modified"
2739
  msgstr ""
2740
 
2741
+ #: ../lib/meta.php:445
2742
  msgid "Program tool"
2743
  msgstr ""
2744
 
2745
+ #: ../lib/meta.php:446
2746
  msgid "Format"
2747
  msgstr ""
2748
 
2749
+ #: ../lib/meta.php:447
2750
+ msgid "Image Width"
2751
+ msgstr ""
2752
+
2753
+ #: ../lib/meta.php:448
2754
+ msgid "Image Height"
2755
+ msgstr ""
2756
+
2757
+ #: ../lib/meta.php:449
2758
+ msgid "Flash"
2759
+ msgstr ""
2760
+
2761
+ #: ../lib/ngg-db.php:313
2762
+ #: ../lib/ngg-db.php:314
2763
  msgid "Album overview"
2764
  msgstr ""
2765
 
2766
+ #: ../lib/shortcodes.php:289
2767
  msgid "[Pictures not found]"
2768
  msgstr ""
2769
 
2835
  msgid "%s slug(s) edited."
2836
  msgstr ""
2837
 
2838
+ #: ../lib/xmlrpc.php:55
2839
+ #, php-format
2840
+ msgid "XML-RPC services are disabled on this blog. An admin user can enable them at %s"
2841
+ msgstr ""
2842
+
2843
+ #: ../lib/xmlrpc.php:62
2844
+ msgid "Bad login/pass combination."
2845
+ msgstr ""
2846
+
2847
+ #: ../lib/xmlrpc.php:118
2848
+ msgid "You are not allowed to upload files to this site."
2849
+ msgstr ""
2850
+
2851
+ #: ../lib/xmlrpc.php:124
2852
+ #: ../lib/xmlrpc.php:309
2853
+ msgid "Could not find gallery "
2854
+ msgstr ""
2855
+
2856
+ #: ../lib/xmlrpc.php:129
2857
+ #: ../lib/xmlrpc.php:314
2858
+ msgid "You are not allowed to upload files to this gallery."
2859
+ msgstr ""
2860
+
2861
+ #: ../lib/xmlrpc.php:141
2862
+ msgid "This is no valid image file."
2863
+ msgstr ""
2864
+
2865
+ #: ../lib/xmlrpc.php:153
2866
+ msgid "Could not find image id "
2867
+ msgstr ""
2868
+
2869
+ #: ../lib/xmlrpc.php:160
2870
+ #, php-format
2871
+ msgid "Failed to delete image %1$s "
2872
+ msgstr ""
2873
+
2874
+ #: ../lib/xmlrpc.php:169
2875
+ #, php-format
2876
+ msgid "Could not write file %1$s (%2$s)"
2877
+ msgstr ""
2878
+
2879
+ #: ../lib/xmlrpc.php:236
2880
+ #: ../lib/xmlrpc.php:272
2881
+ msgid "Sorry, you must be able to manage galleries to view the list of galleries"
2882
+ msgstr ""
2883
+
2884
+ #: ../lib/xmlrpc.php:242
2885
+ msgid "Sorry, could not create the gallery"
2886
+ msgstr ""
2887
+
2888
  #: ../view/album-compact.php:32
 
2889
  msgid "Photos"
2890
  msgstr ""
2891
 
2892
  #: ../view/gallery-caption.php:32
2893
+ #: ../view/gallery-hidden.php:32
2894
  #: ../view/gallery.php:32
2895
+ #: ../widgets/media-rss-widget.php:236
2896
  msgid "[View with PicLens]"
2897
  msgstr ""
2898
 
2899
+ #: ../view/imagebrowser-exif.php:30
2900
  #: ../view/imagebrowser.php:26
2901
  msgid "Back"
2902
  msgstr ""
2903
 
2904
+ #: ../view/imagebrowser-exif.php:33
2905
  #: ../view/imagebrowser.php:29
2906
  msgid "Next"
2907
  msgstr ""
2908
 
2909
+ #: ../view/imagebrowser-exif.php:35
2910
  #: ../view/imagebrowser.php:31
2911
  msgid "of"
2912
  msgstr ""
2913
 
2914
+ #: ../view/imagebrowser-exif.php:38
2915
  msgid "Meta data"
2916
  msgstr ""
2917
 
2918
+ #: ../view/imagebrowser-exif.php:42
2919
  msgid "Camera / Type"
2920
  msgstr ""
2921
 
2922
+ #: ../view/imagebrowser-exif.php:50
2923
  msgid "Focal Length"
2924
  msgstr ""
2925
 
2932
  msgstr ""
2933
 
2934
  #: ../widgets/media-rss-widget.php:135
2935
+ #: ../widgets/media-rss-widget.php:200
2936
  #: ../widgets/media-rss-widget.php:260
2937
  msgid "Media RSS"
2938
  msgstr ""
2942
  msgid "Link to the main image feed"
2943
  msgstr ""
2944
 
2945
+ #: ../widgets/media-rss-widget.php:151
2946
+ #: ../widgets/widgets.php:121
2947
  msgid "Title:"
2948
  msgstr ""
2949
 
2950
+ #: ../widgets/media-rss-widget.php:159
2951
+ msgid "Show Media RSS icon"
2952
  msgstr ""
2953
 
2954
+ #: ../widgets/media-rss-widget.php:165
2955
+ msgid "Show the global Media RSS link"
2956
  msgstr ""
2957
 
2958
+ #: ../widgets/media-rss-widget.php:170
2959
  msgid "Text for the global Media RSS link:"
2960
  msgstr ""
2961
 
2962
+ #: ../widgets/media-rss-widget.php:176
2963
  msgid "Tooltip text for the global Media RSS link:"
2964
  msgstr ""
2965
 
2966
+ #: ../widgets/widgets.php:22
2967
  msgid "Show a NextGEN Gallery Slideshow"
2968
  msgstr ""
2969
 
2970
+ #: ../widgets/widgets.php:23
 
2971
  msgid "NextGEN Slideshow"
2972
  msgstr ""
2973
 
2974
+ #: ../widgets/widgets.php:66
2975
  msgid "<a href=\"http://www.macromedia.com/go/getflashplayer\">Get the Flash Player</a> to see the slideshow."
2976
  msgstr ""
2977
 
2978
+ #: ../widgets/widgets.php:123
2979
  msgid "Select Gallery:"
2980
  msgstr ""
2981
 
2982
+ #: ../widgets/widgets.php:125
2983
  msgid "All images"
2984
  msgstr ""
2985
 
2986
+ #: ../widgets/widgets.php:137
2987
  msgid "Height:"
2988
  msgstr ""
2989
 
2990
+ #: ../widgets/widgets.php:138
2991
  msgid "Width:"
2992
  msgstr ""
2993
 
2994
+ #: ../widgets/widgets.php:171
2995
  msgid "Add recent or random images from the galleries"
2996
  msgstr ""
2997
 
2998
+ #: ../widgets/widgets.php:173
2999
  msgid "NextGEN Widget"
3000
  msgstr ""
3001
 
3002
+ #: ../widgets/widgets.php:273
3003
  msgid "Title :"
3004
  msgstr ""
3005
 
3006
+ #: ../widgets/widgets.php:279
3007
  msgid "Show :"
3008
  msgstr ""
3009
 
3010
+ #: ../widgets/widgets.php:285
3011
  msgid "Original images"
3012
  msgstr ""
3013
 
3014
+ #: ../widgets/widgets.php:293
3015
  msgid "recent added "
3016
  msgstr ""
3017
 
3018
+ #: ../widgets/widgets.php:299
3019
  msgid "Enable IE8 Web Slices"
3020
  msgstr ""
3021
 
3022
+ #: ../widgets/widgets.php:304
3023
  msgid "Width x Height :"
3024
  msgstr ""
3025
 
3026
+ #: ../widgets/widgets.php:311
3027
  msgid "Select :"
3028
  msgstr ""
3029
 
3030
+ #: ../widgets/widgets.php:313
3031
  msgid "All galleries"
3032
  msgstr ""
3033
 
3034
+ #: ../widgets/widgets.php:314
3035
  msgid "Only which are not listed"
3036
  msgstr ""
3037
 
3038
+ #: ../widgets/widgets.php:315
3039
  msgid "Only which are listed"
3040
  msgstr ""
3041
 
3042
+ #: ../widgets/widgets.php:321
3043
  msgid "Gallery ID :"
3044
  msgstr ""
3045
 
3046
+ #: ../widgets/widgets.php:323
3047
  msgid "Gallery IDs, separated by commas."
3048
  msgstr ""
3049
 
lib/core.php CHANGED
@@ -135,68 +135,6 @@ class nggGallery {
135
  return 'thumbs_';
136
  }
137
 
138
- /**
139
- * create the complete navigation
140
- * TODO: shall be moved to another class. This belongs to the view and not to the library.
141
- *
142
- * @param mixed $page
143
- * @param integer $totalElement
144
- * @param integer $maxElement
145
- * @return string pagination content
146
- */
147
- function create_navigation($page, $totalElement, $maxElement = 0) {
148
- global $nggRewrite;
149
-
150
- if ($maxElement > 0) {
151
- $total = $totalElement;
152
-
153
- // create navigation
154
- if ( $total > $maxElement ) {
155
- $total_pages = ceil( $total / $maxElement );
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>';
172
- } else {
173
- $p = false;
174
- if ( $page_num < 3 || ( $page_num >= $page - 3 && $page_num <= $page + 3 ) || $page_num > $total_pages - 3 ) {
175
- $args['nggpage'] = ( 1 == $page_num ) ? FALSE : $page_num;
176
- $r .= '<a class="page-numbers" href="' . $nggRewrite->get_permalink( $args ) . '">' . ( $page_num ) . '</a>';
177
- $in = true;
178
- } elseif ( $in == true ) {
179
- $r .= '<span>...</span>';
180
- $in = false;
181
- }
182
- }
183
- }
184
- }
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>";
192
- } else {
193
- $navigation = "<div class='ngg-clear'></div>"."\n";
194
- }
195
- }
196
-
197
- return $navigation;
198
- }
199
-
200
  /**
201
  * nggGallery::get_option() - get the options and overwrite them with custom meta settings
202
  *
@@ -242,6 +180,7 @@ class nggGallery {
242
  'ngg_gal_ShowSlide' => 'galShowSlide',
243
  'ngg_gal_ShowPiclense' => 'usePicLens',
244
  'ngg_gal_ImageBrowser' => 'galImgBrowser',
 
245
  'ngg_ir_Shuffle' => 'irShuffle',
246
  'ngg_ir_LinkFromDisplay' => 'irLinkfromdisplay',
247
  'ngg_ir_ShowNavigation' => 'irShownavigation',
@@ -257,7 +196,7 @@ class nggGallery {
257
  if (array_key_exists($key, $meta_array)){
258
  switch ($typ) {
259
  case 'string':
260
- $options[$db_value] = (string) attribute_escape($meta_array[$key][0]);
261
  break;
262
  case 'int':
263
  $options[$db_value] = (int) $meta_array[$key][0];
@@ -318,8 +257,13 @@ class nggGallery {
318
  $$key = $val;
319
  }
320
 
321
- if (file_exists (TEMPLATEPATH . "/nggallery/$template_name.php")) {
322
- include (TEMPLATEPATH . "/nggallery/$template_name.php");
 
 
 
 
 
323
  } else if (file_exists (NGGALLERY_ABSPATH . "/view/$template_name.php")) {
324
  include (NGGALLERY_ABSPATH . "/view/$template_name.php");
325
  } else {
@@ -429,6 +373,38 @@ class nggGallery {
429
  return;
430
  }
431
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
432
  }
433
 
434
  ?>
135
  return 'thumbs_';
136
  }
137
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
138
  /**
139
  * nggGallery::get_option() - get the options and overwrite them with custom meta settings
140
  *
180
  'ngg_gal_ShowSlide' => 'galShowSlide',
181
  'ngg_gal_ShowPiclense' => 'usePicLens',
182
  'ngg_gal_ImageBrowser' => 'galImgBrowser',
183
+ 'ngg_gal_HideImages' => 'galHiddenImg',
184
  'ngg_ir_Shuffle' => 'irShuffle',
185
  'ngg_ir_LinkFromDisplay' => 'irLinkfromdisplay',
186
  'ngg_ir_ShowNavigation' => 'irShownavigation',
196
  if (array_key_exists($key, $meta_array)){
197
  switch ($typ) {
198
  case 'string':
199
+ $options[$db_value] = (string) esc_attr($meta_array[$key][0]);
200
  break;
201
  case 'int':
202
  $options[$db_value] = (int) $meta_array[$key][0];
257
  $$key = $val;
258
  }
259
 
260
+ // hook into the render feature to allow other plugins to include templates
261
+ $custom_template = apply_filters( 'ngg_render_template', false, $template_name );
262
+
263
+ if ( ( $custom_template != false ) && file_exists ($custom_template) ) {
264
+ include ( $custom_template );
265
+ } else if (file_exists (STYLESHEETPATH . "/nggallery/$template_name.php")) {
266
+ include (STYLESHEETPATH . "/nggallery/$template_name.php");
267
  } else if (file_exists (NGGALLERY_ABSPATH . "/view/$template_name.php")) {
268
  include (NGGALLERY_ABSPATH . "/view/$template_name.php");
269
  } else {
373
  return;
374
  }
375
 
376
+ /**
377
+ * Slightly modfifed version of pathinfo(), clean up filename & rename jpeg to jpg
378
+ *
379
+ * @param string $name The name being checked.
380
+ * @return array containing information about file
381
+ */
382
+ function fileinfo( $name ) {
383
+
384
+ //Sanitizes a filename replacing whitespace with dashes
385
+ $name = sanitize_file_name($name);
386
+
387
+ //get the parts of the name
388
+ $filepart = pathinfo ( strtolower($name) );
389
+
390
+ if ( empty($filepart) )
391
+ return false;
392
+
393
+ // required until PHP 5.2.0
394
+ if ( empty($filepart['filename']) )
395
+ $filepart['filename'] = substr($filepart['basename'],0 ,strlen($filepart['basename']) - (strlen($filepart['extension']) + 1) );
396
+
397
+ $filepart['filename'] = sanitize_title_with_dashes( $filepart['filename'] );
398
+
399
+ //extension jpeg will not be recognized by the slideshow, so we rename it
400
+ $filepart['extension'] = ($filepart['extension'] == 'jpeg') ? 'jpg' : $filepart['extension'];
401
+
402
+ //combine the new file name
403
+ $filepart['basename'] = $filepart['filename'] . '.' . $filepart['extension'];
404
+
405
+ return $filepart;
406
+ }
407
+
408
  }
409
 
410
  ?>
lib/gd.thumbnail.inc.php CHANGED
@@ -3,8 +3,8 @@
3
  * gd.thumbnail.inc.php
4
  *
5
  * @author Ian Selby (ian@gen-x-design.com)
6
- * @copyright Copyright 2006-2008
7
- * @version 1.1.3 (PHP4)
8
  * @modded by Alex Rabe
9
  *
10
  */
@@ -38,12 +38,6 @@ class ngg_Thumbnail {
38
  * @var string
39
  */
40
  var $fileName;
41
- /**
42
- * Image meta data if any is available (jpeg/tiff) via the exif library
43
- *
44
- * @var array
45
- */
46
- var $imageMeta;
47
  /**
48
  * Current dimensions of working image
49
  *
@@ -131,7 +125,6 @@ class ngg_Thumbnail {
131
  $this->currentDimensions = array();
132
  $this->newDimensions = array();
133
  $this->fileName = $fileName;
134
- $this->imageMeta = array();
135
  $this->percent = 100;
136
  $this->maxWidth = 0;
137
  $this->maxHeight = 0;
@@ -193,7 +186,6 @@ class ngg_Thumbnail {
193
  $size = GetImageSize($this->fileName);
194
  $this->currentDimensions = array('width'=>$size[0],'height'=>$size[1]);
195
  $this->newImage = $this->oldImage;
196
- $this->gatherImageMeta();
197
  }
198
  }
199
 
@@ -545,7 +537,7 @@ class ngg_Thumbnail {
545
  * @param int $width
546
  * @param int $height
547
  */
548
- function crop($startX,$startY,$width,$height) {
549
  //make sure the cropped area is not greater than the size of the image
550
  if($width > $this->currentDimensions['width']) $width = $this->currentDimensions['width'];
551
  if($height > $this->currentDimensions['height']) $height = $this->currentDimensions['height'];
@@ -696,6 +688,84 @@ class ngg_Thumbnail {
696
  $this->currentDimensions['height'] = $newHeight;
697
  }
698
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
699
  /**
700
  * Inverts working image, used by reflection function
701
  *
@@ -739,69 +809,6 @@ class ngg_Thumbnail {
739
  return ($asString ? "{$rgb[0]} {$rgb[1]} {$rgb[2]}" : $rgb);
740
  }
741
 
742
- /**
743
- * Reads selected exif meta data from jpg images and populates $this->imageMeta with appropriate values if found
744
- *
745
- */
746
- function gatherImageMeta() {
747
- //only attempt to retrieve info if exif exists
748
- if(function_exists("exif_read_data") && $this->format == 'JPG') {
749
- $imageData = @exif_read_data($this->fileName);
750
- if(isset($imageData['Make']))
751
- $this->imageMeta['make'] = ucwords(strtolower($imageData['Make']));
752
- if(isset($imageData['Model']))
753
- $this->imageMeta['model'] = $imageData['Model'];
754
- if(isset($imageData['COMPUTED']['ApertureFNumber'])) {
755
- $this->imageMeta['aperture'] = $imageData['COMPUTED']['ApertureFNumber'];
756
- $this->imageMeta['aperture'] = str_replace('/','',$this->imageMeta['aperture']);
757
- }
758
- if(isset($imageData['ExposureTime'])) {
759
- $exposure = explode('/',$imageData['ExposureTime']);
760
- $exposure = round($exposure[1]/$exposure[0],-1);
761
- $this->imageMeta['exposure'] = '1/' . $exposure . ' second';
762
- }
763
- if(isset($imageData['Flash'])) {
764
- if($imageData['Flash'] > 0) {
765
- $this->imageMeta['flash'] = 'Yes';
766
- }
767
- else {
768
- $this->imageMeta['flash'] = 'No';
769
- }
770
- }
771
- if(isset($imageData['FocalLength'])) {
772
- $focus = explode('/',$imageData['FocalLength']);
773
- if ($focus[1] > 0)
774
- $this->imageMeta['focalLength'] = round($focus[0]/$focus[1],2) . ' mm';
775
- }
776
- if(isset($imageData['DateTime'])) {
777
- $date = $imageData['DateTime'];
778
- $date = explode(' ',$date);
779
- $date = str_replace(':','-',$date[0]) . ' ' . $date[1];
780
- $this->imageMeta['dateTaken'] = date('m/d/Y g:i A',strtotime($date));
781
- }
782
- }
783
- }
784
-
785
- /**
786
- * Rotates image either 90 degrees clockwise or counter-clockwise
787
- *
788
- * @param string $direction
789
- */
790
- function rotateImage($direction = 'CW') {
791
- if($direction == 'CW') {
792
- $this->workingImage = imagerotate($this->workingImage,-90,0);
793
- }
794
- else {
795
- $this->workingImage = imagerotate($this->workingImage,90,0);
796
- }
797
- $newWidth = $this->currentDimensions['height'];
798
- $newHeight = $this->currentDimensions['width'];
799
- $this->oldImage = $this->workingImage;
800
- $this->newImage = $this->workingImage;
801
- $this->currentDimensions['width'] = $newWidth;
802
- $this->currentDimensions['height'] = $newHeight;
803
- }
804
-
805
  /**
806
  * Based on the Watermark function by Marek Malcherek
807
  * http://www.malcherek.de
@@ -896,8 +903,7 @@ class ngg_Thumbnail {
896
  }
897
 
898
  /**
899
- * Fast imagecopyresampled
900
- * by tim@leethost.com
901
  *
902
  */
903
  function fastimagecopyresampled (&$dst_image, $src_image, $dst_x, $dst_y, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h, $quality = 3) {
3
  * gd.thumbnail.inc.php
4
  *
5
  * @author Ian Selby (ian@gen-x-design.com)
6
+ * @copyright Copyright 2006-2009
7
+ * @version 1.2.0 (based on 1.1.3)
8
  * @modded by Alex Rabe
9
  *
10
  */
38
  * @var string
39
  */
40
  var $fileName;
 
 
 
 
 
 
41
  /**
42
  * Current dimensions of working image
43
  *
125
  $this->currentDimensions = array();
126
  $this->newDimensions = array();
127
  $this->fileName = $fileName;
 
128
  $this->percent = 100;
129
  $this->maxWidth = 0;
130
  $this->maxHeight = 0;
186
  $size = GetImageSize($this->fileName);
187
  $this->currentDimensions = array('width'=>$size[0],'height'=>$size[1]);
188
  $this->newImage = $this->oldImage;
 
189
  }
190
  }
191
 
537
  * @param int $width
538
  * @param int $height
539
  */
540
+ function crop($startX, $startY, $width, $height) {
541
  //make sure the cropped area is not greater than the size of the image
542
  if($width > $this->currentDimensions['width']) $width = $this->currentDimensions['width'];
543
  if($height > $this->currentDimensions['height']) $height = $this->currentDimensions['height'];
688
  $this->currentDimensions['height'] = $newHeight;
689
  }
690
 
691
+ /**
692
+ * Flip an image.
693
+ *
694
+ * @param bool $horz flip the image in horizontal mode
695
+ * @param bool $vert flip the image in vertical mode
696
+ */
697
+ function flipImage( $horz = false, $vert = false ) {
698
+
699
+ $sx = $vert ? ($this->currentDimensions['width'] - 1) : 0;
700
+ $sy = $horz ? ($this->currentDimensions['height'] - 1) : 0;
701
+ $sw = $vert ? -$this->currentDimensions['width'] : $this->currentDimensions['width'];
702
+ $sh = $horz ? -$this->currentDimensions['height'] : $this->currentDimensions['height'];
703
+
704
+ $this->workingImage = imagecreatetruecolor( $this->currentDimensions['width'], $this->currentDimensions['height'] );
705
+
706
+ imagecopyresampled($this->workingImage, $this->oldImage, 0, 0, $sx, $sy, $this->currentDimensions['width'], $this->currentDimensions['height'], $sw, $sh) ;
707
+ $this->oldImage = $this->workingImage;
708
+ $this->newImage = $this->workingImage;
709
+
710
+ return true;
711
+ }
712
+
713
+ /**
714
+ * Rotate an image clockwise or counter clockwise
715
+ *
716
+ * @param string $direction could be CW or CCW
717
+ */
718
+ function rotateImage( $dir = 'CW' ) {
719
+
720
+ $angle = ($dir == 'CW') ? 90 : -90;
721
+
722
+ if ( function_exists('imagerotate') ) {
723
+ $this->workingImage = imagerotate($this->oldImage, 360 - $angle, 0); // imagerotate() rotates CCW
724
+ $this->currentDimensions['width'] = imagesx($this->workingImage);
725
+ $this->currentDimensions['height'] = imagesy($this->workingImage);
726
+ $this->oldImage = $this->workingImage;
727
+ $this->newImage = $this->workingImage;
728
+ return true;
729
+ }
730
+
731
+ $this->workingImage = imagecreatetruecolor( $this->currentDimensions['height'], $this->currentDimensions['width'] );
732
+
733
+ imagealphablending($this->workingImage, false);
734
+ imagesavealpha($this->workingImage, true);
735
+
736
+ switch ($angle) {
737
+
738
+ case 90 :
739
+ for( $x = 0; $x < $this->currentDimensions['width']; $x++ ) {
740
+ for( $y = 0; $y < $this->currentDimensions['height']; $y++ ) {
741
+ if ( !imagecopy($this->workingImage, $this->oldImage, $this->currentDimensions['height'] - $y - 1, $x, $x, $y, 1, 1) )
742
+ return false;
743
+ }
744
+ }
745
+ break;
746
+
747
+ case -90 :
748
+ for( $x = 0; $x < $this->currentDimensions['width']; $x++ ) {
749
+ for( $y = 0; $y < $this->currentDimensions['height']; $y++ ) {
750
+ if ( !imagecopy($this->workingImage, $this->oldImage, $y, $this->currentDimensions['width'] - $x - 1, $x, $y, 1, 1) )
751
+ return false;
752
+ }
753
+ }
754
+ break;
755
+
756
+ default :
757
+ return false;
758
+ }
759
+
760
+ $this->currentDimensions['width'] = imagesx($this->workingImage);
761
+ $this->currentDimensions['height'] = imagesy($this->workingImage);
762
+ $this->oldImage = $this->workingImage;
763
+ $this->newImage = $this->workingImage;
764
+
765
+ return true;
766
+
767
+ }
768
+
769
  /**
770
  * Inverts working image, used by reflection function
771
  *
809
  return ($asString ? "{$rgb[0]} {$rgb[1]} {$rgb[2]}" : $rgb);
810
  }
811
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
812
  /**
813
  * Based on the Watermark function by Marek Malcherek
814
  * http://www.malcherek.de
903
  }
904
 
905
  /**
906
+ * Fast imagecopyresampled by tim@leethost.com
 
907
  *
908
  */
909
  function fastimagecopyresampled (&$dst_image, $src_image, $dst_x, $dst_y, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h, $quality = 3) {
lib/image.php CHANGED
@@ -45,14 +45,13 @@ class nggImage{
45
  * Constructor
46
  *
47
  * @param object $gallery The nggGallery object representing the gallery containing this image
48
- * @param object $row //TODO:Obsoltete ???
49
  * @return void
50
  */
51
- function nggImage($gallery, $row = false) {
52
 
53
  //This must be an object
54
  $gallery = (object) $gallery;
55
-
56
  // Build up the object
57
  foreach ($gallery as $key => $value)
58
  $this->$key = $value ;
@@ -69,6 +68,9 @@ class nggImage{
69
  $this->thumbURL = get_option ('siteurl') . '/' . $this->path . '/thumbs/thumbs_' . $this->filename;
70
  $this->imagePath = WINABSPATH.$this->path . '/' . $this->filename;
71
  $this->thumbPath = WINABSPATH.$this->path . '/thumbs/thumbs_' . $this->filename;
 
 
 
72
 
73
  // Get tags only if necessary
74
  unset($this->tags);
@@ -171,9 +173,9 @@ class nggImage{
171
  * Get the tags associated to this image
172
  */
173
  function get_tags() {
174
- if (!isset($this->tags)) {
175
  $this->tags = wp_get_object_terms($this->pid, 'ngg_tag', 'fields=all');
176
- }
177
  return $this->tags;
178
  }
179
 
@@ -182,9 +184,9 @@ class nggImage{
182
  * TODO Get a permalink to a page presenting the image
183
  */
184
  function get_permalink() {
185
- if ($this->permalink=='') {
186
  $this->permalink = $this->imageURL;
187
- }
188
  return $this->permalink;
189
  }
190
  }
45
  * Constructor
46
  *
47
  * @param object $gallery The nggGallery object representing the gallery containing this image
 
48
  * @return void
49
  */
50
+ function nggImage($gallery) {
51
 
52
  //This must be an object
53
  $gallery = (object) $gallery;
54
+
55
  // Build up the object
56
  foreach ($gallery as $key => $value)
57
  $this->$key = $value ;
68
  $this->thumbURL = get_option ('siteurl') . '/' . $this->path . '/thumbs/thumbs_' . $this->filename;
69
  $this->imagePath = WINABSPATH.$this->path . '/' . $this->filename;
70
  $this->thumbPath = WINABSPATH.$this->path . '/thumbs/thumbs_' . $this->filename;
71
+ $this->meta_data = unserialize($this->meta_data);
72
+
73
+ wp_cache_add($this->pid, $this, 'ngg_image');
74
 
75
  // Get tags only if necessary
76
  unset($this->tags);
173
  * Get the tags associated to this image
174
  */
175
  function get_tags() {
176
+ if ( !isset($this->tags) )
177
  $this->tags = wp_get_object_terms($this->pid, 'ngg_tag', 'fields=all');
178
+
179
  return $this->tags;
180
  }
181
 
184
  * TODO Get a permalink to a page presenting the image
185
  */
186
  function get_permalink() {
187
+ if ($this->permalink == '')
188
  $this->permalink = $this->imageURL;
189
+
190
  return $this->permalink;
191
  }
192
  }
lib/imagemagick.inc.php CHANGED
@@ -353,20 +353,31 @@ var $imageMagickBefore;
353
  $this->currentDimensions['height'] = $this->newDimensions['newHeight'];
354
 
355
  }
 
 
 
 
 
 
 
 
 
 
 
 
356
 
357
  /**
358
  * Rotates image either 90 degrees clockwise or counter-clockwise
359
  *
360
  * @param string $direction
361
  */
362
- function rotateImage($direction = 'CW') {
363
- if($direction == 'CW') {
364
- $this->imageMagickExec .= " -rotate -90 ";
365
- }
366
- else {
367
- $this->imageMagickExec .= " -rotate 90 ";
368
- }
369
- $newWidth = $this->currentDimensions['height'];
370
  $newHeight = $this->currentDimensions['width'];
371
  $this->currentDimensions['width'] = $newWidth;
372
  $this->currentDimensions['height'] = $newHeight;
353
  $this->currentDimensions['height'] = $this->newDimensions['newHeight'];
354
 
355
  }
356
+
357
+ /**
358
+ * Flip an image.
359
+ *
360
+ * @param bool $horz flip the image in horizontal mode
361
+ * @param bool $vert flip the image in vertical mode
362
+ */
363
+ function flipImage( $horz = false, $vert = false ) {
364
+
365
+ //TODO: need to be added
366
+
367
+ }
368
 
369
  /**
370
  * Rotates image either 90 degrees clockwise or counter-clockwise
371
  *
372
  * @param string $direction
373
  */
374
+ function rotateImage($dir = 'CW') {
375
+
376
+ $angle = ($dir == 'CW') ? 90 : -90;
377
+
378
+ $this->imageMagickExec .= " -rotate $angle ";
379
+
380
+ $newWidth = $this->currentDimensions['height'];
 
381
  $newHeight = $this->currentDimensions['width'];
382
  $this->currentDimensions['width'] = $newWidth;
383
  $this->currentDimensions['height'] = $newHeight;
lib/meta.php CHANGED
@@ -5,14 +5,15 @@
5
  * nggmeta.lib.php
6
  *
7
  * @author Alex Rabe
8
- * @copyright Copyright 2007
9
  *
10
  */
11
 
12
  class nggMeta{
13
 
14
  /**** Image Data ****/
15
- var $imagePath = ""; // ABS Path to the image
 
16
  var $exif_data = false; // EXIF data array
17
  var $iptc_data = false; // IPTC data array
18
  var $xmp_data = false; // XMP data array
@@ -24,23 +25,27 @@ class nggMeta{
24
  /**
25
  * nggMeta::nggMeta()
26
  *
27
- * @param string $image path to a image
28
  * @param bool $onlyEXIF parse only exif if needed
29
  * @return
30
  */
31
- function nggMeta($image, $onlyEXIF = false) {
32
- $this->imagePath = $image;
33
 
34
- if ( !file_exists( $this->imagePath ) )
 
 
 
 
 
35
  return false;
36
 
37
- $size = @getimagesize ( $this->imagePath, $metadata );
38
 
39
- if ($size && is_array($metadata)) {
40
 
41
  // get exif - data
42
  if ( is_callable('exif_read_data'))
43
- $this->exif_data = @exif_read_data($this->imagePath, 0, true );
44
 
45
  // stop here if we didn't need other meta data
46
  if ($onlyEXIF)
@@ -52,14 +57,45 @@ class nggMeta{
52
 
53
  // get the xmp data in a XML format
54
  if ( is_callable('xml_parser_create'))
55
- $this->xmp_data = $this->extract_XMP($this->imagePath);
56
-
57
  return true;
58
  }
59
 
60
  return false;
61
  }
62
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
63
  /**
64
  * nggMeta::get_EXIF()
65
  * See also http://trac.wordpress.org/changeset/6313
@@ -78,20 +114,23 @@ class nggMeta{
78
  // taken from WP core
79
  $exif = $this->exif_data['EXIF'];
80
  if (!empty($exif['FNumber']))
81
- $meta['aperture'] = "F " . round( $this->exif_frac2dec( $exif['FNumber'] ), 2 );
82
  if (!empty($exif['Model']))
83
  $meta['camera'] = trim( $exif['Model'] );
84
  if (!empty($exif['DateTimeDigitized']))
85
- $meta['created_timestamp'] = date_i18n(get_option('date_format').' '.get_option('time_format'), $this->exif_date2ts($exif['DateTimeDigitized']));
86
  if (!empty($exif['FocalLength']))
87
  $meta['focal_length'] = $this->exif_frac2dec( $exif['FocalLength'] ) . __(' mm','nggallery');
88
  if (!empty($exif['ISOSpeedRatings']))
89
  $meta['iso'] = $exif['ISOSpeedRatings'];
90
  if (!empty($exif['ExposureTime'])) {
91
  $meta['shutter_speed'] = $this->exif_frac2dec ($exif['ExposureTime']);
92
- $meta['shutter_speed'] =($meta['shutter_speed'] > 0.0 and $meta['shutter_speed'] < 1.0) ? ( "1/" . round( 1 / $meta['shutter_speed'], -1) ) : ($meta['shutter_speed']);
93
  $meta['shutter_speed'] .= __(' sec','nggallery');
94
  }
 
 
 
95
 
96
  // additional information
97
  $exif = $this->exif_data['IFD0'];
@@ -100,7 +139,9 @@ class nggMeta{
100
  if (!empty($exif['Make']))
101
  $meta['make'] = $exif['Make'];
102
  if (!empty($exif['ImageDescription']))
103
- $meta['title'] = utf8_encode($exif['ImageDescription']);
 
 
104
 
105
  // this is done by Windows
106
  $exif = $this->exif_data['WINXP'];
@@ -347,7 +388,9 @@ class nggMeta{
347
  */
348
  function get_META($object = false) {
349
 
350
- // defined order XMP , before IPTC and EXIF.
 
 
351
  if ($value = $this->get_XMP($object))
352
  return $value;
353
  if ($value = $this->get_IPTC($object))
@@ -400,7 +443,10 @@ class nggMeta{
400
  'contact' => __('Contact','nggallery'),
401
  'last_modfied' => __('Last modified','nggallery'),
402
  'tool' => __('Program tool','nggallery'),
403
- 'format' => __('Format','nggallery')
 
 
 
404
  );
405
 
406
  if ($tagnames[$key]) $key = $tagnames[$key];
@@ -421,7 +467,7 @@ class nggMeta{
421
  $date_time = $this->exif_date2ts($date_time);
422
  } else {
423
  // if no other date available, get the filetime
424
- $date_time = @filectime($this->imagePath);
425
  }
426
 
427
  // Return the MySQL format
@@ -429,6 +475,48 @@ class nggMeta{
429
 
430
  return $date_time;
431
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
432
 
433
  }
434
 
5
  * nggmeta.lib.php
6
  *
7
  * @author Alex Rabe
8
+ * @copyright Copyright 2007-2009
9
  *
10
  */
11
 
12
  class nggMeta{
13
 
14
  /**** Image Data ****/
15
+ var $image = ''; // The image object
16
+ var $size = false; // The image size
17
  var $exif_data = false; // EXIF data array
18
  var $iptc_data = false; // IPTC data array
19
  var $xmp_data = false; // XMP data array
25
  /**
26
  * nggMeta::nggMeta()
27
  *
28
+ * @param int $image path to a image
29
  * @param bool $onlyEXIF parse only exif if needed
30
  * @return
31
  */
32
+ function nggMeta($pic_id, $onlyEXIF = false) {
 
33
 
34
+ //get the path and other data about the image
35
+ $this->image = nggdb::find_image( $pic_id );
36
+
37
+ $this->image = apply_filters( 'ngg_find_image_meta', $this->image );
38
+
39
+ if ( !file_exists( $this->image->imagePath ) )
40
  return false;
41
 
42
+ $this->size = @getimagesize ( $this->image->imagePath , $metadata );
43
 
44
+ if ($this->size && is_array($metadata)) {
45
 
46
  // get exif - data
47
  if ( is_callable('exif_read_data'))
48
+ $this->exif_data = @exif_read_data($this->image->imagePath , 0, true );
49
 
50
  // stop here if we didn't need other meta data
51
  if ($onlyEXIF)
57
 
58
  // get the xmp data in a XML format
59
  if ( is_callable('xml_parser_create'))
60
+ $this->xmp_data = $this->extract_XMP($this->image->imagePath );
61
+
62
  return true;
63
  }
64
 
65
  return false;
66
  }
67
 
68
+ /**
69
+ * return the saved meta data from the database
70
+ *
71
+ * @since 1.4.0
72
+ * @param string $object (optional)
73
+ * @return array|mixed return either the complete array or the single object
74
+ */
75
+ function get_saved_meta($object = false) {
76
+
77
+ $meta = $this->image->meta_data;
78
+
79
+ //check if we already import the meat data to the database
80
+ if (!is_array($meta) || ($meta['saved'] != true))
81
+ return false;
82
+
83
+ // return one element if requested
84
+ if ($object)
85
+ return $meta[$object];
86
+
87
+ //removed saved parameter we don't need that to show
88
+ unset($meta['saved']);
89
+
90
+ // and remove empty tags
91
+ foreach ($meta as $key => $value) {
92
+ if ( empty($value) )
93
+ unset($meta[$key]);
94
+ }
95
+
96
+ return $meta;
97
+ }
98
+
99
  /**
100
  * nggMeta::get_EXIF()
101
  * See also http://trac.wordpress.org/changeset/6313
114
  // taken from WP core
115
  $exif = $this->exif_data['EXIF'];
116
  if (!empty($exif['FNumber']))
117
+ $meta['aperture'] = 'F ' . round( $this->exif_frac2dec( $exif['FNumber'] ), 2 );
118
  if (!empty($exif['Model']))
119
  $meta['camera'] = trim( $exif['Model'] );
120
  if (!empty($exif['DateTimeDigitized']))
121
+ $meta['created_timestamp'] = date_i18n(get_option('date_format') . ' ' . get_option('time_format'), $this->exif_date2ts($exif['DateTimeDigitized']));
122
  if (!empty($exif['FocalLength']))
123
  $meta['focal_length'] = $this->exif_frac2dec( $exif['FocalLength'] ) . __(' mm','nggallery');
124
  if (!empty($exif['ISOSpeedRatings']))
125
  $meta['iso'] = $exif['ISOSpeedRatings'];
126
  if (!empty($exif['ExposureTime'])) {
127
  $meta['shutter_speed'] = $this->exif_frac2dec ($exif['ExposureTime']);
128
+ $meta['shutter_speed'] =($meta['shutter_speed'] > 0.0 and $meta['shutter_speed'] < 1.0) ? ( '1/' . round( 1 / $meta['shutter_speed'], -1) ) : ($meta['shutter_speed']);
129
  $meta['shutter_speed'] .= __(' sec','nggallery');
130
  }
131
+ //Bit 0 indicates the flash firing status
132
+ if (!empty($exif['Flash']))
133
+ $meta['flash'] = ( $exif['Flash'] & 1 ) ? __('Fired', 'nggallery') : __('Not fired',' nggallery');
134
 
135
  // additional information
136
  $exif = $this->exif_data['IFD0'];
139
  if (!empty($exif['Make']))
140
  $meta['make'] = $exif['Make'];
141
  if (!empty($exif['ImageDescription']))
142
+ $meta['title'] = utf8_encode($exif['ImageDescription']);
143
+ if (!empty($exif['Orientation']))
144
+ $meta['Orientation'] = $exif['Orientation'];
145
 
146
  // this is done by Windows
147
  $exif = $this->exif_data['WINXP'];
388
  */
389
  function get_META($object = false) {
390
 
391
+ // defined order first look into database, then XMP, IPTC and EXIF.
392
+ if ($value = $this->get_saved_meta($object))
393
+ return $value;
394
  if ($value = $this->get_XMP($object))
395
  return $value;
396
  if ($value = $this->get_IPTC($object))
443
  'contact' => __('Contact','nggallery'),
444
  'last_modfied' => __('Last modified','nggallery'),
445
  'tool' => __('Program tool','nggallery'),
446
+ 'format' => __('Format','nggallery'),
447
+ 'width' => __('Image Width','nggallery'),
448
+ 'height' => __('Image Height','nggallery'),
449
+ 'flash' => __('Flash','nggallery')
450
  );
451
 
452
  if ($tagnames[$key]) $key = $tagnames[$key];
467
  $date_time = $this->exif_date2ts($date_time);
468
  } else {
469
  // if no other date available, get the filetime
470
+ $date_time = @filectime($this->image->imagePath );
471
  }
472
 
473
  // Return the MySQL format
475
 
476
  return $date_time;
477
  }
478
+
479
+ /**
480
+ * This function return the most common metadata, via a filter we can add more
481
+ * Reason : GD manipulation removes that options
482
+ *
483
+ * @since V1.4.0
484
+ * @return void
485
+ */
486
+ function get_common_meta() {
487
+ global $wpdb;
488
+
489
+ $meta = array(
490
+ 'aperture' => 0,
491
+ 'credit' => '',
492
+ 'camera' => '',
493
+ 'caption' => '',
494
+ 'created_timestamp' => 0,
495
+ 'copyright' => '',
496
+ 'focal_length' => 0,
497
+ 'iso' => 0,
498
+ 'shutter_speed' => 0,
499
+ 'flash' => 0,
500
+ 'title' => '',
501
+ 'keywords' => ''
502
+ );
503
+
504
+ $meta = apply_filters( 'ngg_read_image_metadata', $meta );
505
+
506
+ // meta should be still an array
507
+ if ( !is_array($meta) )
508
+ return false;
509
+
510
+ foreach ($meta as $key => $value) {
511
+ $meta[$key] = $this->get_META($key);
512
+ }
513
+
514
+ //let's add now the size of the image
515
+ $meta['width'] = $this->size[0];
516
+ $meta['height'] = $this->size[1];
517
+
518
+ return $meta;
519
+ }
520
 
521
  }
522
 
lib/navigation.php ADDED
@@ -0,0 +1,117 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * nggNavigation - PHP class for the pagination
4
+ *
5
+ * @package NextGEN Gallery
6
+ * @author Alex Rabe
7
+ * @copyright 2009
8
+ * @version 1.0.0
9
+ * @access public
10
+ */
11
+ class nggNavigation {
12
+
13
+ /**
14
+ * Return the navigation output
15
+ *
16
+ * @access public
17
+ * @var string
18
+ */
19
+ var $output = false;
20
+
21
+ /**
22
+ * Link to previous page
23
+ *
24
+ * @access public
25
+ * @var string
26
+ */
27
+ var $prev = false;
28
+
29
+ /**
30
+ * Link to next page
31
+ *
32
+ * @access public
33
+ * @var string
34
+ */
35
+ var $next = false;
36
+
37
+ /**
38
+ * PHP4 compatibility layer for calling the PHP5 constructor.
39
+ *
40
+ */
41
+ function nggNavigation() {
42
+ return $this->__construct();
43
+ }
44
+
45
+ /**
46
+ * Main constructor - Does nothing.
47
+ * Call create_navigation() method when you need a navigation.
48
+ *
49
+ */
50
+ function __construct() {
51
+ return;
52
+ }
53
+
54
+ /**
55
+ * nggNavigation::create_navigation()
56
+ *
57
+ * @param mixed $page
58
+ * @param integer $totalElement
59
+ * @param integer $maxElement
60
+ * @return string pagination content
61
+ */
62
+ function create_navigation($page, $totalElement, $maxElement = 0) {
63
+ global $nggRewrite;
64
+
65
+ if ($maxElement > 0) {
66
+ $total = $totalElement;
67
+
68
+ // create navigation
69
+ if ( $total > $maxElement ) {
70
+ $total_pages = ceil( $total / $maxElement );
71
+ $r = '';
72
+ if ( 1 < $page ) {
73
+ $args['nggpage'] = ( 1 == $page - 1 ) ? FALSE : $page - 1;
74
+ $previous = $args['nggpage'];
75
+ if (FALSE == $args['nggpage']) {
76
+ $previous = 1;
77
+ }
78
+ $this->prev = $nggRewrite->get_permalink ( $args );
79
+ $r .= '<a class="prev" id="ngg-prev-' . $previous . '" href="' . $this->prev . '">&#9668;</a>';
80
+ }
81
+
82
+ $total_pages = ceil( $total / $maxElement );
83
+
84
+ if ( $total_pages > 1 ) {
85
+ for ( $page_num = 1; $page_num <= $total_pages; $page_num++ ) {
86
+ if ( $page == $page_num ) {
87
+ $r .= '<span>' . $page_num . '</span>';
88
+ } else {
89
+ $p = false;
90
+ if ( $page_num < 3 || ( $page_num >= $page - 3 && $page_num <= $page + 3 ) || $page_num > $total_pages - 3 ) {
91
+ $args['nggpage'] = ( 1 == $page_num ) ? FALSE : $page_num;
92
+ $r .= '<a class="page-numbers" href="' . $nggRewrite->get_permalink( $args ) . '">' . ( $page_num ) . '</a>';
93
+ $in = true;
94
+ } elseif ( $in == true ) {
95
+ $r .= '<span>...</span>';
96
+ $in = false;
97
+ }
98
+ }
99
+ }
100
+ }
101
+
102
+ if ( ( $page ) * $maxElement < $total || -1 == $total ) {
103
+ $args['nggpage'] = $page + 1;
104
+ $this->next = $nggRewrite->get_permalink ( $args );
105
+ $r .= '<a class="next" id="ngg-next-' . $args['nggpage'] . '" href="' . $this->next . '">&#9658;</a>';
106
+ }
107
+
108
+ $this->output = "<div class='ngg-navigation'>$r</div>";
109
+ } else {
110
+ $this->output = "<div class='ngg-clear'></div>"."\n";
111
+ }
112
+ }
113
+
114
+ return $this->output;
115
+ }
116
+ }
117
+ ?>
lib/ngg-db.php CHANGED
@@ -8,613 +8,766 @@ if ( !class_exists('nggdb') ) :
8
  * @since 1.0.0
9
  */
10
  class nggdb {
11
-
12
- /**
13
- * Holds the list of all galleries
14
- *
15
- * @since 1.1.0
16
- * @access public
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
41
- *
42
- * @since 1.1.0
43
- * @access public
44
- * @var array
45
- */
46
- var $paged = false;
47
-
48
- /**
49
- * PHP4 compatibility layer for calling the PHP5 constructor.
50
- *
51
- */
52
- function nggdb() {
53
- return $this->__construct();
54
- }
55
-
56
- /**
57
- * Init the Database Abstraction layer for NextGEN Gallery
58
- *
59
- */
60
- function __construct() {
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
-
72
- /**
73
- * PHP5 style destructor and will run when database object is destroyed.
74
- *
75
- * @return bool Always true
76
- */
77
- function __destruct() {
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
- *
110
- * @param string $order_by
111
- * @param string $order_dir
112
- * @param bool $counter (optional) Select true when you need to count the images
113
- * @param int $limit number of paged galleries, 0 shows all galleries
114
- * @param int $start the start index for paged galleries
115
- * @return array $galleries
116
- */
117
- function find_all_galleries($order_by = 'gid', $order_dir = 'ASC', $counter = false, $limit = 0, $start = 0) {
118
- global $wpdb;
119
-
120
- $order_dir = ( $order_dir == 'DESC') ? 'DESC' : 'ASC';
121
- $limit_by = ( $limit > 0 ) ? 'LIMIT ' . intval($start) . ',' . intval($limit) : '';
122
- $this->galleries = $wpdb->get_results( "SELECT SQL_CALC_FOUND_ROWS * FROM $wpdb->nggallery ORDER BY {$order_by} {$order_dir} {$limit_by}", OBJECT_K );
123
-
124
- // Count the number of galleries and calculate the pagination
125
- if ($limit > 0) {
126
- $this->paged['total_objects'] = intval ( $wpdb->get_var( "SELECT FOUND_ROWS()" ) );
127
- $this->paged['objects_per_page'] = count( $this->galleries );
128
- $this->paged['max_objects_per_page'] = ( $limit > 0 ) ? ceil( $this->paged['total_objects'] / intval($limit)) : 1;
129
- }
130
-
131
- if ( !$this->galleries )
132
- return array();
133
-
134
- // if we didn't need to count the images then stop here
135
- if ( !$counter )
136
- return $this->galleries;
137
-
138
- // get the galleries information
139
- foreach ($this->galleries as $key => $value) {
140
- $galleriesID[] = $key;
141
- // init the counter values
142
- $this->galleries[$key]->counter = 0;
143
- }
144
-
145
- // get the counter values
146
- $picturesCounter = $wpdb->get_results('SELECT galleryid, COUNT(*) as counter FROM '.$wpdb->nggpictures.' WHERE galleryid IN (\''.implode('\',\'', $galleriesID).'\') AND exclude != 1 GROUP BY galleryid', OBJECT_K);
147
 
148
- if ( !$picturesCounter )
149
- return $this->galleries;
150
-
151
- // add the counter to the gallery objekt
152
- foreach ($picturesCounter as $key => $value)
153
- $this->galleries[$value->galleryid]->counter = $value->counter;
154
-
155
- return $this->galleries;
156
- }
157
-
158
- /**
159
- * Get a gallery given its ID
160
- *
161
- * @param int|string $id or $name
162
- * @return A nggGallery object (null if not found)
163
- */
164
- function find_gallery( $id ) {
165
- global $wpdb;
166
-
167
- if( is_numeric($id) )
168
- $gallery = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM $wpdb->nggallery WHERE gid = %d", $id ) );
169
- else
170
- $gallery = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM $wpdb->nggallery WHERE name = %s", $id ) );
171
-
172
- // Build the object from the query result
173
- if ($gallery)
174
- return $gallery;
175
- else
176
- return false;
177
- }
178
-
179
- /**
180
- * This function return all information about the gallery and the images inside
181
- *
182
- * @param int|string $id or $name
183
- * @param string $order_by
184
- * @param string $order_dir (ASC |DESC)
185
- * @param bool $exclude
186
- * @param int $limit number of paged galleries, 0 shows all galleries
187
- * @param int $start the start index for paged galleries
188
- * @return An array containing the nggImage objects representing the images in the gallery.
189
- */
190
- function get_gallery($id, $order_by = 'sortorder', $order_dir = 'ASC', $exclude = true, $limit = 0, $start = 0) {
191
-
192
- global $wpdb;
193
-
194
- // init the gallery as empty array
195
- $gallery = array();
196
-
197
- // Check for the exclude setting
198
- $exclude_clause = ($exclude) ? ' AND tt.exclude<>1 ' : '';
199
-
200
- // Say no to any other value
201
- $order_dir = ( $order_dir == 'DESC') ? 'DESC' : 'ASC';
202
- $order_by = ( empty($order_by) ) ? 'sortorder' : $order_by;
203
-
204
- // Should we limit this query ?
205
- $limit_by = ( $limit > 0 ) ? 'LIMIT ' . intval($start) . ',' . intval($limit) : '';
206
-
207
- // Query database
208
- if( is_numeric($id) )
209
- $result = $wpdb->get_results( $wpdb->prepare( "SELECT SQL_CALC_FOUND_ROWS tt.*, t.* FROM $wpdb->nggallery AS t INNER JOIN $wpdb->nggpictures AS tt ON t.gid = tt.galleryid WHERE t.gid = %d {$exclude_clause} ORDER BY tt.{$order_by} {$order_dir} {$limit_by}", $id ) );
210
- else
211
- $result = $wpdb->get_results( $wpdb->prepare( "SELECT SQL_CALC_FOUND_ROWS tt.*, t.* FROM $wpdb->nggallery AS t INNER JOIN $wpdb->nggpictures AS tt ON t.gid = tt.galleryid WHERE t.name = %s {$exclude_clause} ORDER BY tt.{$order_by} {$order_dir} {$limit_by}", $id ) );
212
-
213
- // Count the number of images and calculate the pagination
214
- if ($limit > 0) {
215
- $this->paged['total_objects'] = intval ( $wpdb->get_var( "SELECT FOUND_ROWS()" ) );
216
- $this->paged['objects_per_page'] = max ( count( $result ), $limit );
217
- $this->paged['max_objects_per_page'] = ( $limit > 0 ) ? ceil( $this->paged['total_objects'] / intval($limit)) : 1;
218
- }
219
 
220
- // Build the object
221
- if ($result) {
222
-
223
- // Now added all image data
224
- foreach ($result as $key => $value)
225
- $gallery[$key] = new nggImage( $value );
226
- }
227
-
228
- return $gallery;
229
- }
230
-
231
- /**
232
- * This function return all information about the gallery and the images inside
233
- *
234
- * @param int|string $id or $name
235
- * @param string $orderby
236
- * @param string $order (ASC |DESC)
237
- * @param bool $exclude
238
- * @return An array containing the nggImage objects representing the images in the gallery.
239
- */
240
- function get_ids_from_gallery($id, $order_by = 'sortorder', $order_dir = 'ASC', $exclude = true) {
241
-
242
- global $wpdb;
243
-
244
- // Check for the exclude setting
245
- $exclude_clause = ($exclude) ? ' AND tt.exclude<>1 ' : '';
246
-
247
- // Say no to any other value
248
- $order_dir = ( $order_dir == 'DESC') ? 'DESC' : 'ASC';
249
- $order_by = ( empty($order_by) ) ? 'sortorder' : $order_by;
250
-
251
- // Query database
252
- if( is_numeric($id) )
253
- $result = $wpdb->get_col( $wpdb->prepare( "SELECT tt.pid FROM $wpdb->nggallery AS t INNER JOIN $wpdb->nggpictures AS tt ON t.gid = tt.galleryid WHERE t.gid = %d $exclude_clause ORDER BY tt.{$order_by} $order_dir", $id ) );
254
- else
255
- $result = $wpdb->get_col( $wpdb->prepare( "SELECT tt.pid FROM $wpdb->nggallery AS t INNER JOIN $wpdb->nggpictures AS tt ON t.gid = tt.galleryid WHERE t.name = %s $exclude_clause ORDER BY tt.{$order_by} $order_dir", $id ) );
256
-
257
- return $result;
258
- }
259
-
260
- /**
261
- * Delete a gallery AND all the pictures associated to this gallery!
262
- *
263
- * @gid The gallery ID
264
- */
265
- function delete_gallery($gid) {
266
- global $wpdb;
267
-
268
- $wpdb->query( $wpdb->prepare( "DELETE FROM $wpdb->nggpictures WHERE galleryid = %d", $gid) );
269
- $wpdb->query( $wpdb->prepare( "DELETE FROM $wpdb->nggallery WHERE gid = %d", $gid) );
270
- //TODO:Remove all tag relationship
271
- return true;
272
- }
273
-
274
- /**
275
- * Get an album given its ID
276
- *
277
- * @id The album ID or name
278
- * @return A nggGallery object (false if not found)
279
- */
280
- function find_album( $id ) {
281
- global $wpdb;
282
-
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
- }
297
-
298
- // Unserialize the galleries inside the album
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
-
310
- return false;
311
- }
312
-
313
- /**
314
- * Delete an album
315
- *
316
- * @id The album ID
317
- */
318
- function delete_album( $id ) {
319
- global $wpdb;
320
-
321
- $result = $wpdb->query( $wpdb->prepare( "DELETE FROM $wpdb->nggalbum WHERE id = %d", $id) );
322
- return $result;
323
- }
324
-
325
- /**
326
- * Insert an image in the database
327
- *
328
- * @return the ID of the inserted image
329
- */
330
- function insert_image($gid, $filename, $alttext, $desc, $exclude) {
331
- global $wpdb;
332
-
333
- $result = $wpdb->query(
334
- "INSERT INTO $wpdb->nggpictures (galleryid, filename, description, alttext, exclude) VALUES "
335
- . "('$gid', '$filename', '$desc', '$alttext', '$exclude');");
336
- $pid = (int) $wpdb->insert_id;
337
-
338
- return $pid;
339
- }
340
-
341
- /**
342
- * nggdb::update_image() - Insert an image in the database
343
- *
344
- * @param int $pid id of the image
345
- * @param (optional) string|int $galleryid
346
- * @param (optional) string $filename
347
- * @param (optional) string $description
348
- * @param (optional) string $alttext
349
- * @param (optional) int $exclude (0 or 1)
350
- * @param (optional) int $sortorder
351
- * @return bool result of the ID of the inserted image
352
- */
353
- function update_image($pid, $galleryid = false, $filename = false, $description = false, $alttext = false, $exclude = false, $sortorder = false) {
354
-
355
- global $wpdb;
356
-
357
- $sql = array();
358
- $pid = (int) $pid;
359
-
360
- $update = array(
361
- 'galleryid' => $galleryid,
362
- 'filename' => $filename,
363
- 'description' => $description,
364
- 'alttext' => $alttext,
365
- 'exclude' => $exclude,
366
- 'sortorder' => $sortorder);
367
-
368
- // create the sql parameter "name = value"
369
- foreach ($update as $key => $value)
370
- if ($value)
371
- $sql[] = $key . " = '" . $value . "'";
372
-
373
- // create the final string
374
- $sql = implode(', ', $sql);
375
-
376
- if ( !empty($sql) && $pid != 0)
377
- $result = $wpdb->query( "UPDATE $wpdb->nggpictures SET $sql WHERE pid = $pid" );
378
-
379
- return $result;
380
- }
381
-
382
- /**
383
- * Get an image given its ID
384
- *
385
- * @param int $id The image ID
386
- * @return object A nggImage object representing the image (false if not found)
387
- */
388
- function find_image( $id ) {
389
- global $wpdb;
390
-
391
- // Query database
392
- $result = $wpdb->get_row( $wpdb->prepare( "SELECT tt.*, t.* FROM $wpdb->nggallery AS t INNER JOIN $wpdb->nggpictures AS tt ON t.gid = tt.galleryid WHERE tt.pid = %d ", $id ) );
393
-
394
- // Build the object from the query result
395
- if ($result) {
396
- $image = new nggImage($result);
397
- return $image;
398
- }
399
-
400
- return false;
401
- }
402
-
403
- /**
404
- * Get images given a list of IDs
405
- *
406
- * @param $pids array of picture_ids
407
- * @return An array of nggImage objects representing the images
408
- */
409
- function find_images_in_list( $pids, $exclude = false, $order = 'ASC' ) {
410
- global $wpdb;
411
-
412
- $result = array();
413
-
414
- // Check for the exclude setting
415
- $exclude_clause = ($exclude) ? ' AND t.exclude <> 1 ' : '';
416
 
417
- // Check for the exclude setting
418
- $order_clause = ($order == 'RAND') ? 'ORDER BY rand() ' : ' ORDER BY t.pid ASC' ;
419
-
420
- if ( is_array($pids) ) {
421
- $id_list = "'" . implode("', '", $pids) . "'";
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
422
 
423
- // Save Query database
424
- $images = $wpdb->get_results("SELECT t.*, tt.* FROM $wpdb->nggpictures AS t INNER JOIN $wpdb->nggallery AS tt ON t.galleryid = tt.gid WHERE t.pid IN ($id_list) $exclude_clause $order_clause", OBJECT_K);
425
-
426
- // Build the image objects from the query result
427
- if ($images) {
428
- foreach ($images as $key => $image)
429
- $result[$key] = new nggImage( $image );
430
- }
431
- }
432
- return $result;
433
- }
434
-
435
- /**
436
- * Delete an image entry from the database
437
- */
438
- function delete_image($pid) {
439
- global $wpdb;
440
-
441
- // Delete the image row
442
- $wpdb->query("DELETE FROM $wpdb->nggpictures WHERE pid = $pid");
443
-
444
- // Delete tag references
445
- wp_delete_object_term_relationships($pid, 'ngg_tag');
446
- }
447
-
448
- /**
449
- * Get the last images registered in the database with a maximum number of $limit results
450
- *
451
- * @param integer $page
452
- * @param integer $limit
453
- * @param bool $use_exclude
454
- * @return
455
- */
456
- function find_last_images($page = 0, $limit = 30, $exclude = true) {
457
- global $wpdb;
458
-
459
- // Check for the exclude setting
460
- $exclude_clause = ($exclude) ? ' AND exclude<>1 ' : '';
461
-
462
- $offset = (int) $page * $limit;
463
-
464
- $result = array();
465
- $gallery_cache = array();
466
-
467
- // Query database
468
- $images = $wpdb->get_results("SELECT * FROM $wpdb->nggpictures WHERE 1=1 $exclude_clause ORDER BY pid DESC LIMIT $offset, $limit");
469
-
470
- // Build the object from the query result
471
- if ($images) {
472
- foreach ($images as $key => $image) {
473
-
474
- // cache a gallery , so we didn't need to lookup twice
475
- if (!array_key_exists($image->galleryid, $gallery_cache))
476
- $gallery_cache[$image->galleryid] = nggdb::find_gallery($image->galleryid);
477
-
478
- // Join gallery information with picture information
479
- foreach ($gallery_cache[$image->galleryid] as $index => $value)
480
- $image->$index = $value;
481
-
482
- // Now get the complete image data
483
- $result[$key] = new nggImage( $image );
484
- }
485
  }
486
 
487
- return $result;
488
- }
489
-
490
- /**
491
- * nggdb::get_random_images() - Get an random image from one ore more gally
492
- *
493
- * @param integer $number of images
494
- * @param integer $galleryID optional a Gallery
495
- * @return A nggImage object representing the image (null if not found)
496
- */
497
- function get_random_images($number = 1, $galleryID = 0) {
498
- global $wpdb;
499
-
500
- $number = (int) $number;
501
- $galleryID = (int) $galleryID;
502
- $images = array();
503
-
504
- // Query database
505
- if ($galleryID == 0)
506
- $result = $wpdb->get_results("SELECT t.*, tt.* FROM $wpdb->nggallery AS t INNER JOIN $wpdb->nggpictures AS tt ON t.gid = tt.galleryid WHERE tt.exclude != 1 ORDER by rand() limit $number");
507
- else
508
- $result = $wpdb->get_results("SELECT t.*, tt.* FROM $wpdb->nggallery AS t INNER JOIN $wpdb->nggpictures AS tt ON t.gid = tt.galleryid WHERE t.gid = $galleryID AND tt.exclude != 1 ORDER by rand() limit {$number}");
509
-
510
- // Return the object from the query result
511
- if ($result) {
512
- foreach ($result as $image) {
513
- $images[] = new nggImage( $image );
514
- }
515
- return $images;
516
- }
517
 
518
- return null;
519
- }
520
-
521
- /**
522
- * Get all the images from a given album
523
- *
524
- * @param object|int $album The album object or the id
525
- * @param string $order_by
526
- * @param string $order_dir
527
- * @param bool $exclude
528
- * @return An array containing the nggImage objects representing the images in the album.
529
- */
530
- function find_images_in_album($album, $order_by = 'galleryid', $order_dir = 'ASC', $exclude = true) {
531
- global $wpdb;
532
-
533
- if ( !is_object($album) )
534
- $album = nggdb::find_album( $album );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
535
 
536
- // Get gallery list
537
- $gallery_list = implode(',', $album->gallery_ids);
538
- // Check for the exclude setting
539
- $exclude_clause = ($exclude) ? ' AND tt.exclude<>1 ' : '';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
540
 
541
- // Say no to any other value
542
- $order_dir = ( $order_dir == 'DESC') ? 'DESC' : 'ASC';
543
- $order_by = ( empty($order_by) ) ? 'galleryid' : $order_by;
544
-
545
- $result = $wpdb->get_results("SELECT t.*, tt.* FROM $wpdb->nggallery AS t INNER JOIN $wpdb->nggpictures AS tt ON t.gid = tt.galleryid WHERE tt.galleryid IN ($gallery_list) $exclude_clause ORDER BY tt.$order_by $order_dir");
546
- // Return the object from the query result
547
- if ($result) {
548
- foreach ($result as $image) {
549
- $images[] = new nggImage( $image );
550
- }
551
- return $images;
552
- }
553
-
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
  ?>
8
  * @since 1.0.0
9
  */
10
  class nggdb {
11
+
12
+ /**
13
+ * Holds the list of all galleries
14
+ *
15
+ * @since 1.1.0
16
+ * @access public
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
41
+ *
42
+ * @since 1.1.0
43
+ * @access public
44
+ * @var array
45
+ */
46
+ var $paged = false;
47
+
48
+ /**
49
+ * PHP4 compatibility layer for calling the PHP5 constructor.
50
+ *
51
+ */
52
+ function nggdb() {
53
+ return $this->__construct();
54
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
55
 
56
+ /**
57
+ * Init the Database Abstraction layer for NextGEN Gallery
58
+ *
59
+ */
60
+ function __construct() {
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
+
72
+ /**
73
+ * PHP5 style destructor and will run when database object is destroyed.
74
+ *
75
+ * @return bool Always true
76
+ */
77
+ function __destruct() {
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
+ wp_cache_add($key, $this->albums[$key], 'ngg_album');
103
+ }
104
+
105
+ return $this->albums;
106
+ }
107
+
108
+ /**
109
+ * Get all the galleries
110
+ *
111
+ * @param string $order_by
112
+ * @param string $order_dir
113
+ * @param bool $counter (optional) Select true when you need to count the images
114
+ * @param int $limit number of paged galleries, 0 shows all galleries
115
+ * @param int $start the start index for paged galleries
116
+ * @param bool $exclude
117
+ * @return array $galleries
118
+ */
119
+ function find_all_galleries($order_by = 'gid', $order_dir = 'ASC', $counter = false, $limit = 0, $start = 0, $exclude = true) {
120
+ global $wpdb;
121
+
122
+ // Check for the exclude setting
123
+ $exclude_clause = ($exclude) ? ' AND exclude<>1 ' : '';
124
+ $order_dir = ( $order_dir == 'DESC') ? 'DESC' : 'ASC';
125
+ $limit_by = ( $limit > 0 ) ? 'LIMIT ' . intval($start) . ',' . intval($limit) : '';
126
+ $this->galleries = $wpdb->get_results( "SELECT SQL_CALC_FOUND_ROWS * FROM $wpdb->nggallery ORDER BY {$order_by} {$order_dir} {$limit_by}", OBJECT_K );
127
+
128
+ // Count the number of galleries and calculate the pagination
129
+ if ($limit > 0) {
130
+ $this->paged['total_objects'] = intval ( $wpdb->get_var( "SELECT FOUND_ROWS()" ) );
131
+ $this->paged['objects_per_page'] = count( $this->galleries );
132
+ $this->paged['max_objects_per_page'] = ( $limit > 0 ) ? ceil( $this->paged['total_objects'] / intval($limit)) : 1;
133
+ }
134
+
135
+ if ( !$this->galleries )
136
+ return array();
137
+
138
+ // get the galleries information
139
+ foreach ($this->galleries as $key => $value) {
140
+ $galleriesID[] = $key;
141
+ // init the counter values
142
+ $this->galleries[$key]->counter = 0;
143
+ wp_cache_add($key, $this->galleries[$key], 'ngg_gallery');
144
+ }
145
+
146
+ // if we didn't need to count the images then stop here
147
+ if ( !$counter )
148
+ return $this->galleries;
149
+
150
+ // get the counter values
151
+ $picturesCounter = $wpdb->get_results('SELECT galleryid, COUNT(*) as counter FROM '.$wpdb->nggpictures.' WHERE galleryid IN (\''.implode('\',\'', $galleriesID).'\') ' . $exclude_clause . ' GROUP BY galleryid', OBJECT_K);
152
+
153
+ if ( !$picturesCounter )
154
+ return $this->galleries;
155
+
156
+ // add the counter to the gallery objekt
157
+ foreach ($picturesCounter as $key => $value) {
158
+ $this->galleries[$value->galleryid]->counter = $value->counter;
159
+ wp_cache_add($value->galleryid, $this->galleries[$value->galleryid], 'ngg_gallery');
160
+ }
161
+
162
+ return $this->galleries;
163
+ }
164
+
165
+ /**
166
+ * Get a gallery given its ID
167
+ *
168
+ * @param int|string $id or $name
169
+ * @return A nggGallery object (null if not found)
170
+ */
171
+ function find_gallery( $id ) {
172
+ global $wpdb;
173
+
174
+ if( is_numeric($id) ) {
175
+
176
+ if ( $gallery = wp_cache_get($id, 'ngg_gallery') )
177
+ return $gallery;
178
+
179
+ $gallery = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM $wpdb->nggallery WHERE gid = %d", $id ) );
180
+
181
+ } else
182
+ $gallery = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM $wpdb->nggallery WHERE name = %s", $id ) );
183
+
184
+ // Build the object from the query result
185
+ if ($gallery) {
186
+ $gallery->abspath = WINABSPATH . $gallery->path;
187
+ wp_cache_add($id, $gallery, 'ngg_gallery');
188
+
189
+ return $gallery;
190
+ } else
191
+ return false;
192
+ }
193
+
194
+ /**
195
+ * This function return all information about the gallery and the images inside
196
+ *
197
+ * @param int|string $id or $name
198
+ * @param string $order_by
199
+ * @param string $order_dir (ASC |DESC)
200
+ * @param bool $exclude
201
+ * @param int $limit number of paged galleries, 0 shows all galleries
202
+ * @param int $start the start index for paged galleries
203
+ * @return An array containing the nggImage objects representing the images in the gallery.
204
+ */
205
+ function get_gallery($id, $order_by = 'sortorder', $order_dir = 'ASC', $exclude = true, $limit = 0, $start = 0) {
206
+
207
+ global $wpdb;
208
+
209
+ // init the gallery as empty array
210
+ $gallery = array();
211
+
212
+ // Check for the exclude setting
213
+ $exclude_clause = ($exclude) ? ' AND tt.exclude<>1 ' : '';
214
+
215
+ // Say no to any other value
216
+ $order_dir = ( $order_dir == 'DESC') ? 'DESC' : 'ASC';
217
+ $order_by = ( empty($order_by) ) ? 'sortorder' : $order_by;
218
+
219
+ // Should we limit this query ?
220
+ $limit_by = ( $limit > 0 ) ? 'LIMIT ' . intval($start) . ',' . intval($limit) : '';
221
+
222
+ // Query database
223
+ if( is_numeric($id) )
224
+ $result = $wpdb->get_results( $wpdb->prepare( "SELECT SQL_CALC_FOUND_ROWS tt.*, t.* FROM $wpdb->nggallery AS t INNER JOIN $wpdb->nggpictures AS tt ON t.gid = tt.galleryid WHERE t.gid = %d {$exclude_clause} ORDER BY tt.{$order_by} {$order_dir} {$limit_by}", $id ), OBJECT_K );
225
+ else
226
+ $result = $wpdb->get_results( $wpdb->prepare( "SELECT SQL_CALC_FOUND_ROWS tt.*, t.* FROM $wpdb->nggallery AS t INNER JOIN $wpdb->nggpictures AS tt ON t.gid = tt.galleryid WHERE t.name = %s {$exclude_clause} ORDER BY tt.{$order_by} {$order_dir} {$limit_by}", $id ), OBJECT_K );
227
+
228
+ // Count the number of images and calculate the pagination
229
+ if ($limit > 0) {
230
+ $this->paged['total_objects'] = intval ( $wpdb->get_var( "SELECT FOUND_ROWS()" ) );
231
+ $this->paged['objects_per_page'] = max ( count( $result ), $limit );
232
+ $this->paged['max_objects_per_page'] = ( $limit > 0 ) ? ceil( $this->paged['total_objects'] / intval($limit)) : 1;
233
+ }
234
+
235
+ // Build the object
236
+ if ($result) {
237
+
238
+ // Now added all image data
239
+ foreach ($result as $key => $value)
240
+ $gallery[$key] = new nggImage( $value );
241
+ }
242
+
243
+ // Could not add to cache, the structure is different to find_gallery() cache_add, need rework
244
+ //wp_cache_add($id, $gallery, 'ngg_gallery');
245
+
246
+ return $gallery;
247
+ }
248
+
249
+ /**
250
+ * This function return all information about the gallery and the images inside
251
+ *
252
+ * @param int|string $id or $name
253
+ * @param string $orderby
254
+ * @param string $order (ASC |DESC)
255
+ * @param bool $exclude
256
+ * @return An array containing the nggImage objects representing the images in the gallery.
257
+ */
258
+ function get_ids_from_gallery($id, $order_by = 'sortorder', $order_dir = 'ASC', $exclude = true) {
259
+
260
+ global $wpdb;
261
+
262
+ // Check for the exclude setting
263
+ $exclude_clause = ($exclude) ? ' AND tt.exclude<>1 ' : '';
264
+
265
+ // Say no to any other value
266
+ $order_dir = ( $order_dir == 'DESC') ? 'DESC' : 'ASC';
267
+ $order_by = ( empty($order_by) ) ? 'sortorder' : $order_by;
268
+
269
+ // Query database
270
+ if( is_numeric($id) )
271
+ $result = $wpdb->get_col( $wpdb->prepare( "SELECT tt.pid FROM $wpdb->nggallery AS t INNER JOIN $wpdb->nggpictures AS tt ON t.gid = tt.galleryid WHERE t.gid = %d $exclude_clause ORDER BY tt.{$order_by} $order_dir", $id ) );
272
+ else
273
+ $result = $wpdb->get_col( $wpdb->prepare( "SELECT tt.pid FROM $wpdb->nggallery AS t INNER JOIN $wpdb->nggpictures AS tt ON t.gid = tt.galleryid WHERE t.name = %s $exclude_clause ORDER BY tt.{$order_by} $order_dir", $id ) );
274
+
275
+ return $result;
276
+ }
277
+
278
+ /**
279
+ * Delete a gallery AND all the pictures associated to this gallery!
280
+ *
281
+ * @id The gallery ID
282
+ */
283
+ function delete_gallery( $id ) {
284
+ global $wpdb;
285
+
286
+ $wpdb->query( $wpdb->prepare( "DELETE FROM $wpdb->nggpictures WHERE galleryid = %d", $id) );
287
+ $wpdb->query( $wpdb->prepare( "DELETE FROM $wpdb->nggallery WHERE gid = %d", $id) );
288
+
289
+ wp_cache_delete($id, 'ngg_gallery');
290
+
291
+ //TODO:Remove all tag relationship
292
+ return true;
293
+ }
294
+
295
+ /**
296
+ * Get an album given its ID
297
+ *
298
+ * @id The album ID or name
299
+ * @return A nggGallery object (false if not found)
300
+ */
301
+ function find_album( $id ) {
302
+ global $wpdb;
303
+
304
+ if ( $album = wp_cache_get($id, 'ngg_album') )
305
+ return $album;
306
+
307
+ // Query database
308
+ if ( is_numeric($id) && $id != 0 ) {
309
+ $album = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM $wpdb->nggalbum WHERE id = %d", $id) );
310
+ } elseif ( $id == 'all' || (is_numeric($id) && $id == 0) ) {
311
+ // init the object and fill it
312
+ $album = new stdClass();
313
+ $album->id = 'all';
314
+ $album->name = __('Album overview','nggallery');
315
+ $album->albumdesc = __('Album overview','nggallery');
316
+ $album->previewpic = 0;
317
+ $album->sortorder = serialize( $wpdb->get_col("SELECT gid FROM $wpdb->nggallery") );
318
+ } else {
319
+ $album = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM $wpdb->nggalbum WHERE name = '%s'", $id) );
320
+ }
321
+
322
+ // Unserialize the galleries inside the album
323
+ if ( $album ) {
324
+ if ( !empty( $album->sortorder ) )
325
+ $album->gallery_ids = unserialize( $album->sortorder );
326
+
327
+ // it was a bad idea to use a object, stripslashes_deep() could not used here, learn from it
328
+ $album->albumdesc = stripslashes($album->albumdesc);
329
+ $album->name = stripslashes($album->name);
330
+
331
+ wp_cache_add($id, $album, 'ngg_album');
332
+ return $album;
333
+ }
334
+
335
+ return false;
336
+ }
337
+
338
+ /**
339
+ * Delete an album
340
+ *
341
+ * @id The album ID
342
+ */
343
+ function delete_album( $id ) {
344
+ global $wpdb;
345
+
346
+ $result = $wpdb->query( $wpdb->prepare( "DELETE FROM $wpdb->nggalbum WHERE id = %d", $id) );
347
+ wp_cache_delete($id, 'ngg_album');
348
+
349
+ return $result;
350
+ }
351
+
352
+ /**
353
+ * Insert an image in the database
354
+ *
355
+ * @return the ID of the inserted image
356
+ */
357
+ function insert_image($gid, $filename, $alttext, $desc, $exclude) {
358
+ global $wpdb;
359
+
360
+ $result = $wpdb->query(
361
+ "INSERT INTO $wpdb->nggpictures (galleryid, filename, description, alttext, exclude) VALUES "
362
+ . "('$gid', '$filename', '$desc', '$alttext', '$exclude');");
363
+ $pid = (int) $wpdb->insert_id;
364
+ wp_cache_delete($gid, 'ngg_gallery');
365
+
366
+ return $pid;
367
+ }
368
+
369
+ /**
370
+ * nggdb::update_image() - Insert an image in the database
371
+ *
372
+ * @param int $pid id of the image
373
+ * @param (optional) string|int $galleryid
374
+ * @param (optional) string $filename
375
+ * @param (optional) string $description
376
+ * @param (optional) string $alttext
377
+ * @param (optional) int $exclude (0 or 1)
378
+ * @param (optional) int $sortorder
379
+ * @return bool result of the ID of the inserted image
380
+ */
381
+ function update_image($pid, $galleryid = false, $filename = false, $description = false, $alttext = false, $exclude = false, $sortorder = false) {
382
+
383
+ global $wpdb;
384
+
385
+ $sql = array();
386
+ $pid = (int) $pid;
387
+
388
+ $update = array(
389
+ 'galleryid' => $galleryid,
390
+ 'filename' => $filename,
391
+ 'description' => $description,
392
+ 'alttext' => $alttext,
393
+ 'exclude' => $exclude,
394
+ 'sortorder' => $sortorder);
395
+
396
+ // create the sql parameter "name = value"
397
+ foreach ($update as $key => $value)
398
+ if ($value)
399
+ $sql[] = $key . " = '" . $value . "'";
400
+
401
+ // create the final string
402
+ $sql = implode(', ', $sql);
403
+
404
+ if ( !empty($sql) && $pid != 0)
405
+ $result = $wpdb->query( "UPDATE $wpdb->nggpictures SET $sql WHERE pid = $pid" );
406
+
407
+ wp_cache_delete($pid, 'ngg_image');
408
+
409
+ return $result;
410
+ }
411
+
412
+ /**
413
+ * Get an image given its ID
414
+ *
415
+ * @param int $id The image ID
416
+ * @return object A nggImage object representing the image (false if not found)
417
+ */
418
+ function find_image( $id ) {
419
+ global $wpdb;
420
+
421
+ if ( $image = wp_cache_get($id, 'ngg_image') )
422
+ return $image;
423
+
424
+ $result = $wpdb->get_row( $wpdb->prepare( "SELECT tt.*, t.* FROM $wpdb->nggallery AS t INNER JOIN $wpdb->nggpictures AS tt ON t.gid = tt.galleryid WHERE tt.pid = %d ", $id ) );
425
+
426
+ // Build the object from the query result
427
+ if ($result) {
428
+ $image = new nggImage($result);
429
+ return $image;
430
+ }
431
+
432
+ return false;
433
+ }
434
+
435
+ /**
436
+ * Get images given a list of IDs
437
+ *
438
+ * @param $pids array of picture_ids
439
+ * @return An array of nggImage objects representing the images
440
+ */
441
+ function find_images_in_list( $pids, $exclude = false, $order = 'ASC' ) {
442
+ global $wpdb;
443
+
444
+ $result = array();
445
+
446
+ // Check for the exclude setting
447
+ $exclude_clause = ($exclude) ? ' AND t.exclude <> 1 ' : '';
448
+
449
+ // Check for the exclude setting
450
+ $order_clause = ($order == 'RAND') ? 'ORDER BY rand() ' : ' ORDER BY t.pid ASC' ;
451
+
452
+ if ( is_array($pids) ) {
453
+ $id_list = "'" . implode("', '", $pids) . "'";
454
+
455
+ // Save Query database
456
+ $images = $wpdb->get_results("SELECT t.*, tt.* FROM $wpdb->nggpictures AS t INNER JOIN $wpdb->nggallery AS tt ON t.galleryid = tt.gid WHERE t.pid IN ($id_list) $exclude_clause $order_clause", OBJECT_K);
457
+
458
+ // Build the image objects from the query result
459
+ if ($images) {
460
+ foreach ($images as $key => $image)
461
+ $result[$key] = new nggImage( $image );
462
+ }
463
+ }
464
+ return $result;
465
+ }
466
+
467
+ /**
468
+ * Add an image to the database
469
+ *
470
+ * @since V1.4.0
471
+ * @param int $pid id of the gallery
472
+ * @param (optional) string|int $galleryid
473
+ * @param (optional) string $filename
474
+ * @param (optional) string $description
475
+ * @param (optional) string $alttext
476
+ * @param (optional) array $meta data
477
+ * @param (optional) int $post_id (required for sync with WP media lib)
478
+ * @param (optional) string $imagedate
479
+ * @param (optional) int $exclude (0 or 1)
480
+ * @param (optional) int $sortorder
481
+ * @return bool result of the ID of the inserted image
482
+ */
483
+ function add_image( $id = false, $filename = false, $description = '', $alttext = '', $meta_data = false, $post_id = 0, $imagedate = '0000-00-00 00:00:00', $exclude = 0, $sortorder = 0 ) {
484
+ global $wpdb;
485
+
486
+ if ( is_array($meta_data) )
487
+ $meta_data = serialize($meta_data);
488
 
489
+ // Add the image
490
+ if ( false === $wpdb->query( $wpdb->prepare("INSERT INTO $wpdb->nggpictures (galleryid, filename, description, alttext, meta_data, post_id, imagedate, exclude, sortorder)
491
+ VALUES (%d, %s, %s, %s, %s, %d, %s, %d, %d)", $id, $filename, $description, $alttext, $meta_data, $post_id, $imagedate, $exclude, $sortorder ) ) ) {
492
+ return false;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
493
  }
494
 
495
+ $imageID = (int) $wpdb->insert_id;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
496
 
497
+ // Remove from cache the galley, needs to be rebuild now
498
+ wp_cache_delete( $id, 'ngg_gallery');
499
+ //and give me the new id
500
+
501
+ return $imageID;
502
+ }
503
+
504
+ /**
505
+ * Delete an image entry from the database
506
+ * @param integer $id is the Image ID
507
+ */
508
+ function delete_image( $id ) {
509
+ global $wpdb;
510
+
511
+ // Delete the image
512
+ $result = $wpdb->query( $wpdb->prepare( "DELETE FROM $wpdb->nggpictures WHERE pid = %d", $id) );
513
+
514
+ // Delete tag references
515
+ wp_delete_object_term_relationships( $id, 'ngg_tag');
516
+
517
+ // Remove from cache
518
+ wp_cache_delete( $id, 'ngg_image');
519
+
520
+ return $result;
521
+ }
522
+
523
+ /**
524
+ * Get the last images registered in the database with a maximum number of $limit results
525
+ *
526
+ * @param integer $page
527
+ * @param integer $limit
528
+ * @param bool $use_exclude
529
+ * @param int $galleryId Only look for images with this gallery id, or in all galleries if id is 0
530
+ * @param string $orderby is one of "id" (default, order by pid), "date" (order by exif date), sort (order by user sort order)
531
+ * @return
532
+ */
533
+ function find_last_images($page = 0, $limit = 30, $exclude = true, $galleryId = 0, $orderby = "id") {
534
+ global $wpdb;
535
+
536
+ // Check for the exclude setting
537
+ $exclude_clause = ($exclude) ? ' AND exclude<>1 ' : '';
538
+
539
+ $offset = (int) $page * $limit;
540
+
541
+ $galleryId = (int) $galleryId;
542
+ $gallery_clause = ($galleryId === 0) ? '' : ' AND galleryid = ' . $galleryId . ' ';
543
 
544
+ // default order by pid
545
+ $order = 'pid DESC';
546
+ switch ($orderby) {
547
+ case 'date':
548
+ $order = 'imagedate DESC';
549
+ break;
550
+ case 'sort':
551
+ $order = 'sortorder ASC';
552
+ break;
553
+ }
554
+
555
+ $result = array();
556
+ $gallery_cache = array();
557
+
558
+ // Query database
559
+ $images = $wpdb->get_results("SELECT * FROM $wpdb->nggpictures WHERE 1=1 $exclude_clause $gallery_clause ORDER BY $order LIMIT $offset, $limit");
560
+
561
+ // Build the object from the query result
562
+ if ($images) {
563
+ foreach ($images as $key => $image) {
564
+
565
+ // cache a gallery , so we didn't need to lookup twice
566
+ if (!array_key_exists($image->galleryid, $gallery_cache))
567
+ $gallery_cache[$image->galleryid] = nggdb::find_gallery($image->galleryid);
568
+
569
+ // Join gallery information with picture information
570
+ foreach ($gallery_cache[$image->galleryid] as $index => $value)
571
+ $image->$index = $value;
572
+
573
+ // Now get the complete image data
574
+ $result[$key] = new nggImage( $image );
575
+ }
576
+ }
577
+
578
+ return $result;
579
+ }
580
+
581
+ /**
582
+ * nggdb::get_random_images() - Get an random image from one ore more gally
583
+ *
584
+ * @param integer $number of images
585
+ * @param integer $galleryID optional a Gallery
586
+ * @return A nggImage object representing the image (null if not found)
587
+ */
588
+ function get_random_images($number = 1, $galleryID = 0) {
589
+ global $wpdb;
590
+
591
+ $number = (int) $number;
592
+ $galleryID = (int) $galleryID;
593
+ $images = array();
594
+
595
+ // Query database
596
+ if ($galleryID == 0)
597
+ $result = $wpdb->get_results("SELECT t.*, tt.* FROM $wpdb->nggallery AS t INNER JOIN $wpdb->nggpictures AS tt ON t.gid = tt.galleryid WHERE tt.exclude != 1 ORDER by rand() limit $number");
598
+ else
599
+ $result = $wpdb->get_results("SELECT t.*, tt.* FROM $wpdb->nggallery AS t INNER JOIN $wpdb->nggpictures AS tt ON t.gid = tt.galleryid WHERE t.gid = $galleryID AND tt.exclude != 1 ORDER by rand() limit {$number}");
600
+
601
+ // Return the object from the query result
602
+ if ($result) {
603
+ foreach ($result as $image) {
604
+ $images[] = new nggImage( $image );
605
+ }
606
+ return $images;
607
+ }
608
+
609
+ return null;
610
+ }
611
 
612
+ /**
613
+ * Get all the images from a given album
614
+ *
615
+ * @param object|int $album The album object or the id
616
+ * @param string $order_by
617
+ * @param string $order_dir
618
+ * @param bool $exclude
619
+ * @return An array containing the nggImage objects representing the images in the album.
620
+ */
621
+ function find_images_in_album($album, $order_by = 'galleryid', $order_dir = 'ASC', $exclude = true) {
622
+ global $wpdb;
623
+
624
+ if ( !is_object($album) )
625
+ $album = nggdb::find_album( $album );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
626
 
627
+ // Get gallery list
628
+ $gallery_list = implode(',', $album->gallery_ids);
629
+ // Check for the exclude setting
630
+ $exclude_clause = ($exclude) ? ' AND tt.exclude<>1 ' : '';
631
+
632
+ // Say no to any other value
633
+ $order_dir = ( $order_dir == 'DESC') ? 'DESC' : 'ASC';
634
+ $order_by = ( empty($order_by) ) ? 'galleryid' : $order_by;
635
+
636
+ $result = $wpdb->get_results("SELECT t.*, tt.* FROM $wpdb->nggallery AS t INNER JOIN $wpdb->nggpictures AS tt ON t.gid = tt.galleryid WHERE tt.galleryid IN ($gallery_list) $exclude_clause ORDER BY tt.$order_by $order_dir");
637
+ // Return the object from the query result
638
+ if ($result) {
639
+ foreach ($result as $image) {
640
+ $images[] = new nggImage( $image );
641
+ }
642
+ return $images;
643
+ }
644
+
645
+ return null;
646
+ }
647
+
648
+ /**
649
+ * search for images and return the result
650
+ *
651
+ * @since 1.3.0
652
+ * @param string $request
653
+ * @return Array Result of the request
654
+ */
655
+ function search_for_images( $request ) {
656
+ global $wpdb;
657
+
658
+ // If a search pattern is specified, load the posts that match
659
+ if ( !empty($request) ) {
660
+ // added slashes screw with quote grouping when done early, so done later
661
+ $request = stripslashes($request);
662
+
663
+ // split the words it a array if seperated by a space or comma
664
+ preg_match_all('/".*?("|$)|((?<=[\\s",+])|^)[^\\s",+]+/', $request, $matches);
665
+ $search_terms = array_map(create_function('$a', 'return trim($a, "\\"\'\\n\\r ");'), $matches[0]);
666
+
667
+ $n = '%';
668
+ $searchand = '';
669
+
670
+ foreach( (array) $search_terms as $term) {
671
+ $term = addslashes_gpc($term);
672
+ $search .= "{$searchand}((tt.description LIKE '{$n}{$term}{$n}') OR (tt.alttext LIKE '{$n}{$term}{$n}') OR (tt.filename LIKE '{$n}{$term}{$n}'))";
673
+ $searchand = ' AND ';
674
+ }
675
+
676
+ $term = $wpdb->escape($request);
677
+ if (count($search_terms) > 1 && $search_terms[0] != $request )
678
+ $search .= " OR (tt.description LIKE '{$n}{$term}{$n}') OR (tt.alttext LIKE '{$n}{$term}{$n}') OR (tt.filename LIKE '{$n}{$term}{$n}')";
679
+
680
+ if ( !empty($search) )
681
+ $search = " AND ({$search}) ";
682
+ }
683
+
684
+ // build the final query
685
+ $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 ";
686
+ $result = $wpdb->get_results($query);
687
+
688
+ // Return the object from the query result
689
+ if ($result) {
690
+ foreach ($result as $image) {
691
+ $images[] = new nggImage( $image );
692
+ }
693
+ return $images;
694
+ }
695
+
696
+ return null;
697
+ }
698
+
699
+ /**
700
+ * search for a filename
701
+ *
702
+ * @since 1.4.0
703
+ * @param string $filename
704
+ * @param int (optional) $galleryID
705
+ * @return Array Result of the request
706
+ */
707
+ function search_for_file( $filename, $galleryID = false ) {
708
+ global $wpdb;
709
+
710
+ // If a search pattern is specified, load the posts that match
711
+ if ( !empty($filename) ) {
712
+ // added slashes screw with quote grouping when done early, so done later
713
+ $term = $wpdb->escape($filename);
714
+
715
+ $where_clause = '';
716
+ if ( is_numeric($galleryID) ) {
717
+ $id = (int) $galleryID;
718
+ $where_clause = " AND tt.galleryid = {$id}";
719
+ }
720
+ }
721
+
722
+ // build the final query
723
+ $query = "SELECT t.*, tt.* FROM $wpdb->nggallery AS t INNER JOIN $wpdb->nggpictures AS tt ON t.gid = tt.galleryid WHERE tt.filename = '{$term}' {$where_clause} ORDER BY tt.pid ASC ";
724
+ $result = $wpdb->get_row($query);
725
+
726
+ // Return the object from the query result
727
+ if ($result) {
728
+ $image = new nggImage( $result );
729
+ return $image;
730
+ }
731
+
732
+ return null;
733
+ }
734
 
735
+
736
+ /**
737
+ * Update or add meta data for an image
738
+ *
739
+ * @since 1.4.0
740
+ * @param int $id The image ID
741
+ * @param array $values An array with existing or new values
742
+ * @return bool result of query
743
+ */
744
+ function update_image_meta( $id, $new_values ) {
745
+ global $wpdb;
746
+
747
+ // Query database for existing values
748
+ // Use cache object
749
+ $old_values = $wpdb->get_var( $wpdb->prepare( "SELECT meta_data FROM $wpdb->nggpictures WHERE pid = %d ", $id ) );
750
+ $old_values = unserialize( $old_values );
751
 
752
+ $meta = array_merge( (array)$old_values, (array)$new_values );
753
+
754
+ $result = $wpdb->query( $wpdb->prepare("UPDATE $wpdb->nggpictures SET meta_data = %s WHERE pid = %d", serialize($meta), $id) );
755
+
756
+ wp_cache_delete($id, 'ngg_image');
757
+
758
+ return $result;
759
+ }
760
 
761
  }
762
  endif;
763
 
764
  if ( ! isset($GLOBALS['nggdb']) ) {
765
+ /**
766
+ * Initate the NextGEN Gallery Database Object, for later cache reasons
767
+ * @global object $nggdb Creates a new nggdb object
768
+ * @since 1.1.0
769
+ */
770
+ unset($GLOBALS['nggdb']);
771
+ $GLOBALS['nggdb'] =& new nggdb();
772
  }
773
  ?>
lib/rewrite.php CHANGED
@@ -64,9 +64,9 @@ class nggRewrite {
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]+)/
68
  gallerytag -> /tags/([^/]+)/
69
- nav : nggpage -> /page-([0-9]+)/
70
  show : show=slide -> /slideshow/
71
  show=gallery -> /images/
72
  **/
@@ -91,7 +91,7 @@ class nggRewrite {
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']) )
@@ -191,9 +191,10 @@ class nggRewrite {
191
 
192
  if ( !empty($nggpage) )
193
  $new_title .= __('Page', 'nggallery') . ' ' . intval($nggpage) . $sep ;
194
-
195
- //if ( !empty($tag) )
196
- //$new_title .= attribute_escape($tag) . $sep;
 
197
 
198
  // for all sub pages we add the canonical tag
199
  if ( !empty($new_title) )
@@ -229,7 +230,8 @@ class nggRewrite {
229
  // rewrite rules for pages
230
  $this->slug.'/page-([0-9]+)/?$' => 'index.php?page_id=$matches[1]',
231
  $this->slug.'/page-([0-9]+)/page-([0-9]+)/?$' => 'index.php?page_id=$matches[1]&nggpage=$matches[2]',
232
- $this->slug.'/page-([0-9]+)/page/([0-9]+)/?$' => 'index.php?page_id=$matches[1]&pid=$matches[2]',
 
233
  $this->slug.'/page-([0-9]+)/slideshow/?$' => 'index.php?page_id=$matches[1]&show=slide',
234
  $this->slug.'/page-([0-9]+)/images/?$' => 'index.php?page_id=$matches[1]&show=gallery',
235
  $this->slug.'/page-([0-9]+)/tags/([^/]+)/?$' => 'index.php?page_id=$matches[1]&gallerytag=$matches[2]',
@@ -247,7 +249,8 @@ class nggRewrite {
247
  // rewrite rules for posts
248
  $this->slug.'/post/([^/]+)/?$' => 'index.php?name=$matches[1]',
249
  $this->slug.'/post/([^/]+)/page-([0-9]+)/?$' => 'index.php?name=$matches[1]&nggpage=$matches[2]',
250
- $this->slug.'/post/([^/]+)/page/([0-9]+)/?$' => 'index.php?name=$matches[1]&pid=$matches[2]',
 
251
  $this->slug.'/post/([^/]+)/slideshow/?$' => 'index.php?name=$matches[1]&show=slide',
252
  $this->slug.'/post/([^/]+)/images/?$' => 'index.php?name=$matches[1]&show=gallery',
253
  $this->slug.'/post/([^/]+)/tags/([^/]+)/?$' => 'index.php?name=$matches[1]&gallerytag=$matches[2]',
64
  /** urlconstructor = slug | type | tags | [nav] | [show]
65
  type : page | post
66
  tags : album, gallery -> /album-([0-9]+)/gallery-([0-9]+)/
67
+ pid -> /image/([0-9]+)/
68
  gallerytag -> /tags/([^/]+)/
69
+ nav : nggpage -> /page-([0-9]+)/
70
  show : show=slide -> /slideshow/
71
  show=gallery -> /images/
72
  **/
91
  $url .= '/tags/' . $args['gallerytag'];
92
 
93
  if (isset ($args['pid']))
94
+ $url .= '/image/' . $args['pid'];
95
 
96
  // 4. Navigation
97
  if (isset ($args['nggpage']) && ($args['nggpage']) )
191
 
192
  if ( !empty($nggpage) )
193
  $new_title .= __('Page', 'nggallery') . ' ' . intval($nggpage) . $sep ;
194
+
195
+ //esc_attr should avoid XSS like http://domain/?gallerytag=%3C/title%3E%3Cscript%3Ealert(document.cookie)%3C/script%3E
196
+ if ( !empty($tag) )
197
+ $new_title .= esc_attr($tag) . $sep;
198
 
199
  // for all sub pages we add the canonical tag
200
  if ( !empty($new_title) )
230
  // rewrite rules for pages
231
  $this->slug.'/page-([0-9]+)/?$' => 'index.php?page_id=$matches[1]',
232
  $this->slug.'/page-([0-9]+)/page-([0-9]+)/?$' => 'index.php?page_id=$matches[1]&nggpage=$matches[2]',
233
+ $this->slug.'/page-([0-9]+)/image/([0-9]+)/?$' => 'index.php?page_id=$matches[1]&pid=$matches[2]',
234
+ $this->slug.'/page-([0-9]+)/image/([0-9]+)/page-([0-9]+)/?$' => 'index.php?page_id=$matches[1]&pid=$matches[2]&nggpage=$matches[3]',
235
  $this->slug.'/page-([0-9]+)/slideshow/?$' => 'index.php?page_id=$matches[1]&show=slide',
236
  $this->slug.'/page-([0-9]+)/images/?$' => 'index.php?page_id=$matches[1]&show=gallery',
237
  $this->slug.'/page-([0-9]+)/tags/([^/]+)/?$' => 'index.php?page_id=$matches[1]&gallerytag=$matches[2]',
249
  // rewrite rules for posts
250
  $this->slug.'/post/([^/]+)/?$' => 'index.php?name=$matches[1]',
251
  $this->slug.'/post/([^/]+)/page-([0-9]+)/?$' => 'index.php?name=$matches[1]&nggpage=$matches[2]',
252
+ $this->slug.'/post/([^/]+)/image/([0-9]+)/?$' => 'index.php?name=$matches[1]&pid=$matches[2]',
253
+ $this->slug.'/post/([^/]+)/image/([0-9]+)/page-([0-9]+)/?$' => 'index.php?name=$matches[1]&pid=$matches[2]&nggpage=$matches[3]',
254
  $this->slug.'/post/([^/]+)/slideshow/?$' => 'index.php?name=$matches[1]&show=slide',
255
  $this->slug.'/post/([^/]+)/images/?$' => 'index.php?name=$matches[1]&show=gallery',
256
  $this->slug.'/post/([^/]+)/tags/([^/]+)/?$' => 'index.php?name=$matches[1]&gallerytag=$matches[2]',
lib/shortcodes.php CHANGED
@@ -8,338 +8,359 @@
8
  */
9
 
10
  class NextGEN_shortcodes {
11
-
12
- // register the new shortcodes
13
- function NextGEN_shortcodes() {
14
-
15
- // convert the old shortcode
16
- add_filter('the_content', array(&$this, 'convert_shortcode'));
17
-
18
- // do_shortcode on the_excerpt could causes several unwanted output. Uncomment it on your own risk
19
- // add_filter('the_excerpt', array(&$this, 'convert_shortcode'));
20
- // add_filter('the_excerpt', 'do_shortcode', 11);
21
-
22
- add_shortcode( 'singlepic', array(&$this, 'show_singlepic' ) );
23
- add_shortcode( 'album', array(&$this, 'show_album' ) );
24
- add_shortcode( 'nggallery', array(&$this, 'show_gallery') );
25
- add_shortcode( 'imagebrowser', array(&$this, 'show_imagebrowser' ) );
26
- add_shortcode( 'slideshow', array(&$this, 'show_slideshow' ) );
27
- add_shortcode( 'nggtags', array(&$this, 'show_tags' ) );
28
- add_shortcode( 'thumb', array(&$this, 'show_thumbs' ) );
29
- add_shortcode( 'random', array(&$this, 'show_random' ) );
30
- add_shortcode( 'recent', array(&$this, 'show_recent' ) );
31
- add_shortcode( 'tagcloud', array(&$this, 'show_tagcloud' ) );
32
- }
33
 
34
- /**
35
- * NextGEN_shortcodes::convert_shortcode()
36
- * convert old shortcodes to the new WordPress core style
37
- * [gallery=1] ->> [nggallery id=1]
38
- *
39
- * @param string $content Content to search for shortcodes
40
- * @return string Content with new shortcodes.
41
- */
42
- function convert_shortcode($content) {
43
-
44
- $ngg_options = nggGallery::get_option('ngg_options');
45
-
46
- if ( stristr( $content, '[singlepic' )) {
47
- $search = "@\[singlepic=(\d+)(|,\d+|,)(|,\d+|,)(|,watermark|,web20|,)(|,right|,center|,left|,)\]@i";
48
- if (preg_match_all($search, $content, $matches, PREG_SET_ORDER)) {
49
 
50
- foreach ($matches as $match) {
51
- // remove the comma
52
- $match[2] = ltrim($match[2], ',');
53
- $match[3] = ltrim($match[3], ',');
54
- $match[4] = ltrim($match[4], ',');
55
- $match[5] = ltrim($match[5], ',');
56
- $replace = "[singlepic id=\"{$match[1]}\" w=\"{$match[2]}\" h=\"{$match[3]}\" mode=\"{$match[4]}\" float=\"{$match[5]}\" ]";
57
- $content = str_replace ($match[0], $replace, $content);
58
- }
59
- }
60
- }
61
 
62
- if ( stristr( $content, '[album' )) {
63
- $search = "@(?:<p>)*\s*\[album\s*=\s*(\w+|^\+)(|,extend|,compact)\]\s*(?:</p>)*@i";
64
- if (preg_match_all($search, $content, $matches, PREG_SET_ORDER)) {
65
 
66
- foreach ($matches as $match) {
67
- // remove the comma
68
- $match[2] = ltrim($match[2],',');
69
- $replace = "[album id=\"{$match[1]}\" template=\"{$match[2]}\"]";
70
- $content = str_replace ($match[0], $replace, $content);
71
- }
72
- }
73
- }
74
 
75
- if ( stristr( $content, '[gallery' )) {
76
- $search = "@(?:<p>)*\s*\[gallery\s*=\s*(\w+|^\+)\]\s*(?:</p>)*@i";
77
- if (preg_match_all($search, $content, $matches, PREG_SET_ORDER)) {
78
 
79
- foreach ($matches as $match) {
80
- $replace = "[nggallery id=\"{$match[1]}\"]";
81
- $content = str_replace ($match[0], $replace, $content);
82
- }
83
- }
84
- }
85
 
86
- if ( stristr( $content, '[imagebrowser' )) {
87
- $search = "@(?:<p>)*\s*\[imagebrowser\s*=\s*(\w+|^\+)\]\s*(?:</p>)*@i";
88
- if (preg_match_all($search, $content, $matches, PREG_SET_ORDER)) {
89
 
90
- foreach ($matches as $match) {
91
- $replace = "[imagebrowser id=\"{$match[1]}\"]";
92
- $content = str_replace ($match[0], $replace, $content);
93
- }
94
- }
95
- }
96
 
97
- if ( stristr( $content, '[slideshow' )) {
98
- $search = "@(?:<p>)*\s*\[slideshow\s*=\s*(\w+|^\+)(|,(\d+)|,)(|,(\d+))\]\s*(?:</p>)*@i";
99
- if (preg_match_all($search, $content, $matches, PREG_SET_ORDER)) {
100
 
101
- foreach ($matches as $match) {
102
- // remove the comma
103
- $match[3] = ltrim($match[3],',');
104
- $match[5] = ltrim($match[5],',');
105
- $replace = "[slideshow id=\"{$match[1]}\" w=\"{$match[3]}\" h=\"{$match[5]}\"]";
106
- $content = str_replace ($match[0], $replace, $content);
107
- }
108
- }
109
- }
110
 
111
- if ( stristr( $content, '[tags' )) {
112
- $search = "@(?:<p>)*\s*\[tags\s*=\s*(.*?)\s*\]\s*(?:</p>)*@i";
113
- if (preg_match_all($search, $content, $matches, PREG_SET_ORDER)) {
114
 
115
- foreach ($matches as $match) {
116
- $replace = "[nggtags gallery=\"{$match[1]}\"]";
117
- $content = str_replace ($match[0], $replace, $content);
118
- }
119
- }
120
- }
121
-
122
- if ( stristr( $content, '[albumtags' )) {
123
- $search = "@(?:<p>)*\s*\[albumtags\s*=\s*(.*?)\s*\]\s*(?:</p>)*@i";
124
- if (preg_match_all($search, $content, $matches, PREG_SET_ORDER)) {
125
 
126
- foreach ($matches as $match) {
127
- $replace = "[nggtags album=\"{$match[1]}\"]";
128
- $content = str_replace ($match[0], $replace, $content);
129
- }
130
- }
131
- }
132
 
133
- // attach related images based on category or tags
134
- if ($ngg_options['activateTags'])
135
- $content .= nggShowRelatedImages();
136
-
137
- return $content;
138
- }
139
-
140
- /**
141
- * Function to show a single picture:
142
- *
143
- * [singlepic id="10" float="none|left|right" width="" height="" mode="none|watermark|web20" template="filename" /]
144
- *
145
- * where
146
- * - id is one picture id
147
- * - float is the CSS float property to apply to the thumbnail
148
- * - width is width of the single picture you want to show (original width if this parameter is missing)
149
- * - height is height of the single picture you want to show (original height if this parameter is missing)
150
- * - mode is one of none, watermark or web20 (transformation applied to the picture)
151
- * - template is a name for a gallery template, which is located in themefolder/nggallery or plugins/nextgen-gallery/view
152
- *
153
- * If the tag contains some text, this will be inserted as an additional caption to the picture too. Example:
154
- * [singlepic id="10"]This is an additional caption[/singlepic]
155
- * This tag will show a picture with under it two HTML span elements containing respectively the alttext of the picture
156
- * and the additional caption specified in the tag.
157
- *
158
- * @param array $atts
159
- * @param string $caption text
160
- * @return the content
161
- */
162
- function show_singlepic( $atts, $content = '' ) {
163
-
164
- extract(shortcode_atts(array(
165
- 'id' => 0,
166
- 'w' => '',
167
- 'h' => '',
168
- 'mode' => '',
169
- 'float' => '',
170
- 'template' => ''
171
- ), $atts ));
172
-
173
- $out = nggSinglePicture($id, $w, $h, $mode, $float, $template, $content);
174
-
175
- return $out;
176
- }
 
 
177
 
178
- function show_album( $atts ) {
179
-
180
- extract(shortcode_atts(array(
181
- 'id' => 0,
182
- 'template' => 'extend'
183
- ), $atts ));
184
-
185
- $out = nggShowAlbum($id, $template);
186
-
187
- return $out;
188
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
189
 
190
- function show_gallery( $atts ) {
191
-
192
- extract(shortcode_atts(array(
193
- 'id' => 0,
194
- 'template' => ''
195
- ), $atts ));
196
-
197
- $out = nggShowGallery( $id, $template);
198
-
199
- return $out;
200
- }
201
 
202
- function show_imagebrowser( $atts ) {
203
-
204
- global $wpdb;
205
-
206
- extract(shortcode_atts(array(
207
- 'id' => 0,
208
- 'template' => ''
209
- ), $atts ));
 
 
 
 
 
 
 
 
 
210
 
211
- $out = nggShowImageBrowser($id, $template);
212
-
213
- return $out;
214
- }
215
-
216
- function show_slideshow( $atts ) {
217
-
218
- global $wpdb;
219
-
220
- extract(shortcode_atts(array(
221
- 'id' => 0,
222
- 'w' => '',
223
- 'h' => ''
224
- ), $atts ));
225
-
226
- $galleryID = $wpdb->get_var("SELECT gid FROM $wpdb->nggallery WHERE gid = '$id' ");
227
- if(!$galleryID) $galleryID = $wpdb->get_var("SELECT gid FROM $wpdb->nggallery WHERE name = '$id' ");
 
 
 
 
 
228
 
229
- if( $galleryID )
230
- $out = nggShowSlideshow($galleryID, $w, $h);
231
- else
232
- $out = __('[Gallery not found]','nggallery');
233
-
234
- return $out;
235
- }
236
-
237
- function show_tags( $atts ) {
238
-
239
- extract(shortcode_atts(array(
240
- 'gallery' => '',
241
- 'album' => ''
242
- ), $atts ));
243
-
244
- if ( !empty($album) )
245
- $out = nggShowAlbumTags($album);
246
- else
247
- $out = nggShowGalleryTags($gallery);
248
-
249
- return $out;
250
- }
 
 
 
 
 
 
 
 
 
 
 
251
 
252
- /**
253
- * Function to show a thumbnail or a set of thumbnails with shortcode of type:
254
- *
255
- * [thumb id="1,2,4,5,..." template="filename" /]
256
- * where
257
- * - id is one or more picture ids
258
- * - template is a name for a gallery template, which is located in themefolder/nggallery or plugins/nextgen-gallery/view
259
- *
260
- * @param array $atts
261
- * @return the_content
262
- */
263
- function show_thumbs( $atts ) {
264
-
265
- extract(shortcode_atts(array(
266
- 'id' => '',
267
- 'template' => ''
268
- ), $atts));
269
-
270
- // make an array out of the ids
271
- $pids = explode( ',', $id );
272
-
273
- // Some error checks
274
- if ( count($pids) == 0 )
275
- return __('[Pictures not found]','nggallery');
276
-
277
- $picturelist = nggdb::find_images_in_list( $pids );
278
-
279
- // show gallery
280
- if ( is_array($picturelist) )
281
- $out = nggCreateGallery($picturelist, false, $template);
282
-
283
- return $out;
284
- }
285
 
286
- /**
287
- * Function to show a gallery of random or the most recent images with shortcode of type:
288
- *
289
- * [random max="7" template="filename" /]
290
- * [recent max="7" template="filename" /]
291
- * where
292
- * - max is the maximum number of random or recent images to show
293
- * - template is a name for a gallery template, which is located in themefolder/nggallery or plugins/nextgen-gallery/view
294
- *
295
- * @param array $atts
296
- * @return the_content
297
- */
298
- function show_random( $atts ) {
299
-
300
- extract(shortcode_atts(array(
301
- 'max' => '',
302
- 'template' => ''
303
- ), $atts));
304
-
305
- $out = nggShowRandomRecent('random', $max, $template);
306
-
307
- return $out;
308
- }
309
 
310
- function show_recent( $atts ) {
311
-
312
- extract(shortcode_atts(array(
313
- 'max' => '',
314
- 'template' => ''
315
- ), $atts));
316
-
317
- $out = nggShowRandomRecent('recent', $max, $template);
318
-
319
- return $out;
320
- }
321
-
322
- /**
323
- * Shortcode for the Image tag cloud
324
- * Usage : [tagcloud template="filename" /]
325
- *
326
- * @param array $atts
327
- * @return the content
328
- */
329
- function show_tagcloud( $atts ) {
330
-
331
- extract(shortcode_atts(array(
332
- 'template' => ''
333
- ), $atts));
334
-
335
- $out = nggTagCloud( '', $template );
336
-
337
- return $out;
338
- }
339
 
340
  }
341
 
342
  // let's use it
343
- $nggShortcodes = new NextGEN_Shortcodes;
344
 
345
  ?>
8
  */
9
 
10
  class NextGEN_shortcodes {
11
+
12
+ // register the new shortcodes
13
+ function NextGEN_shortcodes() {
14
+
15
+ // convert the old shortcode
16
+ add_filter('the_content', array(&$this, 'convert_shortcode'));
17
+
18
+ // do_shortcode on the_excerpt could causes several unwanted output. Uncomment it on your own risk
19
+ // add_filter('the_excerpt', array(&$this, 'convert_shortcode'));
20
+ // add_filter('the_excerpt', 'do_shortcode', 11);
21
+
22
+ add_shortcode( 'singlepic', array(&$this, 'show_singlepic' ) );
23
+ add_shortcode( 'album', array(&$this, 'show_album' ) );
24
+ add_shortcode( 'nggallery', array(&$this, 'show_gallery') );
25
+ add_shortcode( 'imagebrowser', array(&$this, 'show_imagebrowser' ) );
26
+ add_shortcode( 'slideshow', array(&$this, 'show_slideshow' ) );
27
+ add_shortcode( 'nggtags', array(&$this, 'show_tags' ) );
28
+ add_shortcode( 'thumb', array(&$this, 'show_thumbs' ) );
29
+ add_shortcode( 'random', array(&$this, 'show_random' ) );
30
+ add_shortcode( 'recent', array(&$this, 'show_recent' ) );
31
+ add_shortcode( 'tagcloud', array(&$this, 'show_tagcloud' ) );
32
+ }
33
 
34
+ /**
35
+ * NextGEN_shortcodes::convert_shortcode()
36
+ * convert old shortcodes to the new WordPress core style
37
+ * [gallery=1] ->> [nggallery id=1]
38
+ *
39
+ * @param string $content Content to search for shortcodes
40
+ * @return string Content with new shortcodes.
41
+ */
42
+ function convert_shortcode($content) {
43
+
44
+ $ngg_options = nggGallery::get_option('ngg_options');
45
+
46
+ if ( stristr( $content, '[singlepic' )) {
47
+ $search = "@\[singlepic=(\d+)(|,\d+|,)(|,\d+|,)(|,watermark|,web20|,)(|,right|,center|,left|,)\]@i";
48
+ if (preg_match_all($search, $content, $matches, PREG_SET_ORDER)) {
49
 
50
+ foreach ($matches as $match) {
51
+ // remove the comma
52
+ $match[2] = ltrim($match[2], ',');
53
+ $match[3] = ltrim($match[3], ',');
54
+ $match[4] = ltrim($match[4], ',');
55
+ $match[5] = ltrim($match[5], ',');
56
+ $replace = "[singlepic id=\"{$match[1]}\" w=\"{$match[2]}\" h=\"{$match[3]}\" mode=\"{$match[4]}\" float=\"{$match[5]}\" ]";
57
+ $content = str_replace ($match[0], $replace, $content);
58
+ }
59
+ }
60
+ }
61
 
62
+ if ( stristr( $content, '[album' )) {
63
+ $search = "@(?:<p>)*\s*\[album\s*=\s*(\w+|^\+)(|,extend|,compact)\]\s*(?:</p>)*@i";
64
+ if (preg_match_all($search, $content, $matches, PREG_SET_ORDER)) {
65
 
66
+ foreach ($matches as $match) {
67
+ // remove the comma
68
+ $match[2] = ltrim($match[2],',');
69
+ $replace = "[album id=\"{$match[1]}\" template=\"{$match[2]}\"]";
70
+ $content = str_replace ($match[0], $replace, $content);
71
+ }
72
+ }
73
+ }
74
 
75
+ if ( stristr( $content, '[gallery' )) {
76
+ $search = "@(?:<p>)*\s*\[gallery\s*=\s*(\w+|^\+)\]\s*(?:</p>)*@i";
77
+ if (preg_match_all($search, $content, $matches, PREG_SET_ORDER)) {
78
 
79
+ foreach ($matches as $match) {
80
+ $replace = "[nggallery id=\"{$match[1]}\"]";
81
+ $content = str_replace ($match[0], $replace, $content);
82
+ }
83
+ }
84
+ }
85
 
86
+ if ( stristr( $content, '[imagebrowser' )) {
87
+ $search = "@(?:<p>)*\s*\[imagebrowser\s*=\s*(\w+|^\+)\]\s*(?:</p>)*@i";
88
+ if (preg_match_all($search, $content, $matches, PREG_SET_ORDER)) {
89
 
90
+ foreach ($matches as $match) {
91
+ $replace = "[imagebrowser id=\"{$match[1]}\"]";
92
+ $content = str_replace ($match[0], $replace, $content);
93
+ }
94
+ }
95
+ }
96
 
97
+ if ( stristr( $content, '[slideshow' )) {
98
+ $search = "@(?:<p>)*\s*\[slideshow\s*=\s*(\w+|^\+)(|,(\d+)|,)(|,(\d+))\]\s*(?:</p>)*@i";
99
+ if (preg_match_all($search, $content, $matches, PREG_SET_ORDER)) {
100
 
101
+ foreach ($matches as $match) {
102
+ // remove the comma
103
+ $match[3] = ltrim($match[3],',');
104
+ $match[5] = ltrim($match[5],',');
105
+ $replace = "[slideshow id=\"{$match[1]}\" w=\"{$match[3]}\" h=\"{$match[5]}\"]";
106
+ $content = str_replace ($match[0], $replace, $content);
107
+ }
108
+ }
109
+ }
110
 
111
+ if ( stristr( $content, '[tags' )) {
112
+ $search = "@(?:<p>)*\s*\[tags\s*=\s*(.*?)\s*\]\s*(?:</p>)*@i";
113
+ if (preg_match_all($search, $content, $matches, PREG_SET_ORDER)) {
114
 
115
+ foreach ($matches as $match) {
116
+ $replace = "[nggtags gallery=\"{$match[1]}\"]";
117
+ $content = str_replace ($match[0], $replace, $content);
118
+ }
119
+ }
120
+ }
121
+
122
+ if ( stristr( $content, '[albumtags' )) {
123
+ $search = "@(?:<p>)*\s*\[albumtags\s*=\s*(.*?)\s*\]\s*(?:</p>)*@i";
124
+ if (preg_match_all($search, $content, $matches, PREG_SET_ORDER)) {
125
 
126
+ foreach ($matches as $match) {
127
+ $replace = "[nggtags album=\"{$match[1]}\"]";
128
+ $content = str_replace ($match[0], $replace, $content);
129
+ }
130
+ }
131
+ }
132
 
133
+ // attach related images based on category or tags
134
+ if ($ngg_options['activateTags'])
135
+ $content .= nggShowRelatedImages();
136
+
137
+ return $content;
138
+ }
139
+
140
+ /**
141
+ * Function to show a single picture:
142
+ *
143
+ * [singlepic id="10" float="none|left|right" width="" height="" mode="none|watermark|web20" link="url" "template="filename" /]
144
+ *
145
+ * where
146
+ * - id is one picture id
147
+ * - float is the CSS float property to apply to the thumbnail
148
+ * - width is width of the single picture you want to show (original width if this parameter is missing)
149
+ * - height is height of the single picture you want to show (original height if this parameter is missing)
150
+ * - mode is one of none, watermark or web20 (transformation applied to the picture)
151
+ * - link is optional and could link to a other url instead the full image
152
+ * - template is a name for a gallery template, which is located in themefolder/nggallery or plugins/nextgen-gallery/view
153
+ *
154
+ * If the tag contains some text, this will be inserted as an additional caption to the picture too. Example:
155
+ * [singlepic id="10"]This is an additional caption[/singlepic]
156
+ * This tag will show a picture with under it two HTML span elements containing respectively the alttext of the picture
157
+ * and the additional caption specified in the tag.
158
+ *
159
+ * @param array $atts
160
+ * @param string $caption text
161
+ * @return the content
162
+ */
163
+ function show_singlepic( $atts, $content = '' ) {
164
+
165
+ extract(shortcode_atts(array(
166
+ 'id' => 0,
167
+ 'w' => '',
168
+ 'h' => '',
169
+ 'mode' => '',
170
+ 'float' => '',
171
+ 'link' => '',
172
+ 'template' => ''
173
+ ), $atts ));
174
+
175
+ $out = nggSinglePicture($id, $w, $h, $mode, $float, $template, $content, $link);
176
+
177
+ return $out;
178
+ }
179
 
180
+ function show_album( $atts ) {
181
+
182
+ extract(shortcode_atts(array(
183
+ 'id' => 0,
184
+ 'template' => 'extend'
185
+ ), $atts ));
186
+
187
+ $out = nggShowAlbum($id, $template);
188
+
189
+ return $out;
190
+ }
191
+ /**
192
+ * Function to show a thumbnail or a set of thumbnails with shortcode of type:
193
+ *
194
+ * [gallery id="1,2,4,5,..." template="filename" images="number of images per page" /]
195
+ * where
196
+ * - id of a gallery
197
+ * - images is the number of images per page (optional), 0 will show all images
198
+ * - template is a name for a gallery template, which is located in themefolder/nggallery or plugins/nextgen-gallery/view
199
+ *
200
+ * @param array $atts
201
+ * @return the_content
202
+ */
203
+ function show_gallery( $atts ) {
204
+
205
+ extract(shortcode_atts(array(
206
+ 'id' => 0,
207
+ 'template' => '',
208
+ 'images' => false
209
+ ), $atts ));
210
+
211
+ $out = nggShowGallery( $id, $template, $images );
212
+
213
+ return $out;
214
+ }
215
 
216
+ function show_imagebrowser( $atts ) {
217
+
218
+ global $wpdb;
219
+
220
+ extract(shortcode_atts(array(
221
+ 'id' => 0,
222
+ 'template' => ''
223
+ ), $atts ));
 
 
 
224
 
225
+ $out = nggShowImageBrowser($id, $template);
226
+
227
+ return $out;
228
+ }
229
+
230
+ function show_slideshow( $atts ) {
231
+
232
+ global $wpdb;
233
+
234
+ extract(shortcode_atts(array(
235
+ 'id' => 0,
236
+ 'w' => '',
237
+ 'h' => ''
238
+ ), $atts ));
239
+
240
+ $galleryID = $wpdb->get_var("SELECT gid FROM $wpdb->nggallery WHERE gid = '$id' ");
241
+ if(!$galleryID) $galleryID = $wpdb->get_var("SELECT gid FROM $wpdb->nggallery WHERE name = '$id' ");
242
 
243
+ if( $galleryID )
244
+ $out = nggShowSlideshow($galleryID, $w, $h);
245
+ else
246
+ $out = __('[Gallery not found]','nggallery');
247
+
248
+ return $out;
249
+ }
250
+
251
+ function show_tags( $atts ) {
252
+
253
+ extract(shortcode_atts(array(
254
+ 'gallery' => '',
255
+ 'album' => ''
256
+ ), $atts ));
257
+
258
+ if ( !empty($album) )
259
+ $out = nggShowAlbumTags($album);
260
+ else
261
+ $out = nggShowGalleryTags($gallery);
262
+
263
+ return $out;
264
+ }
265
 
266
+ /**
267
+ * Function to show a thumbnail or a set of thumbnails with shortcode of type:
268
+ *
269
+ * [thumb id="1,2,4,5,..." template="filename" /]
270
+ * where
271
+ * - id is one or more picture ids
272
+ * - template is a name for a gallery template, which is located in themefolder/nggallery or plugins/nextgen-gallery/view
273
+ *
274
+ * @param array $atts
275
+ * @return the_content
276
+ */
277
+ function show_thumbs( $atts ) {
278
+
279
+ extract(shortcode_atts(array(
280
+ 'id' => '',
281
+ 'template' => ''
282
+ ), $atts));
283
+
284
+ // make an array out of the ids
285
+ $pids = explode( ',', $id );
286
+
287
+ // Some error checks
288
+ if ( count($pids) == 0 )
289
+ return __('[Pictures not found]','nggallery');
290
+
291
+ $picturelist = nggdb::find_images_in_list( $pids );
292
+
293
+ // show gallery
294
+ if ( is_array($picturelist) )
295
+ $out = nggCreateGallery($picturelist, false, $template);
296
+
297
+ return $out;
298
+ }
299
 
300
+ /**
301
+ * Function to show a gallery of random or the most recent images with shortcode of type:
302
+ *
303
+ * [random max="7" template="filename" id="2" /]
304
+ * [recent max="7" template="filename" id="3" mode="date" /]
305
+ * where
306
+ * - max is the maximum number of random or recent images to show
307
+ * - template is a name for a gallery template, which is located in themefolder/nggallery or plugins/nextgen-gallery/view
308
+ * - id is the gallery id, if the recent/random pictures shall be taken from a specific gallery only
309
+ * - mode is either "id" (which takes the latest additions to the databse, default)
310
+ * or "date" (which takes the latest pictures by EXIF date)
311
+ * or "sort" (which takes the pictures by user sort order)
312
+ *
313
+ * @param array $atts
314
+ * @return the_content
315
+ */
316
+ function show_random( $atts ) {
317
+
318
+ extract(shortcode_atts(array(
319
+ 'max' => '',
320
+ 'template' => '',
321
+ 'id' => 0
322
+ ), $atts));
323
+
324
+ $out = nggShowRandomRecent('random', $max, $template, $id);
325
+
326
+ return $out;
327
+ }
 
 
 
 
 
328
 
329
+ function show_recent( $atts ) {
330
+
331
+ extract(shortcode_atts(array(
332
+ 'max' => '',
333
+ 'template' => '',
334
+ 'id' => 0,
335
+ 'mode' => 'id'
336
+ ), $atts));
337
+
338
+ $out = nggShowRandomRecent($mode, $max, $template, $id);
339
+
340
+ return $out;
341
+ }
 
 
 
 
 
 
 
 
 
 
342
 
343
+ /**
344
+ * Shortcode for the Image tag cloud
345
+ * Usage : [tagcloud template="filename" /]
346
+ *
347
+ * @param array $atts
348
+ * @return the content
349
+ */
350
+ function show_tagcloud( $atts ) {
351
+
352
+ extract(shortcode_atts(array(
353
+ 'template' => ''
354
+ ), $atts));
355
+
356
+ $out = nggTagCloud( '', $template );
357
+
358
+ return $out;
359
+ }
 
 
 
 
 
 
 
 
 
 
 
 
360
 
361
  }
362
 
363
  // let's use it
364
+ $nggShortcodes = new NextGEN_Shortcodes;
365
 
366
  ?>
lib/xmlrpc.php ADDED
@@ -0,0 +1,335 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * XML-RPC protocol support for NextGEN Gallery
4
+ *
5
+ * @package NextGEN Gallery
6
+ * @author Alex Rabe
7
+ * @copyright 2009
8
+ */
9
+ class nggXMLRPC{
10
+
11
+ /**
12
+ * Init the methods for the XMLRPC hook
13
+ *
14
+ */
15
+ function __construct() {
16
+
17
+ add_filter('xmlrpc_methods', array(&$this, 'add_methods') );
18
+ }
19
+
20
+ function add_methods($methods) {
21
+
22
+ $methods['ngg.installed'] = array(&$this, 'nggInstalled');
23
+ $methods['ngg.uploadImage'] = array(&$this, 'uploadImage');
24
+ $methods['ngg.getGalleries'] = array(&$this, 'getGalleries');
25
+ $methods['ngg.getImages'] = array(&$this, 'getImages');
26
+ $methods['ngg.newGallery'] = array(&$this, 'newGallery');
27
+
28
+ return $methods;
29
+ }
30
+
31
+ /**
32
+ * Check if NextGEN Gallery is installed
33
+ *
34
+ * @since 1.4
35
+ *
36
+ * @param none
37
+ * @return string version number
38
+ */
39
+ function nggInstalled($args) {
40
+ global $ngg;
41
+ return array( 'version' => $ngg->version );
42
+ }
43
+
44
+ /**
45
+ * Log user in.
46
+ *
47
+ * @since 2.8
48
+ *
49
+ * @param string $username User's username.
50
+ * @param string $password User's password.
51
+ * @return mixed WP_User object if authentication passed, false otherwise
52
+ */
53
+ function login($username, $password) {
54
+ if ( !get_option( 'enable_xmlrpc' ) ) {
55
+ $this->error = new IXR_Error( 405, sprintf( __( 'XML-RPC services are disabled on this blog. An admin user can enable them at %s'), admin_url('options-writing.php') ) );
56
+ return false;
57
+ }
58
+
59
+ $user = wp_authenticate($username, $password);
60
+
61
+ if (is_wp_error($user)) {
62
+ $this->error = new IXR_Error(403, __('Bad login/pass combination.'));
63
+ return false;
64
+ }
65
+
66
+ set_current_user( $user->ID );
67
+ return $user;
68
+ }
69
+
70
+ /**
71
+ * Method "ngg.uploadImage"
72
+ * Uploads a image to a gallery
73
+ *
74
+ * @since 1.4
75
+ *
76
+ * @copyright addapted from WP Core
77
+ * @param array $args Method parameters.
78
+ * - int blog_id
79
+ * - string username
80
+ * - string password
81
+ * - struct data
82
+ * o string name
83
+ * o string type (optional)
84
+ * o base64 bits
85
+ * o bool overwrite (optional)
86
+ * o int gallery
87
+ * o int image_id (optional)
88
+ * @return array with image meta data
89
+ */
90
+ function uploadImage($args) {
91
+ global $wpdb;
92
+
93
+ require_once ( dirname ( dirname( __FILE__ ) ). '/admin/functions.php' ); // admin functions
94
+ require_once ( 'meta.php' ); // meta data import
95
+
96
+ $blog_ID = (int) $args[0];
97
+ $username = $wpdb->escape($args[1]);
98
+ $password = $wpdb->escape($args[2]);
99
+ $data = $args[3];
100
+
101
+ $name = $data['name'];
102
+ $type = $data['type'];
103
+ $bits = $data['bits'];
104
+
105
+ // gallery & image id
106
+ $gid = (int) $data['gallery']; // required field
107
+ $pid = (int) $data['image_id']; // optional but more foolproof of overwrite
108
+ $image = false; // container for the image object
109
+
110
+ logIO('O', '(NGG) Received '.strlen($bits).' bytes');
111
+
112
+ if ( !$user = $this->login($username, $password) )
113
+ return $this->error;
114
+
115
+ // Check if you have the correct capability for upload
116
+ if ( !current_user_can('NextGEN Upload images') ) {
117
+ logIO('O', '(NGG) User does not have upload_files capability');
118
+ $this->error = new IXR_Error(401, __('You are not allowed to upload files to this site.'));
119
+ return $this->error;
120
+ }
121
+
122
+ // Look for the gallery , could we find it ?
123
+ if ( !$gallery = nggdb::find_gallery($gid) )
124
+ return new IXR_Error(404, __('Could not find gallery ' . $gid ));
125
+
126
+ // Now check if you have the correct capability for this gallery
127
+ if ( !nggAdmin::can_manage_this_gallery($gallery->author) ) {
128
+ logIO('O', '(NGG) User does not have upload_files capability');
129
+ $this->error = new IXR_Error(401, __('You are not allowed to upload files to this gallery.'));
130
+ return $this->error;
131
+ }
132
+
133
+ //clean filename and extract extension
134
+ $filepart = nggGallery::fileinfo( $name );
135
+ $name = $filepart['basename'];
136
+
137
+ // check for allowed extension and if it's an image file
138
+ $ext = array('jpg', 'png', 'gif');
139
+ if ( !in_array($filepart['extension'], $ext) ){
140
+ logIO('O', '(NGG) Not allowed file type');
141
+ $this->error = new IXR_Error(401, __('This is no valid image file.','nggallery'));
142
+ return $this->error;
143
+ }
144
+
145
+ // in the case you would overwrite the image, let's delete the old one first
146
+ if(!empty($data["overwrite"]) && ($data["overwrite"] == true)) {
147
+
148
+ // search for the image based on the filename, if it's not already provided
149
+ if ($pid == 0)
150
+ $pid = $wpdb->get_col(" SELECT pid FROM {$wpdb->nggpictures} WHERE filename = '{$name}' AND galleryid = '{$gid}' ");
151
+
152
+ if ( !$image = nggdb::find_image( $pid ) )
153
+ return new IXR_Error(404, __('Could not find image id ' . $pid ));
154
+
155
+ // sync the gallery<->image parameter, otherwise we may copy it to the wrong gallery
156
+ $gallery = $image;
157
+
158
+ // delete now the image
159
+ if ( !@unlink( $image->imagePath ) ) {
160
+ $errorString = sprintf(__('Failed to delete image %1$s ','nggallery'), $image->imagePath);
161
+ logIO('O', '(NGG) ' . $errorString);
162
+ return new IXR_Error(500, $errorString);
163
+ }
164
+ }
165
+
166
+ // upload routine from wp core, load first the image to the upload folder, $upload['file'] contain the path
167
+ $upload = wp_upload_bits($name, $type, $bits);
168
+ if ( ! empty($upload['error']) ) {
169
+ $errorString = sprintf(__('Could not write file %1$s (%2$s)'), $name, $upload['error']);
170
+ logIO('O', '(NGG) ' . $errorString);
171
+ return new IXR_Error(500, $errorString);
172
+ }
173
+
174
+ // this is the dir to the gallery
175
+ $path = WINABSPATH . $gallery->path;
176
+
177
+ // check if the filename already exist, if not add a counter index
178
+ $filename = wp_unique_filename( $path, $name );
179
+ $destination = $path . '/'. $filename;
180
+
181
+ // Move files to gallery folder
182
+ if ( !@rename($upload['file'], $destination ) ) {
183
+ $errorString = sprintf(__('Failed to move image %1$s to %2$s','nggallery'), '<strong>' . $upload['file'] . '</strong>', $destination);
184
+ logIO('O', '(NGG) ' . $errorString);
185
+ return new IXR_Error(500, $errorString);
186
+ }
187
+
188
+ //add to database if it's a new image
189
+ if(empty($data["overwrite"]) || ($data["overwrite"] == false)) {
190
+ $pid_array = nggAdmin::add_Images( $gallery->gid, array( $filename ) );
191
+ // the first element is our new image id
192
+ if (count($pid_array) == 1)
193
+ $pid = $pid_array[0];
194
+ }
195
+
196
+ //get all information about the image, in the case it's a new one
197
+ if (!$image)
198
+ $image = nggdb::find_image( $pid );
199
+
200
+ // create again the thumbnail, should return a '1'
201
+ nggAdmin::create_thumbnail( $image );
202
+
203
+ return apply_filters( 'ngg_upload_image', $image );
204
+
205
+ }
206
+
207
+ /**
208
+ * Method "ngg.newGallery"
209
+ * Create a new gallery
210
+ *
211
+ * @since 1.4
212
+ *
213
+ * @param array $args Method parameters.
214
+ * - int blog_id
215
+ * - string username
216
+ * - string password
217
+ * - string new gallery name
218
+ * @return int with new gallery ID
219
+ */
220
+ function newGallery($args) {
221
+
222
+ global $ngg, $wpdb;
223
+
224
+ require_once ( dirname ( dirname( __FILE__ ) ). '/admin/functions.php' ); // admin functions
225
+
226
+ $blog_ID = (int) $args[0];
227
+ $username = $wpdb->escape($args[1]);
228
+ $password = $wpdb->escape($args[2]);
229
+ $name = $wpdb->escape($args[3]);
230
+ $id = false;
231
+
232
+ if ( !$user = $this->login($username, $password) )
233
+ return $this->error;
234
+
235
+ if( !current_user_can( 'NextGEN Manage gallery' ) )
236
+ return new IXR_Error( 401, __( 'Sorry, you must be able to manage galleries to view the list of galleries' ) );
237
+
238
+ if ( !empty( $name ) )
239
+ $id = nggAdmin::create_gallery($name, $ngg->options['gallerypath'], false);
240
+
241
+ if ( !$id )
242
+ return new IXR_Error(500, __('Sorry, could not create the gallery'));
243
+
244
+ return($id);
245
+
246
+ }
247
+
248
+ /**
249
+ * Method "ngg.getGalleries"
250
+ * Return the list of all galleries
251
+ *
252
+ * @since 1.4
253
+ *
254
+ * @param array $args Method parameters.
255
+ * - int blog_id
256
+ * - string username
257
+ * - string password
258
+ * @return array with all galleries
259
+ */
260
+ function getGalleries($args) {
261
+
262
+ global $nggdb, $wpdb;
263
+
264
+ $blog_ID = (int) $args[0];
265
+ $username = $wpdb->escape($args[1]);
266
+ $password = $wpdb->escape($args[2]);
267
+
268
+ if ( !$user = $this->login($username, $password) )
269
+ return $this->error;
270
+
271
+ if( !current_user_can( 'NextGEN Manage gallery' ) )
272
+ return new IXR_Error( 401, __( 'Sorry, you must be able to manage galleries to view the list of galleries' ) );
273
+
274
+ $gallery_list = $nggdb->find_all_galleries('gid', 'asc', true, 0, 0, false);
275
+
276
+ return($gallery_list);
277
+
278
+ }
279
+
280
+ /**
281
+ * Method "ngg.getImages"
282
+ * Return the list of all imgaes inside a gallery
283
+ *
284
+ * @since 1.4
285
+ *
286
+ * @param array $args Method parameters.
287
+ * - int blog_id
288
+ * - string username
289
+ * - string password
290
+ * - int gallery_id
291
+ * @return array with all images
292
+ */
293
+ function getImages($args) {
294
+
295
+ global $nggdb, $wpdb;
296
+
297
+ require_once ( dirname ( dirname( __FILE__ ) ). '/admin/functions.php' ); // admin functions
298
+
299
+ $blog_ID = (int) $args[0];
300
+ $username = $wpdb->escape($args[1]);
301
+ $password = $wpdb->escape($args[2]);
302
+ $gid = (int) $args[3];
303
+
304
+ if ( !$user = $this->login($username, $password) )
305
+ return $this->error;
306
+
307
+ // Look for the gallery , could we find it ?
308
+ if ( !$gallery = nggdb::find_gallery( $gid ) )
309
+ return new IXR_Error(404, __('Could not find gallery ' . $gid ));
310
+
311
+ // Now check if you have the correct capability for this gallery
312
+ if ( !nggAdmin::can_manage_this_gallery($gallery->author) ) {
313
+ logIO('O', '(NGG) User does not have upload_files capability');
314
+ $this->error = new IXR_Error(401, __('You are not allowed to upload files to this gallery.'));
315
+ return $this->error;
316
+ }
317
+
318
+ // get picture values
319
+ $picture_list = $nggdb->get_gallery( $gid, 'pid', 'ASC', false );
320
+
321
+ return($picture_list);
322
+
323
+ }
324
+
325
+ /**
326
+ * PHP5 style destructor and will run when database object is destroyed.
327
+ *
328
+ * @return bool Always true
329
+ */
330
+ function __destruct() {
331
+
332
+ }
333
+ }
334
+
335
+ $nggxmlrpc = new nggXMLRPC();
nggallery.php CHANGED
@@ -1,12 +1,12 @@
1
  <?php
2
  /*
3
  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.3.6
8
 
9
- Author URI: http://alexrabe.boelinger.com/
10
 
11
  Copyright 2007-2009 by Alex Rabe & NextGEN DEV-Team
12
 
@@ -44,14 +44,15 @@ if(preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die('You
44
  if (!class_exists('nggLoader')) {
45
  class nggLoader {
46
 
47
- var $version = '1.3.6';
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';
52
  var $donators = 'http://nextgen.boelinger.com/donators.php';
53
  var $options = '';
54
  var $manage_page;
 
55
 
56
  function nggLoader() {
57
 
@@ -69,13 +70,14 @@ class nggLoader {
69
  $this->load_dependencies();
70
  $this->start_rewrite_module();
71
 
 
 
72
  // Init options & tables during activation & deregister init option
73
- register_activation_hook( dirname(__FILE__) . '/nggallery.php', array(&$this, 'activate') );
74
- register_deactivation_hook( dirname(__FILE__) . '/nggallery.php', array(&$this, 'deactivate') );
75
 
76
- // Register a uninstall hook to atumatic remove all tables & option
77
- if ( function_exists('register_uninstall_hook') )
78
- register_uninstall_hook( dirname(__FILE__) . '/nggallery.php', array('nggLoader', 'uninstall') );
79
 
80
  // Start this plugin once all other plugins are fully loaded
81
  add_action( 'plugins_loaded', array(&$this, 'start_plugin') );
@@ -83,6 +85,13 @@ class nggLoader {
83
  // Register_taxonomy must be used during wo init
84
  add_action( 'init', array(&$this, 'register_taxonomy') );
85
 
 
 
 
 
 
 
 
86
  }
87
 
88
  function start_plugin() {
@@ -91,12 +100,12 @@ class nggLoader {
91
 
92
  // Content Filters
93
  add_filter('ngg_gallery_name', 'sanitize_title');
94
-
95
  // Load the admin panel or the frontend functions
96
  if ( is_admin() ) {
97
 
98
  // Pass the init check or show a message
99
- if (get_option( "ngg_init_check" ) != false )
100
  add_action( 'admin_notices', create_function('', 'echo \'<div id="message" class="error"><p><strong>' . get_option( "ngg_init_check" ) . '</strong></p></div>\';') );
101
 
102
  } else {
@@ -133,7 +142,7 @@ class nggLoader {
133
  // Check for WP version installation
134
  $wp_ok = version_compare($wp_version, $this->minium_WP, '>=');
135
 
136
- if ( ($wp_ok == FALSE) and (IS_WPMU != TRUE) ) {
137
  add_action(
138
  'admin_notices',
139
  create_function(
@@ -157,7 +166,7 @@ class nggLoader {
157
  'admin_notices',
158
  create_function(
159
  '',
160
- 'echo \'<div id="message" class="error"><p><strong>' . __('Sorry, NextGEN Gallery works only with a Memory Limit of 16 MB higher',"nggallery") . '</strong></p></div>\';'
161
  )
162
  );
163
  return false;
@@ -230,6 +239,10 @@ class nggLoader {
230
  require_once (dirname (__FILE__) . '/lib/ngg-db.php'); // 132.400
231
  require_once (dirname (__FILE__) . '/lib/image.php'); // 59.424
232
  require_once (dirname (__FILE__) . '/widgets/widgets.php'); // 298.792
 
 
 
 
233
 
234
  // We didn't need all stuff during a AJAX operation
235
  if ( defined('DOING_AJAX') )
@@ -249,8 +262,9 @@ class nggLoader {
249
 
250
  // Load frontend libraries
251
  } else {
252
- require_once (dirname (__FILE__) . '/nggfunctions.php'); // 242.016
253
- require_once (dirname (__FILE__) . '/lib/shortcodes.php'); // 92.664
 
254
  }
255
  }
256
  }
@@ -284,16 +298,18 @@ class nggLoader {
284
 
285
  // required for the slideshow
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() {
@@ -310,11 +326,11 @@ class nggLoader {
310
  wp_enqueue_style('NextGEN', NGGALLERY_URLPATH.'css/'.$this->options['CSSfile'], false, '1.0.0', 'screen');
311
 
312
  // activate Thickbox
313
- if ($this->options['thumbEffect'] == "thickbox")
314
  wp_enqueue_style( 'thickbox');
315
 
316
  // activate modified Shutter reloaded if not use the Shutter plugin
317
- if ( ($this->options['thumbEffect'] == "shutter") && !function_exists('srel_makeshutter') )
318
  wp_enqueue_style('shutter', NGGALLERY_URLPATH .'shutter/shutter-reloaded.css', false, '1.3.0', 'screen');
319
 
320
  }
@@ -333,7 +349,16 @@ class nggLoader {
333
  }
334
 
335
  function activate() {
 
 
 
 
 
 
 
 
336
  include_once (dirname (__FILE__) . '/admin/install.php');
 
337
  // check for tables
338
  nggallery_install();
339
  // remove the update message
@@ -353,10 +378,42 @@ class nggLoader {
353
  nggallery_uninstall();
354
  }
355
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
356
  }
357
  // Let's start the holy plugin
358
  global $ngg;
359
  $ngg = new nggLoader();
360
-
361
  }
362
  ?>
1
  <?php
2
  /*
3
  Plugin Name: NextGEN Gallery
4
+ Plugin URI: http://alexrabe.de/?page_id=80
5
  Description: A NextGENeration Photo gallery for the Web 2.0.
6
  Author: Alex Rabe
7
+ Version: 1.4.0
8
 
9
+ Author URI: http://alexrabe.de/
10
 
11
  Copyright 2007-2009 by Alex Rabe & NextGEN DEV-Team
12
 
44
  if (!class_exists('nggLoader')) {
45
  class nggLoader {
46
 
47
+ var $version = '1.4.0';
48
+ var $dbversion = '1.4.0';
49
+ var $minium_WP = '2.8';
50
+ var $minium_WPMU = '2.8';
51
  var $updateURL = 'http://nextgen.boelinger.com/version.php';
52
  var $donators = 'http://nextgen.boelinger.com/donators.php';
53
  var $options = '';
54
  var $manage_page;
55
+ var $add_PHP5_notice = false;
56
 
57
  function nggLoader() {
58
 
70
  $this->load_dependencies();
71
  $this->start_rewrite_module();
72
 
73
+ $this->plugin_name = plugin_basename(__FILE__);
74
+
75
  // Init options & tables during activation & deregister init option
76
+ register_activation_hook( $this->plugin_name, array(&$this, 'activate') );
77
+ register_deactivation_hook( $this->plugin_name, array(&$this, 'deactivate') );
78
 
79
+ // Register a uninstall hook to remove all tables & option automatic
80
+ register_uninstall_hook( $this->plugin_name, array('nggLoader', 'uninstall') );
 
81
 
82
  // Start this plugin once all other plugins are fully loaded
83
  add_action( 'plugins_loaded', array(&$this, 'start_plugin') );
85
  // Register_taxonomy must be used during wo init
86
  add_action( 'init', array(&$this, 'register_taxonomy') );
87
 
88
+ // Add a message for PHP4 Users, can disable the update message later on
89
+ if (version_compare(PHP_VERSION, '5.0.0', '<'))
90
+ add_filter('transient_update_plugins', array(&$this, 'disable_upgrade'));
91
+
92
+ //Add some links on the plugin page
93
+ add_filter('plugin_row_meta', array(&$this, 'add_plugin_links'), 10, 2);
94
+
95
  }
96
 
97
  function start_plugin() {
100
 
101
  // Content Filters
102
  add_filter('ngg_gallery_name', 'sanitize_title');
103
+
104
  // Load the admin panel or the frontend functions
105
  if ( is_admin() ) {
106
 
107
  // Pass the init check or show a message
108
+ if (get_option( 'ngg_init_check' ) != false )
109
  add_action( 'admin_notices', create_function('', 'echo \'<div id="message" class="error"><p><strong>' . get_option( "ngg_init_check" ) . '</strong></p></div>\';') );
110
 
111
  } else {
142
  // Check for WP version installation
143
  $wp_ok = version_compare($wp_version, $this->minium_WP, '>=');
144
 
145
+ if ( ($wp_ok == FALSE) and (IS_WPMU == FALSE) ) {
146
  add_action(
147
  'admin_notices',
148
  create_function(
166
  'admin_notices',
167
  create_function(
168
  '',
169
+ 'echo \'<div id="message" class="error"><p><strong>' . __('Sorry, NextGEN Gallery works only with a Memory Limit of 16 MB higher', 'nggallery') . '</strong></p></div>\';'
170
  )
171
  );
172
  return false;
239
  require_once (dirname (__FILE__) . '/lib/ngg-db.php'); // 132.400
240
  require_once (dirname (__FILE__) . '/lib/image.php'); // 59.424
241
  require_once (dirname (__FILE__) . '/widgets/widgets.php'); // 298.792
242
+
243
+ //Just needed if you access remote to WordPress
244
+ if ( defined('XMLRPC_REQUEST') )
245
+ require_once (dirname (__FILE__) . '/lib/xmlrpc.php');
246
 
247
  // We didn't need all stuff during a AJAX operation
248
  if ( defined('DOING_AJAX') )
262
 
263
  // Load frontend libraries
264
  } else {
265
+ require_once (dirname (__FILE__) . '/lib/navigation.php'); // 242.016
266
+ require_once (dirname (__FILE__) . '/nggfunctions.php'); // n.a.
267
+ require_once (dirname (__FILE__) . '/lib/shortcodes.php'); // 92.664
268
  }
269
  }
270
  }
298
 
299
  // required for the slideshow
300
  if ( NGGALLERY_IREXIST == true )
301
+ wp_enqueue_script('swfobject', NGGALLERY_URLPATH .'admin/js/swfobject.js', FALSE, '2.2');
302
 
303
  // Load AJAX navigation script, works only with shutter script as we need to add the listener
304
+ if ( $this->options['galAjaxNav'] ) {
305
+ if ( ($this->options['thumbEffect'] == "shutter") || function_exists('srel_makeshutter') ) {
306
+ wp_enqueue_script ( 'ngg_script', NGGALLERY_URLPATH . 'js/ngg.js', array('jquery'));
307
+ wp_localize_script( 'ngg_script', 'ngg_ajax', array('path' => NGGALLERY_URLPATH,
308
+ 'loading' => __('loading', 'nggallery'),
309
+ ) );
310
+ }
311
+ }
312
+
313
  }
314
 
315
  function load_thickbox_images() {
326
  wp_enqueue_style('NextGEN', NGGALLERY_URLPATH.'css/'.$this->options['CSSfile'], false, '1.0.0', 'screen');
327
 
328
  // activate Thickbox
329
+ if ($this->options['thumbEffect'] == 'thickbox')
330
  wp_enqueue_style( 'thickbox');
331
 
332
  // activate modified Shutter reloaded if not use the Shutter plugin
333
+ if ( ($this->options['thumbEffect'] == 'shutter') && !function_exists('srel_makeshutter') )
334
  wp_enqueue_style('shutter', NGGALLERY_URLPATH .'shutter/shutter-reloaded.css', false, '1.3.0', 'screen');
335
 
336
  }
349
  }
350
 
351
  function activate() {
352
+
353
+ //Since version 1.4.0 it's tested only with PHP5.2, currently we keep PHP4 support a while
354
+ //if (version_compare(PHP_VERSION, '5.2.0', '<')) {
355
+ // deactivate_plugins(plugin_basename(__FILE__)); // Deactivate ourself
356
+ // wp_die("Sorry, but you can't run this plugin, it requires PHP 5.2 or higher.");
357
+ // return;
358
+ //}
359
+
360
  include_once (dirname (__FILE__) . '/admin/install.php');
361
+
362
  // check for tables
363
  nggallery_install();
364
  // remove the update message
378
  nggallery_uninstall();
379
  }
380
 
381
+ function disable_upgrade($option){
382
+
383
+ $this_plugin = plugin_basename(__FILE__);
384
+
385
+ // PHP5.2 is required for NGG V1.4.0
386
+ if ( version_compare($option->response[ $this_plugin ]->new_version, '1.4.0', '>=') )
387
+ return $option;
388
+
389
+ if( isset($option->response[ $this_plugin ]) ){
390
+ //TODO:Clear its download link, not now but maybe later
391
+ //$option->response[ $this_plugin ]->package = '';
392
+
393
+ //Add a notice message
394
+ if ($this->add_PHP5_notice == false){
395
+ add_action( "in_plugin_update_message-$this->plugin_name", create_function('', 'echo \'<br /><span style="color:red">Please update to PHP5.2 as soon as possible, the plugin is not tested under PHP4 anymore</span>\';') );
396
+ $this->add_PHP5_notice = true;
397
+ }
398
+ }
399
+ return $option;
400
+ }
401
+
402
+ // Taken from Google XML Sitemaps from Arne Brachhold
403
+ function add_plugin_links($links, $file) {
404
+
405
+ if ( $file == plugin_basename(__FILE__) ) {
406
+ $links[] = '<a href="admin.php?page=nextgen-gallery">' . __('Overview', 'nggallery') . '</a>';
407
+ $links[] = '<a href="http://wordpress.org/tags/nextgen-gallery?forum_id=10">' . __('Get help', 'nggallery') . '</a>';
408
+ $links[] = '<a href="http://code.google.com/p/nextgen-gallery/">' . __('Contribute', 'nggallery') . '</a>';
409
+ $links[] = '<a href="http://alexrabe.de/donation/">' . __('Donate', 'nggallery') . '</a>';
410
+ }
411
+ return $links;
412
+ }
413
+
414
  }
415
  // Let's start the holy plugin
416
  global $ngg;
417
  $ngg = new nggLoader();
 
418
  }
419
  ?>
nggfunctions.php CHANGED
@@ -1,954 +1,1046 @@
1
- <?php
2
-
3
- if(preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die('You are not allowed to call this page directly.'); }
4
-
5
- /**
6
- * Return a script for the Imagerotator flash slideshow. Can be used in any tmeplate with <?php echo nggShowSlideshow($galleryID, $width, $height) ?>
7
- * Require the script swfobject.js in the header or footer
8
- *
9
- * @access public
10
- * @param integer $galleryID ID of the gallery
11
- * @param integer $irWidth Width of the flash container
12
- * @param integer $irHeight Height of the flash container
13
- * @return the content
14
- */
15
- function nggShowSlideshow($galleryID, $width, $height) {
16
-
17
- require_once (dirname (__FILE__).'/lib/swfobject.php');
18
-
19
- $ngg_options = nggGallery::get_option('ngg_options');
20
-
21
- // remove media file from RSS feed
22
- if ( is_feed() ) {
23
- $out = '[' . nggGallery::i18n($ngg_options['galTextSlide']) . ']';
24
- return $out;
25
- }
26
-
27
- // If the Imagerotator didn't exist, skip the output
28
- if ( NGGALLERY_IREXIST == false )
29
- return;
30
-
31
- if (empty($width) ) $width = (int) $ngg_options['irWidth'];
32
- if (empty($height)) $height = (int) $ngg_options['irHeight'];
33
-
34
- // init the flash output
35
- $swfobject = new swfobject( $ngg_options['irURL'] , 'so' . $galleryID, $width, $height, '7.0.0', 'false');
36
-
37
- $swfobject->message = '<p>'. __('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..', 'nggallery').'</p>';
38
- $swfobject->add_params('wmode', 'opaque');
39
- $swfobject->add_params('allowfullscreen', 'true');
40
- $swfobject->add_params('bgcolor', $ngg_options['irScreencolor'], '000000', 'string', '#');
41
- $swfobject->add_attributes('styleclass', 'slideshow');
42
- $swfobject->add_attributes('name', 'so' . $galleryID);
43
-
44
- // adding the flash parameter
45
- $swfobject->add_flashvars( 'file', NGGALLERY_URLPATH.'xml/imagerotator.php?gid=' . $galleryID );
46
- $swfobject->add_flashvars( 'shuffle', $ngg_options['irShuffle'], 'true', 'bool');
47
- $swfobject->add_flashvars( 'linkfromdisplay', $ngg_options['irLinkfromdisplay'], 'false', 'bool');
48
- $swfobject->add_flashvars( 'shownavigation', $ngg_options['irShownavigation'], 'true', 'bool');
49
- $swfobject->add_flashvars( 'showicons', $ngg_options['irShowicons'], 'true', 'bool');
50
- $swfobject->add_flashvars( 'kenburns', $ngg_options['irKenburns'], 'false', 'bool');
51
- $swfobject->add_flashvars( 'overstretch', $ngg_options['irOverstretch'], 'false', 'string');
52
- $swfobject->add_flashvars( 'rotatetime', $ngg_options['irRotatetime'], 5, 'int');
53
- $swfobject->add_flashvars( 'transition', $ngg_options['irTransition'], 'random', 'string');
54
- $swfobject->add_flashvars( 'backcolor', $ngg_options['irBackcolor'], 'FFFFFF', 'string', '0x');
55
- $swfobject->add_flashvars( 'frontcolor', $ngg_options['irFrontcolor'], '000000', 'string', '0x');
56
- $swfobject->add_flashvars( 'lightcolor', $ngg_options['irLightcolor'], '000000', 'string', '0x');
57
- $swfobject->add_flashvars( 'screencolor', $ngg_options['irScreencolor'], '000000', 'string', '0x');
58
- if ($ngg_options['irWatermark'])
59
- $swfobject->add_flashvars( 'logo', $ngg_options['wmPath'], '', 'string');
60
- $swfobject->add_flashvars( 'audio', $ngg_options['irAudio'], '', 'string');
61
- $swfobject->add_flashvars( 'width', $width, '260');
62
- $swfobject->add_flashvars( 'height', $height, '320');
63
- // create the output
64
- $out = '<div class="slideshow">' . $swfobject->output() . '</div>';
65
- // add now the script code
66
- $out .= "\n".'<script type="text/javascript" defer="defer">';
67
- if ($ngg_options['irXHTMLvalid']) $out .= "\n".'<!--';
68
- if ($ngg_options['irXHTMLvalid']) $out .= "\n".'//<![CDATA[';
69
- $out .= $swfobject->javascript();
70
- if ($ngg_options['irXHTMLvalid']) $out .= "\n".'//]]>';
71
- if ($ngg_options['irXHTMLvalid']) $out .= "\n".'-->';
72
- $out .= "\n".'</script>';
73
-
74
- $out = apply_filters('ngg_show_slideshow_content', $out);
75
-
76
- return $out;
77
- }
78
-
79
- /**
80
- * nggShowGallery() - return a gallery
81
- *
82
- * @access public
83
- * @param int $galleryID
84
- * @param string $template (optional) name for a template file, look for gallery-$template
85
- * @return the content
86
- */
87
- function nggShowGallery( $galleryID, $template = '' ) {
88
-
89
- global $nggRewrite;
90
-
91
- $ngg_options = nggGallery::get_option('ngg_options');
92
-
93
- //Set sort order value, if not used (upgrade issue)
94
- $ngg_options['galSort'] = ($ngg_options['galSort']) ? $ngg_options['galSort'] : 'pid';
95
- $ngg_options['galSortDir'] = ($ngg_options['galSortDir'] == 'DESC') ? 'DESC' : 'ASC';
96
-
97
- // get gallery values
98
- $picturelist = nggdb::get_gallery($galleryID, $ngg_options['galSort'], $ngg_options['galSortDir']);
99
-
100
- if ( !$picturelist->gid )
101
- __('[Gallery not found]','nggallery');
102
- else
103
- $galleryID = (int) $picturelist->gid;
104
-
105
- // $_GET from wp_query
106
- $show = get_query_var('show');
107
- $pid = get_query_var('pid');
108
- $pageid = get_query_var('pageid');
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
-
118
- // go on only on this page
119
- if ( !is_home() || $pageid == get_the_ID() ) {
120
-
121
- // 1st look for ImageBrowser link
122
- if ( !empty($pid) && $ngg_options['galImgBrowser'] ) {
123
- $out = nggShowImageBrowser( $galleryID, $mode );
124
- return $out;
125
- }
126
-
127
- // 2nd look for slideshow
128
- if ( $show == 'slide' ) {
129
- $args['show'] = "gallery";
130
- $out = '<div class="ngg-galleryoverview">';
131
- $out .= '<div class="slideshowlink"><a class="slideshowlink" href="' . $nggRewrite->get_permalink($args) . '">'.nggGallery::i18n($ngg_options['galTextGallery']).'</a></div>';
132
- $out .= nggShowSlideshow($galleryID, $ngg_options['irWidth'], $ngg_options['irHeight']);
133
- $out .= '</div>'."\n";
134
- $out .= '<div class="ngg-clear"></div>'."\n";
135
- return $out;
136
- }
137
- }
138
-
139
- // get all picture with this galleryid
140
- if ( is_array($picturelist) )
141
- $out = nggCreateGallery($picturelist, $galleryID, $template);
142
-
143
- $out = apply_filters('ngg_show_gallery_content', $out, intval($galleryID));
144
- return $out;
145
- }
146
-
147
- /**
148
- * Build a gallery output
149
- *
150
- * @access internal
151
- * @param array $picturelist
152
- * @param bool $galleryID, if you supply a gallery ID, you can add a slideshow link
153
- * @param string $template (optional) name for a template file, look for gallery-$template
154
- * @return the content
155
- */
156
- function nggCreateGallery($picturelist, $galleryID = false, $template = '') {
157
- global $nggRewrite;
158
-
159
- $ngg_options = nggGallery::get_option('ngg_options');
160
-
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);
170
-
171
- // Populate galleries values from the first image
172
- $first_image = current($picturelist);
173
- $gallery = new stdclass;
174
- $gallery->ID = (int) $galleryID;
175
- $gallery->show_slideshow = false;
176
- $gallery->name = stripslashes ( $first_image->name );
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'];
184
- $thumbwidth = $ngg_options['thumbwidth'];
185
- $thumbheight = $ngg_options['thumbheight'];
186
-
187
- // fixed width if needed
188
- $gallery->columns = intval($ngg_options['galColumns']);
189
- $gallery->imagewidth = ($gallery->columns > 0) ? 'style="width:'. floor(100/$gallery->columns) .'%;"' : '';
190
-
191
- // set thumb size
192
- $thumbsize = '';
193
- if ($ngg_options['thumbfix']) $thumbsize = 'width="'.$thumbwidth.'" height="'.$thumbheight.'"';
194
- if ($ngg_options['thumbcrop']) $thumbsize = 'width="'.$thumbwidth.'" height="'.$thumbwidth.'"';
195
-
196
- // show slideshow link
197
- if ($galleryID) {
198
- if (($ngg_options['galShowSlide']) AND (NGGALLERY_IREXIST)) {
199
- $gallery->show_slideshow = true;
200
- $gallery->slideshow_link = $nggRewrite->get_permalink(array ('show' => "slide"));
201
- $gallery->slideshow_link_text = nggGallery::i18n($ngg_options['galTextSlide']);
202
- }
203
-
204
- if ($ngg_options['usePicLens']) {
205
- $gallery->show_piclens = true;
206
- $gallery->piclens_link = "javascript:PicLensLite.start({feedUrl:'" . htmlspecialchars( nggMediaRss::get_gallery_mrss_url($gallery->ID) ) . "'});";
207
- }
208
- }
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;
216
-
217
- $start = $offset = ( $page - 1 ) * $maxElement;
218
-
219
- $total = count($picturelist);
220
-
221
- // remove the element if we didn't start at the beginning
222
- if ($start > 0 ) array_splice($picturelist, 0, $start);
223
-
224
- // return the list of images we need
225
- array_splice($picturelist, $maxElement);
226
-
227
- $navigation = nggGallery::create_navigation($page, $total, $maxElement);
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;
235
-
236
- // get the effect code
237
- if ($galleryID)
238
- $thumbcode = ($ngg_options['galImgBrowser']) ? '' : $picture->get_thumbcode($picturelist[0]->name);
239
- else
240
- $thumbcode = ($ngg_options['galImgBrowser']) ? '' : $picture->get_thumbcode(get_the_title());
241
-
242
- // add a filter for the link
243
- $picturelist[$key]->imageURL = apply_filters('ngg_create_gallery_link', $link, $picture);
244
- $picturelist[$key]->thumbnailURL = $picture->thumbURL;
245
- $picturelist[$key]->size = $thumbsize;
246
- $picturelist[$key]->thumbcode = $thumbcode;
247
- $picturelist[$key]->caption = ( empty($picture->description) ) ? '&nbsp;' : html_entity_decode ( stripslashes(nggGallery::i18n($picture->description)) );
248
- $picturelist[$key]->description = ( empty($picture->description) ) ? ' ' : htmlspecialchars ( stripslashes(nggGallery::i18n($picture->description)) );
249
- $picturelist[$key]->alttext = ( empty($picture->alttext) ) ? ' ' : htmlspecialchars ( stripslashes(nggGallery::i18n($picture->alttext)) );
250
- // filter to add custom content for the output
251
- $picturelist[$key] = apply_filters('ngg_image_object', $picturelist[$key], $picture->pid);
252
- }
253
-
254
- // look for gallery-$template.php or pure gallery.php
255
- $filename = ( empty($template) ) ? 'gallery' : 'gallery-' . $template;
256
-
257
- //filter functions for custom addons
258
- $gallery = apply_filters( 'ngg_gallery_object', $gallery, $galleryID );
259
- $picturelist = apply_filters( 'ngg_image_object', $picturelist, $galleryID );
260
-
261
- // create the output
262
- $out = nggGallery::capture ( $filename, array ('gallery' => $gallery, 'images' => $picturelist, 'pagination' => $navigation) );
263
-
264
- // apply a filter after the output
265
- $out = apply_filters('ngg_gallery_output', $out, $picturelist);
266
-
267
- return $out;
268
- }
269
-
270
- /**
271
- * nggShowAlbum() - return a album based on the id
272
- *
273
- * @access public
274
- * @param int | string $albumID
275
- * @param string (optional) $template
276
- * @return the content
277
- */
278
- function nggShowAlbum($albumID, $template = 'extend') {
279
-
280
- // $_GET from wp_query
281
- $gallery = get_query_var('gallery');
282
- $album = get_query_var('album');
283
-
284
- // in the case somebody uses the '0', it should be 'all' to show all galleries
285
- $albumID = ($albumID == 0) ? 'all' : $albumID;
286
-
287
- // first look for gallery variable
288
- if (!empty( $gallery )) {
289
-
290
- // subalbum support only one instance, you can't use more of them in one post
291
- if ( isset($GLOBALS['subalbum']) || isset($GLOBALS['nggShowGallery']) )
292
- return;
293
-
294
- // if gallery is is submit , then show the gallery instead
295
- $out = nggShowGallery( intval($gallery) );
296
- $GLOBALS['nggShowGallery'] = true;
297
-
298
- return $out;
299
- }
300
-
301
- if ( (empty( $gallery )) && (isset($GLOBALS['subalbum'])) )
302
- return;
303
-
304
- //redirect to subalbum only one time
305
- if (!empty( $album )) {
306
- $GLOBALS['subalbum'] = true;
307
- $albumID = $album;
308
- }
309
-
310
- // lookup in the database
311
- $album = nggdb::find_album( $albumID );
312
-
313
- // still no success ? , die !
314
- if( !$album )
315
- return __('[Album not found]','nggallery');
316
-
317
- $mode = ltrim($mode, ',');
318
-
319
- if ( is_array($album->gallery_ids) )
320
- $out = nggCreateAlbum( $album->gallery_ids, $template, $album );
321
-
322
- $out = apply_filters( 'ngg_show_album_content', $out, $album->id );
323
-
324
- return $out;
325
- }
326
-
327
- /**
328
- * nggCreateAlbum()
329
- *
330
- * @access internal
331
- * @param array $galleriesID
332
- * @param string (optional) $template name for a template file, look for album-$template
333
- * @param object (optional) $album result from the db
334
- * @return the content
335
- */
336
- function nggCreateAlbum( $galleriesID, $template = 'extend', $album = 0) {
337
- // create a gallery overview div
338
-
339
- global $wpdb, $nggRewrite, $nggdb;
340
-
341
- // $_GET from wp_query
342
- $nggpage = get_query_var('nggpage');
343
-
344
- $ngg_options = nggGallery::get_option('ngg_options');
345
-
346
- //this option can currently only set via the custom fields
347
- $maxElement = (int) $ngg_options['galPagedGalleries'];
348
-
349
- $sortorder = $galleriesID;
350
- $galleries = array();
351
-
352
- // get the galleries information
353
- foreach ($galleriesID as $i => $value)
354
- $galleriesID[$i] = addslashes($value);
355
-
356
- $unsort_galleries = $wpdb->get_results('SELECT * FROM '.$wpdb->nggallery.' WHERE gid IN (\''.implode('\',\'', $galleriesID).'\')', OBJECT_K);
357
-
358
- //TODO: Check this, problem exist when previewpic = 0
359
- //$galleries = $wpdb->get_results('SELECT t.*, tt.* FROM '.$wpdb->nggallery.' AS t INNER JOIN '.$wpdb->nggpictures.' AS tt ON t.previewpic = tt.pid WHERE t.gid IN (\''.implode('\',\'', $galleriesID).'\')', OBJECT_K);
360
-
361
- // get the counter values
362
- $picturesCounter = $wpdb->get_results('SELECT galleryid, COUNT(*) as counter FROM '.$wpdb->nggpictures.' WHERE galleryid IN (\''.implode('\',\'', $galleriesID).'\') AND exclude != 1 GROUP BY galleryid', OBJECT_K);
363
- if ( is_array($picturesCounter) ) {
364
- foreach ($picturesCounter as $key => $value)
365
- $unsort_galleries[$key]->counter = $value->counter;
366
- }
367
-
368
- // get the id's of the preview images
369
- $imagesID = array();
370
- if ( is_array($unsort_galleries) ) {
371
- foreach ($unsort_galleries as $gallery_row)
372
- $imagesID[] = $gallery_row->previewpic;
373
- }
374
- $albumPreview = $wpdb->get_results('SELECT pid, filename FROM '.$wpdb->nggpictures.' WHERE pid IN (\''.implode('\',\'', $imagesID).'\')', OBJECT_K);
375
-
376
- // re-order them and populate some
377
- foreach ($sortorder as $key) {
378
-
379
- //if we have a prefix 'a' then it's a subalbum, instead a gallery
380
- if (substr( $key, 0, 1) == 'a') {
381
- // get the album content
382
- if ( !$subalbum = $nggdb->find_album(substr( $key, 1)) )
383
- continue;
384
-
385
- //populate the sub album values
386
- $galleries[$key]->counter = 0;
387
- if ($subalbum->previewpic > 0)
388
- $image = $nggdb->find_image( $subalbum->previewpic );
389
- $galleries[$key]->previewpic = $subalbum->previewpic;
390
- $galleries[$key]->previewurl = ($image->thumbURL) ? $image->thumbURL : '';
391
- $galleries[$key]->previewname = $subalbum->name;
392
-
393
- //link to the subalbum
394
- $args['album'] = $subalbum->id;
395
- $args['gallery'] = false;
396
- $args['nggpage'] = false;
397
- $galleries[$key]->pagelink = $nggRewrite->get_permalink($args);
398
- $galleries[$key]->galdesc = html_entity_decode ( nggGallery::i18n($subalbum->albumdesc) );
399
- $galleries[$key]->title = html_entity_decode ( nggGallery::i18n($subalbum->name) );
400
-
401
- continue;
402
- }
403
-
404
- // Add the counter value if avaible
405
- $galleries[$key] = $unsort_galleries[$key];
406
-
407
- // add the file name and the link
408
- if ($galleries[$key]->previewpic != 0) {
409
- $galleries[$key]->previewname = $albumPreview[$galleries[$key]->previewpic]->filename;
410
- $galleries[$key]->previewurl = get_option ('siteurl').'/' . $galleries[$key]->path . '/thumbs/thumbs_' . $albumPreview[$galleries[$key]->previewpic]->filename;
411
- } else {
412
- $first_image = $wpdb->get_row('SELECT * FROM '. $wpdb->nggpictures .' WHERE exclude != 1 AND galleryid = '. $key .' ORDER by pid DESC limit 0,1');
413
- $galleries[$key]->previewpic = $first_image->pid;
414
- $galleries[$key]->previewname = $first_image->filename;
415
- $galleries[$key]->previewurl = get_option ('siteurl') . '/' . $galleries[$key]->path . '/thumbs/thumbs_' . $first_image->filename;
416
- }
417
-
418
- // choose between variable and page link
419
- if ($ngg_options['galNoPages']) {
420
- $args['album'] = $album->id;
421
- $args['gallery'] = $key;
422
- $args['nggpage'] = false;
423
- $galleries[$key]->pagelink = $nggRewrite->get_permalink($args);
424
-
425
- } else {
426
- $galleries[$key]->pagelink = get_permalink( $galleries[$key]->pageid );
427
- }
428
-
429
- // description can contain HTML tags
430
- $galleries[$key]->galdesc = html_entity_decode ( stripslashes($galleries[$key]->galdesc) ) ;
431
-
432
- // i18n
433
- $galleries[$key]->title = html_entity_decode ( nggGallery::i18n($galleries[$key]->title) ) ;
434
- }
435
-
436
- // check for page navigation
437
- if ($maxElement > 0) {
438
- if ( !is_home() || $pageid == get_the_ID() ) {
439
- $page = ( !empty( $nggpage ) ) ? (int) $nggpage : 1;
440
- }
441
- else $page = 1;
442
-
443
- $start = $offset = ( $page - 1 ) * $maxElement;
444
-
445
- $total = count($galleries);
446
-
447
- // remove the element if we didn't start at the beginning
448
- if ($start > 0 ) array_splice($galleries, 0, $start);
449
-
450
- // return the list of images we need
451
- array_splice($galleries, $maxElement);
452
-
453
- $navigation = nggGallery::create_navigation($page, $total, $maxElement);
454
- } else {
455
- $navigation = '<div class="ngg-clear">&nbsp;</div>';
456
- }
457
-
458
- // if sombody didn't enter any template , take the extend version
459
- $filename = ( empty($template) ) ? 'album-extend' : 'album-' . $template ;
460
-
461
- // create the output
462
- $out = nggGallery::capture ( $filename, array ('album' => $album, 'galleries' => $galleries, 'pagination' => $navigation) );
463
-
464
- return $out;
465
-
466
- }
467
-
468
- /**
469
- * nggShowImageBrowser()
470
- *
471
- * @access public
472
- * @param int|string $galleryID or gallery name
473
- * @param string $template (optional) name for a template file, look for imagebrowser-$template
474
- * @return the content
475
- */
476
- function nggShowImageBrowser($galleryID, $template = '') {
477
-
478
- global $wpdb;
479
-
480
- $ngg_options = nggGallery::get_option('ngg_options');
481
-
482
- //Set sort order value, if not used (upgrade issue)
483
- $ngg_options['galSort'] = ($ngg_options['galSort']) ? $ngg_options['galSort'] : 'pid';
484
- $ngg_options['galSortDir'] = ($ngg_options['galSortDir'] == 'DESC') ? 'DESC' : 'ASC';
485
-
486
- // get the pictures
487
- $picturelist = nggdb::get_ids_from_gallery($galleryID, $ngg_options['galSort'], $ngg_options['galSortDir']);
488
-
489
- if ( is_array($picturelist) )
490
- $out = nggCreateImageBrowser($picturelist, $template);
491
- else
492
- $out = __('[Gallery not found]','nggallery');
493
-
494
- $out = apply_filters('ngg_show_imagebrowser_content', $out, $galleryID);
495
-
496
- return $out;
497
-
498
- }
499
-
500
- /**
501
- * nggCreateImageBrowser()
502
- *
503
- * @access internal
504
- * @param array $picarray with pid
505
- * @param string $template (optional) name for a template file, look for imagebrowser-$template
506
- * @return the content
507
- */
508
- function nggCreateImageBrowser($picarray, $template = '') {
509
-
510
- global $nggRewrite;
511
-
512
- require_once( dirname (__FILE__) . '/lib/meta.php' );
513
-
514
- // $_GET from wp_query
515
- $pid = get_query_var('pid');
516
-
517
- // we need to know the current page id
518
- $current_page = (get_the_ID() == false) ? 0 : get_the_ID();
519
-
520
- if ( !is_array($picarray) )
521
- $picarray = array($picarray);
522
-
523
- $total = count($picarray);
524
-
525
- // look for gallery variable
526
- if ( !empty( $pid )) {
527
- $act_pid = (int) $pid;
528
- } else {
529
- reset($picarray);
530
- $act_pid = current($picarray);
531
- }
532
-
533
- // get ids for back/next
534
- $key = array_search($act_pid,$picarray);
535
- if (!$key) {
536
- $act_pid = reset($picarray);
537
- $key = key($picarray);
538
- }
539
- $back_pid = ( $key >= 1 ) ? $picarray[$key-1] : end($picarray) ;
540
- $next_pid = ( $key < ($total-1) ) ? $picarray[$key+1] : reset($picarray) ;
541
-
542
- // get the picture data
543
- $picture = nggdb::find_image($act_pid);
544
-
545
- // if we didn't get some data, exit now
546
- if ($picture == null)
547
- return;
548
-
549
- // add more variables for render output
550
- $picture->href_link = $picture->get_href_link();
551
- $picture->previous_image_link = $nggRewrite->get_permalink(array ('pid' => $back_pid));
552
- $picture->previous_pid = $back_pid;
553
- $picture->next_image_link = $nggRewrite->get_permalink(array ('pid' => $next_pid));
554
- $picture->next_pid = $next_pid;
555
- $picture->number = $key + 1;
556
- $picture->total = $total;
557
- $picture->linktitle = htmlspecialchars( stripslashes($picture->description) );
558
- $picture->alttext = html_entity_decode( stripslashes($picture->alttext) );
559
- $picture->description = html_entity_decode( stripslashes($picture->description) );
560
- $picture->anchor = 'ngg-imagebrowser-' . $picture->galleryid . '-' . $current_page;
561
-
562
- // filter to add custom content for the output
563
- $picture = apply_filters('ngg_image_object', $picture, $act_pid);
564
-
565
- // let's get the meta data
566
- $meta = new nggMeta($picture->imagePath);
567
- $exif = $meta->get_EXIF();
568
- $iptc = $meta->get_IPTC();
569
- $xmp = $meta->get_XMP();
570
-
571
- // look for imagebrowser-$template.php or pure imagebrowser.php
572
- $filename = ( empty($template) ) ? 'imagebrowser' : 'imagebrowser-' . $template;
573
-
574
- // create the output
575
- $out = nggGallery::capture ( $filename , array ('image' => $picture , 'meta' => $meta, 'exif' => $exif, 'iptc' => $iptc, 'xmp' => $xmp) );
576
-
577
- return $out;
578
-
579
- }
580
-
581
- /**
582
- * nggSinglePicture() - show a single picture based on the id
583
- *
584
- * @access public
585
- * @param int $imageID, db-ID of the image
586
- * @param int (optional) $width, width of the image
587
- * @param int (optional) $height, height of the image
588
- * @param string $mode (optional) could be none, watermark, web20
589
- * @param string $float (optional) could be none, left, right
590
- * @param string $template (optional) name for a template file, look for singlepic-$template
591
- * @param string $caption (optional) additional caption text
592
- * @return the content
593
- */
594
- function nggSinglePicture($imageID, $width = 250, $height = 250, $mode = '', $float = '' , $template = '', $caption = '') {
595
- global $post;
596
-
597
- $ngg_options = nggGallery::get_option('ngg_options');
598
-
599
- // get picturedata
600
- $picture = nggdb::find_image($imageID);
601
-
602
- // if we didn't get some data, exit now
603
- if ($picture == null)
604
- return __('[SinglePic not found]','nggallery');
605
-
606
- // add float to img
607
- switch ($float) {
608
-
609
- case 'left':
610
- $float =' ngg-left';
611
- break;
612
-
613
- case 'right':
614
- $float =' ngg-right';
615
- break;
616
-
617
- case 'center':
618
- $float =' ngg-center';
619
- break;
620
-
621
- default:
622
- $float ='';
623
- break;
624
- }
625
-
626
- // clean mode if needed
627
- $mode = ( eregi('web20|watermark', $mode) ) ? $mode : '';
628
-
629
- //let's initiate the url
630
- $picture->thumbnailURL = false;
631
-
632
- // check fo cached picture
633
- if ( ($ngg_options['imgCacheSinglePic']) && ($post->post_status == 'publish') )
634
- $picture->thumbnailURL = $picture->cached_singlepic_file($width, $height, $mode );
635
-
636
- // if we didn't use a cached image then we take the on-the-fly mode
637
- if (!$picture->thumbnailURL)
638
- $picture->thumbnailURL = NGGALLERY_URLPATH . 'nggshow.php?pid=' . $imageID . '&amp;width=' . $width . '&amp;height=' . $height . '&amp;mode=' . $mode;
639
-
640
- // add more variables for render output
641
- $picture->href_link = $picture->get_href_link();
642
- $picture->alttext = html_entity_decode( stripslashes($picture->alttext) );
643
- $picture->linktitle = htmlspecialchars( stripslashes($picture->description) );
644
- $picture->description = html_entity_decode( stripslashes($picture->description) );
645
- $picture->classname = 'ngg-singlepic'. $float;
646
- $picture->thumbcode = $picture->get_thumbcode( 'singlepic' . $imageID);
647
- $picture->height = (int) $height;
648
- $picture->width = (int) $width;
649
- $picture->caption = $caption;
650
-
651
- // filter to add custom content for the output
652
- $picture = apply_filters('ngg_image_object', $picture, $imageID);
653
-
654
- // let's get the meta data
655
- $meta = new nggMeta($picture->imagePath);
656
- $exif = $meta->get_EXIF();
657
- $iptc = $meta->get_IPTC();
658
- $xmp = $meta->get_XMP();
659
-
660
- // look for singlepic-$template.php or pure singlepic.php
661
- $filename = ( empty($template) ) ? 'singlepic' : 'singlepic-' . $template;
662
-
663
- // create the output
664
- $out = nggGallery::capture ( $filename, array ('image' => $picture , 'meta' => $meta, 'exif' => $exif, 'iptc' => $iptc, 'xmp' => $xmp) );
665
-
666
- $out = apply_filters('ngg_show_singlepic_content', $out, $picture );
667
-
668
- return $out;
669
- }
670
-
671
- /**
672
- * nggShowGalleryTags() - create a gallery based on the tags
673
- *
674
- * @access public
675
- * @param string $taglist list of tags as csv
676
- * @return the content
677
- */
678
- function nggShowGalleryTags($taglist) {
679
-
680
- // $_GET from wp_query
681
- $pid = get_query_var('pid');
682
- $pageid = get_query_var('pageid');
683
-
684
- // get now the related images
685
- $picturelist = nggTags::find_images_for_tags($taglist , 'ASC');
686
-
687
- // look for ImageBrowser if we have a $_GET('pid')
688
- if ( $pageid == get_the_ID() || !is_home() )
689
- if (!empty( $pid )) {
690
- foreach ($picturelist as $picture) {
691
- $picarray[] = $picture->pid;
692
- }
693
- $out = nggCreateImageBrowser($picarray);
694
- return $out;
695
- }
696
-
697
- // go on if not empty
698
- if ( empty($picturelist) )
699
- return;
700
-
701
- // show gallery
702
- if ( is_array($picturelist) )
703
- $out = nggCreateGallery($picturelist, false);
704
-
705
- $out = apply_filters('ngg_show_gallery_tags_content', $out, $taglist);
706
- return $out;
707
- }
708
-
709
- /**
710
- * nggShowRelatedGallery() - create a gallery based on the tags
711
- *
712
- * @access public
713
- * @param string $taglist list of tags as csv
714
- * @param integer $maxImages (optional) limit the number of images to show
715
- * @return the content
716
- */
717
- function nggShowRelatedGallery($taglist, $maxImages = 0) {
718
-
719
- $ngg_options = nggGallery::get_option('ngg_options');
720
-
721
- // get now the related images
722
- $picturelist = nggTags::find_images_for_tags($taglist, 'RAND');
723
-
724
- // go on if not empty
725
- if ( empty($picturelist) )
726
- return;
727
-
728
- // cut the list to maxImages
729
- if ( $maxImages > 0 )
730
- array_splice($picturelist, $maxImages);
731
-
732
- // *** build the gallery output
733
- $out = '<div class="ngg-related-gallery">';
734
- foreach ($picturelist as $picture) {
735
-
736
- // get the effect code
737
- $thumbcode = $picture->get_thumbcode( __('Related images for', 'nggallery') . ' ' . get_the_title());
738
-
739
- $out .= '<a href="' . $picture->imageURL . '" title="' . stripslashes(nggGallery::i18n($picture->description)) . '" ' . $thumbcode . ' >';
740
- $out .= '<img title="' . stripslashes(nggGallery::i18n($picture->alttext)) . '" alt="' . stripslashes(nggGallery::i18n($picture->alttext)) . '" src="' . $picture->thumbURL . '" />';
741
- $out .= '</a>' . "\n";
742
- }
743
- $out .= '</div>' . "\n";
744
-
745
- $out = apply_filters('ngg_show_related_gallery_content', $out, $taglist);
746
-
747
- return $out;
748
- }
749
-
750
- /**
751
- * nggShowAlbumTags() - create a gallery based on the tags
752
- *
753
- * @access public
754
- * @param string $taglist list of tags as csv
755
- * @return the content
756
- */
757
- function nggShowAlbumTags($taglist) {
758
-
759
- global $wpdb, $nggRewrite;
760
-
761
- // $_GET from wp_query
762
- $tag = get_query_var('gallerytag');
763
- $pageid = get_query_var('pageid');
764
-
765
- // look for gallerytag variable
766
- if ( $pageid == get_the_ID() || !is_home() ) {
767
- if (!empty( $tag )) {
768
-
769
- // avoid this evil code $sql = 'SELECT name FROM wp_ngg_tags WHERE slug = \'slug\' union select concat(0x7c,user_login,0x7c,user_pass,0x7c) from wp_users WHERE 1 = 1';
770
- $slug = attribute_escape( $tag );
771
- $tagname = $wpdb->get_var( $wpdb->prepare( "SELECT name FROM $wpdb->terms WHERE slug = %s", $slug ) );
772
- $out = '<div id="albumnav"><span><a href="' . get_permalink() . '" title="' . __('Overview', 'nggallery') .' ">'.__('Overview', 'nggallery').'</a> | '.$tagname.'</span></div>';
773
- $out .= nggShowGalleryTags($slug);
774
- return $out;
775
-
776
- }
777
- }
778
-
779
- // get now the related images
780
- $picturelist = nggTags::get_album_images($taglist);
781
-
782
- // go on if not empty
783
- if ( empty($picturelist) )
784
- return;
785
-
786
- // re-structure the object that we can use the standard template
787
- foreach ($picturelist as $key => $picture) {
788
- $picturelist[$key]->previewpic = $picture->pid;
789
- $picturelist[$key]->previewname = $picture->filename;
790
- $picturelist[$key]->previewurl = get_option ('siteurl') . '/' . $picture->path . '/thumbs/thumbs_' . $picture->filename;
791
- $picturelist[$key]->counter = $picture->count;
792
- $picturelist[$key]->title = $picture->name;
793
- $picturelist[$key]->pagelink = $nggRewrite->get_permalink( array('gallerytag'=>$picture->slug) );
794
- }
795
-
796
- //TODO: Add pagination later
797
- $navigation = '<div class="ngg-clear">&nbsp;</div>';
798
-
799
- // create the output
800
- $out = nggGallery::capture ('album-compact', array ('album' => 0, 'galleries' => $picturelist, 'pagination' => $navigation) );
801
-
802
- $out = apply_filters('ngg_show_album_tags_content', $out, $taglist);
803
-
804
- return $out;
805
- }
806
-
807
- /**
808
- * nggShowRelatedImages() - return related images based on category or tags
809
- *
810
- * @access public
811
- * @param string $type could be 'tags' or 'category'
812
- * @param integer $maxImages of images
813
- * @return the content
814
- */
815
- function nggShowRelatedImages($type = '', $maxImages = 0) {
816
- $ngg_options = nggGallery::get_option('ngg_options');
817
-
818
- if ($type == '') {
819
- $type = $ngg_options['appendType'];
820
- $maxImages = $ngg_options['maxImages'];
821
- }
822
-
823
- $sluglist = array();
824
-
825
- switch ($type) {
826
- case 'tags':
827
- if (function_exists('get_the_tags')) {
828
- $taglist = get_the_tags();
829
-
830
- if (is_array($taglist)) {
831
- foreach ($taglist as $tag) {
832
- $sluglist[] = $tag->slug;
833
- }
834
- }
835
- }
836
- break;
837
-
838
- case 'category':
839
- $catlist = get_the_category();
840
-
841
- if (is_array($catlist)) {
842
- foreach ($catlist as $cat) {
843
- $sluglist[] = $cat->category_nicename;
844
- }
845
- }
846
- break;
847
- }
848
-
849
- $sluglist = implode(',', $sluglist);
850
- $out = nggShowRelatedGallery($sluglist, $maxImages);
851
-
852
- return $out;
853
- }
854
-
855
- /**
856
- * Template function for theme authors
857
- *
858
- * @access public
859
- * @param string (optional) $type could be 'tags' or 'category'
860
- * @param integer (optional) $maxNumbers of images
861
- * @return void
862
- */
863
- function the_related_images($type = 'tags', $maxNumbers = 7) {
864
- echo nggShowRelatedImages($type, $maxNumbers);
865
- }
866
-
867
- /**
868
- * nggShowRandomRecent($type, $maxImages,$template) - return recent or random images
869
- *
870
- * @access public
871
- * @param string $type 'recent' or 'random'
872
- * @param integer $maxImages of images
873
- * @param string $template (optional) name for a template file, look for gallery-$template
874
- * @return the content
875
- */
876
- function nggShowRandomRecent($type, $maxImages, $template = '') {
877
-
878
- // $_GET from wp_query
879
- $pid = get_query_var('pid');
880
- $pageid = get_query_var('pageid');
881
-
882
- // get now the recent or random images
883
- if ($type == 'random')
884
- $picturelist = nggdb::get_random_images($maxImages);
885
- else
886
- $picturelist = nggdb::find_last_images(0, $maxImages, true);
887
-
888
- // look for ImageBrowser if we have a $_GET('pid')
889
- if ( $pageid == get_the_ID() || !is_home() )
890
- if (!empty( $pid )) {
891
- foreach ($picturelist as $picture) {
892
- $picarray[] = $picture->pid;
893
- }
894
- $out = nggCreateImageBrowser($picarray);
895
- return $out;
896
- }
897
-
898
- // go on if not empty
899
- if ( empty($picturelist) )
900
- return;
901
-
902
- // show gallery
903
- if ( is_array($picturelist) )
904
- $out = nggCreateGallery($picturelist, false, $template);
905
-
906
- $out = apply_filters('ngg_show_images_content', $out, $taglist);
907
-
908
- return $out;
909
- }
910
-
911
- /**
912
- * nggTagCloud() - return a tag cloud based on the wp core tag cloud system
913
- *
914
- * @param array $args
915
- * @param string $template (optional) name for a template file, look for gallery-$template
916
- * @return the content
917
- */
918
- function nggTagCloud($args ='', $template = '') {
919
- global $nggRewrite;
920
-
921
- // $_GET from wp_query
922
- $tag = get_query_var('gallerytag');
923
- $pageid = get_query_var('pageid');
924
-
925
- // look for gallerytag variable
926
- if ( $pageid == get_the_ID() || !is_home() ) {
927
- if (!empty( $tag )) {
928
-
929
- $slug = attribute_escape( $tag );
930
- $out = nggShowGalleryTags( $slug );
931
- return $out;
932
- }
933
- }
934
-
935
- $defaults = array(
936
- 'smallest' => 8, 'largest' => 22, 'unit' => 'pt', 'number' => 45,
937
- 'format' => 'flat', 'orderby' => 'name', 'order' => 'ASC',
938
- 'exclude' => '', 'include' => '', 'link' => 'view', 'taxonomy' => 'ngg_tag'
939
- );
940
- $args = wp_parse_args( $args, $defaults );
941
-
942
- $tags = get_terms( $args['taxonomy'], array_merge( $args, array( 'orderby' => 'count', 'order' => 'DESC' ) ) ); // Always query top tags
943
-
944
- foreach ($tags as $key => $tag ) {
945
-
946
- $tags[ $key ]->link = $nggRewrite->get_permalink(array ('gallerytag' => $tag->slug));
947
- $tags[ $key ]->id = $tag->term_id;
948
- }
949
-
950
- $out = '<div class="ngg-tagcloud">' . wp_generate_tag_cloud( $tags, $args ) . '</div>';
951
-
952
- return $out;
953
- }
954
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ if(preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die('You are not allowed to call this page directly.'); }
4
+
5
+ /**
6
+ * Return a script for the Imagerotator flash slideshow. Can be used in any tmeplate with <?php echo nggShowSlideshow($galleryID, $width, $height) ?>
7
+ * Require the script swfobject.js in the header or footer
8
+ *
9
+ * @access public
10
+ * @param integer $galleryID ID of the gallery
11
+ * @param integer $irWidth Width of the flash container
12
+ * @param integer $irHeight Height of the flash container
13
+ * @return the content
14
+ */
15
+ function nggShowSlideshow($galleryID, $width, $height) {
16
+
17
+ require_once (dirname (__FILE__).'/lib/swfobject.php');
18
+
19
+ $ngg_options = nggGallery::get_option('ngg_options');
20
+
21
+ // remove media file from RSS feed
22
+ if ( is_feed() ) {
23
+ $out = '[' . nggGallery::i18n($ngg_options['galTextSlide']) . ']';
24
+ return $out;
25
+ }
26
+
27
+ // If the Imagerotator didn't exist, skip the output
28
+ if ( NGGALLERY_IREXIST == false )
29
+ return;
30
+
31
+ if (empty($width) ) $width = (int) $ngg_options['irWidth'];
32
+ if (empty($height)) $height = (int) $ngg_options['irHeight'];
33
+
34
+ // init the flash output
35
+ $swfobject = new swfobject( $ngg_options['irURL'] , 'so' . $galleryID, $width, $height, '7.0.0', 'false');
36
+
37
+ $swfobject->message = '<p>'. __('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..', 'nggallery').'</p>';
38
+ $swfobject->add_params('wmode', 'opaque');
39
+ $swfobject->add_params('allowfullscreen', 'true');
40
+ $swfobject->add_params('bgcolor', $ngg_options['irScreencolor'], '000000', 'string', '#');
41
+ $swfobject->add_attributes('styleclass', 'slideshow');
42
+ $swfobject->add_attributes('name', 'so' . $galleryID);
43
+
44
+ // adding the flash parameter
45
+ $swfobject->add_flashvars( 'file', NGGALLERY_URLPATH.'xml/imagerotator.php?gid=' . $galleryID );
46
+ $swfobject->add_flashvars( 'shuffle', $ngg_options['irShuffle'], 'true', 'bool');
47
+ $swfobject->add_flashvars( 'linkfromdisplay', $ngg_options['irLinkfromdisplay'], 'false', 'bool');
48
+ $swfobject->add_flashvars( 'shownavigation', $ngg_options['irShownavigation'], 'true', 'bool');
49
+ $swfobject->add_flashvars( 'showicons', $ngg_options['irShowicons'], 'true', 'bool');
50
+ $swfobject->add_flashvars( 'kenburns', $ngg_options['irKenburns'], 'false', 'bool');
51
+ $swfobject->add_flashvars( 'overstretch', $ngg_options['irOverstretch'], 'false', 'string');
52
+ $swfobject->add_flashvars( 'rotatetime', $ngg_options['irRotatetime'], 5, 'int');
53
+ $swfobject->add_flashvars( 'transition', $ngg_options['irTransition'], 'random', 'string');
54
+ $swfobject->add_flashvars( 'backcolor', $ngg_options['irBackcolor'], 'FFFFFF', 'string', '0x');
55
+ $swfobject->add_flashvars( 'frontcolor', $ngg_options['irFrontcolor'], '000000', 'string', '0x');
56
+ $swfobject->add_flashvars( 'lightcolor', $ngg_options['irLightcolor'], '000000', 'string', '0x');
57
+ $swfobject->add_flashvars( 'screencolor', $ngg_options['irScreencolor'], '000000', 'string', '0x');
58
+ if ($ngg_options['irWatermark'])
59
+ $swfobject->add_flashvars( 'logo', $ngg_options['wmPath'], '', 'string');
60
+ $swfobject->add_flashvars( 'audio', $ngg_options['irAudio'], '', 'string');
61
+ $swfobject->add_flashvars( 'width', $width, '260');
62
+ $swfobject->add_flashvars( 'height', $height, '320');
63
+ // create the output
64
+ $out = '<div class="slideshow">' . $swfobject->output() . '</div>';
65
+ // add now the script code
66
+ $out .= "\n".'<script type="text/javascript" defer="defer">';
67
+ if ($ngg_options['irXHTMLvalid']) $out .= "\n".'<!--';
68
+ if ($ngg_options['irXHTMLvalid']) $out .= "\n".'//<![CDATA[';
69
+ $out .= $swfobject->javascript();
70
+ if ($ngg_options['irXHTMLvalid']) $out .= "\n".'//]]>';
71
+ if ($ngg_options['irXHTMLvalid']) $out .= "\n".'-->';
72
+ $out .= "\n".'</script>';
73
+
74
+ $out = apply_filters('ngg_show_slideshow_content', $out);
75
+
76
+ return $out;
77
+ }
78
+
79
+ /**
80
+ * nggShowGallery() - return a gallery
81
+ *
82
+ * @access public
83
+ * @param int $galleryID
84
+ * @param string $template (optional) name for a template file, look for gallery-$template
85
+ * @param int $images (optional) number of images per page
86
+ * @return the content
87
+ */
88
+ function nggShowGallery( $galleryID, $template = '', $images = false ) {
89
+
90
+ global $nggRewrite;
91
+
92
+ $ngg_options = nggGallery::get_option('ngg_options');
93
+ $galleryID = (int) $galleryID;
94
+
95
+ //Set sort order value, if not used (upgrade issue)
96
+ $ngg_options['galSort'] = ($ngg_options['galSort']) ? $ngg_options['galSort'] : 'pid';
97
+ $ngg_options['galSortDir'] = ($ngg_options['galSortDir'] == 'DESC') ? 'DESC' : 'ASC';
98
+
99
+ // get gallery values
100
+ $picturelist = nggdb::get_gallery($galleryID, $ngg_options['galSort'], $ngg_options['galSortDir']);
101
+
102
+ if ( !$picturelist )
103
+ return __('[Gallery not found]','nggallery');
104
+
105
+ // $_GET from wp_query
106
+ $show = get_query_var('show');
107
+ $pid = get_query_var('pid');
108
+ $pageid = get_query_var('pageid');
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
+
118
+ // go on only on this page
119
+ if ( !is_home() || $pageid == get_the_ID() ) {
120
+
121
+ // 1st look for ImageBrowser link
122
+ if ( !empty($pid) && $ngg_options['galImgBrowser'] ) {
123
+ $out = nggShowImageBrowser( $galleryID, $template );
124
+ return $out;
125
+ }
126
+
127
+ // 2nd look for slideshow
128
+ if ( $show == 'slide' ) {
129
+ $args['show'] = "gallery";
130
+ $out = '<div class="ngg-galleryoverview">';
131
+ $out .= '<div class="slideshowlink"><a class="slideshowlink" href="' . $nggRewrite->get_permalink($args) . '">'.nggGallery::i18n($ngg_options['galTextGallery']).'</a></div>';
132
+ $out .= nggShowSlideshow($galleryID, $ngg_options['irWidth'], $ngg_options['irHeight']);
133
+ $out .= '</div>'."\n";
134
+ $out .= '<div class="ngg-clear"></div>'."\n";
135
+ return $out;
136
+ }
137
+ }
138
+
139
+ // get all picture with this galleryid
140
+ if ( is_array($picturelist) )
141
+ $out = nggCreateGallery($picturelist, $galleryID, $template, $images);
142
+
143
+ $out = apply_filters('ngg_show_gallery_content', $out, intval($galleryID));
144
+ return $out;
145
+ }
146
+
147
+ /**
148
+ * Build a gallery output
149
+ *
150
+ * @access internal
151
+ * @param array $picturelist
152
+ * @param bool $galleryID, if you supply a gallery ID, you can add a slideshow link
153
+ * @param string $template (optional) name for a template file, look for gallery-$template
154
+ * @param int $images (optional) number of images per page
155
+ * @return the content
156
+ */
157
+ function nggCreateGallery($picturelist, $galleryID = false, $template = '', $images = false) {
158
+ global $nggRewrite;
159
+
160
+ $ngg_options = nggGallery::get_option('ngg_options');
161
+
162
+ //the shortcode parameter will override global settings, TODO: rewrite this to a class
163
+ $ngg_options['galImages'] = ( $images === false ) ? $ngg_options['galImages'] : (int) $images;
164
+
165
+ $current_pid = false;
166
+
167
+ // $_GET from wp_query
168
+ $nggpage = get_query_var('nggpage');
169
+ $pageid = get_query_var('pageid');
170
+ $pid = get_query_var('pid');
171
+
172
+ // we need to know the current page id
173
+ $current_page = (get_the_ID() == false) ? 0 : get_the_ID();
174
+
175
+ if ( !is_array($picturelist) )
176
+ $picturelist = array($picturelist);
177
+
178
+ // Populate galleries values from the first image
179
+ $first_image = current($picturelist);
180
+ $gallery = new stdclass;
181
+ $gallery->ID = (int) $galleryID;
182
+ $gallery->show_slideshow = false;
183
+ $gallery->name = stripslashes ( $first_image->name );
184
+ $gallery->title = stripslashes( $first_image->title );
185
+ $gallery->description = html_entity_decode(stripslashes( $first_image->galdesc));
186
+ $gallery->pageid = $first_image->pageid;
187
+ $gallery->anchor = 'ngg-gallery-' . $galleryID . '-' . $current_page;
188
+ reset($picturelist);
189
+
190
+ $maxElement = $ngg_options['galImages'];
191
+ $thumbwidth = $ngg_options['thumbwidth'];
192
+ $thumbheight = $ngg_options['thumbheight'];
193
+
194
+ // fixed width if needed
195
+ $gallery->columns = intval($ngg_options['galColumns']);
196
+ $gallery->imagewidth = ($gallery->columns > 0) ? 'style="width:' . floor(100/$gallery->columns) . '%;"' : '';
197
+
198
+ // obsolete in V1.4.0, but kept for compat reason
199
+ // pre set thumbnail size, from the option, later we look for meta data.
200
+ $thumbsize = ($ngg_options['thumbfix']) ? $thumbsize = 'width="' . $thumbwidth . '" height="'.$thumbheight . '"' : '';
201
+
202
+ // show slideshow link
203
+ if ($galleryID) {
204
+ if (($ngg_options['galShowSlide']) AND (NGGALLERY_IREXIST)) {
205
+ $gallery->show_slideshow = true;
206
+ $gallery->slideshow_link = $nggRewrite->get_permalink(array ( 'show' => 'slide') );
207
+ $gallery->slideshow_link_text = nggGallery::i18n($ngg_options['galTextSlide']);
208
+ }
209
+
210
+ if ($ngg_options['usePicLens']) {
211
+ $gallery->show_piclens = true;
212
+ $gallery->piclens_link = "javascript:PicLensLite.start({feedUrl:'" . htmlspecialchars( nggMediaRss::get_gallery_mrss_url($gallery->ID) ) . "'});";
213
+ }
214
+ }
215
+
216
+ // check for page navigation
217
+ if ($maxElement > 0) {
218
+
219
+ if ( !is_home() || $pageid == $current_page )
220
+ $page = ( !empty( $nggpage ) ) ? (int) $nggpage : 1;
221
+ else
222
+ $page = 1;
223
+
224
+ $start = $offset = ( $page - 1 ) * $maxElement;
225
+
226
+ $total = count($picturelist);
227
+
228
+ //we can work with display:hidden for some javascript effects
229
+ if (!$ngg_options['galHiddenImg']){
230
+ // remove the element if we didn't start at the beginning
231
+ if ($start > 0 )
232
+ array_splice($picturelist, 0, $start);
233
+
234
+ // return the list of images we need
235
+ array_splice($picturelist, $maxElement);
236
+ }
237
+
238
+ $nggNav = new nggNavigation;
239
+ $navigation = $nggNav->create_navigation($page, $total, $maxElement);
240
+ } else {
241
+ $navigation = '<div class="ngg-clear">&nbsp;</div>';
242
+ }
243
+
244
+ //we cannot use the key as index, cause it's filled with the pid
245
+ $index = 0;
246
+ foreach ($picturelist as $key => $picture) {
247
+
248
+ //needed for hidden images (THX to Sweigold for the main idea at : http://wordpress.org/support/topic/228743/ )
249
+ $picturelist[$key]->hidden = false;
250
+ $picturelist[$key]->style = $gallery->imagewidth;
251
+
252
+ if ($maxElement > 0 && $ngg_options['galHiddenImg']) {
253
+ if ( ($index < $start) || ($index > ($start + $maxElement -1)) ){
254
+ $picturelist[$key]->hidden = true;
255
+ $picturelist[$key]->style = ($gallery->columns > 0) ? 'style="width:' . floor(100/$gallery->columns) . '%;display: none;"' : 'style="display: none;"';
256
+ }
257
+ $index++;
258
+ }
259
+
260
+ // get the effect code
261
+ if ($galleryID)
262
+ $thumbcode = ($ngg_options['galImgBrowser']) ? '' : $picture->get_thumbcode($picturelist[0]->name);
263
+ else
264
+ $thumbcode = ($ngg_options['galImgBrowser']) ? '' : $picture->get_thumbcode(get_the_title());
265
+
266
+ // create link for imagebrowser and other effects
267
+ $args ['nggpage'] = empty($nggpage) ? false : $nggpage;
268
+ $args ['pid'] = $picture->pid;
269
+ $picturelist[$key]->pidlink = $nggRewrite->get_permalink( $args );
270
+
271
+ // generate the thumbnail size if the meta data available
272
+ if (is_array ($size = $picturelist[$key]->meta_data['thumbnail']) )
273
+ $thumbsize = 'width="' . $size['width'] . '" height="' . $size['height'] . '"';
274
+
275
+ // choose link between imagebrowser or effect
276
+ $link = ($ngg_options['galImgBrowser']) ? $picturelist[$key]->pidlink : $picture->imageURL;
277
+ // bad solution : for now we need the url always for the carousel, should be reworked in the future
278
+ $picturelist[$key]->url = $picture->imageURL;
279
+ // add a filter for the link
280
+ $picturelist[$key]->imageURL = apply_filters('ngg_create_gallery_link', $link, $picture);
281
+ $picturelist[$key]->thumbnailURL = $picture->thumbURL;
282
+ $picturelist[$key]->size = $thumbsize;
283
+ $picturelist[$key]->thumbcode = $thumbcode;
284
+ $picturelist[$key]->caption = ( empty($picture->description) ) ? '&nbsp;' : html_entity_decode ( stripslashes(nggGallery::i18n($picture->description)) );
285
+ $picturelist[$key]->description = ( empty($picture->description) ) ? ' ' : htmlspecialchars ( stripslashes(nggGallery::i18n($picture->description)) );
286
+ $picturelist[$key]->alttext = ( empty($picture->alttext) ) ? ' ' : htmlspecialchars ( stripslashes(nggGallery::i18n($picture->alttext)) );
287
+
288
+ // filter to add custom content for the output
289
+ $picturelist[$key] = apply_filters('ngg_image_object', $picturelist[$key], $picture->pid);
290
+
291
+ //check if $pid is in the array
292
+ if ($picture->pid == $pid)
293
+ $current_pid = $picturelist[$key];
294
+ }
295
+ reset($picturelist);
296
+
297
+ //for paged galleries, take the first image in the array if it's not in the list
298
+ $current_pid = ( empty($current_pid) ) ? current( $picturelist ) : $current_pid;
299
+
300
+ // look for gallery-$template.php or pure gallery.php
301
+ $filename = ( empty($template) ) ? 'gallery' : 'gallery-' . $template;
302
+
303
+ //filter functions for custom addons
304
+ $gallery = apply_filters( 'ngg_gallery_object', $gallery, $galleryID );
305
+ $picturelist = apply_filters( 'ngg_picturelist_object', $picturelist, $galleryID );
306
+
307
+ //additional navigation links
308
+ $next = ( empty($nggNav->next) ) ? false : $nggNav->next;
309
+ $prev = ( empty($nggNav->prev) ) ? false : $nggNav->prev;
310
+
311
+ // create the output
312
+ $out = nggGallery::capture ( $filename, array ('gallery' => $gallery, 'images' => $picturelist, 'pagination' => $navigation, 'current' => $current_pid, 'next' => $next, 'prev' => $prev) );
313
+
314
+ // apply a filter after the output
315
+ $out = apply_filters('ngg_gallery_output', $out, $picturelist);
316
+
317
+ return $out;
318
+ }
319
+
320
+ /**
321
+ * nggShowAlbum() - return a album based on the id
322
+ *
323
+ * @access public
324
+ * @param int | string $albumID
325
+ * @param string (optional) $template
326
+ * @return the content
327
+ */
328
+ function nggShowAlbum($albumID, $template = 'extend') {
329
+
330
+ // $_GET from wp_query
331
+ $gallery = get_query_var('gallery');
332
+ $album = get_query_var('album');
333
+
334
+ // in the case somebody uses the '0', it should be 'all' to show all galleries
335
+ $albumID = ($albumID == 0) ? 'all' : $albumID;
336
+
337
+ // first look for gallery variable
338
+ if (!empty( $gallery )) {
339
+
340
+ // subalbum support only one instance, you can't use more of them in one post
341
+ if ( isset($GLOBALS['subalbum']) || isset($GLOBALS['nggShowGallery']) )
342
+ return;
343
+
344
+ // if gallery is is submit , then show the gallery instead
345
+ $out = nggShowGallery( intval($gallery) );
346
+ $GLOBALS['nggShowGallery'] = true;
347
+
348
+ return $out;
349
+ }
350
+
351
+ if ( (empty( $gallery )) && (isset($GLOBALS['subalbum'])) )
352
+ return;
353
+
354
+ //redirect to subalbum only one time
355
+ if (!empty( $album )) {
356
+ $GLOBALS['subalbum'] = true;
357
+ $albumID = $album;
358
+ }
359
+
360
+ // lookup in the database
361
+ $album = nggdb::find_album( $albumID );
362
+
363
+ // still no success ? , die !
364
+ if( !$album )
365
+ return __('[Album not found]','nggallery');
366
+
367
+ $mode = ltrim($mode, ',');
368
+
369
+ if ( is_array($album->gallery_ids) )
370
+ $out = nggCreateAlbum( $album->gallery_ids, $template, $album );
371
+
372
+ $out = apply_filters( 'ngg_show_album_content', $out, $album->id );
373
+
374
+ return $out;
375
+ }
376
+
377
+ /**
378
+ * create a gallery overview output
379
+ *
380
+ * @access internal
381
+ * @param array $galleriesID
382
+ * @param string (optional) $template name for a template file, look for album-$template
383
+ * @param object (optional) $album result from the db
384
+ * @return the content
385
+ */
386
+ function nggCreateAlbum( $galleriesID, $template = 'extend', $album = 0) {
387
+
388
+ global $wpdb, $nggRewrite, $nggdb;
389
+
390
+ // $_GET from wp_query
391
+ $nggpage = get_query_var('nggpage');
392
+
393
+ $ngg_options = nggGallery::get_option('ngg_options');
394
+
395
+ //this option can currently only set via the custom fields
396
+ $maxElement = (int) $ngg_options['galPagedGalleries'];
397
+
398
+ $sortorder = $galleriesID;
399
+ $galleries = array();
400
+
401
+ // get the galleries information
402
+ foreach ($galleriesID as $i => $value)
403
+ $galleriesID[$i] = addslashes($value);
404
+
405
+ $unsort_galleries = $wpdb->get_results('SELECT * FROM '.$wpdb->nggallery.' WHERE gid IN (\''.implode('\',\'', $galleriesID).'\')', OBJECT_K);
406
+
407
+ //TODO: Check this, problem exist when previewpic = 0
408
+ //$galleries = $wpdb->get_results('SELECT t.*, tt.* FROM '.$wpdb->nggallery.' AS t INNER JOIN '.$wpdb->nggpictures.' AS tt ON t.previewpic = tt.pid WHERE t.gid IN (\''.implode('\',\'', $galleriesID).'\')', OBJECT_K);
409
+
410
+ // get the counter values
411
+ $picturesCounter = $wpdb->get_results('SELECT galleryid, COUNT(*) as counter FROM '.$wpdb->nggpictures.' WHERE galleryid IN (\''.implode('\',\'', $galleriesID).'\') AND exclude != 1 GROUP BY galleryid', OBJECT_K);
412
+ if ( is_array($picturesCounter) ) {
413
+ foreach ($picturesCounter as $key => $value)
414
+ $unsort_galleries[$key]->counter = $value->counter;
415
+ }
416
+
417
+ // get the id's of the preview images
418
+ $imagesID = array();
419
+ if ( is_array($unsort_galleries) ) {
420
+ foreach ($unsort_galleries as $gallery_row)
421
+ $imagesID[] = $gallery_row->previewpic;
422
+ }
423
+ $albumPreview = $wpdb->get_results('SELECT pid, filename FROM '.$wpdb->nggpictures.' WHERE pid IN (\''.implode('\',\'', $imagesID).'\')', OBJECT_K);
424
+
425
+ // re-order them and populate some
426
+ foreach ($sortorder as $key) {
427
+
428
+ //if we have a prefix 'a' then it's a subalbum, instead a gallery
429
+ if (substr( $key, 0, 1) == 'a') {
430
+ // get the album content
431
+ if ( !$subalbum = $nggdb->find_album(substr( $key, 1)) )
432
+ continue;
433
+
434
+ //populate the sub album values
435
+ $galleries[$key]->counter = 0;
436
+ if ($subalbum->previewpic > 0)
437
+ $image = $nggdb->find_image( $subalbum->previewpic );
438
+ $galleries[$key]->previewpic = $subalbum->previewpic;
439
+ $galleries[$key]->previewurl = ($image->thumbURL) ? $image->thumbURL : '';
440
+ $galleries[$key]->previewname = $subalbum->name;
441
+
442
+ //link to the subalbum
443
+ $args['album'] = $subalbum->id;
444
+ $args['gallery'] = false;
445
+ $args['nggpage'] = false;
446
+ $pageid = (isset($subalbum->pageid) ? $subalbum->pageid : 0);
447
+ if ($pageid > 0) {
448
+ $galleries[$key]->pagelink = get_permalink($pageid);
449
+ } else {
450
+ $galleries[$key]->pagelink = $nggRewrite->get_permalink($args);
451
+ }
452
+ $galleries[$key]->galdesc = html_entity_decode ( nggGallery::i18n($subalbum->albumdesc) );
453
+ $galleries[$key]->title = html_entity_decode ( nggGallery::i18n($subalbum->name) );
454
+
455
+ // apply a filter on gallery object before the output
456
+ $galleries[$key] = apply_filters('ngg_album_galleryobject', $galleries[$key]);
457
+
458
+ continue;
459
+ }
460
+
461
+ // If a gallery is not found it should be ignored
462
+ if (!$unsort_galleries[$key])
463
+ continue;
464
+
465
+ // Add the counter value if avaible
466
+ $galleries[$key] = $unsort_galleries[$key];
467
+
468
+ // add the file name and the link
469
+ if ($galleries[$key]->previewpic != 0) {
470
+ $galleries[$key]->previewname = $albumPreview[$galleries[$key]->previewpic]->filename;
471
+ $galleries[$key]->previewurl = get_option ('siteurl').'/' . $galleries[$key]->path . '/thumbs/thumbs_' . $albumPreview[$galleries[$key]->previewpic]->filename;
472
+ } else {
473
+ $first_image = $wpdb->get_row('SELECT * FROM '. $wpdb->nggpictures .' WHERE exclude != 1 AND galleryid = '. $key .' ORDER by pid DESC limit 0,1');
474
+ $galleries[$key]->previewpic = $first_image->pid;
475
+ $galleries[$key]->previewname = $first_image->filename;
476
+ $galleries[$key]->previewurl = get_option ('siteurl') . '/' . $galleries[$key]->path . '/thumbs/thumbs_' . $first_image->filename;
477
+ }
478
+
479
+ // choose between variable and page link
480
+ if ($ngg_options['galNoPages']) {
481
+ $args['album'] = $album->id;
482
+ $args['gallery'] = $key;
483
+ $args['nggpage'] = false;
484
+ $galleries[$key]->pagelink = $nggRewrite->get_permalink($args);
485
+
486
+ } else {
487
+ $galleries[$key]->pagelink = get_permalink( $galleries[$key]->pageid );
488
+ }
489
+
490
+ // description can contain HTML tags
491
+ $galleries[$key]->galdesc = html_entity_decode ( stripslashes($galleries[$key]->galdesc) ) ;
492
+
493
+ // i18n
494
+ $galleries[$key]->title = html_entity_decode ( nggGallery::i18n($galleries[$key]->title) ) ;
495
+
496
+ // apply a filter on gallery object before the output
497
+ $galleries[$key] = apply_filters('ngg_album_galleryobject', $galleries[$key]);
498
+ }
499
+
500
+ // check for page navigation
501
+ if ($maxElement > 0) {
502
+ if ( !is_home() || $pageid == get_the_ID() ) {
503
+ $page = ( !empty( $nggpage ) ) ? (int) $nggpage : 1;
504
+ }
505
+ else $page = 1;
506
+
507
+ $start = $offset = ( $page - 1 ) * $maxElement;
508
+
509
+ $total = count($galleries);
510
+
511
+ // remove the element if we didn't start at the beginning
512
+ if ($start > 0 ) array_splice($galleries, 0, $start);
513
+
514
+ // return the list of images we need
515
+ array_splice($galleries, $maxElement);
516
+
517
+ $nggNav = new nggNavigation;
518
+ $navigation = $nggNav->create_navigation($page, $total, $maxElement);
519
+ } else {
520
+ $navigation = '<div class="ngg-clear">&nbsp;</div>';
521
+ }
522
+
523
+ // apply a filter on $galleries before the output
524
+ $galleries = apply_filters('ngg_album_galleries', $galleries);
525
+
526
+ // if sombody didn't enter any template , take the extend version
527
+ $filename = ( empty($template) ) ? 'album-extend' : 'album-' . $template ;
528
+
529
+ // create the output
530
+ $out = nggGallery::capture ( $filename, array ('album' => $album, 'galleries' => $galleries, 'pagination' => $navigation) );
531
+
532
+ return $out;
533
+
534
+ }
535
+
536
+ /**
537
+ * nggShowImageBrowser()
538
+ *
539
+ * @access public
540
+ * @param int|string $galleryID or gallery name
541
+ * @param string $template (optional) name for a template file, look for imagebrowser-$template
542
+ * @return the content
543
+ */
544
+ function nggShowImageBrowser($galleryID, $template = '') {
545
+
546
+ global $wpdb;
547
+
548
+ $ngg_options = nggGallery::get_option('ngg_options');
549
+
550
+ //Set sort order value, if not used (upgrade issue)
551
+ $ngg_options['galSort'] = ($ngg_options['galSort']) ? $ngg_options['galSort'] : 'pid';
552
+ $ngg_options['galSortDir'] = ($ngg_options['galSortDir'] == 'DESC') ? 'DESC' : 'ASC';
553
+
554
+ // get the pictures
555
+ $picturelist = nggdb::get_ids_from_gallery($galleryID, $ngg_options['galSort'], $ngg_options['galSortDir']);
556
+
557
+ if ( is_array($picturelist) )
558
+ $out = nggCreateImageBrowser($picturelist, $template);
559
+ else
560
+ $out = __('[Gallery not found]','nggallery');
561
+
562
+ $out = apply_filters('ngg_show_imagebrowser_content', $out, $galleryID);
563
+
564
+ return $out;
565
+
566
+ }
567
+
568
+ /**
569
+ * nggCreateImageBrowser()
570
+ *
571
+ * @access internal
572
+ * @param array $picarray with pid
573
+ * @param string $template (optional) name for a template file, look for imagebrowser-$template
574
+ * @return the content
575
+ */
576
+ function nggCreateImageBrowser($picarray, $template = '') {
577
+
578
+ global $nggRewrite;
579
+
580
+ require_once( dirname (__FILE__) . '/lib/meta.php' );
581
+
582
+ // $_GET from wp_query
583
+ $pid = get_query_var('pid');
584
+
585
+ // we need to know the current page id
586
+ $current_page = (get_the_ID() == false) ? 0 : get_the_ID();
587
+
588
+ if ( !is_array($picarray) )
589
+ $picarray = array($picarray);
590
+
591
+ $total = count($picarray);
592
+
593
+ // look for gallery variable
594
+ if ( !empty( $pid )) {
595
+ $act_pid = (int) $pid;
596
+ } else {
597
+ reset($picarray);
598
+ $act_pid = current($picarray);
599
+ }
600
+
601
+ // get ids for back/next
602
+ $key = array_search($act_pid,$picarray);
603
+ if (!$key) {
604
+ $act_pid = reset($picarray);
605
+ $key = key($picarray);
606
+ }
607
+ $back_pid = ( $key >= 1 ) ? $picarray[$key-1] : end($picarray) ;
608
+ $next_pid = ( $key < ($total-1) ) ? $picarray[$key+1] : reset($picarray) ;
609
+
610
+ // get the picture data
611
+ $picture = nggdb::find_image($act_pid);
612
+
613
+ // if we didn't get some data, exit now
614
+ if ($picture == null)
615
+ return;
616
+
617
+ // add more variables for render output
618
+ $picture->href_link = $picture->get_href_link();
619
+ $picture->previous_image_link = $nggRewrite->get_permalink(array ('pid' => $back_pid));
620
+ $picture->previous_pid = $back_pid;
621
+ $picture->next_image_link = $nggRewrite->get_permalink(array ('pid' => $next_pid));
622
+ $picture->next_pid = $next_pid;
623
+ $picture->number = $key + 1;
624
+ $picture->total = $total;
625
+ $picture->linktitle = htmlspecialchars( stripslashes($picture->description) );
626
+ $picture->alttext = html_entity_decode( stripslashes($picture->alttext) );
627
+ $picture->description = html_entity_decode( stripslashes($picture->description) );
628
+ $picture->anchor = 'ngg-imagebrowser-' . $picture->galleryid . '-' . $current_page;
629
+
630
+ // filter to add custom content for the output
631
+ $picture = apply_filters('ngg_image_object', $picture, $act_pid);
632
+
633
+ // let's get the meta data
634
+ $meta = new nggMeta($act_pid);
635
+ $exif = $meta->get_EXIF();
636
+ $iptc = $meta->get_IPTC();
637
+ $xmp = $meta->get_XMP();
638
+ $db = $meta->get_saved_meta();
639
+
640
+ //if we get no exif information we try the database
641
+ $exif = ($exif == false) ? $db : $exif;
642
+
643
+ // look for imagebrowser-$template.php or pure imagebrowser.php
644
+ $filename = ( empty($template) ) ? 'imagebrowser' : 'imagebrowser-' . $template;
645
+
646
+ // create the output
647
+ $out = nggGallery::capture ( $filename , array ('image' => $picture , 'meta' => $meta, 'exif' => $exif, 'iptc' => $iptc, 'xmp' => $xmp, 'db' => $db) );
648
+
649
+ return $out;
650
+
651
+ }
652
+
653
+ /**
654
+ * nggSinglePicture() - show a single picture based on the id
655
+ *
656
+ * @access public
657
+ * @param int $imageID, db-ID of the image
658
+ * @param int (optional) $width, width of the image
659
+ * @param int (optional) $height, height of the image
660
+ * @param string $mode (optional) could be none, watermark, web20
661
+ * @param string $float (optional) could be none, left, right
662
+ * @param string $template (optional) name for a template file, look for singlepic-$template
663
+ * @param string $caption (optional) additional caption text
664
+ * @param string $link (optional) link to a other url instead the full image
665
+ * @return the content
666
+ */
667
+ function nggSinglePicture($imageID, $width = 250, $height = 250, $mode = '', $float = '' , $template = '', $caption = '', $link = '') {
668
+ global $post;
669
+
670
+ $ngg_options = nggGallery::get_option('ngg_options');
671
+
672
+ // get picturedata
673
+ $picture = nggdb::find_image($imageID);
674
+
675
+ // if we didn't get some data, exit now
676
+ if ($picture == null)
677
+ return __('[SinglePic not found]','nggallery');
678
+
679
+ // add float to img
680
+ switch ($float) {
681
+
682
+ case 'left':
683
+ $float =' ngg-left';
684
+ break;
685
+
686
+ case 'right':
687
+ $float =' ngg-right';
688
+ break;
689
+
690
+ case 'center':
691
+ $float =' ngg-center';
692
+ break;
693
+
694
+ default:
695
+ $float ='';
696
+ break;
697
+ }
698
+
699
+ // clean mode if needed
700
+ $mode = ( preg_match('/(web20|watermark)/i', $mode) ) ? $mode : '';
701
+
702
+ //let's initiate the url
703
+ $picture->thumbnailURL = false;
704
+
705
+ // check fo cached picture
706
+ if ( ($ngg_options['imgCacheSinglePic']) && ($post->post_status == 'publish') )
707
+ $picture->thumbnailURL = $picture->cached_singlepic_file($width, $height, $mode );
708
+
709
+ // if we didn't use a cached image then we take the on-the-fly mode
710
+ if (!$picture->thumbnailURL)
711
+ $picture->thumbnailURL = NGGALLERY_URLPATH . 'nggshow.php?pid=' . $imageID . '&amp;width=' . $width . '&amp;height=' . $height . '&amp;mode=' . $mode;
712
+
713
+ // add more variables for render output
714
+ $picture->imageURL = ( empty($link) ) ? $picture->imageURL : $link;
715
+ $picture->href_link = $picture->get_href_link();
716
+ $picture->alttext = html_entity_decode( stripslashes($picture->alttext) );
717
+ $picture->linktitle = htmlspecialchars( stripslashes($picture->description) );
718
+ $picture->description = html_entity_decode( stripslashes($picture->description) );
719
+ $picture->classname = 'ngg-singlepic'. $float;
720
+ $picture->thumbcode = $picture->get_thumbcode( 'singlepic' . $imageID);
721
+ $picture->height = (int) $height;
722
+ $picture->width = (int) $width;
723
+ $picture->caption = $caption;
724
+
725
+ // filter to add custom content for the output
726
+ $picture = apply_filters('ngg_image_object', $picture, $imageID);
727
+
728
+ // let's get the meta data
729
+ $meta = new nggMeta($imageID);
730
+ $exif = $meta->get_EXIF();
731
+ $iptc = $meta->get_IPTC();
732
+ $xmp = $meta->get_XMP();
733
+ $db = $meta->get_saved_meta();
734
+
735
+ //if we get no exif information we try the database
736
+ $exif = ($exif == false) ? $db : $exif;
737
+
738
+ // look for singlepic-$template.php or pure singlepic.php
739
+ $filename = ( empty($template) ) ? 'singlepic' : 'singlepic-' . $template;
740
+
741
+ // create the output
742
+ $out = nggGallery::capture ( $filename, array ('image' => $picture , 'meta' => $meta, 'exif' => $exif, 'iptc' => $iptc, 'xmp' => $xmp, 'db' => $db) );
743
+
744
+ $out = apply_filters('ngg_show_singlepic_content', $out, $picture );
745
+
746
+ return $out;
747
+ }
748
+
749
+ /**
750
+ * nggShowGalleryTags() - create a gallery based on the tags
751
+ *
752
+ * @access public
753
+ * @param string $taglist list of tags as csv
754
+ * @return the content
755
+ */
756
+ function nggShowGalleryTags($taglist) {
757
+
758
+ // $_GET from wp_query
759
+ $pid = get_query_var('pid');
760
+ $pageid = get_query_var('pageid');
761
+
762
+ // get now the related images
763
+ $picturelist = nggTags::find_images_for_tags($taglist , 'ASC');
764
+
765
+ // look for ImageBrowser if we have a $_GET('pid')
766
+ if ( $pageid == get_the_ID() || !is_home() )
767
+ if (!empty( $pid )) {
768
+ foreach ($picturelist as $picture) {
769
+ $picarray[] = $picture->pid;
770
+ }
771
+ $out = nggCreateImageBrowser($picarray);
772
+ return $out;
773
+ }
774
+
775
+ // go on if not empty
776
+ if ( empty($picturelist) )
777
+ return;
778
+
779
+ // show gallery
780
+ if ( is_array($picturelist) )
781
+ $out = nggCreateGallery($picturelist, false);
782
+
783
+ $out = apply_filters('ngg_show_gallery_tags_content', $out, $taglist);
784
+ return $out;
785
+ }
786
+
787
+ /**
788
+ * nggShowRelatedGallery() - create a gallery based on the tags
789
+ *
790
+ * @access public
791
+ * @param string $taglist list of tags as csv
792
+ * @param integer $maxImages (optional) limit the number of images to show
793
+ * @return the content
794
+ */
795
+ function nggShowRelatedGallery($taglist, $maxImages = 0) {
796
+
797
+ $ngg_options = nggGallery::get_option('ngg_options');
798
+
799
+ // get now the related images
800
+ $picturelist = nggTags::find_images_for_tags($taglist, 'RAND');
801
+
802
+ // go on if not empty
803
+ if ( empty($picturelist) )
804
+ return;
805
+
806
+ // cut the list to maxImages
807
+ if ( $maxImages > 0 )
808
+ array_splice($picturelist, $maxImages);
809
+
810
+ // *** build the gallery output
811
+ $out = '<div class="ngg-related-gallery">';
812
+ foreach ($picturelist as $picture) {
813
+
814
+ // get the effect code
815
+ $thumbcode = $picture->get_thumbcode( __('Related images for', 'nggallery') . ' ' . get_the_title());
816
+
817
+ $out .= '<a href="' . $picture->imageURL . '" title="' . stripslashes(nggGallery::i18n($picture->description)) . '" ' . $thumbcode . ' >';
818
+ $out .= '<img title="' . stripslashes(nggGallery::i18n($picture->alttext)) . '" alt="' . stripslashes(nggGallery::i18n($picture->alttext)) . '" src="' . $picture->thumbURL . '" />';
819
+ $out .= '</a>' . "\n";
820
+ }
821
+ $out .= '</div>' . "\n";
822
+
823
+ $out = apply_filters('ngg_show_related_gallery_content', $out, $taglist);
824
+
825
+ return $out;
826
+ }
827
+
828
+ /**
829
+ * nggShowAlbumTags() - create a gallery based on the tags
830
+ *
831
+ * @access public
832
+ * @param string $taglist list of tags as csv
833
+ * @return the content
834
+ */
835
+ function nggShowAlbumTags($taglist) {
836
+
837
+ global $wpdb, $nggRewrite;
838
+
839
+ // $_GET from wp_query
840
+ $tag = get_query_var('gallerytag');
841
+ $pageid = get_query_var('pageid');
842
+
843
+ // look for gallerytag variable
844
+ if ( $pageid == get_the_ID() || !is_home() ) {
845
+ if (!empty( $tag )) {
846
+
847
+ // avoid this evil code $sql = 'SELECT name FROM wp_ngg_tags WHERE slug = \'slug\' union select concat(0x7c,user_login,0x7c,user_pass,0x7c) from wp_users WHERE 1 = 1';
848
+ $slug = esc_attr( $tag );
849
+ $tagname = $wpdb->get_var( $wpdb->prepare( "SELECT name FROM $wpdb->terms WHERE slug = %s", $slug ) );
850
+ $out = '<div id="albumnav"><span><a href="' . get_permalink() . '" title="' . __('Overview', 'nggallery') .' ">'.__('Overview', 'nggallery').'</a> | '.$tagname.'</span></div>';
851
+ $out .= nggShowGalleryTags($slug);
852
+ return $out;
853
+
854
+ }
855
+ }
856
+
857
+ // get now the related images
858
+ $picturelist = nggTags::get_album_images($taglist);
859
+
860
+ // go on if not empty
861
+ if ( empty($picturelist) )
862
+ return;
863
+
864
+ // re-structure the object that we can use the standard template
865
+ foreach ($picturelist as $key => $picture) {
866
+ $picturelist[$key]->previewpic = $picture->pid;
867
+ $picturelist[$key]->previewname = $picture->filename;
868
+ $picturelist[$key]->previewurl = get_option ('siteurl') . '/' . $picture->path . '/thumbs/thumbs_' . $picture->filename;
869
+ $picturelist[$key]->counter = $picture->count;
870
+ $picturelist[$key]->title = $picture->name;
871
+ $picturelist[$key]->pagelink = $nggRewrite->get_permalink( array('gallerytag'=>$picture->slug) );
872
+ }
873
+
874
+ //TODO: Add pagination later
875
+ $navigation = '<div class="ngg-clear">&nbsp;</div>';
876
+
877
+ // create the output
878
+ $out = nggGallery::capture ('album-compact', array ('album' => 0, 'galleries' => $picturelist, 'pagination' => $navigation) );
879
+
880
+ $out = apply_filters('ngg_show_album_tags_content', $out, $taglist);
881
+
882
+ return $out;
883
+ }
884
+
885
+ /**
886
+ * nggShowRelatedImages() - return related images based on category or tags
887
+ *
888
+ * @access public
889
+ * @param string $type could be 'tags' or 'category'
890
+ * @param integer $maxImages of images
891
+ * @return the content
892
+ */
893
+ function nggShowRelatedImages($type = '', $maxImages = 0) {
894
+ $ngg_options = nggGallery::get_option('ngg_options');
895
+
896
+ if ($type == '') {
897
+ $type = $ngg_options['appendType'];
898
+ $maxImages = $ngg_options['maxImages'];
899
+ }
900
+
901
+ $sluglist = array();
902
+
903
+ switch ($type) {
904
+ case 'tags':
905
+ if (function_exists('get_the_tags')) {
906
+ $taglist = get_the_tags();
907
+
908
+ if (is_array($taglist)) {
909
+ foreach ($taglist as $tag) {
910
+ $sluglist[] = $tag->slug;
911
+ }
912
+ }
913
+ }
914
+ break;
915
+
916
+ case 'category':
917
+ $catlist = get_the_category();
918
+
919
+ if (is_array($catlist)) {
920
+ foreach ($catlist as $cat) {
921
+ $sluglist[] = $cat->category_nicename;
922
+ }
923
+ }
924
+ break;
925
+ }
926
+
927
+ $sluglist = implode(',', $sluglist);
928
+ $out = nggShowRelatedGallery($sluglist, $maxImages);
929
+
930
+ return $out;
931
+ }
932
+
933
+ /**
934
+ * Template function for theme authors
935
+ *
936
+ * @access public
937
+ * @param string (optional) $type could be 'tags' or 'category'
938
+ * @param integer (optional) $maxNumbers of images
939
+ * @return void
940
+ */
941
+ function the_related_images($type = 'tags', $maxNumbers = 7) {
942
+ echo nggShowRelatedImages($type, $maxNumbers);
943
+ }
944
+
945
+ /**
946
+ * nggShowRandomRecent($type, $maxImages,$template) - return recent or random images
947
+ *
948
+ * @access public
949
+ * @param string $type 'id' (for latest addition to DB), 'date' (for image with the latest date), 'sort' (for image sorted by user order) or 'random'
950
+ * @param integer $maxImages of images
951
+ * @param string $template (optional) name for a template file, look for gallery-$template
952
+ * @param int $galleryId Limit to a specific gallery
953
+ * @return the content
954
+ */
955
+ function nggShowRandomRecent($type, $maxImages, $template = '', $galleryId = 0) {
956
+
957
+ // $_GET from wp_query
958
+ $pid = get_query_var('pid');
959
+ $pageid = get_query_var('pageid');
960
+
961
+ // get now the recent or random images
962
+ switch ($type) {
963
+ case 'random':
964
+ $picturelist = nggdb::get_random_images($maxImages, $galleryId);
965
+ break;
966
+ case 'id':
967
+ $picturelist = nggdb::find_last_images(0, $maxImages, true, $galleryId, 'id');
968
+ break;
969
+ case 'date':
970
+ $picturelist = nggdb::find_last_images(0, $maxImages, true, $galleryId, 'date');
971
+ break;
972
+ case 'sort':
973
+ $picturelist = nggdb::find_last_images(0, $maxImages, true, $galleryId, 'sort');
974
+ break;
975
+ default:
976
+ // default is by pid
977
+ $picturelist = nggdb::find_last_images(0, $maxImages, true, $galleryId, 'id');
978
+ }
979
+
980
+ // look for ImageBrowser if we have a $_GET('pid')
981
+ if ( $pageid == get_the_ID() || !is_home() )
982
+ if (!empty( $pid )) {
983
+ foreach ($picturelist as $picture) {
984
+ $picarray[] = $picture->pid;
985
+ }
986
+ $out = nggCreateImageBrowser($picarray);
987
+ return $out;
988
+ }
989
+
990
+ // go on if not empty
991
+ if ( empty($picturelist) )
992
+ return;
993
+
994
+ // show gallery
995
+ if ( is_array($picturelist) )
996
+ $out = nggCreateGallery($picturelist, false, $template);
997
+
998
+ $out = apply_filters('ngg_show_images_content', $out, $taglist);
999
+
1000
+ return $out;
1001
+ }
1002
+
1003
+ /**
1004
+ * nggTagCloud() - return a tag cloud based on the wp core tag cloud system
1005
+ *
1006
+ * @param array $args
1007
+ * @param string $template (optional) name for a template file, look for gallery-$template
1008
+ * @return the content
1009
+ */
1010
+ function nggTagCloud($args ='', $template = '') {
1011
+ global $nggRewrite;
1012
+
1013
+ // $_GET from wp_query
1014
+ $tag = get_query_var('gallerytag');
1015
+ $pageid = get_query_var('pageid');
1016
+
1017
+ // look for gallerytag variable
1018
+ if ( $pageid == get_the_ID() || !is_home() ) {
1019
+ if (!empty( $tag )) {
1020
+
1021
+ $slug = esc_attr( $tag );
1022
+ $out = nggShowGalleryTags( $slug );
1023
+ return $out;
1024
+ }
1025
+ }
1026
+
1027
+ $defaults = array(
1028
+ 'smallest' => 8, 'largest' => 22, 'unit' => 'pt', 'number' => 45,
1029
+ 'format' => 'flat', 'orderby' => 'name', 'order' => 'ASC',
1030
+ 'exclude' => '', 'include' => '', 'link' => 'view', 'taxonomy' => 'ngg_tag'
1031
+ );
1032
+ $args = wp_parse_args( $args, $defaults );
1033
+
1034
+ $tags = get_terms( $args['taxonomy'], array_merge( $args, array( 'orderby' => 'count', 'order' => 'DESC' ) ) ); // Always query top tags
1035
+
1036
+ foreach ($tags as $key => $tag ) {
1037
+
1038
+ $tags[ $key ]->link = $nggRewrite->get_permalink(array ('gallerytag' => $tag->slug));
1039
+ $tags[ $key ]->id = $tag->term_id;
1040
+ }
1041
+
1042
+ $out = '<div class="ngg-tagcloud">' . wp_generate_tag_cloud( $tags, $args ) . '</div>';
1043
+
1044
+ return $out;
1045
+ }
1046
+ ?>
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 = isset($_GET['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']) ? esc_attr($_GET['mode']) : '';
15
 
16
  // let's get the image data
17
  $picture = nggdb::find_image( $pictureID );
readme.txt CHANGED
@@ -1,8 +1,9 @@
1
  === NextGEN Gallery ===
2
  Contributors: Alex Rabe
3
- Donate link: http://alexrabe.boelinger.com/donation/
4
  Tags: nextgen gallery,photos,flash,slideshow,images,gallery,media,admin,post,photo-albums,pictures,widgets,photo,picture,image,nextgen-gallery
5
- Requires at least: 2.7
 
6
  Stable tag: trunk
7
 
8
  NextGEN Gallery is a full integrated Image Gallery plugin for WordPress with a Flash slideshow option.
@@ -14,10 +15,10 @@ I figure out that some of them are really good and well designed, but I missed a
14
 
15
  Important Links:
16
 
17
- * <a href="http://nextgen.boelinger.com/" title="Demonstration page">Demonstration</a>
18
- * <a href="http://alexrabe.boelinger.com/wordpress-plugins/nextgen-gallery/languages/" title="Translation and Language files">Language files</a>
19
- * <a href="http://alexrabe.boelinger.com/wordpress-plugins/nextgen-gallery/changelog/" title="NextGEN Gallery Changelog">Changelog</a>
20
- * <a href="http://alexrabe.boelinger.com/wordpress-plugins/nextgen-gallery/faq/" title="NextGEN Gallery FAQ">NextGEN Gallery FAQ</a>
21
  * <a href="http://wordpress.org/tags/nextgen-gallery?forum_id=10" title="Wordpress Support Forum">Support Forum</a>
22
 
23
  = Features =
@@ -103,37 +104,60 @@ When writing a page/post, you can use the follow tags:
103
 
104
  For a slideshow : **[slideshow id=x w=width h=height]**
105
 
106
- Example : http://nextgen.boelinger.com/slideshow/
107
 
108
  For a album : **[album id=x template=extend]** or **[album id=x template=compact]**
109
 
110
- Example : http://nextgen.boelinger.com/album/
111
 
112
  For a gallery : **[nggallery id=x]**
113
 
114
- Example : http://nextgen.boelinger.com/gallery-page/
115
 
116
  For a single picture : **[singlepic id=x w=width h=height mode=web20|watermark float=left|right]**
117
 
118
- Example : http://nextgen.boelinger.com/singlepic/
119
 
120
  For a image browser : **[imagebrowser id=x]**
121
 
122
- Example : http://nextgen.boelinger.com/image-browser/
123
 
124
  To show image sorted by tags : **[nggtags gallery=mytag,wordpress,... ]**
125
 
126
- Example : http://nextgen.boelinger.com/gallery-tags/
127
 
128
  To show tag albums : **[nggtags album=mytag,wordpress,... ]**
129
 
130
- Example : http://nextgen.boelinger.com/albumtags/
131
 
132
- **A further FAQ you can found here :** http://alexrabe.boelinger.com/wordpress-plugins/nextgen-gallery/faq/
133
 
134
- **And at least request your question here :** http://alexrabe.boelinger.com/forums/
135
 
136
  == Changelog ==
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
137
 
138
  = V1.3.6 - 20.09.2009 =
139
  * Changed : Just change the feed link
1
  === NextGEN Gallery ===
2
  Contributors: Alex Rabe
3
+ Donate link: http://alexrabe.de/donation/
4
  Tags: nextgen gallery,photos,flash,slideshow,images,gallery,media,admin,post,photo-albums,pictures,widgets,photo,picture,image,nextgen-gallery
5
+ Requires at least: 2.8
6
+ Tested up to: 2.9
7
  Stable tag: trunk
8
 
9
  NextGEN Gallery is a full integrated Image Gallery plugin for WordPress with a Flash slideshow option.
15
 
16
  Important Links:
17
 
18
+ * <a href="http://nextgen-gallery.com/" title="Demonstration page">Demonstration</a>
19
+ * <a href="http://alexrabe.de/wordpress-plugins/nextgen-gallery/languages/" title="Translation and Language files">Language files</a>
20
+ * <a href="http://alexrabe.de/wordpress-plugins/nextgen-gallery/changelog/" title="NextGEN Gallery Changelog">Changelog</a>
21
+ * <a href="http://alexrabe.de/wordpress-plugins/nextgen-gallery/faq/" title="NextGEN Gallery FAQ">NextGEN Gallery FAQ</a>
22
  * <a href="http://wordpress.org/tags/nextgen-gallery?forum_id=10" title="Wordpress Support Forum">Support Forum</a>
23
 
24
  = Features =
104
 
105
  For a slideshow : **[slideshow id=x w=width h=height]**
106
 
107
+ Example : http://nextgen-gallery.com/slideshow/
108
 
109
  For a album : **[album id=x template=extend]** or **[album id=x template=compact]**
110
 
111
+ Example : http://nextgen-gallery.com/album/
112
 
113
  For a gallery : **[nggallery id=x]**
114
 
115
+ Example : http://nextgen-gallery.com/gallery-page/
116
 
117
  For a single picture : **[singlepic id=x w=width h=height mode=web20|watermark float=left|right]**
118
 
119
+ Example : http://nextgen-gallery.com/singlepic/
120
 
121
  For a image browser : **[imagebrowser id=x]**
122
 
123
+ Example : http://nextgen-gallery.com/image-browser/
124
 
125
  To show image sorted by tags : **[nggtags gallery=mytag,wordpress,... ]**
126
 
127
+ Example : http://nextgen-gallery.com/gallery-tags/
128
 
129
  To show tag albums : **[nggtags album=mytag,wordpress,... ]**
130
 
131
+ Example : http://nextgen-gallery.com/albumtags/
132
 
133
+ **A further FAQ you can found here :** http://alexrabe.de/wordpress-plugins/nextgen-gallery/faq/
134
 
135
+ **And at least request your question here :** http://alexrabe.de/forums/
136
 
137
  == Changelog ==
138
+
139
+ = v1.4.0 - 08.11.2009 =
140
+ * NEW : Automatic rotate images during upload or via manage gallery page (THX to Simone Fumagalli)
141
+ * NEW : Include Bulkupdate for gallery overview, require PHP 5.2
142
+ * NEW : XMLRPC support with 4 new methods : see xmlrpc.php for more information
143
+ * NEW : Recent and random images can be taken from a specific gallery using the id=x parameter in the shortcode (THX to Prollius)
144
+ * NEW : Recent images can be recent by exif date (instead of database id) by using the mode=recentdate parameter in the shortcode (THX to Prollius)
145
+ * NEW : Introduce the WP_Object_cache and meta_data
146
+ * NEW : Various new hooks and filters
147
+ * Added : Better support for role manager plugin (THX to Mattias Buelens)
148
+ * Added : New option to add hidden images. Needed to show all images in a modal window (Thickbox, Lightbox et.)
149
+ * Added : New link parameter for the singlepic shortcode : [singlepic id=x w=x h=x link="http://google.com"]
150
+ * Added : New template gallery-carousel
151
+ * Added : New id parameter for recent and random shortcodes : [random max="7" template="filename" id="2"] takes only pictures from the gallery with id=2
152
+ * Added : New mode parameter for recent shortcode : [recent max="7" template="filename" id="3" mode="date" /] where mode can be one of (id, date, sort). Recent pictures are delivered by addition to database (id), exif date (date) or user sort order (sort).
153
+ * Added : Enable/Disable Ajax navigation via settings
154
+ * Added : New filter hook 'ngg_render_template' to render templates with a other plugin
155
+ * Changed : Added option to link an album with a page id
156
+ * Changed : Support templates for child themes, use STYLESHEETPATH instead TEMPLATEPATH (THX to Prollius)
157
+ * Changed : Rework of Media RSS Widget
158
+ * Bugfix : Check capability to create a new page
159
+ * Bugfix : Fix double call of filter name , changed to ngg_picturelist_object (THX to Prollius)
160
+ * Bugfix : Check for a deleted gallery in a album
161
 
162
  = V1.3.6 - 20.09.2009 =
163
  * Changed : Just change the feed link
view/gallery-caption.php CHANGED
@@ -35,16 +35,19 @@ Follow variables are useable :
35
  <?php } ?>
36
 
37
  <!-- Thumbnails -->
38
- <?php foreach ($images as $image) : ?>
39
 
40
- <div id="ngg-image-<?php echo $image->pid ?>" class="ngg-gallery-thumbnail-box" <?php echo $gallery->imagewidth ?> >
41
  <div class="ngg-gallery-thumbnail" >
42
  <a href="<?php echo $image->imageURL ?>" title="<?php echo $image->description ?>" <?php echo $image->thumbcode ?> >
 
43
  <img title="<?php echo $image->alttext ?>" alt="<?php echo $image->alttext ?>" src="<?php echo $image->thumbnailURL ?>" <?php echo $image->size ?> />
 
44
  </a>
45
  <span><?php echo $image->caption ?></span>
46
  </div>
47
  </div>
 
48
  <?php if ( $gallery->columns > 0 && ++$i % $gallery->columns == 0 ) { ?>
49
  <br style="clear: both" />
50
  <?php } ?>
35
  <?php } ?>
36
 
37
  <!-- Thumbnails -->
38
+ <?php foreach ( $images as $image ) : ?>
39
 
40
+ <div id="ngg-image-<?php echo $image->pid ?>" class="ngg-gallery-thumbnail-box" <?php echo $image->style ?> >
41
  <div class="ngg-gallery-thumbnail" >
42
  <a href="<?php echo $image->imageURL ?>" title="<?php echo $image->description ?>" <?php echo $image->thumbcode ?> >
43
+ <?php if ( !$image->hidden ) { ?>
44
  <img title="<?php echo $image->alttext ?>" alt="<?php echo $image->alttext ?>" src="<?php echo $image->thumbnailURL ?>" <?php echo $image->size ?> />
45
+ <?php } ?>
46
  </a>
47
  <span><?php echo $image->caption ?></span>
48
  </div>
49
  </div>
50
+ <?php if ( $image->hidden ) continue; ?>
51
  <?php if ( $gallery->columns > 0 && ++$i % $gallery->columns == 0 ) { ?>
52
  <br style="clear: both" />
53
  <?php } ?>
view/gallery-carousel.php ADDED
@@ -0,0 +1,56 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ Template Page for the gallery carousel
4
+
5
+ Follow variables are useable :
6
+
7
+ $gallery : Contain all about the gallery
8
+ $images : Contain all images, path, title
9
+ $pagination : Contain the pagination content
10
+ $current : Contain the selected image
11
+ $prev/$next : Contain link to the next/previous gallery page
12
+
13
+
14
+ You can check the content when you insert the tag <?php var_dump($variable) ?>
15
+ If you would like to show the timestamp of the image ,you can use <?php echo $exif['created_timestamp'] ?>
16
+ **/
17
+ ?>
18
+ <?php if (!defined ('ABSPATH')) die ('No direct access allowed'); ?><?php if (!empty ($gallery)) : ?>
19
+
20
+ <div class="ngg-galleryoverview">
21
+
22
+ <div class="pic"><img title="<?php echo $current->alttext ?>" alt="<?php echo $current->alttext ?>" src="<?php echo $current->url; ?>" /></div>
23
+
24
+ <ul class="ngg-gallery-list">
25
+
26
+ <!-- PREV LINK -->
27
+ <?php if ($prev) : ?>
28
+ <li class="ngg-prev">
29
+ <a class="prev" href="<?php echo $prev ?>">&#9668;</a>
30
+ </li>
31
+ <?php endif; ?>
32
+
33
+ <!-- Thumbnail list -->
34
+ <?php foreach ( $images as $image ) : ?>
35
+ <?php if ( $image->hidden ) continue; ?>
36
+
37
+ <li id="ngg-image-<?php echo $image->pid ?>" class="ngg-thumbnail-list <?php if ($image->pid == $current->pid) echo 'selected' ?>" >
38
+ <a href="<?php echo $image->pidlink ?>" title="<?php echo $image->description ?>" >
39
+ <img title="<?php echo $image->alttext ?>" alt="<?php echo $image->alttext ?>" src="<?php echo $image->thumbnailURL ?>" <?php echo $image->size ?> />
40
+ </a>
41
+ </li>
42
+
43
+ <?php endforeach; ?>
44
+
45
+ <!-- NEXT LINK -->
46
+ <?php if ($next) : ?>
47
+ <li class="ngg-next">
48
+ <a class="next" href="<?php echo $next ?>">&#9658;</a>
49
+ </li>
50
+ <?php endif; ?>
51
+
52
+ </ul>
53
+
54
+ </div>
55
+
56
+ <?php endif; ?>
view/gallery.php CHANGED
@@ -35,18 +35,23 @@ Follow variables are useable :
35
  <?php } ?>
36
 
37
  <!-- Thumbnails -->
38
- <?php foreach ($images as $image) : ?>
39
 
40
- <div id="ngg-image-<?php echo $image->pid ?>" class="ngg-gallery-thumbnail-box" <?php echo $gallery->imagewidth ?> >
41
  <div class="ngg-gallery-thumbnail" >
42
  <a href="<?php echo $image->imageURL ?>" title="<?php echo $image->description ?>" <?php echo $image->thumbcode ?> >
 
43
  <img title="<?php echo $image->alttext ?>" alt="<?php echo $image->alttext ?>" src="<?php echo $image->thumbnailURL ?>" <?php echo $image->size ?> />
 
44
  </a>
45
  </div>
46
  </div>
 
 
47
  <?php if ( $gallery->columns > 0 && ++$i % $gallery->columns == 0 ) { ?>
48
- <br style="clear: both" />
49
  <?php } ?>
 
50
  <?php endforeach; ?>
51
 
52
  <!-- Pagination -->
35
  <?php } ?>
36
 
37
  <!-- Thumbnails -->
38
+ <?php foreach ( $images as $image ) : ?>
39
 
40
+ <div id="ngg-image-<?php echo $image->pid ?>" class="ngg-gallery-thumbnail-box" <?php echo $image->style ?> >
41
  <div class="ngg-gallery-thumbnail" >
42
  <a href="<?php echo $image->imageURL ?>" title="<?php echo $image->description ?>" <?php echo $image->thumbcode ?> >
43
+ <?php if ( !$image->hidden ) { ?>
44
  <img title="<?php echo $image->alttext ?>" alt="<?php echo $image->alttext ?>" src="<?php echo $image->thumbnailURL ?>" <?php echo $image->size ?> />
45
+ <?php } ?>
46
  </a>
47
  </div>
48
  </div>
49
+
50
+ <?php if ( $image->hidden ) continue; ?>
51
  <?php if ( $gallery->columns > 0 && ++$i % $gallery->columns == 0 ) { ?>
52
+ <br style="clear: both" />
53
  <?php } ?>
54
+
55
  <?php endforeach; ?>
56
 
57
  <!-- Pagination -->
view/imagebrowser-exif.php CHANGED
@@ -6,13 +6,17 @@ Follow variables are useable :
6
 
7
  $image : Contain all about the image
8
  $meta : Contain the raw Meta data from the image
9
- $exif : Contain the clean up Exif data
10
- $iptc : Contain the clean up IPTC data
11
- $xmp : Contain the clean up XMP data
 
 
 
12
 
13
  You can check the content when you insert the tag <?php var_dump($variable) ?>
14
  If you would like to show the timestamp of the image ,you can use <?php echo $exif['created_timestamp'] ?>
15
  **/
 
16
  ?>
17
  <?php if (!defined ('ABSPATH')) die ('No direct access allowed'); ?><?php if (!empty ($image)) : ?>
18
 
6
 
7
  $image : Contain all about the image
8
  $meta : Contain the raw Meta data from the image
9
+ $exif : Contain the clean up Exif data from file
10
+ $iptc : Contain the clean up IPTC data from file
11
+ $xmp : Contain the clean up XMP data from file
12
+ $db : Contain the clean up META data from the database (should be imported during upload)
13
+
14
+ Please note : A Image resize or watermarking operation will remove all meta information, exif will in this case loaded from database
15
 
16
  You can check the content when you insert the tag <?php var_dump($variable) ?>
17
  If you would like to show the timestamp of the image ,you can use <?php echo $exif['created_timestamp'] ?>
18
  **/
19
+
20
  ?>
21
  <?php if (!defined ('ABSPATH')) die ('No direct access allowed'); ?><?php if (!empty ($image)) : ?>
22
 
view/singlepic.php CHANGED
@@ -6,9 +6,12 @@ Follow variables are useable :
6
 
7
  $image : Contain all about the image
8
  $meta : Contain the raw Meta data from the image
9
- $exif : Contain the clean up Exif data
10
- $iptc : Contain the clean up IPTC data
11
- $xmp : Contain the clean up XMP data
 
 
 
12
 
13
  You can check the content when you insert the tag <?php var_dump($variable) ?>
14
  If you would like to show the timestamp of the image ,you can use <?php echo $exif['created_timestamp'] ?>
6
 
7
  $image : Contain all about the image
8
  $meta : Contain the raw Meta data from the image
9
+ $exif : Contain the clean up Exif data from file
10
+ $iptc : Contain the clean up IPTC data from file
11
+ $xmp : Contain the clean up XMP data from file
12
+ $db : Contain the clean up META data from the database (should be imported during upload)
13
+
14
+ Please note : A Image resize or watermarking operation will remove all meta information, exif will in this case loaded from database
15
 
16
  You can check the content when you insert the tag <?php var_dump($variable) ?>
17
  If you would like to show the timestamp of the image ,you can use <?php echo $exif['created_timestamp'] ?>
widgets/media-rss-widget.php CHANGED
@@ -30,7 +30,7 @@ class nggMediaRssWidget {
30
  function register_widget() {
31
  $name = __('NextGEN Media RSS', 'nggallery');
32
  $control_ops = array(
33
- 'width' => 400, 'height' => 350,
34
  'id_base' => 'ngg-mrssw');
35
  $widget_ops = array(
36
  'classname' => 'ngg_mrssw',
@@ -45,7 +45,7 @@ class nggMediaRssWidget {
45
  foreach (array_keys($this->options) as $o) {
46
  // Old widgets can have null values for some reason
47
  //--
48
- if ( !isset($this->options[$o]['show_global_mrss']))
49
  continue;
50
 
51
  // $id should look like {$id_base}-{$o}
@@ -79,12 +79,11 @@ class nggMediaRssWidget {
79
  /**
80
  * Function to render the widget control panel
81
  */
82
- function render_control_panel($widget_args=1) {
83
  global $wp_registered_widgets;
84
  static $updated = false;
85
 
86
  // Get the widget ID
87
- //--
88
  if (is_numeric($widget_args)) {
89
  $widget_args = array('number' => $widget_args);
90
  }
@@ -103,7 +102,6 @@ class nggMediaRssWidget {
103
  foreach ( $this_sidebar as $_widget_id ) {
104
  // Remove all widgets of this type from the sidebar. We'll add the new data in a second. This makes sure we don't get any duplicate data
105
  // since widget ids aren't necessarily persistent across multiple updates
106
- //--
107
  if ( 'ngg_mrssw' == $wp_registered_widgets[$_widget_id]['classname']
108
  && isset($wp_registered_widgets[$_widget_id]['params'][0]['number']) ) {
109
 
@@ -119,9 +117,11 @@ class nggMediaRssWidget {
119
 
120
  $this->options[$widget_number]['show_global_mrss'] = $widget_ngg_mrssw['show_global_mrss'];
121
  $this->options[$widget_number]['widget_title'] = stripslashes($widget_ngg_mrssw['widget_title']);
122
- $this->options[$widget_number]['mrss_icon_url'] = stripslashes($widget_ngg_mrssw['mrss_icon_url']);
123
  $this->options[$widget_number]['mrss_text'] = stripslashes($widget_ngg_mrssw['mrss_text']);
124
  $this->options[$widget_number]['mrss_title'] = strip_tags(stripslashes($widget_ngg_mrssw['mrss_title']));
 
 
125
  }
126
 
127
  $this->save_options();
@@ -131,52 +131,50 @@ class nggMediaRssWidget {
131
  if ( -1 == $number ) {
132
  $widget_title = '';
133
  $show_global_mrss = true;
134
- $mrss_icon_url = NGGALLERY_URLPATH . 'images/mrss-icon.gif';
135
  $mrss_text = __('Media RSS', 'nggallery');
136
  $mrss_title = __('Link to the main image feed', 'nggallery');
137
  $number = '%i%';
138
  } else {
139
- $widget_title = attribute_escape($this->options[$number]['widget_title']);
140
  $show_global_mrss = $this->options[$number]['show_global_mrss'];
141
- $mrss_icon_url = $this->options[$number]['mrss_icon_url'];
142
  $mrss_text = stripslashes($this->options[$number]['mrss_text']);
143
  $mrss_title = strip_tags(stripslashes($this->options[$number]['mrss_title']));
144
  }
145
 
146
  // The widget control
147
- //--
148
-
149
  ?>
150
 
151
  <input type="hidden" id="ngg_mrssw-submit-<?php echo $number; ?>" name="widget_ngg_mrssw[<?php echo $number; ?>][submit]" value="1" />
152
  <p>
153
- <label><?php _e('Title:', 'nggallery'); ?><br/>
154
- <input style="width: 250px;" id="ngg_mrssw-widget_title-<?php echo $number; ?>" name="widget_ngg_mrssw[<?php echo $number; ?>][widget_title]" type="text" value="<?php echo $widget_title; ?>" /></label>
 
155
  </p>
156
 
157
- <br/>
158
-
159
  <p>
160
- <label><?php _e('Media RSS icon:', 'nggallery'); ?>&nbsp;<img style="float: right;" src="<?php echo $mrss_icon_url; ?>" alt='MediaRSS Icon' title="<?php echo $mrss_title; ?>" /><br/>
161
- <input style="width: 250px;" id="ngg_mrssw-mrss_icon_url-<?php echo $number; ?>" name="widget_ngg_mrssw[<?php echo $number; ?>][mrss_icon_url]" type="text" value="<?php echo $mrss_icon_url; ?>" /></label>
162
-
163
  </label>
164
  </p>
165
 
166
  <p>
167
  <label>
168
- <input id="ngg_mrssw-show_global_mrss-<?php echo $number; ?>" name="widget_ngg_mrssw[<?php echo $number; ?>][show_global_mrss]" type="checkbox" value="1" <?php $this->render_checked($show_global_mrss); ?> /> <?php _e('Show the global Media RSS link:', 'nggallery'); ?></label>
 
169
  </p>
170
 
171
  <p>
172
- <label><?php _e('Text for the global Media RSS link:', 'nggallery'); ?><br/>
173
- <input style="width: 250px;" id="ngg_mrssw-mrss_icon_url-<?php echo $number; ?>" name="widget_ngg_mrssw[<?php echo $number; ?>][mrss_text]" type="text" value="<?php echo $mrss_text; ?>" /></label>
174
  </label>
175
  </p>
176
 
177
  <p>
178
- <label><?php _e('Tooltip text for the global Media RSS link:', 'nggallery'); ?><br/>
179
- <input style="width: 250px;" id="ngg_mrssw-mrss_icon_url-<?php echo $number; ?>" name="widget_ngg_mrssw[<?php echo $number; ?>][mrss_title]" type="text" value="<?php echo $mrss_title; ?>" /></label>
180
  </label>
181
  </p>
182
 
@@ -191,7 +189,6 @@ class nggMediaRssWidget {
191
  $ngg_options = nggGallery::get_option('ngg_options');
192
 
193
  // Get the options
194
- //--
195
  extract($args, EXTR_SKIP);
196
  if (is_numeric($widget_args)) {
197
  $widget_args = array('number' => $widget_args);
@@ -203,7 +200,9 @@ class nggMediaRssWidget {
203
  ? __('Media RSS', 'nggallery')
204
  : $this->options[$number]['widget_title'];
205
  $show_global_mrss = $this->options[$number]['show_global_mrss'];
206
- $mrss_icon_url = $this->options[$number]['mrss_icon_url'];
 
 
207
  $mrss_text = stripslashes($this->options[$number]['mrss_text']);
208
  $mrss_title = strip_tags(stripslashes($this->options[$number]['mrss_title']));
209
 
@@ -214,7 +213,7 @@ class nggMediaRssWidget {
214
  echo "<ul class='ngg-media-rss-widget'>\n";
215
  if ($show_global_mrss) {
216
  echo " <li>";
217
- echo $this->get_mrss_link(nggMediaRss::get_mrss_url(), $mrss_icon_url,
218
  stripslashes($mrss_title), stripslashes($mrss_text),
219
  $ngg_options['usePicLens']);
220
  echo "</li>\n";
@@ -228,16 +227,17 @@ class nggMediaRssWidget {
228
  /**
229
  * Get a link to a Media RSS
230
  */
231
- function get_mrss_link($mrss_url, $icon_url, $title, $text, $use_piclens) {
232
- $out = "";
233
 
234
- if ($icon_url!='') {
 
235
  $out .= "<a href='$mrss_url' title='$title' class='ngg-media-rss-link'" . ($use_piclens ? ' onclick="PicLensLite.start({feedUrl:\'' . $mrss_url . '\'}); return false;"' : "") . " >";
236
  $out .= "<img src='$icon_url' alt='MediaRSS Icon' title='" . (!$use_piclens ? $title : __('[View with PicLens]','nggallery')). "' class='ngg-media-rss-icon' />";
237
  $out .= "</a> ";
238
  }
239
 
240
- if ($text!='') {
241
  $out .= "<a href='$mrss_url' title='$title' class='ngg-media-rss-link'>";
242
  $out .= $text;
243
  $out .= "</a>";
@@ -256,7 +256,7 @@ class nggMediaRssWidget {
256
  $this->options = array(
257
  -1 => array(
258
  'show_global_mrss' => true,
259
- 'mrss_icon_url' => NGGALLERY_URLPATH . 'images/mrss-icon.gif',
260
  'mrss_text' => __('Media RSS', 'nggallery'),
261
  'mrss_title' => __('Link to the main image feed', 'nggallery')
262
  )
30
  function register_widget() {
31
  $name = __('NextGEN Media RSS', 'nggallery');
32
  $control_ops = array(
33
+ 'width' => 250, 'height' => 350,
34
  'id_base' => 'ngg-mrssw');
35
  $widget_ops = array(
36
  'classname' => 'ngg_mrssw',
45
  foreach (array_keys($this->options) as $o) {
46
  // Old widgets can have null values for some reason
47
  //--
48
+ if ( !isset($this->options[$o]['show_global_mrss']) )
49
  continue;
50
 
51
  // $id should look like {$id_base}-{$o}
79
  /**
80
  * Function to render the widget control panel
81
  */
82
+ function render_control_panel( $widget_args = 1 ) {
83
  global $wp_registered_widgets;
84
  static $updated = false;
85
 
86
  // Get the widget ID
 
87
  if (is_numeric($widget_args)) {
88
  $widget_args = array('number' => $widget_args);
89
  }
102
  foreach ( $this_sidebar as $_widget_id ) {
103
  // Remove all widgets of this type from the sidebar. We'll add the new data in a second. This makes sure we don't get any duplicate data
104
  // since widget ids aren't necessarily persistent across multiple updates
 
105
  if ( 'ngg_mrssw' == $wp_registered_widgets[$_widget_id]['classname']
106
  && isset($wp_registered_widgets[$_widget_id]['params'][0]['number']) ) {
107
 
117
 
118
  $this->options[$widget_number]['show_global_mrss'] = $widget_ngg_mrssw['show_global_mrss'];
119
  $this->options[$widget_number]['widget_title'] = stripslashes($widget_ngg_mrssw['widget_title']);
120
+ $this->options[$widget_number]['show_icon'] = $widget_ngg_mrssw['show_icon'];
121
  $this->options[$widget_number]['mrss_text'] = stripslashes($widget_ngg_mrssw['mrss_text']);
122
  $this->options[$widget_number]['mrss_title'] = strip_tags(stripslashes($widget_ngg_mrssw['mrss_title']));
123
+ // remove from pre V1.4.0 options
124
+ unset ( $this->options[$widget_number]['mrss_icon_url'] );
125
  }
126
 
127
  $this->save_options();
131
  if ( -1 == $number ) {
132
  $widget_title = '';
133
  $show_global_mrss = true;
134
+ $show_icon = true;
135
  $mrss_text = __('Media RSS', 'nggallery');
136
  $mrss_title = __('Link to the main image feed', 'nggallery');
137
  $number = '%i%';
138
  } else {
139
+ $widget_title = esc_attr($this->options[$number]['widget_title']);
140
  $show_global_mrss = $this->options[$number]['show_global_mrss'];
141
+ $show_icon = $this->options[$number]['show_icon'];
142
  $mrss_text = stripslashes($this->options[$number]['mrss_text']);
143
  $mrss_title = strip_tags(stripslashes($this->options[$number]['mrss_title']));
144
  }
145
 
146
  // The widget control
 
 
147
  ?>
148
 
149
  <input type="hidden" id="ngg_mrssw-submit-<?php echo $number; ?>" name="widget_ngg_mrssw[<?php echo $number; ?>][submit]" value="1" />
150
  <p>
151
+ <label><?php _e('Title:', 'nggallery'); ?><br />
152
+ <input class="widefat" id="ngg_mrssw-widget_title-<?php echo $number; ?>" name="widget_ngg_mrssw[<?php echo $number; ?>][widget_title]" type="text" value="<?php echo $widget_title; ?>" />
153
+ </label>
154
  </p>
155
 
 
 
156
  <p>
157
+ <label>
158
+ <input id="ngg_mrssw-show_icon-<?php echo $number; ?>" name="widget_ngg_mrssw[<?php echo $number; ?>][show_icon]" type="checkbox" value="1" <?php $this->render_checked($show_icon); ?> />
159
+ <?php _e('Show Media RSS icon', 'nggallery'); ?>
160
  </label>
161
  </p>
162
 
163
  <p>
164
  <label>
165
+ <input id="ngg_mrssw-show_global_mrss-<?php echo $number; ?>" name="widget_ngg_mrssw[<?php echo $number; ?>][show_global_mrss]" type="checkbox" value="1" <?php $this->render_checked($show_global_mrss); ?> /> <?php _e('Show the global Media RSS link', 'nggallery'); ?>
166
+ </label>
167
  </p>
168
 
169
  <p>
170
+ <label><?php _e('Text for the global Media RSS link:', 'nggallery'); ?><br />
171
+ <input class="widefat" id="ngg_mrssw-mrss_text-<?php echo $number; ?>" name="widget_ngg_mrssw[<?php echo $number; ?>][mrss_text]" type="text" value="<?php echo $mrss_text; ?>" /></label>
172
  </label>
173
  </p>
174
 
175
  <p>
176
+ <label><?php _e('Tooltip text for the global Media RSS link:', 'nggallery'); ?><br />
177
+ <input class="widefat" id="ngg_mrssw-mrss_title-<?php echo $number; ?>" name="widget_ngg_mrssw[<?php echo $number; ?>][mrss_title]" type="text" value="<?php echo $mrss_title; ?>" /></label>
178
  </label>
179
  </p>
180
 
189
  $ngg_options = nggGallery::get_option('ngg_options');
190
 
191
  // Get the options
 
192
  extract($args, EXTR_SKIP);
193
  if (is_numeric($widget_args)) {
194
  $widget_args = array('number' => $widget_args);
200
  ? __('Media RSS', 'nggallery')
201
  : $this->options[$number]['widget_title'];
202
  $show_global_mrss = $this->options[$number]['show_global_mrss'];
203
+ $show_icon = $this->options[$number]['show_icon'];
204
+ // Compat reason for settings pre V1.4.X
205
+ $show_icon = (empty( $this->options[$number]['mrss_icon_url']) ) ? $show_icon : true;
206
  $mrss_text = stripslashes($this->options[$number]['mrss_text']);
207
  $mrss_title = strip_tags(stripslashes($this->options[$number]['mrss_title']));
208
 
213
  echo "<ul class='ngg-media-rss-widget'>\n";
214
  if ($show_global_mrss) {
215
  echo " <li>";
216
+ echo $this->get_mrss_link(nggMediaRss::get_mrss_url(), $show_icon,
217
  stripslashes($mrss_title), stripslashes($mrss_text),
218
  $ngg_options['usePicLens']);
219
  echo "</li>\n";
227
  /**
228
  * Get a link to a Media RSS
229
  */
230
+ function get_mrss_link($mrss_url, $show_icon = true, $title, $text, $use_piclens) {
231
+ $out = '';
232
 
233
+ if ($show_icon) {
234
+ $icon_url = NGGALLERY_URLPATH . 'images/mrss-icon.gif';
235
  $out .= "<a href='$mrss_url' title='$title' class='ngg-media-rss-link'" . ($use_piclens ? ' onclick="PicLensLite.start({feedUrl:\'' . $mrss_url . '\'}); return false;"' : "") . " >";
236
  $out .= "<img src='$icon_url' alt='MediaRSS Icon' title='" . (!$use_piclens ? $title : __('[View with PicLens]','nggallery')). "' class='ngg-media-rss-icon' />";
237
  $out .= "</a> ";
238
  }
239
 
240
+ if ($text != '') {
241
  $out .= "<a href='$mrss_url' title='$title' class='ngg-media-rss-link'>";
242
  $out .= $text;
243
  $out .= "</a>";
256
  $this->options = array(
257
  -1 => array(
258
  'show_global_mrss' => true,
259
+ 'show_icon' => true,
260
  'mrss_text' => __('Media RSS', 'nggallery'),
261
  'mrss_title' => __('Link to the main image feed', 'nggallery')
262
  )
widgets/widgets.php CHANGED
@@ -7,42 +7,54 @@
7
  require_once(dirname (__FILE__) . '/media-rss-widget.php');
8
 
9
  /**
10
- * nggSlideshowWidget - The slideshow widget control for NextGEN Gallery ( require WP2.5 or higher)
11
  *
12
  * @package NextGEN Gallery
13
  * @author Alex Rabe
14
- * @copyright 2008
15
- * @version 1.00
16
- * @since 1.00
17
  * @access public
18
  */
19
- if (!class_exists('nggSlideshowWidget')) {
20
- class nggSlideshowWidget {
21
-
22
  function nggSlideshowWidget() {
23
- add_action('widgets_init', array(&$this, 'register_widget')) ;
24
- }
 
25
 
26
- function register_widget() {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
27
 
28
- $widget_ops = array('classname' => 'widget_slideshow', 'description' => __( 'Show a NextGEN Gallery Slideshow', 'nggallery') );
29
- wp_register_sidebar_widget('slideshow', __('NextGEN Slideshow', 'nggallery'), array(&$this, 'widget_output'), $widget_ops );
30
- wp_register_widget_control('slideshow', __('NextGEN Slideshow', 'nggallery'), array(&$this, 'widget_control') );
31
- }
32
-
33
  function render_slideshow($galleryID, $irWidth = '', $irHeight = '') {
34
 
35
- require_once (dirname (__FILE__).'/../lib/swfobject.php');
36
 
37
  global $wpdb;
38
 
39
  $ngg_options = get_option('ngg_options');
40
-
41
- // remove media file from RSS feed
42
- if ( is_feed() ) {
43
- $out = '[' . $ngg_options['galTextSlide'] . ']';
44
- return $out;
45
- }
46
 
47
  if (empty($irWidth) ) $irWidth = (int) $ngg_options['irWidth'];
48
  if (empty($irHeight)) $irHeight = (int) $ngg_options['irHeight'];
@@ -81,81 +93,56 @@ class nggSlideshowWidget {
81
  $out .= "\n".'-->';
82
  $out .= "\n".'</script>';
83
 
84
- echo $out;
85
  }
86
-
87
- // Slidehow widget control
88
- function widget_output($args) {
89
 
90
- global $wpdb;
91
-
92
- // If the Imagerotator didn't exist, skip the output
93
- if ( NGGALLERY_IREXIST == false )
94
- return;
95
-
96
- extract($args);
97
-
98
- // Each widget can store its own options. We keep strings here.
99
- $options = get_option('widget_nggslideshow');
100
 
101
- // These lines generate our output.
102
- echo $before_widget . $before_title . $options['title'] . $after_title;
 
 
103
 
104
- $this->render_slideshow($options['galleryid'] , $options['width'] , $options['height']);
 
105
 
106
- echo $after_widget;
107
 
108
- }
109
-
110
- // Admin section
111
- function widget_control() {
112
- global $wpdb;
113
- $options = get_option('widget_nggslideshow');
114
- if ( !is_array($options) )
115
- $options = array('title'=>'Slideshow', 'galleryid'=>'0','height'=>'120','width'=>'160',);
116
-
117
- if ( $_POST['ngg-submit'] ) {
118
 
119
- $options['title'] = strip_tags(stripslashes($_POST['ngg-title']));
120
- $options['galleryid'] = (int) $_POST['ngg-galleryid'];
121
- $options['height'] = (int) $_POST['ngg-height'];
122
- $options['width'] = (int) $_POST['ngg-width'];
123
- update_option('widget_nggslideshow', $options);
124
- }
125
-
126
- $title = htmlspecialchars($options['title'], ENT_QUOTES);
127
- $height = $options['height'];
128
- $width = $options['width'];
129
-
130
- // The Box content
131
  $tables = $wpdb->get_results("SELECT * FROM $wpdb->nggallery ORDER BY 'name' ASC ");
132
  ?>
133
- <p><label for="ngg-title"><?php _e('Title:', 'nggallery'); ?><input id="ngg-title" name="ngg-title" class="widefat" type="text" value="<?php echo $title; ?>" /></label></p>
134
  <p>
135
- <label for="ngg-galleryid"><?php _e('Select Gallery:', 'nggallery'); ?>
136
- <select size="1" name="ngg-galleryid" id="ngg-galleryid" class="widefat">
137
- <option value="0" <?php if (0 == $options['galleryid']) echo "selected='selected' "; ?> ><?php _e('All images', 'nggallery'); ?></option>
138
  <?php
139
  if($tables) {
140
  foreach($tables as $table) {
141
  echo '<option value="'.$table->gid.'" ';
142
- if ($table->gid == $options['galleryid']) echo "selected='selected' ";
143
  echo '>'.$table->name.'</option>'."\n\t";
144
  }
145
  }
146
  ?>
147
  </select>
148
- </label>
149
  </p>
150
- <p><label for="ngg-height"><?php _e('Height:', 'nggallery'); ?> <input id="ngg-height" name="ngg-height" type="text" style="padding: 3px; width: 45px;" value="<?php echo $height; ?>" /></label></p>
151
- <p><label for="ngg-width"><?php _e('Width:', 'nggallery'); ?> <input id="ngg-width" name="ngg-width" type="text" style="padding: 3px; width: 45px;" value="<?php echo $width; ?>" /></label></p>
152
- <input type="hidden" id="ngg-submit" name="ngg-submit" value="1" />
153
  <?php
154
  }
155
- }// End class
156
  }
157
- // start it
158
- $nggSlideshowWidget = new nggSlideshowWidget;
 
159
 
160
  /**
161
  * nggWidget - The widget control for NextGEN Gallery ( require WP2.5 or higher)
@@ -491,4 +478,4 @@ function nggDisplayRecentImages($number, $width = '75', $height = '50', $exclude
491
  nggWidget::ngg_widget_output($args = array(), 1, $options);
492
  }
493
 
494
- ?>
7
  require_once(dirname (__FILE__) . '/media-rss-widget.php');
8
 
9
  /**
10
+ * nggSlideshowWidget - The slideshow widget control for NextGEN Gallery ( require WP2.8 or higher)
11
  *
12
  * @package NextGEN Gallery
13
  * @author Alex Rabe
14
+ * @copyright 2008 - 2009
15
+ * @version 2.00
16
+ * @since 1.3.2
17
  * @access public
18
  */
19
+ class nggSlideshowWidget extends WP_Widget {
20
+
 
21
  function nggSlideshowWidget() {
22
+ $widget_ops = array('classname' => 'widget_slideshow', 'description' => __( 'Show a NextGEN Gallery Slideshow', 'nggallery') );
23
+ $this->WP_Widget('slideshow', __('NextGEN Slideshow', 'nggallery'), $widget_ops);
24
+ }
25
 
26
+ function widget( $args, $instance ) {
27
+ extract( $args );
28
+
29
+ // If the Imagerotator didn't exist, skip the output
30
+ if ( NGGALLERY_IREXIST == false )
31
+ return;
32
+
33
+ $title = apply_filters('widget_title', empty( $instance['title'] ) ? __('Slideshow', 'nggallery') : $instance['title']);
34
+
35
+ $out = $this->render_slideshow($instance['galleryid'] , $instance['width'] , $instance['height']);
36
+
37
+ if ( !empty( $out ) ) {
38
+ echo $before_widget;
39
+ if ( $title)
40
+ echo $before_title . $title . $after_title;
41
+ ?>
42
+ <ul>
43
+ <?php echo $out; ?>
44
+ </ul>
45
+ <?php
46
+ echo $after_widget;
47
+ }
48
+
49
+ }
50
 
 
 
 
 
 
51
  function render_slideshow($galleryID, $irWidth = '', $irHeight = '') {
52
 
53
+ require_once ( dirname (__FILE__) . '/../lib/swfobject.php' );
54
 
55
  global $wpdb;
56
 
57
  $ngg_options = get_option('ngg_options');
 
 
 
 
 
 
58
 
59
  if (empty($irWidth) ) $irWidth = (int) $ngg_options['irWidth'];
60
  if (empty($irHeight)) $irHeight = (int) $ngg_options['irHeight'];
93
  $out .= "\n".'-->';
94
  $out .= "\n".'</script>';
95
 
96
+ return $out;
97
  }
 
 
 
98
 
99
+ function update( $new_instance, $old_instance ) {
100
+ $instance = $old_instance;
 
 
 
 
 
 
 
 
101
 
102
+ $instance['title'] = strip_tags($new_instance['title']);
103
+ $instance['galleryid'] = (int) $new_instance['galleryid'];
104
+ $instance['height'] = (int) $new_instance['height'];
105
+ $instance['width'] = (int) $new_instance['width'];
106
 
107
+ return $instance;
108
+ }
109
 
110
+ function form( $instance ) {
111
 
112
+ global $wpdb;
 
 
 
 
 
 
 
 
 
113
 
114
+ //Defaults
115
+ $instance = wp_parse_args( (array) $instance, array( 'title' => 'Slideshow', 'galleryid' => '0', 'height' => '120', 'width' => '160') );
116
+ $title = esc_attr( $instance['title'] );
117
+ $height = esc_attr( $instance['height'] );
118
+ $width = esc_attr( $instance['width'] );
 
 
 
 
 
 
 
119
  $tables = $wpdb->get_results("SELECT * FROM $wpdb->nggallery ORDER BY 'name' ASC ");
120
  ?>
121
+ <p><label for="<?php echo $this->get_field_id('title'); ?>"><?php _e('Title:'); ?></label> <input class="widefat" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" type="text" value="<?php echo $title; ?>" /></p>
122
  <p>
123
+ <label for="<?php echo $this->get_field_id('galleryid'); ?>"><?php _e('Select Gallery:', 'nggallery'); ?></label>
124
+ <select size="1" name="<?php echo $this->get_field_name('galleryid'); ?>" id="<?php echo $this->get_field_id('galleryid'); ?>" class="widefat">
125
+ <option value="0" <?php if (0 == $instance['galleryid']) echo "selected='selected' "; ?> ><?php _e('All images', 'nggallery'); ?></option>
126
  <?php
127
  if($tables) {
128
  foreach($tables as $table) {
129
  echo '<option value="'.$table->gid.'" ';
130
+ if ($table->gid == $instance['galleryid']) echo "selected='selected' ";
131
  echo '>'.$table->name.'</option>'."\n\t";
132
  }
133
  }
134
  ?>
135
  </select>
 
136
  </p>
137
+ <p><label for="<?php echo $this->get_field_id('height'); ?>"><?php _e('Height:', 'nggallery'); ?></label> <input id="<?php echo $this->get_field_id('height'); ?>" name="<?php echo $this->get_field_name('height'); ?>" type="text" style="padding: 3px; width: 45px;" value="<?php echo $height; ?>" /></p>
138
+ <p><label for="<?php echo $this->get_field_id('width'); ?>"><?php _e('Width:', 'nggallery'); ?></label> <input id="<?php echo $this->get_field_id('width'); ?>" name="<?php echo $this->get_field_name('width'); ?>" type="text" style="padding: 3px; width: 45px;" value="<?php echo $width; ?>" /></p>
 
139
  <?php
140
  }
141
+
142
  }
143
+
144
+ // register it
145
+ add_action('widgets_init', create_function('', 'return register_widget("nggSlideshowWidget");'));
146
 
147
  /**
148
  * nggWidget - The widget control for NextGEN Gallery ( require WP2.5 or higher)
478
  nggWidget::ngg_widget_output($args = array(), 1, $options);
479
  }
480
 
481
+ ?>