NextGEN Gallery – WordPress Gallery Plugin - Version 0.80

Version Description

Download this release

Release Info

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

Code changes from version 0.74 to 0.80

Files changed (51) hide show
  1. admin/about.php +75 -38
  2. admin/addgallery.php +151 -476
  3. admin/admin.php +41 -6
  4. admin/album.php +62 -25
  5. admin/{js → css}/jquery.tabs-ie.css +0 -0
  6. admin/{js → css}/jquery.tabs.css +0 -0
  7. admin/{js/portlets.css → css/nggadmin.css} +38 -4
  8. admin/functions.php +918 -0
  9. admin/js/jquery.js +5 -4
  10. {js → admin/js}/swfobject.js +0 -0
  11. admin/js/swfupload.handler.js +147 -0
  12. admin/js/swfupload.js +1049 -0
  13. admin/js/swfupload_f9.swf +0 -0
  14. js/nggadmintab-js.php → admin/js/uploadtab.js.php +270 -265
  15. admin/manage.php +28 -39
  16. admin/overview.php +145 -4
  17. admin/settings.php +149 -102
  18. admin/setup.php +4 -1
  19. admin/style.php +4 -1
  20. admin/upload.php +33 -0
  21. nggadmintab.php → admin/uploadtab.php +45 -2
  22. admin/wpmu.php +107 -0
  23. changelog.txt +40 -0
  24. css/Black_Minimalism .css +12 -1
  25. css/hovereffect.css +11 -0
  26. css/ngg_dkret3.css +2 -0
  27. css/ngg_k2.css +12 -1
  28. css/ngg_shadow.css +12 -1
  29. css/ngg_shadow2.css +13 -3
  30. css/nggallery.css +18 -1
  31. lang/nggallery-de_DE.mo +0 -0
  32. lang/nggallery-de_DE.po +1170 -836
  33. lang/nggallery.po +971 -776
  34. lib/nggallery.lib.php +326 -25
  35. lib/nggmeta.lib.php +205 -147
  36. lib/pclzip.lib.php +206 -81
  37. lib/thumbnail.inc.php +27 -12
  38. nggallery.php +49 -139
  39. nggfunctions.php +226 -174
  40. ngginstall.php +52 -9
  41. nggshow.php +8 -7
  42. nggwidget.php +336 -445
  43. readme.txt +4 -3
  44. {js → tinymce}/editor_plugin.js +0 -0
  45. js/langs/de_DE.js → tinymce/langs/de_de.js +0 -0
  46. {js → tinymce}/langs/en.js +0 -0
  47. {js → tinymce}/langs/en_US.js +0 -0
  48. {js → tinymce}/nextgen.gif +0 -0
  49. {js → tinymce}/tinymce.js +0 -0
  50. tinymce/tinymce.php +85 -0
  51. nggbutton.php → tinymce/window.php +3 -4
admin/about.php CHANGED
@@ -9,14 +9,8 @@ if(preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die('You
9
  <h2><?php _e('Copyright notes / Credits', 'nggallery') ;?></h2>
10
  <fieldset class="options">
11
  <legend><?php _e("NextGEN DEV Team", 'nggallery'); ?></legend>
12
- <p><?php _e('This plugin is a team work of a virtual developer team around the world. Follow persons take part at the development till now :', 'nggallery') ;?></p>
13
- <ul>
14
- <li><a href="http://alexrabe.boelinger.com" target="_blank">Alex Rabe</a> <?php _e('(Lead developer)', 'nggallery') ;?></li>
15
- <li><a href="http://li.deranter.com" target="_blank">Frederic De Ranter</a> <?php _e('(Core AJAX developer)', 'nggallery') ;?></li>
16
- <li><a href="http://blog.arctic-media.de" target="_blank">Christian Arnold</a> <?php _e('(Core developer)', 'nggallery') ;?></li>
17
- <li><a href="http://mufuschnu.mu.funpic.de" target="_blank">Thomas Matzke</a> <?php _e('(Core developer)', 'nggallery') ;?></li>
18
- <li><a href="http://www.kev.hu" target="_blank">KeViN</a> <?php _e('(Sidebar Widget developer)', 'nggallery') ;?></li>
19
- </ul>
20
  <legend><?php _e("Contributors / Tribute to", 'nggallery'); ?></legend>
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>
@@ -60,6 +54,64 @@ if(preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die('You
60
  <?php
61
  }
62
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
63
  function ngg_list_support() {
64
  /* The list of my supporters. Thanks to all of them !*/
65
 
@@ -82,60 +134,45 @@ function ngg_list_support() {
82
  "Mike" => "http://www.mikemuscroft.com/",
83
  "Sabine (Haselina)" => "http://www.haselina.de/",
84
  "Milemann" => "",
85
- "Lazy (German Translation)" => "http://www.lazychris.de/",
86
- "Lise (French Translation)" => "http://liseweb.fr/",
87
- "Anja (Dutch Translation)" => "http://www.werkgroepen.net/wordpress",
88
- "Adrian (Indonesian Translation)" => "http://adrian.web.id/",
89
  "Kees de Bruin" => "http://www.kdbruin.net/fotoalbum/",
90
- "Gaspard Tseng / SillyCCSmile (Chinese Translation)" => "",
91
- "Mika Pennanen (Finnish Translation)" => "http://kapsi.fi/~penni",
92
- "Wojciech Owczarek (Polish Translation)" => "http://www.owczi.net",
93
- "Dilip Ramirez (Spanish Translation)" => "http://jmtd.110mb.com/blog",
94
- "Oleinikov Vedmak Evgeny (Russian Translation)" => "http://ka-2-03.mirea.org/",
95
  "Helene D." => "http://supernatural.hellioness.com/imagegallery/",
96
- "Sebastien MALHERBE (Logo design)" => "http://www.7vision.com/",
97
- "Claudia (German documentation)" => "http://www.blog-werkstatt.de/",
98
- "Robert (German documentation)" => "http://www.curlyrob.de/",
99
- "Pierpaolo Mannone (Italian Translation)" => "http://www.interscambiocasa.com/",
100
- "Mattias Tengblad (Swedish Translation)" => "http://wp-support.se/",
101
- "M&uuml;fit Kiper (Swedish Translation)" => "http://www.kiper.se/",
102
  "Ghettomaster" => "http://www.ghettoworld.de/",
103
  "Joe Pharis" => "http://www.southernstylecruisers.com/",
104
  "Charlie (Jump Media)" => "",
105
- "Gil Yaker (Documentation)" => "http://bamboosoup.com/",
106
  "Simon Paarlberg" => "http://www.paarlberg.dk/",
107
- "Morten Johansen (Danish Translation)" => "http://www.fr3ak.dk/",
108
  "Clive Loseby" => "http://www.access-bydesign.com/",
109
- "Vidar Seland (Norwegian Translation)" => "http://www.viidar.net/",
110
- "Emre Guler (Turkish Translation)" => "http://www.emreguler.com/",
111
  "Tonny Kluften" => "http://www.tinnitus-behandling.info/",
112
  "Andreas Oeye" => "http://www.andreasoye.com/",
113
  "Laurent Momy" => "",
114
- "Emilio Lauretti (Italian Translation)" => "",
115
- "Jan Angelovic (Czech Translation)" => "http://www.angelovic.cz/",
116
  "Patrick Hennessey" => "http://www.digitalvagabonding.com/",
117
  "Hans Kiesouw" => "http://www.digitalvagabonding.com/",
118
- "Laki (Slovak Translation)" => "http://www.laki.sk/",
119
  "Thomas Bradley" => "http://www.tobeon.co.uk/wordpress/",
120
  "Frederic Deghetto" => "",
121
  "Christopher Weddell" => "",
122
  "Martin Scholz" => "",
123
  "Non Eric" => "http://www.lunatec.de/",
124
- "Rowan Crane (WPMU support)" => "http://blog.rowancrane.com/",
125
  "Ronen Hirsch" => "http://www.stillcreation.com/",
126
- "Kuba Zwolinski (Polish Translation)" => "http://kubazwolinski.com/",
127
- "Rina Jiang (Chinese Translation)" => "http://http://mysticecho.net/",
128
  "Michael Erhart" => "",
129
  "Luc Saint-Elie" => "http://luc.saint-elie.com/",
130
  "Matthew Barker" => "",
131
- "Anthony (Chinese Translation)" => "http://www.angryouth.com/",
132
- "Milan Va��cek (Czech Translation)" => "http://www.NoWorkTeam.cz/",
133
- "Joo Gi-young (Korean Translation)" => "http://lombric.linuxstudy.pe.kr/wp/",
134
  "Emanuel Kluge" => "",
135
  "Alba Bentos Pereira" => "",
136
- "Oleg A. Safonov (Russian Translation)" => "http://blog.olart.ru",
137
  "Bill Babcock" => "http://www.bnj.com",
138
- "Jesper Haug Karsrud" => "http://www.beyond-sanity.com"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
139
  );
140
 
141
 
9
  <h2><?php _e('Copyright notes / Credits', 'nggallery') ;?></h2>
10
  <fieldset class="options">
11
  <legend><?php _e("NextGEN DEV Team", 'nggallery'); ?></legend>
12
+ <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>
13
+ <p><?php ngg_list_contributors(); ?></p>
 
 
 
 
 
 
14
  <legend><?php _e("Contributors / Tribute to", 'nggallery'); ?></legend>
15
  <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') ;?>
16
  <?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>
54
  <?php
55
  }
56
 
57
+ function ngg_list_contributors() {
58
+ /* The list of my contributors. Thanks to all of them !*/
59
+
60
+ $contributors = array(
61
+ "Frederic De Ranter (AJAX code contributor)" => "http://li.deranter.com/",
62
+ "Christian Arnold (Code contributor)" => "http://blog.arctic-media.de/",
63
+ "Thomas Matzke (Album code contributor)" => "http://mufuschnu.mu.funpic.de/",
64
+ "KeViN (Sidebar Widget developer)" => "http://www.kev.hu/",
65
+ "Lazy (German Translation)" => "http://www.lazychris.de/",
66
+ "Lise (French Translation)" => "http://liseweb.fr/",
67
+ "Anja (Dutch Translation)" => "http://www.werkgroepen.net/wordpress",
68
+ "Adrian (Indonesian Translation)" => "http://adrian.web.id/",
69
+ "Gaspard Tseng / SillyCCSmile (Chinese Translation)" => "",
70
+ "Mika Pennanen (Finnish Translation)" => "http://kapsi.fi/~penni",
71
+ "Wojciech Owczarek (Polish Translation)" => "http://www.owczi.net",
72
+ "Dilip Ramirez (Spanish Translation)" => "http://jmtd.110mb.com/blog",
73
+ "Oleinikov Vedmak Evgeny (Russian Translation)" => "http://ka-2-03.mirea.org/",
74
+ "Sebastien MALHERBE (Logo design)" => "http://www.7vision.com/",
75
+ "Claudia (German documentation)" => "http://www.blog-werkstatt.de/",
76
+ "Robert (German documentation)" => "http://www.curlyrob.de/",
77
+ "Pierpaolo Mannone (Italian Translation)" => "http://www.interscambiocasa.com/",
78
+ "Mattias Tengblad (Swedish Translation)" => "http://wp-support.se/",
79
+ "M&uuml;fit Kiper (Swedish Translation)" => "http://www.kiper.se/",
80
+ "Gil Yaker (Documentation)" => "http://bamboosoup.com/",
81
+ "Morten Johansen (Danish Translation)" => "http://www.fr3ak.dk/",
82
+ "Vidar Seland (Norwegian Translation)" => "http://www.viidar.net/",
83
+ "Emre G&uuml;ler (Turkish Translation)" => "http://www.emreguler.com/",
84
+ "Emilio Lauretti (Italian Translation)" => "",
85
+ "Jan Angelovic (Czech Translation)" => "http://www.angelovic.cz/",
86
+ "Laki (Slovak Translation)" => "http://www.laki.sk/",
87
+ "Rowan Crane (WPMU support)" => "http://blog.rowancrane.com/",
88
+ "Kuba Zwolinski (Polish Translation)" => "http://kubazwolinski.com/",
89
+ "Rina Jiang (Chinese Translation)" => "http://http://mysticecho.net/",
90
+ "Anthony (Chinese Translation)" => "http://www.angryouth.com/",
91
+ "Milan Vasicek (Czech Translation)" => "http://www.NoWorkTeam.cz/",
92
+ "Joo Gi-young (Korean Translation)" => "http://lombric.linuxstudy.pe.kr/wp/",
93
+ "Oleg A. Safonov (Russian Translation)" => "http://blog.olart.ru",
94
+ "AleXander Kirichev (Bulgarian Translation)" => "http://xsakex.art-bg.org/",
95
+ "Richer Yang (Chinese Translation)" => "http://fantasyworld.idv.tw/"
96
+ );
97
+
98
+
99
+ ksort($contributors);
100
+ $i = count($contributors);
101
+ foreach ($contributors as $name => $url)
102
+ {
103
+ if ($url)
104
+ echo "<a href=\"$url\">$name</a>";
105
+ else
106
+ echo $name;
107
+ $i--;
108
+ if ($i == 1)
109
+ echo " & ";
110
+ elseif ($i)
111
+ echo ", ";
112
+ }
113
+ }
114
+
115
  function ngg_list_support() {
116
  /* The list of my supporters. Thanks to all of them !*/
117
 
134
  "Mike" => "http://www.mikemuscroft.com/",
135
  "Sabine (Haselina)" => "http://www.haselina.de/",
136
  "Milemann" => "",
 
 
 
 
137
  "Kees de Bruin" => "http://www.kdbruin.net/fotoalbum/",
 
 
 
 
 
138
  "Helene D." => "http://supernatural.hellioness.com/imagegallery/",
 
 
 
 
 
 
139
  "Ghettomaster" => "http://www.ghettoworld.de/",
140
  "Joe Pharis" => "http://www.southernstylecruisers.com/",
141
  "Charlie (Jump Media)" => "",
 
142
  "Simon Paarlberg" => "http://www.paarlberg.dk/",
 
143
  "Clive Loseby" => "http://www.access-bydesign.com/",
 
 
144
  "Tonny Kluften" => "http://www.tinnitus-behandling.info/",
145
  "Andreas Oeye" => "http://www.andreasoye.com/",
146
  "Laurent Momy" => "",
 
 
147
  "Patrick Hennessey" => "http://www.digitalvagabonding.com/",
148
  "Hans Kiesouw" => "http://www.digitalvagabonding.com/",
 
149
  "Thomas Bradley" => "http://www.tobeon.co.uk/wordpress/",
150
  "Frederic Deghetto" => "",
151
  "Christopher Weddell" => "",
152
  "Martin Scholz" => "",
153
  "Non Eric" => "http://www.lunatec.de/",
 
154
  "Ronen Hirsch" => "http://www.stillcreation.com/",
 
 
155
  "Michael Erhart" => "",
156
  "Luc Saint-Elie" => "http://luc.saint-elie.com/",
157
  "Matthew Barker" => "",
 
 
 
158
  "Emanuel Kluge" => "",
159
  "Alba Bentos Pereira" => "",
 
160
  "Bill Babcock" => "http://www.bnj.com",
161
+ "Jesper Haug Karsrud" => "http://www.beyond-sanity.com",
162
+ "Marco van de Ven" => "http://www.mvdven.nl",
163
+ "Peter Krabshuis" => "http://www.dragoneye.nl",
164
+ "Teresa Lo" => "http://www.invivoanalytics.com",
165
+ "Jes Carlskov" => "",
166
+ "John Statler" => "http://www.systemsolver.com",
167
+ "Joshua Katinger" => "http://www.accessionmedia.com",
168
+ "iSight Technologies" => "http://www.isighttech.com",
169
+ "Kay Germer" => "http://highkay.de/",
170
+ "Ramon Cutanda Lopez" => "",
171
+ "Luc Dubois" => "http://www.oriste.com/",
172
+ "Dixie Reid" => "http://www.thereids.co.nz/",
173
+ "Gareth Bridger" => "",
174
+ "McGillveray Studios" => "http://www.mcgillveraystudios.ca/",
175
+ "Paul Rogers" => "http://www.swarfworks.com"
176
  );
177
 
178
 
admin/addgallery.php CHANGED
@@ -1,31 +1,36 @@
1
  <?php
2
  if(preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die('You are not allowed to call this page directly.'); }
3
-
4
- include_once(NGGALLERY_ABSPATH.'/lib/thumbnail.inc.php');
5
-
6
- //TODO: Check better upload form like http://digitarald.de/project/fancyupload/
7
 
 
 
 
8
  function nggallery_admin_add_gallery() {
9
 
10
  global $wpdb;
11
  $ngg_options = get_option('ngg_options');
12
 
13
  // same as $_SERVER['REQUEST_URI'], but should work under IIS 6.0
14
- $filepath = get_option('siteurl'). '/wp-admin/admin.php?page='.$_GET['page'];
 
 
 
 
 
 
15
 
16
  $defaultpath = $ngg_options['gallerypath'];
17
-
18
  if ($_POST['addgallery']){
19
  check_admin_referer('ngg_addgallery');
20
  $newgallery = attribute_escape($_POST['galleryname']);
21
  if (!empty($newgallery))
22
- $messagetext = ngg_create_gallery($newgallery, $defaultpath);
23
  }
24
 
25
  if ($_POST['zipupload']){
26
  check_admin_referer('ngg_addgallery');
27
  if ($_FILES['zipfile']['error'] == 0)
28
- $messagetext = ngg_import_zipfile($defaultpath);
29
  else
30
  nggallery::show_error(__('Upload failed!','nggallery'));
31
  }
@@ -34,34 +39,112 @@ if(preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die('You
34
  check_admin_referer('ngg_addgallery');
35
  $galleryfolder = $_POST['galleryfolder'];
36
  if ((!empty($galleryfolder)) AND ($defaultpath != $galleryfolder))
37
- $messagetext = ngg_import_gallery($galleryfolder);
38
  }
39
 
40
  if ($_POST['uploadimage']){
41
  check_admin_referer('ngg_addgallery');
42
  if ($_FILES['MF__F_0_0']['error'] == 0) {
43
- $messagetext = ngg_upload_images($defaultpath);
44
  }
45
  else
46
  nggallery::show_error(__('Upload failed!','nggallery'));
47
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
48
 
49
  // message windows
50
  if(!empty($messagetext)) { echo '<!-- Last Action --><div id="message" class="updated fade"><p>'.$messagetext.'</p></div>'; }
51
-
52
  ?>
53
 
54
- <link rel="stylesheet" href="<?php echo NGGALLERY_URLPATH ?>admin/js/jquery.tabs.css" type="text/css" media="print, projection, screen"/>
55
- <!-- Additional IE/Win specific style sheet (Conditional Comments) -->
 
 
56
  <!--[if lte IE 7]>
57
- <link rel="stylesheet" href="<?php echo NGGALLERY_URLPATH ?>admin/js/jquery.tabs-ie.css" type="text/css" media="projection, screen"/>
58
  <![endif]-->
59
-
 
 
 
60
  <script type="text/javascript">
61
- jQuery(function() {
62
- jQuery('#slider').tabs({ fxFade: true, fxSpeed: 'fast' });
63
- });
64
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
65
  jQuery(function(){
66
  jQuery('#imagefiles').MultiFile({
67
  STRING: {
@@ -69,31 +152,41 @@ if(preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die('You
69
  }
70
  });
71
  });
72
-
73
  </script>
74
-
 
 
 
 
 
 
 
75
  <div id="slider" class="wrap">
76
 
77
  <ul id="tabs">
78
  <li><a href="#addgallery"><?php _e('Add new gallery', 'nggallery') ;?></a></li>
79
- <?php if (!SAFE_MODE) { ?>
80
  <li><a href="#zipupload"><?php _e('Upload a Zip-File', 'nggallery') ;?></a></li>
81
- <?php } ?>
 
82
  <li><a href="#importfolder"><?php _e('Import image folder', 'nggallery') ;?></a></li>
 
83
  <li><a href="#uploadimage"><?php _e('Upload Images', 'nggallery') ;?></a></li>
84
  </ul>
85
 
86
  <!-- create gallery -->
87
  <div id="addgallery">
88
  <h2><?php _e('Add new gallery', 'nggallery') ;?></h2>
89
- <form name="addgallery" id="addgallery" method="POST" action="<?php echo $filepath; ?>" accept-charset="utf-8" >
90
  <?php wp_nonce_field('ngg_addgallery') ?>
91
  <fieldset class="options">
92
  <table class="optiontable">
93
  <tr valign="top">
94
  <th scope="row"><?php _e('New Gallery', 'nggallery') ;?>:</th>
95
  <td><input type="text" size="35" name="galleryname" value="" /><br />
 
96
  <?php _e('Create a new , empty gallery below the folder', 'nggallery') ;?> <strong><?php echo $defaultpath ?></strong><br />
 
97
  <i>( <?php _e('Allowed characters for file and folder names are', 'nggallery') ;?>: a-z, A-Z, 0-9, -, _ )</i></td>
98
  </tr>
99
  </table>
@@ -101,10 +194,11 @@ if(preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die('You
101
  </fieldset>
102
  </form>
103
  </div>
 
104
  <!-- zip-file operation -->
105
  <div id="zipupload">
106
  <h2><?php _e('Upload a Zip-File', 'nggallery') ;?></h2>
107
- <form name="zipupload" id="zipupload" method="POST" enctype="multipart/form-data" action="<?php echo $filepath.'#zipupload'; ?>" accept-charset="utf-8" >
108
  <?php wp_nonce_field('ngg_addgallery') ?>
109
  <fieldset class="options">
110
  <table class="optiontable">
@@ -126,17 +220,25 @@ if(preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die('You
126
  }
127
  ?>
128
  </select>
129
- <br /><?php echo _e('Note : The upload limit on your server is ','nggallery') . "<strong>" . ini_get('upload_max_filesize') . "Byte</strong>\n"; ?></td>
 
130
  </tr>
 
 
 
 
 
131
  </table>
132
  <div class="submit"> <input type="submit" name= "zipupload" value="<?php _e('Start upload', 'nggallery') ;?>"/></div>
133
  </fieldset>
134
  </form>
135
  </div>
 
 
136
  <!-- import folder -->
137
  <div id="importfolder">
138
  <h2><?php _e('Import image folder', 'nggallery') ;?></h2>
139
- <form name="importfolder" id="importfolder" method="POST" action="<?php echo $filepath.'#importfolder'; ?>" accept-charset="utf-8" >
140
  <?php wp_nonce_field('ngg_addgallery') ?>
141
  <fieldset class="options">
142
  <table class="optiontable">
@@ -144,27 +246,33 @@ if(preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die('You
144
  <th scope="row"><?php _e('Import from Server path:', 'nggallery') ;?><br /><code><?php echo WINABSPATH; ?></code></th>
145
  <td><br /><input type="text" size="35" name="galleryfolder" value="<?php echo$defaultpath; ?>" /><br />
146
  <?php _e('Import a folder with images. Please note :', 'nggallery') ;?><br />
147
- <?php _e('For save_mode = ON you need to add the subfolder thumbs manually', 'nggallery') ;?></td>
 
 
 
 
 
148
  </tr>
149
  </table>
150
  <div class="submit"> <input type="submit" name= "importfolder" value="<?php _e('Import folder', 'nggallery') ;?>"/></div>
151
  </fieldset>
152
  </form>
153
- </div>
 
154
  <!-- upload images -->
155
  <div id="uploadimage">
156
  <h2><?php _e('Upload Images', 'nggallery') ;?></h2>
157
- <form name="uploadimage" id="uploadimage" method="POST" enctype="multipart/form-data" action="<?php echo $filepath.'#uploadimage'; ?>" accept-charset="utf-8" >
158
  <?php wp_nonce_field('ngg_addgallery') ?>
159
  <fieldset class="options">
160
  <table class="optiontable">
161
  <tr valign="top">
162
- <th scope="row"><?php _e('Upload image', 'nggallery') ;?></th>
163
- <td><input type="file" name="imagefiles" id="imagefiles" size="35" class="imagefiles"/></td>
164
  </tr>
165
  <tr valign="top">
166
  <th scope="row"><?php _e('in to', 'nggallery') ;?></th>
167
- <td><select name="galleryselect">
168
  <option value="0" ><?php _e('Choose gallery', 'nggallery') ?></option>
169
  <?php
170
  $gallerylist = $wpdb->get_results("SELECT * FROM $wpdb->nggallery ORDER BY gid ASC");
@@ -175,10 +283,18 @@ if(preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die('You
175
  }
176
  ?>
177
  </select>
178
- <br /><?php echo _e('Note : The upload limit on your server is ','nggallery') . "<strong>" . ini_get('upload_max_filesize') . "Byte</strong>\n"; ?></td>
 
179
  </tr>
 
 
 
 
 
180
  </table>
181
- <div class="submit"><input type="submit" name= "uploadimage" value="<?php _e('Upload images', 'nggallery') ;?>"/></div>
 
 
182
  </fieldset>
183
  </form>
184
  </div>
@@ -187,446 +303,5 @@ if(preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die('You
187
  <?php
188
  }
189
 
190
- // **************************************************************
191
- function ngg_create_gallery($gallerytitle, $defaultpath) {
192
- // create a new gallery & folder
193
- global $wpdb;
194
-
195
- $myabspath = str_replace("\\","/",ABSPATH); // required for windows
196
-
197
- //cleanup pathname
198
- $galleryname = sanitize_title($gallerytitle);
199
- $nggpath = $defaultpath.$galleryname;
200
-
201
- if (empty($galleryname)) return '<font color="red">'.__('No valid gallery name!', 'nggallery'). '</font>';
202
-
203
- // check for main folder
204
- if ( !file_exists(($myabspath.$defaultpath)) ) {
205
- $txt = __('Directory', 'nggallery').' <strong>'.$defaultpath.'</strong> '.__('didn\'t exist. Please create first the main gallery folder ', 'nggallery').'!<br />';
206
- $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> ';
207
- nggallery::show_error($txt);
208
- return;
209
- }
210
-
211
- // check for permission settings
212
- if ( substr(decoct(@fileperms($myabspath.$defaultpath)),1) != decoct(NGGFOLDER_PERMISSION) ) {
213
- $txt = __('Directory', 'nggallery').' <strong>'.$defaultpath.'</strong> '.__('didn\'t have the permissions ', 'nggallery').decoct(NGGFOLDER_PERMISSION).'!<br />';
214
- $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> ';
215
- nggallery::show_error($txt);
216
- return;
217
- }
218
-
219
- // avoid double creation
220
- if (is_dir($myabspath.$nggpath)) {
221
- nggallery::show_error(__('Directory', 'nggallery').' <strong>'.$nggpath.'</strong> '.__('already exists!', 'nggallery'));
222
- return;
223
- }
224
-
225
- // create new directories
226
- if (!SAFE_MODE) {
227
- if (!@mkdir ($myabspath.$nggpath,NGGFOLDER_PERMISSION)) return ('<font color="red">'.__('Unable to create directory ', 'nggallery').$nggpath.'!</font>');
228
- if (!@chmod ($myabspath.$nggpath,NGGFOLDER_PERMISSION)) return ('<font color="red">'.__('Unable to set directory permissions ', 'nggallery').$nggpath.'!</font>');
229
- if (!@mkdir ($myabspath.$nggpath.'/thumbs',NGGFOLDER_PERMISSION)) return ('<font color="red">'.__('Unable to create directory ', 'nggallery').$nggpath.'/thumbs !</font>');
230
- if (!@chmod ($myabspath.$nggpath.'/thumbs',NGGFOLDER_PERMISSION)) return ('<font color="red">'.__('Unable to set directory permissions', 'nggallery').$nggpath.'/thumbs !</font>');
231
- } else {
232
- $safemode = '<br /><font color="green">'.__('The server setting Safe-Mode is on !', 'nggallery');
233
- $safemode .= '<br />'.__('Please create directory', 'nggallery').' <strong>'.$nggpath.'</strong> ';
234
- $safemode .= __('and the thumbnails directory', 'nggallery').' <strong>'.$nggpath.'/thumbs</strong> '.__('with permission 777 manually !', 'nggallery').'</font>';
235
- }
236
- $result=$wpdb->get_var("SELECT name FROM $wpdb->nggallery WHERE name = '$galleryname' ");
237
- if ($result) {
238
- nggallery::show_error(__('Gallery', 'nggallery').' <strong>'.$galleryname.'</strong> '.__('already exists', 'nggallery'));
239
- return;
240
- } else {
241
- $result = $wpdb->query("INSERT INTO $wpdb->nggallery (name, path, title) VALUES ('$galleryname', '$nggpath', '$gallerytitle') ");
242
- if ($result) nggallery::show_message(__('Gallery', 'nggallery').' <strong>'.$wpdb->insert_id." : ".$galleryname.'</strong> '.__('successfully created!','nggallery')."<br />".__('You can show this gallery with the tag','nggallery').'<strong> [gallery='.$wpdb->insert_id.']</strong>'.$safemode);
243
- return;
244
- }
245
- }
246
-
247
- // **************************************************************
248
- function ngg_import_gallery($galleryfolder) {
249
- // ** $galleryfolder contains relative path
250
-
251
- //TODO: Check permission of existing thumb folder & images
252
-
253
- // import a existing folder
254
- global $wpdb;
255
-
256
- // remove trailing slash at the end, if somebody use it
257
- if (substr($galleryfolder, -1) == '/') $galleryfolder = substr($galleryfolder, 0, -1);
258
- $gallerypath = WINABSPATH.$galleryfolder;
259
-
260
- if (!is_dir($gallerypath)) return '<font color="red">'.__('Directory', 'nggallery').' <strong>'.$gallerypath.'</strong> '.__('doesn&#96;t exist', 'nggallery').'!</font>';
261
-
262
- // read list of images
263
- $new_imageslist = ngg_scandir($gallerypath);
264
- if (empty($new_imageslist)) return '<font color="blue">'.__('Directory', 'nggallery').' <strong>'.$gallerypath.'</strong> '.__('contains no pictures', 'nggallery').'!</font>';
265
-
266
- // create thumbnail folder
267
- $check_thumbnail_folder = nggallery::get_thumbnail_folder($gallerypath);
268
- if (!$check_thumbnail_folder) {
269
- if (SAFE_MODE) return '<font color="red">'.__('Thumbnail Directory', 'nggallery').' <strong>'.$gallerypath.'/thumbs</strong> '.__('doesn&#96;t exist', 'nggallery').'!<br />'.__('Please create the folder <i>thumbs</i> in your gallery folder.', 'nggallery').'</font>';
270
- else @mkdir ($gallerypath.'/thumbs',NGGFOLDER_PERMISSION) or die ('<font color="red">'.__('Unable to create directory ', 'nggallery').$gallerypath.'/thumbs !</font>');
271
- }
272
-
273
- // take folder name as gallery name
274
- $galleryname = basename($galleryfolder);
275
-
276
- // check for existing gallery
277
- $gallery_id = $wpdb->get_var("SELECT gid FROM $wpdb->nggallery WHERE name = '$galleryname' ");
278
-
279
- if (!$gallery_id) {
280
- $result = $wpdb->query("INSERT INTO $wpdb->nggallery (name, path) VALUES ('$galleryname', '$galleryfolder') ");
281
- if (!$result) {
282
- nggallery::show_error(__('Database error. Could not add gallery!','nggallery'));
283
- return;
284
- }
285
- $gallery_id = $wpdb->insert_id; // get index_id
286
- }
287
-
288
- // Look for existing image list
289
- $old_imageslist = $wpdb->get_col("SELECT filename FROM $wpdb->nggpictures WHERE galleryid = '$gallery_id' ");
290
- // if no images are there, create empty array
291
- if ($old_imageslist == NULL) $old_imageslist = array();
292
- // check difference
293
- $new_images = array_diff($new_imageslist, $old_imageslist);
294
- // now create thumbnails
295
- ngg_generatethumbnail($gallerypath,$new_images);
296
-
297
- // add images to database
298
- $count_pic = 0;
299
- if (is_array($new_images)) {
300
- foreach($new_images as $picture) {
301
- $result = $wpdb->query("INSERT INTO $wpdb->nggpictures (galleryid, filename, alttext, exclude) VALUES ('$gallery_id', '$picture', '$picture' , 0) ");
302
- if ($result) $count_pic++;
303
- }
304
- }
305
-
306
- nggallery::show_message(__('Gallery','nggallery').' <strong>'.$galleryname.'</strong> '.__('successfully created!','nggallery').'<br />'.$count_pic.__(' pictures added.','nggallery'));
307
- return;
308
-
309
- }
310
- // **************************************************************
311
- function ngg_scandir($dirname=".") {
312
- // thx to php.net :-)
313
- $ext = array("jpeg", "jpg", "png", "gif");
314
- $files = array();
315
- if($handle = opendir($dirname)) {
316
- while(false !== ($file = readdir($handle)))
317
- for($i=0;$i<sizeof($ext);$i++)
318
- if(stristr($file, ".".$ext[$i]))
319
- $files[] = utf8_encode($file);
320
- closedir($handle);
321
- }
322
- return($files);
323
- }
324
-
325
- // **************************************************************
326
- function ngg_resizeImages($gallery_absfolder, $pictures) {
327
- // ** $gallery_absfolder must contain abspath !!
328
-
329
- $ngg_options = get_option('ngg_options');
330
-
331
- if (is_array($pictures)) {
332
- foreach($pictures as $picture) {
333
-
334
- if (!is_writable($gallery_absfolder."/".$picture)) {
335
- $messagetext .= $gallery_absfolder."/".$picture."<br />";
336
- continue;
337
- }
338
-
339
- $thumb = new ngg_Thumbnail($gallery_absfolder."/".$picture, TRUE);
340
- // echo $thumb->errmsg;
341
- // skip if file is not there
342
- if (!$thumb->error) {
343
- $thumb->resize($ngg_options[imgWidth],$ngg_options[imgHeight],$ngg_options[imgResampleMode]);
344
- $thumb->save($gallery_absfolder."/".$picture,$ngg_options[imgQuality]);
345
- }
346
- $thumb->destruct();
347
- }
348
- }
349
-
350
- if(!empty($messagetext)) nggallery::show_error('<strong>'.__('Some pictures are not writeable :','nggallery').'</strong><br /><ul>'.$messagetext.'</ul>');
351
- return;
352
- }
353
-
354
- // **************************************************************
355
- function ngg_generateWatermark($gallery_absfolder, $pictures) {
356
- // ** $gallery_absfolder must contain abspath !!
357
-
358
- $ngg_options = get_option('ngg_options');
359
-
360
- if (is_array($pictures)) {
361
- foreach($pictures as $picture) {
362
-
363
- if (!is_writable($gallery_absfolder."/".$picture)) {
364
- $messagetext .= $gallery_absfolder."/".$picture."<br />";
365
- continue;
366
- }
367
-
368
- $thumb = new ngg_Thumbnail($gallery_absfolder."/".$picture, TRUE);
369
- // echo $thumb->errmsg;
370
- // skip if file is not there
371
- if (!$thumb->error) {
372
- if ($ngg_options[wmType] == 'image') {
373
- $thumb->watermarkImgPath = $ngg_options[wmPath];
374
- $thumb->watermarkImage($ngg_options[wmPos], $ngg_options[wmXpos], $ngg_options[wmYpos]);
375
- }
376
- if ($ngg_options[wmType] == 'text') {
377
- $thumb->watermarkText = $ngg_options[wmText];
378
- $thumb->watermarkCreateText($ngg_options[wmColor], $ngg_options[wmFont], $ngg_options[wmSize], $ngg_options[wmOpaque]);
379
- $thumb->watermarkImage($ngg_options[wmPos], $ngg_options[wmXpos], $ngg_options[wmYpos]);
380
- }
381
- $thumb->save($gallery_absfolder."/".$picture,$ngg_options[imgQuality]);
382
- }
383
- $thumb->destruct();
384
- }
385
- }
386
-
387
- if(!empty($messagetext)) nggallery::show_error('<strong>'.__('Some pictures are not writeable :','nggallery').'</strong><br /><ul>'.$messagetext.'</ul>');
388
- return;
389
- }
390
-
391
- // **************************************************************
392
- function ngg_generatethumbnail($gallery_absfolder, $pictures) {
393
- // ** $gallery_absfolder must contain abspath !!
394
-
395
- $ngg_options = get_option('ngg_options');
396
-
397
- $prefix = nggallery::get_thumbnail_prefix($gallery_absfolder);
398
- $thumbfolder = nggallery::get_thumbnail_folder($gallery_absfolder);
399
-
400
- if (is_array($pictures)) {
401
- foreach($pictures as $picture) {
402
-
403
- // check for existing thumbnail
404
- if (file_exists($gallery_absfolder.$thumbfolder.$prefix.$picture)) {
405
- if (!is_writable($gallery_absfolder.$thumbfolder.$prefix.$picture)) {
406
- $messagetext .= $gallery_absfolder."/".$picture."<br />";
407
- continue;
408
- }
409
- }
410
-
411
- $thumb = new ngg_Thumbnail($gallery_absfolder."/".utf8_decode($picture), TRUE);
412
-
413
- // skip if file is not there
414
- if (!$thumb->error) {
415
- if ($ngg_options[thumbcrop]) {
416
-
417
- // THX to Kees de Bruin, better thumbnails if portrait format
418
- $width = $ngg_options[thumbwidth];
419
- $height = $ngg_options[thumbheight];
420
- $curwidth = $thumb->currentDimensions['width'];
421
- $curheight = $thumb->currentDimensions['height'];
422
- if ($curwidth > $curheight) {
423
- $aspect = (100 * $curwidth) / $curheight;
424
- } else {
425
- $aspect = (100 * $curheight) / $curwidth;
426
- }
427
- $width = intval(($width * $aspect) / 100);
428
- $height = intval(($height * $aspect) / 100);
429
- $thumb->resize($width,$height,$ngg_options[thumbResampleMode]);
430
- $thumb->cropFromCenter($width,$ngg_options[thumbResampleMode]);
431
- }
432
- elseif ($ngg_options[thumbfix]) {
433
- // check for portrait format
434
- if ($thumb->currentDimensions['height'] > $thumb->currentDimensions['width']) {
435
- $thumb->resize($ngg_options[thumbwidth], 0,$ngg_options[thumbResampleMode]);
436
- // get optimal y startpos
437
- $ypos = ($thumb->currentDimensions['height'] - $ngg_options[thumbheight]) / 2;
438
- $thumb->crop(0, $ypos, $ngg_options[thumbwidth],$ngg_options[thumbheight],$ngg_options[thumbResampleMode]);
439
- } else {
440
- $thumb->resize(0,$ngg_options[thumbheight],$ngg_options[thumbResampleMode]);
441
- // get optimal x startpos
442
- $xpos = ($thumb->currentDimensions['width'] - $ngg_options[thumbwidth]) / 2;
443
- $thumb->crop($xpos, 0, $ngg_options[thumbwidth],$ngg_options[thumbheight],$ngg_options[thumbResampleMode]);
444
- }
445
- } else {
446
- $thumb->resize($ngg_options[thumbwidth],$ngg_options[thumbheight],$ngg_options[thumbResampleMode]);
447
- }
448
- $thumb->save($gallery_absfolder.$thumbfolder.$prefix.$picture,$ngg_options[thumbquality]);
449
- // didn't work under safe mode, but I want to set it if possible
450
- @chmod ($gallery_absfolder.$thumbfolder.$prefix.$picture, NGGFILE_PERMISSION);
451
- } else {
452
- $errortext .= $picture." <strong>(Error : ".$thumb->errmsg .")</strong><br />";
453
- }
454
- $thumb->destruct();
455
- }
456
- }
457
-
458
- if(!empty($errortext)) nggallery::show_error('<strong>'.__('Follow thumbnails could not created.','nggallery').'</strong><br /><ul>'.$errortext.'</ul>');
459
- if(!empty($messagetext)) nggallery::show_error('<strong>'.__('Some thumbnails are not writeable :','nggallery').'</strong><br /><ul>'.$messagetext.'</ul>');
460
-
461
- return;
462
- }
463
-
464
- // **************************************************************
465
- function ngg_unzip($dir, $file) {
466
- // thx to Gregor at http://blog.scoutpress.de/forum/topic/45
467
-
468
- require_once(NGGALLERY_ABSPATH.'/lib/pclzip.lib.php');
469
-
470
- $archive = new PclZip($file);
471
-
472
- // extract all files in one folder
473
- if ($archive->extract(PCLZIP_OPT_PATH, $dir, PCLZIP_OPT_REMOVE_ALL_PATH, PCLZIP_CB_PRE_EXTRACT, 'ngg_getonlyimages') == 0) {
474
- if ($archive->error_code == -22)
475
- nggallery::show_error(__('The Zip-file is too large. Exceed Memory limit !','nggallery'));
476
- else
477
- nggallery::show_error("Error : ".$archive->errorInfo(true));
478
- return false;
479
- }
480
-
481
- return true;
482
- }
483
-
484
- // **************************************************************
485
- function ngg_getonlyimages($p_event, &$p_header) {
486
- $info = pathinfo($p_header['filename']);
487
- // check for extension
488
- $ext = array("jpeg", "jpg", "png", "gif");
489
- if (in_array( strtolower($info['extension']), $ext)) {
490
- // For MAC skip the ".image" files
491
- if ($info['basename']{0} == "." )
492
- return 0;
493
- else
494
- return 1;
495
- }
496
- // ----- all other files are skipped
497
- else {
498
- return 0;
499
- }
500
- }
501
-
502
- // **************************************************************
503
- function ngg_import_zipfile($defaultpath) {
504
-
505
- $temp_zipfile = $_FILES['zipfile']['tmp_name'];
506
- $filename = $_FILES['zipfile']['name'];
507
-
508
- // check if file is a zip file
509
- if (!eregi('zip', $_FILES['zipfile']['type']))
510
- // on whatever reason MAC shows "application/download"
511
- if (!eregi('download', $_FILES['zipfile']['type'])) {
512
- @unlink($temp_zipfile); // del temp file
513
- nggallery::show_error(__('Uploaded file was no or a faulty zip file ! The server recognize : ','nggallery').$_FILES['zipfile']['type']);
514
- return;
515
- }
516
-
517
- // get foldername if selected
518
- $foldername = $_POST['zipgalselect'];
519
- if ($foldername == "0") {
520
- //cleanup and take the zipfile name as folder name
521
- $foldername = sanitize_title(strtok ($filename,'.'));
522
- //$foldername = preg_replace ("/(\s+)/", '-', strtolower(strtok ($filename,'.')));
523
- }
524
-
525
- // set complete folder path
526
- $newfolder = WINABSPATH.$defaultpath.$foldername;
527
-
528
- if (!is_dir($newfolder)) {
529
- // create new directories
530
- if (!@mkdir ($newfolder, NGGFOLDER_PERMISSION)) return ('<font color="red">'.__('Unable to create directory ', 'nggallery').$newfolder.'!</font>');
531
- if (!@chmod ($newfolder, NGGFOLDER_PERMISSION)) return ('<font color="red">'.__('Unable to set directory permissions ', 'nggallery').$newfolder.'!</font>');
532
- if (!@mkdir ($newfolder.'/thumbs', NGGFOLDER_PERMISSION)) return ('<font color="red">'.__('Unable to create directory ', 'nggallery').$newfolder.'/thumbs !</font>');
533
- if (!@chmod ($newfolder.'/thumbs', NGGFOLDER_PERMISSION)) return ('<font color="red">'.__('Unable to set directory permissions ', 'nggallery').$newfolder.'/thumbs !</font>');
534
- }
535
-
536
- // unzip and del temp file
537
- $result = ngg_unzip($newfolder, $temp_zipfile);
538
- @unlink($temp_zipfile) or die ('<div class="updated"><p><strong>'.__('Unable to unlink zip file ', 'nggallery').$temp_zipfile.'!</strong></p></div>');
539
-
540
- if ($result) {
541
- $messagetext = __('Zip-File successfully unpacked','nggallery').'<br />';
542
-
543
- // parse now the folder and add to database
544
- $messagetext .= ngg_import_gallery($defaultpath.$foldername);
545
-
546
- nggallery::show_message($messagetext);
547
- }
548
-
549
- return;
550
- }
551
-
552
- // **************************************************************
553
- function ngg_upload_images($defaultpath) {
554
- // upload of pictures
555
-
556
- global $wpdb;
557
-
558
- // Images must be an array
559
- $imageslist = array();
560
- $i = 1;
561
-
562
- foreach ($_FILES as $key => $value) {
563
-
564
- // look only for uploded files
565
- if ($_FILES[$key]['error'] == 0) {
566
- $temp_file = $_FILES[$key]['tmp_name'];
567
- $filepart = pathinfo ( strtolower($_FILES[$key]['name']) );
568
- // required until PHP 5.2.0
569
- $filepart['filename'] = substr($filepart["basename"],0 ,strlen($filepart["basename"]) - (strlen($filepart["extension"]) + 1) );
570
- $filename = sanitize_title($filepart['filename']).".".$filepart['extension'];
571
- // check if this filename already exist
572
- if (in_array($filename,$imageslist))
573
- $filename = sanitize_title($filepart['filename']) . "_" . $i++ . "." .$filepart['extension'];
574
-
575
- $dest_gallery = $_POST['galleryselect'];
576
- if ($dest_gallery == 0) {
577
- @unlink($temp_file) or die ('<div class="updated"><p><strong>'.__('Unable to unlink file ', 'nggallery').$temp_zipfile.'!</strong></p></div>');
578
- nggallery::show_error(__('No gallery selected !','nggallery'));
579
- return;
580
- }
581
-
582
- // get the path to the gallery
583
- $gallerypath = $wpdb->get_var("SELECT path FROM $wpdb->nggallery WHERE gid = '$dest_gallery' ");
584
- if (!$gallerypath){
585
- @unlink($temp_file) or die ('<div class="updated"><p><strong>'.__('Unable to unlink file ', 'nggallery').$temp_zipfile.'!</strong></p></div>');
586
- nggallery::show_error(__('Failure in database, no gallery path set !','nggallery'));
587
- return;
588
- }
589
-
590
- // check for allowed extension
591
- $ext = array("jpeg", "jpg", "png", "gif");
592
- if (!in_array($filepart['extension'],$ext)){
593
- nggallery::show_error('<strong>'.$_FILES[$key]['name'].' </strong>'.__('is no valid image file!','nggallery'));
594
- continue;
595
- }
596
-
597
- $dest_file = WINABSPATH.$gallerypath."/".$filename;
598
-
599
- // save temp file to gallery
600
- if (!@move_uploaded_file($_FILES[$key]['tmp_name'], $dest_file)){
601
- nggallery::show_error(__('Error, the file could not moved to : ','nggallery').$dest_file);
602
- continue;
603
- }
604
- if (!@chmod ($dest_file, NGGFILE_PERMISSION)) {
605
- nggallery::show_error(__('Error, the file permissions could not set','nggallery'));
606
- continue;
607
- }
608
-
609
- // add to imagelist
610
- $imageslist[] = $filename;
611
-
612
- }
613
- }
614
-
615
- //create thumbnails
616
- ngg_generatethumbnail(WINABSPATH.$gallerypath,$imageslist);
617
-
618
- // add images to database
619
- $count_pic = 0;
620
- if (is_array($imageslist)) {
621
- foreach($imageslist as $picture) {
622
- $result = $wpdb->query("INSERT INTO $wpdb->nggpictures (galleryid, filename, alttext, exclude) VALUES ('$dest_gallery', '$picture', '$picture', 0) ");
623
- if ($result) $count_pic++;
624
- }
625
- }
626
-
627
- nggallery::show_message($count_pic.__(' Image(s) successfully added','nggallery'));
628
- return;
629
-
630
- } // end function
631
 
632
  ?>
1
  <?php
2
  if(preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die('You are not allowed to call this page directly.'); }
 
 
 
 
3
 
4
+ // sometimes a error feedback is better than a white screen
5
+ ini_set('error_reporting', E_ALL ^ E_NOTICE);
6
+
7
  function nggallery_admin_add_gallery() {
8
 
9
  global $wpdb;
10
  $ngg_options = get_option('ngg_options');
11
 
12
  // same as $_SERVER['REQUEST_URI'], but should work under IIS 6.0
13
+ $filepath = get_option('siteurl') . '/wp-admin/admin.php?page='.$_GET['page'];
14
+
15
+ // link for the flash file
16
+ $swf_upload_link = NGGALLERY_URLPATH . 'admin/upload.php';
17
+ $swf_upload_link = wp_nonce_url($swf_upload_link, 'ngg_swfupload');
18
+ //flash doesn't seem to like encoded ampersands, so convert them back here
19
+ $swf_upload_link = str_replace('&#038;', '&', $swf_upload_link);
20
 
21
  $defaultpath = $ngg_options['gallerypath'];
22
+
23
  if ($_POST['addgallery']){
24
  check_admin_referer('ngg_addgallery');
25
  $newgallery = attribute_escape($_POST['galleryname']);
26
  if (!empty($newgallery))
27
+ nggAdmin::create_gallery($newgallery, $defaultpath);
28
  }
29
 
30
  if ($_POST['zipupload']){
31
  check_admin_referer('ngg_addgallery');
32
  if ($_FILES['zipfile']['error'] == 0)
33
+ $messagetext = nggAdmin::import_zipfile($defaultpath);
34
  else
35
  nggallery::show_error(__('Upload failed!','nggallery'));
36
  }
39
  check_admin_referer('ngg_addgallery');
40
  $galleryfolder = $_POST['galleryfolder'];
41
  if ((!empty($galleryfolder)) AND ($defaultpath != $galleryfolder))
42
+ $messagetext = nggAdmin::import_gallery($galleryfolder);
43
  }
44
 
45
  if ($_POST['uploadimage']){
46
  check_admin_referer('ngg_addgallery');
47
  if ($_FILES['MF__F_0_0']['error'] == 0) {
48
+ $messagetext = nggAdmin::upload_images();
49
  }
50
  else
51
  nggallery::show_error(__('Upload failed!','nggallery'));
52
  }
53
+
54
+ if (isset($_POST['swf_callback'])){
55
+ if ($_POST['galleryselect'] == "0" )
56
+ nggallery::show_error(__('No gallery selected !','nggallery'));
57
+ else {
58
+ // get the path to the gallery
59
+ $galleryID = (int) $_POST['galleryselect'];
60
+ $gallerypath = $wpdb->get_var("SELECT path FROM $wpdb->nggallery WHERE gid = '$galleryID' ");
61
+ $messagetext = nggAdmin::import_gallery($gallerypath);
62
+ }
63
+ }
64
+
65
+ //get maximum allowable size from php.ini
66
+ //thx to Whoismanu PhotoQ / M.Flury
67
+ $max_upl_size = strtolower( ini_get( 'upload_max_filesize' ) );
68
+ $max_upl_kbytes = 0;
69
+ if (strpos($max_upl_size, 'k') !== false)
70
+ $max_upl_kbytes = $max_upl_size;
71
+ if (strpos($max_upl_size, 'm') !== false)
72
+ $max_upl_kbytes = $max_upl_size * 1024;
73
+ if (strpos($max_upl_size, 'g') !== false)
74
+ $max_upl_kbytes = $max_upl_size * 1024 * 1024;
75
 
76
  // message windows
77
  if(!empty($messagetext)) { echo '<!-- Last Action --><div id="message" class="updated fade"><p>'.$messagetext.'</p></div>'; }
 
78
  ?>
79
 
80
+ <link rel="stylesheet" href="<?php echo NGGALLERY_URLPATH ?>admin/css/nggadmin.css" type="text/css" media="print, projection, screen"/>
81
+ <link rel="stylesheet" href="<?php echo NGGALLERY_URLPATH ?>admin/css/jquery.tabs.css" type="text/css" media="print, projection, screen"/>
82
+
83
+ <!-- Additional IE/Win specific style sheet (Conditional Comments) -->
84
  <!--[if lte IE 7]>
85
+ <link rel="stylesheet" href="<?php echo NGGALLERY_URLPATH ?>admin/css/jquery.tabs-ie.css" type="text/css" media="projection, screen"/>
86
  <![endif]-->
87
+
88
+ <?php if($ngg_options['swfUpload']) { ?>
89
+
90
+ <!-- SWFUpload script -->
91
  <script type="text/javascript">
92
+ var ngg_swf_upload;
93
+
94
+ window.onload = function () {
95
+ ngg_swf_upload = new SWFUpload({
96
+ // Backend settings
97
+ upload_url : "<?php echo $swf_upload_link; ?>",
98
+ flash_url : "<?php echo NGGALLERY_URLPATH; ?>admin/js/swfupload_f9.swf",
99
+
100
+ // File Upload Settings
101
+ file_size_limit : <?php echo $max_upl_kbytes;?>, // 200 kb
102
+ file_types : "*.jpg;*.gif;*.png",
103
+ file_types_description : "<?php _e('Image Files', 'nggallery') ;?>",
104
+
105
+ // Queue handler
106
+ file_queued_handler : fileQueued,
107
+
108
+ // Upload handler
109
+ upload_start_handler : uploadStart,
110
+ upload_progress_handler : uploadProgress,
111
+ upload_error_handler : uploadError,
112
+ upload_success_handler : uploadSuccess,
113
+ upload_complete_handler : uploadComplete,
114
+
115
+ post_params : {
116
+ galleryselect : "0"
117
+ },
118
+
119
+ // i18names
120
+ custom_settings : {
121
+ remove : "<?php _e('remove', 'nggallery') ;?>",
122
+ browse : "<?php _e('Browse...', 'nggallery') ;?>",
123
+ upload : "<?php _e('Upload images', 'nggallery') ;?>"
124
+ },
125
+
126
+ // Debug settings
127
+ debug: false
128
+
129
+ });
130
+
131
+ // on load change the upload to swfupload
132
+ initSWFUpload();
133
+
134
+ };
135
+ </script>
136
+
137
+ <div class="wrap" id="progressbar-wrap">
138
+ <div class="progressborder">
139
+ <div class="progressbar" id="progressbar">
140
+ <span>0%</span>
141
+ </div>
142
+ </div>
143
+ </div>
144
+
145
+ <?php } else { ?>
146
+ <!-- MultiFile script -->
147
+ <script type="text/javascript">
148
  jQuery(function(){
149
  jQuery('#imagefiles').MultiFile({
150
  STRING: {
152
  }
153
  });
154
  });
 
155
  </script>
156
+ <?php } ?>
157
+ <!-- jQuery Tabs script -->
158
+ <script type="text/javascript">
159
+ jQuery(function() {
160
+ jQuery('#slider').tabs({ fxFade: true, fxSpeed: 'fast' });
161
+ });
162
+ </script>
163
+
164
  <div id="slider" class="wrap">
165
 
166
  <ul id="tabs">
167
  <li><a href="#addgallery"><?php _e('Add new gallery', 'nggallery') ;?></a></li>
168
+ <?php if ( wpmu_enable_function('wpmuZipUpload') ) { ?>
169
  <li><a href="#zipupload"><?php _e('Upload a Zip-File', 'nggallery') ;?></a></li>
170
+ <?php }
171
+ if (!IS_WPMU) {?>
172
  <li><a href="#importfolder"><?php _e('Import image folder', 'nggallery') ;?></a></li>
173
+ <?php } ?>
174
  <li><a href="#uploadimage"><?php _e('Upload Images', 'nggallery') ;?></a></li>
175
  </ul>
176
 
177
  <!-- create gallery -->
178
  <div id="addgallery">
179
  <h2><?php _e('Add new gallery', 'nggallery') ;?></h2>
180
+ <form name="addgallery" id="addgallery_form" method="POST" action="<?php echo $filepath; ?>" accept-charset="utf-8" >
181
  <?php wp_nonce_field('ngg_addgallery') ?>
182
  <fieldset class="options">
183
  <table class="optiontable">
184
  <tr valign="top">
185
  <th scope="row"><?php _e('New Gallery', 'nggallery') ;?>:</th>
186
  <td><input type="text" size="35" name="galleryname" value="" /><br />
187
+ <?php if(!IS_WPMU) { ?>
188
  <?php _e('Create a new , empty gallery below the folder', 'nggallery') ;?> <strong><?php echo $defaultpath ?></strong><br />
189
+ <?php } ?>
190
  <i>( <?php _e('Allowed characters for file and folder names are', 'nggallery') ;?>: a-z, A-Z, 0-9, -, _ )</i></td>
191
  </tr>
192
  </table>
194
  </fieldset>
195
  </form>
196
  </div>
197
+ <?php if ( wpmu_enable_function('wpmuZipUpload')) { ?>
198
  <!-- zip-file operation -->
199
  <div id="zipupload">
200
  <h2><?php _e('Upload a Zip-File', 'nggallery') ;?></h2>
201
+ <form name="zipupload" id="zipupload_form" method="POST" enctype="multipart/form-data" action="<?php echo $filepath.'#zipupload'; ?>" accept-charset="utf-8" >
202
  <?php wp_nonce_field('ngg_addgallery') ?>
203
  <fieldset class="options">
204
  <table class="optiontable">
220
  }
221
  ?>
222
  </select>
223
+ <br /><?php echo _e('Note : The upload limit on your server is ','nggallery') . "<strong>" . ini_get('upload_max_filesize') . "Byte</strong>\n"; ?>
224
+ <br /><?php if ( (IS_WPMU) && wpmu_enable_function('wpmuQuotaCheck') ) display_space_usage(); ?></td>
225
  </tr>
226
+ <tr>
227
+ <th><?php _e('Add Metadata :', 'nggallery') ;?></th>
228
+ <td><input type="checkbox" name="addmetadata" value="1" />
229
+ <?php _e('Import EXIF, IPTC or XMP data (if available)', 'nggallery') ;?></td>
230
+ </tr>
231
  </table>
232
  <div class="submit"> <input type="submit" name= "zipupload" value="<?php _e('Start upload', 'nggallery') ;?>"/></div>
233
  </fieldset>
234
  </form>
235
  </div>
236
+ <?php }
237
+ if (!IS_WPMU) {?>
238
  <!-- import folder -->
239
  <div id="importfolder">
240
  <h2><?php _e('Import image folder', 'nggallery') ;?></h2>
241
+ <form name="importfolder" id="importfolder_form" method="POST" action="<?php echo $filepath.'#importfolder'; ?>" accept-charset="utf-8" >
242
  <?php wp_nonce_field('ngg_addgallery') ?>
243
  <fieldset class="options">
244
  <table class="optiontable">
246
  <th scope="row"><?php _e('Import from Server path:', 'nggallery') ;?><br /><code><?php echo WINABSPATH; ?></code></th>
247
  <td><br /><input type="text" size="35" name="galleryfolder" value="<?php echo$defaultpath; ?>" /><br />
248
  <?php _e('Import a folder with images. Please note :', 'nggallery') ;?><br />
249
+ <?php _e('For safe-mode = ON you need to add the subfolder thumbs manually', 'nggallery') ;?></td>
250
+ </tr>
251
+ <tr>
252
+ <th><?php _e('Add Metadata :', 'nggallery') ;?></th>
253
+ <td><input type="checkbox" name="addmetadata" value="1" />
254
+ <?php _e('Import EXIF, IPTC or XMP data (if available)', 'nggallery') ;?></td>
255
  </tr>
256
  </table>
257
  <div class="submit"> <input type="submit" name= "importfolder" value="<?php _e('Import folder', 'nggallery') ;?>"/></div>
258
  </fieldset>
259
  </form>
260
+ </div>
261
+ <?php } ?>
262
  <!-- upload images -->
263
  <div id="uploadimage">
264
  <h2><?php _e('Upload Images', 'nggallery') ;?></h2>
265
+ <form name="uploadimage" id="uploadimage_form" method="POST" enctype="multipart/form-data" action="<?php echo $filepath.'#uploadimage'; ?>" accept-charset="utf-8" >
266
  <?php wp_nonce_field('ngg_addgallery') ?>
267
  <fieldset class="options">
268
  <table class="optiontable">
269
  <tr valign="top">
270
+ <th scope="row"><?php _e('Upload image', 'nggallery') ;?></th>
271
+ <td><input type="file" name="imagefiles" id="imagefiles" size="35" class="imagefiles"/></td>
272
  </tr>
273
  <tr valign="top">
274
  <th scope="row"><?php _e('in to', 'nggallery') ;?></th>
275
+ <td><select name="galleryselect" id="galleryselect">
276
  <option value="0" ><?php _e('Choose gallery', 'nggallery') ?></option>
277
  <?php
278
  $gallerylist = $wpdb->get_results("SELECT * FROM $wpdb->nggallery ORDER BY gid ASC");
283
  }
284
  ?>
285
  </select>
286
+ <br /><?php echo _e('Note : The upload limit on your server is ','nggallery') . "<strong>" . ini_get('upload_max_filesize') . "Byte</strong>\n"; ?>
287
+ <br /><?php if ((IS_WPMU) && wpmu_enable_function('wpmuQuotaCheck')) display_space_usage(); ?></td>
288
  </tr>
289
+ <tr>
290
+ <th><?php _e('Add Metadata :', 'nggallery') ;?></th>
291
+ <td><input type="checkbox" name="addmetadata" value="1" />
292
+ <?php _e('Import EXIF, IPTC or XMP data (if available)', 'nggallery') ;?></td>
293
+ </tr>
294
  </table>
295
+ <div class="submit">
296
+ <input type="submit" name="uploadimage" id="uploadimage_btn" value="<?php _e('Upload images', 'nggallery') ;?>" />
297
+ </div>
298
  </fieldset>
299
  </form>
300
  </div>
303
  <?php
304
  }
305
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
306
 
307
  ?>
admin/admin.php CHANGED
@@ -11,12 +11,17 @@ function ngg_nocache() {
11
  echo "\n".'<meta http-equiv="pragma" content="no-cache" />'."\n";
12
  }
13
 
 
 
14
  // load script files depend on page
15
  add_action('init', 'ngg_add_admin_js',1);
16
  function ngg_add_admin_js() {
 
 
17
  if ($wp_version < "2.3") {
18
- if ($wp_version > "2.1.3") wp_deregister_script('jquery');
19
- wp_register_script('jquery', NGGALLERY_URLPATH .'admin/js/jquery.js', FALSE, '1.1.3.1');
 
20
  }
21
  switch ($_GET['page']) {
22
  case "nggallery-manage-gallery" :
@@ -32,6 +37,8 @@ function ngg_add_admin_js() {
32
  case "nggallery-add-gallery" :
33
  wp_enqueue_script('tabs', NGGALLERY_URLPATH .'admin/js/jquery.tabs.pack.js', array('jquery'), '2.7.4');
34
  wp_enqueue_script('mutlifile', NGGALLERY_URLPATH .'admin/js/jquery.MultiFile.js', array('jquery'), '1.1.1');
 
 
35
  break;
36
  }
37
  // required for upload tab
@@ -49,12 +56,17 @@ add_action('admin_menu', 'add_nextgen_gallery_menu');
49
  add_submenu_page( NGGFOLDER , __('Manage Gallery', 'nggallery'), __('Manage Gallery', 'nggallery'), 'NextGEN Manage gallery', 'nggallery-manage-gallery', 'show_menu');
50
  add_submenu_page( NGGFOLDER , __('Album', 'nggallery'), __('Album', 'nggallery'), 'NextGEN Edit album', 'nggallery-manage-album', 'show_menu');
51
  add_submenu_page( NGGFOLDER , __('Options', 'nggallery'), __('Options', 'nggallery'), 'NextGEN Change options', 'nggallery-options', 'show_menu');
52
- add_submenu_page( NGGFOLDER , __('Style', 'nggallery'), __('Style', 'nggallery'), 'NextGEN Change style', 'nggallery-style', 'show_menu');
 
53
  add_submenu_page( NGGFOLDER , __('Setup Gallery', 'nggallery'), __('Setup', 'nggallery'), 'activate_plugins', 'nggallery-setup', 'show_menu');
54
- add_submenu_page( NGGFOLDER , __('Roles', 'nggallery'), __('Roles', 'nggallery'), 'activate_plugins', 'nggallery-roles', 'show_menu');
 
55
  if (check_for_myGallery())
56
  add_submenu_page( NGGFOLDER , __('Import', 'nggallery'), __('Import', 'nggallery'), 'activate_plugins', 'nggallery-import', 'show_menu');
57
  add_submenu_page( NGGFOLDER , __('About this Gallery', 'nggallery'), __('About', 'nggallery'), 'NextGEN Gallery overview', 'nggallery-about', 'show_menu');
 
 
 
58
  }
59
 
60
  /************************************************************************/
@@ -65,11 +77,12 @@ add_action('admin_menu', 'add_nextgen_gallery_menu');
65
  function show_menu() {
66
  switch ($_GET["page"]){
67
  case "nggallery-add-gallery" :
 
68
  include_once (dirname (__FILE__). '/addgallery.php'); // nggallery_admin_add_gallery
69
  nggallery_admin_add_gallery();
70
  break;
71
  case "nggallery-manage-gallery" :
72
- include_once (dirname (__FILE__). '/addgallery.php'); // nggallery_admin_add_gallery
73
  include_once (dirname (__FILE__). '/manage.php'); // nggallery_admin_manage_gallery
74
  nggallery_admin_manage_gallery();
75
  break;
@@ -101,6 +114,11 @@ add_action('admin_menu', 'add_nextgen_gallery_menu');
101
  include_once (dirname (__FILE__). '/about.php'); // nggallery_admin_about
102
  nggallery_admin_about();
103
  break;
 
 
 
 
 
104
  case "nggallery" :
105
  default :
106
  include_once (dirname (__FILE__). '/overview.php'); // nggallery_admin_overview
@@ -136,5 +154,22 @@ add_action('admin_menu', 'add_nextgen_gallery_menu');
136
  return true;
137
 
138
  }
139
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
140
  ?>
11
  echo "\n".'<meta http-equiv="pragma" content="no-cache" />'."\n";
12
  }
13
 
14
+ include_once (dirname (__FILE__)."/uploadtab.php");
15
+
16
  // load script files depend on page
17
  add_action('init', 'ngg_add_admin_js',1);
18
  function ngg_add_admin_js() {
19
+ global $wp_version;
20
+
21
  if ($wp_version < "2.3") {
22
+ wp_deregister_script('jquery');
23
+ //TODO:jQuery 1.2.1 causes problems in IE7
24
+ wp_register_script('jquery', NGGALLERY_URLPATH .'admin/js/jquery.js', FALSE, '1.1.4');
25
  }
26
  switch ($_GET['page']) {
27
  case "nggallery-manage-gallery" :
37
  case "nggallery-add-gallery" :
38
  wp_enqueue_script('tabs', NGGALLERY_URLPATH .'admin/js/jquery.tabs.pack.js', array('jquery'), '2.7.4');
39
  wp_enqueue_script('mutlifile', NGGALLERY_URLPATH .'admin/js/jquery.MultiFile.js', array('jquery'), '1.1.1');
40
+ wp_enqueue_script('swfupload', NGGALLERY_URLPATH .'admin/js/swfupload.js', array('jquery'), '2.0.1');
41
+ wp_enqueue_script('swfupload-handler', NGGALLERY_URLPATH .'admin/js/swfupload.handler.js', array('swfupload'), '1.0.0');
42
  break;
43
  }
44
  // required for upload tab
56
  add_submenu_page( NGGFOLDER , __('Manage Gallery', 'nggallery'), __('Manage Gallery', 'nggallery'), 'NextGEN Manage gallery', 'nggallery-manage-gallery', 'show_menu');
57
  add_submenu_page( NGGFOLDER , __('Album', 'nggallery'), __('Album', 'nggallery'), 'NextGEN Edit album', 'nggallery-manage-album', 'show_menu');
58
  add_submenu_page( NGGFOLDER , __('Options', 'nggallery'), __('Options', 'nggallery'), 'NextGEN Change options', 'nggallery-options', 'show_menu');
59
+ if (wpmu_enable_function('wpmuStyle'))
60
+ add_submenu_page( NGGFOLDER , __('Style', 'nggallery'), __('Style', 'nggallery'), 'NextGEN Change style', 'nggallery-style', 'show_menu');
61
  add_submenu_page( NGGFOLDER , __('Setup Gallery', 'nggallery'), __('Setup', 'nggallery'), 'activate_plugins', 'nggallery-setup', 'show_menu');
62
+ if (wpmu_enable_function('wpmuRoles'))
63
+ add_submenu_page( NGGFOLDER , __('Roles', 'nggallery'), __('Roles', 'nggallery'), 'activate_plugins', 'nggallery-roles', 'show_menu');
64
  if (check_for_myGallery())
65
  add_submenu_page( NGGFOLDER , __('Import', 'nggallery'), __('Import', 'nggallery'), 'activate_plugins', 'nggallery-import', 'show_menu');
66
  add_submenu_page( NGGFOLDER , __('About this Gallery', 'nggallery'), __('About', 'nggallery'), 'NextGEN Gallery overview', 'nggallery-about', 'show_menu');
67
+ if (wpmu_site_admin())
68
+ add_submenu_page( 'wpmu-admin.php' , __('NextGEN Gallery', 'nggallery'), __('NextGEN Gallery', 'nggallery'), 'activate_plugins', 'nggallery-wpmu', 'show_menu');
69
+
70
  }
71
 
72
  /************************************************************************/
77
  function show_menu() {
78
  switch ($_GET["page"]){
79
  case "nggallery-add-gallery" :
80
+ include_once (dirname (__FILE__). '/functions.php'); // admin functions
81
  include_once (dirname (__FILE__). '/addgallery.php'); // nggallery_admin_add_gallery
82
  nggallery_admin_add_gallery();
83
  break;
84
  case "nggallery-manage-gallery" :
85
+ include_once (dirname (__FILE__). '/functions.php'); // admin functions
86
  include_once (dirname (__FILE__). '/manage.php'); // nggallery_admin_manage_gallery
87
  nggallery_admin_manage_gallery();
88
  break;
114
  include_once (dirname (__FILE__). '/about.php'); // nggallery_admin_about
115
  nggallery_admin_about();
116
  break;
117
+ case "nggallery-wpmu" :
118
+ include_once (dirname (__FILE__). '/style.php');
119
+ include_once (dirname (__FILE__). '/wpmu.php'); // nggallery_wpmu_admin
120
+ nggallery_wpmu_setup();
121
+ break;
122
  case "nggallery" :
123
  default :
124
  include_once (dirname (__FILE__). '/overview.php'); // nggallery_admin_overview
154
  return true;
155
 
156
  }
157
+ /**************************************************************************/
158
+ function wpmu_site_admin() {
159
+ // Check for site admin
160
+ if (function_exists(is_site_admin))
161
+ if (is_site_admin())
162
+ return true;
163
+
164
+ return false;
165
+ }
166
+
167
+ function wpmu_enable_function($value) {
168
+ if (IS_WPMU) {
169
+ $ngg_options = get_site_option('ngg_options');
170
+ return $ngg_options[$value];
171
+ }
172
+ // if this is not WPMU, enable it !
173
+ return true;
174
+ }
175
  ?>
admin/album.php CHANGED
@@ -48,17 +48,14 @@ function nggallery_admin_manage_album() {
48
  if(!empty($messagetext)) { echo '<!-- Last Action --><div id="message" class="updated fade"><p>'.$messagetext.'</p></div>'; }
49
  ?>
50
  <style type="text/css" media="all">@import "<?php echo NGGALLERY_URLPATH ?>css/nggallery.css";</style>
51
- <style type="text/css" media="all">@import "<?php echo NGGALLERY_URLPATH ?>admin/js/portlets.css";</style>
52
  <script type="text/javascript">
53
 
54
 
55
  jQuery(document).ready(
56
  function()
57
  {
58
- //updating the height of the white backround box, it does not work without this stupid lines
59
- var hei = jQuery('.wrap').height();
60
- jQuery('.wrap').height(hei);
61
-
62
  jQuery('div.groupWrapper').Sortable(
63
  {
64
  accept: 'groupItem',
@@ -66,10 +63,18 @@ jQuery(document).ready(
66
  opacity: 0.7,
67
  tolerance: 'intersect'
68
  }
69
- )
70
- jQuery('a.min').bind('click', toggleContent);
71
- jQuery('.textarea1').Autoexpand([230,400]);
72
 
 
 
 
 
 
 
 
 
 
 
73
  // Maximize All Portlets (whole site, no differentiation)
74
  jQuery('a#all_max').click(function()
75
  {
@@ -90,7 +95,8 @@ jQuery(document).ready(
90
  {
91
  jQuery('a.min').html('[+]');
92
  jQuery('div.itemContent:visible').hide();
93
- }
 
94
  }
95
  );
96
 
@@ -113,8 +119,8 @@ function ngg_serialize(s)
113
  jQuery('input[@name=sortorder]').val(serial.hash);
114
  }
115
  </script>
116
- <div class="wrap" id="wrap" >
117
- <h3><?php _e('Manage Albums', 'nggallery') ?></h3>
118
  <form id="selectalbum" method="POST" onsubmit="ngg_serialize('galleryContainer')" accept-charset="utf-8">
119
  <?php wp_nonce_field('ngg_album') ?>
120
  <input name="sortorder" type="hidden" />
@@ -150,7 +156,8 @@ function ngg_serialize(s)
150
  </form>
151
  <p>
152
  <div style="float:right;">
153
- <a href="#" id="all_max"><?php _e('[Maximize]', 'nggallery') ?></a>
 
154
  | <a href="#" id="all_min"><?php _e('[Minimize]', 'nggallery') ?></a>
155
  </div>
156
  <?php _e('After you create and select a album, you can drag and drop a gallery into your album below','nggallery'); ?>
@@ -164,23 +171,29 @@ function ngg_serialize(s)
164
  <?php
165
  $gallerylist = $wpdb->get_results("SELECT gid FROM $wpdb->nggallery");
166
 
 
 
 
167
  if(is_array($gallerylist)) {
168
  if ( ($_POST['act_album'] == 0) or (!isset($_POST['act_album'])) ) {
169
  foreach($gallerylist as $gallery) {
170
- getgallerycontainer($gallery->gid);
 
 
 
171
  }
172
  } else {
173
  $act_album = $_POST['act_album'];
174
  $sortorder = $wpdb->get_var("SELECT sortorder FROM $wpdb->nggalbum WHERE id = '$act_album'");
175
- if (!empty($sortorder)) {
176
- $sort_array = unserialize($sortorder);
177
- foreach($gallerylist as $gallery) {
178
- if (!in_array($gallery->gid, $sort_array))
179
- getgallerycontainer($gallery->gid);
180
- }
181
- } else {
182
- foreach($gallerylist as $gallery) {
183
- getgallerycontainer($gallery->gid);
184
  }
185
  }
186
  }
@@ -198,7 +211,7 @@ function ngg_serialize(s)
198
  $sort_array = unserialize($album->sortorder);
199
  if (is_array($sort_array)) {
200
  foreach($sort_array as $galleryid) {
201
- getgallerycontainer($galleryid);
202
  }
203
  }
204
  }
@@ -215,7 +228,7 @@ function ngg_serialize(s)
215
 
216
  <?php
217
  }
218
- function getgallerycontainer($galleryid = 0) {
219
  global $wpdb;
220
 
221
  $gallery = $wpdb->get_row("SELECT * FROM $wpdb->nggallery WHERE gid = '$galleryid'");
@@ -231,7 +244,9 @@ function getgallerycontainer($galleryid = 0) {
231
  $filename = $wpdb->get_var("SELECT filename FROM $wpdb->nggpictures WHERE pid = '$gallery->previewpic'");
232
  if ($filename) $img = '<img src="'.$act_thumbnail_url.$act_thumb_prefix.$filename.'" />';
233
  else $img = '';
234
- echo '<div id="gid-'.$gallery->gid.'" class="groupItem">
 
 
235
  <div class="innerhandle">
236
  <div class="item_top">
237
  <a href="#" class="min" title="close">[-]</a>
@@ -248,4 +263,26 @@ function getgallerycontainer($galleryid = 0) {
248
  </div>';
249
  }
250
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
251
  ?>
48
  if(!empty($messagetext)) { echo '<!-- Last Action --><div id="message" class="updated fade"><p>'.$messagetext.'</p></div>'; }
49
  ?>
50
  <style type="text/css" media="all">@import "<?php echo NGGALLERY_URLPATH ?>css/nggallery.css";</style>
51
+ <style type="text/css" media="all">@import "<?php echo NGGALLERY_URLPATH ?>admin/css/nggadmin.css";</style>
52
  <script type="text/javascript">
53
 
54
 
55
  jQuery(document).ready(
56
  function()
57
  {
58
+
 
 
 
59
  jQuery('div.groupWrapper').Sortable(
60
  {
61
  accept: 'groupItem',
63
  opacity: 0.7,
64
  tolerance: 'intersect'
65
  }
66
+ );
 
 
67
 
68
+ jQuery('a.min').bind('click', toggleContent);
69
+
70
+ // Hide used galleries
71
+ jQuery('a#toggle_used').click(function()
72
+ {
73
+ jQuery('#selectContainer div.inUse').toggle();
74
+ return false;
75
+ }
76
+ );
77
+
78
  // Maximize All Portlets (whole site, no differentiation)
79
  jQuery('a#all_max').click(function()
80
  {
95
  {
96
  jQuery('a.min').html('[+]');
97
  jQuery('div.itemContent:visible').hide();
98
+ jQuery('#selectContainer div.inUse').toggle();
99
+ };
100
  }
101
  );
102
 
119
  jQuery('input[@name=sortorder]').val(serial.hash);
120
  }
121
  </script>
122
+ <div class="wrap album" id="wrap" >
123
+ <h2><?php _e('Manage Albums', 'nggallery') ?></h2>
124
  <form id="selectalbum" method="POST" onsubmit="ngg_serialize('galleryContainer')" accept-charset="utf-8">
125
  <?php wp_nonce_field('ngg_album') ?>
126
  <input name="sortorder" type="hidden" />
156
  </form>
157
  <p>
158
  <div style="float:right;">
159
+ <a href="#" id="toggle_used"><?php _e('[Show all]', 'nggallery') ?></a>
160
+ | <a href="#" id="all_max"><?php _e('[Maximize]', 'nggallery') ?></a>
161
  | <a href="#" id="all_min"><?php _e('[Minimize]', 'nggallery') ?></a>
162
  </div>
163
  <?php _e('After you create and select a album, you can drag and drop a gallery into your album below','nggallery'); ?>
171
  <?php
172
  $gallerylist = $wpdb->get_results("SELECT gid FROM $wpdb->nggallery");
173
 
174
+ //TODO:Code MUST be optimized, how to flag a used galley better ?
175
+ $used_list = getallusedgalleries();
176
+
177
  if(is_array($gallerylist)) {
178
  if ( ($_POST['act_album'] == 0) or (!isset($_POST['act_album'])) ) {
179
  foreach($gallerylist as $gallery) {
180
+ if (in_array($gallery->gid,$used_list))
181
+ getgallerycontainer($gallery->gid,true);
182
+ else
183
+ getgallerycontainer($gallery->gid,false);
184
  }
185
  } else {
186
  $act_album = $_POST['act_album'];
187
  $sortorder = $wpdb->get_var("SELECT sortorder FROM $wpdb->nggalbum WHERE id = '$act_album'");
188
+ $sort_array = unserialize($sortorder);
189
+ // if something went wrong, initialize to empty array
190
+ if (!is_array($sort_array)) $sort_array = array();
191
+ foreach($gallerylist as $gallery) {
192
+ if (!in_array($gallery->gid, $sort_array)) {
193
+ if (in_array($gallery->gid,$used_list))
194
+ getgallerycontainer($gallery->gid,true);
195
+ else
196
+ getgallerycontainer($gallery->gid,false);
197
  }
198
  }
199
  }
211
  $sort_array = unserialize($album->sortorder);
212
  if (is_array($sort_array)) {
213
  foreach($sort_array as $galleryid) {
214
+ getgallerycontainer($galleryid,false);
215
  }
216
  }
217
  }
228
 
229
  <?php
230
  }
231
+ function getgallerycontainer($galleryid = 0, $used = false) {
232
  global $wpdb;
233
 
234
  $gallery = $wpdb->get_row("SELECT * FROM $wpdb->nggallery WHERE gid = '$galleryid'");
244
  $filename = $wpdb->get_var("SELECT filename FROM $wpdb->nggpictures WHERE pid = '$gallery->previewpic'");
245
  if ($filename) $img = '<img src="'.$act_thumbnail_url.$act_thumb_prefix.$filename.'" />';
246
  else $img = '';
247
+ // add class if it's in use in other albums
248
+ $used = $used ? " inUse" : "";
249
+ echo '<div id="gid-'.$gallery->gid.'" class="groupItem'. $used .'">
250
  <div class="innerhandle">
251
  <div class="item_top">
252
  <a href="#" class="min" title="close">[-]</a>
263
  </div>';
264
  }
265
  }
266
+
267
+ //get all used galleries form all albums
268
+ function getallusedgalleries() {
269
+ global $wpdb;
270
+
271
+ $albumids = $wpdb->get_col("SELECT id FROM $wpdb->nggalbum");
272
+ $used = array();
273
+
274
+ if ($albumids) {
275
+ foreach($albumids as $albumid) {
276
+ $sortorder = $wpdb->get_var("SELECT sortorder FROM $wpdb->nggalbum WHERE id = '$albumid'");
277
+ if (!empty($sortorder)) {
278
+ $sort_array = unserialize($sortorder);
279
+ foreach($sort_array as $galleryid) {
280
+ if (!in_array($galleryid,$used))
281
+ $used[] = $galleryid;
282
+ }
283
+ }
284
+ }
285
+ }
286
+ return $used;
287
+ }
288
  ?>
admin/{js → css}/jquery.tabs-ie.css RENAMED
File without changes
admin/{js → css}/jquery.tabs.css RENAMED
File without changes
admin/{js/portlets.css → css/nggadmin.css} RENAMED
@@ -1,6 +1,35 @@
1
- html
2
- {
3
- height:100%;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4
  }
5
 
6
  .groupItem
@@ -60,6 +89,11 @@ html
60
  padding:0pt 3px 1px;
61
  }
62
 
 
 
 
 
 
63
  .sort_placeholder
64
  {
65
  border:1px dashed #bba !important;
@@ -86,4 +120,4 @@ html
86
  color:#333333;
87
  text-align:center;
88
  line-height:25px;
89
- }
1
+ /* SETTINGS FOR PROGRESS BAR */
2
+
3
+ div .progressborder {
4
+ border: 1px inset ;
5
+ display: block;
6
+ height: 20px;
7
+ background-color: rgb(160, 160, 160);
8
+ width: 100%;
9
+ margin-top:5px;
10
+ }
11
+
12
+ div .progressbar {
13
+ border: medium none ;
14
+ display: block;
15
+ height: 20px;
16
+ background-color: rgb(13, 50, 79);
17
+ width: 0%;
18
+ }
19
+
20
+ div .progressbar span {
21
+ display: inline;
22
+ position: relative;
23
+ color: white;
24
+ font-weight: bold;
25
+ padding-bottom: 2px;
26
+ padding-left: 5px;
27
+ }
28
+
29
+ /* SETTINGS FOR ALBUM PAGE */
30
+
31
+ .album {
32
+ overflow: hidden;
33
  }
34
 
35
  .groupItem
89
  padding:0pt 3px 1px;
90
  }
91
 
92
+ .inlinepicture img
93
+ {
94
+ max-height:75px;
95
+ }
96
+
97
  .sort_placeholder
98
  {
99
  border:1px dashed #bba !important;
120
  color:#333333;
121
  text-align:center;
122
  line-height:25px;
123
+ }
admin/functions.php ADDED
@@ -0,0 +1,918 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ if(preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die('You are not allowed to call this page directly.'); }
4
+
5
+ class nggAdmin{
6
+
7
+ // **************************************************************
8
+ function create_gallery($gallerytitle, $defaultpath) {
9
+ // create a new gallery & folder
10
+ global $wpdb;
11
+
12
+ $myabspath = str_replace("\\","/",ABSPATH); // required for windows
13
+
14
+ //cleanup pathname
15
+ $galleryname = apply_filters('ngg_gallery_name', $gallerytitle);
16
+ $nggpath = $defaultpath.$galleryname;
17
+ $nggRoot = $myabspath.$defaultpath;
18
+ $txt = "";
19
+
20
+ // No gallery name ?
21
+ if (empty($galleryname)) {
22
+ nggallery::show_error( __('No valid gallery name!', 'nggallery') );
23
+ return false;
24
+ }
25
+
26
+ // check for main folder
27
+ if ( !is_dir($nggRoot) ) {
28
+ if ( !wp_mkdir_p($nggRoot) ) {
29
+ $txt = __('Directory', 'nggallery').' <strong>'.$defaultpath.'</strong> '.__('didn\'t exist. Please create first the main gallery folder ', 'nggallery').'!<br />';
30
+ $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> ';
31
+ nggallery::show_error($txt);
32
+ return false;
33
+ }
34
+ }
35
+
36
+ // check for permission settings, Safe mode limitations are not taken into account.
37
+ // if ( substr(decoct(@fileperms($myabspath.$defaultpath)),1) != decoct(NGGFOLDER_PERMISSION) ) {
38
+ if ( !is_writeable($nggRoot ) ) {
39
+ $txt = __('Directory', 'nggallery').' <strong>'.$defaultpath.'</strong> '.__('is not writeable !', 'nggallery').'<br />';
40
+ $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> ';
41
+ nggallery::show_error($txt);
42
+ return false;
43
+ }
44
+
45
+ // avoid double creation
46
+ if ( is_dir($myabspath.$nggpath) ) {
47
+ nggallery::show_error(__('Directory ', 'nggallery').' <strong>'.$nggpath.'</strong> '.__('already exists!', 'nggallery'));
48
+ } else {
49
+ // create new directories
50
+ if ( !wp_mkdir_p ($myabspath.$nggpath) )
51
+ $txt = __('Unable to create directory ', 'nggallery').$nggpath.'!<br />';
52
+ if ( !is_writeable($nggRoot ) )
53
+ $txt .= __('Directory', 'nggallery').' <strong>'.$defaultpath.'</strong> '.__('is not writeable !', 'nggallery').'<br />';
54
+ if ( !wp_mkdir_p ( $myabspath.$nggpath.'/thumbs') )
55
+ $txt .= __('Unable to create directory ', 'nggallery').$nggpath.'/thumbs !<br />';
56
+
57
+ if (SAFE_MODE) {
58
+ $help = __('The server setting Safe-Mode is on !', 'nggallery');
59
+ $help .= '<br />'.__('If you have problems, please create directory', 'nggallery').' <strong>'.$nggpath.'</strong> ';
60
+ $help .= __('and the thumbnails directory', 'nggallery').' <strong>'.$nggpath.'/thumbs</strong> '.__('with permission 777 manually !', 'nggallery');
61
+ nggallery::show_message($help);
62
+ }
63
+
64
+ if ( !empty($txt) ) {
65
+ nggallery::show_error($txt);
66
+ return false;
67
+ }
68
+ }
69
+
70
+ $result=$wpdb->get_var("SELECT name FROM $wpdb->nggallery WHERE name = '$galleryname' ");
71
+ if ($result) {
72
+ nggallery::show_error(__('Gallery', 'nggallery').' <strong>'.$galleryname.'</strong> '.__('already exists', 'nggallery'));
73
+ return false;
74
+ } else {
75
+ $result = $wpdb->query("INSERT INTO $wpdb->nggallery (name, path, title) VALUES ('$galleryname', '$nggpath', '$gallerytitle') ");
76
+ if ($result) nggallery::show_message(__('Gallery', 'nggallery').' <strong>'.$wpdb->insert_id." : ".$galleryname.'</strong> '.__('successfully created!','nggallery')."<br />".__('You can show this gallery with the tag','nggallery').'<strong> [gallery='.$wpdb->insert_id.']</strong>'.$safemode);
77
+ return true;;
78
+ }
79
+ }
80
+
81
+ // **************************************************************
82
+ function import_gallery($galleryfolder) {
83
+ // ** $galleryfolder contains relative path
84
+
85
+ //TODO: Check permission of existing thumb folder & images
86
+
87
+ global $wpdb;
88
+
89
+ $created_msg = "";
90
+
91
+ // remove trailing slash at the end, if somebody use it
92
+ if (substr($galleryfolder, -1) == '/') $galleryfolder = substr($galleryfolder, 0, -1);
93
+ $gallerypath = WINABSPATH.$galleryfolder;
94
+
95
+ if (!is_dir($gallerypath)) {
96
+ nggallery::show_error(__('Directory', 'nggallery').' <strong>'.$gallerypath.'</strong> '.__('doesn&#96;t exist!', 'nggallery'));
97
+ return ;
98
+ }
99
+
100
+ // read list of images
101
+ $new_imageslist = nggAdmin::scandir($gallerypath);
102
+ if (empty($new_imageslist)) {
103
+ nggallery::show_message(__('Directory', 'nggallery').' <strong>'.$gallerypath.'</strong> '.__('contains no pictures', 'nggallery'));
104
+ return;
105
+ }
106
+
107
+ // check & create thumbnail folder
108
+ if ( !nggallery::get_thumbnail_folder($gallerypath) )
109
+ return;
110
+
111
+ // take folder name as gallery name
112
+ $galleryname = basename($galleryfolder);
113
+
114
+ // check for existing galleryfolder
115
+ $gallery_id = $wpdb->get_var("SELECT gid FROM $wpdb->nggallery WHERE path = '$galleryfolder' ");
116
+
117
+ if (!$gallery_id) {
118
+ $result = $wpdb->query("INSERT INTO $wpdb->nggallery (name, path) VALUES ('$galleryname', '$galleryfolder') ");
119
+ if (!$result) {
120
+ nggallery::show_error(__('Database error. Could not add gallery!','nggallery'));
121
+ return;
122
+ }
123
+ $created_msg =__('Gallery','nggallery').' <strong>'.$galleryname.'</strong> '.__('successfully created!','nggallery').'<br />';
124
+ $gallery_id = $wpdb->insert_id; // get index_id
125
+ }
126
+
127
+ // Look for existing image list
128
+ $old_imageslist = $wpdb->get_col("SELECT filename FROM $wpdb->nggpictures WHERE galleryid = '$gallery_id' ");
129
+ // if no images are there, create empty array
130
+ if ($old_imageslist == NULL) $old_imageslist = array();
131
+ // check difference
132
+ $new_images = array_diff($new_imageslist, $old_imageslist);
133
+ // now create thumbnails
134
+ nggAdmin::generateThumbnail($gallerypath,$new_images);
135
+
136
+ // add images to database
137
+ $count_pic = nggAdmin::add_Images($gallery_id, $gallerypath, $new_images);
138
+
139
+ nggallery::show_message($created_msg.$count_pic.__(' picture(s) successfully added','nggallery'));
140
+ return;
141
+
142
+ }
143
+ // **************************************************************
144
+ function scandir($dirname = ".") {
145
+ // thx to php.net :-)
146
+ $ext = array("jpeg", "jpg", "png", "gif");
147
+ $files = array();
148
+ if($handle = opendir($dirname)) {
149
+ while(false !== ($file = readdir($handle)))
150
+ for($i=0;$i<sizeof($ext);$i++)
151
+ if(stristr($file, ".".$ext[$i]))
152
+ $files[] = utf8_encode($file);
153
+ closedir($handle);
154
+ }
155
+ return($files);
156
+ }
157
+
158
+ // **************************************************************
159
+ function resizeImages($gallery_absfolder, $pictures) {
160
+ // ** $gallery_absfolder must contain abspath !!
161
+
162
+ if(! class_exists('ngg_Thumbnail'))
163
+ require_once(NGGALLERY_ABSPATH.'/lib/thumbnail.inc.php');
164
+
165
+ $ngg_options = get_option('ngg_options');
166
+
167
+ if (is_array($pictures)) {
168
+
169
+ $bar = new wpProgressBar(__('Running... Please wait','nggallery'));
170
+ $bar->setHeader(__('Resize images','nggallery'));
171
+ //total number of elements to process
172
+ $elements = count($pictures);
173
+ // wait a little bit after finished
174
+ if ($elements > 5) $bar->setSleepOnFinish(2);
175
+ //print the empty bar
176
+ $bar->initialize($elements);
177
+
178
+ foreach($pictures as $picture) {
179
+
180
+ if (!is_writable($gallery_absfolder."/".$picture)) {
181
+ $messagetext .= $gallery_absfolder."/".$picture."<br />";
182
+ $bar->increase();
183
+ continue;
184
+ }
185
+
186
+ $thumb = new ngg_Thumbnail($gallery_absfolder."/".$picture, TRUE);
187
+ // echo $thumb->errmsg;
188
+ // skip if file is not there
189
+ if (!$thumb->error) {
190
+ $thumb->resize($ngg_options['imgWidth'],$ngg_options['imgHeight'],$ngg_options['imgResampleMode']);
191
+ if ( $thumb->save($gallery_absfolder."/".$picture,$ngg_options['imgQuality']) )
192
+ $bar->addNote($picture. __(' : Image resized...','nggallery'));
193
+ else
194
+ $bar->addNote($picture . " : Error : <strong>".$thumb->errmsg."</strong>");
195
+ $bar->increase();
196
+ }
197
+ $thumb->destruct();
198
+ }
199
+ }
200
+
201
+ if(!empty($messagetext)) nggallery::show_error('<strong>'.__('Some pictures are not writeable :','nggallery').'</strong><br /><ul>'.$messagetext.'</ul>');
202
+ return;
203
+ }
204
+
205
+ // **************************************************************
206
+ function generateWatermark($gallery_absfolder, $pictures) {
207
+ // ** $gallery_absfolder must contain abspath !!
208
+
209
+ if(! class_exists('ngg_Thumbnail'))
210
+ require_once(NGGALLERY_ABSPATH.'/lib/thumbnail.inc.php');
211
+
212
+ $ngg_options = get_option('ngg_options');
213
+
214
+ if (is_array($pictures)) {
215
+
216
+ $bar = new wpProgressBar(__('Running... Please wait','nggallery'));
217
+ $bar->setHeader(__('Set watermark','nggallery'));
218
+ //total number of elements to process
219
+ $elements = count($pictures);
220
+ // wait a little bit after finished
221
+ if ($elements > 5) $bar->setSleepOnFinish(2);
222
+ //print the empty bar
223
+ $bar->initialize($elements);
224
+
225
+ foreach($pictures as $picture) {
226
+
227
+ if (!is_writable($gallery_absfolder."/".$picture)) {
228
+ $messagetext .= $gallery_absfolder."/".$picture."<br />";
229
+ $bar->increase();
230
+ continue;
231
+ }
232
+
233
+ $thumb = new ngg_Thumbnail($gallery_absfolder."/".$picture, TRUE);
234
+ // echo $thumb->errmsg;
235
+ // skip if file is not there
236
+ if (!$thumb->error) {
237
+ if ($ngg_options['wmType'] == 'image') {
238
+ $thumb->watermarkImgPath = $ngg_options['wmPath'];
239
+ $thumb->watermarkImage($ngg_options['wmPos'], $ngg_options['wmXpos'], $ngg_options['wmYpos']);
240
+ }
241
+ if ($ngg_options['wmType'] == 'text') {
242
+ $thumb->watermarkText = $ngg_options['wmText'];
243
+ $thumb->watermarkCreateText($ngg_options['wmColor'], $ngg_options['wmFont'], $ngg_options['wmSize'], $ngg_options['wmOpaque']);
244
+ $thumb->watermarkImage($ngg_options['wmPos'], $ngg_options['wmXpos'], $ngg_options['wmYpos']);
245
+ }
246
+ if ( $thumb->save($gallery_absfolder."/".$picture,$ngg_options['imgQuality']) )
247
+ $bar->addNote($picture. __(' : Watermark created...','nggallery'));
248
+ else
249
+ $bar->addNote($picture . " : Error : <strong>".$thumb->errmsg."</strong>");
250
+ $bar->increase();
251
+ }
252
+ $thumb->destruct();
253
+ }
254
+ }
255
+
256
+ if(!empty($messagetext)) nggallery::show_error('<strong>'.__('Some pictures are not writeable :','nggallery').'</strong><br /><ul>'.$messagetext.'</ul>');
257
+ return;
258
+ }
259
+
260
+ // **************************************************************
261
+ function generateThumbnail($gallery_absfolder, $pictures) {
262
+ // ** $gallery_absfolder must contain abspath !!
263
+
264
+ if(! class_exists('ngg_Thumbnail'))
265
+ require_once(NGGALLERY_ABSPATH.'/lib/thumbnail.inc.php');
266
+
267
+ $ngg_options = get_option('ngg_options');
268
+
269
+ $thumbfolder = nggallery::get_thumbnail_folder($gallery_absfolder);
270
+ $prefix = nggallery::get_thumbnail_prefix($gallery_absfolder);
271
+
272
+ if (!$thumbfolder)
273
+ return;
274
+
275
+ if (is_array($pictures)) {
276
+
277
+ $bar = new wpProgressBar(__('Running... Please wait','nggallery'));
278
+ $bar->setHeader(__('Create new thumbnails','nggallery'));
279
+ //total number of elements to process
280
+ $elements = count($pictures);
281
+ // wait a little bit after finished
282
+ if ($elements > 10) $bar->setSleepOnFinish(2);
283
+ //print the empty bar
284
+ $bar->initialize($elements);
285
+
286
+ foreach($pictures as $picture) {
287
+ // check for existing thumbnail
288
+ if (file_exists($gallery_absfolder.$thumbfolder.$prefix.$picture)) {
289
+ if (!is_writable($gallery_absfolder.$thumbfolder.$prefix.$picture)) {
290
+ $messagetext .= $gallery_absfolder."/".$picture."<br />";
291
+ $bar->increase();
292
+ continue;
293
+ }
294
+ }
295
+
296
+ $thumb = new ngg_Thumbnail($gallery_absfolder."/".utf8_decode($picture), TRUE);
297
+
298
+ // skip if file is not there
299
+ if (!$thumb->error) {
300
+ if ($ngg_options['thumbcrop']) {
301
+
302
+ // THX to Kees de Bruin, better thumbnails if portrait format
303
+ $width = $ngg_options['thumbwidth'];
304
+ $height = $ngg_options['thumbheight'];
305
+ $curwidth = $thumb->currentDimensions['width'];
306
+ $curheight = $thumb->currentDimensions['height'];
307
+ if ($curwidth > $curheight) {
308
+ $aspect = (100 * $curwidth) / $curheight;
309
+ } else {
310
+ $aspect = (100 * $curheight) / $curwidth;
311
+ }
312
+ $width = intval(($width * $aspect) / 100);
313
+ $height = intval(($height * $aspect) / 100);
314
+ $thumb->resize($width,$height,$ngg_options['thumbResampleMode']);
315
+ $thumb->cropFromCenter($width,$ngg_options['thumbResampleMode']);
316
+ }
317
+ elseif ($ngg_options['thumbfix']) {
318
+ // check for portrait format
319
+ if ($thumb->currentDimensions['height'] > $thumb->currentDimensions['width']) {
320
+ $thumb->resize($ngg_options['thumbwidth'], 0,$ngg_options['thumbResampleMode']);
321
+ // get optimal y startpos
322
+ $ypos = ($thumb->currentDimensions['height'] - $ngg_options['thumbheight']) / 2;
323
+ $thumb->crop(0, $ypos, $ngg_options['thumbwidth'],$ngg_options['thumbheight'],$ngg_options['thumbResampleMode']);
324
+ } else {
325
+ $thumb->resize(0,$ngg_options['thumbheight'],$ngg_options['thumbResampleMode']);
326
+ // get optimal x startpos
327
+ $xpos = ($thumb->currentDimensions['width'] - $ngg_options['thumbwidth']) / 2;
328
+ $thumb->crop($xpos, 0, $ngg_options['thumbwidth'],$ngg_options['thumbheight'],$ngg_options['thumbResampleMode']);
329
+ }
330
+ } else {
331
+ $thumb->resize($ngg_options['thumbwidth'],$ngg_options['thumbheight'],$ngg_options['thumbResampleMode']);
332
+ }
333
+ if ( !$thumb->save($gallery_absfolder.$thumbfolder.$prefix.$picture,$ngg_options['thumbquality'])) {
334
+ $errortext .= $picture . " <strong>(Error : ".$thumb->errmsg .")</strong><br />";
335
+ $bar->addNote($picture . " : Error : <strong>".$thumb->errmsg)."</strong>";
336
+ }
337
+ nggAdmin::chmod ($gallery_absfolder.$thumbfolder.$prefix.$picture);
338
+ } else {
339
+ $errortext .= $picture . " <strong>(Error : ".$thumb->errmsg .")</strong><br />";
340
+ $bar->addNote($picture . " : Error : <strong>".$thumb->errmsg."</strong>");
341
+ }
342
+ $thumb->destruct();
343
+ $bar->addNote($picture. __(' : Thumbnail created...','nggallery'));
344
+ $bar->increase();
345
+ }
346
+ }
347
+
348
+ if(!empty($errortext)) nggallery::show_error('<strong>'.__('Follow thumbnails could not created.','nggallery').'</strong><br /><ul>'.$errortext.'</ul>');
349
+ if(!empty($messagetext)) nggallery::show_error('<strong>'.__('Some thumbnails are not writeable :','nggallery').'</strong><br /><ul>'.$messagetext.'</ul>');
350
+
351
+ return;
352
+ }
353
+
354
+ // **************************************************************
355
+ function add_Images($galleryID, $gallerypath, $imageslist) {
356
+ // add images to database
357
+ global $wpdb;
358
+
359
+ $count_pic = 0;
360
+ if (is_array($imageslist)) {
361
+ foreach($imageslist as $picture) {
362
+
363
+ $result = $wpdb->query("INSERT INTO $wpdb->nggpictures (galleryid, filename, alttext, exclude) VALUES ('$galleryID', '$picture', '$picture', 0) ");
364
+ $pic_id = (int) $wpdb->insert_id;
365
+ if ($result) $count_pic++;
366
+
367
+ // add the metadata
368
+ if ($_POST['addmetadata'])
369
+ nggAdmin::import_MetaData($pic_id);
370
+
371
+ }
372
+ } // is_array
373
+
374
+ return $count_pic;
375
+
376
+ }
377
+
378
+ // **************************************************************
379
+ function import_MetaData($imagesIds) {
380
+ // add images to database
381
+ global $wpdb;
382
+
383
+ if (!is_array($imagesIds))
384
+ $imagesIds = array($imagesIds);
385
+
386
+ foreach($imagesIds as $pic_id) {
387
+
388
+ $picture = new nggImage($pic_id );
389
+ if (!$picture->error) {
390
+
391
+ $meta = nggAdmin::get_MetaData($picture->absPath);
392
+
393
+ // get the title
394
+ if (!$alttext = $meta['title'])
395
+ $alttext = $picture->alttext;
396
+ // get the caption / description field
397
+ if (!$description = $meta['caption'])
398
+ $description = $picture->description;
399
+ // update database
400
+ $result=$wpdb->query( "UPDATE $wpdb->nggpictures SET alttext = '$alttext', description = '$description' WHERE pid = $pic_id");
401
+ // add the tags
402
+ if ($meta['keywords']) {
403
+ $taglist = explode(",", $meta['keywords']);
404
+ $taglist = array_map('trim', $taglist);
405
+ // load tag list
406
+ $nggTags = new ngg_Tags();
407
+ foreach($taglist as $tag) {
408
+ // get the tag id
409
+ $tagid = $nggTags->add_tag($tag);
410
+ if ( $tagid )
411
+ $nggTags->add_relationship($pic_id, $tagid);
412
+ }
413
+ } // add tags
414
+ }// error check
415
+ } // foreach
416
+
417
+ return true;
418
+
419
+ }
420
+
421
+ // **************************************************************
422
+ function get_MetaData($picPath) {
423
+ // must be Gallery absPath + filename
424
+
425
+ require_once(NGGALLERY_ABSPATH.'/lib/nggmeta.lib.php');
426
+
427
+ $meta = array();
428
+
429
+ $pdata = new nggMeta($picPath);
430
+ $meta['title'] = $pdata->get_META('title');
431
+ $meta['caption'] = $pdata->get_META('caption');
432
+ $meta['keywords'] = $pdata->get_META('keywords');
433
+
434
+ return $meta;
435
+
436
+ }
437
+
438
+ // **************************************************************
439
+ function unzip($dir, $file) {
440
+ // thx to Gregor at http://blog.scoutpress.de/forum/topic/45
441
+
442
+ if(! class_exists('PclZip'))
443
+ require_once(NGGALLERY_ABSPATH.'/lib/pclzip.lib.php');
444
+
445
+ $archive = new PclZip($file);
446
+
447
+ // extract all files in one folder
448
+ if ($archive->extract(PCLZIP_OPT_PATH, $dir, PCLZIP_OPT_REMOVE_ALL_PATH, PCLZIP_CB_PRE_EXTRACT, 'ngg_getOnlyImages') == 0) {
449
+ if ($archive->error_code == -22)
450
+ nggallery::show_error(__('The Zip-file is too large. Exceed Memory limit !','nggallery'));
451
+ else
452
+ nggallery::show_error("Error : ".$archive->errorInfo(true));
453
+ return false;
454
+ }
455
+
456
+ return true;
457
+ }
458
+
459
+ // **************************************************************
460
+ function getOnlyImages($p_event, &$p_header) {
461
+ $info = pathinfo($p_header['filename']);
462
+ // check for extension
463
+ $ext = array("jpeg", "jpg", "png", "gif");
464
+ if (in_array( strtolower($info['extension']), $ext)) {
465
+ // For MAC skip the ".image" files
466
+ if ($info['basename']{0} == "." )
467
+ return 0;
468
+ else
469
+ return 1;
470
+ }
471
+ // ----- all other files are skipped
472
+ else {
473
+ return 0;
474
+ }
475
+ }
476
+
477
+ // **************************************************************
478
+ function import_zipfile($defaultpath) {
479
+
480
+ if (nggAdmin::check_quota())
481
+ return;
482
+
483
+ $temp_zipfile = $_FILES['zipfile']['tmp_name'];
484
+ $filename = $_FILES['zipfile']['name'];
485
+
486
+ // check if file is a zip file
487
+ if (!eregi('zip', $_FILES['zipfile']['type']))
488
+ // on whatever reason MAC shows "application/download"
489
+ if (!eregi('download', $_FILES['zipfile']['type'])) {
490
+ @unlink($temp_zipfile); // del temp file
491
+ nggallery::show_error(__('Uploaded file was no or a faulty zip file ! The server recognize : ','nggallery').$_FILES['zipfile']['type']);
492
+ return;
493
+ }
494
+
495
+ // get foldername if selected
496
+ $foldername = $_POST['zipgalselect'];
497
+ if ($foldername == "0") {
498
+ //cleanup and take the zipfile name as folder name
499
+ $foldername = sanitize_title(strtok ($filename,'.'));
500
+ //$foldername = preg_replace ("/(\s+)/", '-', strtolower(strtok ($filename,'.')));
501
+ }
502
+
503
+ //TODO:FORM must get the path from the tables not from defaultpath !!!
504
+ // set complete folder path
505
+ $newfolder = WINABSPATH.$defaultpath.$foldername;
506
+
507
+ if (!is_dir($newfolder)) {
508
+ // create new directories
509
+ if (!wp_mkdir_p ($newfolder)) {
510
+ $message = sprintf(__('Unable to create directory %s. Is its parent directory writable by the server?', 'nggallery'), $newfolder);
511
+ nggallery::show_error($message);
512
+ return false;
513
+ }
514
+ if (!wp_mkdir_p ($newfolder.'/thumbs')) {
515
+ nggallery::show_error(__('Unable to create directory ', 'nggallery').$newfolder.'/thumbs !');
516
+ return false;
517
+ }
518
+ }
519
+
520
+ // unzip and del temp file
521
+ $result = nggAdmin::unzip($newfolder, $temp_zipfile);
522
+ @unlink($temp_zipfile);
523
+
524
+ if ($result) {
525
+ $message = __('Zip-File successfully unpacked','nggallery').'<br />';
526
+
527
+ // parse now the folder and add to database
528
+ $message .= nggAdmin::import_gallery($defaultpath.$foldername);
529
+
530
+ nggallery::show_message($message);
531
+ }
532
+
533
+ return;
534
+ }
535
+
536
+ // **************************************************************
537
+ function upload_images() {
538
+ // upload of pictures
539
+
540
+ global $wpdb;
541
+
542
+ // WPMU action
543
+ if (nggAdmin::check_quota())
544
+ return;
545
+
546
+ // Images must be an array
547
+ $imageslist = array();
548
+ $i = 1;
549
+
550
+ foreach ($_FILES as $key => $value) {
551
+
552
+ // look only for uploded files
553
+ if ($_FILES[$key]['error'] == 0) {
554
+ $temp_file = $_FILES[$key]['tmp_name'];
555
+ $filepart = pathinfo ( strtolower($_FILES[$key]['name']) );
556
+ // required until PHP 5.2.0
557
+ $filepart['filename'] = substr($filepart["basename"],0 ,strlen($filepart["basename"]) - (strlen($filepart["extension"]) + 1) );
558
+ $filename = sanitize_title($filepart['filename']).".".$filepart['extension'];
559
+ // check if this filename already exist
560
+ if (in_array($filename,$imageslist))
561
+ $filename = sanitize_title($filepart['filename']) . "_" . $i++ . "." .$filepart['extension'];
562
+
563
+ $galleryID = (int) $_POST['galleryselect'];
564
+
565
+ if ($galleryID == 0) {
566
+ @unlink($temp_file) or die ('<div class="updated"><p><strong>'.__('Unable to unlink file ', 'nggallery').$temp_zipfile.'!</strong></p></div>');
567
+ nggallery::show_error(__('No gallery selected !','nggallery'));
568
+ return;
569
+ }
570
+
571
+ // get the path to the gallery
572
+ $gallerypath = $wpdb->get_var("SELECT path FROM $wpdb->nggallery WHERE gid = '$galleryID' ");
573
+ if (!$gallerypath){
574
+ @unlink($temp_file) or die ('<div class="updated"><p><strong>'.__('Unable to unlink file ', 'nggallery').$temp_zipfile.'!</strong></p></div>');
575
+ nggallery::show_error(__('Failure in database, no gallery path set !','nggallery'));
576
+ return;
577
+ }
578
+
579
+ // check for allowed extension
580
+ $ext = array("jpeg", "jpg", "png", "gif");
581
+ if (!in_array($filepart['extension'],$ext)){
582
+ nggallery::show_error('<strong>'.$_FILES[$key]['name'].' </strong>'.__('is no valid image file!','nggallery'));
583
+ continue;
584
+ }
585
+
586
+ $dest_file = WINABSPATH.$gallerypath."/".$filename;
587
+
588
+ //check for folder permission
589
+ if (!is_writeable(WINABSPATH.$gallerypath)) {
590
+ $message = sprintf(__('Unable to write to directory %s. Is this directory writable by the server?', 'nggallery'), WINABSPATH.$gallerypath);
591
+ nggallery::show_error($message);
592
+ return;
593
+ }
594
+
595
+ // save temp file to gallery
596
+ if (!@move_uploaded_file($_FILES[$key]['tmp_name'], $dest_file)){
597
+ nggallery::show_error(__('Error, the file could not moved to : ','nggallery').$dest_file);
598
+ nggAdmin::check_safemode(WINABSPATH.$gallerypath);
599
+ continue;
600
+ }
601
+ if (!nggAdmin::chmod ($dest_file)) {
602
+ nggallery::show_error(__('Error, the file permissions could not set','nggallery'));
603
+ continue;
604
+ }
605
+
606
+ // add to imagelist
607
+ $imageslist[] = $filename;
608
+
609
+ }
610
+ }
611
+
612
+ if (count($imageslist) > 0) {
613
+
614
+ //create thumbnails
615
+ nggAdmin::generatethumbnail(WINABSPATH.$gallerypath,$imageslist);
616
+
617
+ // add images to database
618
+ $count_pic = nggAdmin::add_Images($galleryID, $gallerypath, $imageslist);
619
+
620
+ nggallery::show_message($count_pic.__(' Image(s) successfully added','nggallery'));
621
+ }
622
+
623
+ return;
624
+
625
+ } // end function
626
+
627
+ // **************************************************************
628
+ function swfupload_image($galleryID = 0) {
629
+ // This function is called by the swfupload
630
+ global $wpdb;
631
+ $ngg_options = get_option('ngg_options');
632
+
633
+ if ($galleryID == 0) {
634
+ @unlink($temp_file);
635
+ return __('No gallery selected !','nggallery');;
636
+ }
637
+
638
+ // Check the upload
639
+ if (!isset($_FILES["Filedata"]) || !is_uploaded_file($_FILES["Filedata"]["tmp_name"]) || $_FILES["Filedata"]["error"] != 0) {
640
+ return __('Invalid upload. Error Code : ','nggallery').$_FILES["Filedata"]["error"];
641
+ }
642
+
643
+ // get the filename and extension
644
+ $temp_file = $_FILES["Filedata"]['tmp_name'];
645
+ $filepart = pathinfo ( strtolower($_FILES["Filedata"]['name']) );
646
+ // required until PHP 5.2.0
647
+ $filepart['filename'] = substr($filepart["basename"],0 ,strlen($filepart["basename"]) - (strlen($filepart["extension"]) + 1) );
648
+ $filename = sanitize_title($filepart['filename']).".".$filepart['extension'];
649
+
650
+ // check for allowed extension
651
+ $ext = array("jpeg", "jpg", "png", "gif");
652
+ if (!in_array($filepart['extension'],$ext)){
653
+ return $_FILES[$key]['name'].__('is no valid image file!','nggallery');
654
+ }
655
+
656
+ // get the path to the gallery
657
+ $gallerypath = $wpdb->get_var("SELECT path FROM $wpdb->nggallery WHERE gid = '$galleryID' ");
658
+ if (!$gallerypath){
659
+ @unlink($temp_file);
660
+ return __('Failure in database, no gallery path set !','nggallery');
661
+ }
662
+
663
+ // read list of images
664
+ $imageslist = nggAdmin::scandir(WINABSPATH.$gallerypath);
665
+
666
+ // check if this filename already exist
667
+ $i = 0;
668
+ while (in_array($filename,$imageslist)) {
669
+ $filename = sanitize_title($filepart['filename']) . "_" . $i++ . "." .$filepart['extension'];
670
+ }
671
+
672
+ $dest_file = WINABSPATH.$gallerypath."/".$filename;
673
+
674
+ // save temp file to gallery
675
+ if ( !@move_uploaded_file($_FILES["Filedata"]['tmp_name'], $dest_file) ){
676
+ nggAdmin::check_safemode(WINABSPATH.$gallerypath);
677
+ return __('Error, the file could not moved to : ','nggallery').$dest_file;
678
+ }
679
+
680
+ if ( !nggAdmin::chmod($dest_file) ) {
681
+ return __('Error, the file permissions could not set','nggallery');
682
+ }
683
+
684
+ return "0";
685
+ }
686
+
687
+ // **************************************************************
688
+ function check_quota() {
689
+ // Only for WPMU
690
+ if ( (IS_WPMU) && wpmu_enable_function('wpmuQuotaCheck'))
691
+ if( $error = upload_is_user_over_quota( false ) ) {
692
+ nggallery::show_error( __( 'Sorry, you have used your space allocation. Please delete some files to upload more files.','nggallery' ) );
693
+ return true;
694
+ }
695
+ return false;
696
+ }
697
+
698
+ // **************************************************************
699
+ function chmod($filename = "") {
700
+ // Set correct file permissions (taken from wp core)
701
+ $stat = @ stat(dirname($filename));
702
+ $perms = $stat['mode'] & 0007777;
703
+ $perms = $perms & 0000666;
704
+ if ( @chmod($filename, $perms) )
705
+ return true;
706
+
707
+ return false;
708
+ }
709
+
710
+ function check_safemode($foldername) {
711
+ // Check UID in folder and Script
712
+ // Read http://www.php.net/manual/en/features.safe-mode.php to understand safe_mode
713
+ if ( SAFE_MODE ) {
714
+
715
+ $script_uid = ( ini_get('safe_mode_gid') ) ? getmygid() : getmyuid();
716
+ $folder_uid = fileowner($foldername);
717
+
718
+ if ($script_uid != $folder_uid) {
719
+ $message = sprintf(__('SAFE MODE Restriction in effect! You need to create the folder <strong>%s</strong> manually','nggallery'), WINABSPATH.$gallerypath);
720
+ $message .= '<br />' . sprintf(__('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','nggallery'), $script_uid, $folder_uid );
721
+ nggallery::show_error($message);
722
+ return false;
723
+ }
724
+ }
725
+
726
+ return true;
727
+ }
728
+
729
+ } // END class nggAdmin
730
+
731
+ /**
732
+ * Class wpProgressBar for WordPress & NextGEN Gallery
733
+ * Easy to use progress bar in html and css.
734
+ *
735
+ * @author Based on ProgressBar from David Bongard (mail@bongard.net | www.bongard.net)
736
+ * and Phillip Berndt (standards.webmasterpro.de)
737
+ * @mixed by Alex Rabe
738
+ * @version 1.0 - 20071201
739
+ * @license http://www.opensource.org/licenses/mit-license.php MIT License
740
+ * @copyright Copyright &copy; 2007, David Bongard , Phillip Berndt
741
+ *
742
+ */
743
+ class wpProgressBar {
744
+
745
+ /**
746
+ * Constructor
747
+ *
748
+ * @param str $message Message shown above the bar eg. "Please wait...". Default: ''
749
+ * @param bool $hide Hide the bar after completion (with JavaScript). Default: true
750
+ * @param int $sleepOnFinish Seconds to sleep after bar completion. Default: 0
751
+ * @param int $barLength Length in percent. Default: 100
752
+ * @param str $domID Html-Attribute "id" for the bar
753
+ * @param str $header the header title
754
+ */
755
+ function wpProgressBar($message='', $hide=true, $sleepOnFinish=0, $barLength=100, $domID='progressbar', $header='')
756
+ {
757
+ global $pb_instance;
758
+ $this->instance = $pb_instance++;
759
+ $this->setAutohide($hide);
760
+ $this->setSleepOnFinish($sleepOnFinish);
761
+ $this->setDomIDs($domID);
762
+ $this->setMessage($message);
763
+ $this->setheader($header);
764
+ $this->barLength = (int) $barLength;
765
+ }
766
+
767
+
768
+ /**
769
+ * Print the empty progress bar
770
+ * @param int $numElements Number of Elements to be processed and number of times $bar->initialize() will be called while processing
771
+ */
772
+ function initialize($numElements)
773
+ {
774
+ $this->StepCount = 0;
775
+ $this->ListCount = 0;
776
+
777
+ $numElements = (int) $numElements ;
778
+
779
+ if($numElements == 0)
780
+ return;
781
+
782
+ $this->numSteps = $numElements;
783
+
784
+ //calculate the % per Step
785
+ $this->percentPerStep = round (100 / $numElements, 2);
786
+
787
+ //stop buffering
788
+ ob_end_flush();
789
+ //start buffering
790
+ ob_start();
791
+
792
+ echo '<div id="'.$this->domID.'_container" class="wrap">
793
+ <h2>'.$this->header.'</h2>
794
+ <div id="'.$this->domID.'" class="progressbar" style="border: 1px inset ; display: block; height: 20px; background-color: rgb(160, 160, 160); width: '.$this->barLength.'%;"><div style="border: medium none ; display: block; height: 20px; background-color: rgb(13, 50, 79); width: 2%;"><span style="display: inline; position: relative; color: white; font-weight: bold; padding-bottom: 2px; padding-left: 5px;">0%</span></div></div>
795
+ <div class="progressbar_message"><span style="display:block" id="'.$this->domIDMessage.'">'.$this->message.'</span></div>
796
+ <ul id="'.$this->domIDProgressNote.'">&nbsp;</ul>
797
+ </div>
798
+
799
+ <script type="text/javascript">
800
+ <!--
801
+ oProgressbar = document.getElementById("'.$this->domID.'").firstChild;
802
+ function progress(value)
803
+ {
804
+ oProgressbar.firstChild.firstChild.nodeValue = oProgressbar.style.width = value + "%";
805
+ }
806
+ // -->
807
+ </script>';
808
+
809
+ ob_flush();
810
+ flush();
811
+
812
+ $this->initialized = true;
813
+ }
814
+
815
+ /**
816
+ * Count steps and increase bar length
817
+ *
818
+ */
819
+ function increase()
820
+ {
821
+ if($this->StepCount < $this->numSteps) {
822
+ //add a step
823
+ $this->StepCount++;
824
+
825
+ $value = $this->StepCount * $this->percentPerStep;
826
+ echo('<script type="text/javascript">progress('.intval($value).');</script>');
827
+
828
+ ob_flush();
829
+ flush();
830
+ }
831
+
832
+ if(!$this->finished && $this->StepCount == $this->numSteps){
833
+ // to be sure that based on round we reached 100%
834
+ if ($value != 100){
835
+ echo('<script type="text/javascript">progress('.intval(100).');</script>');
836
+ ob_flush();
837
+ flush();
838
+ }
839
+ $this->stop();
840
+ }
841
+ }
842
+
843
+ function stop($error=false)
844
+ {
845
+
846
+ //sleep x seconds before ending the script
847
+ if(!$error){
848
+ if($this->sleepOnFinish > 0){
849
+ sleep($this->sleepOnFinish);
850
+ }
851
+
852
+ //hide the bar
853
+ if($this->hide){
854
+ echo '<script type="text/javascript">document.getElementById("'.$this->domID.'_container").style.display = "none";</script>';
855
+ ob_flush();
856
+ flush();
857
+ }
858
+ }
859
+ $this->finished = true;
860
+ }
861
+
862
+ function setMessage($text)
863
+ {
864
+ if($this->initialized){
865
+ echo '<script type="text/javascript">document.getElementById("'.$this->domIDMessage.'").innerHTML = "'.$text.'";</script>';
866
+ ob_flush();flush();
867
+ }else{
868
+ $this->message = $text;
869
+ }
870
+ }
871
+
872
+ function addNote($text)
873
+ {
874
+ if($this->initialized){
875
+ echo '<script type="text/javascript">
876
+ var newLI = document.createElement("li");
877
+ var note = document.createTextNode("'.$text.'");
878
+ document.getElementById("'.$this->domIDProgressNote.'").appendChild(newLI);
879
+ document.getElementById("'.$this->domIDProgressNote.'").getElementsByTagName("li")['.$this->ListCount.'].appendChild(note);
880
+ </script>';
881
+ $this->ListCount++;
882
+ ob_flush();flush();
883
+ }
884
+ }
885
+
886
+ function setAutohide($hide)
887
+ {
888
+ $this->hide = (bool) $hide;
889
+ }
890
+
891
+ function setHeader($header)
892
+ {
893
+ $this->header = $header;
894
+ }
895
+
896
+ function setSleepOnFinish($sleepOnFinish)
897
+ {
898
+ $this->sleepOnFinish = (int) $sleepOnFinish;
899
+ }
900
+
901
+ function setDomIDs($domID)
902
+ {
903
+ $this->domID = strip_tags($domID).$this->instance;
904
+ $this->domIDMessage = $this->domID.'_message';
905
+ $this->domIDProgressNote = $this->domID.'_note';
906
+ }
907
+
908
+ }
909
+
910
+ // **************************************************************
911
+ //TODO: Cannot be member of a class ? Check PCLZIP later...
912
+ function ngg_getOnlyImages($p_event, &$p_header) {
913
+
914
+ return nggAdmin::getOnlyImages($p_event, &$p_header);
915
+
916
+ }
917
+
918
+ ?>
admin/js/jquery.js CHANGED
@@ -1,11 +1,12 @@
1
  /*
2
- * jQuery 1.1.3.1 - New Wave Javascript
3
  *
4
  * Copyright (c) 2007 John Resig (jquery.com)
5
  * Dual licensed under the MIT (MIT-LICENSE.txt)
6
  * and GPL (GPL-LICENSE.txt) licenses.
7
  *
8
- * $Date: 2007-07-05 00:43:24 -0400 (Thu, 05 Jul 2007) $
9
- * $Rev: 2243 $
10
  */
11
- eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('7(1g 18.6=="I"){18.I=18.I;u 6=q(a,c){7(18==9||!9.3X)v 14 6(a,c);v 9.3X(a,c)};7(1g $!="I")6.1I$=$;u $=6;6.11=6.8r={3X:q(a,c){a=a||P;7(6.16(a))v 14 6(P)[6.11.1G?"1G":"1W"](a);7(1g a=="1s"){u m=/^[^<]*(<(.|\\s)+>)[^>]*$/.1V(a);7(m)a=6.31([m[1]]);B v 14 6(c).1L(a)}v 9.4E(a.15==2b&&a||(a.3C||a.C&&a!=18&&!a.1q&&a[0]!=I&&a[0].1q)&&6.2L(a)||[a])},3C:"1.1.3.1",7W:q(){v 9.C},C:0,1M:q(a){v a==I?6.2L(9):9[a]},1Z:q(a){u b=6(a);b.5q=9;v b},4E:q(a){9.C=0;[].R.O(9,a);v 9},F:q(a,b){v 6.F(9,a,b)},2p:q(a){u b=-1;9.F(q(i){7(9==a)b=i});v b},1b:q(f,d,e){u c=f;7(f.15==33)7(d==I)v 9.C&&6[e||"1b"](9[0],f)||I;B{c={};c[f]=d}v 9.F(q(a){E(u b V c)6.1b(e?9.T:9,b,6.4H(9,c[b],e,a,b))})},1f:q(b,a){v 9.1b(b,a,"2z")},2A:q(e){7(1g e=="1s")v 9.2Y().3e(P.66(e));u t="";6.F(e||9,q(){6.F(9.2S,q(){7(9.1q!=8)t+=9.1q!=1?9.5R:6.11.2A([9])})});v t},8b:q(){u a,1S=19;v 9.F(q(){7(!a)a=6.31(1S,9.2O);u b=a[0].3s(K);9.L.2K(b,9);1v(b.1d)b=b.1d;b.4g(9)})},3e:q(){v 9.2F(19,K,1,q(a){9.4g(a)})},5w:q(){v 9.2F(19,K,-1,q(a){9.2K(a,9.1d)})},5t:q(){v 9.2F(19,N,1,q(a){9.L.2K(a,9)})},5s:q(){v 9.2F(19,N,-1,q(a){9.L.2K(a,9.1X)})},2U:q(){v 9.5q||6([])},1L:q(t){u b=6.3k(9,q(a){v 6.1L(t,a)});v 9.1Z(/[^+>] [^+>]/.17(t)||t.J("..")>-1?6.5g(b):b)},7x:q(e){u d=9.1A(9.1L("*"));d.F(q(){9.1I$1a={};E(u a V 9.$1a)9.1I$1a[a]=6.1c({},9.$1a[a])}).3U();u r=9.1Z(6.3k(9,q(a){v a.3s(e!=I?e:K)}));d.F(q(){u b=9.1I$1a;E(u a V b)E(u c V b[a])6.S.1A(9,a,b[a][c],b[a][c].W);9.1I$1a=H});v r},1i:q(t){v 9.1Z(6.16(t)&&6.2s(9,q(b,a){v t.O(b,[a])})||6.2x(t,9))},4Y:q(t){v 9.1Z(t.15==33&&6.2x(t,9,K)||6.2s(9,q(a){v(t.15==2b||t.3C)?6.2w(a,t)<0:a!=t}))},1A:q(t){v 9.1Z(6.1T(9.1M(),t.15==33?6(t).1M():t.C!=I&&(!t.Q||t.Q=="6Z")?t:[t]))},37:q(a){v a?6.2x(a,9).C>0:N},6R:q(a){v a==I?(9.C?9[0].2v:H):9.1b("2v",a)},3F:q(a){v a==I?(9.C?9[0].27:H):9.2Y().3e(a)},2F:q(f,d,g,e){u c=9.C>1,a;v 9.F(q(){7(!a){a=6.31(f,9.2O);7(g<0)a.6E()}u b=9;7(d&&6.Q(9,"1r")&&6.Q(a[0],"2V"))b=9.3R("1z")[0]||9.4g(P.5h("1z"));6.F(a,q(){e.O(b,[c?9.3s(K):9])})})}};6.1c=6.11.1c=q(){u c=19[0],a=1;7(19.C==1){c=9;a=0}u b;1v((b=19[a++])!=H)E(u i V b)c[i]=b[i];v c};6.1c({6n:q(){7(6.1I$)$=6.1I$;v 6},16:q(a){v!!a&&1g a!="1s"&&!a.Q&&a.15!=2b&&/q/i.17(a+"")},40:q(a){v a.4z&&a.2O&&!a.2O.4y},Q:q(b,a){v b.Q&&b.Q.1D()==a.1D()},F:q(a,b,c){7(a.C==I)E(u i V a)b.O(a[i],c||[i,a[i]]);B E(u i=0,4x=a.C;i<4x;i++)7(b.O(a[i],c||[i,a[i]])===N)1F;v a},4H:q(c,b,d,e,a){7(6.16(b))b=b.3D(c,[e]);u f=/z-?2p|5Y-?8p|1e|5U|8i-?1u/i;v b&&b.15==3y&&d=="2z"&&!f.17(a)?b+"4o":b},12:{1A:q(b,c){6.F(c.2R(/\\s+/),q(i,a){7(!6.12.3w(b.12,a))b.12+=(b.12?" ":"")+a})},1E:q(b,c){b.12=c!=I?6.2s(b.12.2R(/\\s+/),q(a){v!6.12.3w(c,a)}).5M(" "):""},3w:q(t,c){v 6.2w(c,(t.12||t).3v().2R(/\\s+/))>-1}},4m:q(e,o,f){E(u i V o){e.T["2N"+i]=e.T[i];e.T[i]=o[i]}f.O(e,[]);E(u i V o)e.T[i]=e.T["2N"+i]},1f:q(e,p){7(p=="1u"||p=="29"){u b={},3r,3p,d=["83","81","80","7Y"];6.F(d,q(){b["7V"+9]=0;b["7T"+9+"7S"]=0});6.4m(e,b,q(){7(6(e).37(\':4f\')){3r=e.7Q;3p=e.7O}B{e=6(e.3s(K)).1L(":4b").5v("2B").2U().1f({48:"1y",3i:"7L",U:"2h",7K:"0",7I:"0"}).5o(e.L)[0];u a=6.1f(e.L,"3i")||"3n";7(a=="3n")e.L.T.3i="7G";3r=e.7E;3p=e.7D;7(a=="3n")e.L.T.3i="3n";e.L.3q(e)}});v p=="1u"?3r:3p}v 6.2z(e,p)},2z:q(e,a,d){u g;7(a=="1e"&&6.M.1h){g=6.1b(e.T,"1e");v g==""?"1":g}7(a.3t(/3x/i))a=6.1U;7(!d&&e.T[a])g=e.T[a];B 7(P.3f&&P.3f.3Y){7(a.3t(/3x/i))a="3x";a=a.1o(/([A-Z])/g,"-$1").2H();u b=P.3f.3Y(e,H);7(b)g=b.57(a);B 7(a=="U")g="1P";B 6.4m(e,{U:"2h"},q(){u c=P.3f.3Y(9,"");g=c&&c.57(a)||""})}B 7(e.3S){u f=a.1o(/\\-(\\w)/g,q(m,c){v c.1D()});g=e.3S[a]||e.3S[f]}v g},31:q(a,c){u r=[];c=c||P;6.F(a,q(i,b){7(!b)v;7(b.15==3y)b=b.3v();7(1g b=="1s"){u s=6.2C(b).2H(),1x=c.5h("1x"),1N=[];u a=!s.J("<1H")&&[1,"<2y>","</2y>"]||!s.J("<7g")&&[1,"<52>","</52>"]||(!s.J("<7c")||!s.J("<1z")||!s.J("<7a")||!s.J("<78"))&&[1,"<1r>","</1r>"]||!s.J("<2V")&&[2,"<1r><1z>","</1z></1r>"]||(!s.J("<75")||!s.J("<74"))&&[3,"<1r><1z><2V>","</2V></1z></1r>"]||!s.J("<73")&&[2,"<1r><4W>","</4W></1r>"]||[0,"",""];1x.27=a[1]+b+a[2];1v(a[0]--)1x=1x.1d;7(6.M.1h){7(!s.J("<1r")&&s.J("<1z")<0)1N=1x.1d&&1x.1d.2S;B 7(a[1]=="<1r>"&&s.J("<1z")<0)1N=1x.2S;E(u n=1N.C-1;n>=0;--n)7(6.Q(1N[n],"1z")&&!1N[n].2S.C)1N[n].L.3q(1N[n])}b=6.2L(1x.2S)}7(0===b.C&&(!6.Q(b,"34")&&!6.Q(b,"2y")))v;7(b[0]==I||6.Q(b,"34")||b.71)r.R(b);B r=6.1T(r,b)});v r},1b:q(c,d,a){u e=6.40(c)?{}:6.3H;7(e[d]){7(a!=I)c[e[d]]=a;v c[e[d]]}B 7(a==I&&6.M.1h&&6.Q(c,"34")&&(d=="70"||d=="6Y"))v c.6W(d).5R;B 7(c.4z){7(a!=I)c.6U(d,a);7(6.M.1h&&/4M|2u/.17(d)&&!6.40(c))v c.35(d,2);v c.35(d)}B{7(d=="1e"&&6.M.1h){7(a!=I){c.5U=1;c.1i=(c.1i||"").1o(/4L\\([^)]*\\)/,"")+(39(a).3v()=="6M"?"":"4L(1e="+a*4X+")")}v c.1i?(39(c.1i.3t(/1e=([^)]*)/)[1])/4X).3v():""}d=d.1o(/-([a-z])/6K,q(z,b){v b.1D()});7(a!=I)c[d]=a;v c[d]}},2C:q(t){v t.1o(/^\\s+|\\s+$/g,"")},2L:q(a){u r=[];7(1g a!="6I")E(u i=0,26=a.C;i<26;i++)r.R(a[i]);B r=a.51(0);v r},2w:q(b,a){E(u i=0,26=a.C;i<26;i++)7(a[i]==b)v i;v-1},1T:q(a,b){E(u i=0;b[i];i++)a.R(b[i]);v a},5g:q(a){u r=[],3P=6.1k++;E(u i=0,4G=a.C;i<4G;i++)7(3P!=a[i].1k){a[i].1k=3P;r.R(a[i])}v r},1k:0,2s:q(c,b,d){7(1g b=="1s")b=14 45("a","i","v "+b);u a=[];E(u i=0,30=c.C;i<30;i++)7(!d&&b(c[i],i)||d&&!b(c[i],i))a.R(c[i]);v a},3k:q(c,b){7(1g b=="1s")b=14 45("a","v "+b);u d=[];E(u i=0,30=c.C;i<30;i++){u a=b(c[i],i);7(a!==H&&a!=I){7(a.15!=2b)a=[a];d=d.6v(a)}}v d}});14 q(){u b=6u.6t.2H();6.M={4D:(b.3t(/.+(?:6s|6q|6o|6m)[\\/: ]([\\d.]+)/)||[])[1],20:/5l/.17(b),2a:/2a/.17(b),1h:/1h/.17(b)&&!/2a/.17(b),3j:/3j/.17(b)&&!/(6h|5l)/.17(b)};6.6g=!6.M.1h||P.6f=="6c";6.1U=6.M.1h?"1U":"5x",6.3H={"E":"68","67":"12","3x":6.1U,5x:6.1U,1U:6.1U,27:"27",12:"12",2v:"2v",2r:"2r",2B:"2B",65:"63",2T:"2T",62:"5Z"}};6.F({4v:"a.L",4p:"6.4p(a)",8o:"6.22(a,2,\'1X\')",8n:"6.22(a,2,\'4t\')",8k:"6.4q(a.L.1d,a)",8h:"6.4q(a.1d)"},q(i,n){6.11[i]=q(a){u b=6.3k(9,n);7(a&&1g a=="1s")b=6.2x(a,b);v 9.1Z(b)}});6.F({5o:"3e",8g:"5w",2K:"5t",8f:"5s"},q(i,n){6.11[i]=q(){u a=19;v 9.F(q(){E(u j=0,26=a.C;j<26;j++)6(a[j])[n](9)})}});6.F({5v:q(a){6.1b(9,a,"");9.8d(a)},8c:q(c){6.12.1A(9,c)},88:q(c){6.12.1E(9,c)},87:q(c){6.12[6.12.3w(9,c)?"1E":"1A"](9,c)},1E:q(a){7(!a||6.1i(a,[9]).r.C)9.L.3q(9)},2Y:q(){1v(9.1d)9.3q(9.1d)}},q(i,n){6.11[i]=q(){v 9.F(n,19)}});6.F(["5Q","5P","5O","5N"],q(i,n){6.11[n]=q(a,b){v 9.1i(":"+n+"("+a+")",b)}});6.F(["1u","29"],q(i,n){6.11[n]=q(h){v h==I?(9.C?6.1f(9[0],n):H):9.1f(n,h.15==33?h:h+"4o")}});6.1c({4n:{"":"m[2]==\'*\'||6.Q(a,m[2])","#":"a.35(\'2m\')==m[2]",":":{5P:"i<m[3]-0",5O:"i>m[3]-0",22:"m[3]-0==i",5Q:"m[3]-0==i",2Q:"i==0",2P:"i==r.C-1",5L:"i%2==0",5K:"i%2","2Q-3u":"a.L.3R(\'*\')[0]==a","2P-3u":"6.22(a.L.5J,1,\'4t\')==a","86-3u":"!6.22(a.L.5J,2,\'4t\')",4v:"a.1d",2Y:"!a.1d",5N:"(a.5H||a.85||\'\').J(m[3])>=0",4f:\'"1y"!=a.G&&6.1f(a,"U")!="1P"&&6.1f(a,"48")!="1y"\',1y:\'"1y"==a.G||6.1f(a,"U")=="1P"||6.1f(a,"48")=="1y"\',84:"!a.2r",2r:"a.2r",2B:"a.2B",2T:"a.2T||6.1b(a,\'2T\')",2A:"\'2A\'==a.G",4b:"\'4b\'==a.G",5F:"\'5F\'==a.G",4l:"\'4l\'==a.G",5E:"\'5E\'==a.G",4k:"\'4k\'==a.G",5D:"\'5D\'==a.G",5C:"\'5C\'==a.G",1J:\'"1J"==a.G||6.Q(a,"1J")\',5B:"/5B|2y|82|1J/i.17(a.Q)"},"[":"6.1L(m[2],a).C"},5A:[/^\\[ *(@)([\\w-]+) *([!*$^~=]*) *(\'?"?)(.*?)\\4 *\\]/,/^(\\[)\\s*(.*?(\\[.*?\\])?[^[]*?)\\s*\\]/,/^(:)([\\w-]+)\\("?\'?(.*?(\\(.*?\\))?[^(]*?)"?\'?\\)/,14 3o("^([:.#]*)("+(6.2J=6.M.20&&6.M.4D<"3.0.0"?"\\\\w":"(?:[\\\\w\\7Z-\\7X*1I-]|\\\\\\\\.)")+"+)")],2x:q(a,c,b){u d,1K=[];1v(a&&a!=d){d=a;u f=6.1i(a,c,b);a=f.t.1o(/^\\s*,\\s*/,"");1K=b?c=f.r:6.1T(1K,f.r)}v 1K},1L:q(t,l){7(1g t!="1s")v[t];7(l&&!l.1q)l=H;l=l||P;7(!t.J("//")){l=l.4h;t=t.2G(2,t.C)}B 7(!t.J("/")&&!l.2O){l=l.4h;t=t.2G(1,t.C);7(t.J("/")>=1)t=t.2G(t.J("/"),t.C)}u b=[l],2j=[],2P;1v(t&&2P!=t){u r=[];2P=t;t=6.2C(t).1o(/^\\/\\//,"");u k=N;u g=14 3o("^[/>]\\\\s*("+6.2J+"+)");u m=g.1V(t);7(m){u o=m[1].1D();E(u i=0;b[i];i++)E(u c=b[i].1d;c;c=c.1X)7(c.1q==1&&(o=="*"||c.Q.1D()==o.1D()))r.R(c);b=r;t=t.1o(g,"");7(t.J(" ")==0)7R;k=K}B{g=/^((\\/?\\.\\.)|([>\\/+~]))\\s*([a-z]*)/i;7((m=g.1V(t))!=H){r=[];u o=m[4],1k=6.1k++;m=m[1];E(u j=0,2e=b.C;j<2e;j++)7(m.J("..")<0){u n=m=="~"||m=="+"?b[j].1X:b[j].1d;E(;n;n=n.1X)7(n.1q==1){7(m=="~"&&n.1k==1k)1F;7(!o||n.Q.1D()==o.1D()){7(m=="~")n.1k=1k;r.R(n)}7(m=="+")1F}}B r.R(b[j].L);b=r;t=6.2C(t.1o(g,""));k=K}}7(t&&!k){7(!t.J(",")){7(l==b[0])b.4e();2j=6.1T(2j,b);r=b=[l];t=" "+t.2G(1,t.C)}B{u h=14 3o("^("+6.2J+"+)(#)("+6.2J+"+)");u m=h.1V(t);7(m){m=[0,m[2],m[3],m[1]]}B{h=14 3o("^([#.]?)("+6.2J+"*)");m=h.1V(t)}m[2]=m[2].1o(/\\\\/g,"");u f=b[b.C-1];7(m[1]=="#"&&f&&f.4d){u p=f.4d(m[2]);7((6.M.1h||6.M.2a)&&p&&1g p.2m=="1s"&&p.2m!=m[2])p=6(\'[@2m="\'+m[2]+\'"]\',f)[0];b=r=p&&(!m[3]||6.Q(p,m[3]))?[p]:[]}B{E(u i=0;b[i];i++){u a=m[1]!=""||m[0]==""?"*":m[2];7(a=="*"&&b[i].Q.2H()=="7P")a="2E";r=6.1T(r,b[i].3R(a))}7(m[1]==".")r=6.4c(r,m[2]);7(m[1]=="#"){u e=[];E(u i=0;r[i];i++)7(r[i].35("2m")==m[2]){e=[r[i]];1F}r=e}b=r}t=t.1o(h,"")}}7(t){u d=6.1i(t,r);b=r=d.r;t=6.2C(d.t)}}7(t)b=[];7(b&&l==b[0])b.4e();2j=6.1T(2j,b);v 2j},4c:q(r,m,a){m=" "+m+" ";u b=[];E(u i=0;r[i];i++){u c=(" "+r[i].12+" ").J(m)>=0;7(!a&&c||a&&!c)b.R(r[i])}v b},1i:q(t,r,h){u d;1v(t&&t!=d){d=t;u p=6.5A,m;E(u i=0;p[i];i++){m=p[i].1V(t);7(m){t=t.7N(m[0].C);m[2]=m[2].1o(/\\\\/g,"");1F}}7(!m)1F;7(m[1]==":"&&m[2]=="4Y")r=6.1i(m[3],r,K).r;B 7(m[1]==".")r=6.4c(r,m[2],h);B 7(m[1]=="@"){u g=[],G=m[3];E(u i=0,2e=r.C;i<2e;i++){u a=r[i],z=a[6.3H[m[2]]||m[2]];7(z==H||/4M|2u/.17(m[2]))z=6.1b(a,m[2])||\'\';7((G==""&&!!z||G=="="&&z==m[5]||G=="!="&&z!=m[5]||G=="^="&&z&&!z.J(m[5])||G=="$="&&z.2G(z.C-m[5].C)==m[5]||(G=="*="||G=="~=")&&z.J(m[5])>=0)^h)g.R(a)}r=g}B 7(m[1]==":"&&m[2]=="22-3u"){u e=6.1k++,g=[],17=/(\\d*)n\\+?(\\d*)/.1V(m[3]=="5L"&&"2n"||m[3]=="5K"&&"2n+1"||!/\\D/.17(m[3])&&"n+"+m[3]||m[3]),2Q=(17[1]||1)-0,d=17[2]-0;E(u i=0,2e=r.C;i<2e;i++){u j=r[i],L=j.L;7(e!=L.1k){u c=1;E(u n=L.1d;n;n=n.1X)7(n.1q==1)n.4a=c++;L.1k=e}u b=N;7(2Q==1){7(d==0||j.4a==d)b=K}B 7((j.4a+d)%2Q==0)b=K;7(b^h)g.R(j)}r=g}B{u f=6.4n[m[1]];7(1g f!="1s")f=6.4n[m[1]][m[2]];49("f = q(a,i){v "+f+"}");r=6.2s(r,f,h)}}v{r:r,t:t}},4p:q(c){u b=[];u a=c.L;1v(a&&a!=P){b.R(a);a=a.L}v b},22:q(a,e,c,b){e=e||1;u d=0;E(;a;a=a[c])7(a.1q==1&&++d==e)1F;v a},4q:q(n,a){u r=[];E(;n;n=n.1X){7(n.1q==1&&(!a||n!=a))r.R(n)}v r}});6.S={1A:q(d,e,c,b){7(6.M.1h&&d.3m!=I)d=18;7(!c.1Q)c.1Q=9.1Q++;7(b!=I){u f=c;c=q(){v f.O(9,19)};c.W=b;c.1Q=f.1Q}7(!d.$1a)d.$1a={};7(!d.$1p)d.$1p=q(){u a;7(1g 6=="I"||6.S.47)v a;a=6.S.1p.O(d,19);v a};u g=d.$1a[e];7(!g){g=d.$1a[e]={};7(d.46)d.46(e,d.$1p,N);B d.7M("5r"+e,d.$1p)}g[c.1Q]=c;7(!9.Y[e])9.Y[e]=[];7(6.2w(d,9.Y[e])==-1)9.Y[e].R(d)},1Q:1,Y:{},1E:q(b,c,a){u d=b.$1a,1Y,2p;7(d){7(c&&c.G){a=c.44;c=c.G}7(!c){E(c V d)9.1E(b,c)}B 7(d[c]){7(a)3l d[c][a.1Q];B E(a V b.$1a[c])3l d[c][a];E(1Y V d[c])1F;7(!1Y){7(b.43)b.43(c,b.$1p,N);B b.7J("5r"+c,b.$1p);1Y=H;3l d[c];1v(9.Y[c]&&((2p=6.2w(b,9.Y[c]))>=0))3l 9.Y[c][2p]}}E(1Y V d)1F;7(!1Y)b.$1p=b.$1a=H}},1t:q(c,b,d){b=6.2L(b||[]);7(!d)6.F(9.Y[c]||[],q(){6.S.1t(c,b,9)});B{u a,1Y,11=6.16(d[c]||H);b.5p(9.42({G:c,1O:d}));7(6.16(d.$1p)&&(a=d.$1p.O(d,b))!==N)9.47=K;7(11&&a!==N&&!6.Q(d,\'a\'))d[c]();9.47=N}},1p:q(b){u a;b=6.S.42(b||18.S||{});u c=9.$1a&&9.$1a[b.G],1S=[].51.3D(19,1);1S.5p(b);E(u j V c){1S[0].44=c[j];1S[0].W=c[j].W;7(c[j].O(9,1S)===N){b.2d();b.2D();a=N}}7(6.M.1h)b.1O=b.2d=b.2D=b.44=b.W=H;v a},42:q(c){u a=c;c=6.1c({},a);c.2d=q(){7(a.2d)v a.2d();a.7H=N};c.2D=q(){7(a.2D)v a.2D();a.7F=K};7(!c.1O&&c.5n)c.1O=c.5n;7(6.M.20&&c.1O.1q==3)c.1O=a.1O.L;7(!c.41&&c.4j)c.41=c.4j==c.1O?c.7C:c.4j;7(c.5k==H&&c.5j!=H){u e=P.4h,b=P.4y;c.5k=c.5j+(e&&e.5i||b.5i);c.7z=c.7y+(e&&e.5f||b.5f)}7(!c.3h&&(c.5e||c.5d))c.3h=c.5e||c.5d;7(!c.5c&&c.5b)c.5c=c.5b;7(!c.3h&&c.1J)c.3h=(c.1J&1?1:(c.1J&2?3:(c.1J&4?2:0)));v c}};6.11.1c({3g:q(c,a,b){v c=="3z"?9.3Z(c,a,b):9.F(q(){6.S.1A(9,c,b||a,b&&a)})},3Z:q(d,b,c){v 9.F(q(){6.S.1A(9,d,q(a){6(9).3U(a);v(c||b).O(9,19)},c&&b)})},3U:q(a,b){v 9.F(q(){6.S.1E(9,a,b)})},1t:q(a,b){v 9.F(q(){6.S.1t(a,b,9)})},1R:q(){u a=19;v 9.5a(q(e){9.4u=0==9.4u?1:0;e.2d();v a[9.4u].O(9,[e])||N})},7w:q(f,g){q 3W(e){u p=e.41;1v(p&&p!=9)2g{p=p.L}25(e){p=9};7(p==9)v N;v(e.G=="3V"?f:g).O(9,[e])}v 9.3V(3W).59(3W)},1G:q(f){7(6.3d)f.O(P,[6]);B 6.2q.R(q(){v f.O(9,[6])});v 9}});6.1c({3d:N,2q:[],1G:q(){7(!6.3d){6.3d=K;7(6.2q){6.F(6.2q,q(){9.O(P)});6.2q=H}7(6.M.3j||6.M.2a)P.43("58",6.1G,N);7(!18.7v.C)6(18).1W(q(){6("#3T").1E()})}}});14 q(){6.F(("7u,7t,1W,7s,7r,3z,5a,7q,"+"7p,7o,7n,3V,59,7m,2y,"+"4k,7l,7k,7j,2c").2R(","),q(i,o){6.11[o]=q(f){v f?9.3g(o,f):9.1t(o)}});7(6.M.3j||6.M.2a)P.46("58",6.1G,N);B 7(6.M.1h){P.7i("<7h"+"7f 2m=3T 7e=K "+"2u=//:><\\/3b>");u a=P.4d("3T");7(a)a.7d=q(){7(9.3a!="1n")v;6.1G()};a=H}B 7(6.M.20)6.3N=3m(q(){7(P.3a=="79"||P.3a=="1n"){3M(6.3N);6.3N=H;6.1G()}},10);6.S.1A(18,"1W",6.1G)};7(6.M.1h)6(18).3Z("3z",q(){u a=6.S.Y;E(u b V a){u c=a[b],i=c.C;7(i&&b!=\'3z\')77 c[i-1]&&6.S.1E(c[i-1],b);1v(--i)}});6.11.1c({76:q(c,b,a){9.1W(c,b,a,1)},1W:q(g,d,c,e){7(6.16(g))v 9.3g("1W",g);c=c||q(){};u f="3K";7(d)7(6.16(d)){c=d;d=H}B{d=6.2E(d);f="50"}u h=9;6.2Z({1C:g,G:f,W:d,2t:e,1n:q(a,b){7(b=="28"||!e&&b=="4V")h.1b("27",a.3c).3J().F(c,[a.3c,b,a]);B c.O(h,[a.3c,b,a])}});v 9},72:q(){v 6.2E(9)},3J:q(){v 9.1L("3b").F(q(){7(9.2u)6.4U(9.2u);B 6.3I(9.2A||9.5H||9.27||"")}).2U()}});6.F("4T,4I,4S,4R,4Q,4P".2R(","),q(i,o){6.11[o]=q(f){v 9.3g(o,f)}});6.1c({1M:q(e,c,a,d,b){7(6.16(c)){a=c;c=H}v 6.2Z({G:"3K",1C:e,W:c,28:a,3G:d,2t:b})},6X:q(d,b,a,c){v 6.1M(d,b,a,c,1)},4U:q(b,a){v 6.1M(b,H,a,"3b")},6V:q(c,b,a){v 6.1M(c,b,a,"4N")},6T:q(d,b,a,c){7(6.16(b)){a=b;b={}}v 6.2Z({G:"50",1C:d,W:b,28:a,3G:c})},6S:q(a){6.36.21=a},6Q:q(a){6.1c(6.36,a)},36:{Y:K,G:"3K",21:0,4O:"6P/x-6O-34-6N",4K:K,38:K,W:H},32:{},2Z:q(s){s=6.1c({},6.36,s);7(s.W){7(s.4K&&1g s.W!="1s")s.W=6.2E(s.W);7(s.G.2H()=="1M"){s.1C+=((s.1C.J("?")>-1)?"&":"?")+s.W;s.W=H}}7(s.Y&&!6.3L++)6.S.1t("4T");u f=N;u h=18.4Z?14 4Z("6L.6J"):14 4J();h.7b(s.G,s.1C,s.38);7(s.W)h.3Q("6H-6G",s.4O);7(s.2t)h.3Q("6F-3O-6D",6.32[s.1C]||"6C, 6B 6A 6z 4r:4r:4r 6y");h.3Q("X-6x-6w","4J");7(s.56)s.56(h);7(s.Y)6.S.1t("4P",[h,s]);u g=q(d){7(h&&(h.3a==4||d=="21")){f=K;7(i){3M(i);i=H}u c;2g{c=6.54(h)&&d!="21"?s.2t&&6.4F(h,s.1C)?"4V":"28":"2c";7(c!="2c"){u b;2g{b=h.3E("53-3O")}25(e){}7(s.2t&&b)6.32[s.1C]=b;u a=6.55(h,s.3G);7(s.28)s.28(a,c);7(s.Y)6.S.1t("4Q",[h,s])}B 6.2X(s,h,c)}25(e){c="2c";6.2X(s,h,c,e)}7(s.Y)6.S.1t("4S",[h,s]);7(s.Y&&!--6.3L)6.S.1t("4I");7(s.1n)s.1n(h,c);7(s.38)h=H}};u i=3m(g,13);7(s.21>0)4C(q(){7(h){h.6r();7(!f)g("21")}},s.21);2g{h.6p(s.W)}25(e){6.2X(s,h,H,e)}7(!s.38)g();v h},2X:q(s,a,b,e){7(s.2c)s.2c(a,b,e);7(s.Y)6.S.1t("4R",[a,s,e])},3L:0,54:q(r){2g{v!r.23&&7A.7B=="4l:"||(r.23>=5u&&r.23<6l)||r.23==5m||6.M.20&&r.23==I}25(e){}v N},4F:q(a,c){2g{u b=a.3E("53-3O");v a.23==5m||b==6.32[c]||6.M.20&&a.23==I}25(e){}v N},55:q(r,b){u c=r.3E("6k-G");u a=!b&&c&&c.J("4B")>=0;a=b=="4B"||a?r.6j:r.3c;7(b=="3b")6.3I(a);7(b=="4N")a=49("("+a+")");7(b=="3F")6("<1x>").3F(a).3J();v a},2E:q(a){u s=[];7(a.15==2b||a.3C)6.F(a,q(){s.R(2l(9.6i)+"="+2l(9.2v))});B E(u j V a)7(a[j]&&a[j].15==2b)6.F(a[j],q(){s.R(2l(j)+"="+2l(9))});B s.R(2l(j)+"="+2l(a[j]));v s.5M("&")},3I:q(a){7(18.4A)18.4A(a);B 7(6.M.20)18.4C(a,0);B 49.3D(18,a)}});6.11.1c({1m:q(b,a){v b?9.1w({1u:"1m",29:"1m",1e:"1m"},b,a):9.1i(":1y").F(q(){9.T.U=9.2i?9.2i:"";7(6.1f(9,"U")=="1P")9.T.U="2h"}).2U()},1j:q(b,a){v b?9.1w({1u:"1j",29:"1j",1e:"1j"},b,a):9.1i(":4f").F(q(){9.2i=9.2i||6.1f(9,"U");7(9.2i=="1P")9.2i="2h";9.T.U="1P"}).2U()},5G:6.11.1R,1R:q(a,b){v 6.16(a)&&6.16(b)?9.5G(a,b):a?9.1w({1u:"1R",29:"1R",1e:"1R"},a,b):9.F(q(){6(9)[6(9).37(":1y")?"1m":"1j"]()})},6e:q(b,a){v 9.1w({1u:"1m"},b,a)},6d:q(b,a){v 9.1w({1u:"1j"},b,a)},6b:q(b,a){v 9.1w({1u:"1R"},b,a)},6a:q(b,a){v 9.1w({1e:"1m"},b,a)},69:q(b,a){v 9.1w({1e:"1j"},b,a)},7U:q(c,a,b){v 9.1w({1e:a},c,b)},1w:q(d,h,f,g){v 9.1l(q(){u c=6(9).37(":1y"),1H=6.5z(h,f,g),5y=9;E(u p V d){7(d[p]=="1j"&&c||d[p]=="1m"&&!c)v 6.16(1H.1n)&&1H.1n.O(9);7(p=="1u"||p=="29"){1H.U=6.1f(9,"U");1H.2f=9.T.2f}}7(1H.2f!=H)9.T.2f="1y";9.2k=6.1c({},d);6.F(d,q(a,b){u e=14 6.2M(5y,1H,a);7(b.15==3y)e.2W(e.1K(),b);B e[b=="1R"?c?"1m":"1j":b](d)})})},1l:q(a,b){7(!b){b=a;a="2M"}v 9.F(q(){7(!9.1l)9.1l={};7(!9.1l[a])9.1l[a]=[];9.1l[a].R(b);7(9.1l[a].C==1)b.O(9)})}});6.1c({5z:q(b,a,c){u d=b&&b.15==64?b:{1n:c||!c&&a||6.16(b)&&b,1B:b,2I:c&&a||a&&a.15!=45&&a||(6.2I.4i?"4i":"4w")};d.1B=(d.1B&&d.1B.15==3y?d.1B:{61:60,89:5u}[d.1B])||8a;d.2N=d.1n;d.1n=q(){6.5I(9,"2M");7(6.16(d.2N))d.2N.O(9)};v d},2I:{4w:q(p,n,b,a){v b+a*p},4i:q(p,n,b,a){v((-5W.5X(p*5W.8e)/2)+0.5)*a+b}},1l:{},5I:q(b,a){a=a||"2M";7(b.1l&&b.1l[a]){b.1l[a].4e();u f=b.1l[a][0];7(f)f.O(b)}},3B:[],2M:q(f,e,g){u z=9;u y=f.T;z.a=q(){7(e.3A)e.3A.O(f,[z.2o]);7(g=="1e")6.1b(y,"1e",z.2o);B{y[g]=8m(z.2o)+"4o";y.U="2h"}};z.5V=q(){v 39(6.1f(f,g))};z.1K=q(){u r=39(6.2z(f,g));v r&&r>-8l?r:z.5V()};z.2W=q(c,b){z.4s=(14 5T()).5S();z.2o=c;z.a();6.3B.R(q(){v z.3A(c,b)});7(6.3B.C==1){u d=3m(q(){u a=6.3B;E(u i=0;i<a.C;i++)7(!a[i]())a.8j(i--,1);7(!a.C)3M(d)},13)}};z.1m=q(){7(!f.24)f.24={};f.24[g]=6.1b(f.T,g);e.1m=K;z.2W(0,9.1K());7(g!="1e")y[g]="8q";6(f).1m()};z.1j=q(){7(!f.24)f.24={};f.24[g]=6.1b(f.T,g);e.1j=K;z.2W(9.1K(),0)};z.3A=q(a,c){u t=(14 5T()).5S();7(t>e.1B+z.4s){z.2o=c;z.a();7(f.2k)f.2k[g]=K;u b=K;E(u i V f.2k)7(f.2k[i]!==K)b=N;7(b){7(e.U!=H){y.2f=e.2f;y.U=e.U;7(6.1f(f,"U")=="1P")y.U="2h"}7(e.1j)y.U="1P";7(e.1j||e.1m)E(u p V f.2k)6.1b(y,p,f.24[p])}7(b&&6.16(e.1n))e.1n.O(f);v N}B{u n=t-9.4s;u p=n/e.1B;z.2o=6.2I[e.2I](p,n,a,(c-a),e.1B);z.a()}v K}}})}',62,524,'||||||jQuery|if||this|||||||||||||||||function||||var|return||||||else|length||for|each|type|null|undefined|indexOf|true|parentNode|browser|false|apply|document|nodeName|push|event|style|display|in|data||global|||fn|className||new|constructor|isFunction|test|window|arguments|events|attr|extend|firstChild|opacity|css|typeof|msie|filter|hide|mergeNum|queue|show|complete|replace|handle|nodeType|table|string|trigger|height|while|animate|div|hidden|tbody|add|duration|url|toUpperCase|remove|break|ready|opt|_|button|cur|find|get|tb|target|none|guid|toggle|args|merge|styleFloat|exec|load|nextSibling|ret|pushStack|safari|timeout|nth|status|orig|catch|al|innerHTML|success|width|opera|Array|error|preventDefault|rl|overflow|try|block|oldblock|done|curAnim|encodeURIComponent|id||now|index|readyList|disabled|grep|ifModified|src|value|inArray|multiFilter|select|curCSS|text|checked|trim|stopPropagation|param|domManip|substr|toLowerCase|easing|chars|insertBefore|makeArray|fx|old|ownerDocument|last|first|split|childNodes|selected|end|tr|custom|handleError|empty|ajax|el|clean|lastModified|String|form|getAttribute|ajaxSettings|is|async|parseFloat|readyState|script|responseText|isReady|append|defaultView|bind|which|position|mozilla|map|delete|setInterval|static|RegExp|oWidth|removeChild|oHeight|cloneNode|match|child|toString|has|float|Number|unload|step|timers|jquery|call|getResponseHeader|html|dataType|props|globalEval|evalScripts|GET|active|clearInterval|safariTimer|Modified|num|setRequestHeader|getElementsByTagName|currentStyle|__ie_init|unbind|mouseover|handleHover|init|getComputedStyle|one|isXMLDoc|relatedTarget|fix|removeEventListener|handler|Function|addEventListener|triggered|visibility|eval|nodeIndex|radio|classFilter|getElementById|shift|visible|appendChild|documentElement|swing|fromElement|submit|file|swap|expr|px|parents|sibling|00|startTime|previousSibling|lastToggle|parent|linear|ol|body|tagName|execScript|xml|setTimeout|version|setArray|httpNotModified|fl|prop|ajaxStop|XMLHttpRequest|processData|alpha|href|json|contentType|ajaxSend|ajaxSuccess|ajaxError|ajaxComplete|ajaxStart|getScript|notmodified|colgroup|100|not|ActiveXObject|POST|slice|fieldset|Last|httpSuccess|httpData|beforeSend|getPropertyValue|DOMContentLoaded|mouseout|click|ctrlKey|metaKey|keyCode|charCode|scrollTop|unique|createElement|scrollLeft|clientX|pageX|webkit|304|srcElement|appendTo|unshift|prevObject|on|after|before|200|removeAttr|prepend|cssFloat|self|speed|parse|input|reset|image|password|checkbox|_toggle|textContent|dequeue|lastChild|odd|even|join|contains|gt|lt|eq|nodeValue|getTime|Date|zoom|max|Math|cos|font|maxLength|600|slow|maxlength|readOnly|Object|readonly|createTextNode|class|htmlFor|fadeOut|fadeIn|slideToggle|CSS1Compat|slideUp|slideDown|compatMode|boxModel|compatible|name|responseXML|content|300|ie|noConflict|ra|send|it|abort|rv|userAgent|navigator|concat|With|Requested|GMT|1970|Jan|01|Thu|Since|reverse|If|Type|Content|array|XMLHTTP|ig|Microsoft|NaN|urlencoded|www|application|ajaxSetup|val|ajaxTimeout|post|setAttribute|getJSON|getAttributeNode|getIfModified|method|FORM|action|options|serialize|col|th|td|loadIfModified|do|colg|loaded|tfoot|open|thead|onreadystatechange|defer|ipt|leg|scr|write|keyup|keypress|keydown|change|mousemove|mouseup|mousedown|dblclick|scroll|resize|focus|blur|frames|hover|clone|clientY|pageY|location|protocol|toElement|clientWidth|clientHeight|cancelBubble|relative|returnValue|left|detachEvent|right|absolute|attachEvent|substring|offsetWidth|object|offsetHeight|continue|Width|border|fadeTo|padding|size|uFFFF|Left|u0128|Right|Bottom|textarea|Top|enabled|innerText|only|toggleClass|removeClass|fast|400|wrap|addClass|removeAttribute|PI|insertAfter|prependTo|children|line|splice|siblings|10000|parseInt|prev|next|weight|1px|prototype'.split('|'),0,{}))
 
1
  /*
2
+ * jQuery 1.1.4 - New Wave Javascript
3
  *
4
  * Copyright (c) 2007 John Resig (jquery.com)
5
  * Dual licensed under the MIT (MIT-LICENSE.txt)
6
  * and GPL (GPL-LICENSE.txt) licenses.
7
  *
8
+ * $Date: 2007-08-23 21:49:27 -0400 (Thu, 23 Aug 2007) $
9
+ * $Rev: 2862 $
10
  */
11
+ eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('(9(){6(1f C!="Q")E v=C;E C=19.16=9(a,c){6(19==7||!7.4a)F 1s C(a,c);F 7.4a(a,c)};6(1f $!="Q")E B=$;19.$=C;E q=/^[^<]*(<(.|\\s)+>)[^>]*$|^#(\\w+)$/;C.15=C.3v={4a:9(a,c){a=a||R;6(1f a=="1E"){E m=q.2d(a);6(m&&(m[1]||!c)){6(m[1])a=C.3c([m[1]]);G{E b=R.37(m[3]);6(b)6(b.2j!=m[3])F C().1F(a);G{7[0]=b;7.H=1;F 7}G a=[]}}G F 1s C(c).1F(a)}G 6(C.1g(a))F 1s C(R)[C.15.1L?"1L":"2f"](a);F 7.5J(a.1b==1K&&a||(a.3w||a.H&&a!=19&&!a.1t&&a[0]!=Q&&a[0].1t)&&C.2V(a)||[a])},3w:"1.1.4",7K:9(){F 7.H},H:0,21:9(a){F a==Q?C.2V(7):7[a]},1O:9(a){E b=C(a);b.5c=7;F b},5J:9(a){7.H=0;1K.3v.Y.T(7,a);F 7},J:9(a,b){F C.J(7,a,b)},45:9(a){E b=-1;7.J(9(i){6(7==a)b=i});F b},1j:9(f,d,e){E c=f;6(f.1b==3n)6(d==Q)F 7.H&&C[e||"1j"](7[0],f)||Q;G{c={};c[f]=d}F 7.J(9(a){I(E b 17 c)C.1j(e?7.S:7,b,C.4Q(7,c[b],e,a,b))})},1h:9(b,a){F 7.1j(b,a,"34")},2Q:9(e){6(1f e!="4P"&&e!=K)F 7.3K().3H(R.60(e));E t="";C.J(e||7,9(){C.J(7.2Z,9(){6(7.1t!=8)t+=7.1t!=1?7.5S:C.15.2Q([7])})});F t},82:9(){E a,2e=1a;F 7.J(9(){6(!a)a=C.3c(2e,7.2I);E b=a[0].3B(O);7.P.2p(b,7);20(b.1k)b=b.1k;b.4p(7)})},3H:9(){F 7.2J(1a,O,1,9(a){7.4p(a)})},5v:9(){F 7.2J(1a,O,-1,9(a){7.2p(a,7.1k)})},5u:9(){F 7.2J(1a,M,1,9(a){7.P.2p(a,7)})},5t:9(){F 7.2J(1a,M,-1,9(a){7.P.2p(a,7.2a)})},3L:9(){F 7.5c||C([])},1F:9(t){E b=C.3M(7,9(a){F C.1F(t,a)});F 7.1O(/[^+>] [^+>]/.1d(t)||t.U("..")>-1?C.4d(b):b)},7o:9(e){e=e!=Q?e:O;E d=7.1r(7.1F("*"));6(C.N.12){d.J(9(){7.2l$1i={};I(E a 17 7.$1i)7.2l$1i[a]=C.14({},7.$1i[a])}).49()}E r=7.1O(C.3M(7,9(a){F a.3B(e)}));6(C.N.12){d.J(9(){E c=7.2l$1i;I(E a 17 c)I(E b 17 c[a])C.1c.1r(7,a,c[a][b],c[a][b].V);7.2l$1i=K})}6(e){E f=r.1r(r.1F(\'*\')).1l(\'2b,39[@L=3i]\');d.1l(\'2b,39[@L=3i]\').J(9(i){6(7.3j)f[i].3j=7.3j;6(7.27)f[i].27=O})}F r},1l:9(t){F 7.1O(C.1g(t)&&C.2B(7,9(b,a){F t.T(b,[a])})||C.2R(t,7))},5l:9(t){F 7.1O(t.1b==3n&&C.2R(t,7,O)||C.2B(7,9(a){F(t.1b==1K||t.3w)?C.4K(a,t)<0:a!=t}))},1r:9(t){F 7.1O(C.29(7.21(),t.1b==3n?C(t).21():t.H!=Q&&(!t.W||t.W=="6s")?t:[t]))},3y:9(a){F a?C.2R(a,7).H>0:M},2G:9(a){F a==Q?(7.H?7[0].2A:K):7.1j("2A",a)},5W:9(a){F a==Q?(7.H?7[0].2W:K):7.3K().3H(a)},3S:9(){F 7.1O(1K.3v.3S.T(7,1a))},2J:9(f,d,g,e){E c=7.H>1,a;F 7.J(9(){6(!a){a=C.3c(f,7.2I);6(g<0)a.8E()}E b=7;6(d&&C.W(7,"1A")&&C.W(a[0],"3O"))b=7.4L("1w")[0]||7.4p(R.6a("1w"));C.J(a,9(){6(C.W(7,"33")){6(7.32)C.31({1G:7.32,2w:M,3G:"33"});G C.4E(7.2Q||7.5Z||7.2W||"")}G e.T(b,[c?7.3B(O):7])})})}};C.14=C.15.14=9(){E c=1a[0]||{},a=1,1M=1a.H,4D=M;6(c.1b==8d){4D=c;c=1a[1]||{}}6(1M==1){c=7;a=0}E b;I(;a<1M;a++)6((b=1a[a])!=K)I(E i 17 b){6(c==b[i])5X;6(4D&&1f b[i]==\'4P\'&&c[i])C.14(c[i],b[i]);G 6(b[i]!=Q)c[i]=b[i]}F c};C.14({8a:9(a){19.$=B;6(a)19.16=v;F C},1g:9(a){F!!a&&1f a!="1E"&&!a.W&&a.1b!=1K&&/9/i.1d(a+"")},3E:9(a){F a.3D&&!a.4z||a.4y&&a.2I&&!a.2I.4z},4E:9(a){a=C.2s(a);6(a){6(19.5N)19.5N(a);G 6(C.N.1H)19.4x(a,0);G 2T.2S(19,a)}},W:9(b,a){F b.W&&b.W.1I()==a.1I()},J:9(a,b,c){6(c){6(a.H==Q)I(E i 17 a)b.T(a[i],c);G I(E i=0,3A=a.H;i<3A;i++)6(b.T(a[i],c)===M)1J}G{6(a.H==Q)I(E i 17 a)b.2S(a[i],i,a[i]);G I(E i=0,3A=a.H,2G=a[0];i<3A&&b.2S(2G,i,2G)!==M;2G=a[++i]){}}F a},4Q:9(c,b,d,e,a){6(C.1g(b))b=b.2S(c,[e]);E f=/z-?45|7S-?7Q|1e|5y|7O-?1u/i;F b&&b.1b==3x&&d=="34"&&!f.1d(a)?b+"4t":b},18:{1r:9(b,c){C.J((c||"").2M(/\\s+/),9(i,a){6(!C.18.2N(b.18,a))b.18+=(b.18?" ":"")+a})},23:9(b,c){b.18=c!=Q?C.2B(b.18.2M(/\\s+/),9(a){F!C.18.2N(c,a)}).5w(" "):""},2N:9(t,c){F C.4K(c,(t.18||t).3s().2M(/\\s+/))>-1}},1V:9(e,o,f){I(E i 17 o){e.S["2U"+i]=e.S[i];e.S[i]=o[i]}f.T(e,[]);I(E i 17 o)e.S[i]=e.S["2U"+i]},1h:9(e,p){6(p=="1u"||p=="24"){E b={},3p,3o,d=["7J","7G","7F","7B"];C.J(d,9(){b["7A"+7]=0;b["7x"+7+"7u"]=0});C.1V(e,b,9(){6(C(e).3y(\':4N\')){3p=e.7t;3o=e.7q}G{e=C(e.3B(O)).1F(":4e").5d("27").3L().1h({3V:"1C",3k:"7n",11:"2m",7h:"0",7e:"0"}).57(e.P)[0];E a=C.1h(e.P,"3k")||"3g";6(a=="3g")e.P.S.3k="76";3p=e.74;3o=e.71;6(a=="3g")e.P.S.3k="3g";e.P.3e(e)}});F p=="1u"?3p:3o}F C.34(e,p)},34:9(h,d,g){E i,1R=[],1V=[];9 2E(a){6(!C.N.1H)F M;E b=R.2L.3b(a,K);F!b||b.44("2E")==""}6(d=="1e"&&C.N.12){i=C.1j(h.S,"1e");F i==""?"1":i}6(d.2k(/3a/i))d=x;6(!g&&h.S[d])i=h.S[d];G 6(R.2L&&R.2L.3b){6(d.2k(/3a/i))d="3a";d=d.1v(/([A-Z])/g,"-$1").2D();E e=R.2L.3b(h,K);6(e&&!2E(h))i=e.44(d);G{I(E a=h;a&&2E(a);a=a.P)1R.42(a);I(a=0;a<1R.H;a++)6(2E(1R[a])){1V[a]=1R[a].S.11;1R[a].S.11="2m"}i=d=="11"&&1V[1R.H-1]!=K?"1T":R.2L.3b(h,K).44(d)||"";I(a=0;a<1V.H;a++)6(1V[a]!=K)1R[a].S.11=1V[a]}6(d=="1e"&&i=="")i="1"}G 6(h.41){E f=d.1v(/\\-(\\w)/g,9(m,c){F c.1I()});i=h.41[d]||h.41[f]}F i},3c:9(a,c){E r=[];c=c||R;C.J(a,9(i,b){6(!b)F;6(b.1b==3x)b=b.3s();6(1f b=="1E"){E s=C.2s(b).2D(),1m=c.6a("1m"),1P=[];E a=!s.U("<1Z")&&[1,"<2b>","</2b>"]||!s.U("<6L")&&[1,"<4V>","</4V>"]||s.2k(/^<(6I|1w|6H|6F|6D)/)&&[1,"<1A>","</1A>"]||!s.U("<3O")&&[2,"<1A><1w>","</1w></1A>"]||(!s.U("<6A")||!s.U("<6y"))&&[3,"<1A><1w><3O>","</3O></1w></1A>"]||!s.U("<6x")&&[2,"<1A><1w></1w><4T>","</4T></1A>"]||C.N.12&&[1,"1m<1m>","</1m>"]||[0,"",""];1m.2W=a[1]+b+a[2];20(a[0]--)1m=1m.3Y;6(C.N.12){6(!s.U("<1A")&&s.U("<1w")<0)1P=1m.1k&&1m.1k.2Z;G 6(a[1]=="<1A>"&&s.U("<1w")<0)1P=1m.2Z;I(E n=1P.H-1;n>=0;--n)6(C.W(1P[n],"1w")&&!1P[n].2Z.H)1P[n].P.3e(1P[n]);6(/^\\s/.1d(b))1m.2p(c.60(b.2k(/^\\s*/)[0]),1m.1k)}b=C.2V(1m.2Z)}6(0===b.H&&(!C.W(b,"38")&&!C.W(b,"2b")))F;6(b[0]==Q||C.W(b,"38")||b.6u)r.Y(b);G r=C.29(r,b)});F r},1j:9(c,d,a){E e=C.3E(c)?{}:C.4q;6(d=="28"&&C.N.1H)c.P.3j;6(e[d]){6(a!=Q)c[e[d]]=a;F c[e[d]]}G 6(C.N.12&&d=="S")F C.1j(c.S,"6p",a);G 6(a==Q&&C.N.12&&C.W(c,"38")&&(d=="6n"||d=="6m"))F c.6k(d).5S;G 6(c.4y){6(a!=Q)c.6j(d,a);6(C.N.12&&/5R|32/.1d(d)&&!C.3E(c))F c.3F(d,2);F c.3F(d)}G{6(d=="1e"&&C.N.12){6(a!=Q){c.5y=1;c.1l=(c.1l||"").1v(/5T\\([^)]*\\)/,"")+(3m(a).3s()=="6d"?"":"5T(1e="+a*6c+")")}F c.1l?(3m(c.1l.2k(/1e=([^)]*)/)[1])/6c).3s():""}d=d.1v(/-([a-z])/8I,9(z,b){F b.1I()});6(a!=Q)c[d]=a;F c[d]}},2s:9(t){F(t||"").1v(/^\\s+|\\s+$/g,"")},2V:9(a){E r=[];6(1f a!="8H")I(E i=0,1M=a.H;i<1M;i++)r.Y(a[i]);G r=a.3S(0);F r},4K:9(b,a){I(E i=0,1M=a.H;i<1M;i++)6(a[i]==b)F i;F-1},29:9(a,b){6(C.N.12){I(E i=0;b[i];i++)6(b[i].1t!=8)a.Y(b[i])}G I(E i=0;b[i];i++)a.Y(b[i]);F a},4d:9(a){E r=[],4O=C.1q++;2g{I(E i=0,69=a.H;i<69;i++)6(4O!=a[i].1q){a[i].1q=4O;r.Y(a[i])}}2h(e){r=a}F r},1q:0,2B:9(b,a,c){6(1f a=="1E")a=2T("M||9(a,i){F "+a+"}");E d=[];I(E i=0,3P=b.H;i<3P;i++)6(!c&&a(b[i],i)||c&&!a(b[i],i))d.Y(b[i]);F d},3M:9(c,b){6(1f b=="1E")b=2T("M||9(a){F "+b+"}");E d=[];I(E i=0,3P=c.H;i<3P;i++){E a=b(c[i],i);6(a!==K&&a!=Q){6(a.1b!=1K)a=[a];d=d.8x(a)}}F d}});E u=8w.8u.2D();C.N={6b:(u.2k(/.+(?:8s|8q|8p|8o)[\\/: ]([\\d.]+)/)||[])[1],1H:/61/.1d(u),2t:/2t/.1d(u),12:/12/.1d(u)&&!/2t/.1d(u),3J:/3J/.1d(u)&&!/(8n|61)/.1d(u)};E x=C.N.12?"3I":"4G";C.14({8m:!C.N.12||R.8l=="8k",3I:C.N.12?"3I":"4G",4q:{"I":"8j","8i":"18","3a":x,4G:x,3I:x,2W:"2W",18:"18",2A:"2A",30:"30",27:"27",8h:"8g",28:"28",8f:"8e"}});C.J({5Y:"a.P",4C:"16.4C(a)",8c:"16.25(a,2,\'2a\')",8b:"16.25(a,2,\'4B\')",88:"16.4A(a.P.1k,a)",87:"16.4A(a.1k)"},9(i,n){C.15[i]=9(a){E b=C.3M(7,n);6(a&&1f a=="1E")b=C.2R(a,b);F 7.1O(C.4d(b))}});C.J({57:"3H",86:"5v",2p:"5u",85:"5t"},9(i,n){C.15[i]=9(){E a=1a;F 7.J(9(){I(E j=0,1M=a.H;j<1M;j++)C(a[j])[n](7)})}});C.J({5d:9(a){C.1j(7,a,"");7.84(a)},83:9(c){C.18.1r(7,c)},81:9(c){C.18.23(7,c)},80:9(c){C.18[C.18.2N(7,c)?"23":"1r"](7,c)},23:9(a){6(!a||C.1l(a,[7]).r.H)7.P.3e(7)},3K:9(){20(7.1k)7.3e(7.1k)}},9(i,n){C.15[i]=9(){F 7.J(n,1a)}});C.J(["5Q","5P","5M","5L"],9(i,n){C.15[n]=9(a,b){F 7.1l(":"+n+"("+a+")",b)}});C.J(["1u","24"],9(i,n){C.15[n]=9(h){F h==Q?(7.H?C.1h(7[0],n):K):7.1h(n,h.1b==3n?h:h+"4t")}});E A=C.N.1H&&5K(C.N.6b)<7Z?"(?:[\\\\w*2l-]|\\\\\\\\.)":"(?:[\\\\w\\7Y-\\7V*2l-]|\\\\\\\\.)",5I=1s 3C("^[/>]\\\\s*("+A+"+)"),5H=1s 3C("^("+A+"+)(#)("+A+"+)"),5G=1s 3C("^([#.]?)("+A+"*)");C.14({4w:{"":"m[2]==\'*\'||16.W(a,m[2])","#":"a.3F(\'2j\')==m[2]",":":{5P:"i<m[3]-0",5M:"i>m[3]-0",25:"m[3]-0==i",5Q:"m[3]-0==i",2H:"i==0",2P:"i==r.H-1",5E:"i%2==0",5D:"i%2","2H-3z":"a.P.4L(\'*\')[0]==a","2P-3z":"16.25(a.P.3Y,1,\'4B\')==a","7U-3z":"!16.25(a.P.3Y,2,\'4B\')",5Y:"a.1k",3K:"!a.1k",5L:"(a.5Z||a.7T||\'\').U(m[3])>=0",4N:\'"1C"!=a.L&&16.1h(a,"11")!="1T"&&16.1h(a,"3V")!="1C"\',1C:\'"1C"==a.L||16.1h(a,"11")=="1T"||16.1h(a,"3V")=="1C"\',7R:"!a.30",30:"a.30",27:"a.27",28:"a.28||16.1j(a,\'28\')",2Q:"\'2Q\'==a.L",4e:"\'4e\'==a.L",3i:"\'3i\'==a.L",4v:"\'4v\'==a.L",5C:"\'5C\'==a.L",4u:"\'4u\'==a.L",5B:"\'5B\'==a.L",5A:"\'5A\'==a.L",1X:\'"1X"==a.L||16.W(a,"1X")\',39:"/39|2b|7P|1X/i.1d(a.W)",2N:"16.1F(m[3],a).H"},"[":"16.1F(m[2],a).H"},5x:[/^\\[ *(@)([\\w-]+) *([!*$^~=]*) *(\'?"?)(.*?)\\4 *\\]/,/^(\\[)\\s*(.*?(\\[.*?\\])?[^[]*?)\\s*\\]/,/^(:)([\\w-]+)\\("?\'?(.*?(\\(.*?\\))?[^(]*?)"?\'?\\)/,1s 3C("^([:.#]*)("+A+"+)")],2R:9(a,c,b){E d,1Y=[];20(a&&a!=d){d=a;E f=C.1l(a,c,b);a=f.t.1v(/^\\s*,\\s*/,"");1Y=b?c=f.r:C.29(1Y,f.r)}F 1Y},1F:9(t,l){6(1f t!="1E")F[t];6(l&&!l.1t)l=K;l=l||R;6(!t.U("//")){t=t.2K(2,t.H)}G 6(!t.U("/")&&!l.2I){l=l.3D;t=t.2K(1,t.H);6(t.U("/")>=1)t=t.2K(t.U("/"),t.H)}E d=[l],2q=[],2P;20(t&&2P!=t){E r=[];2P=t;t=C.2s(t).1v(/^\\/\\//,"");E k=M;E g=5I;E m=g.2d(t);6(m){E o=m[1].1I();I(E i=0;d[i];i++)I(E c=d[i].1k;c;c=c.2a)6(c.1t==1&&(o=="*"||c.W.1I()==o.1I()))r.Y(c);d=r;t=t.1v(g,"");6(t.U(" ")==0)5X;k=O}G{g=/^((\\/?\\.\\.)|([>\\/+~]))\\s*(\\w*)/i;6((m=g.2d(t))!=K){r=[];E o=m[4],1q=C.1q++;m=m[1];I(E j=0,2o=d.H;j<2o;j++)6(m.U("..")<0){E n=m=="~"||m=="+"?d[j].2a:d[j].1k;I(;n;n=n.2a)6(n.1t==1){6(m=="~"&&n.1q==1q)1J;6(!o||n.W.1I()==o.1I()){6(m=="~")n.1q=1q;r.Y(n)}6(m=="+")1J}}G r.Y(d[j].P);d=r;t=C.2s(t.1v(g,""));k=O}}6(t&&!k){6(!t.U(",")){6(l==d[0])d.4s();2q=C.29(2q,d);r=d=[l];t=" "+t.2K(1,t.H)}G{E h=5H;E m=h.2d(t);6(m){m=[0,m[2],m[3],m[1]]}G{h=5G;m=h.2d(t)}m[2]=m[2].1v(/\\\\/g,"");E f=d[d.H-1];6(m[1]=="#"&&f&&f.37&&!C.3E(f)){E p=f.37(m[2]);6((C.N.12||C.N.2t)&&p&&1f p.2j=="1E"&&p.2j!=m[2])p=C(\'[@2j="\'+m[2]+\'"]\',f)[0];d=r=p&&(!m[3]||C.W(p,m[3]))?[p]:[]}G{I(E i=0;d[i];i++){E a=m[1]!=""||m[0]==""?"*":m[2];6(a=="*"&&d[i].W.2D()=="4P")a="2O";r=C.29(r,d[i].4L(a))}6(m[1]==".")r=C.4r(r,m[2]);6(m[1]=="#"){E e=[];I(E i=0;r[i];i++)6(r[i].3F("2j")==m[2]){e=[r[i]];1J}r=e}d=r}t=t.1v(h,"")}}6(t){E b=C.1l(t,r);d=r=b.r;t=C.2s(b.t)}}6(t)d=[];6(d&&l==d[0])d.4s();2q=C.29(2q,d);F 2q},4r:9(r,m,a){m=" "+m+" ";E c=[];I(E i=0;r[i];i++){E b=(" "+r[i].18+" ").U(m)>=0;6(!a&&b||a&&!b)c.Y(r[i])}F c},1l:9(t,r,h){E d;20(t&&t!=d){d=t;E p=C.5x,m;I(E i=0;p[i];i++){m=p[i].2d(t);6(m){t=t.7N(m[0].H);m[2]=m[2].1v(/\\\\/g,"");1J}}6(!m)1J;6(m[1]==":"&&m[2]=="5l")r=C.1l(m[3],r,O).r;G 6(m[1]==".")r=C.4r(r,m[2],h);G 6(m[1]=="@"){E g=[],L=m[3];I(E i=0,2o=r.H;i<2o;i++){E a=r[i],z=a[C.4q[m[2]]||m[2]];6(z==K||/5R|32|28/.1d(m[2]))z=C.1j(a,m[2])||\'\';6((L==""&&!!z||L=="="&&z==m[5]||L=="!="&&z!=m[5]||L=="^="&&z&&!z.U(m[5])||L=="$="&&z.2K(z.H-m[5].H)==m[5]||(L=="*="||L=="~=")&&z.U(m[5])>=0)^h)g.Y(a)}r=g}G 6(m[1]==":"&&m[2]=="25-3z"){E e=C.1q++,g=[],1d=/(\\d*)n\\+?(\\d*)/.2d(m[3]=="5E"&&"2n"||m[3]=="5D"&&"2n+1"||!/\\D/.1d(m[3])&&"n+"+m[3]||m[3]),2H=(1d[1]||1)-0,d=1d[2]-0;I(E i=0,2o=r.H;i<2o;i++){E j=r[i],P=j.P;6(e!=P.1q){E c=1;I(E n=P.1k;n;n=n.2a)6(n.1t==1)n.4o=c++;P.1q=e}E b=M;6(2H==1){6(d==0||j.4o==d)b=O}G 6((j.4o+d)%2H==0)b=O;6(b^h)g.Y(j)}r=g}G{E f=C.4w[m[1]];6(1f f!="1E")f=C.4w[m[1]][m[2]];f=2T("M||9(a,i){F "+f+"}");r=C.2B(r,f,h)}}F{r:r,t:t}},4C:9(c){E b=[];E a=c.P;20(a&&a!=R){b.Y(a);a=a.P}F b},25:9(a,e,c,b){e=e||1;E d=0;I(;a;a=a[c])6(a.1t==1&&++d==e)1J;F a},4A:9(n,a){E r=[];I(;n;n=n.2a){6(n.1t==1&&(!a||n!=a))r.Y(n)}F r}});C.1c={1r:9(f,d,c,b){6(C.N.12&&f.3t!=Q)f=19;6(!c.22)c.22=7.22++;6(b!=Q){E e=c;c=9(){F e.T(7,1a)};c.V=b;c.22=e.22}6(!f.$1i)f.$1i={};6(!f.$1y)f.$1y=9(){E a;6(1f C=="Q"||C.1c.4n)F a;a=C.1c.1y.T(f,1a);F a};E g=f.$1i[d];6(!g){g=f.$1i[d]={};6(f.4m)f.4m(d,f.$1y,M);G f.7M("3r"+d,f.$1y)}g[c.22]=c;7.1D[d]=O},22:1,1D:{},23:9(c,b,a){E d=c.$1i,2c,45;6(d){6(b&&b.L){a=b.4l;b=b.L}6(!b){I(b 17 d)7.23(c,b)}G 6(d[b]){6(a)4k d[b][a.22];G I(a 17 c.$1i[b])4k d[b][a];I(2c 17 d[b])1J;6(!2c){6(c.4j)c.4j(b,c.$1y,M);G c.7L("3r"+b,c.$1y);2c=K;4k d[b]}}I(2c 17 d)1J;6(!2c)c.$1y=c.$1i=K}},1z:9(c,b,d){b=C.2V(b||[]);6(!d){6(7.1D[c])C("*").1r([19,R]).1z(c,b)}G{E a,2c,15=C.1g(d[c]||K);b.42(7.4i({L:c,1S:d}));6(C.1g(d.$1y))a=d.$1y.T(d,b);6(!15&&d["3r"+c]&&d["3r"+c].T(d,b)===M)a=M;6(15&&a!==M&&!(C.W(d,\'a\')&&c=="4h")){7.4n=O;d[c]()}7.4n=M}},1y:9(b){E a;b=C.1c.4i(b||19.1c||{});E c=7.$1i&&7.$1i[b.L],2e=1K.3v.3S.2S(1a,1);2e.42(b);I(E j 17 c){2e[0].4l=c[j];2e[0].V=c[j].V;6(c[j].T(7,2e)===M){b.2u();b.2X();a=M}}6(C.N.12)b.1S=b.2u=b.2X=b.4l=b.V=K;F a},4i:9(c){E a=c;c=C.14({},a);c.2u=9(){6(a.2u)a.2u();a.7I=M};c.2X=9(){6(a.2X)a.2X();a.7H=O};6(!c.1S&&c.5r)c.1S=c.5r;6(C.N.1H&&c.1S.1t==3)c.1S=a.1S.P;6(!c.4g&&c.4F)c.4g=c.4F==c.1S?c.7C:c.4F;6(c.5p==K&&c.66!=K){E e=R.3D,b=R.4z;c.5p=c.66+(e&&e.5o||b.5o||0);c.7z=c.7v+(e&&e.5m||b.5m||0)}6(!c.3Q&&(c.5k||c.5j))c.3Q=c.5k||c.5j;6(!c.5i&&c.5g)c.5i=c.5g;6(!c.3Q&&c.1X)c.3Q=(c.1X&1?1:(c.1X&2?3:(c.1X&4?2:0)));F c}};C.15.14({3l:9(c,a,b){F c=="5f"?7.5e(c,a,b):7.J(9(){C.1c.1r(7,c,b||a,b&&a)})},5e:9(d,b,c){F 7.J(9(){C.1c.1r(7,d,9(a){C(7).49(a);F(c||b).T(7,1a)},c&&b)})},49:9(a,b){F 7.J(9(){C.1c.23(7,a,b)})},1z:9(a,b){F 7.J(9(){C.1c.1z(a,b,7)})},1W:9(){E a=1a;F 7.4h(9(e){7.3T=0==7.3T?1:0;e.2u();F a[7.3T].T(7,[e])||M})},7p:9(f,g){9 3U(e){E p=e.4g;20(p&&p!=7)2g{p=p.P}2h(e){p=7};6(p==7)F M;F(e.L=="3W"?f:g).T(7,[e])}F 7.3W(3U).5b(3U)},1L:9(f){5a();6(C.36)f.T(R,[C]);G C.2C.Y(9(){F f.T(7,[C])});F 7}});C.14({36:M,2C:[],1L:9(){6(!C.36){C.36=O;6(C.2C){C.J(C.2C,9(){7.T(R)});C.2C=K}6(C.N.3J||C.N.2t)R.4j("59",C.1L,M);6(!19.7m.H)C(19).2f(9(){C("#4b").23()})}}});C.J(("7l,7k,2f,7j,7i,5f,4h,7g,"+"7f,7d,7c,3W,5b,7b,2b,"+"4u,7a,79,78,3f").2M(","),9(i,o){C.15[o]=9(f){F f?7.3l(o,f):7.1z(o)}});E w=M;9 5a(){6(w)F;w=O;6(C.N.3J||C.N.2t)R.4m("59",C.1L,M);G 6(C.N.12){R.75("<73"+"72 2j=4b 70=O "+"32=//:><\\/33>");E a=R.37("4b");6(a)a.6Z=9(){6(R.3d!="1x")F;C.1L()};a=K}G 6(C.N.1H)C.48=3t(9(){6(R.3d=="6Y"||R.3d=="1x"){47(C.48);C.48=K;C.1L()}},10);C.1c.1r(19,"2f",C.1L)}C.15.14({6X:9(c,b,a){7.2f(c,b,a,1)},2f:9(g,e,c,d){6(C.1g(g))F 7.3l("2f",g);c=c||9(){};E f="46";6(e)6(C.1g(e)){c=e;e=K}G{e=C.2O(e);f="55"}E h=7;C.31({1G:g,L:f,V:e,2F:d,1x:9(a,b){6(b=="1U"||!d&&b=="54")h.5W(a.43);4x(9(){h.J(c,[a.43,b,a])},13)}});F 7},6W:9(){F C.2O(7)},6V:9(){}});C.J("53,52,51,50,4Z,5h".2M(","),9(i,o){C.15[o]=9(f){F 7.3l(o,f)}});C.14({21:9(e,c,a,d,b){6(C.1g(c)){a=c;c=K}F C.31({L:"46",1G:e,V:c,1U:a,3G:d,2F:b})},6U:9(d,b,a,c){F C.21(d,b,a,c,1)},6T:9(b,a){F C.21(b,K,a,"33")},77:9(c,b,a){F C.21(c,b,a,"56")},6S:9(d,b,a,c){6(C.1g(b)){a=b;b={}}F C.31({L:"55",1G:d,V:b,1U:a,3G:c})},6R:9(a){C.3u.1Q=a},6Q:9(a){C.14(C.3u,a)},3u:{1D:O,L:"46",1Q:0,4Y:"6P/x-6O-38-6N",4X:O,2w:O,V:K},3h:{},31:9(s){s=C.14(O,s,C.14(O,{},C.3u,s));6(s.V){6(s.4X&&1f s.V!="1E")s.V=C.2O(s.V);6(s.L.2D()=="21"){s.1G+=(s.1G.U("?")>-1?"&":"?")+s.V;s.V=K}}6(s.1D&&!C.40++)C.1c.1z("53");E f=M;E h=19.4W?1s 4W("6M.6K"):1s 58();h.6J(s.L,s.1G,s.2w);6(s.V)h.4c("7r-7s",s.4Y);6(s.2F)h.4c("6G-3Z-6E",C.3h[s.1G]||"7w, 6C 7y 6B 4J:4J:4J 6z");h.4c("X-7D-7E","58");6(s.4U)s.4U(h);6(s.1D)C.1c.1z("5h",[h,s]);E g=9(d){6(!f&&h&&(h.3d==4||d=="1Q")){f=O;6(i){47(i);i=K}E c=d=="1Q"&&"1Q"||!C.5n(h)&&"3f"||s.2F&&C.5s(h,s.1G)&&"54"||"1U";6(c=="1U"){2g{E a=C.5q(h,s.3G)}2h(e){c="4I"}}6(c=="1U"){E b;2g{b=h.4f("4S-3Z")}2h(e){}6(s.2F&&b)C.3h[s.1G]=b;6(s.1U)s.1U(a,c);6(s.1D)C.1c.1z("4Z",[h,s])}G C.3X(s,h,c);6(s.1D)C.1c.1z("51",[h,s]);6(s.1D&&!--C.40)C.1c.1z("52");6(s.1x)s.1x(h,c);6(s.2w)h=K}};6(s.2w){E i=3t(g,13);6(s.1Q>0)4x(9(){6(h){h.6w();6(!f)g("1Q")}},s.1Q)}2g{h.6v(s.V)}2h(e){C.3X(s,h,K,e)}6(!s.2w)g();F h},3X:9(s,a,b,e){6(s.3f)s.3f(a,b,e);6(s.1D)C.1c.1z("50",[a,s,e])},40:0,5n:9(r){2g{F!r.26&&6t.6r=="4v:"||(r.26>=4R&&r.26<6q)||r.26==5z||C.N.1H&&r.26==Q}2h(e){}F M},5s:9(a,c){2g{E b=a.4f("4S-3Z");F a.26==5z||b==C.3h[c]||C.N.1H&&a.26==Q}2h(e){}F M},5q:9(r,a){E b=r.4f("6o-L");E c=a=="5F"||!a&&b&&b.U("5F")>=0;V=c?r.7W:r.43;6(c&&V.3D.4y=="4I")7X"4I";6(a=="33")C.4E(V);6(a=="56")V=2T("("+V+")");F V},2O:9(a){E s=[];6(a.1b==1K||a.3w)C.J(a,9(){s.Y(2y(7.6l)+"="+2y(7.2A))});G I(E j 17 a)6(a[j]&&a[j].1b==1K)C.J(a[j],9(){s.Y(2y(j)+"="+2y(7))});G s.Y(2y(j)+"="+2y(a[j]));F s.5w("&")}});C.15.14({1o:9(b,a){F b?7.1B({1u:"1o",24:"1o",1e:"1o"},b,a):7.1l(":1C").J(9(){7.S.11=7.2r?7.2r:"";6(C.1h(7,"11")=="1T")7.S.11="2m"}).3L()},1p:9(b,a){F b?7.1B({1u:"1p",24:"1p",1e:"1p"},b,a):7.1l(":4N").J(9(){7.2r=7.2r||C.1h(7,"11");6(7.2r=="1T")7.2r="2m";7.S.11="1T"}).3L()},5O:C.15.1W,1W:9(a,b){F C.1g(a)&&C.1g(b)?7.5O(a,b):a?7.1B({1u:"1W",24:"1W",1e:"1W"},a,b):7.J(9(){C(7)[C(7).3y(":1C")?"1o":"1p"]()})},6i:9(b,a){F 7.1B({1u:"1o"},b,a)},6h:9(b,a){F 7.1B({1u:"1p"},b,a)},6g:9(b,a){F 7.1B({1u:"1W"},b,a)},6f:9(b,a){F 7.1B({1e:"1o"},b,a)},89:9(b,a){F 7.1B({1e:"1p"},b,a)},6e:9(c,a,b){F 7.1B({1e:a},c,b)},1B:9(d,h,f,g){F 7.1n(9(){E c=C(7).3y(":1C"),1Z=C.5V(h,f,g),5U=7;I(E p 17 d){6(d[p]=="1p"&&c||d[p]=="1o"&&!c)F C.1g(1Z.1x)&&1Z.1x.T(7);6(p=="1u"||p=="24"){1Z.11=C.1h(7,"11");1Z.2z=7.S.2z}}6(1Z.2z!=K)7.S.2z="1C";7.2v=C.14({},d);C.J(d,9(a,b){E e=1s C.2Y(5U,1Z,a);6(b.1b==3x)e.3R(e.1Y()||0,b);G e[b=="1W"?c?"1o":"1p":b](d)});F O})},1n:9(a,b){6(!b){b=a;a="2Y"}F 7.J(9(){6(!7.1n)7.1n={};6(!7.1n[a])7.1n[a]=[];7.1n[a].Y(b);6(7.1n[a].H==1)b.T(7)})}});C.14({5V:9(b,a,c){E d=b&&b.1b==8G?b:{1x:c||!c&&a||C.1g(b)&&b,1N:b,35:c&&a||a&&a.1b!=8F&&a};d.1N=(d.1N&&d.1N.1b==3x?d.1N:{8D:8C,8B:4R}[d.1N])||8A;d.2U=d.1x;d.1x=9(){C.68(7,"2Y");6(C.1g(d.2U))d.2U.T(7)};F d},35:{62:9(p,n,b,a){F b+a*p},4H:9(p,n,b,a){F((-67.8z(p*67.8y)/2)+0.5)*a+b}},1n:{},68:9(b,a){a=a||"2Y";6(b.1n&&b.1n[a]){b.1n[a].4s();E f=b.1n[a][0];6(f)f.T(b)}},3N:[],2Y:9(f,e,g){E z=7;E y=f.S;z.a=9(){6(e.3q)e.3q.T(f,[z.2x]);6(g=="1e")C.1j(y,"1e",z.2x);G{y[g]=5K(z.2x)+"4t";6(g=="1u"||g=="24")y.11="2m"}};z.65=9(){F 3m(C.1h(f,g))};z.1Y=9(){E r=3m(C.34(f,g));F r&&r>-8v?r:z.65()};z.3R=9(c,b){z.4M=(1s 64()).63();z.2x=c;z.a();C.3N.Y(9(){F z.3q(c,b)});6(C.3N.H==1){E d=3t(9(){E a=C.3N;I(E i=0;i<a.H;i++)6(!a[i]())a.8t(i--,1);6(!a.H)47(d)},13)}};z.1o=9(){6(!f.2i)f.2i={};f.2i[g]=C.1j(f.S,g);e.1o=O;z.3R(0,7.1Y());6(g!="1e")y[g]="8r";C(f).1o()};z.1p=9(){6(!f.2i)f.2i={};f.2i[g]=C.1j(f.S,g);e.1p=O;z.3R(7.1Y(),0)};z.3q=9(a,c){E t=(1s 64()).63();6(t>e.1N+z.4M){z.2x=c;z.a();6(f.2v)f.2v[g]=O;E b=O;I(E i 17 f.2v)6(f.2v[i]!==O)b=M;6(b){6(e.11!=K){y.2z=e.2z;y.11=e.11;6(C.1h(f,"11")=="1T")y.11="2m"}6(e.1p)y.11="1T";6(e.1p||e.1o)I(E p 17 f.2v)C.1j(y,p,f.2i[p])}6(b&&C.1g(e.1x))e.1x.T(f);F M}G{E n=t-7.4M;E p=n/e.1N;z.2x=C.35[e.35||(C.35.4H?"4H":"62")](p,n,a,(c-a),e.1N);z.a()}F O}}})})();',62,541,'||||||if|this||function|||||||||||||||||||||||||||||||var|return|else|length|for|each|null|type|false|browser|true|parentNode|undefined|document|style|apply|indexOf|data|nodeName||push|||display|msie||extend|fn|jQuery|in|className|window|arguments|constructor|event|test|opacity|typeof|isFunction|css|events|attr|firstChild|filter|div|queue|show|hide|mergeNum|add|new|nodeType|height|replace|tbody|complete|handle|trigger|table|animate|hidden|global|string|find|url|safari|toUpperCase|break|Array|ready|al|duration|pushStack|tb|timeout|stack|target|none|success|swap|toggle|button|cur|opt|while|get|guid|remove|width|nth|status|checked|selected|merge|nextSibling|select|ret|exec|args|load|try|catch|orig|id|match|_|block||rl|insertBefore|done|oldblock|trim|opera|preventDefault|curAnim|async|now|encodeURIComponent|overflow|value|grep|readyList|toLowerCase|color|ifModified|val|first|ownerDocument|domManip|substr|defaultView|split|has|param|last|text|multiFilter|call|eval|old|makeArray|innerHTML|stopPropagation|fx|childNodes|disabled|ajax|src|script|curCSS|easing|isReady|getElementById|form|input|float|getComputedStyle|clean|readyState|removeChild|error|static|lastModified|checkbox|selectedIndex|position|bind|parseFloat|String|oWidth|oHeight|step|on|toString|setInterval|ajaxSettings|prototype|jquery|Number|is|child|ol|cloneNode|RegExp|documentElement|isXMLDoc|getAttribute|dataType|append|styleFloat|mozilla|empty|end|map|timers|tr|el|which|custom|slice|lastToggle|handleHover|visibility|mouseover|handleError|lastChild|Modified|active|currentStyle|unshift|responseText|getPropertyValue|index|GET|clearInterval|safariTimer|unbind|init|__ie_init|setRequestHeader|unique|radio|getResponseHeader|relatedTarget|click|fix|removeEventListener|delete|handler|addEventListener|triggered|nodeIndex|appendChild|props|classFilter|shift|px|submit|file|expr|setTimeout|tagName|body|sibling|previousSibling|parents|deep|globalEval|fromElement|cssFloat|swing|parsererror|00|inArray|getElementsByTagName|startTime|visible|num|object|prop|200|Last|colgroup|beforeSend|fieldset|ActiveXObject|processData|contentType|ajaxSuccess|ajaxError|ajaxComplete|ajaxStop|ajaxStart|notmodified|POST|json|appendTo|XMLHttpRequest|DOMContentLoaded|bindReady|mouseout|prevObject|removeAttr|one|unload|ctrlKey|ajaxSend|metaKey|keyCode|charCode|not|scrollTop|httpSuccess|scrollLeft|pageX|httpData|srcElement|httpNotModified|after|before|prepend|join|parse|zoom|304|reset|image|password|odd|even|xml|quickClass|quickID|quickChild|setArray|parseInt|contains|gt|execScript|_toggle|lt|eq|href|nodeValue|alpha|self|speed|html|continue|parent|textContent|createTextNode|webkit|linear|getTime|Date|max|clientX|Math|dequeue|fl|createElement|version|100|NaN|fadeTo|fadeIn|slideToggle|slideUp|slideDown|setAttribute|getAttributeNode|name|method|action|content|cssText|300|protocol|FORM|location|options|send|abort|col|th|GMT|td|1970|01|cap|Since|colg|If|tfoot|thead|open|XMLHTTP|leg|Microsoft|urlencoded|www|application|ajaxSetup|ajaxTimeout|post|getScript|getIfModified|evalScripts|serialize|loadIfModified|loaded|onreadystatechange|defer|clientWidth|ipt|scr|clientHeight|write|relative|getJSON|keyup|keypress|keydown|change|mousemove|mouseup|left|mousedown|dblclick|right|scroll|resize|focus|blur|frames|absolute|clone|hover|offsetWidth|Content|Type|offsetHeight|Width|clientY|Thu|border|Jan|pageY|padding|Left|toElement|Requested|With|Right|Bottom|cancelBubble|returnValue|Top|size|detachEvent|attachEvent|substring|line|textarea|weight|enabled|font|innerText|only|uFFFF|responseXML|throw|u0128|417|toggleClass|removeClass|wrap|addClass|removeAttribute|insertAfter|prependTo|children|siblings|fadeOut|noConflict|prev|next|Boolean|maxLength|maxlength|readOnly|readonly|class|htmlFor|CSS1Compat|compatMode|boxModel|compatible|ie|ra|it|1px|rv|splice|userAgent|10000|navigator|concat|PI|cos|400|fast|600|slow|reverse|Function|Object|array|ig'.split('|'),0,{}));
12
+ jQuery.noConflict();
{js → admin/js}/swfobject.js RENAMED
File without changes
admin/js/swfupload.handler.js ADDED
@@ -0,0 +1,147 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * NextGEN Gallery - SWFUpload Handler
3
+ * http://alexrabe.boelinger.com/
4
+ *
5
+ * Built on top of the swfupload library
6
+ * http://swfupload.org
7
+ *
8
+ * version 1.0.0
9
+ */
10
+
11
+ // on load change the upload to swfupload
12
+ function initSWFUpload() {
13
+ jQuery(function() {
14
+ jQuery("#uploadimage_btn").after("<input type='button' name='uploadimage' id='swfupload_btn' value='" + ngg_swf_upload.customSettings.upload + "' />")
15
+ .remove();
16
+ jQuery("#swfupload_btn").click( function() { submitFiles(); } );
17
+ jQuery("#imagefiles")
18
+ .after("<div id='uploadQueue'></div>")
19
+ .after("<input id='imagefiles' type='button' class='uploadform' value='" + ngg_swf_upload.customSettings.browse + "' />")
20
+ .after("<input type='text' id='txtFileName' readonly='readonly' />")
21
+ .remove();
22
+ jQuery("#imagefiles").click( function() { fileBrowse(); } );
23
+ jQuery("#progressbar-wrap").hide();
24
+ });
25
+ }
26
+
27
+ // call the upload dialog
28
+ function fileBrowse() {
29
+ jQuery("#txtFileName").val("");
30
+ ngg_swf_upload.cancelUpload();
31
+ ngg_swf_upload.selectFiles();
32
+ }
33
+
34
+ // called when a file is added
35
+ function fileQueued(fileObj) {
36
+ filesize = " (" + Math.round(fileObj.size/1024) + " kB) ";;
37
+ jQuery("#txtFileName").val(fileObj.name);
38
+ jQuery("#uploadQueue")
39
+ .append("<div id='" + fileObj.id + "' class='nggUploadItem'> [<a href='javascript:removeFile(\"" + fileObj.id + "\");'>" + ngg_swf_upload.customSettings.remove + "</a>] " + fileObj.name + filesize + "</div>")
40
+ .children("div:last").slideDown("slow")
41
+ .end();
42
+ }
43
+
44
+ // start the upload
45
+ function submitFiles() {
46
+ // check if a gallery is selected
47
+ if (jQuery('#galleryselect').val() > "0") {
48
+ jQuery("#progressbar-wrap").show();
49
+ ngg_swf_upload.setPostParams({galleryselect:jQuery('#galleryselect').val()});
50
+ ngg_swf_upload.startUpload();
51
+ } else {
52
+ jQuery('#uploadimage_form').prepend("<input type=\"hidden\" name=\"swf_callback\" value=\"-1\">");
53
+ jQuery("#uploadimage_form").submit();
54
+ }
55
+ }
56
+
57
+ // called when a file will be removed
58
+ function removeFile(fileID) {
59
+ ngg_swf_upload.cancelUpload(fileID);
60
+ jQuery("#" + fileID).hide("slow");
61
+ jQuery("#" + fileID).remove();
62
+ }
63
+
64
+ // called before the uploads start
65
+ function uploadStart(fileObj) {
66
+ jQuery("#progressbar span").text("0% - " + fileObj.name);
67
+ return true;
68
+ }
69
+
70
+ // called during the upload progress
71
+ function uploadProgress(fileObj, bytesLoaded) {
72
+ var percent = Math.ceil((bytesLoaded / fileObj.size) * 100);
73
+ jQuery("#progressbar").css("width", percent + "%");
74
+ jQuery("#progressbar span").text(percent + "% - " + fileObj.name);
75
+ }
76
+
77
+ // called when the file is uploaded
78
+ function uploadComplete(fileObj) {
79
+ jQuery("#" + fileObj.id).hide("slow");
80
+ jQuery("#" + fileObj.id).remove();
81
+ if ( ngg_swf_upload.getStats().files_queued == 0) {
82
+ jQuery("#progressbar-wrap").hide()
83
+ jQuery("#uploadimage_form").submit();
84
+ }
85
+ }
86
+
87
+ // called when all files are uploaded
88
+ function uploadSuccess(fileObj, server_data) {
89
+ // Upload the next file until queue is empty
90
+ if ( ngg_swf_upload.getStats().files_queued > 0) {
91
+ ngg_swf_upload.startUpload();
92
+ } else {
93
+ // server_data could be add as hidden field
94
+ jQuery('#uploadimage_form').prepend("<input type=\"hidden\" name=\"swf_callback\" value=\"" + server_data + "\">");
95
+ }
96
+ }
97
+
98
+ // called on error
99
+ function uploadError(fileObj, error_code, message) {
100
+ var error_name = "";
101
+ switch(error_code) {
102
+ case SWFUpload.UPLOAD_ERROR.HTTP_ERROR:
103
+ error_name = "HTTP ERROR";
104
+ break;
105
+ case SWFUpload.UPLOAD_ERROR.MISSING_UPLOAD_URL:
106
+ error_name = "MISSING UPLOAD URL";
107
+ break;
108
+ case SWFUpload.UPLOAD_ERROR.IO_ERROR:
109
+ error_name = "IO FAILURE";
110
+ break;
111
+ case SWFUpload.UPLOAD_ERROR.SECURITY_ERROR:
112
+ error_name = "SECURITY ERROR";
113
+ break;
114
+ case SWFUpload.UPLOAD_ERROR.UPLOAD_LIMIT_EXCEEDED:
115
+ error_name = "UPLOAD LIMIT EXCEEDED";
116
+ break;
117
+ case SWFUpload.UPLOAD_ERROR.UPLOAD_FAILED:
118
+ error_name = "UPLOAD FAILED";
119
+ break;
120
+ case SWFUpload.UPLOAD_ERROR.SPECIFIED_FILE_ID_NOT_FOUND:
121
+ error_name = "SPECIFIED FILE ID NOT FOUND";
122
+ break;
123
+ case SWFUpload.UPLOAD_ERROR.FILE_VALIDATION_FAILED:
124
+ error_name = "FILE VALIDATION FAILED";
125
+ break;
126
+ case SWFUpload.UPLOAD_ERROR.FILE_CANCELLED:
127
+ error_name = "FILE CANCELLED";
128
+ return;
129
+ break;
130
+ case SWFUpload.UPLOAD_ERROR.UPLOAD_STOPPED:
131
+ error_name = "FILE STOPPED";
132
+ break;
133
+ default:
134
+ error_name = "UNKNOWN";
135
+ break;
136
+ }
137
+ jQuery("#progressbar-wrap").append("<div><strong>ERROR " + error_name + " </strong>: " + fileObj.name + " : " + message + "</div>");
138
+ jQuery("#" + fileObj.id).hide("slow");
139
+ jQuery("#" + fileObj.id).remove();
140
+ if ( ngg_swf_upload.getStats().files_queued > 0) {
141
+ ngg_swf_upload.startUpload();
142
+ } else {
143
+ jQuery("#progressbar-wrap").hide()
144
+ jQuery('#uploadimage_form').prepend("<input type=\"hidden\" name=\"swf_callback\" value=\"" + error_name + "\">");
145
+ jQuery("#uploadimage_form").submit();
146
+ }
147
+ }
admin/js/swfupload.js ADDED
@@ -0,0 +1,1049 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * SWFUpload v2.0 by Jacob Roberts, Nov 2007, http://www.swfupload.org, http://linebyline.blogspot.com
3
+ * -------- -------- -------- -------- -------- -------- -------- --------
4
+ * SWFUpload is (c) 2006 Lars Huring and Mammon Media and is released under the MIT License:
5
+ * http://www.opensource.org/licenses/mit-license.php
6
+ *
7
+ * See Changelog.txt for version history
8
+ *
9
+ * Development Notes:
10
+ * * This version of SWFUpload requires Flash Player 9.0.28 and should autodetect the correct flash version.
11
+ * * In Linux Flash Player 9 setting the post file variable name does not work. It is always set to "Filedata".
12
+ * * There is a lot of repeated code that could be refactored to single functions. Feel free.
13
+ * * It's dangerous to do "circular calls" between Flash and JavaScript. I've taken steps to try to work around issues
14
+ * by having the event calls pipe through setTimeout. However you should still avoid calling in to Flash from
15
+ * within the event handler methods. Especially the "startUpload" event since it cannot use the setTimeout hack.
16
+ */
17
+
18
+
19
+ /* *********** */
20
+ /* Constructor */
21
+ /* *********** */
22
+
23
+ var SWFUpload = function (init_settings) {
24
+ this.initSWFUpload(init_settings);
25
+ };
26
+
27
+ SWFUpload.prototype.initSWFUpload = function (init_settings) {
28
+ // Remove background flicker in IE (read this: http://misterpixel.blogspot.com/2006/09/forensic-analysis-of-ie6.html)
29
+ // This doesn't have anything to do with SWFUpload but can help your UI behave better in IE.
30
+ try {
31
+ document.execCommand('BackgroundImageCache', false, true);
32
+ } catch (ex1) {
33
+ }
34
+
35
+
36
+ try {
37
+ this.customSettings = {}; // A container where developers can place their own settings associated with this instance.
38
+ this.settings = {};
39
+ this.eventQueue = [];
40
+ this.movieName = "SWFUpload_" + SWFUpload.movieCount++;
41
+ this.movieElement = null;
42
+
43
+ // Setup global control tracking
44
+ SWFUpload.instances[this.movieName] = this;
45
+
46
+ // Load the settings. Load the Flash movie.
47
+ this.initSettings(init_settings);
48
+ this.loadFlash();
49
+
50
+ this.displayDebugInfo();
51
+
52
+ } catch (ex2) {
53
+ this.debug(ex2);
54
+ }
55
+ }
56
+
57
+ /* *************** */
58
+ /* Static thingies */
59
+ /* *************** */
60
+ SWFUpload.instances = {};
61
+ SWFUpload.movieCount = 0;
62
+ SWFUpload.QUEUE_ERROR = {
63
+ QUEUE_LIMIT_EXCEEDED : -100,
64
+ FILE_EXCEEDS_SIZE_LIMIT : -110,
65
+ ZERO_BYTE_FILE : -120,
66
+ INVALID_FILETYPE : -130
67
+ };
68
+ SWFUpload.UPLOAD_ERROR = {
69
+ HTTP_ERROR : -200,
70
+ MISSING_UPLOAD_URL : -210,
71
+ IO_ERROR : -220,
72
+ SECURITY_ERROR : -230,
73
+ UPLOAD_LIMIT_EXCEEDED : -240,
74
+ UPLOAD_FAILED : -250,
75
+ SPECIFIED_FILE_ID_NOT_FOUND : -260,
76
+ FILE_VALIDATION_FAILED : -270,
77
+ FILE_CANCELLED : -280,
78
+ UPLOAD_STOPPED : -290
79
+ };
80
+ SWFUpload.FILE_STATUS = {
81
+ QUEUED : -1,
82
+ IN_PROGRESS : -2,
83
+ ERROR : -3,
84
+ COMPLETE : -4,
85
+ CANCELLED : -5
86
+ };
87
+
88
+
89
+ /* ***************** */
90
+ /* Instance Thingies */
91
+ /* ***************** */
92
+ // init is a private method that ensures that all the object settings are set, getting a default value if one was not assigned.
93
+
94
+ SWFUpload.prototype.initSettings = function (init_settings) {
95
+ // Upload backend settings
96
+ this.addSetting("upload_url", init_settings.upload_url, "");
97
+ this.addSetting("file_post_name", init_settings.file_post_name, "Filedata");
98
+ this.addSetting("post_params", init_settings.post_params, {});
99
+
100
+ // File Settings
101
+ this.addSetting("file_types", init_settings.file_types, "*.*");
102
+ this.addSetting("file_types_description", init_settings.file_types_description, "All Files");
103
+ this.addSetting("file_size_limit", init_settings.file_size_limit, "1024");
104
+ this.addSetting("file_upload_limit", init_settings.file_upload_limit, "0");
105
+ this.addSetting("file_queue_limit", init_settings.file_queue_limit, "0");
106
+
107
+ // Flash Settings
108
+ this.addSetting("flash_url", init_settings.flash_url, "swfupload.swf");
109
+ this.addSetting("flash_width", init_settings.flash_width, "1px");
110
+ this.addSetting("flash_height", init_settings.flash_height, "1px");
111
+ this.addSetting("flash_color", init_settings.flash_color, "#FFFFFF");
112
+
113
+ // Debug Settings
114
+ this.addSetting("debug_enabled", init_settings.debug, false);
115
+
116
+ // Event Handlers
117
+ this.flashReady_handler = SWFUpload.flashReady; // This is a non-overrideable event handler
118
+ this.swfUploadLoaded_handler = this.retrieveSetting(init_settings.swfupload_loaded_handler, SWFUpload.swfUploadLoaded);
119
+
120
+ this.fileDialogStart_handler = this.retrieveSetting(init_settings.file_dialog_start_handler, SWFUpload.fileDialogStart);
121
+ this.fileQueued_handler = this.retrieveSetting(init_settings.file_queued_handler, SWFUpload.fileQueued);
122
+ this.fileQueueError_handler = this.retrieveSetting(init_settings.file_queue_error_handler, SWFUpload.fileQueueError);
123
+ this.fileDialogComplete_handler = this.retrieveSetting(init_settings.file_dialog_complete_handler, SWFUpload.fileDialogComplete);
124
+
125
+ this.uploadStart_handler = this.retrieveSetting(init_settings.upload_start_handler, SWFUpload.uploadStart);
126
+ this.uploadProgress_handler = this.retrieveSetting(init_settings.upload_progress_handler, SWFUpload.uploadProgress);
127
+ this.uploadError_handler = this.retrieveSetting(init_settings.upload_error_handler, SWFUpload.uploadError);
128
+ this.uploadSuccess_handler = this.retrieveSetting(init_settings.upload_success_handler, SWFUpload.uploadSuccess);
129
+ this.uploadComplete_handler = this.retrieveSetting(init_settings.upload_complete_handler, SWFUpload.uploadComplete);
130
+
131
+ this.debug_handler = this.retrieveSetting(init_settings.debug_handler, SWFUpload.debug);
132
+
133
+ // Other settings
134
+ this.customSettings = this.retrieveSetting(init_settings.custom_settings, {});
135
+ };
136
+
137
+ // loadFlash is a private method that generates the HTML tag for the Flash
138
+ // It then adds the flash to the "target" or to the body and stores a
139
+ // reference to the flash element in "movieElement".
140
+ SWFUpload.prototype.loadFlash = function () {
141
+ var html, target_element, container;
142
+
143
+ // Make sure an element with the ID we are going to use doesn't already exist
144
+ if (document.getElementById(this.movieName) !== null) {
145
+ return false;
146
+ }
147
+
148
+ // Get the body tag where we will be adding the flash movie
149
+ try {
150
+ target_element = document.getElementsByTagName("body")[0];
151
+ if (typeof(target_element) === "undefined" || target_element === null) {
152
+ this.debug('Could not find the BODY element. SWFUpload failed to load.');
153
+ return false;
154
+ }
155
+ } catch (ex) {
156
+ return false;
157
+ }
158
+
159
+ // Append the container and load the flash
160
+ container = document.createElement("div");
161
+ container.style.width = this.getSetting("flash_width");
162
+ container.style.height = this.getSetting("flash_height");
163
+
164
+ target_element.appendChild(container);
165
+ container.innerHTML = this.getFlashHTML(); // Using innerHTML is non-standard but the only sensible way to dynamically add Flash in IE (and maybe other browsers)
166
+ };
167
+
168
+ // Generates the embed/object tags needed to embed the flash in to the document
169
+ SWFUpload.prototype.getFlashHTML = function () {
170
+ var html = "";
171
+
172
+ // Create Mozilla Embed HTML
173
+ if (navigator.plugins && navigator.mimeTypes && navigator.mimeTypes.length) {
174
+ // Build the basic embed html
175
+ html = '<embed type="application/x-shockwave-flash" src="' + this.getSetting("flash_url") + '" width="' + this.getSetting("flash_width") + '" height="' + this.getSetting("flash_height") + '"';
176
+ html += ' id="' + this.movieName + '" name="' + this.movieName + '" ';
177
+ html += 'bgcolor="' + this.getSetting("flash_color") + '" quality="high" menu="false" flashvars="';
178
+
179
+ html += this.getFlashVars();
180
+
181
+ html += '" />';
182
+
183
+ // Create IE Object HTML
184
+ } else {
185
+
186
+ // Build the basic Object tag
187
+ html = '<object id="' + this.movieName + '" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="' + this.getSetting("flash_width") + '" height="' + this.getSetting("flash_height") + '">';
188
+ html += '<param name="movie" value="' + this.getSetting("flash_url") + '">';
189
+
190
+ html += '<param name="bgcolor" value="' + this.getSetting("flash_color") + '" />';
191
+ html += '<param name="quality" value="high" />';
192
+ html += '<param name="menu" value="false" />';
193
+
194
+ html += '<param name="flashvars" value="' + this.getFlashVars() + '" />';
195
+ html += '</object>';
196
+ }
197
+
198
+ return html;
199
+ };
200
+
201
+ // This private method builds the parameter string that will be passed
202
+ // to flash.
203
+ SWFUpload.prototype.getFlashVars = function () {
204
+ // Build a string from the post param object
205
+ var param_string = this.buildParamString();
206
+
207
+ // Build the parameter string
208
+ var html = "";
209
+ html += "movieName=" + encodeURIComponent(this.movieName);
210
+ html += "&uploadURL=" + encodeURIComponent(this.getSetting("upload_url"));
211
+ html += "&params=" + encodeURIComponent(param_string);
212
+ html += "&filePostName=" + encodeURIComponent(this.getSetting("file_post_name"));
213
+ html += "&fileTypes=" + encodeURIComponent(this.getSetting("file_types"));
214
+ html += "&fileTypesDescription=" + encodeURIComponent(this.getSetting("file_types_description"));
215
+ html += "&fileSizeLimit=" + encodeURIComponent(this.getSetting("file_size_limit"));
216
+ html += "&fileUploadLimit=" + encodeURIComponent(this.getSetting("file_upload_limit"));
217
+ html += "&fileQueueLimit=" + encodeURIComponent(this.getSetting("file_queue_limit"));
218
+ html += "&debugEnabled=" + encodeURIComponent(this.getSetting("debug_enabled"));
219
+
220
+ return html;
221
+ };
222
+
223
+ SWFUpload.prototype.getMovieElement = function () {
224
+ if (typeof(this.movieElement) === "undefined" || this.movieElement === null) {
225
+ this.movieElement = document.getElementById(this.movieName);
226
+
227
+ // Fix IEs "Flash can't callback when in a form" issue (http://www.extremefx.com.ar/blog/fixing-flash-external-interface-inside-form-on-internet-explorer)
228
+ // Removed because Revision 6 always adds the flash to the body (inside a containing div)
229
+ // If you insist on adding the Flash file inside a Form then in IE you have to make you wait until the DOM is ready
230
+ // and run this code to make the form's ID available from the window object so Flash and JavaScript can communicate.
231
+ //if (typeof(window[this.movieName]) === "undefined" || window[this.moveName] !== this.movieElement) {
232
+ // window[this.movieName] = this.movieElement;
233
+ //}
234
+ }
235
+
236
+ return this.movieElement;
237
+ };
238
+
239
+ SWFUpload.prototype.buildParamString = function () {
240
+ var post_params = this.getSetting("post_params");
241
+ var param_string_pairs = [];
242
+ var i, value, name;
243
+
244
+ // Retrieve the user defined parameters
245
+ if (typeof(post_params) === "object") {
246
+ for (name in post_params) {
247
+ if (post_params.hasOwnProperty(name)) {
248
+ if (typeof(post_params[name]) === "string") {
249
+ param_string_pairs.push(encodeURIComponent(name) + "=" + encodeURIComponent(post_params[name]));
250
+ }
251
+ }
252
+ }
253
+ }
254
+
255
+ return param_string_pairs.join("&");
256
+ };
257
+
258
+ // Saves a setting. If the value given is undefined or null then the default_value is used.
259
+ SWFUpload.prototype.addSetting = function (name, value, default_value) {
260
+ if (typeof(value) === "undefined" || value === null) {
261
+ this.settings[name] = default_value;
262
+ } else {
263
+ this.settings[name] = value;
264
+ }
265
+
266
+ return this.settings[name];
267
+ };
268
+
269
+ // Gets a setting. Returns empty string if not found.
270
+ SWFUpload.prototype.getSetting = function (name) {
271
+ if (typeof(this.settings[name]) === "undefined") {
272
+ return "";
273
+ } else {
274
+ return this.settings[name];
275
+ }
276
+ };
277
+
278
+ // Gets a setting, if the setting is undefined then return the default value
279
+ // This does not affect or use the interal setting object.
280
+ SWFUpload.prototype.retrieveSetting = function (value, default_value) {
281
+ if (typeof(value) === "undefined" || value === null) {
282
+ return default_value;
283
+ } else {
284
+ return value;
285
+ }
286
+ };
287
+
288
+
289
+ // It loops through all the settings and displays
290
+ // them in the debug Console.
291
+ SWFUpload.prototype.displayDebugInfo = function () {
292
+ var key, debug_message = "";
293
+
294
+ debug_message += "----- SWFUPLOAD SETTINGS ----\nID: " + this.moveName + "\n";
295
+
296
+ debug_message += this.outputObject(this.settings);
297
+
298
+ debug_message += "----- SWFUPLOAD SETTINGS END ----\n";
299
+ debug_message += "\n";
300
+
301
+ this.debug(debug_message);
302
+ };
303
+ SWFUpload.prototype.outputObject = function (object, prefix) {
304
+ var output = "", key;
305
+
306
+ if (typeof(prefix) !== "string") {
307
+ prefix = "";
308
+ }
309
+ if (typeof(object) !== "object") {
310
+ return "";
311
+ }
312
+
313
+ for (key in object) {
314
+ if (object.hasOwnProperty(key)) {
315
+ if (typeof(object[key]) === "object") {
316
+ output += (prefix + key + ": { \n" + this.outputObject(object[key], "\t" + prefix) + prefix + "}" + "\n");
317
+ } else {
318
+ output += (prefix + key + ": " + object[key] + "\n");
319
+ }
320
+ }
321
+ }
322
+
323
+ return output;
324
+ };
325
+
326
+ /* *****************************
327
+ -- Flash control methods --
328
+ Your UI should use these
329
+ to operate SWFUpload
330
+ ***************************** */
331
+
332
+ SWFUpload.prototype.selectFile = function () {
333
+ var movie_element = this.getMovieElement();
334
+ if (movie_element !== null && typeof(movie_element.SelectFile) === "function") {
335
+ try {
336
+ movie_element.SelectFile();
337
+ }
338
+ catch (ex) {
339
+ this.debug("Could not call SelectFile: " + ex);
340
+ }
341
+ } else {
342
+ this.debug("Could not find Flash element");
343
+ }
344
+
345
+ };
346
+
347
+ SWFUpload.prototype.selectFiles = function () {
348
+ var movie_element = this.getMovieElement();
349
+ if (movie_element !== null && typeof(movie_element.SelectFiles) === "function") {
350
+ try {
351
+ movie_element.SelectFiles();
352
+ }
353
+ catch (ex) {
354
+ this.debug("Could not call SelectFiles: " + ex);
355
+ }
356
+ } else {
357
+ this.debug("Could not find Flash element");
358
+ }
359
+
360
+ };
361
+
362
+
363
+ /* Start the upload. If a file_id is specified that file is uploaded. Otherwise the first
364
+ * file in the queue is uploaded. If no files are in the queue then nothing happens.
365
+ * This call uses setTimeout since Flash will be calling back in to JavaScript
366
+ */
367
+ SWFUpload.prototype.startUpload = function (file_id) {
368
+ var self = this;
369
+ var movie_element = this.getMovieElement();
370
+ if (movie_element !== null && typeof(movie_element.StartUpload) === "function") {
371
+ setTimeout(
372
+ function () {
373
+ try {
374
+ movie_element.StartUpload(file_id);
375
+ }
376
+ catch (ex) {
377
+ self.debug("Could not call StartUpload: " + ex);
378
+ }
379
+ }, 0
380
+ );
381
+ } else {
382
+ this.debug("Could not find Flash element");
383
+ }
384
+
385
+ };
386
+
387
+ /* Cancels a the file upload. You must specify a file_id */
388
+ SWFUpload.prototype.cancelUpload = function (file_id) {
389
+ var movie_element = this.getMovieElement();
390
+ if (movie_element !== null && typeof(movie_element.CancelUpload) === "function") {
391
+ try {
392
+ movie_element.CancelUpload(file_id);
393
+ }
394
+ catch (ex) {
395
+ this.debug("Could not call CancelUpload: " + ex);
396
+ }
397
+ } else {
398
+ this.debug("Could not find Flash element");
399
+ }
400
+
401
+ };
402
+
403
+ // Stops the current upload. The file is re-queued. If nothing is currently uploading then nothing happens.
404
+ SWFUpload.prototype.stopUpload = function () {
405
+ var movie_element = this.getMovieElement();
406
+ if (movie_element !== null && typeof(movie_element.StopUpload) === "function") {
407
+ try {
408
+ movie_element.StopUpload();
409
+ }
410
+ catch (ex) {
411
+ this.debug("Could not call StopUpload: " + ex);
412
+ }
413
+ } else {
414
+ this.debug("Could not find Flash element");
415
+ }
416
+
417
+ };
418
+
419
+ /* ************************
420
+ * Settings methods
421
+ * These methods change the settings inside SWFUpload
422
+ * They shouldn't need to be called in a setTimeout since they
423
+ * should not call back from Flash to JavaScript (except perhaps in a Debug call)
424
+ * and some need to return data so setTimeout won't work.
425
+ */
426
+
427
+ /* Gets the file statistics object. It looks like this (where n = number):
428
+ {
429
+ files_queued: n,
430
+ complete_uploads: n,
431
+ upload_errors: n,
432
+ uploads_cancelled: n,
433
+ queue_errors: n
434
+ }
435
+ */
436
+ SWFUpload.prototype.getStats = function () {
437
+ var movie_element = this.getMovieElement();
438
+ if (movie_element !== null && typeof(movie_element.GetStats) === "function") {
439
+ try {
440
+ return movie_element.GetStats();
441
+ }
442
+ catch (ex) {
443
+ this.debug("Could not call GetStats");
444
+ }
445
+ } else {
446
+ this.debug("Could not find Flash element");
447
+ }
448
+ };
449
+ SWFUpload.prototype.setStats = function (stats_object) {
450
+ var movie_element = this.getMovieElement();
451
+ if (movie_element !== null && typeof(movie_element.SetStats) === "function") {
452
+ try {
453
+ movie_element.SetStats(stats_object);
454
+ }
455
+ catch (ex) {
456
+ this.debug("Could not call SetStats");
457
+ }
458
+ } else {
459
+ this.debug("Could not find Flash element");
460
+ }
461
+ };
462
+
463
+ SWFUpload.prototype.setCredentials = function(name, password) {
464
+ var movie_element = this.getMovieElement();
465
+ if (movie_element !== null && typeof(movie_element.SetCredentials) === "function") {
466
+ try {
467
+ return movie_element.SetCredentials(name, password);
468
+ }
469
+ catch (ex) {
470
+ this.debug("Could not call SetCredentials");
471
+ }
472
+ } else {
473
+ this.debug("Could not find Flash element");
474
+ }
475
+ };
476
+
477
+ SWFUpload.prototype.getFile = function (file_id) {
478
+ var movie_element = this.getMovieElement();
479
+ if (typeof(file_id) === "number") {
480
+ if (movie_element !== null && typeof(movie_element.GetFileByIndex) === "function") {
481
+ try {
482
+ return movie_element.GetFileByIndex(file_id);
483
+ }
484
+ catch (ex) {
485
+ this.debug("Could not call GetFileByIndex");
486
+ }
487
+ } else {
488
+ this.debug("Could not find Flash element");
489
+ }
490
+ } else {
491
+ if (movie_element !== null && typeof(movie_element.GetFile) === "function") {
492
+ try {
493
+ return movie_element.GetFile(file_id);
494
+ }
495
+ catch (ex) {
496
+ this.debug("Could not call GetFile");
497
+ }
498
+ } else {
499
+ this.debug("Could not find Flash element");
500
+ }
501
+ }
502
+ };
503
+
504
+ SWFUpload.prototype.addFileParam = function (file_id, name, value) {
505
+ var movie_element = this.getMovieElement();
506
+ if (movie_element !== null && typeof(movie_element.AddFileParam) === "function") {
507
+ try {
508
+ return movie_element.AddFileParam(file_id, name, value);
509
+ }
510
+ catch (ex) {
511
+ this.debug("Could not call AddFileParam");
512
+ }
513
+ } else {
514
+ this.debug("Could not find Flash element");
515
+ }
516
+ };
517
+
518
+ SWFUpload.prototype.removeFileParam = function (file_id, name) {
519
+ var movie_element = this.getMovieElement();
520
+ if (movie_element !== null && typeof(movie_element.RemoveFileParam) === "function") {
521
+ try {
522
+ return movie_element.RemoveFileParam(file_id, name);
523
+ }
524
+ catch (ex) {
525
+ this.debug("Could not call AddFileParam");
526
+ }
527
+ } else {
528
+ this.debug("Could not find Flash element");
529
+ }
530
+
531
+ };
532
+
533
+ SWFUpload.prototype.setUploadURL = function (url) {
534
+ var movie_element = this.getMovieElement();
535
+ if (movie_element !== null && typeof(movie_element.SetUploadURL) === "function") {
536
+ try {
537
+ this.addSetting("upload_url", url);
538
+ movie_element.SetUploadURL(this.getSetting("upload_url"));
539
+ }
540
+ catch (ex) {
541
+ this.debug("Could not call SetUploadURL");
542
+ }
543
+ } else {
544
+ this.debug("Could not find Flash element in setUploadURL");
545
+ }
546
+ };
547
+
548
+ SWFUpload.prototype.setPostParams = function (param_object) {
549
+ var movie_element = this.getMovieElement();
550
+ if (movie_element !== null && typeof(movie_element.SetPostParams) === "function") {
551
+ try {
552
+ this.addSetting("post_params", param_object);
553
+ movie_element.SetPostParams(this.getSetting("post_params"));
554
+ }
555
+ catch (ex) {
556
+ this.debug("Could not call SetPostParams");
557
+ }
558
+ } else {
559
+ this.debug("Could not find Flash element in SetPostParams");
560
+ }
561
+ };
562
+
563
+ SWFUpload.prototype.setFileTypes = function (types, description) {
564
+ var movie_element = this.getMovieElement();
565
+ if (movie_element !== null && typeof(movie_element.SetFileTypes) === "function") {
566
+ try {
567
+ this.addSetting("file_types", types);
568
+ this.addSetting("file_types_description", description);
569
+ movie_element.SetFileTypes(this.getSetting("file_types"), this.getSetting("file_types_description"));
570
+ }
571
+ catch (ex) {
572
+ this.debug("Could not call SetFileTypes");
573
+ }
574
+ } else {
575
+ this.debug("Could not find Flash element in SetFileTypes");
576
+ }
577
+ };
578
+
579
+ SWFUpload.prototype.setFileSizeLimit = function (file_size_limit) {
580
+ var movie_element = this.getMovieElement();
581
+ if (movie_element !== null && typeof(movie_element.SetFileSizeLimit) === "function") {
582
+ try {
583
+ this.addSetting("file_size_limit", file_size_limit);
584
+ movie_element.SetFileSizeLimit(this.getSetting("file_size_limit"));
585
+ }
586
+ catch (ex) {
587
+ this.debug("Could not call SetFileSizeLimit");
588
+ }
589
+ } else {
590
+ this.debug("Could not find Flash element in SetFileSizeLimit");
591
+ }
592
+ };
593
+
594
+ SWFUpload.prototype.setFileUploadLimit = function (file_upload_limit) {
595
+ var movie_element = this.getMovieElement();
596
+ if (movie_element !== null && typeof(movie_element.SetFileUploadLimit) === "function") {
597
+ try {
598
+ this.addSetting("file_upload_limit", file_upload_limit);
599
+ movie_element.SetFileUploadLimit(this.getSetting("file_upload_limit"));
600
+ }
601
+ catch (ex) {
602
+ this.debug("Could not call SetFileUploadLimit");
603
+ }
604
+ } else {
605
+ this.debug("Could not find Flash element in SetFileUploadLimit");
606
+ }
607
+ };
608
+
609
+ SWFUpload.prototype.setFileQueueLimit = function (file_queue_limit) {
610
+ var movie_element = this.getMovieElement();
611
+ if (movie_element !== null && typeof(movie_element.SetFileQueueLimit) === "function") {
612
+ try {
613
+ this.addSetting("file_queue_limit", file_queue_limit);
614
+ movie_element.SetFileQueueLimit(this.getSetting("file_queue_limit"));
615
+ }
616
+ catch (ex) {
617
+ this.debug("Could not call SetFileQueueLimit");
618
+ }
619
+ } else {
620
+ this.debug("Could not find Flash element in SetFileQueueLimit");
621
+ }
622
+ };
623
+
624
+ SWFUpload.prototype.setFilePostName = function (file_post_name) {
625
+ var movie_element = this.getMovieElement();
626
+ if (movie_element !== null && typeof(movie_element.SetFilePostName) === "function") {
627
+ try {
628
+ this.addSetting("file_post_name", file_post_name);
629
+ movie_element.SetFilePostName(this.getSetting("file_post_name"));
630
+ }
631
+ catch (ex) {
632
+ this.debug("Could not call SetFilePostName");
633
+ }
634
+ } else {
635
+ this.debug("Could not find Flash element in SetFilePostName");
636
+ }
637
+ };
638
+
639
+ SWFUpload.prototype.setDebugEnabled = function (debug_enabled) {
640
+ var movie_element = this.getMovieElement();
641
+ if (movie_element !== null && typeof(movie_element.SetDebugEnabled) === "function") {
642
+ try {
643
+ this.addSetting("debug_enabled", debug_enabled);
644
+ movie_element.SetDebugEnabled(this.getSetting("debug_enabled"));
645
+ }
646
+ catch (ex) {
647
+ this.debug("Could not call SetDebugEnabled");
648
+ }
649
+ } else {
650
+ this.debug("Could not find Flash element in SetDebugEnabled");
651
+ }
652
+ };
653
+
654
+ /* *******************************
655
+ Internal Event Callers
656
+ Don't override these! These event callers ensure that your custom event handlers
657
+ are called safely and in order.
658
+ ******************************* */
659
+
660
+ /* This is the callback method that the Flash movie will call when it has been loaded and is ready to go.
661
+ Calling this or showUI() "manually" will bypass the Flash Detection built in to SWFUpload.
662
+ Use a ui_function setting if you want to control the UI loading after the flash has loaded.
663
+ */
664
+ SWFUpload.prototype.flashReady = function () {
665
+ // Check that the movie element is loaded correctly with its ExternalInterface methods defined
666
+ var movie_element = this.getMovieElement();
667
+ if (movie_element === null || typeof(movie_element.StartUpload) !== "function") {
668
+ this.debug("ExternalInterface methods failed to initialize.");
669
+ return;
670
+ }
671
+
672
+ var self = this;
673
+ if (typeof(self.flashReady_handler) === "function") {
674
+ this.eventQueue[this.eventQueue.length] = function() { self.flashReady_handler(); };
675
+ setTimeout(function () { self.executeNextEvent();}, 0);
676
+ } else {
677
+ this.debug("flashReady_handler event not defined");
678
+ }
679
+ };
680
+
681
+ /*
682
+ Event Queue. Rather can call events directly from Flash they events are
683
+ are placed in a queue and then executed. This ensures that each event is
684
+ executed in the order it was called which is not guarenteed when calling
685
+ setTimeout. Out of order events was especially problematic in Safari.
686
+ */
687
+ SWFUpload.prototype.executeNextEvent = function () {
688
+ var f = this.eventQueue.shift();
689
+ if (typeof(f) === "function") {
690
+ f();
691
+ }
692
+ }
693
+
694
+ /* This is a chance to do something before the browse window opens */
695
+ SWFUpload.prototype.fileDialogStart = function () {
696
+ var self = this;
697
+ if (typeof(self.fileDialogStart_handler) === "function") {
698
+ this.eventQueue[this.eventQueue.length] = function() { self.fileDialogStart_handler(); };
699
+ setTimeout(function () { self.executeNextEvent();}, 0);
700
+ } else {
701
+ this.debug("fileDialogStart event not defined");
702
+ }
703
+ };
704
+
705
+
706
+ /* Called when a file is successfully added to the queue. */
707
+ SWFUpload.prototype.fileQueued = function (file) {
708
+ var self = this;
709
+ if (typeof(self.fileQueued_handler) === "function") {
710
+ this.eventQueue[this.eventQueue.length] = function() { self.fileQueued_handler(file); };
711
+ setTimeout(function () { self.executeNextEvent();}, 0);
712
+ } else {
713
+ this.debug("fileQueued event not defined");
714
+ }
715
+ };
716
+
717
+
718
+ /* Handle errors that occur when an attempt to queue a file fails. */
719
+ SWFUpload.prototype.fileQueueError = function (file, error_code, message) {
720
+ var self = this;
721
+ if (typeof(self.fileQueueError_handler) === "function") {
722
+ this.eventQueue[this.eventQueue.length] = function() { self.fileQueueError_handler(file, error_code, message); };
723
+ setTimeout(function () { self.executeNextEvent();}, 0);
724
+ } else {
725
+ this.debug("fileQueueError event not defined");
726
+ }
727
+ };
728
+
729
+ /* Called after the file dialog has closed and the selected files have been queued.
730
+ You could call startUpload here if you want the queued files to begin uploading immediately. */
731
+ SWFUpload.prototype.fileDialogComplete = function (num_files_selected) {
732
+ var self = this;
733
+ if (typeof(self.fileDialogComplete_handler) === "function") {
734
+ this.eventQueue[this.eventQueue.length] = function() { self.fileDialogComplete_handler(num_files_selected); };
735
+ setTimeout(function () { self.executeNextEvent();}, 0);
736
+ } else {
737
+ this.debug("fileDialogComplete event not defined");
738
+ }
739
+ };
740
+
741
+ /* Gets called when a file upload is about to be started. Return true to continue the upload. Return false to stop the upload.
742
+ If you return false then uploadError and uploadComplete are called (like normal).
743
+
744
+ This is a good place to do any file validation you need.
745
+ */
746
+ SWFUpload.prototype.uploadStart = function (file) {
747
+ var self = this;
748
+ if (typeof(self.fileDialogComplete_handler) === "function") {
749
+ this.eventQueue[this.eventQueue.length] = function() { self.returnUploadStart(self.uploadStart_handler(file)); };
750
+ setTimeout(function () { self.executeNextEvent();}, 0);
751
+ } else {
752
+ this.debug("uploadStart event not defined");
753
+ }
754
+ };
755
+
756
+ /* Note: Internal use only. This function returns the result of uploadStart to
757
+ flash. Since returning values in the normal way can result in Flash/JS circular
758
+ call issues we split up the call in a Timeout. This is transparent from the API
759
+ point of view.
760
+ */
761
+ SWFUpload.prototype.returnUploadStart = function (return_value) {
762
+ var movie_element = this.getMovieElement();
763
+ if (movie_element !== null && typeof(movie_element.ReturnUploadStart) === "function") {
764
+ try {
765
+ movie_element.ReturnUploadStart(return_value);
766
+ }
767
+ catch (ex) {
768
+ this.debug("Could not call ReturnUploadStart");
769
+ }
770
+ } else {
771
+ this.debug("Could not find Flash element in returnUploadStart");
772
+ }
773
+ };
774
+
775
+
776
+
777
+ /* Called during upload as the file progresses. Use this event to update your UI. */
778
+ SWFUpload.prototype.uploadProgress = function (file, bytes_complete, bytes_total) {
779
+ var self = this;
780
+ if (typeof(self.uploadProgress_handler) === "function") {
781
+ this.eventQueue[this.eventQueue.length] = function() { self.uploadProgress_handler(file, bytes_complete, bytes_total); };
782
+ setTimeout(function () { self.executeNextEvent();}, 0);
783
+ } else {
784
+ this.debug("uploadProgress event not defined");
785
+ }
786
+ };
787
+
788
+ /* Called when an error occurs during an upload. Use error_code and the SWFUpload.UPLOAD_ERROR constants to determine
789
+ which error occurred. The uploadComplete event is called after an error code indicating that the next file is
790
+ ready for upload. For files cancelled out of order the uploadComplete event will not be called. */
791
+ SWFUpload.prototype.uploadError = function (file, error_code, message) {
792
+ var self = this;
793
+ if (typeof(this.uploadError_handler) === "function") {
794
+ this.eventQueue[this.eventQueue.length] = function() { self.uploadError_handler(file, error_code, message); };
795
+ setTimeout(function () { self.executeNextEvent();}, 0);
796
+ } else {
797
+ this.debug("uploadError event not defined");
798
+ }
799
+ };
800
+
801
+ /* This gets called when a file finishes uploading and the server-side upload script has completed and returned a 200
802
+ status code. Any text returned by the server is available in server_data.
803
+ **NOTE: The upload script MUST return some text or the uploadSuccess and uploadComplete events will not fire and the
804
+ upload will become 'stuck'. */
805
+ SWFUpload.prototype.uploadSuccess = function (file, server_data) {
806
+ var self = this;
807
+ if (typeof(self.uploadSuccess_handler) === "function") {
808
+ this.eventQueue[this.eventQueue.length] = function() { self.uploadSuccess_handler(file, server_data); };
809
+ setTimeout(function () { self.executeNextEvent();}, 0);
810
+ } else {
811
+ this.debug("uploadSuccess event not defined");
812
+ }
813
+ };
814
+
815
+ /* uploadComplete is called when the file is uploaded or an error occurred and SWFUpload is ready to make the next upload.
816
+ If you want the next upload to start to automatically you can call startUpload() from this event. */
817
+ SWFUpload.prototype.uploadComplete = function (file) {
818
+ var self = this;
819
+ if (typeof(self.uploadComplete_handler) === "function") {
820
+ this.eventQueue[this.eventQueue.length] = function() { self.uploadComplete_handler(file); };
821
+ setTimeout(function () { self.executeNextEvent();}, 0);
822
+ } else {
823
+ this.debug("uploadComplete event not defined");
824
+ }
825
+ };
826
+
827
+ /* Called by SWFUpload JavaScript and Flash functions when debug is enabled. By default it writes messages to the
828
+ internal debug console. You can override this event and have messages written where you want. */
829
+ SWFUpload.prototype.debug = function (message) {
830
+ var self = this;
831
+ if (typeof(self.debug_handler) === "function") {
832
+ this.eventQueue[this.eventQueue.length] = function() { self.debug_handler(message); };
833
+ setTimeout(function () { self.executeNextEvent();}, 0);
834
+ } else {
835
+ this.eventQueue[this.eventQueue.length] = function() { self.debugMessage(message); };
836
+ setTimeout(function () { self.executeNextEvent();}, 0);
837
+ }
838
+ };
839
+
840
+
841
+ /* **********************************
842
+ Default Event Handlers.
843
+ These event handlers are used by default if an overriding handler is
844
+ not defined in the SWFUpload settings object.
845
+
846
+ JS Note: even though these are defined on the SWFUpload object (rather than the prototype) they
847
+ are attached (read: copied) to a SWFUpload instance and 'this' is given the proper context.
848
+ ********************************** */
849
+
850
+ /* This is a special event handler that has no override in the settings. Flash calls this when it has
851
+ been loaded by the browser and is ready for interaction. You should not override it. If you need
852
+ to do something with SWFUpload has loaded then use the swfupload_loaded_handler setting.
853
+ */
854
+ SWFUpload.flashReady = function () {
855
+ try {
856
+ this.debug("Flash called back and is ready.");
857
+
858
+ if (typeof(this.swfUploadLoaded_handler) === "function") {
859
+ this.swfUploadLoaded_handler();
860
+ }
861
+ } catch (ex) {
862
+ this.debug(ex);
863
+ }
864
+ };
865
+
866
+ /* This is a chance to something immediately after SWFUpload has loaded.
867
+ Like, hide the default/degraded upload form and display the SWFUpload form. */
868
+ SWFUpload.swfUploadLoaded = function () {
869
+ };
870
+
871
+ /* This is a chance to do something before the browse window opens */
872
+ SWFUpload.fileDialogStart = function () {
873
+ };
874
+
875
+
876
+ /* Called when a file is successfully added to the queue. */
877
+ SWFUpload.fileQueued = function (file) {
878
+ };
879
+
880
+
881
+ /* Handle errors that occur when an attempt to queue a file fails. */
882
+ SWFUpload.fileQueueError = function (file, error_code, message) {
883
+ try {
884
+ switch (error_code) {
885
+ case SWFUpload.QUEUE_ERROR.FILE_EXCEEDS_SIZE_LIMIT:
886
+ this.debug("Error Code: File too big, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
887
+ break;
888
+ case SWFUpload.QUEUE_ERROR.ZERO_BYTE_FILE:
889
+ this.debug("Error Code: Zero Byte File, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
890
+ break;
891
+ case SWFUpload.QUEUE_ERROR.QUEUE_LIMIT_EXCEEDED:
892
+ this.debug("Error Code: Upload limit reached, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
893
+ break;
894
+ case SWFUpload.QUEUE_ERROR.INVALID_FILETYPE:
895
+ this.debug("Error Code: File extension is not allowed, Message: " + message);
896
+ break;
897
+ default:
898
+ this.debug("Error Code: Unhandled error occured. Errorcode: " + error_code);
899
+ }
900
+ } catch (ex) {
901
+ this.debug(ex);
902
+ }
903
+ };
904
+
905
+ /* Called after the file dialog has closed and the selected files have been queued.
906
+ You could call startUpload here if you want the queued files to begin uploading immediately. */
907
+ SWFUpload.fileDialogComplete = function (num_files_selected) {
908
+ };
909
+
910
+ /* Gets called when a file upload is about to be started. Return true to continue the upload. Return false to stop the upload.
911
+ If you return false then the uploadError callback is called and then uploadComplete (like normal).
912
+
913
+ This is a good place to do any file validation you need.
914
+
915
+ This is the only function that cannot be called on a setTimeout because it must return a value to Flash.
916
+ You SHOULD NOT make any calls in to Flash (e.i, changing settings, getting stats, etc). Flash Player bugs prevent
917
+ calls in to Flash from working reliably.
918
+ */
919
+ SWFUpload.uploadStart = function (file) {
920
+ return true;
921
+ };
922
+
923
+ // Called during upload as the file progresses
924
+ SWFUpload.uploadProgress = function (file, bytes_complete, bytes_total) {
925
+ this.debug("File Progress: " + file.id + ", Bytes: " + bytes_complete + ". Total: " + bytes_total);
926
+ };
927
+
928
+ /* This gets called when a file finishes uploading and the upload script has completed and returned a 200 status code. Any text returned by the
929
+ server is available in server_data. The upload script must return some text or uploadSuccess will not fire (neither will uploadComplete). */
930
+ SWFUpload.uploadSuccess = function (file, server_data) {
931
+ };
932
+
933
+ /* This is called last. The file is uploaded or an error occurred and SWFUpload is ready to make the next upload.
934
+ If you want to automatically start the next file just call startUpload from here.
935
+ */
936
+ SWFUpload.uploadComplete = function (file) {
937
+ };
938
+
939
+ // Called by SWFUpload JavaScript and Flash functions when debug is enabled.
940
+ // Override this method in your settings to call your own debug message handler
941
+ SWFUpload.debug = function (message) {
942
+ if (this.getSetting("debug_enabled")) {
943
+ this.debugMessage(message);
944
+ }
945
+ };
946
+
947
+ /* Called when an upload occurs during upload. For HTTP errors 'message' will contain the HTTP STATUS CODE */
948
+ SWFUpload.uploadError = function (file, error_code, message) {
949
+ try {
950
+ switch (errcode) {
951
+ case SWFUpload.UPLOAD_ERROR.SPECIFIED_FILE_ID_NOT_FOUND:
952
+ this.debug("Error Code: File ID specified for upload was not found, Message: " + msg);
953
+ break;
954
+ case SWFUpload.UPLOAD_ERROR.HTTP_ERROR:
955
+ this.debug("Error Code: HTTP Error, File name: " + file.name + ", Message: " + msg);
956
+ break;
957
+ case SWFUpload.UPLOAD_ERROR.MISSING_UPLOAD_URL:
958
+ this.debug("Error Code: No backend file, File name: " + file.name + ", Message: " + msg);
959
+ break;
960
+ case SWFUpload.UPLOAD_ERROR.IO_ERROR:
961
+ this.debug("Error Code: IO Error, File name: " + file.name + ", Message: " + msg);
962
+ break;
963
+ case SWFUpload.UPLOAD_ERROR.SECURITY_ERROR:
964
+ this.debug("Error Code: Security Error, File name: " + file.name + ", Message: " + msg);
965
+ break;
966
+ case SWFUpload.UPLOAD_ERROR.UPLOAD_LIMIT_EXCEEDED:
967
+ this.debug("Error Code: Upload limit reached, File name: " + file.name + ", File size: " + file.size + ", Message: " + msg);
968
+ break;
969
+ case SWFUpload.UPLOAD_ERROR.UPLOAD_FAILED:
970
+ this.debug("Error Code: Upload Initialization exception, File name: " + file.name + ", File size: " + file.size + ", Message: " + msg);
971
+ break;
972
+ case SWFUpload.UPLOAD_ERROR.FILE_VALIDATION_FAILED:
973
+ this.debug("Error Code: uploadStart callback returned false, File name: " + file.name + ", File size: " + file.size + ", Message: " + msg);
974
+ break;
975
+ case SWFUpload.UPLOAD_ERROR.FILE_CANCELLED:
976
+ this.debug("Error Code: The file upload was cancelled, File name: " + file.name + ", File size: " + file.size + ", Message: " + msg);
977
+ break;
978
+ case SWFUpload.UPLOAD_ERROR.UPLOAD_STOPPED:
979
+ this.debug("Error Code: The file upload was stopped, File name: " + file.name + ", File size: " + file.size + ", Message: " + msg);
980
+ break;
981
+ default:
982
+ this.debug("Error Code: Unhandled error occured. Errorcode: " + errcode);
983
+ }
984
+ } catch (ex) {
985
+ this.debug(ex);
986
+ }
987
+ };
988
+
989
+
990
+
991
+ /* **********************************
992
+ Debug Console
993
+ The debug console is a self contained, in page location
994
+ for debug message to be sent. The Debug Console adds
995
+ itself to the body if necessary.
996
+
997
+ The console is automatically scrolled as messages appear.
998
+
999
+ You can override this console (to use FireBug's console for instance) by setting the debug event method to your own function
1000
+ that handles the debug message
1001
+ ********************************** */
1002
+ SWFUpload.prototype.debugMessage = function (message) {
1003
+ var exception_message, exception_values;
1004
+
1005
+ if (typeof(message) === "object" && typeof(message.name) === "string" && typeof(message.message) === "string") {
1006
+ exception_message = "";
1007
+ exception_values = [];
1008
+ for (var key in message) {
1009
+ exception_values.push(key + ": " + message[key]);
1010
+ }
1011
+ exception_message = exception_values.join("\n");
1012
+ exception_values = exception_message.split("\n");
1013
+ exception_message = "EXCEPTION: " + exception_values.join("\nEXCEPTION: ");
1014
+ SWFUpload.Console.writeLine(exception_message);
1015
+ } else {
1016
+ SWFUpload.Console.writeLine(message);
1017
+ }
1018
+ };
1019
+
1020
+ SWFUpload.Console = {};
1021
+ SWFUpload.Console.writeLine = function (message) {
1022
+ var console, documentForm;
1023
+
1024
+ try {
1025
+ console = document.getElementById("SWFUpload_Console");
1026
+
1027
+ if (!console) {
1028
+ documentForm = document.createElement("form");
1029
+ document.getElementsByTagName("body")[0].appendChild(documentForm);
1030
+
1031
+ console = document.createElement("textarea");
1032
+ console.id = "SWFUpload_Console";
1033
+ console.style.fontFamily = "monospace";
1034
+ console.setAttribute("wrap", "off");
1035
+ console.wrap = "off";
1036
+ console.style.overflow = "auto";
1037
+ console.style.width = "700px";
1038
+ console.style.height = "350px";
1039
+ console.style.margin = "5px";
1040
+ documentForm.appendChild(console);
1041
+ }
1042
+
1043
+ console.value += message + "\n";
1044
+
1045
+ console.scrollTop = console.scrollHeight - console.clientHeight;
1046
+ } catch (ex) {
1047
+ alert("Exception: " + ex.name + " Message: " + ex.message);
1048
+ }
1049
+ };
admin/js/swfupload_f9.swf ADDED
Binary file
js/nggadmintab-js.php → admin/js/uploadtab.js.php RENAMED
@@ -1,265 +1,270 @@
1
- <?php
2
- // required for Rich text editor
3
- // used by NextGEN Gallery
4
- require_once('../../../../wp-config.php');
5
- require_once('../../../../wp-admin/admin.php');
6
- cache_javascript_headers();
7
- $ngg_options = get_option('ngg_options');
8
-
9
- // get the effect code
10
- if ($ngg_options[thumbEffect] != "none") $thumbcode = stripslashes($ngg_options[thumbCode]);
11
- if ($ngg_options[thumbEffect] == "highslide") $thumbcode = 'class="highslide" onclick="return hs.expand(this)"';
12
- else $thumbcode = str_replace("%GALLERY_NAME%", "", $thumbcode);
13
-
14
- ?>
15
- addLoadEvent( function() {
16
- theFileList = {
17
- currentImage: {ID: 0},
18
- nonce: '',
19
- tab: '',
20
- gal: '',
21
- postID: 0,
22
-
23
- initializeVars: function() {
24
- this.urlData = document.location.href.split('?');
25
- this.params = this.urlData[1].toQueryParams();
26
- this.postID = this.params['post_id'];
27
- this.tab = this.params['tab'];
28
- this.gal = this.params['select_gal'];
29
- this.style = this.params['style'];
30
- this.ID = this.params['ID'];
31
- if ( !this.style )
32
- this.style = 'default';
33
- var nonceEl = $('nonce-value');
34
- if ( nonceEl )
35
- this.nonce = nonceEl.value;
36
- if ( this.ID ) {
37
- this.grabImageData( this.ID );
38
- this.imageView( this.ID );
39
- }
40
- },
41
-
42
- initializeLinks: function() {
43
- if ( this.ID )
44
- return;
45
- $$('a.file-link').each( function(i) {
46
- var id = i.id.split('-').pop();
47
- i.onclick = function(e) { theFileList[ 'inline' == theFileList.style ? 'imageView' : 'editView' ](id, e); }
48
- } );
49
- },
50
-
51
- grabImageData: function(id) {
52
- if ( id == this.currentImage.ID )
53
- return;
54
-
55
- this.currentImage.src = ( 0 == id ? '' : $('nggimage-url-' + id).value );
56
- this.currentImage.thumb = ( 0 == id ? '' : $('nggimage-thumb-url-' + id).value );
57
- this.currentImage.title = ( 0 == id ? '' : $('nggimage-title-' + id).value );
58
- this.currentImage.alttext = ( 0 == id ? '' : $('nggimage-alttext-' + id).value );
59
- this.currentImage.description = ( 0 == id ? '' : $('nggimage-description-' + id).value );
60
- var widthEl = $('nggimage-width-' + id);
61
- if ( widthEl ) {
62
- this.currentImage.width = ( 0 == id ? '' : widthEl.value );
63
- this.currentImage.height = ( 0 == id ? '' : $('nggimage-height-' + id).value );
64
- } else {
65
- this.currentImage.width = false;
66
- this.currentImage.height = false;
67
- }
68
- this.currentImage.isImage = 1;
69
- this.currentImage.ID = id;
70
- },
71
-
72
- imageView: function(id, e) {
73
- this.prepView(id);
74
- var h = '';
75
-
76
- h += "<div id='upload-file'>"
77
- if ( this.ID ) {
78
- var params = $H(this.params);
79
- params.ID = '';
80
- params.action = '';
81
- h += "<a href='" + this.urlData[0] + '?' + params.toQueryString() + "' title='<?php echo attribute_escape(__('Browse your files')); ?>' class='back'><?php echo attribute_escape(__('&laquo; Back')); ?></a>";
82
- } else {
83
- h += "<a href='#' onclick='return theFileList.cancelView();' title='<?php echo attribute_escape(__('Browse your files')); ?>' class='back'><?php echo attribute_escape(__('&laquo; Back')) ?></a>";
84
- }
85
- h += "<div id='file-title'>"
86
- h += "<h2>" + this.currentImage.title + "</h2>";
87
- h += " &#8212; <span>";
88
- h += "<a href='#' onclick='return theFileList.editView(" + id + ");'><?php echo attribute_escape(__('Edit')); ?></a>"
89
- h += "</span>";
90
- h += '</div>'
91
- h += "<div id='upload-file-view' class='alignleft'>";
92
- h += "<a href='" + this.currentImage.src + "' onclick='return false;' title='<?php echo attribute_escape(__('Direct link to file')); ?>'>";
93
- h += "<img src='" + ( this.currentImage.thumb ? this.currentImage.thumb : this.currentImage.src ) + "' alt='" + this.currentImage.title + "' width='" + this.currentImage.width + "' height='" + this.currentImage.height + "' />";
94
- h += "</a>";
95
- h += "</div>";
96
-
97
- h += "<form name='uploadoptions' id='uploadoptions' class='alignleft'>";
98
- h += "<table>";
99
- var display = [];
100
- var checked = 'display-thumb';
101
- display.push("<label for='display-thumb'><input type='radio' name='display' id='display-thumb' value='thumb' /> <?php echo attribute_escape(__('Thumbnail')); ?></label><br />");
102
- display.push("<label for='display-full'><input type='radio' name='display' id='display-full' value='full' /> <?php echo attribute_escape(__('Full size')); ?></label>");
103
- if ( display.length ) {
104
- display.push("<br /><label for='display-title'><input type='radio' name='display' id='display-title' value='title' /> <?php echo attribute_escape(__('Title')); ?></label>");
105
- h += "<tr><th style='padding-bottom:.5em'><?php echo attribute_escape(__('Show:')); ?></th><td style='padding-bottom:.5em'>";
106
- $A(display).each( function(i) { h += i; } );
107
- h += "</td></tr>";
108
- }
109
-
110
- h += "<tr><th><?php echo attribute_escape(__('Link to:')); ?></th><td>";
111
- h += "<label for='link-file'><input type='radio' name='link' id='link-file' value='file' checked='checked'/> <?php echo attribute_escape(__('File')); ?></label><br />";
112
- h += "<label for='link-none'><input type='radio' name='link' id='link-none' value='none' /> <?php echo attribute_escape(__('None')); ?></label>";
113
- h += "</td></tr>";
114
-
115
- h += "<tr><td colspan='2'><p class='submit'>";
116
- h += "<input type='button' class='button' name='send' onclick='theFileList.sendToEditor(" + id + ")' value='<?php echo attribute_escape(__('Send to editor &raquo;')); ?>' />";
117
- h += "</p></td></tr></table>";
118
- h += "</form>";
119
-
120
- h += "</div>";
121
-
122
- new Insertion.Top('upload-content', h);
123
- var displayEl = $(checked);
124
- if ( displayEl )
125
- displayEl.checked = true;
126
-
127
- if (e) Event.stop(e);
128
- return false;
129
- },
130
-
131
- editView: function(id, e) {
132
- this.prepView(id);
133
- var h = '';
134
-
135
- var action = 'upload.php?style=' + this.style + '&amp;tab=' + this.tab;
136
- if ( this.postID )
137
- action += '&amp;post_id=' + this.postID;
138
-
139
- h += "<form id='upload-file' method='post' action='" + action + "'>";
140
- if ( this.ID ) {
141
- var params = $H(this.params);
142
- params.ID = '';
143
- params.action = '';
144
- h += "<a href='" + this.urlData[0] + '?' + params.toQueryString() + "' title='<?php echo attribute_escape(__('Browse your files')); ?>' class='back'><?php echo attribute_escape(__('&laquo; Back')); ?></a>";
145
- } else {
146
- h += "<a href='#' onclick='return theFileList.cancelView();' title='<?php echo attribute_escape(__('Browse your files')); ?>' class='back'><?php echo attribute_escape(__('&laquo; Back')); ?></a>";
147
- }
148
- h += "<div id='file-title'>"
149
- h += "<h2>" + this.currentImage.title + "</h2>";
150
- h += " &#8212; <span>";
151
- h += "<a href='#' onclick='return theFileList.imageView(" + id + ");'><?php echo attribute_escape(__('Insert')); ?></a>"
152
- h += "</span>";
153
- h += '</div>'
154
- h += "<div id='upload-file-view' class='alignleft'>";
155
- h += "<a href='" + this.currentImage.src + "' onclick='return false;' title='<?php echo wp_specialchars(__('Direct link to file')); ?>'>";
156
- h += "<img src='" + ( this.currentImage.thumb ? this.currentImage.thumb : this.currentImage.src ) + "' alt='" + this.currentImage.title + "' width='" + this.currentImage.width + "' height='" + this.currentImage.height + "' />";
157
- h += "</a>";
158
- h += "</div>";
159
-
160
- h += "<table><col /><col class='widefat' /><tr>"
161
- h += "<th scope='row'><label for='url'><?php echo attribute_escape(__('URL')); ?></label></th>";
162
- h += "<td><input type='text' id='url' class='readonly' value='" + this.currentImage.src + "' readonly='readonly' /></td>";
163
- h += "</tr><tr>";
164
- h += "<th scope='row'><label for='image_title'><?php echo attribute_escape(__('Alt &amp; Title Text','nggallery')); ?></label></th>";
165
- h += "<td><input type='text' id='image_title' name='image_title' value='" + this.currentImage.alttext + "' /></td>";
166
- h += "</tr><tr>";
167
- h += "<th scope='row'><label for='image_desc'><?php echo attribute_escape(__('Description')); ?></label></th>";
168
- h += "<td><textarea name='image_desc' id='image_desc'>" + this.currentImage.description + "</textarea></td>";
169
- h += "</tr><tr id='buttons' class='submit'><td colspan='2'><input type='button' id='delete' name='delete' class='delete alignleft' value='<?php echo attribute_escape(__('Delete File')); ?>' onclick='theFileList.deleteFile(" + id + ");' />";
170
- h += "<input type='hidden' name='from_tab' value='" + this.tab + "' />";
171
- h += "<input type='hidden' name='action' id='action-value' value='update' />";
172
- h += "<input type='hidden' name='ID' value='" + id + "' />";
173
- h += "<input type='hidden' name='from_gal' id='from_gal' value='" + this.gal + "' />";
174
- h += "<input type='hidden' name='_wpnonce' value='" + this.nonce + "' />";
175
- h += "<div class='submit'><input type='submit' name='save' id='save' value='<?php echo attribute_escape(__('Save &raquo;')); ?>' /></div>";
176
- h += "</td></tr></table></form>";
177
-
178
- new Insertion.Top('upload-content', h);
179
- if (e) Event.stop(e);
180
- return false;
181
- },
182
-
183
- prepView: function(id) {
184
- this.cancelView( true );
185
- var filesEl = $('upload-files');
186
- if ( filesEl )
187
- filesEl.hide();
188
- var navEl = $('current-tab-nav');
189
- if ( navEl )
190
- navEl.hide();
191
- var selGAL = $('select-gallery');
192
- if ( selGAL )
193
- selGAL.hide();
194
- this.grabImageData(id);
195
- },
196
-
197
- cancelView: function( prep ) {
198
- if ( !prep ) {
199
- var filesEl = $('upload-files');
200
- if ( filesEl )
201
- Element.show(filesEl);
202
- var navEl = $('current-tab-nav');
203
- if ( navEl )
204
- Element.show(navEl);
205
- var selGAL = $('select-gallery');
206
- if ( selGAL )
207
- Element.show(selGAL);
208
- }
209
- if ( !this.ID )
210
- this.grabImageData(0);
211
- var div = $('upload-file');
212
- if ( div )
213
- Element.remove(div);
214
- return false;
215
- },
216
-
217
- sendToEditor: function(id) {
218
- this.grabImageData(id);
219
- var link = '';
220
- var display = '';
221
- var h = '';
222
-
223
- link = $A(document.forms.uploadoptions.elements.link).detect( function(i) { return i.checked; } ).value;
224
- displayEl = $A(document.forms.uploadoptions.elements.display).detect( function(i) { return i.checked; } )
225
- if ( displayEl )
226
- display = displayEl.value;
227
- else if ( 1 == this.currentImage.isImage )
228
- display = 'full';
229
-
230
- if ( 'none' != link )
231
- h += '<a href="' + this.currentImage.src + '" <?php echo $thumbcode; ?> title="' + this.currentImage.alttext + '">';
232
- if ( display && 'title' != display )
233
- h += "<img src='" + ( 'thumb' == display ? ( this.currentImage.thumb ) : ( this.currentImage.src ) ) + "' alt='" + this.currentImage.title + "' title='" + this.currentImage.alttext + "' />";
234
- else
235
- h += this.currentImage.alttext;
236
- if ( 'none' != link )
237
- h += '</a>';
238
-
239
- var win = window.opener ? window.opener : window.dialogArguments;
240
- if ( !win )
241
- win = top;
242
- tinyMCE = win.tinyMCE;
243
- if ( typeof tinyMCE != 'undefined' && tinyMCE.getInstanceById('content') ) {
244
- tinyMCE.selectedInstance.getWin().focus();
245
- tinyMCE.execCommand('mceInsertContent', false, h);
246
- } else
247
- win.edInsertContent(win.edCanvas, h);
248
- if ( !this.ID )
249
- this.cancelView();
250
- return false;
251
- },
252
-
253
- deleteFile: function(id) {
254
- if ( confirm("<?php printf(js_escape(__("Are you sure you want to delete the file '%s'?\nClick ok to delete or cancel to go back.")), '" + this.currentImage.title + "'); ?>") ) {
255
- $('action-value').value = 'delete';
256
- $('upload-file').submit();
257
- return true;
258
- }
259
- return false;
260
- }
261
-
262
- };
263
- theFileList.initializeVars();
264
- theFileList.initializeLinks();
265
- } );
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * @title Uplaod-tab, required for Rich text editor
5
+ * @author Alex Rabe
6
+ * @copyright 2008
7
+ */
8
+
9
+ require_once('../../../../../wp-config.php');
10
+ require_once('../../../../../wp-admin/admin.php');
11
+ cache_javascript_headers();
12
+ $ngg_options = get_option('ngg_options');
13
+
14
+ // get the effect code
15
+ if ($ngg_options['thumbEffect'] != "none") $thumbcode = stripslashes($ngg_options['thumbCode']);
16
+ if ($ngg_options['thumbEffect'] == "highslide") $thumbcode = 'class="highslide" onclick="return hs.expand(this)"';
17
+ else $thumbcode = str_replace("%GALLERY_NAME%", "", $thumbcode);
18
+
19
+ ?>
20
+ addLoadEvent( function() {
21
+ theFileList = {
22
+ currentImage: {ID: 0},
23
+ nonce: '',
24
+ tab: '',
25
+ gal: '',
26
+ postID: 0,
27
+
28
+ initializeVars: function() {
29
+ this.urlData = document.location.href.split('?');
30
+ this.params = this.urlData[1].toQueryParams();
31
+ this.postID = this.params['post_id'];
32
+ this.tab = this.params['tab'];
33
+ this.gal = this.params['select_gal'];
34
+ this.style = this.params['style'];
35
+ this.ID = this.params['ID'];
36
+ if ( !this.style )
37
+ this.style = 'default';
38
+ var nonceEl = $('nonce-value');
39
+ if ( nonceEl )
40
+ this.nonce = nonceEl.value;
41
+ if ( this.ID ) {
42
+ this.grabImageData( this.ID );
43
+ this.imageView( this.ID );
44
+ }
45
+ },
46
+
47
+ initializeLinks: function() {
48
+ if ( this.ID )
49
+ return;
50
+ $$('a.file-link').each( function(i) {
51
+ var id = i.id.split('-').pop();
52
+ i.onclick = function(e) { theFileList[ 'inline' == theFileList.style ? 'imageView' : 'editView' ](id, e); }
53
+ } );
54
+ },
55
+
56
+ grabImageData: function(id) {
57
+ if ( id == this.currentImage.ID )
58
+ return;
59
+
60
+ this.currentImage.src = ( 0 == id ? '' : $('nggimage-url-' + id).value );
61
+ this.currentImage.thumb = ( 0 == id ? '' : $('nggimage-thumb-url-' + id).value );
62
+ this.currentImage.title = ( 0 == id ? '' : $('nggimage-title-' + id).value );
63
+ this.currentImage.alttext = ( 0 == id ? '' : $('nggimage-alttext-' + id).value );
64
+ this.currentImage.description = ( 0 == id ? '' : $('nggimage-description-' + id).value );
65
+ var widthEl = $('nggimage-width-' + id);
66
+ if ( widthEl ) {
67
+ this.currentImage.width = ( 0 == id ? '' : widthEl.value );
68
+ this.currentImage.height = ( 0 == id ? '' : $('nggimage-height-' + id).value );
69
+ } else {
70
+ this.currentImage.width = false;
71
+ this.currentImage.height = false;
72
+ }
73
+ this.currentImage.isImage = 1;
74
+ this.currentImage.ID = id;
75
+ },
76
+
77
+ imageView: function(id, e) {
78
+ this.prepView(id);
79
+ var h = '';
80
+
81
+ h += "<div id='upload-file'>"
82
+ if ( this.ID ) {
83
+ var params = $H(this.params);
84
+ params.ID = '';
85
+ params.action = '';
86
+ h += "<a href='" + this.urlData[0] + '?' + params.toQueryString() + "' title='<?php echo attribute_escape(__('Browse your files')); ?>' class='back'><?php echo attribute_escape(__('&laquo; Back')); ?></a>";
87
+ } else {
88
+ h += "<a href='#' onclick='return theFileList.cancelView();' title='<?php echo attribute_escape(__('Browse your files')); ?>' class='back'><?php echo attribute_escape(__('&laquo; Back')) ?></a>";
89
+ }
90
+ h += "<div id='file-title'>"
91
+ h += "<h2>" + this.currentImage.title + "</h2>";
92
+ h += " &#8212; <span>";
93
+ h += "<a href='#' onclick='return theFileList.editView(" + id + ");'><?php echo attribute_escape(__('Edit')); ?></a>"
94
+ h += "</span>";
95
+ h += '</div>'
96
+ h += "<div id='upload-file-view' class='alignleft'>";
97
+ h += "<a href='" + this.currentImage.src + "' onclick='return false;' title='<?php echo attribute_escape(__('Direct link to file')); ?>'>";
98
+ h += "<img src='" + ( this.currentImage.thumb ? this.currentImage.thumb : this.currentImage.src ) + "' alt='" + this.currentImage.title + "' width='" + this.currentImage.width + "' height='" + this.currentImage.height + "' />";
99
+ h += "</a>";
100
+ h += "</div>";
101
+
102
+ h += "<form name='uploadoptions' id='uploadoptions' class='alignleft'>";
103
+ h += "<table>";
104
+ var display = [];
105
+ var checked = 'display-thumb';
106
+ display.push("<label for='display-thumb'><input type='radio' name='display' id='display-thumb' value='thumb' /> <?php echo attribute_escape(__('Thumbnail')); ?></label><br />");
107
+ display.push("<label for='display-full'><input type='radio' name='display' id='display-full' value='full' /> <?php echo attribute_escape(__('Full size')); ?></label>");
108
+ if ( display.length ) {
109
+ display.push("<br /><label for='display-title'><input type='radio' name='display' id='display-title' value='title' /> <?php echo attribute_escape(__('Title')); ?></label>");
110
+ h += "<tr><th style='padding-bottom:.5em'><?php echo attribute_escape(__('Show:')); ?></th><td style='padding-bottom:.5em'>";
111
+ $A(display).each( function(i) { h += i; } );
112
+ h += "</td></tr>";
113
+ }
114
+
115
+ h += "<tr><th><?php echo attribute_escape(__('Link to:')); ?></th><td>";
116
+ h += "<label for='link-file'><input type='radio' name='link' id='link-file' value='file' checked='checked'/> <?php echo attribute_escape(__('File')); ?></label><br />";
117
+ h += "<label for='link-none'><input type='radio' name='link' id='link-none' value='none' /> <?php echo attribute_escape(__('None')); ?></label>";
118
+ h += "</td></tr>";
119
+
120
+ h += "<tr><td colspan='2'><p class='submit'>";
121
+ h += "<input type='button' class='button' name='send' onclick='theFileList.sendToEditor(" + id + ")' value='<?php echo attribute_escape(__('Send to editor &raquo;')); ?>' />";
122
+ h += "</p></td></tr></table>";
123
+ h += "</form>";
124
+
125
+ h += "</div>";
126
+
127
+ new Insertion.Top('upload-content', h);
128
+ var displayEl = $(checked);
129
+ if ( displayEl )
130
+ displayEl.checked = true;
131
+
132
+ if (e) Event.stop(e);
133
+ return false;
134
+ },
135
+
136
+ editView: function(id, e) {
137
+ this.prepView(id);
138
+ var h = '';
139
+
140
+ var action = 'upload.php?style=' + this.style + '&amp;tab=' + this.tab;
141
+ if ( this.postID )
142
+ action += '&amp;post_id=' + this.postID;
143
+
144
+ h += "<form id='upload-file' method='post' action='" + action + "'>";
145
+ if ( this.ID ) {
146
+ var params = $H(this.params);
147
+ params.ID = '';
148
+ params.action = '';
149
+ h += "<a href='" + this.urlData[0] + '?' + params.toQueryString() + "' title='<?php echo attribute_escape(__('Browse your files')); ?>' class='back'><?php echo attribute_escape(__('&laquo; Back')); ?></a>";
150
+ } else {
151
+ h += "<a href='#' onclick='return theFileList.cancelView();' title='<?php echo attribute_escape(__('Browse your files')); ?>' class='back'><?php echo attribute_escape(__('&laquo; Back')); ?></a>";
152
+ }
153
+ h += "<div id='file-title'>"
154
+ h += "<h2>" + this.currentImage.title + "</h2>";
155
+ h += " &#8212; <span>";
156
+ h += "<a href='#' onclick='return theFileList.imageView(" + id + ");'><?php echo attribute_escape(__('Insert')); ?></a>"
157
+ h += "</span>";
158
+ h += '</div>'
159
+ h += "<div id='upload-file-view' class='alignleft'>";
160
+ h += "<a href='" + this.currentImage.src + "' onclick='return false;' title='<?php echo wp_specialchars(__('Direct link to file')); ?>'>";
161
+ h += "<img src='" + ( this.currentImage.thumb ? this.currentImage.thumb : this.currentImage.src ) + "' alt='" + this.currentImage.title + "' width='" + this.currentImage.width + "' height='" + this.currentImage.height + "' />";
162
+ h += "</a>";
163
+ h += "</div>";
164
+
165
+ h += "<table><col /><col class='widefat' /><tr>"
166
+ h += "<th scope='row'><label for='url'><?php echo attribute_escape(__('URL')); ?></label></th>";
167
+ h += "<td><input type='text' id='url' class='readonly' value='" + this.currentImage.src + "' readonly='readonly' /></td>";
168
+ h += "</tr><tr>";
169
+ h += "<th scope='row'><label for='image_title'><?php echo attribute_escape(__('Alt &amp; Title Text','nggallery')); ?></label></th>";
170
+ h += "<td><input type='text' id='image_title' name='image_title' value='" + this.currentImage.alttext + "' /></td>";
171
+ h += "</tr><tr>";
172
+ h += "<th scope='row'><label for='image_desc'><?php echo attribute_escape(__('Description')); ?></label></th>";
173
+ h += "<td><textarea name='image_desc' id='image_desc'>" + this.currentImage.description + "</textarea></td>";
174
+ h += "</tr><tr id='buttons' class='submit'><td colspan='2'><input type='button' id='delete' name='delete' class='delete alignleft' value='<?php echo attribute_escape(__('Delete File')); ?>' onclick='theFileList.deleteFile(" + id + ");' />";
175
+ h += "<input type='hidden' name='from_tab' value='" + this.tab + "' />";
176
+ h += "<input type='hidden' name='action' id='action-value' value='update' />";
177
+ h += "<input type='hidden' name='ID' value='" + id + "' />";
178
+ h += "<input type='hidden' name='from_gal' id='from_gal' value='" + this.gal + "' />";
179
+ h += "<input type='hidden' name='_wpnonce' value='" + this.nonce + "' />";
180
+ h += "<div class='submit'><input type='submit' name='save' id='save' value='<?php echo attribute_escape(__('Save &raquo;')); ?>' /></div>";
181
+ h += "</td></tr></table></form>";
182
+
183
+ new Insertion.Top('upload-content', h);
184
+ if (e) Event.stop(e);
185
+ return false;
186
+ },
187
+
188
+ prepView: function(id) {
189
+ this.cancelView( true );
190
+ var filesEl = $('upload-files');
191
+ if ( filesEl )
192
+ filesEl.hide();
193
+ var navEl = $('current-tab-nav');
194
+ if ( navEl )
195
+ navEl.hide();
196
+ var selGAL = $('select-gallery');
197
+ if ( selGAL )
198
+ selGAL.hide();
199
+ this.grabImageData(id);
200
+ },
201
+
202
+ cancelView: function( prep ) {
203
+ if ( !prep ) {
204
+ var filesEl = $('upload-files');
205
+ if ( filesEl )
206
+ Element.show(filesEl);
207
+ var navEl = $('current-tab-nav');
208
+ if ( navEl )
209
+ Element.show(navEl);
210
+ var selGAL = $('select-gallery');
211
+ if ( selGAL )
212
+ Element.show(selGAL);
213
+ }
214
+ if ( !this.ID )
215
+ this.grabImageData(0);
216
+ var div = $('upload-file');
217
+ if ( div )
218
+ Element.remove(div);
219
+ return false;
220
+ },
221
+
222
+ sendToEditor: function(id) {
223
+ this.grabImageData(id);
224
+ var link = '';
225
+ var display = '';
226
+ var h = '';
227
+
228
+ link = $A(document.forms.uploadoptions.elements.link).detect( function(i) { return i.checked; } ).value;
229
+ displayEl = $A(document.forms.uploadoptions.elements.display).detect( function(i) { return i.checked; } )
230
+ if ( displayEl )
231
+ display = displayEl.value;
232
+ else if ( 1 == this.currentImage.isImage )
233
+ display = 'full';
234
+
235
+ if ( 'none' != link )
236
+ h += '<a href="' + this.currentImage.src + '" <?php echo $thumbcode; ?> title="' + this.currentImage.alttext + '">';
237
+ if ( display && 'title' != display )
238
+ h += "<img src='" + ( 'thumb' == display ? ( this.currentImage.thumb ) : ( this.currentImage.src ) ) + "' alt='" + this.currentImage.title + "' title='" + this.currentImage.alttext + "' />";
239
+ else
240
+ h += this.currentImage.alttext;
241
+ if ( 'none' != link )
242
+ h += '</a>';
243
+
244
+ var win = window.opener ? window.opener : window.dialogArguments;
245
+ if ( !win )
246
+ win = top;
247
+ tinyMCE = win.tinyMCE;
248
+ if ( typeof tinyMCE != 'undefined' && tinyMCE.getInstanceById('content') ) {
249
+ tinyMCE.selectedInstance.getWin().focus();
250
+ tinyMCE.execCommand('mceInsertContent', false, h);
251
+ } else
252
+ win.edInsertContent(win.edCanvas, h);
253
+ if ( !this.ID )
254
+ this.cancelView();
255
+ return false;
256
+ },
257
+
258
+ deleteFile: function(id) {
259
+ if ( confirm("<?php printf(js_escape(__("Are you sure you want to delete the file '%s'?\nClick ok to delete or cancel to go back.")), '" + this.currentImage.title + "'); ?>") ) {
260
+ $('action-value').value = 'delete';
261
+ $('upload-file').submit();
262
+ return true;
263
+ }
264
+ return false;
265
+ }
266
+
267
+ };
268
+ theFileList.initializeVars();
269
+ theFileList.initializeLinks();
270
+ } );
admin/manage.php CHANGED
@@ -8,8 +8,8 @@ function nggallery_admin_manage_gallery() {
8
  //TODO:GID & Mode should the hidden post variables
9
 
10
  // GET variables
11
- $act_gid = trim(attribute_escape($_GET['gid']));
12
- $act_pid = trim(attribute_escape($_GET['pid']));
13
  $mode = trim(attribute_escape($_GET['mode']));
14
 
15
  // get the options
@@ -44,7 +44,7 @@ function nggallery_admin_manage_gallery() {
44
 
45
  // delete pictures
46
  $imagelist = $wpdb->get_col("SELECT filename FROM $wpdb->nggpictures WHERE galleryid = '$act_gid' ");
47
- if ($ngg_options[deleteImg]) {
48
  if (is_array($imagelist)) {
49
  foreach ($imagelist as $filename) {
50
  @unlink(WINABSPATH.$gallerypath.'/'.$thumb_folder.'/'.$thumb_prefix.$filename);
@@ -74,9 +74,9 @@ function nggallery_admin_manage_gallery() {
74
  if ($gallerypath){
75
  $thumb_folder = nggallery::get_thumbnail_folder($gallerypath, FALSE);
76
  $thumb_prefix = nggallery::get_thumbnail_prefix($gallerypath, FALSE);
77
- if ($ngg_options[deleteImg]) {
78
  @unlink(WINABSPATH.$gallerypath.'/'.$thumb_folder.'/'.$thumb_prefix.$filename);
79
- unlink(WINABSPATH.$gallerypath.'/'.$filename);
80
  }
81
  }
82
  $delete_pic = $wpdb->query("DELETE FROM $wpdb->nggpictures WHERE pid = $act_pid");
@@ -107,17 +107,17 @@ function nggallery_admin_manage_gallery() {
107
  break;
108
  case 1:
109
  // Set watermark
110
- ngg_generateWatermark(WINABSPATH.$gallerypath,$imageslist);
111
  nggallery::show_message(__('Watermark successfully added',"nggallery"));
112
  break;
113
  case 2:
114
  // Create new thumbnails
115
- ngg_generatethumbnail(WINABSPATH.$gallerypath,$imageslist);
116
  nggallery::show_message(__('Thumbnails successfully created. Please refresh your browser cache.',"nggallery"));
117
  break;
118
  case 3:
119
  // Resample images
120
- ngg_resizeImages(WINABSPATH.$gallerypath,$imageslist);
121
  nggallery::show_message(__('Images successfully resized',"nggallery"));
122
  break;
123
  case 4:
@@ -128,7 +128,7 @@ function nggallery_admin_manage_gallery() {
128
  $thumb_prefix = nggallery::get_thumbnail_prefix($gallerypath, FALSE);
129
  foreach ( $_POST['doaction'] as $imageID ) {
130
  $filename = $wpdb->get_var("SELECT filename FROM $wpdb->nggpictures WHERE pid = '$imageID' ");
131
- if ($ngg_options[deleteImg]) {
132
  unlink(WINABSPATH.$gallerypath.'/'.$thumb_folder.'/'.$thumb_prefix.$filename);
133
  unlink(WINABSPATH.$gallerypath.'/'.$filename);
134
  }
@@ -139,6 +139,11 @@ function nggallery_admin_manage_gallery() {
139
  nggallery::show_message(__('Pictures deleted successfully ',"nggallery"));
140
  }
141
  break;
 
 
 
 
 
142
  }
143
  }
144
 
@@ -195,45 +200,28 @@ function nggallery_admin_manage_gallery() {
195
 
196
  check_admin_referer('ngg_updategallery');
197
 
198
- $gallery_title = attribute_escape($_POST[title]);
199
- $gallery_path = attribute_escape($_POST[path]);
200
- $gallery_desc = attribute_escape($_POST[gallerydesc]);
201
- $gallery_pageid = attribute_escape($_POST[pageid]);
202
- $gallery_preview = attribute_escape($_POST[previewpic]);
203
 
204
  $result = $wpdb->query("UPDATE $wpdb->nggallery SET title= '$gallery_title', path= '$gallery_path', galdesc = '$gallery_desc', pageid = '$gallery_pageid', previewpic = '$gallery_preview' WHERE gid = '$act_gid'");
205
  if ($showTags)
206
- $result = ngg_update_tags(attribute_escape($_POST[tags]));
207
  else
208
- $result = ngg_update_pictures(attribute_escape($_POST[description]), attribute_escape($_POST[alttext]), attribute_escape($_POST[exclude]), $act_gid );
209
 
210
  nggallery::show_message(__('Update successful',"nggallery"));
211
  }
212
 
213
  if (isset ($_POST['scanfolder'])) {
214
  // Rescan folder
215
-
216
  check_admin_referer('ngg_updategallery');
217
 
218
  $gallerypath = $wpdb->get_var("SELECT path FROM $wpdb->nggallery WHERE gid = '$act_gid' ");
219
- $old_imageslist = $wpdb->get_col("SELECT filename FROM $wpdb->nggpictures WHERE galleryid = '$act_gid' ");
220
- // if no images are there, create empty array
221
- if ($old_imageslist == NULL) $old_imageslist = array();
222
- // read list of images in folder
223
- $new_imageslist = ngg_scandir(WINABSPATH.$gallerypath);
224
- // check difference
225
- $imageslist = array_diff($new_imageslist, $old_imageslist);
226
- //create thumbnails
227
- ngg_generatethumbnail(WINABSPATH.$gallerypath,$imageslist);
228
- // add images to database
229
- $count_pic = 0;
230
- if (is_array($imageslist)) {
231
- foreach($imageslist as $picture) {
232
- $result = $wpdb->query("INSERT INTO $wpdb->nggpictures (galleryid, filename, alttext, exclude) VALUES ('$act_gid', '$picture', '$picture', 0) ");
233
- if ($result) $count_pic++;
234
- }
235
- $messagetext = '<font color="green">'.$count_pic.__(' picture(s) successfully added','nggallery').'</font>';
236
- }
237
  }
238
 
239
  if (isset ($_POST['addnewpage'])) {
@@ -241,8 +229,8 @@ function nggallery_admin_manage_gallery() {
241
 
242
  check_admin_referer('ngg_updategallery');
243
 
244
- $parent_id = attribute_escape($_POST[parent_id]);
245
- $gallery_title = attribute_escape($_POST[title]);
246
  $gallery_name = $wpdb->get_var("SELECT name FROM $wpdb->nggallery WHERE gid = '$act_gid' ");
247
 
248
  // Create a WP page
@@ -485,7 +473,7 @@ function getNumChecked(form)
485
  </tr>
486
  <tr>
487
  <th align="left"><?php _e('Path', 'nggallery') ?>:</th>
488
- <th align="left"><input type="text" size="50" name="path" value="<?php echo $act_gallery->path; ?>" /></th>
489
 
490
  <th align="right"><?php _e('Create new page', 'nggallery') ?>:</th>
491
  <th align="left">
@@ -511,6 +499,7 @@ function getNumChecked(form)
511
  <option value="2" ><?php _e("Create new thumbnails",'nggallery')?></option>
512
  <option value="3" ><?php _e("Resize images",'nggallery')?></option>
513
  <option value="4" ><?php _e("Delete images",'nggallery')?></option>
 
514
  <?php } else { ?>
515
  <option value="5" ><?php _e("Add tags",'nggallery')?></option>
516
  <option value="6" ><?php _e("Delete tags",'nggallery')?></option>
@@ -711,4 +700,4 @@ function ngg_update_tags( $taglist ) {
711
  return;
712
  }
713
 
714
- ?>
8
  //TODO:GID & Mode should the hidden post variables
9
 
10
  // GET variables
11
+ $act_gid = (int) trim(attribute_escape($_GET['gid']));
12
+ $act_pid = (int) trim(attribute_escape($_GET['pid']));
13
  $mode = trim(attribute_escape($_GET['mode']));
14
 
15
  // get the options
44
 
45
  // delete pictures
46
  $imagelist = $wpdb->get_col("SELECT filename FROM $wpdb->nggpictures WHERE galleryid = '$act_gid' ");
47
+ if ($ngg_options['deleteImg']) {
48
  if (is_array($imagelist)) {
49
  foreach ($imagelist as $filename) {
50
  @unlink(WINABSPATH.$gallerypath.'/'.$thumb_folder.'/'.$thumb_prefix.$filename);
74
  if ($gallerypath){
75
  $thumb_folder = nggallery::get_thumbnail_folder($gallerypath, FALSE);
76
  $thumb_prefix = nggallery::get_thumbnail_prefix($gallerypath, FALSE);
77
+ if ($ngg_options['deleteImg']) {
78
  @unlink(WINABSPATH.$gallerypath.'/'.$thumb_folder.'/'.$thumb_prefix.$filename);
79
+ @unlink(WINABSPATH.$gallerypath.'/'.$filename);
80
  }
81
  }
82
  $delete_pic = $wpdb->query("DELETE FROM $wpdb->nggpictures WHERE pid = $act_pid");
107
  break;
108
  case 1:
109
  // Set watermark
110
+ nggAdmin::generateWatermark(WINABSPATH.$gallerypath,$imageslist);
111
  nggallery::show_message(__('Watermark successfully added',"nggallery"));
112
  break;
113
  case 2:
114
  // Create new thumbnails
115
+ nggAdmin::generateThumbnail(WINABSPATH.$gallerypath,$imageslist);
116
  nggallery::show_message(__('Thumbnails successfully created. Please refresh your browser cache.',"nggallery"));
117
  break;
118
  case 3:
119
  // Resample images
120
+ nggAdmin::resizeImages(WINABSPATH.$gallerypath,$imageslist);
121
  nggallery::show_message(__('Images successfully resized',"nggallery"));
122
  break;
123
  case 4:
128
  $thumb_prefix = nggallery::get_thumbnail_prefix($gallerypath, FALSE);
129
  foreach ( $_POST['doaction'] as $imageID ) {
130
  $filename = $wpdb->get_var("SELECT filename FROM $wpdb->nggpictures WHERE pid = '$imageID' ");
131
+ if ($ngg_options['deleteImg']) {
132
  unlink(WINABSPATH.$gallerypath.'/'.$thumb_folder.'/'.$thumb_prefix.$filename);
133
  unlink(WINABSPATH.$gallerypath.'/'.$filename);
134
  }
139
  nggallery::show_message(__('Pictures deleted successfully ',"nggallery"));
140
  }
141
  break;
142
+ case 8:
143
+ // Import Metadata
144
+ nggAdmin::import_MetaData($_POST['doaction']);
145
+ nggallery::show_message(__('Import metadata finished',"nggallery"));
146
+ break;
147
  }
148
  }
149
 
200
 
201
  check_admin_referer('ngg_updategallery');
202
 
203
+ $gallery_title = attribute_escape($_POST['title']);
204
+ $gallery_path = attribute_escape($_POST['path']);
205
+ $gallery_desc = attribute_escape($_POST['gallerydesc']);
206
+ $gallery_pageid = attribute_escape($_POST['pageid']);
207
+ $gallery_preview = attribute_escape($_POST['previewpic']);
208
 
209
  $result = $wpdb->query("UPDATE $wpdb->nggallery SET title= '$gallery_title', path= '$gallery_path', galdesc = '$gallery_desc', pageid = '$gallery_pageid', previewpic = '$gallery_preview' WHERE gid = '$act_gid'");
210
  if ($showTags)
211
+ $result = ngg_update_tags(attribute_escape($_POST['tags']));
212
  else
213
+ $result = ngg_update_pictures(attribute_escape($_POST['description']), attribute_escape($_POST['alttext']), attribute_escape($_POST['exclude']), $act_gid );
214
 
215
  nggallery::show_message(__('Update successful',"nggallery"));
216
  }
217
 
218
  if (isset ($_POST['scanfolder'])) {
219
  // Rescan folder
220
+ //TODO:Should be combine in import_gallery function !!!
221
  check_admin_referer('ngg_updategallery');
222
 
223
  $gallerypath = $wpdb->get_var("SELECT path FROM $wpdb->nggallery WHERE gid = '$act_gid' ");
224
+ nggAdmin::import_gallery($gallerypath);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
225
  }
226
 
227
  if (isset ($_POST['addnewpage'])) {
229
 
230
  check_admin_referer('ngg_updategallery');
231
 
232
+ $parent_id = attribute_escape($_POST['parent_id']);
233
+ $gallery_title = attribute_escape($_POST['title']);
234
  $gallery_name = $wpdb->get_var("SELECT name FROM $wpdb->nggallery WHERE gid = '$act_gid' ");
235
 
236
  // Create a WP page
473
  </tr>
474
  <tr>
475
  <th align="left"><?php _e('Path', 'nggallery') ?>:</th>
476
+ <th align="left"><input <?php if (IS_WPMU) echo 'readonly = "readonly"'; ?> type="text" size="50" name="path" value="<?php echo $act_gallery->path; ?>" /></th>
477
 
478
  <th align="right"><?php _e('Create new page', 'nggallery') ?>:</th>
479
  <th align="left">
499
  <option value="2" ><?php _e("Create new thumbnails",'nggallery')?></option>
500
  <option value="3" ><?php _e("Resize images",'nggallery')?></option>
501
  <option value="4" ><?php _e("Delete images",'nggallery')?></option>
502
+ <option value="8" ><?php _e("Import metadata",'nggallery')?></option>
503
  <?php } else { ?>
504
  <option value="5" ><?php _e("Add tags",'nggallery')?></option>
505
  <option value="6" ><?php _e("Delete tags",'nggallery')?></option>
700
  return;
701
  }
702
 
703
+ ?>
admin/overview.php CHANGED
@@ -14,7 +14,7 @@ function nggallery_admin_overview() {
14
  $nggCheck->name = "ngg";
15
 
16
  ?>
17
- <div class="wrap">
18
  <h2><?php _e('NextGEN Gallery Overview', 'nggallery') ?></h2>
19
 
20
  <div id="zeitgeist">
@@ -30,16 +30,21 @@ function nggallery_admin_overview() {
30
  vprintf(__('There are totally %1$s pictures in %2$s galleries, which are spread across %3$s albums.', 'nggallery'), $replace);
31
  ?>
32
  </p>
33
- <?php if ($nggCheck->startCheck()) { ?>
34
  <h3><font color="red"><?php _e('New Version available', 'nggallery') ?></font></h3>
35
  <p><?php _e('The server reports that a new NextGEN Gallery Version is now available. Please visit the plugin homepage for more information.', 'nggallery') ?></p>
36
  <p><a href="http://wordpress.org/extend/plugins/nextgen-gallery/download/" target="_blank"> <?php _e('Download here', 'nggallery') ?> </a></p>
37
- <?php } ?>
38
- <h3><?php _e('Server Settings', 'nggallery') ?></h3>
 
 
 
 
39
  <ul>
40
  <?php ngg_get_serverinfo(); ?>
41
  </ul>
42
  <?php ngg_gd_info(); ?>
 
43
  </div>
44
 
45
  <h3><?php _e('Welcome', 'nggallery') ?></h3>
@@ -145,6 +150,15 @@ function ngg_get_serverinfo() {
145
  // Get actual memory_get_usage
146
  if (function_exists('memory_get_usage')) $memory_usage = round(memory_get_usage() / 1024 / 1024, 2) . __(' MByte', 'nggallery');
147
  else $memory_usage = __('N/A', 'nggallery');
 
 
 
 
 
 
 
 
 
148
 
149
  ?>
150
  <li><?php _e('Operating System', 'nggallery'); ?> : <strong><?php echo PHP_OS; ?></strong></li>
@@ -159,6 +173,9 @@ function ngg_get_serverinfo() {
159
  <li><?php _e('PHP Max Upload Size', 'nggallery'); ?> : <strong><?php echo $upload_max; ?></strong></li>
160
  <li><?php _e('PHP Max Post Size', 'nggallery'); ?> : <strong><?php echo $post_max; ?></strong></li>
161
  <li><?php _e('PHP Max Script Execute Time', 'nggallery'); ?> : <strong><?php echo $max_execute; ?>s</strong></li>
 
 
 
162
  <?php
163
  }
164
 
@@ -242,5 +259,129 @@ if ( !class_exists( "CheckPlugin" ) ) {
242
  }
243
  }
244
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
245
 
246
  ?>
14
  $nggCheck->name = "ngg";
15
 
16
  ?>
17
+ <div class="wrap" style="overflow:hidden;">
18
  <h2><?php _e('NextGEN Gallery Overview', 'nggallery') ?></h2>
19
 
20
  <div id="zeitgeist">
30
  vprintf(__('There are totally %1$s pictures in %2$s galleries, which are spread across %3$s albums.', 'nggallery'), $replace);
31
  ?>
32
  </p>
33
+ <?php if ( $nggCheck->startCheck() && (!IS_WPMU) ) { ?>
34
  <h3><font color="red"><?php _e('New Version available', 'nggallery') ?></font></h3>
35
  <p><?php _e('The server reports that a new NextGEN Gallery Version is now available. Please visit the plugin homepage for more information.', 'nggallery') ?></p>
36
  <p><a href="http://wordpress.org/extend/plugins/nextgen-gallery/download/" target="_blank"> <?php _e('Download here', 'nggallery') ?> </a></p>
37
+ <?php } ?>
38
+ <?php if (IS_WPMU) {
39
+ if (wpmu_enable_function('wpmuQuotaCheck'))
40
+ echo ngg_SpaceManager::details();
41
+ } else { ?>
42
+ <h3><?php _e('Server Settings', 'nggallery') ?></h3>
43
  <ul>
44
  <?php ngg_get_serverinfo(); ?>
45
  </ul>
46
  <?php ngg_gd_info(); ?>
47
+ <?php } ?>
48
  </div>
49
 
50
  <h3><?php _e('Welcome', 'nggallery') ?></h3>
150
  // Get actual memory_get_usage
151
  if (function_exists('memory_get_usage')) $memory_usage = round(memory_get_usage() / 1024 / 1024, 2) . __(' MByte', 'nggallery');
152
  else $memory_usage = __('N/A', 'nggallery');
153
+ // required for EXIF read
154
+ if (is_callable('exif_read_data')) $exif = __('Yes', 'nggallery'). " ( V" . substr(phpversion('exif'),0,4) . ")" ;
155
+ else $exif = __('No', 'nggallery');
156
+ // required for meta data
157
+ if (is_callable('iptcparse')) $iptc = __('Yes', 'nggallery');
158
+ else $iptc = __('No', 'nggallery');
159
+ // required for meta data
160
+ if (is_callable('xml_parser_create')) $xml = __('Yes', 'nggallery');
161
+ else $xml = __('No', 'nggallery');
162
 
163
  ?>
164
  <li><?php _e('Operating System', 'nggallery'); ?> : <strong><?php echo PHP_OS; ?></strong></li>
173
  <li><?php _e('PHP Max Upload Size', 'nggallery'); ?> : <strong><?php echo $upload_max; ?></strong></li>
174
  <li><?php _e('PHP Max Post Size', 'nggallery'); ?> : <strong><?php echo $post_max; ?></strong></li>
175
  <li><?php _e('PHP Max Script Execute Time', 'nggallery'); ?> : <strong><?php echo $max_execute; ?>s</strong></li>
176
+ <li><?php _e('PHP Exif support', 'nggallery'); ?> : <strong><?php echo $exif; ?></strong></li>
177
+ <li><?php _e('PHP IPTC support', 'nggallery'); ?> : <strong><?php echo $iptc; ?></strong></li>
178
+ <li><?php _e('PHP XML support', 'nggallery'); ?> : <strong><?php echo $xml; ?></strong></li>
179
  <?php
180
  }
181
 
259
  }
260
  }
261
  }
262
+ // ***************************************************************
263
+
264
+ /**
265
+ * WPMU feature taken from Z-Space Upload Quotas
266
+ * @author Dylan Reeve
267
+ * @url http://dylan.wibble.net/
268
+ *
269
+ */
270
+
271
+ class ngg_SpaceManager {
272
+
273
+ function getQuota() {
274
+ if (function_exists(get_space_allowed))
275
+ $quota = get_space_allowed();
276
+ else
277
+ $quota = get_site_option( "blog_upload_space" );
278
+
279
+ return $quota;
280
+ }
281
+
282
+ function details() {
283
+
284
+ // take default seetings
285
+ $settings = array(
286
+
287
+ 'remain' => array(
288
+ 'color_text' => 'white',
289
+ 'color_bar' => '#0D324F',
290
+ 'color_bg' => '#a0a0a0',
291
+ 'decimals' => 2,
292
+ 'unit' => 'm',
293
+ 'display' => true,
294
+ 'graph' => false
295
+ ),
296
+
297
+ 'used' => array(
298
+ 'color_text' => 'white',
299
+ 'color_bar' => '#0D324F',
300
+ 'color_bg' => '#a0a0a0',
301
+ 'decimals' => 2,
302
+ 'unit' => 'm',
303
+ 'display' => true,
304
+ 'graph' => true
305
+ )
306
+ );
307
+
308
+ $quota = ngg_SpaceManager::getQuota() * 1024 * 1024;
309
+ $used = get_dirsize( constant( "ABSPATH" ) . constant( "UPLOADS" ) );
310
+ // $used = get_dirsize( ABSPATH."wp-content/blogs.dir/".$blog_id."/files" );
311
+
312
+ if ($used > $quota) $percentused = '100';
313
+ else $percentused = ( $used / $quota ) * 100;
314
+
315
+ $remaining = $quota - $used;
316
+ $percentremain = 100 - $percentused;
317
+
318
+ $out = "";
319
+ $out .= '<div id="spaceused"> <h3>'.__('Storage Space','nggallery').'</h3>';
320
+
321
+ if ($settings['used']['display']) {
322
+ $out .= __('Upload Space Used:','nggallery') . "\n";
323
+ $out .= ngg_SpaceManager::buildGraph($settings['used'], $used,$quota,$percentused);
324
+ $out .= "<br />";
325
+ }
326
+
327
+ if($settings['remain']['display']) {
328
+ $out .= __('Upload Space Remaining:','nggallery') . "\n";
329
+ $out .= ngg_SpaceManager::buildGraph($settings['remain'], $remaining,$quota,$percentremain);
330
+
331
+ }
332
+
333
+ $out .= "</div>";
334
+
335
+ echo $out;
336
+ }
337
+
338
+ function buildGraph($settings, $size, $quota, $percent) {
339
+ $color_bar = $settings['color_bar'];
340
+ $color_bg = $settings['color_bg'];
341
+ $color_text = $settings['color_text'];
342
+
343
+ switch ($settings['unit']) {
344
+ case "b":
345
+ $unit = "B";
346
+ break;
347
+
348
+ case "k":
349
+ $unit = "KB";
350
+ $size = $size / 1024;
351
+ $quota = $quota / 1024;
352
+ break;
353
+
354
+ case "g": // Gigabytes, really?
355
+ $unit = "GB";
356
+ $size = $size / 1024 / 1024 / 1024;
357
+ $quota = $quota / 1024 / 1024 / 1024;
358
+ break;
359
+
360
+ default:
361
+ $unit = "MB";
362
+ $size = $size / 1024 / 1024;
363
+ $quota = $quota / 1024 / 1024;
364
+ break;
365
+ }
366
+
367
+ $size = round($size, (int)$settings['decimals']);
368
+
369
+ $pct = round(($size / $quota)*100);
370
+
371
+ if ($settings['graph']) {
372
+
373
+ $out = '<div style="display: block; margin: 0; padding: 0; height: 15px; border: 1px inset; width: 100%; background-color: '.$color_bg.';">'."\n";
374
+ $out .= '<div style="display: block; height: 15px; border: none; background-color: '.$color_bar.'; width: '.$pct.'%;">'."\n";
375
+ $out .= '<div style="display: inline; position: relative; top: 0; left: 0; font-size: 10px; color: '.$color_text.'; font-weight: bold; padding-bottom: 2px; padding-left: 5px;">'."\n";
376
+ $out .= $size.$unit;
377
+ $out .= "</div>\n</div>\n</div>\n";
378
+ } else {
379
+ $out = "<strong>".$size.$unit." ( ".number_format($percent)."%)"."</strong><br />";
380
+ }
381
+
382
+ return $out;
383
+ }
384
+
385
+ }
386
 
387
  ?>
admin/settings.php CHANGED
@@ -28,15 +28,31 @@ if(preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die('You
28
  update_option('ngg_options', $ngg_options);
29
  $messagetext = '<font color="green">'.__('Update successfully','nggallery').'</font>';
30
  }
 
 
 
 
31
 
 
 
 
 
 
 
 
 
 
 
 
 
32
  // message windows
33
  if(!empty($messagetext)) { echo '<!-- Last Action --><div id="message" class="updated fade"><p>'.$messagetext.'</p></div>'; }
34
 
35
  ?>
36
- <link rel="stylesheet" href="<?php echo NGGALLERY_URLPATH ?>admin/js/jquery.tabs.css" type="text/css" media="print, projection, screen"/>
37
  <!-- Additional IE/Win specific style sheet (Conditional Comments) -->
38
  <!--[if lte IE 7]>
39
- <link rel="stylesheet" href="<?php echo NGGALLERY_URLPATH ?>admin/js/jquery.tabs-ie.css" type="text/css" media="projection, screen"/>
40
  <![endif]-->
41
  <script type="text/javascript">
42
  jQuery(function() {
@@ -95,12 +111,12 @@ if(preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die('You
95
  <h2><?php _e('General Options','nggallery'); ?></h2>
96
  <form name="generaloptions" method="post">
97
  <?php wp_nonce_field('ngg_settings') ?>
98
- <input type="hidden" name="page_options" value="gallerypath,scanfolder,deleteImg,activateTags,appendType,maxImages" />
99
  <fieldset class="options">
100
  <table class="optiontable editform">
101
  <tr valign="top">
102
  <th align="left"><?php _e('Gallery path','nggallery') ?></th>
103
- <td><input type="text" size="35" name="gallerypath" value="<?php echo $ngg_options[gallerypath]; ?>" title="TEST" /><br />
104
  <?php _e('This is the default path for all galleries','nggallery') ?></td>
105
  </tr>
106
  <!--TODO: Later... -->
@@ -113,27 +129,37 @@ if(preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die('You
113
  -->
114
  <tr valign="top">
115
  <th align="left"><?php _e('Delete image files','nggallery') ?></th>
116
- <td><input type="checkbox" name="deleteImg" value="1" <?php checked('1', $ngg_options[deleteImg]); ?> /><br />
117
  <?php _e('Delete files, when removing a gallery in the database','nggallery') ?></td>
118
  </tr>
 
 
 
 
 
 
 
 
 
 
119
  </table>
120
  <legend><?php _e('Tags / Categories','nggallery') ?></legend>
121
  <table class="optiontable">
122
  <tr>
123
  <th valign="top"><?php _e('Activate related images','nggallery') ?>:</th>
124
- <td><input name="activateTags" type="checkbox" value="1" <?php checked('1', $ngg_options[activateTags]); ?> />
125
  <?php _e('This option will append related images to every post','nggallery') ?>
126
  </td>
127
  </tr>
128
  <tr>
129
  <th valign="top"><?php _e('Match with','nggallery') ?>:</th>
130
- <td><label><input name="appendType" type="radio" value="category" <?php checked('category', $ngg_options[appendType]); ?> /> <?php _e('Categories', 'nggallery') ;?></label><br />
131
- <label><input name="appendType" type="radio" value="tags" <?php checked('tags', $ngg_options[appendType]); ?> /> <?php _e('Tags', 'nggallery') ;?><?php if (version_compare($wp_version, '2.3.alpha', '<')) _e(' (require WordPress 2.3 or higher)', 'nggallery'); ?></label>
132
  </td>
133
  </tr>
134
  <tr>
135
  <th valign="top"><?php _e('Max. number of images','nggallery') ?>:</th>
136
- <td><input type="text" name="maxImages" value="<?php echo $ngg_options[maxImages] ?>" size="3" maxlength="3" /><br />
137
  <?php _e('0 will show all images','nggallery') ?>
138
  </td>
139
  </tr>
@@ -155,26 +181,26 @@ if(preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die('You
155
  <table class="optiontable editform">
156
  <tr valign="top">
157
  <th align="left"><?php _e('Width x height (in pixel)','nggallery') ?></th>
158
- <td><input type="text" size="4" maxlength="4" name="thumbwidth" value="<?php echo $ngg_options[thumbwidth]; ?>" /> x <input type="text" size="4" maxlength="4" name="thumbheight" value="<?php echo $ngg_options[thumbheight]; ?>" /><br />
159
  <?php _e('These values are maximum values ','nggallery') ?></td>
160
  </tr>
161
  <tr valign="top">
162
  <th align="left"><?php _e('Set fix dimension','nggallery') ?></th>
163
- <td><input type="checkbox" name="thumbfix" value="1" <?php checked('1', $ngg_options[thumbfix]); ?> /><br />
164
  <?php _e('Ignore the aspect ratio, no portrait thumbnails','nggallery') ?></td>
165
  </tr>
166
  <tr valign="top">
167
  <th align="left"><?php _e('Crop square thumbnail from image','nggallery') ?></th>
168
- <td><input type="checkbox" name="thumbcrop" value="1" <?php checked('1', $ngg_options[thumbcrop]); ?> /><br />
169
- <?php _e('Create square thumbnails, use only the width setting :','nggallery') ?> <?php echo $ngg_options[thumbwidth]; ?> x <?php echo $ngg_options[thumbwidth]; ?></td>
170
  </tr>
171
  <tr valign="top">
172
  <th align="left"><?php _e('Thumbnail quality','nggallery') ?></th>
173
- <td><input type="text" size="3" maxlength="3" name="thumbquality" value="<?php echo $ngg_options[thumbquality]; ?>" /> %</td>
174
  </tr>
175
  <tr valign="top">
176
  <th align="left"><?php _e('Resample Mode','nggallery') ?></th>
177
- <td><input type="text" size="1" maxlength="1" name="thumbResampleMode" value="<?php echo $ngg_options[thumbResampleMode]; ?>" /><br />
178
  <?php _e('Value between 1-5 (higher value, more CPU load)','nggallery') ?></td>
179
  </tr>
180
  </table>
@@ -189,28 +215,42 @@ if(preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die('You
189
  <h2><?php _e('Image settings','nggallery'); ?></h2>
190
  <form name="imagesettings" method="POST" action="<?php echo $filepath.'#images'; ?>" >
191
  <?php wp_nonce_field('ngg_settings') ?>
192
- <input type="hidden" name="page_options" value="imgResize,imgWidth,imgHeight,imgQuality,imgResampleMode" />
193
  <fieldset class="options">
194
  <table class="optiontable">
195
  <tr valign="top">
196
  <th scope="row"><label for="fixratio"><?php _e('Resize Images','nggallery') ?></label></th>
197
  <!--TODO: checkbox fixratio can be used later -->
198
- <td><input type="hidden" name="imgResize" value="1" <?php checked('1', $ngg_options[imgResize]); ?> /> </td>
199
- <td><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]; ?>" /><br />
200
  <?php _e('Width x height (in pixel). NextGEN Gallery will keep ratio size','nggallery') ?></td>
201
  </tr>
202
  <tr valign="top">
203
  <th align="left"><?php _e('Image quality','nggallery') ?></th>
204
  <td></td>
205
- <td><input type="text" size="3" maxlength="3" name="imgQuality" value="<?php echo $ngg_options[imgQuality]; ?>" /> %</td>
206
  </tr>
207
  <tr valign="top">
208
  <th align="left"><?php _e('Resample Mode','nggallery') ?></th>
209
  <td></td>
210
- <td><input type="text" size="1" maxlength="1" name="imgResampleMode" value="<?php echo $ngg_options[imgResampleMode]; ?>" /><br />
211
  <?php _e('Value between 1-5 (higher value, more CPU load)','nggallery') ?></td>
212
  </tr>
213
  </table>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
214
  <div class="submit"><input type="submit" name="updateoption" value="<?php _e('Update') ;?> &raquo;"/></div>
215
  </fieldset>
216
  </form>
@@ -227,45 +267,45 @@ if(preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die('You
227
  <table class="optiontable">
228
  <tr>
229
  <th valign="top"><?php _e('Activate jQuery navigation','nggallery') ?>:</th>
230
- <td><input name="galUsejQuery" type="checkbox" value="1" <?php checked('1', $ngg_options[galUsejQuery]); ?> />
231
  <?php _e('Please note : This is still experimental. Requires the Thickbox effect','nggallery') ?>
232
  </td>
233
  </tr>
234
  <tr>
235
  <th valign="top"><?php _e('Deactivate gallery page link','nggallery') ?>:</th>
236
- <td><input name="galNoPages" type="checkbox" value="1" <?php checked('1', $ngg_options[galNoPages]); ?> />
237
  <?php _e('The album will not link to a gallery subpage. The gallery is shown on the same page.','nggallery') ?>
238
  </td>
239
  </tr>
240
  <tr>
241
  <th valign="top"><?php _e('Number of images per page','nggallery') ?>:</th>
242
- <td><input type="text" name="galImages" value="<?php echo $ngg_options[galImages] ?>" size="3" maxlength="3" /><br />
243
  <?php _e('0 will disable pagination, all images on one page','nggallery') ?>
244
  </td>
245
  </tr>
246
  <tr>
247
  <th valign="top"><?php _e('Integrate slideshow','nggallery') ?>:</th>
248
- <td><input name="galShowSlide" type="checkbox" value="1" <?php checked('1', $ngg_options[galShowSlide]); ?> />
249
- <input type="text" name="galTextSlide" value="<?php echo $ngg_options[galTextSlide] ?>" size="20" />
250
- <input type="text" name="galTextGallery" value="<?php echo $ngg_options[galTextGallery] ?>" size="20" />
251
  </td>
252
  </tr>
253
  <tr>
254
  <th valign="top"><?php _e('Show first','nggallery') ?>:</th>
255
- <td><label><input name="galShowOrder" type="radio" value="gallery" <?php checked('gallery', $ngg_options[galShowOrder]); ?> /> <?php _e('Thumbnails', 'nggallery') ;?></label><br />
256
- <label><input name="galShowOrder" type="radio" value="slide" <?php checked('slide', $ngg_options[galShowOrder]); ?> /> <?php _e('Slideshow', 'nggallery') ;?></label>
257
  </td>
258
  </tr>
259
  <tr>
260
  <th valign="top"><?php _e('Show thumbnail description','nggallery') ?>:</th>
261
- <td><label><input name="galShowDesc" type="radio" value="none" <?php checked('none', $ngg_options[galShowDesc]); ?> /> <?php _e('None', 'nggallery') ;?></label><br />
262
- <label><input name="galShowDesc" type="radio" value="desc" <?php checked('desc', $ngg_options[galShowDesc]); ?> /> <?php _e('Description text', 'nggallery') ;?></label><br />
263
- <label><input name="galShowDesc" type="radio" value="alttext" <?php checked('alttext', $ngg_options[galShowDesc]); ?> /> <?php _e('Alt / Title text', 'nggallery') ;?></label>
264
  </td>
265
  </tr>
266
  <tr>
267
  <th valign="top"><?php _e('Show ImageBrowser','nggallery') ?>:</th>
268
- <td><input name="galImgBrowser" type="checkbox" value="1" <?php checked('1', $ngg_options[galImgBrowser]); ?> />
269
  <?php _e('The gallery will open the ImageBrowser instead the effect.','nggallery') ?>
270
  </td>
271
  </tr>
@@ -274,15 +314,15 @@ if(preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die('You
274
  <table class="optiontable">
275
  <tr>
276
  <th valign="top"><?php _e('Sort thumbnails','nggallery') ?>:</th>
277
- <td><label><input name="galSort" type="radio" value="pid" <?php checked('pid', $ngg_options[galSort]); ?> /> <?php _e('Image ID', 'nggallery') ;?></label><br />
278
- <label><input name="galSort" type="radio" value="filename" <?php checked('filename', $ngg_options[galSort]); ?> /> <?php _e('File name', 'nggallery') ;?></label><br />
279
- <label><input name="galSort" type="radio" value="alttext" <?php checked('alttext', $ngg_options[galSort]); ?> /> <?php _e('Alt / Title text', 'nggallery') ;?></label>
280
  </td>
281
  </tr>
282
  <tr>
283
  <th valign="top"><?php _e('Sort direction','nggallery') ?>:</th>
284
- <td><label><input name="galSortDir" type="radio" value="ASC" <?php checked('ASC', $ngg_options[galSortDir]); ?> /> <?php _e('Ascending', 'nggallery') ;?></label><br />
285
- <label><input name="galSortDir" type="radio" value="DESC" <?php checked('DESC', $ngg_options[galSortDir]); ?> /> <?php _e('Descending', 'nggallery') ;?></label>
286
  </td>
287
  </tr>
288
  </table>
@@ -306,28 +346,28 @@ if(preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die('You
306
  <th><?php _e('JavaScript Thumbnail effect','nggallery') ?>:</th>
307
  <td>
308
  <select size="1" id="thumbEffect" name="thumbEffect" onchange="insertcode(this.value)">
309
- <option value="none" <?php selected('none', $ngg_options[thumbEffect]); ?> ><?php _e('None', 'nggallery') ;?></option>
310
- <option value="thickbox" <?php selected('thickbox', $ngg_options[thumbEffect]); ?> ><?php _e('Thickbox', 'nggallery') ;?></option>
311
- <option value="lightbox" <?php selected('lightbox', $ngg_options[thumbEffect]); ?> ><?php _e('Lightbox', 'nggallery') ;?></option>
312
- <option value="highslide" <?php selected('highslide', $ngg_options[thumbEffect]); ?> ><?php _e('Highslide', 'nggallery') ;?></option>
313
- <option value="shutter" <?php selected('shutter', $ngg_options[thumbEffect]); ?> ><?php _e('Shutter', 'nggallery') ;?></option>
314
- <option value="custom" <?php selected('custom', $ngg_options[thumbEffect]); ?> ><?php _e('Custom', 'nggallery') ;?></option>
315
  </select>
316
  </td>
317
  </tr>
318
  <tr valign="top">
319
  <th><?php _e('Link Code line','nggallery') ?> :</th>
320
- <td><textarea id="thumbCode" name="thumbCode" cols="50" rows="5"><?php echo htmlspecialchars(stripslashes($ngg_options[thumbCode])); ?></textarea></td>
321
  </tr>
322
  </table>
323
 
324
- <div id="tbImage" <?php if ($ngg_options[thumbEffect] != 'thickbox') echo 'style="display:none"'?> >
325
  <table class="optiontable">
326
  <tr valign="top">
327
  <th><?php _e('Select loading image','nggallery') ?> :</th>
328
  <td>
329
- <label><input name="thickboxImage" id="v2" type="radio" title="Version 2" value="loadingAnimationv2.gif" <?php checked('loadingAnimationv2.gif', $ngg_options[thickboxImage]); ?> /></label> <img src="<?php echo NGGALLERY_URLPATH.'thickbox/loadingAnimationv2.gif' ?>" alt="Version 2" />
330
- <label><input name="thickboxImage" id="v3" type="radio" title="Version 3" value="loadingAnimationv3.gif" <?php checked('loadingAnimationv3.gif', $ngg_options[thickboxImage]); ?> /></label> <img src="<?php echo NGGALLERY_URLPATH.'thickbox/loadingAnimationv3.gif' ?>" alt="Version 3" />
331
  </td>
332
  </tr>
333
  </table>
@@ -362,19 +402,19 @@ if(preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die('You
362
  <strong><?php _e('Position','nggallery') ?></strong><br />
363
  <table border="1">
364
  <tr>
365
- <td><input type="radio" name="wmPos" value="topLeft" <?php checked('topLeft', $ngg_options[wmPos]); ?> /></td>
366
- <td><input type="radio" name="wmPos" value="topCenter" <?php checked('topCenter', $ngg_options[wmPos]); ?> /></td>
367
- <td><input type="radio" name="wmPos" value="topRight" <?php checked('topRight', $ngg_options[wmPos]); ?> /></td>
368
  </tr>
369
  <tr>
370
- <td><input type="radio" name="wmPos" value="midLeft" <?php checked('midLeft', $ngg_options[wmPos]); ?> /></td>
371
- <td><input type="radio" name="wmPos" value="midCenter" <?php checked('midCenter', $ngg_options[wmPos]); ?> /></td>
372
- <td><input type="radio" name="wmPos" value="midRight" <?php checked('midRight', $ngg_options[wmPos]); ?> /></td>
373
  </tr>
374
  <tr>
375
- <td><input type="radio" name="wmPos" value="botLeft" <?php checked('botLeft', $ngg_options[wmPos]); ?> /></td>
376
- <td><input type="radio" name="wmPos" value="botCenter" <?php checked('botCenter', $ngg_options[wmPos]); ?> /></td>
377
- <td><input type="radio" name="wmPos" value="botRight" <?php checked('botRight', $ngg_options[wmPos]); ?> /></td>
378
  </tr>
379
  </table>
380
  </td>
@@ -383,11 +423,11 @@ if(preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die('You
383
  <table border="0">
384
  <tr>
385
  <td>x</td>
386
- <td><input type="text" name="wmXpos" value="<?php echo $ngg_options[wmXpos] ?>" size="4" /> px</td>
387
  </tr>
388
  <tr>
389
  <td>y</td>
390
- <td><input type="text" name="wmYpos" value="<?php echo $ngg_options[wmYpos] ?>" size="4" /> px</td>
391
  </tr>
392
  </table>
393
  </td>
@@ -397,54 +437,56 @@ if(preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die('You
397
  <fieldset class="options">
398
  <table class="optiontable" border="0">
399
  <tr>
400
- <td align="left" colspan="2"><label><input type="radio" name="wmType" value="image" <?php checked('image', $ngg_options[wmType]); ?> /> <?php _e('Use image as watermark','nggallery') ?></label></td>
401
  </tr>
402
  <tr>
403
  <th><?php _e('URL to file','nggallery') ?> :</th>
404
- <td><input type="text" size="40" name="wmPath" value="<?php echo $ngg_options[wmPath]; ?>" /><br />
405
  <?php if(!ini_get('allow_url_fopen')) _e('The accessing of URL files is disabled at your server (allow_url_fopen)','nggallery') ?> </td>
406
  </tr>
407
  <tr>
408
  <td colspan="2"><hr /></td>
409
  </tr>
410
  <tr>
411
- <td align="left" colspan="2"><label><input type="radio" name="wmType" value="text" <?php checked('text', $ngg_options[wmType]); ?> /> <?php _e('Use text as watermark','nggallery') ?></label></td>
412
  </tr>
413
  <tr>
414
  <th><?php _e('Font','nggallery') ?>:</th>
415
  <td><select name="wmFont" size="1"> <?php
416
  $fontlist = ngg_get_TTFfont();
417
  foreach ( $fontlist as $fontfile ) {
418
- echo "\n".'<option value="'.$fontfile.'" '.ngg_input_selected($fontfile, $ngg_options[wmFont]).' >'.$fontfile.'</option>';
419
  }
420
  ?>
421
  </select><br />
422
- <?php _e('You can upload more fonts in the folder <strong>nggallery/fonts</strong>','nggallery') ?>
 
 
 
423
  </td>
424
  </tr>
425
  <tr>
426
  <th><?php _e('Size','nggallery') ?>:</th>
427
- <td><input type="text" name="wmSize" value="<?php echo $ngg_options[wmSize] ?>" size="4" maxlength="2" /> px</td>
428
  </tr>
429
  <tr>
430
  <th><?php _e('Color','nggallery') ?>:</th>
431
- <td><input type="text" size="6" maxlength="6" id="wmColor" name="wmColor" onchange="setcolor('#previewText', this.value)" value="<?php echo $ngg_options[wmColor] ?>" />
432
- <input type="text" size="1" readonly="readonly" id="previewText" style="background-color: #<?php echo $ngg_options[wmColor] ?>" /> <?php _e('(hex w/o #)','nggallery') ?></td>
433
  </tr>
434
  <tr>
435
  <th valign="top"><?php _e('Text','nggallery') ?>:</th>
436
- <td><textarea name="wmText" cols="40" rows="4"><?php echo $ngg_options[wmText] ?></textarea></td>
437
  </tr>
438
  <tr>
439
  <th><?php _e('Opaque','nggallery') ?>:</th>
440
- <td><input type="text" name="wmOpaque" value="<?php echo $ngg_options[wmOpaque] ?>" size="3" maxlength="3" /> % </td>
441
  </tr>
442
  </table>
443
  </fieldset>
444
  <div class="clear"> &nbsp; </div>
445
  <div class="submit"><input type="submit" name="updateoption" value="<?php _e('Update') ;?> &raquo;"/></div>
446
  </form>
447
- <center>Based on Marekki's Watermark plugin</center>
448
  </div>
449
 
450
  <!-- Slideshow settings -->
@@ -452,96 +494,101 @@ if(preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die('You
452
  <div id="slideshow">
453
  <form name="player_options" method="POST" action="<?php echo $filepath.'#slideshow'; ?>" >
454
  <?php wp_nonce_field('ngg_settings') ?>
455
- <input type="hidden" name="page_options" value="irWidth,irHeight,irShuffle,irLinkfromdisplay,irShownavigation,irShowicons,irWatermark,irOverstretch,irRotatetime,irTransition,irKenburns,irBackcolor,irFrontcolor,irLightcolor,irAudio,irXHTMLvalid" />
456
  <h2><?php _e('Slideshow','nggallery'); ?></h2>
457
  <fieldset class="options">
458
  <?php if (!NGGALLERY_IREXIST) { ?><p><div id="message" class="error fade"><p><?php _e('The imagerotator.swf is not in the nggallery folder, the slideshow will not work.','nggallery') ?></p></div></p><?php }?>
459
- <p><?php _e('The settings are used in the JW Image Rotator Version 3.9 .', 'nggallery') ?>
460
  <?php _e('See more information for the Flash Player on the web page', 'nggallery') ?> <a href="http://www.jeroenwijering.com/?item=JW_Image_Rotator" target="_blank">JW Image Rotator from Jeroen Wijering</a>.</p>
461
  <table class="optiontable" border="0" >
462
  <tr>
463
  <th><?php _e('Default size (W x H)','nggallery') ?>:</th>
464
- <td><input type="text" size="3" maxlength="4" name="irWidth" value="<?php echo $ngg_options[irWidth] ?>" /> x
465
- <input type="text" size="3" maxlength="4" name="irHeight" value="<?php echo $ngg_options[irHeight] ?>" /></td>
466
  </tr>
467
  <tr>
468
  <th><?php _e('Shuffle mode','nggallery') ?>:</th>
469
- <td><input name="irShuffle" type="checkbox" value="1" <?php checked('1', $ngg_options[irShuffle]); ?> /></td>
470
  </tr>
471
  <tr>
472
  <th><?php _e('Show next image on click','nggallery') ?>:</th>
473
- <td><input name="irLinkfromdisplay" type="checkbox" value="1" <?php checked('1', $ngg_options[irLinkfromdisplay]); ?> /></td>
474
  </tr>
475
  <tr>
476
  <th><?php _e('Show navigation bar','nggallery') ?>:</th>
477
- <td><input name="irShownavigation" type="checkbox" value="1" <?php checked('1', $ngg_options[irShownavigation]); ?> /></td>
478
  </tr>
479
  <tr>
480
  <th><?php _e('Show loading icon','nggallery') ?>:</th>
481
- <td><input name="irShowicons" type="checkbox" value="1" <?php checked('1', $ngg_options[irShowicons]); ?> /></td>
482
  </tr>
483
  <tr>
484
  <th><?php _e('Use watermark logo','nggallery') ?>:</th>
485
- <td><input name="irWatermark" type="checkbox" value="1" <?php checked('1', $ngg_options[irWatermark]); ?> />
486
  <?php _e('You can change the logo at the watermark settings','nggallery') ?></td>
487
  </tr>
488
  <tr>
489
  <th><?php _e('Stretch image','nggallery') ?>:</th>
490
  <td>
491
  <select size="1" name="irOverstretch">
492
- <option value="true" <?php selected('true', $ngg_options[irOverstretch]); ?> ><?php _e('true', 'nggallery') ;?></option>
493
- <option value="false" <?php selected('false', $ngg_options[irOverstretch]); ?> ><?php _e('false', 'nggallery') ;?></option>
494
- <option value="fit" <?php selected('fit', $ngg_options[irOverstretch]); ?> ><?php _e('fit', 'nggallery') ;?></option>
495
- <option value="none" <?php selected('none', $ngg_options[irOverstretch]); ?> ><?php _e('none', 'nggallery') ;?></option>
496
  </select>
497
  </td>
498
  </tr>
499
  <tr>
500
  <th><?php _e('Duration time','nggallery') ?>:</th>
501
- <td><input type="text" size="3" maxlength="3" name="irRotatetime" value="<?php echo $ngg_options[irRotatetime] ?>" /> <?php _e('sec.', 'nggallery') ;?></td>
502
  </tr>
503
  <tr>
504
  <th><?php _e('Transition / Fade effect','nggallery') ?>:</th>
505
  <td>
506
  <select size="1" name="irTransition">
507
- <option value="fade" <?php selected('fade', $ngg_options[irTransition]); ?> ><?php _e('fade', 'nggallery') ;?></option>
508
- <option value="bgfade" <?php selected('bgfade', $ngg_options[irTransition]); ?> ><?php _e('bgfade', 'nggallery') ;?></option>
509
- <option value="slowfade" <?php selected('slowfade', $ngg_options[irTransition]); ?> ><?php _e('slowfade', 'nggallery') ;?></option>
510
- <option value="circles" <?php selected('circles', $ngg_options[irTransition]); ?> ><?php _e('circles', 'nggallery') ;?></option>
511
- <option value="bubbles" <?php selected('bubbles', $ngg_options[irTransition]); ?> ><?php _e('bubbles', 'nggallery') ;?></option>
512
- <option value="blocks" <?php selected('blocks', $ngg_options[irTransition]); ?> ><?php _e('blocks', 'nggallery') ;?></option>
513
- <option value="fluids" <?php selected('fluids', $ngg_options[irTransition]); ?> ><?php _e('fluids', 'nggallery') ;?></option>
514
- <option value="flash" <?php selected('flash', $ngg_options[irTransition]); ?> ><?php _e('flash', 'nggallery') ;?></option>
515
- <option value="lines" <?php selected('lines', $ngg_options[irTransition]); ?> ><?php _e('lines', 'nggallery') ;?></option>
516
- <option value="random" <?php selected('random', $ngg_options[irTransition]); ?> ><?php _e('random', 'nggallery') ;?></option>
517
  </select>
518
  </tr>
519
  <tr>
520
  <th><?php _e('Use slow zooming effect','nggallery') ?>:</th>
521
- <td><input name="irKenburns" type="checkbox" value="1" <?php checked('1', $ngg_options[irKenburns]); ?> /></td>
522
  </tr>
523
  <tr>
524
  <th><?php _e('Background Color','nggallery') ?>:</th>
525
- <td><input type="text" size="6" maxlength="6" id="irBackcolor" name="irBackcolor" onchange="setcolor('#previewBack', this.value)" value="<?php echo $ngg_options[irBackcolor] ?>" />
526
- <input type="text" size="1" readonly="readonly" id="previewBack" style="background-color: #<?php echo $ngg_options[irBackcolor] ?>" /></td>
527
  </tr>
528
  <tr>
529
  <th><?php _e('Texts / Buttons Color','nggallery') ?>:</th>
530
- <td><input type="text" size="6" maxlength="6" id="irFrontcolor" name="irFrontcolor" onchange="setcolor('#previewFront', this.value)" value="<?php echo $ngg_options[irFrontcolor] ?>" />
531
- <input type="text" size="1" readonly="readonly" id="previewFront" style="background-color: #<?php echo $ngg_options[irFrontcolor] ?>" /></td>
532
  </tr>
533
  <tr>
534
  <th><?php _e('Rollover / Active Color','nggallery') ?>:</th>
535
- <td><input type="text" size="6" maxlength="6" id="irLightcolor" name="irLightcolor" onchange="setcolor('#previewLight', this.value)" value="<?php echo $ngg_options[irLightcolor] ?>" />
536
- <input type="text" size="1" readonly="readonly" id="previewLight" style="background-color: #<?php echo $ngg_options[irLightcolor] ?>" /></td>
 
 
 
 
 
537
  </tr>
538
  <tr>
539
  <th><?php _e('Background music (URL)','nggallery') ?>:</th>
540
- <td><input type="text" size="50" id="irAudio" name="irAudio" value="<?php echo $ngg_options[irAudio] ?>" /></td>
541
  </tr>
542
  <tr>
543
  <th><?php _e('Try XHTML validation (with CDATA)','nggallery') ?>:</th>
544
- <td><input name="irXHTMLvalid" type="checkbox" value="1" <?php checked('1', $ngg_options[irXHTMLvalid]); ?> />
545
  <?php _e('Important : Could causes problem at some browser. Please recheck your page.','nggallery') ?></td>
546
  </tr>
547
  </table>
28
  update_option('ngg_options', $ngg_options);
29
  $messagetext = '<font color="green">'.__('Update successfully','nggallery').'</font>';
30
  }
31
+
32
+ if ( isset($_POST['clearcache']) ) {
33
+
34
+ $path = WINABSPATH . $ngg_options['gallerypath'] . "cache/";
35
 
36
+ if (is_dir($path))
37
+ if ($handle = opendir($path)) {
38
+ while (false !== ($file = readdir($handle))) {
39
+ if ($file != '.' && $file != '..') {
40
+ @unlink($path."/".$file);
41
+ }
42
+ }
43
+ closedir($handle);
44
+ }
45
+
46
+ $messagetext = '<font color="green">'.__('Cache cleared','nggallery').'</font>';
47
+ }
48
  // message windows
49
  if(!empty($messagetext)) { echo '<!-- Last Action --><div id="message" class="updated fade"><p>'.$messagetext.'</p></div>'; }
50
 
51
  ?>
52
+ <link rel="stylesheet" href="<?php echo NGGALLERY_URLPATH ?>admin/css/jquery.tabs.css" type="text/css" media="print, projection, screen"/>
53
  <!-- Additional IE/Win specific style sheet (Conditional Comments) -->
54
  <!--[if lte IE 7]>
55
+ <link rel="stylesheet" href="<?php echo NGGALLERY_URLPATH ?>admin/css/jquery.tabs-ie.css" type="text/css" media="projection, screen"/>
56
  <![endif]-->
57
  <script type="text/javascript">
58
  jQuery(function() {
111
  <h2><?php _e('General Options','nggallery'); ?></h2>
112
  <form name="generaloptions" method="post">
113
  <?php wp_nonce_field('ngg_settings') ?>
114
+ <input type="hidden" name="page_options" value="gallerypath,scanfolder,deleteImg,swfUpload,usePermalinks,activateTags,appendType,maxImages" />
115
  <fieldset class="options">
116
  <table class="optiontable editform">
117
  <tr valign="top">
118
  <th align="left"><?php _e('Gallery path','nggallery') ?></th>
119
+ <td><input <?php if (IS_WPMU) echo 'readonly = "readonly"'; ?> type="text" size="35" name="gallerypath" value="<?php echo $ngg_options['gallerypath']; ?>" title="TEST" /><br />
120
  <?php _e('This is the default path for all galleries','nggallery') ?></td>
121
  </tr>
122
  <!--TODO: Later... -->
129
  -->
130
  <tr valign="top">
131
  <th align="left"><?php _e('Delete image files','nggallery') ?></th>
132
+ <td><input <?php if (IS_WPMU) echo 'readonly = "readonly"'; ?> type="checkbox" name="deleteImg" value="1" <?php checked('1', $ngg_options['deleteImg']); ?> /><br />
133
  <?php _e('Delete files, when removing a gallery in the database','nggallery') ?></td>
134
  </tr>
135
+ <tr valign="top">
136
+ <th align="left"><?php _e('Activate batch upload','nggallery') ?></th>
137
+ <td><input type="checkbox" name="swfUpload" value="1" <?php checked('1', $ngg_options['swfUpload']); ?> /><br />
138
+ <?php _e('The batch upload requires Adobe Flash 9, disable it if you have problems','nggallery') ?></td>
139
+ </tr>
140
+ <tr valign="top">
141
+ <th align="left"><?php _e('Activate permalinks','nggallery') ?></th>
142
+ <td><input type="checkbox" name="usePermalinks" value="1" <?php checked('1', $ngg_options['usePermalinks']); ?> /><br />
143
+ <?php _e('When you activate this option, you need to update your permalink structure one time.','nggallery') ?></td>
144
+ </tr>
145
  </table>
146
  <legend><?php _e('Tags / Categories','nggallery') ?></legend>
147
  <table class="optiontable">
148
  <tr>
149
  <th valign="top"><?php _e('Activate related images','nggallery') ?>:</th>
150
+ <td><input name="activateTags" type="checkbox" value="1" <?php checked('1', $ngg_options['activateTags']); ?> />
151
  <?php _e('This option will append related images to every post','nggallery') ?>
152
  </td>
153
  </tr>
154
  <tr>
155
  <th valign="top"><?php _e('Match with','nggallery') ?>:</th>
156
+ <td><label><input name="appendType" type="radio" value="category" <?php checked('category', $ngg_options['appendType']); ?> /> <?php _e('Categories', 'nggallery') ;?></label><br />
157
+ <label><input name="appendType" type="radio" value="tags" <?php checked('tags', $ngg_options['appendType']); ?> /> <?php _e('Tags', 'nggallery') ;?><?php if (version_compare($wp_version, '2.3.alpha', '<')) _e(' (require WordPress 2.3 or higher)', 'nggallery'); ?></label>
158
  </td>
159
  </tr>
160
  <tr>
161
  <th valign="top"><?php _e('Max. number of images','nggallery') ?>:</th>
162
+ <td><input type="text" name="maxImages" value="<?php echo $ngg_options['maxImages'] ?>" size="3" maxlength="3" /><br />
163
  <?php _e('0 will show all images','nggallery') ?>
164
  </td>
165
  </tr>
181
  <table class="optiontable editform">
182
  <tr valign="top">
183
  <th align="left"><?php _e('Width x height (in pixel)','nggallery') ?></th>
184
+ <td><input type="text" size="4" maxlength="4" name="thumbwidth" value="<?php echo $ngg_options['thumbwidth']; ?>" /> x <input type="text" size="4" maxlength="4" name="thumbheight" value="<?php echo $ngg_options['thumbheight']; ?>" /><br />
185
  <?php _e('These values are maximum values ','nggallery') ?></td>
186
  </tr>
187
  <tr valign="top">
188
  <th align="left"><?php _e('Set fix dimension','nggallery') ?></th>
189
+ <td><input type="checkbox" name="thumbfix" value="1" <?php checked('1', $ngg_options['thumbfix']); ?> /><br />
190
  <?php _e('Ignore the aspect ratio, no portrait thumbnails','nggallery') ?></td>
191
  </tr>
192
  <tr valign="top">
193
  <th align="left"><?php _e('Crop square thumbnail from image','nggallery') ?></th>
194
+ <td><input type="checkbox" name="thumbcrop" value="1" <?php checked('1', $ngg_options['thumbcrop']); ?> /><br />
195
+ <?php _e('Create square thumbnails, use only the width setting :','nggallery') ?> <?php echo $ngg_options['thumbwidth']; ?> x <?php echo $ngg_options['thumbwidth']; ?></td>
196
  </tr>
197
  <tr valign="top">
198
  <th align="left"><?php _e('Thumbnail quality','nggallery') ?></th>
199
+ <td><input type="text" size="3" maxlength="3" name="thumbquality" value="<?php echo $ngg_options['thumbquality']; ?>" /> %</td>
200
  </tr>
201
  <tr valign="top">
202
  <th align="left"><?php _e('Resample Mode','nggallery') ?></th>
203
+ <td><input type="text" size="1" maxlength="1" name="thumbResampleMode" value="<?php echo $ngg_options['thumbResampleMode']; ?>" /><br />
204
  <?php _e('Value between 1-5 (higher value, more CPU load)','nggallery') ?></td>
205
  </tr>
206
  </table>
215
  <h2><?php _e('Image settings','nggallery'); ?></h2>
216
  <form name="imagesettings" method="POST" action="<?php echo $filepath.'#images'; ?>" >
217
  <?php wp_nonce_field('ngg_settings') ?>
218
+ <input type="hidden" name="page_options" value="imgResize,imgWidth,imgHeight,imgQuality,imgResampleMode,imgCacheSinglePic" />
219
  <fieldset class="options">
220
  <table class="optiontable">
221
  <tr valign="top">
222
  <th scope="row"><label for="fixratio"><?php _e('Resize Images','nggallery') ?></label></th>
223
  <!--TODO: checkbox fixratio can be used later -->
224
+ <td><input type="hidden" name="imgResize" value="1" <?php checked('1', $ngg_options['imgResize']); ?> /> </td>
225
+ <td><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']; ?>" /><br />
226
  <?php _e('Width x height (in pixel). NextGEN Gallery will keep ratio size','nggallery') ?></td>
227
  </tr>
228
  <tr valign="top">
229
  <th align="left"><?php _e('Image quality','nggallery') ?></th>
230
  <td></td>
231
+ <td><input type="text" size="3" maxlength="3" name="imgQuality" value="<?php echo $ngg_options['imgQuality']; ?>" /> %</td>
232
  </tr>
233
  <tr valign="top">
234
  <th align="left"><?php _e('Resample Mode','nggallery') ?></th>
235
  <td></td>
236
+ <td><input type="text" size="1" maxlength="1" name="imgResampleMode" value="<?php echo $ngg_options['imgResampleMode']; ?>" /><br />
237
  <?php _e('Value between 1-5 (higher value, more CPU load)','nggallery') ?></td>
238
  </tr>
239
  </table>
240
+ <legend><?php _e('Single picture','nggallery') ?></legend>
241
+ <table class="optiontable">
242
+ <tr valign="top">
243
+ <th align="left"><?php _e('Cache single pictures','nggallery') ?></th>
244
+ <td></td>
245
+ <td><input <?php if (IS_WPMU) echo 'readonly = "readonly"'; ?> type="checkbox" name="imgCacheSinglePic" value="1" <?php checked('1', $ngg_options['imgCacheSinglePic']); ?> />
246
+ <?php _e('Creates a file for each singlepic settings. Reduce the CPU load','nggallery') ?></td>
247
+ </tr>
248
+ <tr valign="top">
249
+ <th align="left"><?php _e('Clear cache folder','nggallery') ?></th>
250
+ <td></td>
251
+ <td><input type="submit" name="clearcache" value="<?php _e('Proceed now','nggallery') ;?> &raquo;"/></td>
252
+ </tr>
253
+ </table>
254
  <div class="submit"><input type="submit" name="updateoption" value="<?php _e('Update') ;?> &raquo;"/></div>
255
  </fieldset>
256
  </form>
267
  <table class="optiontable">
268
  <tr>
269
  <th valign="top"><?php _e('Activate jQuery navigation','nggallery') ?>:</th>
270
+ <td><input name="galUsejQuery" type="checkbox" value="1" <?php checked('1', $ngg_options['galUsejQuery']); ?> />
271
  <?php _e('Please note : This is still experimental. Requires the Thickbox effect','nggallery') ?>
272
  </td>
273
  </tr>
274
  <tr>
275
  <th valign="top"><?php _e('Deactivate gallery page link','nggallery') ?>:</th>
276
+ <td><input name="galNoPages" type="checkbox" value="1" <?php checked('1', $ngg_options['galNoPages']); ?> />
277
  <?php _e('The album will not link to a gallery subpage. The gallery is shown on the same page.','nggallery') ?>
278
  </td>
279
  </tr>
280
  <tr>
281
  <th valign="top"><?php _e('Number of images per page','nggallery') ?>:</th>
282
+ <td><input type="text" name="galImages" value="<?php echo $ngg_options['galImages'] ?>" size="3" maxlength="3" /><br />
283
  <?php _e('0 will disable pagination, all images on one page','nggallery') ?>
284
  </td>
285
  </tr>
286
  <tr>
287
  <th valign="top"><?php _e('Integrate slideshow','nggallery') ?>:</th>
288
+ <td><input name="galShowSlide" type="checkbox" value="1" <?php checked('1', $ngg_options['galShowSlide']); ?> />
289
+ <input type="text" name="galTextSlide" value="<?php echo $ngg_options['galTextSlide'] ?>" size="20" />
290
+ <input type="text" name="galTextGallery" value="<?php echo $ngg_options['galTextGallery'] ?>" size="20" />
291
  </td>
292
  </tr>
293
  <tr>
294
  <th valign="top"><?php _e('Show first','nggallery') ?>:</th>
295
+ <td><label><input name="galShowOrder" type="radio" value="gallery" <?php checked('gallery', $ngg_options['galShowOrder']); ?> /> <?php _e('Thumbnails', 'nggallery') ;?></label><br />
296
+ <label><input name="galShowOrder" type="radio" value="slide" <?php checked('slide', $ngg_options['galShowOrder']); ?> /> <?php _e('Slideshow', 'nggallery') ;?></label>
297
  </td>
298
  </tr>
299
  <tr>
300
  <th valign="top"><?php _e('Show thumbnail description','nggallery') ?>:</th>
301
+ <td><label><input name="galShowDesc" type="radio" value="none" <?php checked('none', $ngg_options['galShowDesc']); ?> /> <?php _e('None', 'nggallery') ;?></label><br />
302
+ <label><input name="galShowDesc" type="radio" value="desc" <?php checked('desc', $ngg_options['galShowDesc']); ?> /> <?php _e('Description text', 'nggallery') ;?></label><br />
303
+ <label><input name="galShowDesc" type="radio" value="alttext" <?php checked('alttext', $ngg_options['galShowDesc']); ?> /> <?php _e('Alt / Title text', 'nggallery') ;?></label>
304
  </td>
305
  </tr>
306
  <tr>
307
  <th valign="top"><?php _e('Show ImageBrowser','nggallery') ?>:</th>
308
+ <td><input name="galImgBrowser" type="checkbox" value="1" <?php checked('1', $ngg_options['galImgBrowser']); ?> />
309
  <?php _e('The gallery will open the ImageBrowser instead the effect.','nggallery') ?>
310
  </td>
311
  </tr>
314
  <table class="optiontable">
315
  <tr>
316
  <th valign="top"><?php _e('Sort thumbnails','nggallery') ?>:</th>
317
+ <td><label><input name="galSort" type="radio" value="pid" <?php checked('pid', $ngg_options['galSort']); ?> /> <?php _e('Image ID', 'nggallery') ;?></label><br />
318
+ <label><input name="galSort" type="radio" value="filename" <?php checked('filename', $ngg_options['galSort']); ?> /> <?php _e('File name', 'nggallery') ;?></label><br />
319
+ <label><input name="galSort" type="radio" value="alttext" <?php checked('alttext', $ngg_options['galSort']); ?> /> <?php _e('Alt / Title text', 'nggallery') ;?></label>
320
  </td>
321
  </tr>
322
  <tr>
323
  <th valign="top"><?php _e('Sort direction','nggallery') ?>:</th>
324
+ <td><label><input name="galSortDir" type="radio" value="ASC" <?php checked('ASC', $ngg_options['galSortDir']); ?> /> <?php _e('Ascending', 'nggallery') ;?></label><br />
325
+ <label><input name="galSortDir" type="radio" value="DESC" <?php checked('DESC', $ngg_options['galSortDir']); ?> /> <?php _e('Descending', 'nggallery') ;?></label>
326
  </td>
327
  </tr>
328
  </table>
346
  <th><?php _e('JavaScript Thumbnail effect','nggallery') ?>:</th>
347
  <td>
348
  <select size="1" id="thumbEffect" name="thumbEffect" onchange="insertcode(this.value)">
349
+ <option value="none" <?php selected('none', $ngg_options['thumbEffect']); ?> ><?php _e('None', 'nggallery') ;?></option>
350
+ <option value="thickbox" <?php selected('thickbox', $ngg_options['thumbEffect']); ?> ><?php _e('Thickbox', 'nggallery') ;?></option>
351
+ <option value="lightbox" <?php selected('lightbox', $ngg_options['thumbEffect']); ?> ><?php _e('Lightbox', 'nggallery') ;?></option>
352
+ <option value="highslide" <?php selected('highslide', $ngg_options['thumbEffect']); ?> ><?php _e('Highslide', 'nggallery') ;?></option>
353
+ <option value="shutter" <?php selected('shutter', $ngg_options['thumbEffect']); ?> ><?php _e('Shutter', 'nggallery') ;?></option>
354
+ <option value="custom" <?php selected('custom', $ngg_options['thumbEffect']); ?> ><?php _e('Custom', 'nggallery') ;?></option>
355
  </select>
356
  </td>
357
  </tr>
358
  <tr valign="top">
359
  <th><?php _e('Link Code line','nggallery') ?> :</th>
360
+ <td><textarea id="thumbCode" name="thumbCode" cols="50" rows="5"><?php echo htmlspecialchars(stripslashes($ngg_options['thumbCode'])); ?></textarea></td>
361
  </tr>
362
  </table>
363
 
364
+ <div id="tbImage" <?php if ($ngg_options['thumbEffect'] != 'thickbox') echo 'style="display:none"'?> >
365
  <table class="optiontable">
366
  <tr valign="top">
367
  <th><?php _e('Select loading image','nggallery') ?> :</th>
368
  <td>
369
+ <label><input name="thickboxImage" id="v2" type="radio" title="Version 2" value="loadingAnimationv2.gif" <?php checked('loadingAnimationv2.gif', $ngg_options['thickboxImage']); ?> /></label> <img src="<?php echo NGGALLERY_URLPATH.'thickbox/loadingAnimationv2.gif' ?>" alt="Version 2" />
370
+ <label><input name="thickboxImage" id="v3" type="radio" title="Version 3" value="loadingAnimationv3.gif" <?php checked('loadingAnimationv3.gif', $ngg_options['thickboxImage']); ?> /></label> <img src="<?php echo NGGALLERY_URLPATH.'thickbox/loadingAnimationv3.gif' ?>" alt="Version 3" />
371
  </td>
372
  </tr>
373
  </table>
402
  <strong><?php _e('Position','nggallery') ?></strong><br />
403
  <table border="1">
404
  <tr>
405
+ <td><input type="radio" name="wmPos" value="topLeft" <?php checked('topLeft', $ngg_options['wmPos']); ?> /></td>
406
+ <td><input type="radio" name="wmPos" value="topCenter" <?php checked('topCenter', $ngg_options['wmPos']); ?> /></td>
407
+ <td><input type="radio" name="wmPos" value="topRight" <?php checked('topRight', $ngg_options['wmPos']); ?> /></td>
408
  </tr>
409
  <tr>
410
+ <td><input type="radio" name="wmPos" value="midLeft" <?php checked('midLeft', $ngg_options['wmPos']); ?> /></td>
411
+ <td><input type="radio" name="wmPos" value="midCenter" <?php checked('midCenter', $ngg_options['wmPos']); ?> /></td>
412
+ <td><input type="radio" name="wmPos" value="midRight" <?php checked('midRight', $ngg_options['wmPos']); ?> /></td>
413
  </tr>
414
  <tr>
415
+ <td><input type="radio" name="wmPos" value="botLeft" <?php checked('botLeft', $ngg_options['wmPos']); ?> /></td>
416
+ <td><input type="radio" name="wmPos" value="botCenter" <?php checked('botCenter', $ngg_options['wmPos']); ?> /></td>
417
+ <td><input type="radio" name="wmPos" value="botRight" <?php checked('botRight', $ngg_options['wmPos']); ?> /></td>
418
  </tr>
419
  </table>
420
  </td>
423
  <table border="0">
424
  <tr>
425
  <td>x</td>
426
+ <td><input type="text" name="wmXpos" value="<?php echo $ngg_options['wmXpos'] ?>" size="4" /> px</td>
427
  </tr>
428
  <tr>
429
  <td>y</td>
430
+ <td><input type="text" name="wmYpos" value="<?php echo $ngg_options['wmYpos'] ?>" size="4" /> px</td>
431
  </tr>
432
  </table>
433
  </td>
437
  <fieldset class="options">
438
  <table class="optiontable" border="0">
439
  <tr>
440
+ <td align="left" colspan="2"><label><input type="radio" name="wmType" value="image" <?php checked('image', $ngg_options['wmType']); ?> /> <?php _e('Use image as watermark','nggallery') ?></label></td>
441
  </tr>
442
  <tr>
443
  <th><?php _e('URL to file','nggallery') ?> :</th>
444
+ <td><input type="text" size="40" name="wmPath" value="<?php echo $ngg_options['wmPath']; ?>" /><br />
445
  <?php if(!ini_get('allow_url_fopen')) _e('The accessing of URL files is disabled at your server (allow_url_fopen)','nggallery') ?> </td>
446
  </tr>
447
  <tr>
448
  <td colspan="2"><hr /></td>
449
  </tr>
450
  <tr>
451
+ <td align="left" colspan="2"><label><input type="radio" name="wmType" value="text" <?php checked('text', $ngg_options['wmType']); ?> /> <?php _e('Use text as watermark','nggallery') ?></label></td>
452
  </tr>
453
  <tr>
454
  <th><?php _e('Font','nggallery') ?>:</th>
455
  <td><select name="wmFont" size="1"> <?php
456
  $fontlist = ngg_get_TTFfont();
457
  foreach ( $fontlist as $fontfile ) {
458
+ echo "\n".'<option value="'.$fontfile.'" '.ngg_input_selected($fontfile, $ngg_options['wmFont']).' >'.$fontfile.'</option>';
459
  }
460
  ?>
461
  </select><br />
462
+ <?php if ( !function_exists(ImageTTFBBox) )
463
+ _e('This function will not work, cause you need the FreeType library','nggallery');
464
+ else
465
+ _e('You can upload more fonts in the folder <strong>nggallery/fonts</strong>','nggallery'); ?>
466
  </td>
467
  </tr>
468
  <tr>
469
  <th><?php _e('Size','nggallery') ?>:</th>
470
+ <td><input type="text" name="wmSize" value="<?php echo $ngg_options['wmSize'] ?>" size="4" maxlength="2" /> px</td>
471
  </tr>
472
  <tr>
473
  <th><?php _e('Color','nggallery') ?>:</th>
474
+ <td><input type="text" size="6" maxlength="6" id="wmColor" name="wmColor" onchange="setcolor('#previewText', this.value)" value="<?php echo $ngg_options['wmColor'] ?>" />
475
+ <input type="text" size="1" readonly="readonly" id="previewText" style="background-color: #<?php echo $ngg_options['wmColor'] ?>" /> <?php _e('(hex w/o #)','nggallery') ?></td>
476
  </tr>
477
  <tr>
478
  <th valign="top"><?php _e('Text','nggallery') ?>:</th>
479
+ <td><textarea name="wmText" cols="40" rows="4"><?php echo $ngg_options['wmText'] ?></textarea></td>
480
  </tr>
481
  <tr>
482
  <th><?php _e('Opaque','nggallery') ?>:</th>
483
+ <td><input type="text" name="wmOpaque" value="<?php echo $ngg_options['wmOpaque'] ?>" size="3" maxlength="3" /> % </td>
484
  </tr>
485
  </table>
486
  </fieldset>
487
  <div class="clear"> &nbsp; </div>
488
  <div class="submit"><input type="submit" name="updateoption" value="<?php _e('Update') ;?> &raquo;"/></div>
489
  </form>
 
490
  </div>
491
 
492
  <!-- Slideshow settings -->
494
  <div id="slideshow">
495
  <form name="player_options" method="POST" action="<?php echo $filepath.'#slideshow'; ?>" >
496
  <?php wp_nonce_field('ngg_settings') ?>
497
+ <input type="hidden" name="page_options" value="irWidth,irHeight,irShuffle,irLinkfromdisplay,irShownavigation,irShowicons,irWatermark,irOverstretch,irRotatetime,irTransition,irKenburns,irBackcolor,irFrontcolor,irLightcolor,irScreencolor,irAudio,irXHTMLvalid" />
498
  <h2><?php _e('Slideshow','nggallery'); ?></h2>
499
  <fieldset class="options">
500
  <?php if (!NGGALLERY_IREXIST) { ?><p><div id="message" class="error fade"><p><?php _e('The imagerotator.swf is not in the nggallery folder, the slideshow will not work.','nggallery') ?></p></div></p><?php }?>
501
+ <p><?php _e('The settings are used in the JW Image Rotator Version 3.13 .', 'nggallery') ?>
502
  <?php _e('See more information for the Flash Player on the web page', 'nggallery') ?> <a href="http://www.jeroenwijering.com/?item=JW_Image_Rotator" target="_blank">JW Image Rotator from Jeroen Wijering</a>.</p>
503
  <table class="optiontable" border="0" >
504
  <tr>
505
  <th><?php _e('Default size (W x H)','nggallery') ?>:</th>
506
+ <td><input type="text" size="3" maxlength="4" name="irWidth" value="<?php echo $ngg_options['irWidth'] ?>" /> x
507
+ <input type="text" size="3" maxlength="4" name="irHeight" value="<?php echo $ngg_options['irHeight'] ?>" /></td>
508
  </tr>
509
  <tr>
510
  <th><?php _e('Shuffle mode','nggallery') ?>:</th>
511
+ <td><input name="irShuffle" type="checkbox" value="1" <?php checked('1', $ngg_options['irShuffle']); ?> /></td>
512
  </tr>
513
  <tr>
514
  <th><?php _e('Show next image on click','nggallery') ?>:</th>
515
+ <td><input name="irLinkfromdisplay" type="checkbox" value="1" <?php checked('1', $ngg_options['irLinkfromdisplay']); ?> /></td>
516
  </tr>
517
  <tr>
518
  <th><?php _e('Show navigation bar','nggallery') ?>:</th>
519
+ <td><input name="irShownavigation" type="checkbox" value="1" <?php checked('1', $ngg_options['irShownavigation']); ?> /></td>
520
  </tr>
521
  <tr>
522
  <th><?php _e('Show loading icon','nggallery') ?>:</th>
523
+ <td><input name="irShowicons" type="checkbox" value="1" <?php checked('1', $ngg_options['irShowicons']); ?> /></td>
524
  </tr>
525
  <tr>
526
  <th><?php _e('Use watermark logo','nggallery') ?>:</th>
527
+ <td><input name="irWatermark" type="checkbox" value="1" <?php checked('1', $ngg_options['irWatermark']); ?> />
528
  <?php _e('You can change the logo at the watermark settings','nggallery') ?></td>
529
  </tr>
530
  <tr>
531
  <th><?php _e('Stretch image','nggallery') ?>:</th>
532
  <td>
533
  <select size="1" name="irOverstretch">
534
+ <option value="true" <?php selected('true', $ngg_options['irOverstretch']); ?> ><?php _e('true', 'nggallery') ;?></option>
535
+ <option value="false" <?php selected('false', $ngg_options['irOverstretch']); ?> ><?php _e('false', 'nggallery') ;?></option>
536
+ <option value="fit" <?php selected('fit', $ngg_options['irOverstretch']); ?> ><?php _e('fit', 'nggallery') ;?></option>
537
+ <option value="none" <?php selected('none', $ngg_options['irOverstretch']); ?> ><?php _e('none', 'nggallery') ;?></option>
538
  </select>
539
  </td>
540
  </tr>
541
  <tr>
542
  <th><?php _e('Duration time','nggallery') ?>:</th>
543
+ <td><input type="text" size="3" maxlength="3" name="irRotatetime" value="<?php echo $ngg_options['irRotatetime'] ?>" /> <?php _e('sec.', 'nggallery') ;?></td>
544
  </tr>
545
  <tr>
546
  <th><?php _e('Transition / Fade effect','nggallery') ?>:</th>
547
  <td>
548
  <select size="1" name="irTransition">
549
+ <option value="fade" <?php selected('fade', $ngg_options['irTransition']); ?> ><?php _e('fade', 'nggallery') ;?></option>
550
+ <option value="bgfade" <?php selected('bgfade', $ngg_options['irTransition']); ?> ><?php _e('bgfade', 'nggallery') ;?></option>
551
+ <option value="slowfade" <?php selected('slowfade', $ngg_options['irTransition']); ?> ><?php _e('slowfade', 'nggallery') ;?></option>
552
+ <option value="circles" <?php selected('circles', $ngg_options['irTransition']); ?> ><?php _e('circles', 'nggallery') ;?></option>
553
+ <option value="bubbles" <?php selected('bubbles', $ngg_options['irTransition']); ?> ><?php _e('bubbles', 'nggallery') ;?></option>
554
+ <option value="blocks" <?php selected('blocks', $ngg_options['irTransition']); ?> ><?php _e('blocks', 'nggallery') ;?></option>
555
+ <option value="fluids" <?php selected('fluids', $ngg_options['irTransition']); ?> ><?php _e('fluids', 'nggallery') ;?></option>
556
+ <option value="flash" <?php selected('flash', $ngg_options['irTransition']); ?> ><?php _e('flash', 'nggallery') ;?></option>
557
+ <option value="lines" <?php selected('lines', $ngg_options['irTransition']); ?> ><?php _e('lines', 'nggallery') ;?></option>
558
+ <option value="random" <?php selected('random', $ngg_options['irTransition']); ?> ><?php _e('random', 'nggallery') ;?></option>
559
  </select>
560
  </tr>
561
  <tr>
562
  <th><?php _e('Use slow zooming effect','nggallery') ?>:</th>
563
+ <td><input name="irKenburns" type="checkbox" value="1" <?php checked('1', $ngg_options['irKenburns']); ?> /></td>
564
  </tr>
565
  <tr>
566
  <th><?php _e('Background Color','nggallery') ?>:</th>
567
+ <td><input type="text" size="6" maxlength="6" id="irBackcolor" name="irBackcolor" onchange="setcolor('#previewBack', this.value)" value="<?php echo $ngg_options['irBackcolor'] ?>" />
568
+ <input type="text" size="1" readonly="readonly" id="previewBack" style="background-color: #<?php echo $ngg_options['irBackcolor'] ?>" /></td>
569
  </tr>
570
  <tr>
571
  <th><?php _e('Texts / Buttons Color','nggallery') ?>:</th>
572
+ <td><input type="text" size="6" maxlength="6" id="irFrontcolor" name="irFrontcolor" onchange="setcolor('#previewFront', this.value)" value="<?php echo $ngg_options['irFrontcolor'] ?>" />
573
+ <input type="text" size="1" readonly="readonly" id="previewFront" style="background-color: #<?php echo $ngg_options['irFrontcolor'] ?>" /></td>
574
  </tr>
575
  <tr>
576
  <th><?php _e('Rollover / Active Color','nggallery') ?>:</th>
577
+ <td><input type="text" size="6" maxlength="6" id="irLightcolor" name="irLightcolor" onchange="setcolor('#previewLight', this.value)" value="<?php echo $ngg_options['irLightcolor'] ?>" />
578
+ <input type="text" size="1" readonly="readonly" id="previewLight" style="background-color: #<?php echo $ngg_options['irLightcolor'] ?>" /></td>
579
+ </tr>
580
+ <tr>
581
+ <th><?php _e('Screen Color','nggallery') ?>:</th>
582
+ <td><input type="text" size="6" maxlength="6" id="irScreencolor" name="irScreencolor" onchange="setcolor('#previewScreen', this.value)" value="<?php echo $ngg_options['irScreencolor'] ?>" />
583
+ <input type="text" size="1" readonly="readonly" id="previewScreen" style="background-color: #<?php echo $ngg_options['irScreencolor'] ?>" /></td>
584
  </tr>
585
  <tr>
586
  <th><?php _e('Background music (URL)','nggallery') ?>:</th>
587
+ <td><input type="text" size="50" id="irAudio" name="irAudio" value="<?php echo $ngg_options['irAudio'] ?>" /></td>
588
  </tr>
589
  <tr>
590
  <th><?php _e('Try XHTML validation (with CDATA)','nggallery') ?>:</th>
591
+ <td><input name="irXHTMLvalid" type="checkbox" value="1" <?php checked('1', $ngg_options['irXHTMLvalid']); ?> />
592
  <?php _e('Important : Could causes problem at some browser. Please recheck your page.','nggallery') ?></td>
593
  </tr>
594
  </table>
admin/setup.php CHANGED
@@ -39,7 +39,7 @@ if(preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die('You
39
 
40
  // message windows
41
  if(!empty($messagetext)) { echo '<!-- Last Action --><div id="message" class="updated fade"><p>'.$messagetext.'</p></div>'; }
42
-
43
  ?>
44
 
45
  <div class="wrap">
@@ -50,9 +50,11 @@ if(preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die('You
50
  <div align="center"><input type="submit" class="button" name="resetdefault" value="<?php _e('Reset settings', 'nggallery') ;?>" onclick="javascript:check=confirm('<?php _e('Reset all options to default settings ?\n\nChoose [Cancel] to Stop, [OK] to proceed.\n','nggallery'); ?>');if(check==false) return false;" /></div>
51
  </form>
52
  </div>
 
53
  <div class="wrap">
54
  <h2><?php _e('Uninstall plugin tables', 'nggallery') ;?></h2>
55
  <form name="resetsettings" method="post">
 
56
  <p><?php _e('You don\'t like NextGEN Gallery ?', 'nggallery') ;?></p>
57
  <p><?php _e('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. ', 'nggallery') ;?>
58
  <p ><font color="red"><strong><?php _e('WARNING:', 'nggallery') ;?></strong><br />
@@ -62,6 +64,7 @@ if(preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die('You
62
  </div>
63
  </form>
64
  </div>
 
65
 
66
  <?php
67
  }
39
 
40
  // message windows
41
  if(!empty($messagetext)) { echo '<!-- Last Action --><div id="message" class="updated fade"><p>'.$messagetext.'</p></div>'; }
42
+
43
  ?>
44
 
45
  <div class="wrap">
50
  <div align="center"><input type="submit" class="button" name="resetdefault" value="<?php _e('Reset settings', 'nggallery') ;?>" onclick="javascript:check=confirm('<?php _e('Reset all options to default settings ?\n\nChoose [Cancel] to Stop, [OK] to proceed.\n','nggallery'); ?>');if(check==false) return false;" /></div>
51
  </form>
52
  </div>
53
+ <?php if (!IS_WPMU || wpmu_site_admin() ) : ?>
54
  <div class="wrap">
55
  <h2><?php _e('Uninstall plugin tables', 'nggallery') ;?></h2>
56
  <form name="resetsettings" method="post">
57
+ <?php wp_nonce_field('ngg_uninstall') ?>
58
  <p><?php _e('You don\'t like NextGEN Gallery ?', 'nggallery') ;?></p>
59
  <p><?php _e('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. ', 'nggallery') ;?>
60
  <p ><font color="red"><strong><?php _e('WARNING:', 'nggallery') ;?></strong><br />
64
  </div>
65
  </form>
66
  </div>
67
+ <?php endif; ?>
68
 
69
  <?php
70
  }
admin/style.php CHANGED
@@ -86,6 +86,7 @@ if(!empty($messagetext)) { echo '<!-- Last Action --><div id="message" class="up
86
  </form>
87
  </div>
88
 
 
89
  <div class="wrap">
90
  <?php
91
  if ( is_writeable($real_file) ) {
@@ -130,7 +131,9 @@ if(!empty($messagetext)) { echo '<!-- Last Action --><div id="message" class="up
130
  </div>
131
 
132
  <?php
133
- }
 
 
134
 
135
  /**********************************************************/
136
  // ### Code from wordpress plugin import
86
  </form>
87
  </div>
88
 
89
+ <? if (!IS_WPMU || wpmu_site_admin() ) { ?>
90
  <div class="wrap">
91
  <?php
92
  if ( is_writeable($real_file) ) {
131
  </div>
132
 
133
  <?php
134
+ }
135
+
136
+ } // END nggallery_admin_style()
137
 
138
  /**********************************************************/
139
  // ### Code from wordpress plugin import
admin/upload.php ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ require_once('../../../../wp-config.php');
4
+ require_once(ABSPATH.'/wp-admin/admin.php');
5
+
6
+ auth_redirect();
7
+
8
+ //check for correct capability
9
+ if ( !is_user_logged_in() )
10
+ die('-1');
11
+
12
+ //check for correct capability
13
+ if ( !current_user_can('NextGEN Manage gallery') )
14
+ die('-1');
15
+
16
+ function get_out_now() { exit; }
17
+ add_action( 'shutdown', 'get_out_now', -1 );
18
+
19
+ //check for correct nonce
20
+ check_admin_referer('ngg_swfupload');
21
+
22
+ //check for nggallery
23
+ if ( !defined('NGGALLERY_ABSPATH') )
24
+ die('-1');
25
+
26
+ include_once (NGGALLERY_ABSPATH. 'admin/functions.php');
27
+
28
+ // get the gallery
29
+ $galleryID = (int) $_POST['galleryselect'];
30
+
31
+ echo nggAdmin::swfupload_image($galleryID);
32
+
33
+ ?>
nggadmintab.php → admin/uploadtab.php RENAMED
@@ -1,4 +1,44 @@
1
  <?php
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2
  function ngg_upload_tab_content() {
3
  // this is the content of the "Gallery" admin tab
4
  global $ID, $wpdb , $style, $action ;
@@ -40,8 +80,8 @@ function ngg_upload_tab_content() {
40
 
41
  if ( isset($_POST['save']) ) {
42
  // Function save desription
43
- $img_title = attribute_escape($_POST[image_title]);
44
- $img_desc = attribute_escape($_POST[image_desc]);
45
  $result = $wpdb->query("UPDATE $wpdb->nggpictures SET alttext= '$img_title', description = '$img_desc' WHERE pid = '$ID'");
46
  }
47
  }
@@ -186,4 +226,7 @@ function ngg_admintab_insert_pic($picid) {
186
 
187
  }
188
 
 
 
 
189
  ?>
1
  <?php
2
+
3
+ /**
4
+ * @title Add action/filter for the upload tab
5
+ * @author Alex Rabe
6
+ * @copyright 2008
7
+ */
8
+
9
+ function ngg_action_upload_Tab() {
10
+ // execute when click on the tab
11
+ global $style;
12
+ if ( 'inline' == $style )
13
+ wp_enqueue_script('nggadmintab', NGGALLERY_URLPATH .'admin/js/uploadtab.js.php', array('prototype'), '0.6');
14
+ }
15
+
16
+ function ngg_wp_upload_tabs ($array) {
17
+
18
+ global $wpdb;
19
+
20
+ /*
21
+ 0 => tab display name,
22
+ 1 => required cap / role,
23
+ 2 => function that produces tab content,
24
+ 3 => total number objects OR array(total, objects per page),
25
+ 4 => add_query_args
26
+ */
27
+
28
+ // Create navigation
29
+ $total = 1;
30
+ if ($_GET['select_gal']){
31
+ $galleryID = $_GET['select_gal'];
32
+ $total = $wpdb->get_var("SELECT COUNT(*) FROM $wpdb->nggpictures WHERE galleryid = '$galleryID'");
33
+ }
34
+
35
+ $tab = array(
36
+ 'ngg_gallery' => array(__('Gallery','nggallery'), 'NextGEN Use TinyMCE', 'ngg_upload_tab_content', array($total, 10))
37
+ );
38
+
39
+ return array_merge($array,$tab);
40
+ }
41
+
42
  function ngg_upload_tab_content() {
43
  // this is the content of the "Gallery" admin tab
44
  global $ID, $wpdb , $style, $action ;
80
 
81
  if ( isset($_POST['save']) ) {
82
  // Function save desription
83
+ $img_title = attribute_escape($_POST['image_title']);
84
+ $img_desc = attribute_escape($_POST['image_desc']);
85
  $result = $wpdb->query("UPDATE $wpdb->nggpictures SET alttext= '$img_title', description = '$img_desc' WHERE pid = '$ID'");
86
  }
87
  }
226
 
227
  }
228
 
229
+ add_action('upload_files_ngg_gallery', 'ngg_action_upload_Tab');
230
+ add_filter('wp_upload_tabs', 'ngg_wp_upload_tabs');
231
+
232
  ?>
admin/wpmu.php ADDED
@@ -0,0 +1,107 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ if(preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die('You are not allowed to call this page directly.'); }
3
+
4
+ function nggallery_wpmu_setup() {
5
+ global $wpdb;
6
+
7
+ //to be sure
8
+ if (!is_site_admin())
9
+ die('You are not allowed to call this page.');
10
+
11
+ // get the options
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');
19
+ // get the hidden option fields, taken from WP core
20
+ if ( $_POST['page_options'] )
21
+ $options = explode(',', stripslashes($_POST['page_options']));
22
+ if ($options) {
23
+ foreach ($options as $option) {
24
+ $option = trim($option);
25
+ $value = trim($_POST[$option]);
26
+ // $value = sanitize_option($option, $value); // This does strip slashes on those that need it
27
+ $ngg_options[$option] = $value;
28
+ }
29
+ }
30
+
31
+ update_site_option('ngg_options', $ngg_options);
32
+ $messagetext = '<font color="green">'.__('Update successfully','nggallery').'</font>';
33
+ }
34
+
35
+ // message windows
36
+ if(!empty($messagetext)) { echo '<!-- Last Action --><div id="message" class="updated fade"><p>'.$messagetext.'</p></div>'; }
37
+
38
+ ?>
39
+
40
+ <div class="wrap">
41
+ <h2><?php _e('General WordPress MU Settings','nggallery'); ?></h2>
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 />
50
+ <?php _e('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 /.','nggallery') ?></td>
51
+ </tr>
52
+ <tr>
53
+ <th valign="top"><?php _e('Enable upload quota check','nggallery') ?>:</th>
54
+ <td><input name="wpmuQuotaCheck" type="checkbox" value="1" <?php checked('1', $ngg_options[wpmuQuotaCheck]); ?> />
55
+ <?php _e('Should work if the gallery is bellow the blog.dir','nggallery') ?>
56
+ </td>
57
+ </tr>
58
+ <tr>
59
+ <th valign="top"><?php _e('Enable zip upload option','nggallery') ?>:</th>
60
+ <td><input name="wpmuZipUpload" type="checkbox" value="1" <?php checked('1', $ngg_options[wpmuZipUpload]); ?> />
61
+ <?php _e('Allow users to upload zip folders.','nggallery') ?>
62
+ </td>
63
+ </tr>
64
+ <tr>
65
+ <th valign="top"><?php _e('Enable style selection','nggallery') ?>:</th>
66
+ <td><input name="wpmuStyle" type="checkbox" value="1" <?php checked('1', $ngg_options[wpmuStyle]); ?> />
67
+ <?php _e('Allow users to choose a style for the gallery.','nggallery') ?>
68
+ </td>
69
+ </tr>
70
+ <tr>
71
+ <th valign="top"><?php _e('Enable roles/capabilities','nggallery') ?>:</th>
72
+ <td><input name="wpmuRoles" type="checkbox" value="1" <?php checked('1', $ngg_options[wpmuRoles]); ?> />
73
+ <?php _e('Allow users to change the roles for other blog authors.','nggallery') ?>
74
+ </td>
75
+ </tr>
76
+ <tr>
77
+ <th valign="top"><?php _e('Default style','nggallery') ?>:</th>
78
+ <td>
79
+ <select name="wpmuCSSfile">
80
+ <?php
81
+ $csslist = ngg_get_cssfiles();
82
+ foreach ($csslist as $key =>$a_cssfile) {
83
+ $css_name = $a_cssfile['Name'];
84
+ if ($key == $ngg_options[wpmuCSSfile]) {
85
+ $file_show = $key;
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
+ ?>
93
+ </select><br />
94
+ <?php _e('Choose the default style for the galleries.','nggallery') ?>
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
+
103
+ <?php
104
+ }
105
+
106
+
107
+ ?>
changelog.txt CHANGED
@@ -1,6 +1,46 @@
1
  NextGEN Gallery
2
  by Alex Rabe & NextGEN DEV Team
3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4
  V0.74 - 01.12.2007
5
  - NEW : Added meta reader class, first step to integrated meta data import
6
 
1
  NextGEN Gallery
2
  by Alex Rabe & NextGEN DEV Team
3
 
4
+ V0.80 - 02.02.2008
5
+ - NEW : SWFUpload integrated : Show upload progress and select multiple files in the file browser dialog.
6
+ - NEW : Progress bar for resize, watermark and thumbnail operation
7
+ - NEW : Import Meta data from images
8
+ - NEW : Show Meta data information
9
+ - NEW : Cache option for SinglePic
10
+ - NEW : Permalink support
11
+ - NEW : Custom fields support - Change the settings for each post/page
12
+ - Changed : Up to 10 Widgets, exclude galleries from random/recent images.
13
+ - Changed : Refactor permission check for Safe-Mode Check and mkdir/chmod
14
+ - Changed : Admin CSS in new folder/file for better structure
15
+ - Changed : Clean up folder structure
16
+ - Changed : Clean up code in manage.php, functions.php
17
+ - Changed : Moved several functions into nggAdmin Class (functions.php)
18
+ - Changed : Update to jQuery V1.1.4 (v1.2.1 causes problems with interface.js)
19
+ - Changed : Hide used galleries in album admin page
20
+ - Changed : Remove float in singlepic code and added class ngg-left , ngg-right (THX to Nathan Sylvain)
21
+ - Changed : Edit style setting (added new class .desc , THX to Sebastian)
22
+ - Changed : Check for galleryfolder instead name (THX to Luke Poland)
23
+ - Changed : Delete images per default
24
+ - Changed : Change CSS (ngg-album-compact) , remove width & height setting from code
25
+ - Bugfix : Fixed static front page problem
26
+ - Bugfix : Missing stripslashes & html_entity_decode
27
+ - Bugfix : Change Album CSS (THX to Thomas-DK)
28
+ - Bugfix : Watermark for GIF not correct supported
29
+ - Bugfix : Missing wp_nonce at setup page
30
+ - Bugfix : Add DIV in Slideshow link (for Safari & Opera)
31
+ - Added : Screencolor flashvar for JW Image Rotator 3.13 or higher
32
+ - Added : Set WP-CHARSET / COLLATE during installation
33
+ - Added : Updated to Pclzip.lib.php v2.6
34
+ - Added : CSS ID field for gallery & images
35
+ - WPMU : New site admin page (wpmu.php)
36
+ - WPMU : Integrated quota check
37
+ - WPMU : No update check
38
+ - WPMU : Remove edit style (THX to Kristin)
39
+ - WPMU : Remove uninstall button
40
+ - WPMU : Remove server settings
41
+ - WPMU : Gallery path set to blog.dir
42
+ - Added : Support for WPMU
43
+
44
  V0.74 - 01.12.2007
45
  - NEW : Added meta reader class, first step to integrated meta data import
46
 
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.20
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,
@@ -82,6 +82,8 @@ it's only a template design
82
  border:1px solid #000000;
83
  margin:0px !important;
84
  padding:0px !important;
 
 
85
  }
86
 
87
  .ngg-album-compact h4 {
@@ -236,6 +238,15 @@ it's only a template design
236
  position:relative;
237
  }
238
 
 
 
 
 
 
 
 
 
 
239
  /* ----------- Sidebar widget -------------*/
240
  .ngg-widget,
241
  .ngg-widget-slideshow {
2
  CSS Name: Black Minimalism Theme
3
  Description: For Black Minimalism Theme
4
  Author: Alex Rabe
5
+ Version: 1.31
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,
82
  border:1px solid #000000;
83
  margin:0px !important;
84
  padding:0px !important;
85
+ width:91px;
86
+ height:68px;
87
  }
88
 
89
  .ngg-album-compact h4 {
238
  position:relative;
239
  }
240
 
241
+ .ngg-left {
242
+ float: left;
243
+ }
244
+
245
+ .ngg-right {
246
+ float: right;
247
+ }
248
+
249
+
250
  /* ----------- Sidebar widget -------------*/
251
  .ngg-widget,
252
  .ngg-widget-slideshow {
css/hovereffect.css CHANGED
@@ -93,6 +93,8 @@ This is a template stylesheet which doesn't support description below the thumbn
93
  border:1px solid #000000;
94
  margin:0px !important;
95
  padding:0px !important;
 
 
96
  }
97
 
98
  .ngg-album-compact h4 {
@@ -285,6 +287,15 @@ This is a template stylesheet which doesn't support description below the thumbn
285
  position:relative;
286
  }
287
 
 
 
 
 
 
 
 
 
 
288
  /* ----------- Sidebar widget -------------*/
289
  .ngg-widget,
290
  .ngg-widget-slideshow {
93
  border:1px solid #000000;
94
  margin:0px !important;
95
  padding:0px !important;
96
+ width:91px;
97
+ height:68px;
98
  }
99
 
100
  .ngg-album-compact h4 {
287
  position:relative;
288
  }
289
 
290
+ .ngg-left {
291
+ float: left;
292
+ }
293
+
294
+ .ngg-right {
295
+ float: right;
296
+ }
297
+
298
+
299
  /* ----------- Sidebar widget -------------*/
300
  .ngg-widget,
301
  .ngg-widget-slideshow {
css/ngg_dkret3.css CHANGED
@@ -81,6 +81,8 @@ it's only a template design
81
  border:1px solid #000000;
82
  margin:0px !important;
83
  padding:0px !important;
 
 
84
  }
85
 
86
  .ngg-album-compact h4 {
81
  border:1px solid #000000;
82
  margin:0px !important;
83
  padding:0px !important;
84
+ width:91px;
85
+ height:68px;
86
  }
87
 
88
  .ngg-album-compact h4 {
css/ngg_k2.css CHANGED
@@ -2,7 +2,7 @@
2
  CSS Name: K2 Theme
3
  Description: NextGEN Style for K2 Theme
4
  Author: Alex Rabe
5
- Version: 1.20
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,
@@ -87,6 +87,8 @@ it's only a template design
87
  border:1px solid #000000;
88
  margin:0px !important;
89
  padding:0px !important;
 
 
90
  }
91
 
92
  .ngg-album-compact h4 {
@@ -241,6 +243,15 @@ it's only a template design
241
  position:relative;
242
  }
243
 
 
 
 
 
 
 
 
 
 
244
  /* ----------- Sidebar widget -------------*/
245
  .ngg-widget,
246
  .ngg-widget-slideshow {
2
  CSS Name: K2 Theme
3
  Description: NextGEN Style for K2 Theme
4
  Author: Alex Rabe
5
+ Version: 1.30
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,
87
  border:1px solid #000000;
88
  margin:0px !important;
89
  padding:0px !important;
90
+ width:91px;
91
+ height:68px;
92
  }
93
 
94
  .ngg-album-compact h4 {
243
  position:relative;
244
  }
245
 
246
+ .ngg-left {
247
+ float: left;
248
+ }
249
+
250
+ .ngg-right {
251
+ float: right;
252
+ }
253
+
254
+
255
  /* ----------- Sidebar widget -------------*/
256
  .ngg-widget,
257
  .ngg-widget-slideshow {
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.20
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,
@@ -81,6 +81,8 @@ it's only a template design
81
  border:1px solid #000000;
82
  margin:0px !important;
83
  padding:0px !important;
 
 
84
  }
85
 
86
  .ngg-album-compact h4 {
@@ -230,6 +232,15 @@ it's only a template design
230
  position:relative;
231
  }
232
 
 
 
 
 
 
 
 
 
 
233
  /* ----------- Sidebar widget -------------*/
234
 
235
  .ngg-widget,
2
  CSS Name: Shadow Effect
3
  Description: NextGEN Default Style with a Shadow effect
4
  Author: Alex Rabe
5
+ Version: 1.30
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,
81
  border:1px solid #000000;
82
  margin:0px !important;
83
  padding:0px !important;
84
+ width:91px;
85
+ height:68px;
86
  }
87
 
88
  .ngg-album-compact h4 {
232
  position:relative;
233
  }
234
 
235
+ .ngg-left {
236
+ float: left;
237
+ }
238
+
239
+ .ngg-right {
240
+ float: right;
241
+ }
242
+
243
+
244
  /* ----------- Sidebar widget -------------*/
245
 
246
  .ngg-widget,
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.20
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,
@@ -81,6 +81,8 @@ it's only a template design
81
  border:1px solid #000000;
82
  margin:0px !important;
83
  padding:0px !important;
 
 
84
  }
85
 
86
  .ngg-album-compact h4 {
@@ -114,8 +116,7 @@ it's only a template design
114
  background: url(shadowAlpha.png) no-repeat bottom right !important;
115
  background: url(shadow.gif) no-repeat bottom right;
116
  margin: 10px 0 0 10px !important;
117
- /* Changes to show description */
118
- padding:10px 00px 10px 15px;
119
  border-color:#EEEEEE;
120
  border-style:solid none none solid;
121
  border-width:1px medium medium 1px;
@@ -239,6 +240,15 @@ it's only a template design
239
  position:relative;
240
  }
241
 
 
 
 
 
 
 
 
 
 
242
  /* ----------- Sidebar widget -------------*/
243
 
244
  .ngg-widget,
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.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,
81
  border:1px solid #000000;
82
  margin:0px !important;
83
  padding:0px !important;
84
+ width:91px;
85
+ height:68px;
86
  }
87
 
88
  .ngg-album-compact h4 {
116
  background: url(shadowAlpha.png) no-repeat bottom right !important;
117
  background: url(shadow.gif) no-repeat bottom right;
118
  margin: 10px 0 0 10px !important;
119
+ padding:10px 15px 10px 15px;
 
120
  border-color:#EEEEEE;
121
  border-style:solid none none solid;
122
  border-width:1px medium medium 1px;
240
  position:relative;
241
  }
242
 
243
+ .ngg-left {
244
+ float: left;
245
+ }
246
+
247
+ .ngg-right {
248
+ float: right;
249
+ }
250
+
251
+
252
  /* ----------- Sidebar widget -------------*/
253
 
254
  .ngg-widget,
css/nggallery.css CHANGED
@@ -2,7 +2,7 @@
2
  CSS Name: Default Styles
3
  Description: NextGEN Default Gallery Stylesheet
4
  Author: Alex Rabe
5
- Version: 1.20
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,
@@ -81,6 +81,8 @@ it's only a template design
81
  border:1px solid #000000;
82
  margin:0px !important;
83
  padding:0px !important;
 
 
84
  }
85
 
86
  .ngg-album-compact h4 {
@@ -106,6 +108,12 @@ it's only a template design
106
  display:block !important;
107
  }
108
 
 
 
 
 
 
 
109
  .ngg-gallery-thumbnail-box {
110
  float: left;
111
  }
@@ -233,6 +241,15 @@ it's only a template design
233
  position:relative;
234
  }
235
 
 
 
 
 
 
 
 
 
 
236
  /* ----------- Sidebar widget -------------*/
237
  .ngg-widget,
238
  .ngg-widget-slideshow {
2
  CSS Name: Default Styles
3
  Description: NextGEN Default Gallery Stylesheet
4
  Author: Alex Rabe
5
+ Version: 1.41
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,
81
  border:1px solid #000000;
82
  margin:0px !important;
83
  padding:0px !important;
84
+ width:91px;
85
+ height:68px;
86
  }
87
 
88
  .ngg-album-compact h4 {
108
  display:block !important;
109
  }
110
 
111
+ .ngg-galleryoverview .desc {
112
+ /* required for description */
113
+ margin:0px 10px 10px 0px;
114
+ padding:5px;
115
+ }
116
+
117
  .ngg-gallery-thumbnail-box {
118
  float: left;
119
  }
241
  position:relative;
242
  }
243
 
244
+ .ngg-left {
245
+ float: left;
246
+ }
247
+
248
+ .ngg-right {
249
+ float: right;
250
+ }
251
+
252
+
253
  /* ----------- Sidebar widget -------------*/
254
  .ngg-widget,
255
  .ngg-widget-slideshow {
lang/nggallery-de_DE.mo CHANGED
Binary file
lang/nggallery-de_DE.po CHANGED
@@ -2,7 +2,7 @@ msgid ""
2
  msgstr ""
3
  "Project-Id-Version: NextGEN Gallery\n"
4
  "POT-Creation-Date: \n"
5
- "PO-Revision-Date: 2007-10-07 21:01+0100\n"
6
  "Last-Translator: Alex Rabe\n"
7
  "Language-Team: Alex Rabe\n"
8
  "MIME-Version: 1.0\n"
@@ -15,335 +15,151 @@ msgstr ""
15
  "X-Poedit-SearchPath-0: .\n"
16
  "X-Poedit-SearchPath-1: ..\n"
17
 
18
- #: ../nggadmintab.php:65
19
- msgid "Select a gallery"
20
- msgstr "Wähle Galerie"
21
-
22
- #: ../nggadmintab.php:67
23
- #: ../nggbutton.php:50
24
- msgid "No gallery"
25
- msgstr "Keine Galerie"
26
-
27
- #: ../nggadmintab.php:132
28
- #: ../js/nggadmintab-js.php:161
29
- msgid "URL"
30
- msgstr "URL"
31
-
32
- #: ../nggadmintab.php:136
33
- #: ../admin/manage.php:541
34
- #: ../js/nggadmintab-js.php:164
35
- msgid "Alt &amp; Title Text"
36
- msgstr "Alt &amp; Titel Text"
37
-
38
- #: ../nggadmintab.php:140
39
- #: ../admin/manage.php:291
40
- #: ../admin/manage.php:467
41
- #: ../admin/manage.php:540
42
- #: ../admin/myimport.php:52
43
- #: ../admin/style.php:101
44
- #: ../admin/__manage.php:209
45
- #: ../admin/__manage.php:1024
46
- #: ../js/nggadmintab-js.php:167
47
- msgid "Description"
48
- msgstr "Beschreibung"
49
-
50
- #: ../nggadmintab.php:145
51
- #: ../js/nggadmintab-js.php:169
52
- msgid "Delete File"
53
- msgstr "Datei löschen"
54
-
55
- #: ../nggadmintab.php:145
56
- msgid "Delete image ?"
57
- msgstr "Bilder löschen ?"
58
-
59
- #: ../nggadmintab.php:153
60
- msgid "Save"
61
- msgstr "Speichern"
62
-
63
- #: ../nggallery.php:176
64
- #: ../nggbutton.php:36
65
- #: ../admin/addgallery.php:238
66
- #: ../admin/addgallery.php:242
67
- #: ../admin/addgallery.php:306
68
- #: ../admin/admin.php:47
69
- #: ../admin/manage.php:64
70
- #: ../admin/manage.php:436
71
- #: ../admin/settings.php:82
72
- #: ../admin/__manage.php:182
73
- #: ../admin/__manage.php:991
74
- msgid "Gallery"
75
- msgstr "Galerie"
76
-
77
- #: ../nggallery.php:265
78
  msgid "Sorry, NextGEN Gallery works only under WordPress 2.1 or higher"
79
  msgstr "Tut mir leid aber NextGEN Galerie arbeitet nur ab WordPress 2.1 und aufwärts"
80
 
81
- #: ../nggbutton.php:37
82
- #: ../admin/admin.php:50
83
- msgid "Album"
84
- msgstr "Album"
85
-
86
- #: ../nggbutton.php:38
87
- #: ../nggfunctions.php:523
88
- #: ../admin/manage.php:85
89
- msgid "Picture"
90
- msgstr "Bild"
91
-
92
- #: ../nggbutton.php:48
93
- msgid "Select gallery"
94
- msgstr "Wähle Galerie"
95
-
96
- #: ../nggbutton.php:62
97
- #: ../nggbutton.php:89
98
- msgid "Show as"
99
- msgstr "Zeige als"
100
-
101
- #: ../nggbutton.php:63
102
- msgid "Image list"
103
- msgstr "Bilder-Liste"
104
-
105
- #: ../nggbutton.php:64
106
- #: ../admin/settings.php:85
107
- #: ../admin/settings.php:252
108
- #: ../admin/settings.php:451
109
- msgid "Slideshow"
110
- msgstr "Slideshow"
111
-
112
- #: ../nggbutton.php:75
113
- #: ../admin/album.php:123
114
- msgid "Select album"
115
- msgstr "Wähle Album"
116
-
117
- #: ../nggbutton.php:77
118
- msgid "No album"
119
- msgstr "Kein Album"
120
-
121
- #: ../nggbutton.php:90
122
- msgid "Extended version"
123
- msgstr "Erweiterte Version"
124
-
125
- #: ../nggbutton.php:91
126
- msgid "Compact version"
127
- msgstr "Kompakte Version"
128
-
129
- #: ../nggbutton.php:102
130
- msgid "Select picture"
131
- msgstr "Wähle Bild"
132
-
133
- #: ../nggbutton.php:104
134
- msgid "No picture"
135
- msgstr "Kein Bild"
136
-
137
- #: ../nggbutton.php:116
138
- msgid "Width x Height"
139
- msgstr "Breite x Höhe"
140
-
141
- #: ../nggbutton.php:120
142
- msgid "Effect"
143
- msgstr "Effekt"
144
-
145
- #: ../nggbutton.php:123
146
- msgid "No effect"
147
- msgstr "Kein Effekt"
148
-
149
- #: ../nggbutton.php:124
150
- #: ../admin/settings.php:84
151
- #: ../admin/settings.php:345
152
- msgid "Watermark"
153
- msgstr "Wasserzeichen"
154
-
155
- #: ../nggbutton.php:125
156
- msgid "Web 2.0"
157
- msgstr "Web 2.0"
158
-
159
- #: ../nggbutton.php:130
160
- msgid "Float"
161
- msgstr "Float"
162
-
163
- #: ../nggbutton.php:133
164
- msgid "No float"
165
- msgstr "Kein Float"
166
-
167
- #: ../nggbutton.php:134
168
- msgid "Left"
169
- msgstr "Links"
170
-
171
- #: ../nggbutton.php:135
172
- msgid "Right"
173
- msgstr "Rechts"
174
-
175
- #: ../nggbutton.php:147
176
- #: ../admin/manage.php:608
177
- msgid "Cancel"
178
- msgstr "Abbrechen"
179
-
180
- #: ../nggbutton.php:151
181
- #: ../js/nggadmintab-js.php:151
182
- msgid "Insert"
183
- msgstr "Einfügen"
184
-
185
- #: ../nggfunctions.php:426
186
- #: ../nggfunctions.php:441
187
  msgid "Watch gallery"
188
  msgstr "Galerie ansehen"
189
 
190
- #: ../nggfunctions.php:435
191
- #: ../nggfunctions.php:447
192
- #: ../nggfunctions.php:701
193
  msgid "Photos"
194
  msgstr "Fotos"
195
 
196
- #: ../nggfunctions.php:516
197
  msgid "Back"
198
  msgstr "Zurück"
199
 
200
- #: ../nggfunctions.php:520
201
  msgid "Next"
202
  msgstr "Vor"
203
 
204
- #: ../nggfunctions.php:523
 
 
 
 
 
 
205
  msgid "from"
206
  msgstr "von"
207
 
208
- #: ../nggfunctions.php:670
209
  msgid "Overview"
210
  msgstr "Übersicht"
211
 
212
- #: ../ngginstall.php:157
 
 
 
 
 
 
 
 
213
  msgid "[Show as slideshow]"
214
  msgstr "[Zeige als Diashow]"
215
 
216
- #: ../ngginstall.php:158
217
  msgid "[Show picture list]"
218
  msgstr "[Zeige Bilder-Liste]"
219
 
220
- #: ../nggwidget.php:148
221
  msgid "Title:"
222
  msgstr "Titel:"
223
 
224
- #: ../nggwidget.php:149
225
  msgid "Select Gallery:"
226
  msgstr "Wähle Galerie"
227
 
228
- #: ../nggwidget.php:153
229
  msgid "All images"
230
  msgstr "Alle Bilder"
231
 
232
- #: ../nggwidget.php:163
233
  msgid "Height:"
234
  msgstr "Höhe:"
235
 
236
- #: ../nggwidget.php:164
237
  msgid "Width:"
238
  msgstr "Breite:"
239
 
240
- #: ../nggwidget.php:323
241
- msgid "NextGEN Recent Image"
242
- msgstr "NextGEN Neuste Bilder"
243
-
244
- #: ../nggwidget.php:363
245
- #: ../nggwidget.php:549
246
- #: ../admin/album.php:244
247
- #: ../admin/manage.php:290
248
- #: ../admin/manage.php:448
249
- #: ../admin/myimport.php:51
250
- #: ../admin/__manage.php:208
251
- #: ../admin/__manage.php:1005
252
- #: ../js/nggadmintab-js.php:104
253
- msgid "Title"
254
- msgstr "Titel"
255
 
256
- #: ../nggwidget.php:365
257
- #: ../nggwidget.php:551
258
- msgid "Display type"
259
- msgstr "Verwende Bild"
260
 
261
- #: ../nggwidget.php:367
262
- #: ../nggwidget.php:553
263
- #: ../admin/manage.php:537
264
- #: ../js/nggadmintab-js.php:101
265
- msgid "Thumbnail"
266
- msgstr "Thumbnail"
267
 
268
- #: ../nggwidget.php:368
269
- #: ../nggwidget.php:554
270
- msgid "Orginal"
271
- msgstr "Orginal"
272
-
273
- #: ../nggwidget.php:371
274
- #: ../nggwidget.php:557
275
- msgid "Number of pics"
276
- msgstr "Anzahl der Bilder"
277
-
278
- #: ../nggwidget.php:382
279
- #: ../nggwidget.php:568
280
- msgid "Width (px)"
281
- msgstr "Breite (px)"
282
-
283
- #: ../nggwidget.php:384
284
- #: ../nggwidget.php:570
285
- msgid "Height (px)"
286
- msgstr "Höhe (px)"
287
-
288
- #: ../nggwidget.php:386
289
- #: ../nggwidget.php:572
290
- msgid "Mode"
291
- msgstr "Modus"
292
-
293
- #: ../nggwidget.php:388
294
- #: ../nggwidget.php:574
295
- #: ../admin/settings.php:490
296
- msgid "none"
297
- msgstr "keiner"
298
 
299
- #: ../nggwidget.php:389
300
- #: ../nggwidget.php:575
301
- msgid "web2.0"
302
- msgstr "Web 2.0"
303
 
304
- #: ../nggwidget.php:392
305
- #: ../nggwidget.php:578
306
- msgid "Show in the main page"
307
- msgstr "Zeige auf der Startseite"
308
 
309
- #: ../nggwidget.php:394
310
- #: ../nggwidget.php:580
311
- msgid "yes"
312
- msgstr "Ja"
 
313
 
314
- #: ../nggwidget.php:395
315
- #: ../nggwidget.php:581
316
- msgid "no"
317
- msgstr "Nein"
 
 
 
 
 
 
 
 
 
 
 
 
318
 
319
- #: ../nggwidget.php:398
320
- #: ../nggwidget.php:584
321
- msgid "Show in"
322
- msgstr "Zeige in"
323
 
324
- #: ../nggwidget.php:400
325
- #: ../nggwidget.php:586
326
- msgid "All categories"
327
- msgstr "Alle Kategorien"
328
 
329
- #: ../nggwidget.php:401
330
- #: ../nggwidget.php:587
331
  msgid "Only which are not listed"
332
  msgstr "Nur ungelistete"
333
 
334
- #: ../nggwidget.php:402
335
- #: ../nggwidget.php:588
336
  msgid "Only which are listed"
337
  msgstr "Nur gelistete"
338
 
339
- #: ../nggwidget.php:405
340
- #: ../nggwidget.php:591
341
- msgid "Categories (id (use , to seperate)"
342
- msgstr "Kategorie (ID (nutze , für mehrere))"
343
 
344
- #: ../nggwidget.php:511
345
- msgid "NextGEN Random Image"
346
- msgstr "NextGEN Zufallsbild"
347
 
348
  #: ../admin/about.php:9
349
  msgid "Copyright notes / Credits"
@@ -354,422 +170,300 @@ msgid "NextGEN DEV Team"
354
  msgstr "NextGEN DEV Team"
355
 
356
  #: ../admin/about.php:12
357
- msgid "This plugin is a team work of a virtual developer team around the world. Follow persons take part at the development till now :"
358
- msgstr "Dieses Plugin wurde von einem virtuellen Entwickler Team rund um den Globus erstellt. Folgende Personen haben bis heute mitgeholfen :"
359
 
360
- #: ../admin/about.php:14
361
- msgid "(Lead developer)"
362
- msgstr "(Leitender Entwickler)"
363
-
364
- #: ../admin/about.php:15
365
- msgid "(Core AJAX developer)"
366
- msgstr "(Core AJAX Entwickler)"
367
-
368
- #: ../admin/about.php:16
369
- #: ../admin/about.php:17
370
- msgid "(Core developer)"
371
- msgstr "(Core Entwickler)"
372
-
373
- #: ../admin/about.php:18
374
- msgid "(Sidebar Widget developer)"
375
- msgstr "(Sidebar Widget Entwickler)"
376
 
377
- #: ../admin/about.php:20
378
  msgid "Contributors / Tribute to"
379
  msgstr "Anerkennung / Hinweise"
380
 
381
- #: ../admin/about.php:21
382
  msgid "If you study the code of this plugin, you will find out that we mixed a lot of good already existing code and ideas together."
383
  msgstr "Falls Du Dir den Sourcecode dieses Plugins ansiehst wirst Du merken, das wir verschiedene gute Scripte sowie Ideen verwendet haben."
384
 
385
- #: ../admin/about.php:22
386
  msgid "So, we would like to thank the following people for their pioneer work (without this work it's impossible to create such a plugin so fast)"
387
  msgstr "Wir möchten folgenden Menschen für Ihre Pionier-Arbeit danken (ohne diese Vorleistung wäre es unmöglich ein Plugin so schnell zu entwickeln)"
388
 
389
- #: ../admin/about.php:24
390
  msgid "for their great documented code"
391
  msgstr "für Ihren großartig dokumentierten Code"
392
 
393
- #: ../admin/about.php:25
394
  msgid "for jQuery, which is the best Web2.0 framework"
395
  msgstr "für jQuery, das Beste Web2.0 Framework"
396
 
397
- #: ../admin/about.php:26
398
  msgid "for the fantastic PHP Thumbnail Class"
399
  msgstr "für die fantastische PHP Thumbnail Klasse"
400
 
401
- #: ../admin/about.php:27
402
  msgid "for PclZip , a PHP library that manage ZIP archives"
403
  msgstr "für PclZip, eine ZIP PHP Library"
404
 
405
- #: ../admin/about.php:28
406
  msgid "for a lot of very useful plugins and ideas"
407
  msgstr "für viele nützliche Plugins und Ideen"
408
 
409
- #: ../admin/about.php:29
410
  msgid "for RS-Discuss, it saved me a lot of time"
411
  msgstr "für RS-Discuss, welches mir viel Zeit sparte"
412
 
413
- #: ../admin/about.php:30
414
  msgid "for the best Media Flash Scripts on earth"
415
  msgstr "für die besten Media Flash Scripte"
416
 
417
- #: ../admin/about.php:31
418
  msgid "for the Watermark plugin"
419
  msgstr "für das Wasserzeichen Plugin"
420
 
421
- #: ../admin/about.php:33
422
  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."
423
  msgstr "Falls Du Deinen Namen hier nicht auf dieser Liste findest und es einigen Code gibt, den ich in meinem Plugin verwendet habe, so schicken mir bitte sofort einfach eine EMail."
424
 
425
- #: ../admin/about.php:34
426
  msgid "How to support ?"
427
  msgstr "Unterstützung / Hilfe"
428
 
429
- #: ../admin/about.php:35
430
  msgid "There exist several ways to contribute, help or support us in this work. Non of them are mandatory."
431
  msgstr "Es existieren verschiedene Möglichkeiten diese Arbeit zu unterstützen."
432
 
433
- #: ../admin/about.php:37
434
  msgid "Send us bugfixes / code changes"
435
  msgstr "Schicke uns Verbesserungen / Bugfixes"
436
 
437
- #: ../admin/about.php:37
438
  msgid "The most motivated support for this plugin are your ideas and brain work"
439
  msgstr "Der beste Support für dieses Plugin sind Deine Ideen und Gedanken"
440
 
441
- #: ../admin/about.php:38
442
  msgid "Translate the plugin"
443
  msgstr "Übersetze das Plugin"
444
 
445
- #: ../admin/about.php:38
446
  msgid "To help people to work with this plugin, I would like to have it in all avaivable languages"
447
  msgstr "Um jedem das Arbeiten mit diesem Plugin zu vereinfachen würde ich es gerne in allen verfügbaren Sprachen anbieten"
448
 
449
- #: ../admin/about.php:39
450
  msgid "Donate the work via paypal"
451
  msgstr "Zeig Dich für diese Arbeit per PayPal dankbar"
452
 
453
- #: ../admin/about.php:50
454
  msgid "No doubt a very usefull and easy motivation :-)"
455
  msgstr "Kein Zweifel, eine schöne und simple Motivationshilfe"
456
 
457
- #: ../admin/about.php:52
458
  msgid "Place a link to the plugin in your blog/webpage"
459
  msgstr "Setze einen Link zu diesem Plugin auf Deinen Blog"
460
 
461
- #: ../admin/about.php:52
462
  msgid "Yes, share and trackback is also a good support for this work "
463
  msgstr "Natürlich sind Trackbacks und Links auch ein guter Support für diese Arbeit"
464
 
465
- #: ../admin/about.php:54
466
  msgid "Thanks!"
467
  msgstr "Vielen Dank!"
468
 
469
- #: ../admin/about.php:55
470
  msgid "We would like to thank this people which support us in the work :"
471
  msgstr "Wir wollen diesen Menschen für Ihre Hilfe danken:"
472
 
473
- #: ../admin/addgallery.php:30
474
- #: ../admin/addgallery.php:46
475
  msgid "Upload failed!"
476
  msgstr "Upload fehlgeschlagen!"
477
 
478
- #: ../admin/addgallery.php:68
 
 
 
 
 
 
 
 
 
 
 
479
  msgid "remove"
480
  msgstr "Entfernen"
481
 
482
- #: ../admin/addgallery.php:78
483
- #: ../admin/addgallery.php:88
 
 
 
 
 
 
 
 
 
484
  msgid "Add new gallery"
485
  msgstr "Neue Galerie erstellen"
486
 
487
- #: ../admin/addgallery.php:80
488
- #: ../admin/addgallery.php:106
489
  msgid "Upload a Zip-File"
490
  msgstr "Zip-Datei hochladen"
491
 
492
- #: ../admin/addgallery.php:82
493
- #: ../admin/addgallery.php:138
494
  msgid "Import image folder"
495
- msgstr "Bilder-Verzeichniss importieren"
496
 
497
- #: ../admin/addgallery.php:83
498
- #: ../admin/addgallery.php:156
499
  msgid "Upload Images"
500
  msgstr "Bilder hochladen"
501
 
502
- #: ../admin/addgallery.php:94
503
  msgid "New Gallery"
504
  msgstr "Neue Galerie"
505
 
506
- #: ../admin/addgallery.php:96
507
  msgid "Create a new , empty gallery below the folder"
508
- msgstr "Erstelle eine neue, leere Galerie unter dem Verzeichniss"
509
 
510
- #: ../admin/addgallery.php:97
511
  msgid "Allowed characters for file and folder names are"
512
- msgstr "Erlaubte Charaktere für die Datei- und Verzeichnissnamen sind"
513
 
514
- #: ../admin/addgallery.php:100
515
  msgid "Add gallery"
516
  msgstr "Galerie hinzufügen"
517
 
518
- #: ../admin/addgallery.php:112
519
  msgid "Select Zip-File"
520
  msgstr "Wähle Zip-Datei"
521
 
522
- #: ../admin/addgallery.php:114
523
  msgid "Upload a zip file with images"
524
  msgstr "Lade eine Zip-Datei mit Bildern hoch"
525
 
526
- #: ../admin/addgallery.php:117
527
- #: ../admin/addgallery.php:166
528
  msgid "in to"
529
  msgstr "in"
530
 
531
- #: ../admin/addgallery.php:119
532
  msgid "a new gallery"
533
  msgstr "eine neue Galerie"
534
 
535
- #: ../admin/addgallery.php:129
536
- #: ../admin/addgallery.php:178
537
  msgid "Note : The upload limit on your server is "
538
- msgstr "Hinweis : Das Upload-Limit auf dem Server beträgt"
 
 
 
 
 
 
539
 
540
- #: ../admin/addgallery.php:132
 
 
 
 
 
 
541
  msgid "Start upload"
542
  msgstr "Upload starten"
543
 
544
- #: ../admin/addgallery.php:144
545
  msgid "Import from Server path:"
546
  msgstr "Importieren aus Server-Pfad:"
547
 
548
- #: ../admin/addgallery.php:146
549
  msgid "Import a folder with images. Please note :"
550
  msgstr "Importiere ein Verzeichniss mit Bildern. Bitte beachte:"
551
 
552
- #: ../admin/addgallery.php:147
553
- msgid "For save_mode = ON you need to add the subfolder thumbs manually"
554
- msgstr "Falls save_mode = ON (PHP.INI) mußt Du die Thumbs im Unterverzeichniss manuell hinzufügen"
555
 
556
- #: ../admin/addgallery.php:150
557
  msgid "Import folder"
558
- msgstr "Verzeichniss importieren"
559
 
560
- #: ../admin/addgallery.php:162
561
  msgid "Upload image"
562
  msgstr "Bild hochladen"
563
 
564
- #: ../admin/addgallery.php:168
565
  msgid "Choose gallery"
566
  msgstr "Wähle Galerie"
567
 
568
- #: ../admin/addgallery.php:181
569
- msgid "Upload images"
570
- msgstr "Bilder hochladen"
571
-
572
- #: ../admin/addgallery.php:201
573
- msgid "No valid gallery name!"
574
- msgstr "Kein gültiger Galerie-Name!"
575
-
576
- #: ../admin/addgallery.php:205
577
- #: ../admin/addgallery.php:213
578
- #: ../admin/addgallery.php:221
579
- #: ../admin/addgallery.php:260
580
- #: ../admin/addgallery.php:264
581
- msgid "Directory"
582
- msgstr "Verzeichniss"
583
-
584
- #: ../admin/addgallery.php:205
585
- msgid "didn't exist. Please create first the main gallery folder "
586
- msgstr "nicht gefunden. Bitte erstelle zuerst das Hauptverzeichnis."
587
-
588
- #: ../admin/addgallery.php:206
589
- #: ../admin/addgallery.php:214
590
- msgid "Check this link, if you didn't know how to set the permission :"
591
- msgstr "Dieser Link zeigt dir wie man Verzeichnisrechte ändert :"
592
-
593
- #: ../admin/addgallery.php:213
594
- msgid "didn't have the permissions "
595
- msgstr "hat nicht die Berechtigungen"
596
-
597
- #: ../admin/addgallery.php:221
598
- msgid "already exists!"
599
- msgstr "gibt es schon!"
600
-
601
- #: ../admin/addgallery.php:227
602
- #: ../admin/addgallery.php:229
603
- #: ../admin/addgallery.php:270
604
- #: ../admin/addgallery.php:530
605
- #: ../admin/addgallery.php:532
606
- msgid "Unable to create directory "
607
- msgstr "Kann Verzeichniss nicht erstellen"
608
-
609
- #: ../admin/addgallery.php:228
610
- #: ../admin/addgallery.php:531
611
- #: ../admin/addgallery.php:533
612
- msgid "Unable to set directory permissions "
613
- msgstr "Kann die Berechtigungen nicht setzen"
614
-
615
- #: ../admin/addgallery.php:230
616
- msgid "Unable to set directory permissions"
617
- msgstr "Kann die Berechtigungen nicht setzen"
618
-
619
- #: ../admin/addgallery.php:232
620
- msgid "The server setting Safe-Mode is on !"
621
- msgstr "Auf dem Server ist Safe-Mode aktiviert (PHP.INI)"
622
-
623
- #: ../admin/addgallery.php:233
624
- msgid "Please create directory"
625
- msgstr "Bitte erstelle das Verzeichniss"
626
-
627
- #: ../admin/addgallery.php:234
628
- msgid "and the thumbnails directory"
629
- msgstr "und das Thumbnails-Verzeichniss"
630
-
631
- #: ../admin/addgallery.php:234
632
- msgid "with permission 777 manually !"
633
- msgstr "mit den Berechtigungen 777 manuell !"
634
-
635
- #: ../admin/addgallery.php:238
636
- msgid "already exists"
637
- msgstr "gibt es bereits"
638
-
639
- #: ../admin/addgallery.php:242
640
- #: ../admin/addgallery.php:306
641
- msgid "successfully created!"
642
- msgstr "erfolgreich erstellt!"
643
-
644
- #: ../admin/addgallery.php:242
645
- msgid "You can show this gallery with the tag"
646
- msgstr "Du kannst diese Galerie mit diem Stichwort anzeigen :"
647
-
648
- #: ../admin/addgallery.php:260
649
- #: ../admin/addgallery.php:269
650
- msgid "doesn&#96;t exist"
651
- msgstr "gibt es nicht"
652
-
653
- #: ../admin/addgallery.php:264
654
- msgid "contains no pictures"
655
- msgstr "enthält keine Bilder"
656
-
657
- #: ../admin/addgallery.php:269
658
- msgid "Thumbnail Directory"
659
- msgstr "Thumbnail Verzeichniss"
660
-
661
- #: ../admin/addgallery.php:269
662
- msgid "Please create the folder <i>thumbs</i> in your gallery folder."
663
- msgstr "Bitte erstelle das Verzeichniss <i>thumbs</i> in Deinem Galerie-Verzeichniss als Unterverzeichniss."
664
-
665
- #: ../admin/addgallery.php:282
666
- #: ../admin/myimport.php:38
667
- msgid "Database error. Could not add gallery!"
668
- msgstr "Datenbank-Fehler. Kann Galerie nicht hinzufügen!"
669
-
670
- #: ../admin/addgallery.php:306
671
- msgid " pictures added."
672
- msgstr " Bilder hinzugefügt."
673
-
674
- #: ../admin/addgallery.php:350
675
- #: ../admin/addgallery.php:387
676
- msgid "Some pictures are not writeable :"
677
- msgstr "Einige Bilder sind schreibgeschützt :"
678
-
679
- #: ../admin/addgallery.php:458
680
- msgid "Follow thumbnails could not created."
681
- msgstr "Folgende Thumbnails konnten nicht erstellt werden :"
682
-
683
- #: ../admin/addgallery.php:459
684
- msgid "Some thumbnails are not writeable :"
685
- msgstr "Einige Thumbnails sind schreibgeschützt :"
686
-
687
- #: ../admin/addgallery.php:475
688
- msgid "The Zip-file is too large. Exceed Memory limit !"
689
- msgstr "Das Zip-File ist zu groß. Speicherlimit überschritten !"
690
-
691
- #: ../admin/addgallery.php:513
692
- msgid "Uploaded file was no or a faulty zip file ! The server recognize : "
693
- msgstr "Die hochgeladene Datei war keine korrekte Zip-Datei. Servermeldung :"
694
-
695
- #: ../admin/addgallery.php:538
696
- msgid "Unable to unlink zip file "
697
- msgstr "Unfähig die Zip-Datei zu bearbeiten"
698
-
699
- #: ../admin/addgallery.php:541
700
- msgid "Zip-File successfully unpacked"
701
- msgstr "Zip-Datei erfolgreich entpackt"
702
-
703
- #: ../admin/addgallery.php:577
704
- #: ../admin/addgallery.php:585
705
- msgid "Unable to unlink file "
706
- msgstr "Unfähig das File zu bearbeiten"
707
-
708
- #: ../admin/addgallery.php:578
709
- msgid "No gallery selected !"
710
- msgstr "Keine Galerie ausgewählt !"
711
-
712
- #: ../admin/addgallery.php:586
713
- msgid "Failure in database, no gallery path set !"
714
- msgstr "Datenbankfehler! Kein Galerie-Pfad gesetzt !"
715
-
716
- #: ../admin/addgallery.php:593
717
- msgid "is no valid image file!"
718
- msgstr "ist keine zulässige Bilddatei !"
719
-
720
- #: ../admin/addgallery.php:601
721
- msgid "Error, the file could not moved to : "
722
- msgstr "Fehler: Diese Datei kann nicht verschoben werden zu :"
723
-
724
- #: ../admin/addgallery.php:605
725
- msgid "Error, the file permissions could not set"
726
- msgstr "Fehler: Die Berechtigungen für diese Datei können nicht gesetzt werden"
727
-
728
- #: ../admin/addgallery.php:627
729
- msgid " Image(s) successfully added"
730
- msgstr " Bild(er) erfolgreich hinzugefügt"
731
 
732
- #: ../admin/admin.php:48
733
  msgid "Add Gallery"
734
- msgstr "Galerie hinzufügen"
735
 
736
- #: ../admin/admin.php:49
737
  msgid "Manage Gallery"
738
  msgstr "Galerie verwalten"
739
 
740
- #: ../admin/admin.php:51
 
 
 
 
 
741
  msgid "Options"
742
  msgstr "Optionen"
743
 
744
- #: ../admin/admin.php:52
745
  msgid "Style"
746
  msgstr "Style"
747
 
748
- #: ../admin/admin.php:53
749
  msgid "Setup Gallery"
750
  msgstr "Galerie Setup"
751
 
752
- #: ../admin/admin.php:53
753
  msgid "Setup"
754
  msgstr "Setup"
755
 
756
- #: ../admin/admin.php:54
757
  msgid "Roles"
758
  msgstr "Zugriff"
759
 
760
- #: ../admin/admin.php:56
761
  #: ../admin/myimport.php:74
762
  msgid "Import"
763
  msgstr "Import "
764
 
765
- #: ../admin/admin.php:57
766
  msgid "About this Gallery"
767
  msgstr "Über diese Galerie"
768
 
769
- #: ../admin/admin.php:57
770
  msgid "About"
771
  msgstr "Über"
772
 
 
 
 
 
773
  #: ../admin/album.php:17
774
  #: ../admin/album.php:36
775
  msgid "Update Successfully"
@@ -779,83 +473,306 @@ msgstr "Update erfolgreich"
779
  msgid "Album deleted"
780
  msgstr "Album gelöscht"
781
 
782
- #: ../admin/album.php:117
783
  msgid "Manage Albums"
784
  msgstr "Verwalte Alben"
785
 
786
- #: ../admin/album.php:126
 
 
 
 
 
787
  msgid "No album selected"
788
  msgstr "Kein Album ausgewählt"
789
 
790
- #: ../admin/album.php:139
791
  msgid "Add new album"
792
  msgstr "Album hinzufügen"
793
 
794
- #: ../admin/album.php:143
795
- #: ../admin/manage.php:314
796
- #: ../admin/manage.php:578
797
- #: ../admin/__manage.php:232
798
  msgid "Delete"
799
  msgstr "Lösche"
800
 
801
- #: ../admin/album.php:143
802
  msgid "Delete album ?"
803
  msgstr "Lösche Album ?"
804
 
805
- #: ../admin/album.php:145
806
- #: ../admin/settings.php:137
807
- #: ../admin/settings.php:177
808
- #: ../admin/settings.php:210
809
- #: ../admin/settings.php:285
810
- #: ../admin/settings.php:331
811
- #: ../admin/settings.php:440
812
- #: ../admin/settings.php:544
 
813
  msgid "Update"
814
  msgstr "Aktualisiere"
815
 
816
- #: ../admin/album.php:153
 
 
 
 
817
  msgid "[Maximize]"
818
  msgstr "[Vergrößern]"
819
 
820
- #: ../admin/album.php:154
821
  msgid "[Minimize]"
822
  msgstr "[Verkleinern]"
823
 
824
- #: ../admin/album.php:156
825
  msgid "After you create and select a album, you can drag and drop a gallery into your album below"
826
  msgstr "Nachdem du ein Album erstellt und ausgewählt hast, kannst du per Drag & Drop eine Galerie in das Album ziehen"
827
 
828
- #: ../admin/album.php:163
829
  msgid "Select Gallery"
830
  msgstr "Wähle Galerie"
831
 
832
- #: ../admin/album.php:196
833
  msgid "Album Page ID"
834
  msgstr "Album Seiten ID (Page ID)"
835
 
836
- #: ../admin/album.php:208
837
  msgid "No album selected!"
838
  msgstr "Kein Album ausgewählt"
839
 
840
- #: ../admin/album.php:242
841
- #: ../admin/manage.php:288
842
- #: ../admin/manage.php:534
843
  #: ../admin/myimport.php:49
844
- #: ../admin/__manage.php:206
845
  msgid "ID"
846
  msgstr "ID"
847
 
848
- #: ../admin/album.php:243
849
  msgid "Name"
850
  msgstr "Name"
851
 
852
- #: ../admin/album.php:245
 
 
 
 
 
 
 
 
 
 
 
853
  msgid "Page"
854
  msgstr "Seite"
855
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
856
  #: ../admin/manage.php:64
857
  #: ../admin/manage.php:85
858
- #: ../admin/__manage.php:182
859
  msgid "deleted successfully"
860
  msgstr "erfolgreich gelöscht"
861
 
@@ -875,176 +792,180 @@ msgstr "Bilder erfolgreich verkleinert"
875
  msgid "Pictures deleted successfully "
876
  msgstr "Bilder erfolgreich gelöscht"
877
 
878
- #: ../admin/manage.php:190
 
 
 
 
879
  msgid "Tags changed"
880
  msgstr "Stichwörter geändert"
881
 
882
- #: ../admin/manage.php:210
883
  msgid "Update successful"
884
  msgstr "Aktualisierung erfolgreich"
885
 
886
- #: ../admin/manage.php:235
887
- msgid " picture(s) successfully added"
888
- msgstr " Bild(er) erfolgreich hinzugefügt"
889
-
890
- #: ../admin/manage.php:261
891
  msgid "New gallery page ID"
892
  msgstr "Neue Galerie Seiten ID"
893
 
894
- #: ../admin/manage.php:261
895
  msgid "created"
896
  msgstr "erstellt"
897
 
898
- #: ../admin/manage.php:284
899
- #: ../admin/__manage.php:202
900
  msgid "Gallery Overview"
901
  msgstr "Galerie Übersicht"
902
 
903
- #: ../admin/manage.php:289
904
  #: ../admin/myimport.php:50
905
- #: ../admin/__manage.php:207
906
  msgid "Gallery name"
907
  msgstr "Galerie Name"
908
 
909
- #: ../admin/manage.php:292
 
 
 
 
 
 
 
 
 
 
 
 
910
  #: ../admin/myimport.php:53
911
- #: ../admin/__manage.php:210
912
  msgid "Page ID"
913
  msgstr "Seiten ID (Page ID)"
914
 
915
- #: ../admin/manage.php:293
916
  #: ../admin/myimport.php:54
917
- #: ../admin/__manage.php:211
918
  msgid "Quantity"
919
  msgstr "Anzahl"
920
 
921
- #: ../admin/manage.php:294
922
- #: ../admin/manage.php:546
923
  #: ../admin/myimport.php:55
924
- #: ../admin/__manage.php:212
925
  msgid "Action"
926
  msgstr "Aktion"
927
 
928
- #: ../admin/manage.php:313
929
- #: ../admin/__manage.php:231
930
- #: ../js/nggadmintab-js.php:88
931
  msgid "Edit"
932
  msgstr "Bearbeiten"
933
 
934
- #: ../admin/manage.php:314
935
- #: ../admin/__manage.php:232
936
  msgid "Delete this gallery ?"
937
  msgstr "Diese Galerie löschen ?"
938
 
939
- #: ../admin/manage.php:319
940
- #: ../admin/manage.php:583
941
  #: ../admin/myimport.php:79
942
- #: ../admin/__manage.php:237
943
- #: ../admin/__manage.php:1155
944
  msgid "No entries found"
945
  msgstr "Keine Einträge gefunden"
946
 
947
- #: ../admin/manage.php:445
948
- #: ../admin/__manage.php:1001
949
  msgid "Main settings"
950
  msgstr "Haupteinstellungen"
951
 
952
- #: ../admin/manage.php:450
953
- #: ../admin/__manage.php:1007
954
  msgid "Page Link to"
955
  msgstr "Seite verlinkt zu"
956
 
957
- #: ../admin/manage.php:453
958
- #: ../admin/__manage.php:1010
959
  msgid "Not linked"
960
  msgstr "Nicht verlinkt"
961
 
962
- #: ../admin/manage.php:469
963
- #: ../admin/__manage.php:1026
964
  msgid "Preview image"
965
  msgstr "Vorschau-Bild"
966
 
967
- #: ../admin/manage.php:472
968
- #: ../admin/__manage.php:1029
969
  msgid "No Picture"
970
  msgstr "Kein Bild"
971
 
972
- #: ../admin/manage.php:487
973
- #: ../admin/__manage.php:1043
974
  msgid "Path"
975
  msgstr "Pfad"
976
 
977
- #: ../admin/manage.php:490
978
- #: ../admin/__manage.php:1045
979
  msgid "Create new page"
980
  msgstr "Neue Seite erstellen"
981
 
982
- #: ../admin/manage.php:493
983
- #: ../admin/__manage.php:1048
984
  msgid "Main page (No parent)"
985
  msgstr "Haupseite (keine Unterseite)"
986
 
987
- #: ../admin/manage.php:496
988
- #: ../admin/__manage.php:1051
989
  msgid "Add page"
990
  msgstr "Seite hinzufügen"
991
 
992
- #: ../admin/manage.php:502
993
- #: ../admin/__manage.php:1057
994
  msgid "Scan Folder for new images"
995
  msgstr "Überprüfe Verzeichniss nach neuen Bildern"
996
 
997
- #: ../admin/manage.php:503
998
- #: ../admin/manage.php:590
999
- #: ../admin/__manage.php:1058
1000
  msgid "Save Changes"
1001
  msgstr "Änderungen Speichern"
1002
 
1003
- #: ../admin/manage.php:508
1004
  msgid "No action"
1005
  msgstr "Keine Aktion"
1006
 
1007
- #: ../admin/manage.php:510
1008
- msgid "Set watermark"
1009
- msgstr "Wasserzeichen setzen"
1010
-
1011
- #: ../admin/manage.php:511
1012
- msgid "Create new thumbnails"
1013
- msgstr "Neue Thumbnails erstellen"
1014
-
1015
- #: ../admin/manage.php:512
1016
- msgid "Resize images"
1017
- msgstr "Bilder verkleinern"
1018
-
1019
- #: ../admin/manage.php:513
1020
  msgid "Delete images"
1021
  msgstr "Bilder löschen"
1022
 
1023
- #: ../admin/manage.php:515
 
 
 
 
1024
  msgid "Add tags"
1025
  msgstr "Stichwörter hinzufügen"
1026
 
1027
- #: ../admin/manage.php:516
1028
  msgid "Delete tags"
1029
  msgstr "Stichwörter löschen"
1030
 
1031
- #: ../admin/manage.php:517
1032
  msgid "Overwrite tags"
1033
  msgstr "Stichwörter überschreiben"
1034
 
1035
- #: ../admin/manage.php:521
1036
- #: ../admin/manage.php:522
1037
- #: ../admin/manage.php:608
1038
  msgid "OK"
1039
  msgstr "OK"
1040
 
1041
- #: ../admin/manage.php:521
1042
- #: ../admin/manage.php:608
1043
  msgid "No images selected"
1044
  msgstr "Keine Bilder ausgewählt"
1045
 
1046
- #: ../admin/manage.php:521
1047
- #: ../admin/manage.php:608
1048
  #, php-format
1049
  msgid ""
1050
  "You are about to start the bulk edit for %s images \n"
@@ -1055,47 +976,71 @@ msgstr ""
1055
  " \n"
1056
  " 'Abbrechenl' um zu stoppen, 'OK' um die Bearbeitung durchzuführen."
1057
 
1058
- #: ../admin/manage.php:523
1059
  msgid "Hide thumbnails "
1060
  msgstr "Thumbnails verstecken"
1061
 
1062
- #: ../admin/manage.php:524
1063
  msgid "Show thumbnails "
1064
  msgstr "Thumbnails zeigen"
1065
 
1066
- #: ../admin/manage.php:525
1067
  msgid "Show tags"
1068
  msgstr "Zeige Tags"
1069
 
1070
- #: ../admin/manage.php:526
1071
  msgid "Hide tags"
1072
  msgstr "Verstecke Tags"
1073
 
1074
- #: ../admin/manage.php:535
1075
- #: ../admin/settings.php:274
1076
  msgid "File name"
1077
  msgstr "Dateiname"
1078
 
1079
- #: ../admin/manage.php:542
 
 
 
 
 
 
 
 
 
 
 
1080
  msgid "exclude"
1081
  msgstr "ausschließen"
1082
 
1083
- #: ../admin/manage.php:544
1084
  msgid "Tags (comma separated list)"
1085
  msgstr "Stichwörter (Tags)"
1086
 
1087
- #: ../admin/manage.php:577
1088
  msgid "View"
1089
  msgstr "Ansehen"
1090
 
1091
- #: ../admin/manage.php:578
 
 
 
 
 
 
 
 
1092
  msgid "Delete this file ?"
1093
  msgstr "Diese Datei löschen ?"
1094
 
1095
- #: ../admin/manage.php:605
1096
  msgid "Enter the tags"
1097
  msgstr "Stichwörter angeben"
1098
 
 
 
 
 
 
1099
  #: ../admin/myimport.php:35
1100
  msgid "Gallery "
1101
  msgstr "Galerie"
@@ -1137,142 +1082,172 @@ msgstr "Der Server benachrichtigt Dich über eine neu verfügbare Version der Ne
1137
  msgid "Download here"
1138
  msgstr "Hier dowloaden"
1139
 
1140
- #: ../admin/overview.php:38
1141
  msgid "Server Settings"
1142
  msgstr "Server- Einstellungen"
1143
 
1144
- #: ../admin/overview.php:45
1145
  msgid "Welcome"
1146
  msgstr "Willkommen"
1147
 
1148
- #: ../admin/overview.php:49
1149
  msgid "gallery administrator"
1150
  msgstr "Galerie-Administrator"
1151
 
1152
- #: ../admin/overview.php:49
1153
  msgid "gallery editor"
1154
  msgstr "Galerie-Mitarbeiter"
1155
 
1156
- #: ../admin/overview.php:50
1157
  #, php-format
1158
  msgid "Welcome to NextGEN Gallery. Here you can control your images, galleries and albums. You currently have %s rights."
1159
  msgstr "Willkommen zur NextGEN Galerie. Hier kannst Du Deine Bilder, Galerien und Alben verwalten. Du hast im Moment %s Rechte."
1160
 
1161
- #: ../admin/overview.php:55
1162
  msgid "Add a new gallery or import pictures"
1163
  msgstr "Neue Galerie erstellen oder Bilder importieren"
1164
 
1165
- #: ../admin/overview.php:56
1166
  msgid "Manage galleries and images"
1167
  msgstr "Verwalte Galerien und Bilder"
1168
 
1169
- #: ../admin/overview.php:57
1170
  msgid "Create and manage albums"
1171
  msgstr "Erstelle und verwalte Alben"
1172
 
1173
- #: ../admin/overview.php:58
1174
  msgid "Change the settings of NextGEN Gallery"
1175
  msgstr "Ändere die Einstellungen von NextGEN Galerie"
1176
 
1177
- #: ../admin/overview.php:61
1178
  msgid "Latest News"
1179
  msgstr "Letzte Informationen"
1180
 
1181
- #: ../admin/overview.php:80
1182
  #, php-format
1183
  msgid "Newsfeed could not be loaded. Check the <a href=\"%s\">front page</a> to check for updates."
1184
  msgstr "Der Newsfeed kann nicht geladen werden. Schaue auf die <a href=\"%s\">Hauptseite</a> um Updates mitzubekommen."
1185
 
1186
- #: ../admin/overview.php:93
1187
  msgid "GD support"
1188
  msgstr "GD Unterstützung"
1189
 
1190
- #: ../admin/overview.php:104
1191
  msgid "No GD support"
1192
  msgstr "Keine GD Unterstützung"
1193
 
1194
- #: ../admin/overview.php:111
 
 
 
1195
  msgid "Yes"
1196
  msgstr "Ja"
1197
 
1198
- #: ../admin/overview.php:112
 
 
 
1199
  msgid "No"
1200
  msgstr "Nein"
1201
 
1202
- #: ../admin/overview.php:126
1203
  msgid "Not set"
1204
  msgstr "Nicht gesetzt"
1205
 
1206
- #: ../admin/overview.php:128
1207
- #: ../admin/overview.php:131
1208
  msgid "On"
1209
  msgstr "An"
1210
 
1211
- #: ../admin/overview.php:129
1212
- #: ../admin/overview.php:132
1213
  msgid "Off"
1214
  msgstr "Aus"
1215
 
1216
- #: ../admin/overview.php:135
1217
- #: ../admin/overview.php:138
1218
- #: ../admin/overview.php:141
1219
- #: ../admin/overview.php:144
1220
- #: ../admin/overview.php:147
1221
  msgid "N/A"
1222
  msgstr "N/A"
1223
 
1224
- #: ../admin/overview.php:146
1225
  msgid " MByte"
1226
  msgstr " MByte"
1227
 
1228
- #: ../admin/overview.php:150
1229
  msgid "Operating System"
1230
  msgstr "Betriebssystem"
1231
 
1232
- #: ../admin/overview.php:151
1233
  msgid "Server"
1234
  msgstr "Server"
1235
 
1236
- #: ../admin/overview.php:152
1237
  msgid "Memory usage"
1238
  msgstr "Speicherverbrauch"
1239
 
1240
- #: ../admin/overview.php:153
1241
  msgid "MYSQL Version"
1242
  msgstr "MySQL Version"
1243
 
1244
- #: ../admin/overview.php:154
1245
  msgid "SQL Mode"
1246
  msgstr "SQL Modus"
1247
 
1248
- #: ../admin/overview.php:155
1249
  msgid "PHP Version"
1250
  msgstr "PHP Version"
1251
 
1252
- #: ../admin/overview.php:156
1253
  msgid "PHP Safe Mode"
1254
  msgstr "PHP Safe Mode"
1255
 
1256
- #: ../admin/overview.php:157
1257
  msgid "PHP Allow URL fopen"
1258
  msgstr "PHP Allow URL fopen"
1259
 
1260
- #: ../admin/overview.php:158
1261
  msgid "PHP Memory Limit"
1262
  msgstr "PHP Memory Limit"
1263
 
1264
- #: ../admin/overview.php:159
1265
  msgid "PHP Max Upload Size"
1266
  msgstr "PHP Max Upload Size"
1267
 
1268
- #: ../admin/overview.php:160
1269
  msgid "PHP Max Post Size"
1270
  msgstr "PHP Max Post Size"
1271
 
1272
- #: ../admin/overview.php:161
1273
  msgid "PHP Max Script Execute Time"
1274
  msgstr "PHP Max Script Execute Time"
1275
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1276
  #: ../admin/roles.php:20
1277
  msgid "Updated capabilities"
1278
  msgstr "Zugriffsrechte geändert"
@@ -1283,7 +1258,7 @@ msgstr "Rollen / Zugriffsrechte"
1283
 
1284
  #: ../admin/roles.php:26
1285
  msgid "Select the lowest role which should be able to access the follow capabilities. NextGEN Gallery supports the standard roles from WordPress."
1286
- msgstr "Wähle die niedrigste Rolle aus, die Zugriff haben sol. NextGEN Gallery unterstützt nur die Standard Wordpress Rollen/Fähigkeitenen von WordPress."
1287
 
1288
  #: ../admin/roles.php:27
1289
  msgid "For a more flexible user management you can use the"
@@ -1323,463 +1298,522 @@ msgstr "Rechte aktualisieren"
1323
 
1324
  #: ../admin/settings.php:29
1325
  #: ../admin/style.php:16
 
1326
  msgid "Update successfully"
1327
  msgstr "Aktualisierung erfolgreich"
1328
 
1329
- #: ../admin/settings.php:79
1330
- #: ../admin/settings.php:91
 
 
 
 
1331
  msgid "General Options"
1332
  msgstr "Allg. Optionen"
1333
 
1334
- #: ../admin/settings.php:80
1335
- #: ../admin/settings.php:251
1336
- msgid "Thumbnails"
1337
- msgstr "Thumbnails"
1338
-
1339
- #: ../admin/settings.php:81
1340
  msgid "Images"
1341
  msgstr "Bilder"
1342
 
1343
- #: ../admin/settings.php:83
1344
- #: ../admin/settings.php:293
1345
  msgid "Effects"
1346
  msgstr "Effekte"
1347
 
1348
- #: ../admin/settings.php:98
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1349
  msgid "Gallery path"
1350
  msgstr "Galerie-Pfad"
1351
 
1352
- #: ../admin/settings.php:100
1353
  msgid "This is the default path for all galleries"
1354
  msgstr "Dies ist der Standard-Pfad für alle Galerien"
1355
 
1356
- #: ../admin/settings.php:111
1357
  msgid "Delete image files"
1358
  msgstr "Lösche Bilddateien"
1359
 
1360
- #: ../admin/settings.php:113
1361
  msgid "Delete files, when removing a gallery in the database"
1362
  msgstr "Löscht auch die Dateien, falls die Galerie aus der Datenbank entfernt wird"
1363
 
1364
- #: ../admin/settings.php:116
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1365
  msgid "Tags / Categories"
1366
  msgstr "Stichwörter / Kategorien"
1367
 
1368
- #: ../admin/settings.php:119
1369
  msgid "Activate related images"
1370
  msgstr "Verwandte Bilder anzeigen"
1371
 
1372
- #: ../admin/settings.php:121
1373
  msgid "This option will append related images to every post"
1374
  msgstr "Diese Option hängt verwandte Bilder an jeden Beitrag"
1375
 
1376
- #: ../admin/settings.php:125
1377
  msgid "Match with"
1378
  msgstr "Vergleiche mit"
1379
 
1380
- #: ../admin/settings.php:126
1381
  msgid "Categories"
1382
  msgstr "Kategorien"
1383
 
1384
- #: ../admin/settings.php:127
 
1385
  msgid "Tags"
1386
  msgstr "Stichwörter"
1387
 
1388
- #: ../admin/settings.php:127
1389
  msgid " (require WordPress 2.3 or higher)"
1390
  msgstr " (benötigt WordPress 2.3 oder höher)"
1391
 
1392
- #: ../admin/settings.php:131
1393
  msgid "Max. number of images"
1394
  msgstr "Max. Anzahl der Bilder"
1395
 
1396
- #: ../admin/settings.php:133
1397
  msgid "0 will show all images"
1398
  msgstr "0 zeige alle verwandten Bilder"
1399
 
1400
- #: ../admin/settings.php:145
1401
  msgid "Thumbnail settings"
1402
  msgstr "Thumbnail Einstellungen"
1403
 
1404
- #: ../admin/settings.php:150
1405
  msgid "Please note : If you change the settings, you need to recreate the thumbnails under -> Manage Gallery ."
1406
  msgstr "Bitte beachten : Änderungen der Einstellungen werden erst übernommen, wenn Du neue Thumbnails unter -> \"Gallery verwalten\" erstellst"
1407
 
1408
- #: ../admin/settings.php:153
1409
  msgid "Width x height (in pixel)"
1410
  msgstr "Breite x Höhe (in Pixel)"
1411
 
1412
- #: ../admin/settings.php:155
1413
  msgid "These values are maximum values "
1414
  msgstr "Diese Angaben sind maximale Angaben."
1415
 
1416
- #: ../admin/settings.php:158
1417
  msgid "Set fix dimension"
1418
  msgstr "Setze fixe Größe"
1419
 
1420
- #: ../admin/settings.php:160
1421
  msgid "Ignore the aspect ratio, no portrait thumbnails"
1422
  msgstr "Ignoriere Bildseitenverhältnis"
1423
 
1424
- #: ../admin/settings.php:163
1425
  msgid "Crop square thumbnail from image"
1426
  msgstr "Mittige Thumbnails aus Bildern ausschneiden"
1427
 
1428
- #: ../admin/settings.php:165
1429
  msgid "Create square thumbnails, use only the width setting :"
1430
  msgstr "Erstellt viereckige Thumbnails, nutzt nur den Wert der Breite :"
1431
 
1432
- #: ../admin/settings.php:168
1433
  msgid "Thumbnail quality"
1434
  msgstr "Thumbnail Qualität"
1435
 
1436
- #: ../admin/settings.php:172
1437
- #: ../admin/settings.php:204
1438
  msgid "Resample Mode"
1439
  msgstr "Resample Modus"
1440
 
1441
- #: ../admin/settings.php:174
1442
- #: ../admin/settings.php:207
1443
  msgid "Value between 1-5 (higher value, more CPU load)"
1444
  msgstr "Wähle zwischen 1-5 (je höhere desto länger braucht der Server)"
1445
 
1446
- #: ../admin/settings.php:185
1447
  msgid "Image settings"
1448
  msgstr "Bild Einstellungen"
1449
 
1450
- #: ../admin/settings.php:192
1451
  msgid "Resize Images"
1452
  msgstr "Bilder verkleinern"
1453
 
1454
- #: ../admin/settings.php:196
1455
  msgid "Width x height (in pixel). NextGEN Gallery will keep ratio size"
1456
  msgstr "Breite x Höhe (in Pixel). NextGEN Galerie beachtet das Seitenverhältnis."
1457
 
1458
- #: ../admin/settings.php:199
1459
  msgid "Image quality"
1460
  msgstr "Bild Qualität"
1461
 
1462
- #: ../admin/settings.php:218
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1463
  msgid "Gallery settings"
1464
  msgstr "Galerie Einstellungen"
1465
 
1466
- #: ../admin/settings.php:225
1467
  msgid "Activate jQuery navigation"
1468
  msgstr "Aktiviere jQuery Navigation"
1469
 
1470
- #: ../admin/settings.php:227
1471
  msgid "Please note : This is still experimental. Requires the Thickbox effect"
1472
  msgstr "Bitte beachten : Diese Funktion befindet sich noch im Teststadium. Geht nur mit Thickbox."
1473
 
1474
- #: ../admin/settings.php:231
1475
  msgid "Deactivate gallery page link"
1476
  msgstr "Keine Seitenverzweigung"
1477
 
1478
- #: ../admin/settings.php:233
1479
  msgid "The album will not link to a gallery subpage. The gallery is shown on the same page."
1480
  msgstr "Ein Album benötigt dann keinen Link zur Seite. Die Galerie wird direkt angezeigt."
1481
 
1482
- #: ../admin/settings.php:237
1483
  msgid "Number of images per page"
1484
  msgstr "Anzahl der Bilder pro Seite"
1485
 
1486
- #: ../admin/settings.php:239
1487
  msgid "0 will disable pagination, all images on one page"
1488
  msgstr "0 schaltet Blätterfunktion ab ( = alle Bilder auf einer Seite )"
1489
 
1490
- #: ../admin/settings.php:243
1491
  msgid "Integrate slideshow"
1492
  msgstr "Slideshow verwenden"
1493
 
1494
- #: ../admin/settings.php:250
1495
  msgid "Show first"
1496
  msgstr "Zeige als Erstes"
1497
 
1498
- #: ../admin/settings.php:256
1499
  msgid "Show thumbnail description"
1500
  msgstr "Zeige Bildbeschreibung"
1501
 
1502
- #: ../admin/settings.php:257
1503
- #: ../admin/settings.php:305
1504
- #: ../js/nggadmintab-js.php:112
1505
  msgid "None"
1506
  msgstr "Keiner"
1507
 
1508
- #: ../admin/settings.php:258
1509
  msgid "Description text"
1510
  msgstr "Beschreibung"
1511
 
1512
- #: ../admin/settings.php:259
1513
- #: ../admin/settings.php:275
1514
  msgid "Alt / Title text"
1515
  msgstr "Alt / Titel Text"
1516
 
1517
- #: ../admin/settings.php:263
1518
  msgid "Show ImageBrowser"
1519
  msgstr "Zeige Bilder Browser"
1520
 
1521
- #: ../admin/settings.php:265
1522
  msgid "The gallery will open the ImageBrowser instead the effect."
1523
  msgstr "Es wird der Bilder Browser angezeigt (Kein JavaScript Effekt)"
1524
 
1525
- #: ../admin/settings.php:269
1526
  msgid "Sort options"
1527
  msgstr "Sortierung"
1528
 
1529
- #: ../admin/settings.php:272
1530
  msgid "Sort thumbnails"
1531
  msgstr "Thumbnails sortieren"
1532
 
1533
- #: ../admin/settings.php:273
1534
  msgid "Image ID"
1535
  msgstr "Bilder ID"
1536
 
1537
- #: ../admin/settings.php:279
1538
  msgid "Sort direction"
1539
  msgstr "Sortierreihenfolge"
1540
 
1541
- #: ../admin/settings.php:280
1542
  msgid "Ascending"
1543
  msgstr "Aufsteigend"
1544
 
1545
- #: ../admin/settings.php:281
1546
  msgid "Descending"
1547
  msgstr "Absteigend"
1548
 
1549
- #: ../admin/settings.php:297
1550
  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."
1551
  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)."
1552
 
1553
- #: ../admin/settings.php:298
1554
  msgid "With the placeholder"
1555
  msgstr "Mit Platzhalter"
1556
 
1557
- #: ../admin/settings.php:298
1558
  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."
1559
  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."
1560
 
1561
- #: ../admin/settings.php:302
1562
  msgid "JavaScript Thumbnail effect"
1563
  msgstr "JavaScript Thumbnail Effekt"
1564
 
1565
- #: ../admin/settings.php:306
1566
  msgid "Thickbox"
1567
  msgstr "Thickbox"
1568
 
1569
- #: ../admin/settings.php:307
1570
  msgid "Lightbox"
1571
  msgstr "Lightbox"
1572
 
1573
- #: ../admin/settings.php:308
1574
  msgid "Highslide"
1575
  msgstr "Highslide"
1576
 
1577
- #: ../admin/settings.php:309
 
 
 
 
1578
  msgid "Custom"
1579
  msgstr "Eigener"
1580
 
1581
- #: ../admin/settings.php:314
1582
  msgid "Link Code line"
1583
  msgstr "Link Code Zeile"
1584
 
1585
- #: ../admin/settings.php:322
1586
  msgid "Select loading image"
1587
  msgstr "Wähle Ladeanimation"
1588
 
1589
- #: ../admin/settings.php:346
1590
  msgid "Please note : You can only activate the watermark under -> Manage Gallery . This action cannot be undone."
1591
  msgstr "Bitte beachten : Das Wasserzeichen kann nur unter der Galerieverwaltung gesetzt werden. "
1592
 
1593
- #: ../admin/settings.php:351
1594
  msgid "Preview"
1595
  msgstr "Vorschau"
1596
 
1597
- #: ../admin/settings.php:353
1598
- #: ../admin/settings.php:357
1599
  msgid "Position"
1600
  msgstr "Position"
1601
 
1602
- #: ../admin/settings.php:377
1603
  msgid "Offset"
1604
  msgstr "Abstand"
1605
 
1606
- #: ../admin/settings.php:395
1607
  msgid "Use image as watermark"
1608
  msgstr "Benutze Bild als Wasserzeichen"
1609
 
1610
- #: ../admin/settings.php:398
1611
  msgid "URL to file"
1612
  msgstr "URL zur Datei"
1613
 
1614
- #: ../admin/settings.php:400
1615
  msgid "The accessing of URL files is disabled at your server (allow_url_fopen)"
1616
  msgstr "Der Dateizugriff von URL's ist auf diesem Server deaktiviert (allow_url_fopen)"
1617
 
1618
- #: ../admin/settings.php:406
1619
  msgid "Use text as watermark"
1620
  msgstr "Benutze Text als Wasserzeichen"
1621
 
1622
- #: ../admin/settings.php:409
1623
  msgid "Font"
1624
  msgstr "Schriftart"
1625
 
1626
- #: ../admin/settings.php:417
 
 
 
 
1627
  msgid "You can upload more fonts in the folder <strong>nggallery/fonts</strong>"
1628
  msgstr "Du kannst mehr Schriftarten in das Verzeichniss <strong>nggallery/fonts</strong> hochladen."
1629
 
1630
- #: ../admin/settings.php:421
1631
  msgid "Size"
1632
  msgstr "Größe"
1633
 
1634
- #: ../admin/settings.php:425
1635
  msgid "Color"
1636
  msgstr "Farbe"
1637
 
1638
- #: ../admin/settings.php:427
1639
  msgid "(hex w/o #)"
1640
  msgstr "(hex w/o #)"
1641
 
1642
- #: ../admin/settings.php:430
1643
  msgid "Text"
1644
  msgstr "Text"
1645
 
1646
- #: ../admin/settings.php:434
1647
  msgid "Opaque"
1648
  msgstr "Transparenz"
1649
 
1650
- #: ../admin/settings.php:453
1651
  msgid "The imagerotator.swf is not in the nggallery folder, the slideshow will not work."
1652
  msgstr "Die Datei imagerotator.swf ist nicht im Plugin Verzeichniss -> so wird die Slideshow nicht funktionieren."
1653
 
1654
- #: ../admin/settings.php:454
1655
  msgid "The settings are used in the JW Image Rotator Version 3.9 ."
1656
  msgstr "Die Einstellungen werden im JW Image Rotator Version 3.9 benutzt."
1657
 
1658
- #: ../admin/settings.php:455
1659
  msgid "See more information for the Flash Player on the web page"
1660
  msgstr "Weitere Informationen auf der Flash Player Homepage"
1661
 
1662
- #: ../admin/settings.php:458
1663
  msgid "Default size (W x H)"
1664
  msgstr "Standard Größe (B x H)"
1665
 
1666
- #: ../admin/settings.php:463
1667
  msgid "Shuffle mode"
1668
  msgstr "Shuffle Modus"
1669
 
1670
- #: ../admin/settings.php:467
1671
  msgid "Show next image on click"
1672
  msgstr "Zeige nächstes Bild bei Klick"
1673
 
1674
- #: ../admin/settings.php:471
1675
  msgid "Show navigation bar"
1676
  msgstr "Zeige Navigations-Leiste"
1677
 
1678
- #: ../admin/settings.php:475
1679
  msgid "Show loading icon"
1680
  msgstr "Zeige Lade-Bildchen"
1681
 
1682
- #: ../admin/settings.php:479
1683
  msgid "Use watermark logo"
1684
  msgstr "Wasserzeichen anzeigen"
1685
 
1686
- #: ../admin/settings.php:481
1687
  msgid "You can change the logo at the watermark settings"
1688
  msgstr "Du kannst den Pfad in Einstellungen für da Wasserzeichen angeben"
1689
 
1690
- #: ../admin/settings.php:484
1691
  msgid "Stretch image"
1692
  msgstr "Bild dehnen"
1693
 
1694
- #: ../admin/settings.php:487
1695
  msgid "true"
1696
  msgstr "Ja"
1697
 
1698
- #: ../admin/settings.php:488
1699
  msgid "false"
1700
  msgstr "Nein"
1701
 
1702
- #: ../admin/settings.php:489
1703
  msgid "fit"
1704
  msgstr "Passend"
1705
 
1706
- #: ../admin/settings.php:495
 
 
 
 
1707
  msgid "Duration time"
1708
  msgstr "Dauer"
1709
 
1710
- #: ../admin/settings.php:496
1711
  msgid "sec."
1712
  msgstr "Sek."
1713
 
1714
- #: ../admin/settings.php:499
1715
  msgid "Transition / Fade effect"
1716
  msgstr "Fade Effekt"
1717
 
1718
- #: ../admin/settings.php:502
1719
  msgid "fade"
1720
  msgstr "Fade"
1721
 
1722
- #: ../admin/settings.php:503
1723
  msgid "bgfade"
1724
  msgstr "BGFade"
1725
 
1726
- #: ../admin/settings.php:504
1727
  msgid "slowfade"
1728
  msgstr "Slowfade"
1729
 
1730
- #: ../admin/settings.php:505
1731
  msgid "circles"
1732
  msgstr "Kreise"
1733
 
1734
- #: ../admin/settings.php:506
1735
  msgid "bubbles"
1736
  msgstr "Blasen"
1737
 
1738
- #: ../admin/settings.php:507
1739
  msgid "blocks"
1740
  msgstr "Blöcke"
1741
 
1742
- #: ../admin/settings.php:508
1743
  msgid "fluids"
1744
  msgstr "Fluids"
1745
 
1746
- #: ../admin/settings.php:509
1747
  msgid "flash"
1748
  msgstr "Flash"
1749
 
1750
- #: ../admin/settings.php:510
1751
  msgid "lines"
1752
  msgstr "Linien"
1753
 
1754
- #: ../admin/settings.php:511
1755
- msgid "random"
1756
- msgstr "Zufall"
1757
-
1758
- #: ../admin/settings.php:515
1759
  msgid "Use slow zooming effect"
1760
  msgstr "nutze Zoom Effekt"
1761
 
1762
- #: ../admin/settings.php:519
1763
  msgid "Background Color"
1764
  msgstr "Hintergrund (BG) Farbe"
1765
 
1766
- #: ../admin/settings.php:524
1767
  msgid "Texts / Buttons Color"
1768
  msgstr "Text- / Button Farbe"
1769
 
1770
- #: ../admin/settings.php:529
1771
  msgid "Rollover / Active Color"
1772
  msgstr "Rollover / Aktiv (Link) Farbe"
1773
 
1774
- #: ../admin/settings.php:534
1775
  msgid "Background music (URL)"
1776
  msgstr "Hintergrundmusik (URL)"
1777
 
1778
- #: ../admin/settings.php:538
1779
  msgid "Try XHTML validation (with CDATA)"
1780
  msgstr "Integriere XHTML Validierung (mittels CDATA)"
1781
 
1782
- #: ../admin/settings.php:540
1783
  msgid "Important : Could causes problem at some browser. Please recheck your page."
1784
  msgstr "Wichtig : Es könnnten Probleme bei einigen Browser auftauchen. Unbedingt Seite prüfen."
1785
 
@@ -1813,35 +1847,35 @@ msgstr ""
1813
  "\\n"
1814
  "Wähle [Cancel] um abzubrechen, [OK] zum Durchführen.\\n"
1815
 
1816
- #: ../admin/setup.php:54
1817
  msgid "Uninstall plugin tables"
1818
  msgstr "Plugin Tabellen (DB) entfernen"
1819
 
1820
- #: ../admin/setup.php:56
1821
  msgid "You don't like NextGEN Gallery ?"
1822
  msgstr "Du magst die NextGEN Galerie nicht ?"
1823
 
1824
- #: ../admin/setup.php:57
1825
  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. "
1826
  msgstr "Null Problemo. Einfach nur vor dem Deaktivieren dieses Plugins den Uninstall-Button betätigen damit alle Tabellen der Galerie entfernt werden."
1827
 
1828
- #: ../admin/setup.php:58
1829
  msgid "WARNING:"
1830
  msgstr "WARNUNG:"
1831
 
1832
- #: ../admin/setup.php:59
1833
  msgid "Once uninstalled, this cannot be undone. You should use a Database Backup plugin of WordPress to backup all the tables first. NextGEN gallery is stored in the tables"
1834
  msgstr "Einmal deinstalliert -> keine Rückgängigmachung! D.h. auf Deutsch, das eine einmalig durchgeführte Deinstallation nicht mehr rückgängig gemacht werden kann da alle Tabellen der Galerie aus der Datenbank entfernt werden und KEIN Backup dieser Galerie-Tabellen angelegt wird währenddessen."
1835
 
1836
- #: ../admin/setup.php:59
1837
  msgid "and"
1838
  msgstr "und"
1839
 
1840
- #: ../admin/setup.php:61
1841
  msgid "Uninstall plugin"
1842
  msgstr "Plugin deinstallieren"
1843
 
1844
- #: ../admin/setup.php:61
1845
  msgid ""
1846
  "You are about to Uninstall this plugin from WordPress.\\n"
1847
  "This action is not reversible.\\n"
@@ -1853,6 +1887,39 @@ msgstr ""
1853
  "\\n"
1854
  "Wähle [Cancel] zum Abbrechen, [OK] zum Deinstallieren.\\n"
1855
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1856
  #: ../admin/style.php:34
1857
  msgid "You do not have sufficient permissions to edit templates for this blog."
1858
  msgstr "Du hast nicht die benötigten Rechte um Templates in diesem Blog zu bearbeiten."
@@ -1869,83 +1936,350 @@ msgstr "Aktiviere und nutze Stylesheet:"
1869
  msgid "Activate"
1870
  msgstr "Aktiviere"
1871
 
1872
- #: ../admin/style.php:92
1873
  #, php-format
1874
  msgid "Editing <strong>%s</strong>"
1875
  msgstr "Bearbeite <strong>%s</strong>"
1876
 
1877
- #: ../admin/style.php:94
1878
  #, php-format
1879
  msgid "Browsing <strong>%s</strong>"
1880
  msgstr "Browse <strong>%s</strong>"
1881
 
1882
- #: ../admin/style.php:99
 
1883
  msgid "Author"
1884
  msgstr "Autor"
1885
 
1886
- #: ../admin/style.php:100
1887
  msgid "Version"
1888
  msgstr "Version"
1889
 
1890
- #: ../admin/style.php:117
1891
  msgid "Update File &raquo;"
1892
  msgstr "Datei aktualisieren"
1893
 
1894
- #: ../admin/style.php:121
1895
  msgid "If this file were writable you could edit it."
1896
  msgstr "Wenn diese Datei beschreibbar wäre, könntest Du sie bearbeiten."
1897
 
1898
- #: ../admin/style.php:126
1899
  msgid "Oops, no such file exists! Double check the name and try again, merci."
1900
  msgstr "Oha, eine solche Datei existiert nicht! Bitte überprüfe den Namen und probiere es erneut, danke."
1901
 
1902
- #: ../js/nggadmintab-js.php:81
1903
- #: ../js/nggadmintab-js.php:83
1904
- #: ../js/nggadmintab-js.php:144
1905
- #: ../js/nggadmintab-js.php:146
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1906
  msgid "Browse your files"
1907
  msgstr "Durchsuche deine Dateien"
1908
 
1909
- #: ../js/nggadmintab-js.php:81
1910
- #: ../js/nggadmintab-js.php:83
1911
- #: ../js/nggadmintab-js.php:144
1912
- #: ../js/nggadmintab-js.php:146
1913
  msgid "&laquo; Back"
1914
  msgstr "&laquo; Zurück"
1915
 
1916
- #: ../js/nggadmintab-js.php:92
1917
- #: ../js/nggadmintab-js.php:155
1918
  msgid "Direct link to file"
1919
  msgstr "Link zur Datei"
1920
 
1921
- #: ../js/nggadmintab-js.php:102
1922
  msgid "Full size"
1923
  msgstr "Volle Größe"
1924
 
1925
- #: ../js/nggadmintab-js.php:105
1926
  msgid "Show:"
1927
  msgstr "Zeige als:"
1928
 
1929
- #: ../js/nggadmintab-js.php:110
1930
  msgid "Link to:"
1931
  msgstr "Link zu:"
1932
 
1933
- #: ../js/nggadmintab-js.php:111
1934
  msgid "File"
1935
  msgstr "Datei"
1936
 
1937
- #: ../js/nggadmintab-js.php:116
1938
  msgid "Send to editor &raquo;"
1939
  msgstr "Zum Editor schicken &raquo;"
1940
 
1941
- #: ../js/nggadmintab-js.php:175
 
 
 
 
 
1942
  msgid "Save &raquo;"
1943
  msgstr "Speichern &raquo;"
1944
 
1945
- #: ../js/nggadmintab-js.php:254
1946
  #, php-format
1947
  msgid ""
1948
  "Are you sure you want to delete the file '%s'?\n"
1949
  "Click ok to delete or cancel to go back."
1950
  msgstr "Bist du sicher das Du diese Datei '%s' löschen willst ?"
1951
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2
  msgstr ""
3
  "Project-Id-Version: NextGEN Gallery\n"
4
  "POT-Creation-Date: \n"
5
+ "PO-Revision-Date: 2008-01-28 20:19+0100\n"
6
  "Last-Translator: Alex Rabe\n"
7
  "Language-Team: Alex Rabe\n"
8
  "MIME-Version: 1.0\n"
15
  "X-Poedit-SearchPath-0: .\n"
16
  "X-Poedit-SearchPath-1: ..\n"
17
 
18
+ #: ../nggallery.php:175
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
19
  msgid "Sorry, NextGEN Gallery works only under WordPress 2.1 or higher"
20
  msgstr "Tut mir leid aber NextGEN Galerie arbeitet nur ab WordPress 2.1 und aufwärts"
21
 
22
+ #: ../nggfunctions.php:452
23
+ #: ../nggfunctions.php:467
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
24
  msgid "Watch gallery"
25
  msgstr "Galerie ansehen"
26
 
27
+ #: ../nggfunctions.php:461
28
+ #: ../nggfunctions.php:473
29
+ #: ../nggfunctions.php:750
30
  msgid "Photos"
31
  msgstr "Fotos"
32
 
33
+ #: ../nggfunctions.php:547
34
  msgid "Back"
35
  msgstr "Zurück"
36
 
37
+ #: ../nggfunctions.php:551
38
  msgid "Next"
39
  msgstr "Vor"
40
 
41
+ #: ../nggfunctions.php:554
42
+ #: ../admin/manage.php:85
43
+ #: ../tinymce/window.php:37
44
+ msgid "Picture"
45
+ msgstr "Bild"
46
+
47
+ #: ../nggfunctions.php:554
48
  msgid "from"
49
  msgstr "von"
50
 
51
+ #: ../nggfunctions.php:720
52
  msgid "Overview"
53
  msgstr "Übersicht"
54
 
55
+ #: ../ngginstall.php:20
56
+ msgid "Sorry, NextGEN Gallery works only with a role called administrator"
57
+ msgstr "Tut mir leid, aber NextGEN Galerie benötigt die Rolle \"Administrator\""
58
+
59
+ #: ../ngginstall.php:143
60
+ msgid "NextGEN Gallery : Tables could not created, please check your database settings"
61
+ msgstr "NextGEN Gallery : Tabellen konnten nicht erstellt werden, überprüfe deine Datenbank"
62
+
63
+ #: ../ngginstall.php:183
64
  msgid "[Show as slideshow]"
65
  msgstr "[Zeige als Diashow]"
66
 
67
+ #: ../ngginstall.php:184
68
  msgid "[Show picture list]"
69
  msgstr "[Zeige Bilder-Liste]"
70
 
71
+ #: ../nggwidget.php:118
72
  msgid "Title:"
73
  msgstr "Titel:"
74
 
75
+ #: ../nggwidget.php:119
76
  msgid "Select Gallery:"
77
  msgstr "Wähle Galerie"
78
 
79
+ #: ../nggwidget.php:123
80
  msgid "All images"
81
  msgstr "Alle Bilder"
82
 
83
+ #: ../nggwidget.php:133
84
  msgid "Height:"
85
  msgstr "Höhe:"
86
 
87
+ #: ../nggwidget.php:134
88
  msgid "Width:"
89
  msgstr "Breite:"
90
 
91
+ #: ../nggwidget.php:188
92
+ #, php-format
93
+ msgid "NextGEN Gallery %d"
94
+ msgstr "NextGEN Gallery %d"
 
 
 
 
 
 
 
 
 
 
 
95
 
96
+ #: ../nggwidget.php:204
97
+ msgid "NextGEN Gallery Widgets"
98
+ msgstr "NextGEN Gallery Widgets"
 
99
 
100
+ #: ../nggwidget.php:205
101
+ msgid "How many NextGEN Gallery widgets would you like?"
102
+ msgstr "Wie viele NextGEN Gallery Widgets möchtest du haben ?"
 
 
 
103
 
104
+ #: ../nggwidget.php:209
105
+ #: ../admin/uploadtab.php:193
106
+ msgid "Save"
107
+ msgstr "Speichern"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
108
 
109
+ #: ../nggwidget.php:301
110
+ msgid "Title :"
111
+ msgstr "Titel :"
 
112
 
113
+ #: ../nggwidget.php:306
114
+ msgid "Show :"
115
+ msgstr "Zeige als :"
 
116
 
117
+ #: ../nggwidget.php:311
118
+ #: ../admin/settings.php:100
119
+ #: ../admin/settings.php:295
120
+ msgid "Thumbnails"
121
+ msgstr "Thumbnails"
122
 
123
+ #: ../nggwidget.php:312
124
+ msgid "Orginal images"
125
+ msgstr "Orginal Bilder"
126
+
127
+ #: ../nggwidget.php:318
128
+ #: ../admin/settings.php:558
129
+ msgid "random"
130
+ msgstr "Zufall"
131
+
132
+ #: ../nggwidget.php:319
133
+ msgid "recent added "
134
+ msgstr "zuletzt hinzugefügt"
135
+
136
+ #: ../nggwidget.php:323
137
+ msgid "Width x Height :"
138
+ msgstr "Breite x Höhe :"
139
 
140
+ #: ../nggwidget.php:329
141
+ msgid "Select :"
142
+ msgstr "Wähle :"
 
143
 
144
+ #: ../nggwidget.php:331
145
+ msgid "All galleries"
146
+ msgstr "Alle Galerien"
 
147
 
148
+ #: ../nggwidget.php:332
 
149
  msgid "Only which are not listed"
150
  msgstr "Nur ungelistete"
151
 
152
+ #: ../nggwidget.php:333
 
153
  msgid "Only which are listed"
154
  msgstr "Nur gelistete"
155
 
156
+ #: ../nggwidget.php:338
157
+ msgid "Gallery ID :"
158
+ msgstr "Galerie ID :"
 
159
 
160
+ #: ../nggwidget.php:340
161
+ msgid "Gallery IDs, separated by commas."
162
+ msgstr "Galerie ID's, mit Kommas getrennt"
163
 
164
  #: ../admin/about.php:9
165
  msgid "Copyright notes / Credits"
170
  msgstr "NextGEN DEV Team"
171
 
172
  #: ../admin/about.php:12
173
+ msgid "This plugin is primarily developed, maintained, supported, documented by"
174
+ msgstr "Dieses Plugin wird hauptsächlich entwickelt, dokumentiert und supportet von"
175
 
176
+ #: ../admin/about.php:12
177
+ msgid "There are many other folks who have made contributions to this project :"
178
+ msgstr "Folgende Personen haben die Entwicklung bisher unterstützt :"
 
 
 
 
 
 
 
 
 
 
 
 
 
179
 
180
+ #: ../admin/about.php:14
181
  msgid "Contributors / Tribute to"
182
  msgstr "Anerkennung / Hinweise"
183
 
184
+ #: ../admin/about.php:15
185
  msgid "If you study the code of this plugin, you will find out that we mixed a lot of good already existing code and ideas together."
186
  msgstr "Falls Du Dir den Sourcecode dieses Plugins ansiehst wirst Du merken, das wir verschiedene gute Scripte sowie Ideen verwendet haben."
187
 
188
+ #: ../admin/about.php:16
189
  msgid "So, we would like to thank the following people for their pioneer work (without this work it's impossible to create such a plugin so fast)"
190
  msgstr "Wir möchten folgenden Menschen für Ihre Pionier-Arbeit danken (ohne diese Vorleistung wäre es unmöglich ein Plugin so schnell zu entwickeln)"
191
 
192
+ #: ../admin/about.php:18
193
  msgid "for their great documented code"
194
  msgstr "für Ihren großartig dokumentierten Code"
195
 
196
+ #: ../admin/about.php:19
197
  msgid "for jQuery, which is the best Web2.0 framework"
198
  msgstr "für jQuery, das Beste Web2.0 Framework"
199
 
200
+ #: ../admin/about.php:20
201
  msgid "for the fantastic PHP Thumbnail Class"
202
  msgstr "für die fantastische PHP Thumbnail Klasse"
203
 
204
+ #: ../admin/about.php:21
205
  msgid "for PclZip , a PHP library that manage ZIP archives"
206
  msgstr "für PclZip, eine ZIP PHP Library"
207
 
208
+ #: ../admin/about.php:22
209
  msgid "for a lot of very useful plugins and ideas"
210
  msgstr "für viele nützliche Plugins und Ideen"
211
 
212
+ #: ../admin/about.php:23
213
  msgid "for RS-Discuss, it saved me a lot of time"
214
  msgstr "für RS-Discuss, welches mir viel Zeit sparte"
215
 
216
+ #: ../admin/about.php:24
217
  msgid "for the best Media Flash Scripts on earth"
218
  msgstr "für die besten Media Flash Scripte"
219
 
220
+ #: ../admin/about.php:25
221
  msgid "for the Watermark plugin"
222
  msgstr "für das Wasserzeichen Plugin"
223
 
224
+ #: ../admin/about.php:27
225
  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."
226
  msgstr "Falls Du Deinen Namen hier nicht auf dieser Liste findest und es einigen Code gibt, den ich in meinem Plugin verwendet habe, so schicken mir bitte sofort einfach eine EMail."
227
 
228
+ #: ../admin/about.php:28
229
  msgid "How to support ?"
230
  msgstr "Unterstützung / Hilfe"
231
 
232
+ #: ../admin/about.php:29
233
  msgid "There exist several ways to contribute, help or support us in this work. Non of them are mandatory."
234
  msgstr "Es existieren verschiedene Möglichkeiten diese Arbeit zu unterstützen."
235
 
236
+ #: ../admin/about.php:31
237
  msgid "Send us bugfixes / code changes"
238
  msgstr "Schicke uns Verbesserungen / Bugfixes"
239
 
240
+ #: ../admin/about.php:31
241
  msgid "The most motivated support for this plugin are your ideas and brain work"
242
  msgstr "Der beste Support für dieses Plugin sind Deine Ideen und Gedanken"
243
 
244
+ #: ../admin/about.php:32
245
  msgid "Translate the plugin"
246
  msgstr "Übersetze das Plugin"
247
 
248
+ #: ../admin/about.php:32
249
  msgid "To help people to work with this plugin, I would like to have it in all avaivable languages"
250
  msgstr "Um jedem das Arbeiten mit diesem Plugin zu vereinfachen würde ich es gerne in allen verfügbaren Sprachen anbieten"
251
 
252
+ #: ../admin/about.php:33
253
  msgid "Donate the work via paypal"
254
  msgstr "Zeig Dich für diese Arbeit per PayPal dankbar"
255
 
256
+ #: ../admin/about.php:44
257
  msgid "No doubt a very usefull and easy motivation :-)"
258
  msgstr "Kein Zweifel, eine schöne und simple Motivationshilfe"
259
 
260
+ #: ../admin/about.php:46
261
  msgid "Place a link to the plugin in your blog/webpage"
262
  msgstr "Setze einen Link zu diesem Plugin auf Deinen Blog"
263
 
264
+ #: ../admin/about.php:46
265
  msgid "Yes, share and trackback is also a good support for this work "
266
  msgstr "Natürlich sind Trackbacks und Links auch ein guter Support für diese Arbeit"
267
 
268
+ #: ../admin/about.php:48
269
  msgid "Thanks!"
270
  msgstr "Vielen Dank!"
271
 
272
+ #: ../admin/about.php:49
273
  msgid "We would like to thank this people which support us in the work :"
274
  msgstr "Wir wollen diesen Menschen für Ihre Hilfe danken:"
275
 
276
+ #: ../admin/addgallery.php:35
277
+ #: ../admin/addgallery.php:51
278
  msgid "Upload failed!"
279
  msgstr "Upload fehlgeschlagen!"
280
 
281
+ #: ../admin/addgallery.php:56
282
+ #: ../admin/functions.php:567
283
+ #: ../admin/functions.php:635
284
+ msgid "No gallery selected !"
285
+ msgstr "Keine Galerie ausgewählt !"
286
+
287
+ #: ../admin/addgallery.php:103
288
+ msgid "Image Files"
289
+ msgstr "Bilder"
290
+
291
+ #: ../admin/addgallery.php:121
292
+ #: ../admin/addgallery.php:151
293
  msgid "remove"
294
  msgstr "Entfernen"
295
 
296
+ #: ../admin/addgallery.php:122
297
+ msgid "Browse..."
298
+ msgstr "Durchsuche..."
299
+
300
+ #: ../admin/addgallery.php:123
301
+ #: ../admin/addgallery.php:296
302
+ msgid "Upload images"
303
+ msgstr "Bilder hochladen"
304
+
305
+ #: ../admin/addgallery.php:167
306
+ #: ../admin/addgallery.php:179
307
  msgid "Add new gallery"
308
  msgstr "Neue Galerie erstellen"
309
 
310
+ #: ../admin/addgallery.php:169
311
+ #: ../admin/addgallery.php:200
312
  msgid "Upload a Zip-File"
313
  msgstr "Zip-Datei hochladen"
314
 
315
+ #: ../admin/addgallery.php:172
316
+ #: ../admin/addgallery.php:240
317
  msgid "Import image folder"
318
+ msgstr "Bilder-Verzeichnis importieren"
319
 
320
+ #: ../admin/addgallery.php:174
321
+ #: ../admin/addgallery.php:264
322
  msgid "Upload Images"
323
  msgstr "Bilder hochladen"
324
 
325
+ #: ../admin/addgallery.php:185
326
  msgid "New Gallery"
327
  msgstr "Neue Galerie"
328
 
329
+ #: ../admin/addgallery.php:188
330
  msgid "Create a new , empty gallery below the folder"
331
+ msgstr "Erstelle eine neue, leere Galerie unter dem Verzeichnis"
332
 
333
+ #: ../admin/addgallery.php:190
334
  msgid "Allowed characters for file and folder names are"
335
+ msgstr "Erlaubte Charaktere für die Datei- und Verzeichnisnamen sind"
336
 
337
+ #: ../admin/addgallery.php:193
338
  msgid "Add gallery"
339
  msgstr "Galerie hinzufügen"
340
 
341
+ #: ../admin/addgallery.php:206
342
  msgid "Select Zip-File"
343
  msgstr "Wähle Zip-Datei"
344
 
345
+ #: ../admin/addgallery.php:208
346
  msgid "Upload a zip file with images"
347
  msgstr "Lade eine Zip-Datei mit Bildern hoch"
348
 
349
+ #: ../admin/addgallery.php:211
350
+ #: ../admin/addgallery.php:274
351
  msgid "in to"
352
  msgstr "in"
353
 
354
+ #: ../admin/addgallery.php:213
355
  msgid "a new gallery"
356
  msgstr "eine neue Galerie"
357
 
358
+ #: ../admin/addgallery.php:223
359
+ #: ../admin/addgallery.php:286
360
  msgid "Note : The upload limit on your server is "
361
+ msgstr "Hinweis : Das Upload-Limit auf dem Server beträgt "
362
+
363
+ #: ../admin/addgallery.php:227
364
+ #: ../admin/addgallery.php:252
365
+ #: ../admin/addgallery.php:290
366
+ msgid "Add Metadata :"
367
+ msgstr "Metadaten hinzufügen :"
368
 
369
+ #: ../admin/addgallery.php:229
370
+ #: ../admin/addgallery.php:254
371
+ #: ../admin/addgallery.php:292
372
+ msgid "Import EXIF, IPTC or XMP data (if available)"
373
+ msgstr "EXIF, IPTC oder XMP Daten importieren (wenn verfügbar)"
374
+
375
+ #: ../admin/addgallery.php:232
376
  msgid "Start upload"
377
  msgstr "Upload starten"
378
 
379
+ #: ../admin/addgallery.php:246
380
  msgid "Import from Server path:"
381
  msgstr "Importieren aus Server-Pfad:"
382
 
383
+ #: ../admin/addgallery.php:248
384
  msgid "Import a folder with images. Please note :"
385
  msgstr "Importiere ein Verzeichniss mit Bildern. Bitte beachte:"
386
 
387
+ #: ../admin/addgallery.php:249
388
+ msgid "For safe-mode = ON you need to add the subfolder thumbs manually"
389
+ msgstr "Da der Safe-Mode (PHP.INI) eingeschaltet ist, mußt Du das Unterverzeichnis für die Vorschaubilder (\"thumbs\") manuell (per FTP) anlegen"
390
 
391
+ #: ../admin/addgallery.php:257
392
  msgid "Import folder"
393
+ msgstr "Verzeichnis importieren"
394
 
395
+ #: ../admin/addgallery.php:270
396
  msgid "Upload image"
397
  msgstr "Bild hochladen"
398
 
399
+ #: ../admin/addgallery.php:276
400
  msgid "Choose gallery"
401
  msgstr "Wähle Galerie"
402
 
403
+ #: ../admin/admin.php:54
404
+ #: ../admin/functions.php:72
405
+ #: ../admin/functions.php:76
406
+ #: ../admin/functions.php:123
407
+ #: ../admin/manage.php:64
408
+ #: ../admin/manage.php:424
409
+ #: ../admin/settings.php:102
410
+ #: ../admin/uploadtab.php:36
411
+ #: ../admin/_manage.php:182
412
+ #: ../admin/_manage.php:991
413
+ #: ../tinymce/window.php:35
414
+ msgid "Gallery"
415
+ msgstr "Galerie"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
416
 
417
+ #: ../admin/admin.php:55
418
  msgid "Add Gallery"
419
+ msgstr "Bilder/Galerie hinzufügen"
420
 
421
+ #: ../admin/admin.php:56
422
  msgid "Manage Gallery"
423
  msgstr "Galerie verwalten"
424
 
425
+ #: ../admin/admin.php:57
426
+ #: ../tinymce/window.php:36
427
+ msgid "Album"
428
+ msgstr "Album"
429
+
430
+ #: ../admin/admin.php:58
431
  msgid "Options"
432
  msgstr "Optionen"
433
 
434
+ #: ../admin/admin.php:60
435
  msgid "Style"
436
  msgstr "Style"
437
 
438
+ #: ../admin/admin.php:61
439
  msgid "Setup Gallery"
440
  msgstr "Galerie Setup"
441
 
442
+ #: ../admin/admin.php:61
443
  msgid "Setup"
444
  msgstr "Setup"
445
 
446
+ #: ../admin/admin.php:63
447
  msgid "Roles"
448
  msgstr "Zugriff"
449
 
450
+ #: ../admin/admin.php:65
451
  #: ../admin/myimport.php:74
452
  msgid "Import"
453
  msgstr "Import "
454
 
455
+ #: ../admin/admin.php:66
456
  msgid "About this Gallery"
457
  msgstr "Über diese Galerie"
458
 
459
+ #: ../admin/admin.php:66
460
  msgid "About"
461
  msgstr "Über"
462
 
463
+ #: ../admin/admin.php:68
464
+ msgid "NextGEN Gallery"
465
+ msgstr "NextGEN Gallery"
466
+
467
  #: ../admin/album.php:17
468
  #: ../admin/album.php:36
469
  msgid "Update Successfully"
473
  msgid "Album deleted"
474
  msgstr "Album gelöscht"
475
 
476
+ #: ../admin/album.php:123
477
  msgid "Manage Albums"
478
  msgstr "Verwalte Alben"
479
 
480
+ #: ../admin/album.php:129
481
+ #: ../tinymce/window.php:74
482
+ msgid "Select album"
483
+ msgstr "Wähle Album"
484
+
485
+ #: ../admin/album.php:132
486
  msgid "No album selected"
487
  msgstr "Kein Album ausgewählt"
488
 
489
+ #: ../admin/album.php:145
490
  msgid "Add new album"
491
  msgstr "Album hinzufügen"
492
 
493
+ #: ../admin/album.php:149
494
+ #: ../admin/manage.php:302
495
+ #: ../admin/manage.php:568
496
+ #: ../admin/_manage.php:232
497
  msgid "Delete"
498
  msgstr "Lösche"
499
 
500
+ #: ../admin/album.php:149
501
  msgid "Delete album ?"
502
  msgstr "Lösche Album ?"
503
 
504
+ #: ../admin/album.php:151
505
+ #: ../admin/settings.php:167
506
+ #: ../admin/settings.php:207
507
+ #: ../admin/settings.php:254
508
+ #: ../admin/settings.php:329
509
+ #: ../admin/settings.php:376
510
+ #: ../admin/settings.php:488
511
+ #: ../admin/settings.php:591
512
+ #: ../admin/wpmu.php:98
513
  msgid "Update"
514
  msgstr "Aktualisiere"
515
 
516
+ #: ../admin/album.php:159
517
+ msgid "[Show all]"
518
+ msgstr "[Alle zeigen]"
519
+
520
+ #: ../admin/album.php:160
521
  msgid "[Maximize]"
522
  msgstr "[Vergrößern]"
523
 
524
+ #: ../admin/album.php:161
525
  msgid "[Minimize]"
526
  msgstr "[Verkleinern]"
527
 
528
+ #: ../admin/album.php:163
529
  msgid "After you create and select a album, you can drag and drop a gallery into your album below"
530
  msgstr "Nachdem du ein Album erstellt und ausgewählt hast, kannst du per Drag & Drop eine Galerie in das Album ziehen"
531
 
532
+ #: ../admin/album.php:170
533
  msgid "Select Gallery"
534
  msgstr "Wähle Galerie"
535
 
536
+ #: ../admin/album.php:209
537
  msgid "Album Page ID"
538
  msgstr "Album Seiten ID (Page ID)"
539
 
540
+ #: ../admin/album.php:221
541
  msgid "No album selected!"
542
  msgstr "Kein Album ausgewählt"
543
 
544
+ #: ../admin/album.php:257
545
+ #: ../admin/manage.php:276
546
+ #: ../admin/manage.php:523
547
  #: ../admin/myimport.php:49
548
+ #: ../admin/_manage.php:206
549
  msgid "ID"
550
  msgstr "ID"
551
 
552
+ #: ../admin/album.php:258
553
  msgid "Name"
554
  msgstr "Name"
555
 
556
+ #: ../admin/album.php:259
557
+ #: ../admin/manage.php:278
558
+ #: ../admin/manage.php:436
559
+ #: ../admin/myimport.php:51
560
+ #: ../admin/_manage.php:208
561
+ #: ../admin/_manage.php:1005
562
+ #: ../admin/js/uploadtab.js.php:109
563
+ #: ../lib/nggmeta.lib.php:373
564
+ msgid "Title"
565
+ msgstr "Titel"
566
+
567
+ #: ../admin/album.php:260
568
  msgid "Page"
569
  msgstr "Seite"
570
 
571
+ #: ../admin/functions.php:22
572
+ msgid "No valid gallery name!"
573
+ msgstr "Kein gültiger Galerie-Name!"
574
+
575
+ #: ../admin/functions.php:29
576
+ #: ../admin/functions.php:39
577
+ #: ../admin/functions.php:53
578
+ #: ../admin/functions.php:96
579
+ #: ../admin/functions.php:103
580
+ msgid "Directory"
581
+ msgstr "Verzeichnis"
582
+
583
+ #: ../admin/functions.php:29
584
+ msgid "didn't exist. Please create first the main gallery folder "
585
+ msgstr "nicht gefunden. Bitte erstelle zuerst das Hauptverzeichnis."
586
+
587
+ #: ../admin/functions.php:30
588
+ #: ../admin/functions.php:40
589
+ msgid "Check this link, if you didn't know how to set the permission :"
590
+ msgstr "Dieser Link zeigt dir wie man Verzeichnisrechte ändert :"
591
+
592
+ #: ../admin/functions.php:39
593
+ #: ../admin/functions.php:53
594
+ msgid "is not writeable !"
595
+ msgstr "ist schreibgeschützt !"
596
+
597
+ #: ../admin/functions.php:47
598
+ msgid "Directory "
599
+ msgstr "Verzeichnis "
600
+
601
+ #: ../admin/functions.php:47
602
+ msgid "already exists!"
603
+ msgstr "gibt es schon!"
604
+
605
+ #: ../admin/functions.php:51
606
+ #: ../admin/functions.php:55
607
+ #: ../admin/functions.php:515
608
+ #: ../lib/nggallery.lib.php:297
609
+ msgid "Unable to create directory "
610
+ msgstr "Kann Verzeichnis nicht erstellen"
611
+
612
+ #: ../admin/functions.php:58
613
+ msgid "The server setting Safe-Mode is on !"
614
+ msgstr "Auf dem Server ist Safe-Mode aktiviert (PHP.INI)"
615
+
616
+ #: ../admin/functions.php:59
617
+ msgid "If you have problems, please create directory"
618
+ msgstr "Wenn Probleme auftreten, erstelle bitte das Verzeichnis"
619
+
620
+ #: ../admin/functions.php:60
621
+ msgid "and the thumbnails directory"
622
+ msgstr "und das Thumbnails-Verzeichnis"
623
+
624
+ #: ../admin/functions.php:60
625
+ msgid "with permission 777 manually !"
626
+ msgstr "mit den Berechtigungen 777 manuell !"
627
+
628
+ #: ../admin/functions.php:72
629
+ msgid "already exists"
630
+ msgstr "gibt es bereits"
631
+
632
+ #: ../admin/functions.php:76
633
+ #: ../admin/functions.php:123
634
+ msgid "successfully created!"
635
+ msgstr "erfolgreich erstellt!"
636
+
637
+ #: ../admin/functions.php:76
638
+ msgid "You can show this gallery with the tag"
639
+ msgstr "Du kannst diese Galerie mit diem Stichwort anzeigen :"
640
+
641
+ #: ../admin/functions.php:96
642
+ msgid "doesn&#96;t exist!"
643
+ msgstr "gibt es nicht !"
644
+
645
+ #: ../admin/functions.php:103
646
+ msgid "contains no pictures"
647
+ msgstr "enthält keine Bilder"
648
+
649
+ #: ../admin/functions.php:120
650
+ #: ../admin/myimport.php:38
651
+ msgid "Database error. Could not add gallery!"
652
+ msgstr "Datenbank-Fehler. Kann Galerie nicht hinzufügen!"
653
+
654
+ #: ../admin/functions.php:139
655
+ msgid " picture(s) successfully added"
656
+ msgstr " Bild(er) erfolgreich hinzugefügt"
657
+
658
+ #: ../admin/functions.php:169
659
+ #: ../admin/functions.php:216
660
+ #: ../admin/functions.php:277
661
+ msgid "Running... Please wait"
662
+ msgstr "Läuft... Bitte warten"
663
+
664
+ #: ../admin/functions.php:170
665
+ #: ../admin/manage.php:500
666
+ msgid "Resize images"
667
+ msgstr "Bilder verkleinern"
668
+
669
+ #: ../admin/functions.php:192
670
+ msgid " : Image resized..."
671
+ msgstr " : Bild angepasst..."
672
+
673
+ #: ../admin/functions.php:201
674
+ #: ../admin/functions.php:256
675
+ msgid "Some pictures are not writeable :"
676
+ msgstr "Einige Bilder sind schreibgeschützt :"
677
+
678
+ #: ../admin/functions.php:217
679
+ #: ../admin/manage.php:498
680
+ msgid "Set watermark"
681
+ msgstr "Wasserzeichen setzen"
682
+
683
+ #: ../admin/functions.php:247
684
+ msgid " : Watermark created..."
685
+ msgstr " : Wasserzeichen gesetzt..."
686
+
687
+ #: ../admin/functions.php:278
688
+ #: ../admin/manage.php:499
689
+ msgid "Create new thumbnails"
690
+ msgstr "Neue Thumbnails erstellen"
691
+
692
+ #: ../admin/functions.php:343
693
+ msgid " : Thumbnail created..."
694
+ msgstr ": Thumbnail erstellt..."
695
+
696
+ #: ../admin/functions.php:348
697
+ msgid "Follow thumbnails could not created."
698
+ msgstr "Folgende Thumbnails konnten nicht erstellt werden :"
699
+
700
+ #: ../admin/functions.php:349
701
+ msgid "Some thumbnails are not writeable :"
702
+ msgstr "Einige Thumbnails sind schreibgeschützt :"
703
+
704
+ #: ../admin/functions.php:450
705
+ msgid "The Zip-file is too large. Exceed Memory limit !"
706
+ msgstr "Das Zip-File ist zu groß. Speicherlimit überschritten !"
707
+
708
+ #: ../admin/functions.php:491
709
+ msgid "Uploaded file was no or a faulty zip file ! The server recognize : "
710
+ msgstr "Die hochgeladene Datei war keine korrekte Zip-Datei. Servermeldung :"
711
+
712
+ #: ../admin/functions.php:510
713
+ #, php-format
714
+ msgid "Unable to create directory %s. Is its parent directory writable by the server?"
715
+ msgstr "Kann das Verzeichnis %s nicht erstellen. Is das Hauptverzeichnis vielleicht schreibgeschützt ?"
716
+
717
+ #: ../admin/functions.php:525
718
+ msgid "Zip-File successfully unpacked"
719
+ msgstr "Zip-Datei erfolgreich entpackt"
720
+
721
+ #: ../admin/functions.php:566
722
+ #: ../admin/functions.php:574
723
+ msgid "Unable to unlink file "
724
+ msgstr "Kann das Bild nicht löschen"
725
+
726
+ #: ../admin/functions.php:575
727
+ #: ../admin/functions.php:660
728
+ msgid "Failure in database, no gallery path set !"
729
+ msgstr "Datenbankfehler! Kein Galerie-Pfad gesetzt !"
730
+
731
+ #: ../admin/functions.php:582
732
+ #: ../admin/functions.php:653
733
+ msgid "is no valid image file!"
734
+ msgstr "ist keine zulässige Bilddatei !"
735
+
736
+ #: ../admin/functions.php:590
737
+ #, php-format
738
+ msgid "Unable to write to directory %s. Is this directory writable by the server?"
739
+ msgstr "Kann das Verzeichnis %s nicht erstellen. Is das Hauptverzeichnis vielleicht schreibgeschützt ?"
740
+
741
+ #: ../admin/functions.php:597
742
+ #: ../admin/functions.php:677
743
+ msgid "Error, the file could not moved to : "
744
+ msgstr "Fehler: Diese Datei kann nicht verschoben werden zu :"
745
+
746
+ #: ../admin/functions.php:602
747
+ #: ../admin/functions.php:681
748
+ msgid "Error, the file permissions could not set"
749
+ msgstr "Fehler: Die Berechtigungen für diese Datei können nicht gesetzt werden"
750
+
751
+ #: ../admin/functions.php:620
752
+ msgid " Image(s) successfully added"
753
+ msgstr " Bild(er) erfolgreich hinzugefügt"
754
+
755
+ #: ../admin/functions.php:640
756
+ msgid "Invalid upload. Error Code : "
757
+ msgstr "Ungültiger Upload. Fehler Code :"
758
+
759
+ #: ../admin/functions.php:692
760
+ msgid "Sorry, you have used your space allocation. Please delete some files to upload more files."
761
+ msgstr "Schade, dein freier Speicher scheint aufgebraucht zu sein. Bitte lösche zuerst ein paar Bilder."
762
+
763
+ #: ../admin/functions.php:719
764
+ #, php-format
765
+ msgid "SAFE MODE Restriction in effect! You need to create the folder <strong>%s</strong> manually"
766
+ msgstr "SAFE MODE Einschränkungen ist aktiv. Du must das Verzeichnis <strong>%s</strong> manuell anlegen."
767
+
768
+ #: ../admin/functions.php:720
769
+ #, php-format
770
+ 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"
771
+ msgstr "Wenn der Safe-Mode eingeschaltet ist, überprüft PHP ob der Besitzer (%s) des Skript mit dem Besitzer (%s) der Datei/Verzeichnis übereinstimmt."
772
+
773
  #: ../admin/manage.php:64
774
  #: ../admin/manage.php:85
775
+ #: ../admin/_manage.php:182
776
  msgid "deleted successfully"
777
  msgstr "erfolgreich gelöscht"
778
 
792
  msgid "Pictures deleted successfully "
793
  msgstr "Bilder erfolgreich gelöscht"
794
 
795
+ #: ../admin/manage.php:145
796
+ msgid "Import metadata finished"
797
+ msgstr "Import der Metadaten beendet"
798
+
799
+ #: ../admin/manage.php:195
800
  msgid "Tags changed"
801
  msgstr "Stichwörter geändert"
802
 
803
+ #: ../admin/manage.php:215
804
  msgid "Update successful"
805
  msgstr "Aktualisierung erfolgreich"
806
 
807
+ #: ../admin/manage.php:249
 
 
 
 
808
  msgid "New gallery page ID"
809
  msgstr "Neue Galerie Seiten ID"
810
 
811
+ #: ../admin/manage.php:249
812
  msgid "created"
813
  msgstr "erstellt"
814
 
815
+ #: ../admin/manage.php:272
816
+ #: ../admin/_manage.php:202
817
  msgid "Gallery Overview"
818
  msgstr "Galerie Übersicht"
819
 
820
+ #: ../admin/manage.php:277
821
  #: ../admin/myimport.php:50
822
+ #: ../admin/_manage.php:207
823
  msgid "Gallery name"
824
  msgstr "Galerie Name"
825
 
826
+ #: ../admin/manage.php:279
827
+ #: ../admin/manage.php:455
828
+ #: ../admin/manage.php:529
829
+ #: ../admin/myimport.php:52
830
+ #: ../admin/style.php:102
831
+ #: ../admin/uploadtab.php:180
832
+ #: ../admin/_manage.php:209
833
+ #: ../admin/_manage.php:1024
834
+ #: ../admin/js/uploadtab.js.php:172
835
+ msgid "Description"
836
+ msgstr "Beschreibung"
837
+
838
+ #: ../admin/manage.php:280
839
  #: ../admin/myimport.php:53
840
+ #: ../admin/_manage.php:210
841
  msgid "Page ID"
842
  msgstr "Seiten ID (Page ID)"
843
 
844
+ #: ../admin/manage.php:281
845
  #: ../admin/myimport.php:54
846
+ #: ../admin/_manage.php:211
847
  msgid "Quantity"
848
  msgstr "Anzahl"
849
 
850
+ #: ../admin/manage.php:282
851
+ #: ../admin/manage.php:535
852
  #: ../admin/myimport.php:55
853
+ #: ../admin/_manage.php:212
854
  msgid "Action"
855
  msgstr "Aktion"
856
 
857
+ #: ../admin/manage.php:301
858
+ #: ../admin/_manage.php:231
859
+ #: ../admin/js/uploadtab.js.php:93
860
  msgid "Edit"
861
  msgstr "Bearbeiten"
862
 
863
+ #: ../admin/manage.php:302
864
+ #: ../admin/_manage.php:232
865
  msgid "Delete this gallery ?"
866
  msgstr "Diese Galerie löschen ?"
867
 
868
+ #: ../admin/manage.php:307
869
+ #: ../admin/manage.php:573
870
  #: ../admin/myimport.php:79
871
+ #: ../admin/_manage.php:237
872
+ #: ../admin/_manage.php:1155
873
  msgid "No entries found"
874
  msgstr "Keine Einträge gefunden"
875
 
876
+ #: ../admin/manage.php:433
877
+ #: ../admin/_manage.php:1001
878
  msgid "Main settings"
879
  msgstr "Haupteinstellungen"
880
 
881
+ #: ../admin/manage.php:438
882
+ #: ../admin/_manage.php:1007
883
  msgid "Page Link to"
884
  msgstr "Seite verlinkt zu"
885
 
886
+ #: ../admin/manage.php:441
887
+ #: ../admin/_manage.php:1010
888
  msgid "Not linked"
889
  msgstr "Nicht verlinkt"
890
 
891
+ #: ../admin/manage.php:457
892
+ #: ../admin/_manage.php:1026
893
  msgid "Preview image"
894
  msgstr "Vorschau-Bild"
895
 
896
+ #: ../admin/manage.php:460
897
+ #: ../admin/_manage.php:1029
898
  msgid "No Picture"
899
  msgstr "Kein Bild"
900
 
901
+ #: ../admin/manage.php:475
902
+ #: ../admin/_manage.php:1043
903
  msgid "Path"
904
  msgstr "Pfad"
905
 
906
+ #: ../admin/manage.php:478
907
+ #: ../admin/_manage.php:1045
908
  msgid "Create new page"
909
  msgstr "Neue Seite erstellen"
910
 
911
+ #: ../admin/manage.php:481
912
+ #: ../admin/_manage.php:1048
913
  msgid "Main page (No parent)"
914
  msgstr "Haupseite (keine Unterseite)"
915
 
916
+ #: ../admin/manage.php:484
917
+ #: ../admin/_manage.php:1051
918
  msgid "Add page"
919
  msgstr "Seite hinzufügen"
920
 
921
+ #: ../admin/manage.php:490
922
+ #: ../admin/_manage.php:1057
923
  msgid "Scan Folder for new images"
924
  msgstr "Überprüfe Verzeichniss nach neuen Bildern"
925
 
926
+ #: ../admin/manage.php:491
927
+ #: ../admin/manage.php:580
928
+ #: ../admin/_manage.php:1058
929
  msgid "Save Changes"
930
  msgstr "Änderungen Speichern"
931
 
932
+ #: ../admin/manage.php:496
933
  msgid "No action"
934
  msgstr "Keine Aktion"
935
 
936
+ #: ../admin/manage.php:501
 
 
 
 
 
 
 
 
 
 
 
 
937
  msgid "Delete images"
938
  msgstr "Bilder löschen"
939
 
940
+ #: ../admin/manage.php:502
941
+ msgid "Import metadata"
942
+ msgstr "Metadaten importieren"
943
+
944
+ #: ../admin/manage.php:504
945
  msgid "Add tags"
946
  msgstr "Stichwörter hinzufügen"
947
 
948
+ #: ../admin/manage.php:505
949
  msgid "Delete tags"
950
  msgstr "Stichwörter löschen"
951
 
952
+ #: ../admin/manage.php:506
953
  msgid "Overwrite tags"
954
  msgstr "Stichwörter überschreiben"
955
 
956
+ #: ../admin/manage.php:510
957
+ #: ../admin/manage.php:511
958
+ #: ../admin/manage.php:598
959
  msgid "OK"
960
  msgstr "OK"
961
 
962
+ #: ../admin/manage.php:510
963
+ #: ../admin/manage.php:598
964
  msgid "No images selected"
965
  msgstr "Keine Bilder ausgewählt"
966
 
967
+ #: ../admin/manage.php:510
968
+ #: ../admin/manage.php:598
969
  #, php-format
970
  msgid ""
971
  "You are about to start the bulk edit for %s images \n"
976
  " \n"
977
  " 'Abbrechenl' um zu stoppen, 'OK' um die Bearbeitung durchzuführen."
978
 
979
+ #: ../admin/manage.php:512
980
  msgid "Hide thumbnails "
981
  msgstr "Thumbnails verstecken"
982
 
983
+ #: ../admin/manage.php:513
984
  msgid "Show thumbnails "
985
  msgstr "Thumbnails zeigen"
986
 
987
+ #: ../admin/manage.php:514
988
  msgid "Show tags"
989
  msgstr "Zeige Tags"
990
 
991
+ #: ../admin/manage.php:515
992
  msgid "Hide tags"
993
  msgstr "Verstecke Tags"
994
 
995
+ #: ../admin/manage.php:524
996
+ #: ../admin/settings.php:318
997
  msgid "File name"
998
  msgstr "Dateiname"
999
 
1000
+ #: ../admin/manage.php:526
1001
+ #: ../admin/js/uploadtab.js.php:106
1002
+ msgid "Thumbnail"
1003
+ msgstr "Thumbnail"
1004
+
1005
+ #: ../admin/manage.php:530
1006
+ #: ../admin/uploadtab.php:176
1007
+ #: ../admin/js/uploadtab.js.php:169
1008
+ msgid "Alt &amp; Title Text"
1009
+ msgstr "Alt &amp; Titel Text"
1010
+
1011
+ #: ../admin/manage.php:531
1012
  msgid "exclude"
1013
  msgstr "ausschließen"
1014
 
1015
+ #: ../admin/manage.php:533
1016
  msgid "Tags (comma separated list)"
1017
  msgstr "Stichwörter (Tags)"
1018
 
1019
+ #: ../admin/manage.php:566
1020
  msgid "View"
1021
  msgstr "Ansehen"
1022
 
1023
+ #: ../admin/manage.php:567
1024
+ msgid "Show Meta data"
1025
+ msgstr "Zeige Metadaten"
1026
+
1027
+ #: ../admin/manage.php:567
1028
+ msgid "Meta"
1029
+ msgstr "Meta"
1030
+
1031
+ #: ../admin/manage.php:568
1032
  msgid "Delete this file ?"
1033
  msgstr "Diese Datei löschen ?"
1034
 
1035
+ #: ../admin/manage.php:595
1036
  msgid "Enter the tags"
1037
  msgstr "Stichwörter angeben"
1038
 
1039
+ #: ../admin/manage.php:598
1040
+ #: ../tinymce/window.php:146
1041
+ msgid "Cancel"
1042
+ msgstr "Abbrechen"
1043
+
1044
  #: ../admin/myimport.php:35
1045
  msgid "Gallery "
1046
  msgstr "Galerie"
1082
  msgid "Download here"
1083
  msgstr "Hier dowloaden"
1084
 
1085
+ #: ../admin/overview.php:42
1086
  msgid "Server Settings"
1087
  msgstr "Server- Einstellungen"
1088
 
1089
+ #: ../admin/overview.php:50
1090
  msgid "Welcome"
1091
  msgstr "Willkommen"
1092
 
1093
+ #: ../admin/overview.php:54
1094
  msgid "gallery administrator"
1095
  msgstr "Galerie-Administrator"
1096
 
1097
+ #: ../admin/overview.php:54
1098
  msgid "gallery editor"
1099
  msgstr "Galerie-Mitarbeiter"
1100
 
1101
+ #: ../admin/overview.php:55
1102
  #, php-format
1103
  msgid "Welcome to NextGEN Gallery. Here you can control your images, galleries and albums. You currently have %s rights."
1104
  msgstr "Willkommen zur NextGEN Galerie. Hier kannst Du Deine Bilder, Galerien und Alben verwalten. Du hast im Moment %s Rechte."
1105
 
1106
+ #: ../admin/overview.php:60
1107
  msgid "Add a new gallery or import pictures"
1108
  msgstr "Neue Galerie erstellen oder Bilder importieren"
1109
 
1110
+ #: ../admin/overview.php:61
1111
  msgid "Manage galleries and images"
1112
  msgstr "Verwalte Galerien und Bilder"
1113
 
1114
+ #: ../admin/overview.php:62
1115
  msgid "Create and manage albums"
1116
  msgstr "Erstelle und verwalte Alben"
1117
 
1118
+ #: ../admin/overview.php:63
1119
  msgid "Change the settings of NextGEN Gallery"
1120
  msgstr "Ändere die Einstellungen von NextGEN Galerie"
1121
 
1122
+ #: ../admin/overview.php:66
1123
  msgid "Latest News"
1124
  msgstr "Letzte Informationen"
1125
 
1126
+ #: ../admin/overview.php:85
1127
  #, php-format
1128
  msgid "Newsfeed could not be loaded. Check the <a href=\"%s\">front page</a> to check for updates."
1129
  msgstr "Der Newsfeed kann nicht geladen werden. Schaue auf die <a href=\"%s\">Hauptseite</a> um Updates mitzubekommen."
1130
 
1131
+ #: ../admin/overview.php:98
1132
  msgid "GD support"
1133
  msgstr "GD Unterstützung"
1134
 
1135
+ #: ../admin/overview.php:109
1136
  msgid "No GD support"
1137
  msgstr "Keine GD Unterstützung"
1138
 
1139
+ #: ../admin/overview.php:116
1140
+ #: ../admin/overview.php:154
1141
+ #: ../admin/overview.php:157
1142
+ #: ../admin/overview.php:160
1143
  msgid "Yes"
1144
  msgstr "Ja"
1145
 
1146
+ #: ../admin/overview.php:117
1147
+ #: ../admin/overview.php:155
1148
+ #: ../admin/overview.php:158
1149
+ #: ../admin/overview.php:161
1150
  msgid "No"
1151
  msgstr "Nein"
1152
 
1153
+ #: ../admin/overview.php:131
1154
  msgid "Not set"
1155
  msgstr "Nicht gesetzt"
1156
 
1157
+ #: ../admin/overview.php:133
1158
+ #: ../admin/overview.php:136
1159
  msgid "On"
1160
  msgstr "An"
1161
 
1162
+ #: ../admin/overview.php:134
1163
+ #: ../admin/overview.php:137
1164
  msgid "Off"
1165
  msgstr "Aus"
1166
 
1167
+ #: ../admin/overview.php:140
1168
+ #: ../admin/overview.php:143
1169
+ #: ../admin/overview.php:146
1170
+ #: ../admin/overview.php:149
1171
+ #: ../admin/overview.php:152
1172
  msgid "N/A"
1173
  msgstr "N/A"
1174
 
1175
+ #: ../admin/overview.php:151
1176
  msgid " MByte"
1177
  msgstr " MByte"
1178
 
1179
+ #: ../admin/overview.php:164
1180
  msgid "Operating System"
1181
  msgstr "Betriebssystem"
1182
 
1183
+ #: ../admin/overview.php:165
1184
  msgid "Server"
1185
  msgstr "Server"
1186
 
1187
+ #: ../admin/overview.php:166
1188
  msgid "Memory usage"
1189
  msgstr "Speicherverbrauch"
1190
 
1191
+ #: ../admin/overview.php:167
1192
  msgid "MYSQL Version"
1193
  msgstr "MySQL Version"
1194
 
1195
+ #: ../admin/overview.php:168
1196
  msgid "SQL Mode"
1197
  msgstr "SQL Modus"
1198
 
1199
+ #: ../admin/overview.php:169
1200
  msgid "PHP Version"
1201
  msgstr "PHP Version"
1202
 
1203
+ #: ../admin/overview.php:170
1204
  msgid "PHP Safe Mode"
1205
  msgstr "PHP Safe Mode"
1206
 
1207
+ #: ../admin/overview.php:171
1208
  msgid "PHP Allow URL fopen"
1209
  msgstr "PHP Allow URL fopen"
1210
 
1211
+ #: ../admin/overview.php:172
1212
  msgid "PHP Memory Limit"
1213
  msgstr "PHP Memory Limit"
1214
 
1215
+ #: ../admin/overview.php:173
1216
  msgid "PHP Max Upload Size"
1217
  msgstr "PHP Max Upload Size"
1218
 
1219
+ #: ../admin/overview.php:174
1220
  msgid "PHP Max Post Size"
1221
  msgstr "PHP Max Post Size"
1222
 
1223
+ #: ../admin/overview.php:175
1224
  msgid "PHP Max Script Execute Time"
1225
  msgstr "PHP Max Script Execute Time"
1226
 
1227
+ #: ../admin/overview.php:176
1228
+ msgid "PHP Exif support"
1229
+ msgstr "PHP Exif Modul"
1230
+
1231
+ #: ../admin/overview.php:177
1232
+ msgid "PHP IPTC support"
1233
+ msgstr "PHP IPTC Modul"
1234
+
1235
+ #: ../admin/overview.php:178
1236
+ msgid "PHP XML support"
1237
+ msgstr "PHP XML Modul"
1238
+
1239
+ #: ../admin/overview.php:319
1240
+ msgid "Storage Space"
1241
+ msgstr "Speicherplatz"
1242
+
1243
+ #: ../admin/overview.php:322
1244
+ msgid "Upload Space Used:"
1245
+ msgstr "Verbrauchter Uploadspeicher:"
1246
+
1247
+ #: ../admin/overview.php:328
1248
+ msgid "Upload Space Remaining:"
1249
+ msgstr "Verbleibender Speicher:"
1250
+
1251
  #: ../admin/roles.php:20
1252
  msgid "Updated capabilities"
1253
  msgstr "Zugriffsrechte geändert"
1258
 
1259
  #: ../admin/roles.php:26
1260
  msgid "Select the lowest role which should be able to access the follow capabilities. NextGEN Gallery supports the standard roles from WordPress."
1261
+ msgstr "Wähle die niedrigste Rolle aus, die Zugriff haben soll. NextGEN Gallery unterstützt nur die Standard Wordpress Rollen/Fähigkeiten von WordPress."
1262
 
1263
  #: ../admin/roles.php:27
1264
  msgid "For a more flexible user management you can use the"
1298
 
1299
  #: ../admin/settings.php:29
1300
  #: ../admin/style.php:16
1301
+ #: ../admin/wpmu.php:32
1302
  msgid "Update successfully"
1303
  msgstr "Aktualisierung erfolgreich"
1304
 
1305
+ #: ../admin/settings.php:46
1306
+ msgid "Cache cleared"
1307
+ msgstr "Cache löschen"
1308
+
1309
+ #: ../admin/settings.php:99
1310
+ #: ../admin/settings.php:111
1311
  msgid "General Options"
1312
  msgstr "Allg. Optionen"
1313
 
1314
+ #: ../admin/settings.php:101
 
 
 
 
 
1315
  msgid "Images"
1316
  msgstr "Bilder"
1317
 
1318
+ #: ../admin/settings.php:103
1319
+ #: ../admin/settings.php:337
1320
  msgid "Effects"
1321
  msgstr "Effekte"
1322
 
1323
+ #: ../admin/settings.php:104
1324
+ #: ../admin/settings.php:390
1325
+ #: ../tinymce/window.php:123
1326
+ msgid "Watermark"
1327
+ msgstr "Wasserzeichen"
1328
+
1329
+ #: ../admin/settings.php:105
1330
+ #: ../admin/settings.php:296
1331
+ #: ../admin/settings.php:498
1332
+ #: ../tinymce/window.php:63
1333
+ msgid "Slideshow"
1334
+ msgstr "Slideshow"
1335
+
1336
+ #: ../admin/settings.php:118
1337
+ #: ../admin/wpmu.php:48
1338
  msgid "Gallery path"
1339
  msgstr "Galerie-Pfad"
1340
 
1341
+ #: ../admin/settings.php:120
1342
  msgid "This is the default path for all galleries"
1343
  msgstr "Dies ist der Standard-Pfad für alle Galerien"
1344
 
1345
+ #: ../admin/settings.php:131
1346
  msgid "Delete image files"
1347
  msgstr "Lösche Bilddateien"
1348
 
1349
+ #: ../admin/settings.php:133
1350
  msgid "Delete files, when removing a gallery in the database"
1351
  msgstr "Löscht auch die Dateien, falls die Galerie aus der Datenbank entfernt wird"
1352
 
1353
+ #: ../admin/settings.php:136
1354
+ msgid "Activate batch upload"
1355
+ msgstr "Aktiviere Batch-Upload"
1356
+
1357
+ #: ../admin/settings.php:138
1358
+ msgid "The batch upload requires Adobe Flash 9, disable it if you have problems"
1359
+ msgstr "Das Batch-Upload-Skript benötigt Adbode Flash 9, wenn es Probleme gibt deaktiviere es besser."
1360
+
1361
+ #: ../admin/settings.php:141
1362
+ msgid "Activate permalinks"
1363
+ msgstr "Aktiviere Permalinks"
1364
+
1365
+ #: ../admin/settings.php:143
1366
+ msgid "When you activate this option, you need to update your permalink structure one time."
1367
+ msgstr "Wenn du diese Option aktivierst, muss du einmal die Permalink Struktur aktualisieren."
1368
+
1369
+ #: ../admin/settings.php:146
1370
  msgid "Tags / Categories"
1371
  msgstr "Stichwörter / Kategorien"
1372
 
1373
+ #: ../admin/settings.php:149
1374
  msgid "Activate related images"
1375
  msgstr "Verwandte Bilder anzeigen"
1376
 
1377
+ #: ../admin/settings.php:151
1378
  msgid "This option will append related images to every post"
1379
  msgstr "Diese Option hängt verwandte Bilder an jeden Beitrag"
1380
 
1381
+ #: ../admin/settings.php:155
1382
  msgid "Match with"
1383
  msgstr "Vergleiche mit"
1384
 
1385
+ #: ../admin/settings.php:156
1386
  msgid "Categories"
1387
  msgstr "Kategorien"
1388
 
1389
+ #: ../admin/settings.php:157
1390
+ #: ../lib/nggmeta.lib.php:375
1391
  msgid "Tags"
1392
  msgstr "Stichwörter"
1393
 
1394
+ #: ../admin/settings.php:157
1395
  msgid " (require WordPress 2.3 or higher)"
1396
  msgstr " (benötigt WordPress 2.3 oder höher)"
1397
 
1398
+ #: ../admin/settings.php:161
1399
  msgid "Max. number of images"
1400
  msgstr "Max. Anzahl der Bilder"
1401
 
1402
+ #: ../admin/settings.php:163
1403
  msgid "0 will show all images"
1404
  msgstr "0 zeige alle verwandten Bilder"
1405
 
1406
+ #: ../admin/settings.php:175
1407
  msgid "Thumbnail settings"
1408
  msgstr "Thumbnail Einstellungen"
1409
 
1410
+ #: ../admin/settings.php:180
1411
  msgid "Please note : If you change the settings, you need to recreate the thumbnails under -> Manage Gallery ."
1412
  msgstr "Bitte beachten : Änderungen der Einstellungen werden erst übernommen, wenn Du neue Thumbnails unter -> \"Gallery verwalten\" erstellst"
1413
 
1414
+ #: ../admin/settings.php:183
1415
  msgid "Width x height (in pixel)"
1416
  msgstr "Breite x Höhe (in Pixel)"
1417
 
1418
+ #: ../admin/settings.php:185
1419
  msgid "These values are maximum values "
1420
  msgstr "Diese Angaben sind maximale Angaben."
1421
 
1422
+ #: ../admin/settings.php:188
1423
  msgid "Set fix dimension"
1424
  msgstr "Setze fixe Größe"
1425
 
1426
+ #: ../admin/settings.php:190
1427
  msgid "Ignore the aspect ratio, no portrait thumbnails"
1428
  msgstr "Ignoriere Bildseitenverhältnis"
1429
 
1430
+ #: ../admin/settings.php:193
1431
  msgid "Crop square thumbnail from image"
1432
  msgstr "Mittige Thumbnails aus Bildern ausschneiden"
1433
 
1434
+ #: ../admin/settings.php:195
1435
  msgid "Create square thumbnails, use only the width setting :"
1436
  msgstr "Erstellt viereckige Thumbnails, nutzt nur den Wert der Breite :"
1437
 
1438
+ #: ../admin/settings.php:198
1439
  msgid "Thumbnail quality"
1440
  msgstr "Thumbnail Qualität"
1441
 
1442
+ #: ../admin/settings.php:202
1443
+ #: ../admin/settings.php:234
1444
  msgid "Resample Mode"
1445
  msgstr "Resample Modus"
1446
 
1447
+ #: ../admin/settings.php:204
1448
+ #: ../admin/settings.php:237
1449
  msgid "Value between 1-5 (higher value, more CPU load)"
1450
  msgstr "Wähle zwischen 1-5 (je höhere desto länger braucht der Server)"
1451
 
1452
+ #: ../admin/settings.php:215
1453
  msgid "Image settings"
1454
  msgstr "Bild Einstellungen"
1455
 
1456
+ #: ../admin/settings.php:222
1457
  msgid "Resize Images"
1458
  msgstr "Bilder verkleinern"
1459
 
1460
+ #: ../admin/settings.php:226
1461
  msgid "Width x height (in pixel). NextGEN Gallery will keep ratio size"
1462
  msgstr "Breite x Höhe (in Pixel). NextGEN Galerie beachtet das Seitenverhältnis."
1463
 
1464
+ #: ../admin/settings.php:229
1465
  msgid "Image quality"
1466
  msgstr "Bild Qualität"
1467
 
1468
+ #: ../admin/settings.php:240
1469
+ msgid "Single picture"
1470
+ msgstr "Einzelbilder"
1471
+
1472
+ #: ../admin/settings.php:243
1473
+ msgid "Cache single pictures"
1474
+ msgstr "Nutze Cache für Einzelbidler"
1475
+
1476
+ #: ../admin/settings.php:246
1477
+ msgid "Creates a file for each singlepic settings. Reduce the CPU load"
1478
+ msgstr "Erstellt ein Cache-Bild für jedes Einzelbild (singlepic). Reduziert die CPU Belastung."
1479
+
1480
+ #: ../admin/settings.php:249
1481
+ msgid "Clear cache folder"
1482
+ msgstr "Lösche Cache Verzeichnis"
1483
+
1484
+ #: ../admin/settings.php:251
1485
+ msgid "Proceed now"
1486
+ msgstr "Jetzt durchführen"
1487
+
1488
+ #: ../admin/settings.php:262
1489
  msgid "Gallery settings"
1490
  msgstr "Galerie Einstellungen"
1491
 
1492
+ #: ../admin/settings.php:269
1493
  msgid "Activate jQuery navigation"
1494
  msgstr "Aktiviere jQuery Navigation"
1495
 
1496
+ #: ../admin/settings.php:271
1497
  msgid "Please note : This is still experimental. Requires the Thickbox effect"
1498
  msgstr "Bitte beachten : Diese Funktion befindet sich noch im Teststadium. Geht nur mit Thickbox."
1499
 
1500
+ #: ../admin/settings.php:275
1501
  msgid "Deactivate gallery page link"
1502
  msgstr "Keine Seitenverzweigung"
1503
 
1504
+ #: ../admin/settings.php:277
1505
  msgid "The album will not link to a gallery subpage. The gallery is shown on the same page."
1506
  msgstr "Ein Album benötigt dann keinen Link zur Seite. Die Galerie wird direkt angezeigt."
1507
 
1508
+ #: ../admin/settings.php:281
1509
  msgid "Number of images per page"
1510
  msgstr "Anzahl der Bilder pro Seite"
1511
 
1512
+ #: ../admin/settings.php:283
1513
  msgid "0 will disable pagination, all images on one page"
1514
  msgstr "0 schaltet Blätterfunktion ab ( = alle Bilder auf einer Seite )"
1515
 
1516
+ #: ../admin/settings.php:287
1517
  msgid "Integrate slideshow"
1518
  msgstr "Slideshow verwenden"
1519
 
1520
+ #: ../admin/settings.php:294
1521
  msgid "Show first"
1522
  msgstr "Zeige als Erstes"
1523
 
1524
+ #: ../admin/settings.php:300
1525
  msgid "Show thumbnail description"
1526
  msgstr "Zeige Bildbeschreibung"
1527
 
1528
+ #: ../admin/settings.php:301
1529
+ #: ../admin/settings.php:349
1530
+ #: ../admin/js/uploadtab.js.php:117
1531
  msgid "None"
1532
  msgstr "Keiner"
1533
 
1534
+ #: ../admin/settings.php:302
1535
  msgid "Description text"
1536
  msgstr "Beschreibung"
1537
 
1538
+ #: ../admin/settings.php:303
1539
+ #: ../admin/settings.php:319
1540
  msgid "Alt / Title text"
1541
  msgstr "Alt / Titel Text"
1542
 
1543
+ #: ../admin/settings.php:307
1544
  msgid "Show ImageBrowser"
1545
  msgstr "Zeige Bilder Browser"
1546
 
1547
+ #: ../admin/settings.php:309
1548
  msgid "The gallery will open the ImageBrowser instead the effect."
1549
  msgstr "Es wird der Bilder Browser angezeigt (Kein JavaScript Effekt)"
1550
 
1551
+ #: ../admin/settings.php:313
1552
  msgid "Sort options"
1553
  msgstr "Sortierung"
1554
 
1555
+ #: ../admin/settings.php:316
1556
  msgid "Sort thumbnails"
1557
  msgstr "Thumbnails sortieren"
1558
 
1559
+ #: ../admin/settings.php:317
1560
  msgid "Image ID"
1561
  msgstr "Bilder ID"
1562
 
1563
+ #: ../admin/settings.php:323
1564
  msgid "Sort direction"
1565
  msgstr "Sortierreihenfolge"
1566
 
1567
+ #: ../admin/settings.php:324
1568
  msgid "Ascending"
1569
  msgstr "Aufsteigend"
1570
 
1571
+ #: ../admin/settings.php:325
1572
  msgid "Descending"
1573
  msgstr "Absteigend"
1574
 
1575
+ #: ../admin/settings.php:341
1576
  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."
1577
  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)."
1578
 
1579
+ #: ../admin/settings.php:342
1580
  msgid "With the placeholder"
1581
  msgstr "Mit Platzhalter"
1582
 
1583
+ #: ../admin/settings.php:342
1584
  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."
1585
  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."
1586
 
1587
+ #: ../admin/settings.php:346
1588
  msgid "JavaScript Thumbnail effect"
1589
  msgstr "JavaScript Thumbnail Effekt"
1590
 
1591
+ #: ../admin/settings.php:350
1592
  msgid "Thickbox"
1593
  msgstr "Thickbox"
1594
 
1595
+ #: ../admin/settings.php:351
1596
  msgid "Lightbox"
1597
  msgstr "Lightbox"
1598
 
1599
+ #: ../admin/settings.php:352
1600
  msgid "Highslide"
1601
  msgstr "Highslide"
1602
 
1603
+ #: ../admin/settings.php:353
1604
+ msgid "Shutter"
1605
+ msgstr "Shutter"
1606
+
1607
+ #: ../admin/settings.php:354
1608
  msgid "Custom"
1609
  msgstr "Eigener"
1610
 
1611
+ #: ../admin/settings.php:359
1612
  msgid "Link Code line"
1613
  msgstr "Link Code Zeile"
1614
 
1615
+ #: ../admin/settings.php:367
1616
  msgid "Select loading image"
1617
  msgstr "Wähle Ladeanimation"
1618
 
1619
+ #: ../admin/settings.php:391
1620
  msgid "Please note : You can only activate the watermark under -> Manage Gallery . This action cannot be undone."
1621
  msgstr "Bitte beachten : Das Wasserzeichen kann nur unter der Galerieverwaltung gesetzt werden. "
1622
 
1623
+ #: ../admin/settings.php:396
1624
  msgid "Preview"
1625
  msgstr "Vorschau"
1626
 
1627
+ #: ../admin/settings.php:398
1628
+ #: ../admin/settings.php:402
1629
  msgid "Position"
1630
  msgstr "Position"
1631
 
1632
+ #: ../admin/settings.php:422
1633
  msgid "Offset"
1634
  msgstr "Abstand"
1635
 
1636
+ #: ../admin/settings.php:440
1637
  msgid "Use image as watermark"
1638
  msgstr "Benutze Bild als Wasserzeichen"
1639
 
1640
+ #: ../admin/settings.php:443
1641
  msgid "URL to file"
1642
  msgstr "URL zur Datei"
1643
 
1644
+ #: ../admin/settings.php:445
1645
  msgid "The accessing of URL files is disabled at your server (allow_url_fopen)"
1646
  msgstr "Der Dateizugriff von URL's ist auf diesem Server deaktiviert (allow_url_fopen)"
1647
 
1648
+ #: ../admin/settings.php:451
1649
  msgid "Use text as watermark"
1650
  msgstr "Benutze Text als Wasserzeichen"
1651
 
1652
+ #: ../admin/settings.php:454
1653
  msgid "Font"
1654
  msgstr "Schriftart"
1655
 
1656
+ #: ../admin/settings.php:463
1657
+ msgid "This function will not work, cause you need the FreeType library"
1658
+ msgstr "Diese Funktion benötigt die FreeType Bibliothek"
1659
+
1660
+ #: ../admin/settings.php:465
1661
  msgid "You can upload more fonts in the folder <strong>nggallery/fonts</strong>"
1662
  msgstr "Du kannst mehr Schriftarten in das Verzeichniss <strong>nggallery/fonts</strong> hochladen."
1663
 
1664
+ #: ../admin/settings.php:469
1665
  msgid "Size"
1666
  msgstr "Größe"
1667
 
1668
+ #: ../admin/settings.php:473
1669
  msgid "Color"
1670
  msgstr "Farbe"
1671
 
1672
+ #: ../admin/settings.php:475
1673
  msgid "(hex w/o #)"
1674
  msgstr "(hex w/o #)"
1675
 
1676
+ #: ../admin/settings.php:478
1677
  msgid "Text"
1678
  msgstr "Text"
1679
 
1680
+ #: ../admin/settings.php:482
1681
  msgid "Opaque"
1682
  msgstr "Transparenz"
1683
 
1684
+ #: ../admin/settings.php:500
1685
  msgid "The imagerotator.swf is not in the nggallery folder, the slideshow will not work."
1686
  msgstr "Die Datei imagerotator.swf ist nicht im Plugin Verzeichniss -> so wird die Slideshow nicht funktionieren."
1687
 
1688
+ #: ../admin/settings.php:501
1689
  msgid "The settings are used in the JW Image Rotator Version 3.9 ."
1690
  msgstr "Die Einstellungen werden im JW Image Rotator Version 3.9 benutzt."
1691
 
1692
+ #: ../admin/settings.php:502
1693
  msgid "See more information for the Flash Player on the web page"
1694
  msgstr "Weitere Informationen auf der Flash Player Homepage"
1695
 
1696
+ #: ../admin/settings.php:505
1697
  msgid "Default size (W x H)"
1698
  msgstr "Standard Größe (B x H)"
1699
 
1700
+ #: ../admin/settings.php:510
1701
  msgid "Shuffle mode"
1702
  msgstr "Shuffle Modus"
1703
 
1704
+ #: ../admin/settings.php:514
1705
  msgid "Show next image on click"
1706
  msgstr "Zeige nächstes Bild bei Klick"
1707
 
1708
+ #: ../admin/settings.php:518
1709
  msgid "Show navigation bar"
1710
  msgstr "Zeige Navigations-Leiste"
1711
 
1712
+ #: ../admin/settings.php:522
1713
  msgid "Show loading icon"
1714
  msgstr "Zeige Lade-Bildchen"
1715
 
1716
+ #: ../admin/settings.php:526
1717
  msgid "Use watermark logo"
1718
  msgstr "Wasserzeichen anzeigen"
1719
 
1720
+ #: ../admin/settings.php:528
1721
  msgid "You can change the logo at the watermark settings"
1722
  msgstr "Du kannst den Pfad in Einstellungen für da Wasserzeichen angeben"
1723
 
1724
+ #: ../admin/settings.php:531
1725
  msgid "Stretch image"
1726
  msgstr "Bild dehnen"
1727
 
1728
+ #: ../admin/settings.php:534
1729
  msgid "true"
1730
  msgstr "Ja"
1731
 
1732
+ #: ../admin/settings.php:535
1733
  msgid "false"
1734
  msgstr "Nein"
1735
 
1736
+ #: ../admin/settings.php:536
1737
  msgid "fit"
1738
  msgstr "Passend"
1739
 
1740
+ #: ../admin/settings.php:537
1741
+ msgid "none"
1742
+ msgstr "keiner"
1743
+
1744
+ #: ../admin/settings.php:542
1745
  msgid "Duration time"
1746
  msgstr "Dauer"
1747
 
1748
+ #: ../admin/settings.php:543
1749
  msgid "sec."
1750
  msgstr "Sek."
1751
 
1752
+ #: ../admin/settings.php:546
1753
  msgid "Transition / Fade effect"
1754
  msgstr "Fade Effekt"
1755
 
1756
+ #: ../admin/settings.php:549
1757
  msgid "fade"
1758
  msgstr "Fade"
1759
 
1760
+ #: ../admin/settings.php:550
1761
  msgid "bgfade"
1762
  msgstr "BGFade"
1763
 
1764
+ #: ../admin/settings.php:551
1765
  msgid "slowfade"
1766
  msgstr "Slowfade"
1767
 
1768
+ #: ../admin/settings.php:552
1769
  msgid "circles"
1770
  msgstr "Kreise"
1771
 
1772
+ #: ../admin/settings.php:553
1773
  msgid "bubbles"
1774
  msgstr "Blasen"
1775
 
1776
+ #: ../admin/settings.php:554
1777
  msgid "blocks"
1778
  msgstr "Blöcke"
1779
 
1780
+ #: ../admin/settings.php:555
1781
  msgid "fluids"
1782
  msgstr "Fluids"
1783
 
1784
+ #: ../admin/settings.php:556
1785
  msgid "flash"
1786
  msgstr "Flash"
1787
 
1788
+ #: ../admin/settings.php:557
1789
  msgid "lines"
1790
  msgstr "Linien"
1791
 
1792
+ #: ../admin/settings.php:562
 
 
 
 
1793
  msgid "Use slow zooming effect"
1794
  msgstr "nutze Zoom Effekt"
1795
 
1796
+ #: ../admin/settings.php:566
1797
  msgid "Background Color"
1798
  msgstr "Hintergrund (BG) Farbe"
1799
 
1800
+ #: ../admin/settings.php:571
1801
  msgid "Texts / Buttons Color"
1802
  msgstr "Text- / Button Farbe"
1803
 
1804
+ #: ../admin/settings.php:576
1805
  msgid "Rollover / Active Color"
1806
  msgstr "Rollover / Aktiv (Link) Farbe"
1807
 
1808
+ #: ../admin/settings.php:581
1809
  msgid "Background music (URL)"
1810
  msgstr "Hintergrundmusik (URL)"
1811
 
1812
+ #: ../admin/settings.php:585
1813
  msgid "Try XHTML validation (with CDATA)"
1814
  msgstr "Integriere XHTML Validierung (mittels CDATA)"
1815
 
1816
+ #: ../admin/settings.php:587
1817
  msgid "Important : Could causes problem at some browser. Please recheck your page."
1818
  msgstr "Wichtig : Es könnnten Probleme bei einigen Browser auftauchen. Unbedingt Seite prüfen."
1819
 
1847
  "\\n"
1848
  "Wähle [Cancel] um abzubrechen, [OK] zum Durchführen.\\n"
1849
 
1850
+ #: ../admin/setup.php:55
1851
  msgid "Uninstall plugin tables"
1852
  msgstr "Plugin Tabellen (DB) entfernen"
1853
 
1854
+ #: ../admin/setup.php:58
1855
  msgid "You don't like NextGEN Gallery ?"
1856
  msgstr "Du magst die NextGEN Galerie nicht ?"
1857
 
1858
+ #: ../admin/setup.php:59
1859
  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. "
1860
  msgstr "Null Problemo. Einfach nur vor dem Deaktivieren dieses Plugins den Uninstall-Button betätigen damit alle Tabellen der Galerie entfernt werden."
1861
 
1862
+ #: ../admin/setup.php:60
1863
  msgid "WARNING:"
1864
  msgstr "WARNUNG:"
1865
 
1866
+ #: ../admin/setup.php:61
1867
  msgid "Once uninstalled, this cannot be undone. You should use a Database Backup plugin of WordPress to backup all the tables first. NextGEN gallery is stored in the tables"
1868
  msgstr "Einmal deinstalliert -> keine Rückgängigmachung! D.h. auf Deutsch, das eine einmalig durchgeführte Deinstallation nicht mehr rückgängig gemacht werden kann da alle Tabellen der Galerie aus der Datenbank entfernt werden und KEIN Backup dieser Galerie-Tabellen angelegt wird währenddessen."
1869
 
1870
+ #: ../admin/setup.php:61
1871
  msgid "and"
1872
  msgstr "und"
1873
 
1874
+ #: ../admin/setup.php:63
1875
  msgid "Uninstall plugin"
1876
  msgstr "Plugin deinstallieren"
1877
 
1878
+ #: ../admin/setup.php:63
1879
  msgid ""
1880
  "You are about to Uninstall this plugin from WordPress.\\n"
1881
  "This action is not reversible.\\n"
1887
  "\\n"
1888
  "Wähle [Cancel] zum Abbrechen, [OK] zum Deinstallieren.\\n"
1889
 
1890
+ #: ../admin/showmeta.php:7
1891
+ #: ../admin/showmeta.php:10
1892
+ msgid "Cheatin&#8217; uh?"
1893
+ msgstr "Cheatin&#8217; uh?"
1894
+
1895
+ #: ../admin/showmeta.php:42
1896
+ msgid "EXIF Data"
1897
+ msgstr "EXIF Daten"
1898
+
1899
+ #: ../admin/showmeta.php:47
1900
+ #: ../admin/showmeta.php:71
1901
+ #: ../admin/showmeta.php:95
1902
+ msgid "Tag"
1903
+ msgstr "Stichwort"
1904
+
1905
+ #: ../admin/showmeta.php:48
1906
+ #: ../admin/showmeta.php:72
1907
+ #: ../admin/showmeta.php:96
1908
+ msgid "Value"
1909
+ msgstr "Wert"
1910
+
1911
+ #: ../admin/showmeta.php:61
1912
+ msgid "No exif data"
1913
+ msgstr "Keine Exif Daten"
1914
+
1915
+ #: ../admin/showmeta.php:67
1916
+ msgid "IPTC Data"
1917
+ msgstr "IPTC Daten"
1918
+
1919
+ #: ../admin/showmeta.php:91
1920
+ msgid "XMP Data"
1921
+ msgstr "XMP Daten"
1922
+
1923
  #: ../admin/style.php:34
1924
  msgid "You do not have sufficient permissions to edit templates for this blog."
1925
  msgstr "Du hast nicht die benötigten Rechte um Templates in diesem Blog zu bearbeiten."
1936
  msgid "Activate"
1937
  msgstr "Aktiviere"
1938
 
1939
+ #: ../admin/style.php:93
1940
  #, php-format
1941
  msgid "Editing <strong>%s</strong>"
1942
  msgstr "Bearbeite <strong>%s</strong>"
1943
 
1944
+ #: ../admin/style.php:95
1945
  #, php-format
1946
  msgid "Browsing <strong>%s</strong>"
1947
  msgstr "Browse <strong>%s</strong>"
1948
 
1949
+ #: ../admin/style.php:100
1950
+ #: ../lib/nggmeta.lib.php:374
1951
  msgid "Author"
1952
  msgstr "Autor"
1953
 
1954
+ #: ../admin/style.php:101
1955
  msgid "Version"
1956
  msgstr "Version"
1957
 
1958
+ #: ../admin/style.php:118
1959
  msgid "Update File &raquo;"
1960
  msgstr "Datei aktualisieren"
1961
 
1962
+ #: ../admin/style.php:122
1963
  msgid "If this file were writable you could edit it."
1964
  msgstr "Wenn diese Datei beschreibbar wäre, könntest Du sie bearbeiten."
1965
 
1966
+ #: ../admin/style.php:127
1967
  msgid "Oops, no such file exists! Double check the name and try again, merci."
1968
  msgstr "Oha, eine solche Datei existiert nicht! Bitte überprüfe den Namen und probiere es erneut, danke."
1969
 
1970
+ #: ../admin/uploadtab.php:105
1971
+ msgid "Select a gallery"
1972
+ msgstr "Wähle Galerie"
1973
+
1974
+ #: ../admin/uploadtab.php:107
1975
+ #: ../tinymce/window.php:49
1976
+ msgid "No gallery"
1977
+ msgstr "Keine Galerie"
1978
+
1979
+ #: ../admin/uploadtab.php:172
1980
+ #: ../admin/js/uploadtab.js.php:166
1981
+ msgid "URL"
1982
+ msgstr "URL"
1983
+
1984
+ #: ../admin/uploadtab.php:185
1985
+ #: ../admin/js/uploadtab.js.php:174
1986
+ msgid "Delete File"
1987
+ msgstr "Datei löschen"
1988
+
1989
+ #: ../admin/uploadtab.php:185
1990
+ msgid "Delete image ?"
1991
+ msgstr "Bilder löschen ?"
1992
+
1993
+ #: ../admin/wpmu.php:41
1994
+ msgid "General WordPress MU Settings"
1995
+ msgstr "WordPress MU Einstellungen"
1996
+
1997
+ #: ../admin/wpmu.php:50
1998
+ 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 /."
1999
+ msgstr "Dieses ist der Default Pfad für alle Blogs. Mit dem Platzhalter %BLOG_ID% wird die Ordnerstruktur gesteuert. Der Pfad muss mit / enden."
2000
+
2001
+ #: ../admin/wpmu.php:53
2002
+ msgid "Enable upload quota check"
2003
+ msgstr "Schalte die Uploadbegrenzung ein"
2004
+
2005
+ #: ../admin/wpmu.php:55
2006
+ msgid "Should work if the gallery is bellow the blog.dir"
2007
+ msgstr "Sollte funktionieren wenn die Galerien sich unterhalb blog.dir befinden"
2008
+
2009
+ #: ../admin/wpmu.php:59
2010
+ msgid "Enable zip upload option"
2011
+ msgstr "Erlaube ZIP-Upload"
2012
+
2013
+ #: ../admin/wpmu.php:61
2014
+ msgid "Allow users to upload zip folders."
2015
+ msgstr "Erlaubt die Nutzung des ZIP-Upload"
2016
+
2017
+ #: ../admin/wpmu.php:65
2018
+ msgid "Enable style selection"
2019
+ msgstr "Freie CSS Style Auswahl"
2020
+
2021
+ #: ../admin/wpmu.php:67
2022
+ msgid "Allow users to choose a style for the gallery."
2023
+ msgstr "Erlaube dem User ein CSS für die Galerie zu wählen"
2024
+
2025
+ #: ../admin/wpmu.php:71
2026
+ msgid "Enable roles/capabilities"
2027
+ msgstr "Rollen / Zugriffsrechte freischalten"
2028
+
2029
+ #: ../admin/wpmu.php:73
2030
+ msgid "Allow users to change the roles for other blog authors."
2031
+ msgstr "Erlaube dem User die Anpassung der Zugangsberechtigung"
2032
+
2033
+ #: ../admin/wpmu.php:77
2034
+ msgid "Default style"
2035
+ msgstr "Standard CSS-Style"
2036
+
2037
+ #: ../admin/wpmu.php:94
2038
+ msgid "Choose the default style for the galleries."
2039
+ msgstr "Wähle das Default-Stylesheet für die Galerien"
2040
+
2041
+ #: ../admin/js/uploadtab.js.php:86
2042
+ #: ../admin/js/uploadtab.js.php:88
2043
+ #: ../admin/js/uploadtab.js.php:149
2044
+ #: ../admin/js/uploadtab.js.php:151
2045
  msgid "Browse your files"
2046
  msgstr "Durchsuche deine Dateien"
2047
 
2048
+ #: ../admin/js/uploadtab.js.php:86
2049
+ #: ../admin/js/uploadtab.js.php:88
2050
+ #: ../admin/js/uploadtab.js.php:149
2051
+ #: ../admin/js/uploadtab.js.php:151
2052
  msgid "&laquo; Back"
2053
  msgstr "&laquo; Zurück"
2054
 
2055
+ #: ../admin/js/uploadtab.js.php:97
2056
+ #: ../admin/js/uploadtab.js.php:160
2057
  msgid "Direct link to file"
2058
  msgstr "Link zur Datei"
2059
 
2060
+ #: ../admin/js/uploadtab.js.php:107
2061
  msgid "Full size"
2062
  msgstr "Volle Größe"
2063
 
2064
+ #: ../admin/js/uploadtab.js.php:110
2065
  msgid "Show:"
2066
  msgstr "Zeige als:"
2067
 
2068
+ #: ../admin/js/uploadtab.js.php:115
2069
  msgid "Link to:"
2070
  msgstr "Link zu:"
2071
 
2072
+ #: ../admin/js/uploadtab.js.php:116
2073
  msgid "File"
2074
  msgstr "Datei"
2075
 
2076
+ #: ../admin/js/uploadtab.js.php:121
2077
  msgid "Send to editor &raquo;"
2078
  msgstr "Zum Editor schicken &raquo;"
2079
 
2080
+ #: ../admin/js/uploadtab.js.php:156
2081
+ #: ../tinymce/window.php:150
2082
+ msgid "Insert"
2083
+ msgstr "Einfügen"
2084
+
2085
+ #: ../admin/js/uploadtab.js.php:180
2086
  msgid "Save &raquo;"
2087
  msgstr "Speichern &raquo;"
2088
 
2089
+ #: ../admin/js/uploadtab.js.php:259
2090
  #, php-format
2091
  msgid ""
2092
  "Are you sure you want to delete the file '%s'?\n"
2093
  "Click ok to delete or cancel to go back."
2094
  msgstr "Bist du sicher das Du diese Datei '%s' löschen willst ?"
2095
 
2096
+ #: ../lib/nggmeta.lib.php:83
2097
+ msgid " mm"
2098
+ msgstr " mm"
2099
+
2100
+ #: ../lib/nggmeta.lib.php:89
2101
+ msgid " sec"
2102
+ msgstr " Sek."
2103
+
2104
+ #: ../lib/nggmeta.lib.php:364
2105
+ msgid "Aperture"
2106
+ msgstr "Blende"
2107
+
2108
+ #: ../lib/nggmeta.lib.php:365
2109
+ #: ../lib/nggmeta.lib.php:390
2110
+ msgid "Credit"
2111
+ msgstr "Autor"
2112
+
2113
+ #: ../lib/nggmeta.lib.php:366
2114
+ msgid "Camera"
2115
+ msgstr "Kamera"
2116
+
2117
+ #: ../lib/nggmeta.lib.php:367
2118
+ msgid "Caption"
2119
+ msgstr "Beschreibung"
2120
+
2121
+ #: ../lib/nggmeta.lib.php:368
2122
+ msgid "Date/Time"
2123
+ msgstr "Datum/Zeit"
2124
+
2125
+ #: ../lib/nggmeta.lib.php:369
2126
+ msgid "Copyright"
2127
+ msgstr "Rechte"
2128
+
2129
+ #: ../lib/nggmeta.lib.php:370
2130
+ msgid "Focal length"
2131
+ msgstr "Brennweite"
2132
+
2133
+ #: ../lib/nggmeta.lib.php:371
2134
+ msgid "ISO"
2135
+ msgstr "ISO"
2136
+
2137
+ #: ../lib/nggmeta.lib.php:372
2138
+ msgid "Shutter speed"
2139
+ msgstr "Belichtungszeit"
2140
+
2141
+ #: ../lib/nggmeta.lib.php:376
2142
+ msgid "Subject"
2143
+ msgstr "Betreff"
2144
+
2145
+ #: ../lib/nggmeta.lib.php:377
2146
+ msgid "Make"
2147
+ msgstr "Hersteller"
2148
+
2149
+ #: ../lib/nggmeta.lib.php:378
2150
+ msgid "Edit Status"
2151
+ msgstr "Ändere Status"
2152
+
2153
+ #: ../lib/nggmeta.lib.php:379
2154
+ msgid "Category"
2155
+ msgstr "Kategorie"
2156
+
2157
+ #: ../lib/nggmeta.lib.php:380
2158
+ msgid "Keywords"
2159
+ msgstr "Schlüsselwörter"
2160
+
2161
+ #: ../lib/nggmeta.lib.php:381
2162
+ msgid "Date Created"
2163
+ msgstr "erstellt (Datum)"
2164
+
2165
+ #: ../lib/nggmeta.lib.php:382
2166
+ msgid "Time Created"
2167
+ msgstr "erstellt (Zeit)"
2168
+
2169
+ #: ../lib/nggmeta.lib.php:383
2170
+ msgid "Author Position"
2171
+ msgstr "Autor Position"
2172
+
2173
+ #: ../lib/nggmeta.lib.php:384
2174
+ msgid "City"
2175
+ msgstr "Stadt"
2176
+
2177
+ #: ../lib/nggmeta.lib.php:385
2178
+ msgid "Location"
2179
+ msgstr "Ort"
2180
+
2181
+ #: ../lib/nggmeta.lib.php:386
2182
+ msgid "Province/State"
2183
+ msgstr "Staat / PLZ"
2184
+
2185
+ #: ../lib/nggmeta.lib.php:387
2186
+ msgid "Country code"
2187
+ msgstr "Landescode"
2188
+
2189
+ #: ../lib/nggmeta.lib.php:388
2190
+ msgid "Country"
2191
+ msgstr "Land"
2192
+
2193
+ #: ../lib/nggmeta.lib.php:389
2194
+ msgid "Headline"
2195
+ msgstr "Kopfzeile"
2196
+
2197
+ #: ../lib/nggmeta.lib.php:391
2198
+ msgid "Source"
2199
+ msgstr "Quelle"
2200
+
2201
+ #: ../lib/nggmeta.lib.php:392
2202
+ msgid "Copyright Notice"
2203
+ msgstr "Copyright Hinweise / Credits"
2204
+
2205
+ #: ../lib/nggmeta.lib.php:393
2206
+ msgid "Contact"
2207
+ msgstr "Kontakt"
2208
+
2209
+ #: ../lib/nggmeta.lib.php:394
2210
+ msgid "Last modified"
2211
+ msgstr "Zuletzt geändert"
2212
+
2213
+ #: ../lib/nggmeta.lib.php:395
2214
+ msgid "Program tool"
2215
+ msgstr "Programm"
2216
+
2217
+ #: ../lib/nggmeta.lib.php:396
2218
+ msgid "Format"
2219
+ msgstr "Format"
2220
+
2221
+ #: ../tinymce/window.php:47
2222
+ msgid "Select gallery"
2223
+ msgstr "Wähle Galerie"
2224
+
2225
+ #: ../tinymce/window.php:61
2226
+ #: ../tinymce/window.php:88
2227
+ msgid "Show as"
2228
+ msgstr "Zeige als"
2229
+
2230
+ #: ../tinymce/window.php:62
2231
+ msgid "Image list"
2232
+ msgstr "Bilder-Liste"
2233
+
2234
+ #: ../tinymce/window.php:76
2235
+ msgid "No album"
2236
+ msgstr "Kein Album"
2237
+
2238
+ #: ../tinymce/window.php:89
2239
+ msgid "Extended version"
2240
+ msgstr "Erweiterte Version"
2241
+
2242
+ #: ../tinymce/window.php:90
2243
+ msgid "Compact version"
2244
+ msgstr "Kompakte Version"
2245
+
2246
+ #: ../tinymce/window.php:101
2247
+ msgid "Select picture"
2248
+ msgstr "Wähle Bild"
2249
+
2250
+ #: ../tinymce/window.php:103
2251
+ msgid "No picture"
2252
+ msgstr "Kein Bild"
2253
+
2254
+ #: ../tinymce/window.php:115
2255
+ msgid "Width x Height"
2256
+ msgstr "Breite x Höhe"
2257
+
2258
+ #: ../tinymce/window.php:119
2259
+ msgid "Effect"
2260
+ msgstr "Effekt"
2261
+
2262
+ #: ../tinymce/window.php:122
2263
+ msgid "No effect"
2264
+ msgstr "Kein Effekt"
2265
+
2266
+ #: ../tinymce/window.php:124
2267
+ msgid "Web 2.0"
2268
+ msgstr "Web 2.0"
2269
+
2270
+ #: ../tinymce/window.php:129
2271
+ msgid "Float"
2272
+ msgstr "Float"
2273
+
2274
+ #: ../tinymce/window.php:132
2275
+ msgid "No float"
2276
+ msgstr "Kein Float"
2277
+
2278
+ #: ../tinymce/window.php:133
2279
+ msgid "Left"
2280
+ msgstr "Links"
2281
+
2282
+ #: ../tinymce/window.php:134
2283
+ msgid "Right"
2284
+ msgstr "Rechts"
2285
+
lang/nggallery.po CHANGED
@@ -2,7 +2,7 @@ msgid ""
2
  msgstr ""
3
  "Project-Id-Version: NextGEN Gallery\n"
4
  "POT-Creation-Date: \n"
5
- "PO-Revision-Date: 2007-12-01 13:11+0100\n"
6
  "Last-Translator: Alex Rabe\n"
7
  "Language-Team: Alex Rabe\n"
8
  "MIME-Version: 1.0\n"
@@ -15,328 +15,150 @@ msgstr ""
15
  "X-Poedit-SearchPath-0: .\n"
16
  "X-Poedit-SearchPath-1: ..\n"
17
 
18
- #: ../nggadmintab.php:65
19
- msgid "Select a gallery"
20
- msgstr ""
21
-
22
- #: ../nggadmintab.php:67
23
- #: ../nggbutton.php:50
24
- msgid "No gallery"
25
- msgstr ""
26
-
27
- #: ../nggadmintab.php:132
28
- #: ../js/nggadmintab-js.php:161
29
- msgid "URL"
30
- msgstr ""
31
-
32
- #: ../nggadmintab.php:136
33
- #: ../admin/manage.php:541
34
- #: ../js/nggadmintab-js.php:164
35
- msgid "Alt &amp; Title Text"
36
- msgstr ""
37
-
38
- #: ../nggadmintab.php:140
39
- #: ../admin/manage.php:291
40
- #: ../admin/manage.php:467
41
- #: ../admin/manage.php:540
42
- #: ../admin/myimport.php:52
43
- #: ../admin/style.php:101
44
- #: ../js/nggadmintab-js.php:167
45
- msgid "Description"
46
- msgstr ""
47
-
48
- #: ../nggadmintab.php:145
49
- #: ../js/nggadmintab-js.php:169
50
- msgid "Delete File"
51
- msgstr ""
52
-
53
- #: ../nggadmintab.php:145
54
- msgid "Delete image ?"
55
  msgstr ""
56
 
57
- #: ../nggadmintab.php:153
58
- msgid "Save"
 
59
  msgstr ""
60
 
61
- #: ../nggallery.php:176
62
- #: ../nggbutton.php:36
63
- #: ../admin/addgallery.php:238
64
- #: ../admin/addgallery.php:242
65
- #: ../admin/addgallery.php:306
66
- #: ../admin/admin.php:47
67
- #: ../admin/manage.php:64
68
- #: ../admin/manage.php:436
69
- #: ../admin/settings.php:86
70
- msgid "Gallery"
71
  msgstr ""
72
 
73
- #: ../nggallery.php:265
74
- msgid "Sorry, NextGEN Gallery works only under WordPress 2.1 or higher"
75
  msgstr ""
76
 
77
- #: ../nggbutton.php:37
78
- #: ../admin/admin.php:50
79
- msgid "Album"
80
  msgstr ""
81
 
82
- #: ../nggbutton.php:38
83
- #: ../nggfunctions.php:524
84
  #: ../admin/manage.php:85
 
85
  msgid "Picture"
86
  msgstr ""
87
 
88
- #: ../nggbutton.php:48
89
- msgid "Select gallery"
90
- msgstr ""
91
-
92
- #: ../nggbutton.php:62
93
- #: ../nggbutton.php:89
94
- msgid "Show as"
95
- msgstr ""
96
-
97
- #: ../nggbutton.php:63
98
- msgid "Image list"
99
- msgstr ""
100
-
101
- #: ../nggbutton.php:64
102
- #: ../admin/settings.php:89
103
- #: ../admin/settings.php:256
104
- #: ../admin/settings.php:456
105
- msgid "Slideshow"
106
- msgstr ""
107
-
108
- #: ../nggbutton.php:75
109
- #: ../admin/album.php:123
110
- msgid "Select album"
111
- msgstr ""
112
-
113
- #: ../nggbutton.php:77
114
- msgid "No album"
115
- msgstr ""
116
-
117
- #: ../nggbutton.php:90
118
- msgid "Extended version"
119
- msgstr ""
120
-
121
- #: ../nggbutton.php:91
122
- msgid "Compact version"
123
- msgstr ""
124
-
125
- #: ../nggbutton.php:102
126
- msgid "Select picture"
127
- msgstr ""
128
-
129
- #: ../nggbutton.php:104
130
- msgid "No picture"
131
- msgstr ""
132
-
133
- #: ../nggbutton.php:116
134
- msgid "Width x Height"
135
- msgstr ""
136
-
137
- #: ../nggbutton.php:120
138
- msgid "Effect"
139
- msgstr ""
140
-
141
- #: ../nggbutton.php:123
142
- msgid "No effect"
143
- msgstr ""
144
-
145
- #: ../nggbutton.php:124
146
- #: ../admin/settings.php:88
147
- #: ../admin/settings.php:350
148
- msgid "Watermark"
149
- msgstr ""
150
-
151
- #: ../nggbutton.php:125
152
- msgid "Web 2.0"
153
- msgstr ""
154
-
155
- #: ../nggbutton.php:130
156
- msgid "Float"
157
- msgstr ""
158
-
159
- #: ../nggbutton.php:133
160
- msgid "No float"
161
- msgstr ""
162
-
163
- #: ../nggbutton.php:134
164
- msgid "Left"
165
- msgstr ""
166
-
167
- #: ../nggbutton.php:135
168
- msgid "Right"
169
- msgstr ""
170
-
171
- #: ../nggbutton.php:147
172
- #: ../admin/manage.php:609
173
- msgid "Cancel"
174
- msgstr ""
175
-
176
- #: ../nggbutton.php:151
177
- #: ../js/nggadmintab-js.php:151
178
- msgid "Insert"
179
- msgstr ""
180
-
181
- #: ../nggfunctions.php:427
182
- #: ../nggfunctions.php:442
183
- msgid "Watch gallery"
184
- msgstr ""
185
-
186
- #: ../nggfunctions.php:436
187
- #: ../nggfunctions.php:448
188
- #: ../nggfunctions.php:702
189
- msgid "Photos"
190
- msgstr ""
191
-
192
- #: ../nggfunctions.php:517
193
- msgid "Back"
194
  msgstr ""
195
 
196
- #: ../nggfunctions.php:521
197
- msgid "Next"
198
  msgstr ""
199
 
200
- #: ../nggfunctions.php:524
201
- msgid "from"
202
  msgstr ""
203
 
204
- #: ../nggfunctions.php:671
205
- msgid "Overview"
206
  msgstr ""
207
 
208
- #: ../ngginstall.php:157
209
  msgid "[Show as slideshow]"
210
  msgstr ""
211
 
212
- #: ../ngginstall.php:158
213
  msgid "[Show picture list]"
214
  msgstr ""
215
 
216
- #: ../nggwidget.php:148
217
  msgid "Title:"
218
  msgstr ""
219
 
220
- #: ../nggwidget.php:149
221
  msgid "Select Gallery:"
222
  msgstr ""
223
 
224
- #: ../nggwidget.php:153
225
  msgid "All images"
226
  msgstr ""
227
 
228
- #: ../nggwidget.php:163
229
  msgid "Height:"
230
  msgstr ""
231
 
232
- #: ../nggwidget.php:164
233
  msgid "Width:"
234
  msgstr ""
235
 
236
- #: ../nggwidget.php:323
237
- msgid "NextGEN Recent Image"
238
- msgstr ""
239
-
240
- #: ../nggwidget.php:363
241
- #: ../nggwidget.php:549
242
- #: ../admin/album.php:244
243
- #: ../admin/manage.php:290
244
- #: ../admin/manage.php:448
245
- #: ../admin/myimport.php:51
246
- #: ../js/nggadmintab-js.php:104
247
- msgid "Title"
248
- msgstr ""
249
-
250
- #: ../nggwidget.php:365
251
- #: ../nggwidget.php:551
252
- msgid "Display type"
253
- msgstr ""
254
-
255
- #: ../nggwidget.php:367
256
- #: ../nggwidget.php:553
257
- #: ../admin/manage.php:537
258
- #: ../js/nggadmintab-js.php:101
259
- msgid "Thumbnail"
260
  msgstr ""
261
 
262
- #: ../nggwidget.php:368
263
- #: ../nggwidget.php:554
264
- msgid "Orginal"
265
  msgstr ""
266
 
267
- #: ../nggwidget.php:371
268
- #: ../nggwidget.php:557
269
- msgid "Number of pics"
270
  msgstr ""
271
 
272
- #: ../nggwidget.php:382
273
- #: ../nggwidget.php:568
274
- msgid "Width (px)"
275
  msgstr ""
276
 
277
- #: ../nggwidget.php:384
278
- #: ../nggwidget.php:570
279
- msgid "Height (px)"
280
  msgstr ""
281
 
282
- #: ../nggwidget.php:386
283
- #: ../nggwidget.php:572
284
- msgid "Mode"
285
  msgstr ""
286
 
287
- #: ../nggwidget.php:388
288
- #: ../nggwidget.php:574
289
- #: ../admin/settings.php:495
290
- msgid "none"
291
  msgstr ""
292
 
293
- #: ../nggwidget.php:389
294
- #: ../nggwidget.php:575
295
- msgid "web2.0"
296
  msgstr ""
297
 
298
- #: ../nggwidget.php:392
299
- #: ../nggwidget.php:578
300
- msgid "Show in the main page"
301
  msgstr ""
302
 
303
- #: ../nggwidget.php:394
304
- #: ../nggwidget.php:580
305
- msgid "yes"
306
  msgstr ""
307
 
308
- #: ../nggwidget.php:395
309
- #: ../nggwidget.php:581
310
- msgid "no"
311
  msgstr ""
312
 
313
- #: ../nggwidget.php:398
314
- #: ../nggwidget.php:584
315
- msgid "Show in"
316
  msgstr ""
317
 
318
- #: ../nggwidget.php:400
319
- #: ../nggwidget.php:586
320
- msgid "All categories"
321
  msgstr ""
322
 
323
- #: ../nggwidget.php:401
324
- #: ../nggwidget.php:587
325
  msgid "Only which are not listed"
326
  msgstr ""
327
 
328
- #: ../nggwidget.php:402
329
- #: ../nggwidget.php:588
330
  msgid "Only which are listed"
331
  msgstr ""
332
 
333
- #: ../nggwidget.php:405
334
- #: ../nggwidget.php:591
335
- msgid "Categories (id (use , to seperate)"
336
  msgstr ""
337
 
338
- #: ../nggwidget.php:511
339
- msgid "NextGEN Random Image"
340
  msgstr ""
341
 
342
  #: ../admin/about.php:9
@@ -348,505 +170,609 @@ msgid "NextGEN DEV Team"
348
  msgstr ""
349
 
350
  #: ../admin/about.php:12
351
- msgid "This plugin is a team work of a virtual developer team around the world. Follow persons take part at the development till now :"
352
- msgstr ""
353
-
354
- #: ../admin/about.php:14
355
- msgid "(Lead developer)"
356
- msgstr ""
357
-
358
- #: ../admin/about.php:15
359
- msgid "(Core AJAX developer)"
360
- msgstr ""
361
-
362
- #: ../admin/about.php:16
363
- #: ../admin/about.php:17
364
- msgid "(Core developer)"
365
  msgstr ""
366
 
367
- #: ../admin/about.php:18
368
- msgid "(Sidebar Widget developer)"
369
  msgstr ""
370
 
371
- #: ../admin/about.php:20
372
  msgid "Contributors / Tribute to"
373
  msgstr ""
374
 
375
- #: ../admin/about.php:21
376
  msgid "If you study the code of this plugin, you will find out that we mixed a lot of good already existing code and ideas together."
377
  msgstr ""
378
 
379
- #: ../admin/about.php:22
380
  msgid "So, we would like to thank the following people for their pioneer work (without this work it's impossible to create such a plugin so fast)"
381
  msgstr ""
382
 
383
- #: ../admin/about.php:24
384
  msgid "for their great documented code"
385
  msgstr ""
386
 
387
- #: ../admin/about.php:25
388
  msgid "for jQuery, which is the best Web2.0 framework"
389
  msgstr ""
390
 
391
- #: ../admin/about.php:26
392
  msgid "for the fantastic PHP Thumbnail Class"
393
  msgstr ""
394
 
395
- #: ../admin/about.php:27
396
  msgid "for PclZip , a PHP library that manage ZIP archives"
397
  msgstr ""
398
 
399
- #: ../admin/about.php:28
400
  msgid "for a lot of very useful plugins and ideas"
401
  msgstr ""
402
 
403
- #: ../admin/about.php:29
404
  msgid "for RS-Discuss, it saved me a lot of time"
405
  msgstr ""
406
 
407
- #: ../admin/about.php:30
408
  msgid "for the best Media Flash Scripts on earth"
409
  msgstr ""
410
 
411
- #: ../admin/about.php:31
412
  msgid "for the Watermark plugin"
413
  msgstr ""
414
 
415
- #: ../admin/about.php:33
416
  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."
417
  msgstr ""
418
 
419
- #: ../admin/about.php:34
420
  msgid "How to support ?"
421
  msgstr ""
422
 
423
- #: ../admin/about.php:35
424
  msgid "There exist several ways to contribute, help or support us in this work. Non of them are mandatory."
425
  msgstr ""
426
 
427
- #: ../admin/about.php:37
428
  msgid "Send us bugfixes / code changes"
429
  msgstr ""
430
 
431
- #: ../admin/about.php:37
432
  msgid "The most motivated support for this plugin are your ideas and brain work"
433
  msgstr ""
434
 
435
- #: ../admin/about.php:38
436
  msgid "Translate the plugin"
437
  msgstr ""
438
 
439
- #: ../admin/about.php:38
440
  msgid "To help people to work with this plugin, I would like to have it in all avaivable languages"
441
  msgstr ""
442
 
443
- #: ../admin/about.php:39
444
  msgid "Donate the work via paypal"
445
  msgstr ""
446
 
447
- #: ../admin/about.php:50
448
  msgid "No doubt a very usefull and easy motivation :-)"
449
  msgstr ""
450
 
451
- #: ../admin/about.php:52
452
  msgid "Place a link to the plugin in your blog/webpage"
453
  msgstr ""
454
 
455
- #: ../admin/about.php:52
456
  msgid "Yes, share and trackback is also a good support for this work "
457
  msgstr ""
458
 
459
- #: ../admin/about.php:54
460
  msgid "Thanks!"
461
  msgstr ""
462
 
463
- #: ../admin/about.php:55
464
  msgid "We would like to thank this people which support us in the work :"
465
  msgstr ""
466
 
467
- #: ../admin/addgallery.php:30
468
- #: ../admin/addgallery.php:46
469
  msgid "Upload failed!"
470
  msgstr ""
471
 
472
- #: ../admin/addgallery.php:68
 
 
 
 
 
 
 
 
 
 
 
473
  msgid "remove"
474
  msgstr ""
475
 
476
- #: ../admin/addgallery.php:78
477
- #: ../admin/addgallery.php:88
 
 
 
 
 
 
 
 
 
478
  msgid "Add new gallery"
479
  msgstr ""
480
 
481
- #: ../admin/addgallery.php:80
482
- #: ../admin/addgallery.php:106
483
  msgid "Upload a Zip-File"
484
  msgstr ""
485
 
486
- #: ../admin/addgallery.php:82
487
- #: ../admin/addgallery.php:138
488
  msgid "Import image folder"
489
  msgstr ""
490
 
491
- #: ../admin/addgallery.php:83
492
- #: ../admin/addgallery.php:156
493
  msgid "Upload Images"
494
  msgstr ""
495
 
496
- #: ../admin/addgallery.php:94
497
  msgid "New Gallery"
498
  msgstr ""
499
 
500
- #: ../admin/addgallery.php:96
501
  msgid "Create a new , empty gallery below the folder"
502
  msgstr ""
503
 
504
- #: ../admin/addgallery.php:97
505
  msgid "Allowed characters for file and folder names are"
506
  msgstr ""
507
 
508
- #: ../admin/addgallery.php:100
509
  msgid "Add gallery"
510
  msgstr ""
511
 
512
- #: ../admin/addgallery.php:112
513
  msgid "Select Zip-File"
514
  msgstr ""
515
 
516
- #: ../admin/addgallery.php:114
517
  msgid "Upload a zip file with images"
518
  msgstr ""
519
 
520
- #: ../admin/addgallery.php:117
521
- #: ../admin/addgallery.php:166
522
  msgid "in to"
523
  msgstr ""
524
 
525
- #: ../admin/addgallery.php:119
526
  msgid "a new gallery"
527
  msgstr ""
528
 
529
- #: ../admin/addgallery.php:129
530
- #: ../admin/addgallery.php:178
531
  msgid "Note : The upload limit on your server is "
532
  msgstr ""
533
 
534
- #: ../admin/addgallery.php:132
 
 
 
 
 
 
 
 
 
 
 
 
535
  msgid "Start upload"
536
  msgstr ""
537
 
538
- #: ../admin/addgallery.php:144
539
  msgid "Import from Server path:"
540
  msgstr ""
541
 
542
- #: ../admin/addgallery.php:146
543
  msgid "Import a folder with images. Please note :"
544
  msgstr ""
545
 
546
- #: ../admin/addgallery.php:147
547
- msgid "For save_mode = ON you need to add the subfolder thumbs manually"
548
  msgstr ""
549
 
550
- #: ../admin/addgallery.php:150
551
  msgid "Import folder"
552
  msgstr ""
553
 
554
- #: ../admin/addgallery.php:162
555
  msgid "Upload image"
556
  msgstr ""
557
 
558
- #: ../admin/addgallery.php:168
559
  msgid "Choose gallery"
560
  msgstr ""
561
 
562
- #: ../admin/addgallery.php:181
563
- msgid "Upload images"
 
 
 
 
 
 
 
 
 
 
564
  msgstr ""
565
 
566
- #: ../admin/addgallery.php:201
567
- msgid "No valid gallery name!"
568
  msgstr ""
569
 
570
- #: ../admin/addgallery.php:205
571
- #: ../admin/addgallery.php:213
572
- #: ../admin/addgallery.php:221
573
- #: ../admin/addgallery.php:260
574
- #: ../admin/addgallery.php:264
575
- msgid "Directory"
576
  msgstr ""
577
 
578
- #: ../admin/addgallery.php:205
579
- msgid "didn't exist. Please create first the main gallery folder "
 
580
  msgstr ""
581
 
582
- #: ../admin/addgallery.php:206
583
- #: ../admin/addgallery.php:214
584
- msgid "Check this link, if you didn't know how to set the permission :"
585
  msgstr ""
586
 
587
- #: ../admin/addgallery.php:213
588
- msgid "didn't have the permissions "
589
  msgstr ""
590
 
591
- #: ../admin/addgallery.php:221
592
- msgid "already exists!"
593
  msgstr ""
594
 
595
- #: ../admin/addgallery.php:227
596
- #: ../admin/addgallery.php:229
597
- #: ../admin/addgallery.php:270
598
- #: ../admin/addgallery.php:530
599
- #: ../admin/addgallery.php:532
600
- msgid "Unable to create directory "
601
  msgstr ""
602
 
603
- #: ../admin/addgallery.php:228
604
- #: ../admin/addgallery.php:531
605
- #: ../admin/addgallery.php:533
606
- msgid "Unable to set directory permissions "
607
  msgstr ""
608
 
609
- #: ../admin/addgallery.php:230
610
- msgid "Unable to set directory permissions"
 
611
  msgstr ""
612
 
613
- #: ../admin/addgallery.php:232
614
- msgid "The server setting Safe-Mode is on !"
615
  msgstr ""
616
 
617
- #: ../admin/addgallery.php:233
618
- msgid "Please create directory"
619
  msgstr ""
620
 
621
- #: ../admin/addgallery.php:234
622
- msgid "and the thumbnails directory"
623
  msgstr ""
624
 
625
- #: ../admin/addgallery.php:234
626
- msgid "with permission 777 manually !"
 
627
  msgstr ""
628
 
629
- #: ../admin/addgallery.php:238
630
- msgid "already exists"
631
  msgstr ""
632
 
633
- #: ../admin/addgallery.php:242
634
- #: ../admin/addgallery.php:306
635
- msgid "successfully created!"
636
  msgstr ""
637
 
638
- #: ../admin/addgallery.php:242
639
- msgid "You can show this gallery with the tag"
 
640
  msgstr ""
641
 
642
- #: ../admin/addgallery.php:260
643
- #: ../admin/addgallery.php:269
644
- msgid "doesn&#96;t exist"
645
  msgstr ""
646
 
647
- #: ../admin/addgallery.php:264
648
- msgid "contains no pictures"
649
  msgstr ""
650
 
651
- #: ../admin/addgallery.php:269
652
- msgid "Thumbnail Directory"
 
 
 
653
  msgstr ""
654
 
655
- #: ../admin/addgallery.php:269
656
- msgid "Please create the folder <i>thumbs</i> in your gallery folder."
657
  msgstr ""
658
 
659
- #: ../admin/addgallery.php:282
660
- #: ../admin/myimport.php:38
661
- msgid "Database error. Could not add gallery!"
 
 
 
 
 
 
 
662
  msgstr ""
663
 
664
- #: ../admin/addgallery.php:306
665
- msgid " pictures added."
666
  msgstr ""
667
 
668
- #: ../admin/addgallery.php:350
669
- #: ../admin/addgallery.php:387
670
- msgid "Some pictures are not writeable :"
671
  msgstr ""
672
 
673
- #: ../admin/addgallery.php:458
674
- msgid "Follow thumbnails could not created."
675
  msgstr ""
676
 
677
- #: ../admin/addgallery.php:459
678
- msgid "Some thumbnails are not writeable :"
679
  msgstr ""
680
 
681
- #: ../admin/addgallery.php:475
682
- msgid "The Zip-file is too large. Exceed Memory limit !"
683
  msgstr ""
684
 
685
- #: ../admin/addgallery.php:513
686
- msgid "Uploaded file was no or a faulty zip file ! The server recognize : "
687
  msgstr ""
688
 
689
- #: ../admin/addgallery.php:538
690
- msgid "Unable to unlink zip file "
691
  msgstr ""
692
 
693
- #: ../admin/addgallery.php:541
694
- msgid "Zip-File successfully unpacked"
 
 
 
 
695
  msgstr ""
696
 
697
- #: ../admin/addgallery.php:577
698
- #: ../admin/addgallery.php:585
699
- msgid "Unable to unlink file "
700
  msgstr ""
701
 
702
- #: ../admin/addgallery.php:578
703
- msgid "No gallery selected !"
 
 
 
 
 
 
 
704
  msgstr ""
705
 
706
- #: ../admin/addgallery.php:586
707
- msgid "Failure in database, no gallery path set !"
708
  msgstr ""
709
 
710
- #: ../admin/addgallery.php:593
711
- msgid "is no valid image file!"
712
  msgstr ""
713
 
714
- #: ../admin/addgallery.php:601
715
- msgid "Error, the file could not moved to : "
 
 
 
 
716
  msgstr ""
717
 
718
- #: ../admin/addgallery.php:605
719
- msgid "Error, the file permissions could not set"
720
  msgstr ""
721
 
722
- #: ../admin/addgallery.php:627
723
- msgid " Image(s) successfully added"
 
724
  msgstr ""
725
 
726
- #: ../admin/admin.php:48
727
- msgid "Add Gallery"
 
728
  msgstr ""
729
 
730
- #: ../admin/admin.php:49
731
- msgid "Manage Gallery"
732
  msgstr ""
733
 
734
- #: ../admin/admin.php:51
735
- msgid "Options"
736
  msgstr ""
737
 
738
- #: ../admin/admin.php:52
739
- msgid "Style"
 
 
 
740
  msgstr ""
741
 
742
- #: ../admin/admin.php:53
743
- msgid "Setup Gallery"
744
  msgstr ""
745
 
746
- #: ../admin/admin.php:53
747
- msgid "Setup"
748
  msgstr ""
749
 
750
- #: ../admin/admin.php:54
751
- msgid "Roles"
752
  msgstr ""
753
 
754
- #: ../admin/admin.php:56
755
- #: ../admin/myimport.php:74
756
- msgid "Import"
757
  msgstr ""
758
 
759
- #: ../admin/admin.php:57
760
- msgid "About this Gallery"
761
  msgstr ""
762
 
763
- #: ../admin/admin.php:57
764
- msgid "About"
 
765
  msgstr ""
766
 
767
- #: ../admin/album.php:17
768
- #: ../admin/album.php:36
769
- msgid "Update Successfully"
770
  msgstr ""
771
 
772
- #: ../admin/album.php:44
773
- msgid "Album deleted"
774
  msgstr ""
775
 
776
- #: ../admin/album.php:117
777
- msgid "Manage Albums"
778
  msgstr ""
779
 
780
- #: ../admin/album.php:126
781
- msgid "No album selected"
 
782
  msgstr ""
783
 
784
- #: ../admin/album.php:139
785
- msgid "Add new album"
786
  msgstr ""
787
 
788
- #: ../admin/album.php:143
789
- #: ../admin/manage.php:314
790
- #: ../admin/manage.php:579
791
- msgid "Delete"
792
  msgstr ""
793
 
794
- #: ../admin/album.php:143
795
- msgid "Delete album ?"
 
796
  msgstr ""
797
 
798
- #: ../admin/album.php:145
799
- #: ../admin/settings.php:141
800
- #: ../admin/settings.php:181
801
- #: ../admin/settings.php:214
802
- #: ../admin/settings.php:289
803
- #: ../admin/settings.php:336
804
- #: ../admin/settings.php:445
805
- #: ../admin/settings.php:549
806
- msgid "Update"
807
  msgstr ""
808
 
809
- #: ../admin/album.php:153
810
- msgid "[Maximize]"
 
811
  msgstr ""
812
 
813
- #: ../admin/album.php:154
814
- msgid "[Minimize]"
 
815
  msgstr ""
816
 
817
- #: ../admin/album.php:156
818
- msgid "After you create and select a album, you can drag and drop a gallery into your album below"
819
  msgstr ""
820
 
821
- #: ../admin/album.php:163
822
- msgid "Select Gallery"
 
823
  msgstr ""
824
 
825
- #: ../admin/album.php:196
826
- msgid "Album Page ID"
827
  msgstr ""
828
 
829
- #: ../admin/album.php:208
830
- msgid "No album selected!"
831
  msgstr ""
832
 
833
- #: ../admin/album.php:242
834
- #: ../admin/manage.php:288
835
- #: ../admin/manage.php:534
836
- #: ../admin/myimport.php:49
837
- msgid "ID"
838
  msgstr ""
839
 
840
- #: ../admin/album.php:243
841
- msgid "Name"
842
  msgstr ""
843
 
844
- #: ../admin/album.php:245
845
- msgid "Page"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
846
  msgstr ""
847
 
848
  #: ../admin/manage.php:64
849
  #: ../admin/manage.php:85
 
850
  msgid "deleted successfully"
851
  msgstr ""
852
 
@@ -866,156 +792,180 @@ msgstr ""
866
  msgid "Pictures deleted successfully "
867
  msgstr ""
868
 
869
- #: ../admin/manage.php:190
870
- msgid "Tags changed"
871
  msgstr ""
872
 
873
- #: ../admin/manage.php:210
874
- msgid "Update successful"
875
  msgstr ""
876
 
877
- #: ../admin/manage.php:235
878
- msgid " picture(s) successfully added"
879
  msgstr ""
880
 
881
- #: ../admin/manage.php:261
882
  msgid "New gallery page ID"
883
  msgstr ""
884
 
885
- #: ../admin/manage.php:261
886
  msgid "created"
887
  msgstr ""
888
 
889
- #: ../admin/manage.php:284
 
890
  msgid "Gallery Overview"
891
  msgstr ""
892
 
893
- #: ../admin/manage.php:289
894
  #: ../admin/myimport.php:50
 
895
  msgid "Gallery name"
896
  msgstr ""
897
 
898
- #: ../admin/manage.php:292
 
 
 
 
 
 
 
 
 
 
 
 
899
  #: ../admin/myimport.php:53
 
900
  msgid "Page ID"
901
  msgstr ""
902
 
903
- #: ../admin/manage.php:293
904
  #: ../admin/myimport.php:54
 
905
  msgid "Quantity"
906
  msgstr ""
907
 
908
- #: ../admin/manage.php:294
909
- #: ../admin/manage.php:546
910
  #: ../admin/myimport.php:55
 
911
  msgid "Action"
912
  msgstr ""
913
 
914
- #: ../admin/manage.php:313
915
- #: ../js/nggadmintab-js.php:88
 
916
  msgid "Edit"
917
  msgstr ""
918
 
919
- #: ../admin/manage.php:314
 
920
  msgid "Delete this gallery ?"
921
  msgstr ""
922
 
923
- #: ../admin/manage.php:319
924
- #: ../admin/manage.php:584
925
  #: ../admin/myimport.php:79
 
 
926
  msgid "No entries found"
927
  msgstr ""
928
 
929
- #: ../admin/manage.php:445
 
930
  msgid "Main settings"
931
  msgstr ""
932
 
933
- #: ../admin/manage.php:450
 
934
  msgid "Page Link to"
935
  msgstr ""
936
 
937
- #: ../admin/manage.php:453
 
938
  msgid "Not linked"
939
  msgstr ""
940
 
941
- #: ../admin/manage.php:469
 
942
  msgid "Preview image"
943
  msgstr ""
944
 
945
- #: ../admin/manage.php:472
 
946
  msgid "No Picture"
947
  msgstr ""
948
 
949
- #: ../admin/manage.php:487
 
950
  msgid "Path"
951
  msgstr ""
952
 
953
- #: ../admin/manage.php:490
 
954
  msgid "Create new page"
955
  msgstr ""
956
 
957
- #: ../admin/manage.php:493
 
958
  msgid "Main page (No parent)"
959
  msgstr ""
960
 
961
- #: ../admin/manage.php:496
 
962
  msgid "Add page"
963
  msgstr ""
964
 
965
- #: ../admin/manage.php:502
 
966
  msgid "Scan Folder for new images"
967
  msgstr ""
968
 
969
- #: ../admin/manage.php:503
970
- #: ../admin/manage.php:591
 
971
  msgid "Save Changes"
972
  msgstr ""
973
 
974
- #: ../admin/manage.php:508
975
  msgid "No action"
976
  msgstr ""
977
 
978
- #: ../admin/manage.php:510
979
- msgid "Set watermark"
980
- msgstr ""
981
-
982
- #: ../admin/manage.php:511
983
- msgid "Create new thumbnails"
984
- msgstr ""
985
-
986
- #: ../admin/manage.php:512
987
- msgid "Resize images"
988
  msgstr ""
989
 
990
- #: ../admin/manage.php:513
991
- msgid "Delete images"
992
  msgstr ""
993
 
994
- #: ../admin/manage.php:515
995
  msgid "Add tags"
996
  msgstr ""
997
 
998
- #: ../admin/manage.php:516
999
  msgid "Delete tags"
1000
  msgstr ""
1001
 
1002
- #: ../admin/manage.php:517
1003
  msgid "Overwrite tags"
1004
  msgstr ""
1005
 
1006
- #: ../admin/manage.php:521
1007
- #: ../admin/manage.php:522
1008
- #: ../admin/manage.php:609
1009
  msgid "OK"
1010
  msgstr ""
1011
 
1012
- #: ../admin/manage.php:521
1013
- #: ../admin/manage.php:609
1014
  msgid "No images selected"
1015
  msgstr ""
1016
 
1017
- #: ../admin/manage.php:521
1018
- #: ../admin/manage.php:609
1019
  #, php-format
1020
  msgid ""
1021
  "You are about to start the bulk edit for %s images \n"
@@ -1023,55 +973,71 @@ msgid ""
1023
  " 'Cancel' to stop, 'OK' to proceed."
1024
  msgstr ""
1025
 
1026
- #: ../admin/manage.php:523
1027
  msgid "Hide thumbnails "
1028
  msgstr ""
1029
 
1030
- #: ../admin/manage.php:524
1031
  msgid "Show thumbnails "
1032
  msgstr ""
1033
 
1034
- #: ../admin/manage.php:525
1035
- msgid "Show tags"
 
 
 
 
 
 
 
 
 
1036
  msgstr ""
1037
 
1038
  #: ../admin/manage.php:526
1039
- msgid "Hide tags"
 
1040
  msgstr ""
1041
 
1042
- #: ../admin/manage.php:535
1043
- #: ../admin/settings.php:278
1044
- msgid "File name"
 
1045
  msgstr ""
1046
 
1047
- #: ../admin/manage.php:542
1048
  msgid "exclude"
1049
  msgstr ""
1050
 
1051
- #: ../admin/manage.php:544
1052
  msgid "Tags (comma separated list)"
1053
  msgstr ""
1054
 
1055
- #: ../admin/manage.php:577
1056
  msgid "View"
1057
  msgstr ""
1058
 
1059
- #: ../admin/manage.php:578
1060
  msgid "Show Meta data"
1061
  msgstr ""
1062
 
1063
- #: ../admin/manage.php:578
1064
  msgid "Meta"
1065
  msgstr ""
1066
 
1067
- #: ../admin/manage.php:579
1068
  msgid "Delete this file ?"
1069
  msgstr ""
1070
 
1071
- #: ../admin/manage.php:606
1072
  msgid "Enter the tags"
1073
  msgstr ""
1074
 
 
 
 
 
 
1075
  #: ../admin/myimport.php:35
1076
  msgid "Gallery "
1077
  msgstr ""
@@ -1113,142 +1079,172 @@ msgstr ""
1113
  msgid "Download here"
1114
  msgstr ""
1115
 
1116
- #: ../admin/overview.php:38
1117
  msgid "Server Settings"
1118
  msgstr ""
1119
 
1120
- #: ../admin/overview.php:45
1121
  msgid "Welcome"
1122
  msgstr ""
1123
 
1124
- #: ../admin/overview.php:49
1125
  msgid "gallery administrator"
1126
  msgstr ""
1127
 
1128
- #: ../admin/overview.php:49
1129
  msgid "gallery editor"
1130
  msgstr ""
1131
 
1132
- #: ../admin/overview.php:50
1133
  #, php-format
1134
  msgid "Welcome to NextGEN Gallery. Here you can control your images, galleries and albums. You currently have %s rights."
1135
  msgstr ""
1136
 
1137
- #: ../admin/overview.php:55
1138
  msgid "Add a new gallery or import pictures"
1139
  msgstr ""
1140
 
1141
- #: ../admin/overview.php:56
1142
  msgid "Manage galleries and images"
1143
  msgstr ""
1144
 
1145
- #: ../admin/overview.php:57
1146
  msgid "Create and manage albums"
1147
  msgstr ""
1148
 
1149
- #: ../admin/overview.php:58
1150
  msgid "Change the settings of NextGEN Gallery"
1151
  msgstr ""
1152
 
1153
- #: ../admin/overview.php:61
1154
  msgid "Latest News"
1155
  msgstr ""
1156
 
1157
- #: ../admin/overview.php:80
1158
  #, php-format
1159
  msgid "Newsfeed could not be loaded. Check the <a href=\"%s\">front page</a> to check for updates."
1160
  msgstr ""
1161
 
1162
- #: ../admin/overview.php:93
1163
  msgid "GD support"
1164
  msgstr ""
1165
 
1166
- #: ../admin/overview.php:104
1167
  msgid "No GD support"
1168
  msgstr ""
1169
 
1170
- #: ../admin/overview.php:111
 
 
 
1171
  msgid "Yes"
1172
  msgstr ""
1173
 
1174
- #: ../admin/overview.php:112
 
 
 
1175
  msgid "No"
1176
  msgstr ""
1177
 
1178
- #: ../admin/overview.php:126
1179
  msgid "Not set"
1180
  msgstr ""
1181
 
1182
- #: ../admin/overview.php:128
1183
- #: ../admin/overview.php:131
1184
  msgid "On"
1185
  msgstr ""
1186
 
1187
- #: ../admin/overview.php:129
1188
- #: ../admin/overview.php:132
1189
  msgid "Off"
1190
  msgstr ""
1191
 
1192
- #: ../admin/overview.php:135
1193
- #: ../admin/overview.php:138
1194
- #: ../admin/overview.php:141
1195
- #: ../admin/overview.php:144
1196
- #: ../admin/overview.php:147
1197
  msgid "N/A"
1198
  msgstr ""
1199
 
1200
- #: ../admin/overview.php:146
1201
  msgid " MByte"
1202
  msgstr ""
1203
 
1204
- #: ../admin/overview.php:150
1205
  msgid "Operating System"
1206
  msgstr ""
1207
 
1208
- #: ../admin/overview.php:151
1209
  msgid "Server"
1210
  msgstr ""
1211
 
1212
- #: ../admin/overview.php:152
1213
  msgid "Memory usage"
1214
  msgstr ""
1215
 
1216
- #: ../admin/overview.php:153
1217
  msgid "MYSQL Version"
1218
  msgstr ""
1219
 
1220
- #: ../admin/overview.php:154
1221
  msgid "SQL Mode"
1222
  msgstr ""
1223
 
1224
- #: ../admin/overview.php:155
1225
  msgid "PHP Version"
1226
  msgstr ""
1227
 
1228
- #: ../admin/overview.php:156
1229
  msgid "PHP Safe Mode"
1230
  msgstr ""
1231
 
1232
- #: ../admin/overview.php:157
1233
  msgid "PHP Allow URL fopen"
1234
  msgstr ""
1235
 
1236
- #: ../admin/overview.php:158
1237
  msgid "PHP Memory Limit"
1238
  msgstr ""
1239
 
1240
- #: ../admin/overview.php:159
1241
  msgid "PHP Max Upload Size"
1242
  msgstr ""
1243
 
1244
- #: ../admin/overview.php:160
1245
  msgid "PHP Max Post Size"
1246
  msgstr ""
1247
 
1248
- #: ../admin/overview.php:161
1249
  msgid "PHP Max Script Execute Time"
1250
  msgstr ""
1251
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1252
  #: ../admin/roles.php:20
1253
  msgid "Updated capabilities"
1254
  msgstr ""
@@ -1299,468 +1295,522 @@ msgstr ""
1299
 
1300
  #: ../admin/settings.php:29
1301
  #: ../admin/style.php:16
 
1302
  msgid "Update successfully"
1303
  msgstr ""
1304
 
1305
- #: ../admin/settings.php:83
1306
- #: ../admin/settings.php:95
1307
- msgid "General Options"
1308
  msgstr ""
1309
 
1310
- #: ../admin/settings.php:84
1311
- #: ../admin/settings.php:255
1312
- msgid "Thumbnails"
1313
  msgstr ""
1314
 
1315
- #: ../admin/settings.php:85
1316
  msgid "Images"
1317
  msgstr ""
1318
 
1319
- #: ../admin/settings.php:87
1320
- #: ../admin/settings.php:297
1321
  msgid "Effects"
1322
  msgstr ""
1323
 
1324
- #: ../admin/settings.php:102
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1325
  msgid "Gallery path"
1326
  msgstr ""
1327
 
1328
- #: ../admin/settings.php:104
1329
  msgid "This is the default path for all galleries"
1330
  msgstr ""
1331
 
1332
- #: ../admin/settings.php:115
1333
  msgid "Delete image files"
1334
  msgstr ""
1335
 
1336
- #: ../admin/settings.php:117
1337
  msgid "Delete files, when removing a gallery in the database"
1338
  msgstr ""
1339
 
1340
- #: ../admin/settings.php:120
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1341
  msgid "Tags / Categories"
1342
  msgstr ""
1343
 
1344
- #: ../admin/settings.php:123
1345
  msgid "Activate related images"
1346
  msgstr ""
1347
 
1348
- #: ../admin/settings.php:125
1349
  msgid "This option will append related images to every post"
1350
  msgstr ""
1351
 
1352
- #: ../admin/settings.php:129
1353
  msgid "Match with"
1354
  msgstr ""
1355
 
1356
- #: ../admin/settings.php:130
1357
  msgid "Categories"
1358
  msgstr ""
1359
 
1360
- #: ../admin/settings.php:131
1361
- #: ../lib/nggmeta.lib.php:317
1362
  msgid "Tags"
1363
  msgstr ""
1364
 
1365
- #: ../admin/settings.php:131
1366
  msgid " (require WordPress 2.3 or higher)"
1367
  msgstr ""
1368
 
1369
- #: ../admin/settings.php:135
1370
  msgid "Max. number of images"
1371
  msgstr ""
1372
 
1373
- #: ../admin/settings.php:137
1374
  msgid "0 will show all images"
1375
  msgstr ""
1376
 
1377
- #: ../admin/settings.php:149
1378
  msgid "Thumbnail settings"
1379
  msgstr ""
1380
 
1381
- #: ../admin/settings.php:154
1382
  msgid "Please note : If you change the settings, you need to recreate the thumbnails under -> Manage Gallery ."
1383
  msgstr ""
1384
 
1385
- #: ../admin/settings.php:157
1386
  msgid "Width x height (in pixel)"
1387
  msgstr ""
1388
 
1389
- #: ../admin/settings.php:159
1390
  msgid "These values are maximum values "
1391
  msgstr ""
1392
 
1393
- #: ../admin/settings.php:162
1394
  msgid "Set fix dimension"
1395
  msgstr ""
1396
 
1397
- #: ../admin/settings.php:164
1398
  msgid "Ignore the aspect ratio, no portrait thumbnails"
1399
  msgstr ""
1400
 
1401
- #: ../admin/settings.php:167
1402
  msgid "Crop square thumbnail from image"
1403
  msgstr ""
1404
 
1405
- #: ../admin/settings.php:169
1406
  msgid "Create square thumbnails, use only the width setting :"
1407
  msgstr ""
1408
 
1409
- #: ../admin/settings.php:172
1410
  msgid "Thumbnail quality"
1411
  msgstr ""
1412
 
1413
- #: ../admin/settings.php:176
1414
- #: ../admin/settings.php:208
1415
  msgid "Resample Mode"
1416
  msgstr ""
1417
 
1418
- #: ../admin/settings.php:178
1419
- #: ../admin/settings.php:211
1420
  msgid "Value between 1-5 (higher value, more CPU load)"
1421
  msgstr ""
1422
 
1423
- #: ../admin/settings.php:189
1424
  msgid "Image settings"
1425
  msgstr ""
1426
 
1427
- #: ../admin/settings.php:196
1428
  msgid "Resize Images"
1429
  msgstr ""
1430
 
1431
- #: ../admin/settings.php:200
1432
  msgid "Width x height (in pixel). NextGEN Gallery will keep ratio size"
1433
  msgstr ""
1434
 
1435
- #: ../admin/settings.php:203
1436
  msgid "Image quality"
1437
  msgstr ""
1438
 
1439
- #: ../admin/settings.php:222
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1440
  msgid "Gallery settings"
1441
  msgstr ""
1442
 
1443
- #: ../admin/settings.php:229
1444
  msgid "Activate jQuery navigation"
1445
  msgstr ""
1446
 
1447
- #: ../admin/settings.php:231
1448
  msgid "Please note : This is still experimental. Requires the Thickbox effect"
1449
  msgstr ""
1450
 
1451
- #: ../admin/settings.php:235
1452
  msgid "Deactivate gallery page link"
1453
  msgstr ""
1454
 
1455
- #: ../admin/settings.php:237
1456
  msgid "The album will not link to a gallery subpage. The gallery is shown on the same page."
1457
  msgstr ""
1458
 
1459
- #: ../admin/settings.php:241
1460
  msgid "Number of images per page"
1461
  msgstr ""
1462
 
1463
- #: ../admin/settings.php:243
1464
  msgid "0 will disable pagination, all images on one page"
1465
  msgstr ""
1466
 
1467
- #: ../admin/settings.php:247
1468
  msgid "Integrate slideshow"
1469
  msgstr ""
1470
 
1471
- #: ../admin/settings.php:254
1472
  msgid "Show first"
1473
  msgstr ""
1474
 
1475
- #: ../admin/settings.php:260
1476
  msgid "Show thumbnail description"
1477
  msgstr ""
1478
 
1479
- #: ../admin/settings.php:261
1480
- #: ../admin/settings.php:309
1481
- #: ../js/nggadmintab-js.php:112
1482
  msgid "None"
1483
  msgstr ""
1484
 
1485
- #: ../admin/settings.php:262
1486
  msgid "Description text"
1487
  msgstr ""
1488
 
1489
- #: ../admin/settings.php:263
1490
- #: ../admin/settings.php:279
1491
  msgid "Alt / Title text"
1492
  msgstr ""
1493
 
1494
- #: ../admin/settings.php:267
1495
  msgid "Show ImageBrowser"
1496
  msgstr ""
1497
 
1498
- #: ../admin/settings.php:269
1499
  msgid "The gallery will open the ImageBrowser instead the effect."
1500
  msgstr ""
1501
 
1502
- #: ../admin/settings.php:273
1503
  msgid "Sort options"
1504
  msgstr ""
1505
 
1506
- #: ../admin/settings.php:276
1507
  msgid "Sort thumbnails"
1508
  msgstr ""
1509
 
1510
- #: ../admin/settings.php:277
1511
  msgid "Image ID"
1512
  msgstr ""
1513
 
1514
- #: ../admin/settings.php:283
1515
  msgid "Sort direction"
1516
  msgstr ""
1517
 
1518
- #: ../admin/settings.php:284
1519
  msgid "Ascending"
1520
  msgstr ""
1521
 
1522
- #: ../admin/settings.php:285
1523
  msgid "Descending"
1524
  msgstr ""
1525
 
1526
- #: ../admin/settings.php:301
1527
  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."
1528
  msgstr ""
1529
 
1530
- #: ../admin/settings.php:302
1531
  msgid "With the placeholder"
1532
  msgstr ""
1533
 
1534
- #: ../admin/settings.php:302
1535
  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."
1536
  msgstr ""
1537
 
1538
- #: ../admin/settings.php:306
1539
  msgid "JavaScript Thumbnail effect"
1540
  msgstr ""
1541
 
1542
- #: ../admin/settings.php:310
1543
  msgid "Thickbox"
1544
  msgstr ""
1545
 
1546
- #: ../admin/settings.php:311
1547
  msgid "Lightbox"
1548
  msgstr ""
1549
 
1550
- #: ../admin/settings.php:312
1551
  msgid "Highslide"
1552
  msgstr ""
1553
 
1554
- #: ../admin/settings.php:313
1555
  msgid "Shutter"
1556
  msgstr ""
1557
 
1558
- #: ../admin/settings.php:314
1559
  msgid "Custom"
1560
  msgstr ""
1561
 
1562
- #: ../admin/settings.php:319
1563
  msgid "Link Code line"
1564
  msgstr ""
1565
 
1566
- #: ../admin/settings.php:327
1567
  msgid "Select loading image"
1568
  msgstr ""
1569
 
1570
- #: ../admin/settings.php:351
1571
  msgid "Please note : You can only activate the watermark under -> Manage Gallery . This action cannot be undone."
1572
  msgstr ""
1573
 
1574
- #: ../admin/settings.php:356
1575
  msgid "Preview"
1576
  msgstr ""
1577
 
1578
- #: ../admin/settings.php:358
1579
- #: ../admin/settings.php:362
1580
  msgid "Position"
1581
  msgstr ""
1582
 
1583
- #: ../admin/settings.php:382
1584
  msgid "Offset"
1585
  msgstr ""
1586
 
1587
- #: ../admin/settings.php:400
1588
  msgid "Use image as watermark"
1589
  msgstr ""
1590
 
1591
- #: ../admin/settings.php:403
1592
  msgid "URL to file"
1593
  msgstr ""
1594
 
1595
- #: ../admin/settings.php:405
1596
  msgid "The accessing of URL files is disabled at your server (allow_url_fopen)"
1597
  msgstr ""
1598
 
1599
- #: ../admin/settings.php:411
1600
  msgid "Use text as watermark"
1601
  msgstr ""
1602
 
1603
- #: ../admin/settings.php:414
1604
  msgid "Font"
1605
  msgstr ""
1606
 
1607
- #: ../admin/settings.php:422
 
 
 
 
1608
  msgid "You can upload more fonts in the folder <strong>nggallery/fonts</strong>"
1609
  msgstr ""
1610
 
1611
- #: ../admin/settings.php:426
1612
  msgid "Size"
1613
  msgstr ""
1614
 
1615
- #: ../admin/settings.php:430
1616
  msgid "Color"
1617
  msgstr ""
1618
 
1619
- #: ../admin/settings.php:432
1620
  msgid "(hex w/o #)"
1621
  msgstr ""
1622
 
1623
- #: ../admin/settings.php:435
1624
  msgid "Text"
1625
  msgstr ""
1626
 
1627
- #: ../admin/settings.php:439
1628
  msgid "Opaque"
1629
  msgstr ""
1630
 
1631
- #: ../admin/settings.php:458
1632
  msgid "The imagerotator.swf is not in the nggallery folder, the slideshow will not work."
1633
  msgstr ""
1634
 
1635
- #: ../admin/settings.php:459
1636
  msgid "The settings are used in the JW Image Rotator Version 3.9 ."
1637
  msgstr ""
1638
 
1639
- #: ../admin/settings.php:460
1640
  msgid "See more information for the Flash Player on the web page"
1641
  msgstr ""
1642
 
1643
- #: ../admin/settings.php:463
1644
  msgid "Default size (W x H)"
1645
  msgstr ""
1646
 
1647
- #: ../admin/settings.php:468
1648
  msgid "Shuffle mode"
1649
  msgstr ""
1650
 
1651
- #: ../admin/settings.php:472
1652
  msgid "Show next image on click"
1653
  msgstr ""
1654
 
1655
- #: ../admin/settings.php:476
1656
  msgid "Show navigation bar"
1657
  msgstr ""
1658
 
1659
- #: ../admin/settings.php:480
1660
  msgid "Show loading icon"
1661
  msgstr ""
1662
 
1663
- #: ../admin/settings.php:484
1664
  msgid "Use watermark logo"
1665
  msgstr ""
1666
 
1667
- #: ../admin/settings.php:486
1668
  msgid "You can change the logo at the watermark settings"
1669
  msgstr ""
1670
 
1671
- #: ../admin/settings.php:489
1672
  msgid "Stretch image"
1673
  msgstr ""
1674
 
1675
- #: ../admin/settings.php:492
1676
  msgid "true"
1677
  msgstr ""
1678
 
1679
- #: ../admin/settings.php:493
1680
  msgid "false"
1681
  msgstr ""
1682
 
1683
- #: ../admin/settings.php:494
1684
  msgid "fit"
1685
  msgstr ""
1686
 
1687
- #: ../admin/settings.php:500
 
 
 
 
1688
  msgid "Duration time"
1689
  msgstr ""
1690
 
1691
- #: ../admin/settings.php:501
1692
  msgid "sec."
1693
  msgstr ""
1694
 
1695
- #: ../admin/settings.php:504
1696
  msgid "Transition / Fade effect"
1697
  msgstr ""
1698
 
1699
- #: ../admin/settings.php:507
1700
  msgid "fade"
1701
  msgstr ""
1702
 
1703
- #: ../admin/settings.php:508
1704
  msgid "bgfade"
1705
  msgstr ""
1706
 
1707
- #: ../admin/settings.php:509
1708
  msgid "slowfade"
1709
  msgstr ""
1710
 
1711
- #: ../admin/settings.php:510
1712
  msgid "circles"
1713
  msgstr ""
1714
 
1715
- #: ../admin/settings.php:511
1716
  msgid "bubbles"
1717
  msgstr ""
1718
 
1719
- #: ../admin/settings.php:512
1720
  msgid "blocks"
1721
  msgstr ""
1722
 
1723
- #: ../admin/settings.php:513
1724
  msgid "fluids"
1725
  msgstr ""
1726
 
1727
- #: ../admin/settings.php:514
1728
  msgid "flash"
1729
  msgstr ""
1730
 
1731
- #: ../admin/settings.php:515
1732
  msgid "lines"
1733
  msgstr ""
1734
 
1735
- #: ../admin/settings.php:516
1736
- msgid "random"
1737
- msgstr ""
1738
-
1739
- #: ../admin/settings.php:520
1740
  msgid "Use slow zooming effect"
1741
  msgstr ""
1742
 
1743
- #: ../admin/settings.php:524
1744
  msgid "Background Color"
1745
  msgstr ""
1746
 
1747
- #: ../admin/settings.php:529
1748
  msgid "Texts / Buttons Color"
1749
  msgstr ""
1750
 
1751
- #: ../admin/settings.php:534
1752
  msgid "Rollover / Active Color"
1753
  msgstr ""
1754
 
1755
- #: ../admin/settings.php:539
1756
  msgid "Background music (URL)"
1757
  msgstr ""
1758
 
1759
- #: ../admin/settings.php:543
1760
  msgid "Try XHTML validation (with CDATA)"
1761
  msgstr ""
1762
 
1763
- #: ../admin/settings.php:545
1764
  msgid "Important : Could causes problem at some browser. Please recheck your page."
1765
  msgstr ""
1766
 
@@ -1791,35 +1841,35 @@ msgid ""
1791
  "Choose [Cancel] to Stop, [OK] to proceed.\\n"
1792
  msgstr ""
1793
 
1794
- #: ../admin/setup.php:54
1795
  msgid "Uninstall plugin tables"
1796
  msgstr ""
1797
 
1798
- #: ../admin/setup.php:56
1799
  msgid "You don't like NextGEN Gallery ?"
1800
  msgstr ""
1801
 
1802
- #: ../admin/setup.php:57
1803
  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. "
1804
  msgstr ""
1805
 
1806
- #: ../admin/setup.php:58
1807
  msgid "WARNING:"
1808
  msgstr ""
1809
 
1810
- #: ../admin/setup.php:59
1811
  msgid "Once uninstalled, this cannot be undone. You should use a Database Backup plugin of WordPress to backup all the tables first. NextGEN gallery is stored in the tables"
1812
  msgstr ""
1813
 
1814
- #: ../admin/setup.php:59
1815
  msgid "and"
1816
  msgstr ""
1817
 
1818
- #: ../admin/setup.php:61
1819
  msgid "Uninstall plugin"
1820
  msgstr ""
1821
 
1822
- #: ../admin/setup.php:61
1823
  msgid ""
1824
  "You are about to Uninstall this plugin from WordPress.\\n"
1825
  "This action is not reversible.\\n"
@@ -1876,205 +1926,350 @@ msgstr ""
1876
  msgid "Activate"
1877
  msgstr ""
1878
 
1879
- #: ../admin/style.php:92
1880
  #, php-format
1881
  msgid "Editing <strong>%s</strong>"
1882
  msgstr ""
1883
 
1884
- #: ../admin/style.php:94
1885
  #, php-format
1886
  msgid "Browsing <strong>%s</strong>"
1887
  msgstr ""
1888
 
1889
- #: ../admin/style.php:99
1890
- #: ../lib/nggmeta.lib.php:316
1891
  msgid "Author"
1892
  msgstr ""
1893
 
1894
- #: ../admin/style.php:100
1895
  msgid "Version"
1896
  msgstr ""
1897
 
1898
- #: ../admin/style.php:117
1899
  msgid "Update File &raquo;"
1900
  msgstr ""
1901
 
1902
- #: ../admin/style.php:121
1903
  msgid "If this file were writable you could edit it."
1904
  msgstr ""
1905
 
1906
- #: ../admin/style.php:126
1907
  msgid "Oops, no such file exists! Double check the name and try again, merci."
1908
  msgstr ""
1909
 
1910
- #: ../js/nggadmintab-js.php:81
1911
- #: ../js/nggadmintab-js.php:83
1912
- #: ../js/nggadmintab-js.php:144
1913
- #: ../js/nggadmintab-js.php:146
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1914
  msgid "Browse your files"
1915
  msgstr ""
1916
 
1917
- #: ../js/nggadmintab-js.php:81
1918
- #: ../js/nggadmintab-js.php:83
1919
- #: ../js/nggadmintab-js.php:144
1920
- #: ../js/nggadmintab-js.php:146
1921
  msgid "&laquo; Back"
1922
  msgstr ""
1923
 
1924
- #: ../js/nggadmintab-js.php:92
1925
- #: ../js/nggadmintab-js.php:155
1926
  msgid "Direct link to file"
1927
  msgstr ""
1928
 
1929
- #: ../js/nggadmintab-js.php:102
1930
  msgid "Full size"
1931
  msgstr ""
1932
 
1933
- #: ../js/nggadmintab-js.php:105
1934
  msgid "Show:"
1935
  msgstr ""
1936
 
1937
- #: ../js/nggadmintab-js.php:110
1938
  msgid "Link to:"
1939
  msgstr ""
1940
 
1941
- #: ../js/nggadmintab-js.php:111
1942
  msgid "File"
1943
  msgstr ""
1944
 
1945
- #: ../js/nggadmintab-js.php:116
1946
  msgid "Send to editor &raquo;"
1947
  msgstr ""
1948
 
1949
- #: ../js/nggadmintab-js.php:175
 
 
 
 
 
1950
  msgid "Save &raquo;"
1951
  msgstr ""
1952
 
1953
- #: ../js/nggadmintab-js.php:254
1954
  #, php-format
1955
  msgid ""
1956
  "Are you sure you want to delete the file '%s'?\n"
1957
  "Click ok to delete or cancel to go back."
1958
  msgstr ""
1959
 
1960
- #: ../lib/nggmeta.lib.php:306
 
 
 
 
 
 
 
 
1961
  msgid "Aperture"
1962
  msgstr ""
1963
 
1964
- #: ../lib/nggmeta.lib.php:307
1965
- #: ../lib/nggmeta.lib.php:332
1966
  msgid "Credit"
1967
  msgstr ""
1968
 
1969
- #: ../lib/nggmeta.lib.php:308
1970
  msgid "Camera"
1971
  msgstr ""
1972
 
1973
- #: ../lib/nggmeta.lib.php:309
1974
  msgid "Caption"
1975
  msgstr ""
1976
 
1977
- #: ../lib/nggmeta.lib.php:310
1978
  msgid "Date/Time"
1979
  msgstr ""
1980
 
1981
- #: ../lib/nggmeta.lib.php:311
1982
  msgid "Copyright"
1983
  msgstr ""
1984
 
1985
- #: ../lib/nggmeta.lib.php:312
1986
  msgid "Focal length"
1987
  msgstr ""
1988
 
1989
- #: ../lib/nggmeta.lib.php:313
1990
  msgid "ISO"
1991
  msgstr ""
1992
 
1993
- #: ../lib/nggmeta.lib.php:314
1994
  msgid "Shutter speed"
1995
  msgstr ""
1996
 
1997
- #: ../lib/nggmeta.lib.php:315
1998
- msgid "Titel"
1999
- msgstr ""
2000
-
2001
- #: ../lib/nggmeta.lib.php:318
2002
  msgid "Subject"
2003
  msgstr ""
2004
 
2005
- #: ../lib/nggmeta.lib.php:319
2006
  msgid "Make"
2007
  msgstr ""
2008
 
2009
- #: ../lib/nggmeta.lib.php:320
2010
  msgid "Edit Status"
2011
  msgstr ""
2012
 
2013
- #: ../lib/nggmeta.lib.php:321
2014
  msgid "Category"
2015
  msgstr ""
2016
 
2017
- #: ../lib/nggmeta.lib.php:322
2018
  msgid "Keywords"
2019
  msgstr ""
2020
 
2021
- #: ../lib/nggmeta.lib.php:323
2022
  msgid "Date Created"
2023
  msgstr ""
2024
 
2025
- #: ../lib/nggmeta.lib.php:324
2026
  msgid "Time Created"
2027
  msgstr ""
2028
 
2029
- #: ../lib/nggmeta.lib.php:325
2030
  msgid "Author Position"
2031
  msgstr ""
2032
 
2033
- #: ../lib/nggmeta.lib.php:326
2034
  msgid "City"
2035
  msgstr ""
2036
 
2037
- #: ../lib/nggmeta.lib.php:327
2038
  msgid "Location"
2039
  msgstr ""
2040
 
2041
- #: ../lib/nggmeta.lib.php:328
2042
  msgid "Province/State"
2043
  msgstr ""
2044
 
2045
- #: ../lib/nggmeta.lib.php:329
2046
  msgid "Country code"
2047
  msgstr ""
2048
 
2049
- #: ../lib/nggmeta.lib.php:330
2050
  msgid "Country"
2051
  msgstr ""
2052
 
2053
- #: ../lib/nggmeta.lib.php:331
2054
  msgid "Headline"
2055
  msgstr ""
2056
 
2057
- #: ../lib/nggmeta.lib.php:333
2058
  msgid "Source"
2059
  msgstr ""
2060
 
2061
- #: ../lib/nggmeta.lib.php:334
2062
  msgid "Copyright Notice"
2063
  msgstr ""
2064
 
2065
- #: ../lib/nggmeta.lib.php:335
2066
  msgid "Contact"
2067
  msgstr ""
2068
 
2069
- #: ../lib/nggmeta.lib.php:336
2070
  msgid "Last modified"
2071
  msgstr ""
2072
 
2073
- #: ../lib/nggmeta.lib.php:337
2074
  msgid "Program tool"
2075
  msgstr ""
2076
 
2077
- #: ../lib/nggmeta.lib.php:338
2078
  msgid "Format"
2079
  msgstr ""
2080
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2
  msgstr ""
3
  "Project-Id-Version: NextGEN Gallery\n"
4
  "POT-Creation-Date: \n"
5
+ "PO-Revision-Date: 2008-01-28 20:12+0100\n"
6
  "Last-Translator: Alex Rabe\n"
7
  "Language-Team: Alex Rabe\n"
8
  "MIME-Version: 1.0\n"
15
  "X-Poedit-SearchPath-0: .\n"
16
  "X-Poedit-SearchPath-1: ..\n"
17
 
18
+ #: ../nggallery.php:175
19
+ msgid "Sorry, NextGEN Gallery works only under WordPress 2.1 or higher"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
20
  msgstr ""
21
 
22
+ #: ../nggfunctions.php:452
23
+ #: ../nggfunctions.php:467
24
+ msgid "Watch gallery"
25
  msgstr ""
26
 
27
+ #: ../nggfunctions.php:461
28
+ #: ../nggfunctions.php:473
29
+ #: ../nggfunctions.php:750
30
+ msgid "Photos"
 
 
 
 
 
 
31
  msgstr ""
32
 
33
+ #: ../nggfunctions.php:547
34
+ msgid "Back"
35
  msgstr ""
36
 
37
+ #: ../nggfunctions.php:551
38
+ msgid "Next"
 
39
  msgstr ""
40
 
41
+ #: ../nggfunctions.php:554
 
42
  #: ../admin/manage.php:85
43
+ #: ../tinymce/window.php:37
44
  msgid "Picture"
45
  msgstr ""
46
 
47
+ #: ../nggfunctions.php:554
48
+ msgid "from"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
49
  msgstr ""
50
 
51
+ #: ../nggfunctions.php:720
52
+ msgid "Overview"
53
  msgstr ""
54
 
55
+ #: ../ngginstall.php:20
56
+ msgid "Sorry, NextGEN Gallery works only with a role called administrator"
57
  msgstr ""
58
 
59
+ #: ../ngginstall.php:143
60
+ msgid "NextGEN Gallery : Tables could not created, please check your database settings"
61
  msgstr ""
62
 
63
+ #: ../ngginstall.php:183
64
  msgid "[Show as slideshow]"
65
  msgstr ""
66
 
67
+ #: ../ngginstall.php:184
68
  msgid "[Show picture list]"
69
  msgstr ""
70
 
71
+ #: ../nggwidget.php:118
72
  msgid "Title:"
73
  msgstr ""
74
 
75
+ #: ../nggwidget.php:119
76
  msgid "Select Gallery:"
77
  msgstr ""
78
 
79
+ #: ../nggwidget.php:123
80
  msgid "All images"
81
  msgstr ""
82
 
83
+ #: ../nggwidget.php:133
84
  msgid "Height:"
85
  msgstr ""
86
 
87
+ #: ../nggwidget.php:134
88
  msgid "Width:"
89
  msgstr ""
90
 
91
+ #: ../nggwidget.php:188
92
+ #, php-format
93
+ msgid "NextGEN Gallery %d"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
94
  msgstr ""
95
 
96
+ #: ../nggwidget.php:204
97
+ msgid "NextGEN Gallery Widgets"
 
98
  msgstr ""
99
 
100
+ #: ../nggwidget.php:205
101
+ msgid "How many NextGEN Gallery widgets would you like?"
 
102
  msgstr ""
103
 
104
+ #: ../nggwidget.php:209
105
+ #: ../admin/uploadtab.php:193
106
+ msgid "Save"
107
  msgstr ""
108
 
109
+ #: ../nggwidget.php:301
110
+ msgid "Title :"
 
111
  msgstr ""
112
 
113
+ #: ../nggwidget.php:306
114
+ msgid "Show :"
 
115
  msgstr ""
116
 
117
+ #: ../nggwidget.php:311
118
+ #: ../admin/settings.php:100
119
+ #: ../admin/settings.php:295
120
+ msgid "Thumbnails"
121
  msgstr ""
122
 
123
+ #: ../nggwidget.php:312
124
+ msgid "Orginal images"
 
125
  msgstr ""
126
 
127
+ #: ../nggwidget.php:318
128
+ #: ../admin/settings.php:558
129
+ msgid "random"
130
  msgstr ""
131
 
132
+ #: ../nggwidget.php:319
133
+ msgid "recent added "
 
134
  msgstr ""
135
 
136
+ #: ../nggwidget.php:323
137
+ msgid "Width x Height :"
 
138
  msgstr ""
139
 
140
+ #: ../nggwidget.php:329
141
+ msgid "Select :"
 
142
  msgstr ""
143
 
144
+ #: ../nggwidget.php:331
145
+ msgid "All galleries"
 
146
  msgstr ""
147
 
148
+ #: ../nggwidget.php:332
 
149
  msgid "Only which are not listed"
150
  msgstr ""
151
 
152
+ #: ../nggwidget.php:333
 
153
  msgid "Only which are listed"
154
  msgstr ""
155
 
156
+ #: ../nggwidget.php:338
157
+ msgid "Gallery ID :"
 
158
  msgstr ""
159
 
160
+ #: ../nggwidget.php:340
161
+ msgid "Gallery IDs, separated by commas."
162
  msgstr ""
163
 
164
  #: ../admin/about.php:9
170
  msgstr ""
171
 
172
  #: ../admin/about.php:12
173
+ msgid "This plugin is primarily developed, maintained, supported, documented by"
 
 
 
 
 
 
 
 
 
 
 
 
 
174
  msgstr ""
175
 
176
+ #: ../admin/about.php:12
177
+ msgid "There are many other folks who have made contributions to this project :"
178
  msgstr ""
179
 
180
+ #: ../admin/about.php:14
181
  msgid "Contributors / Tribute to"
182
  msgstr ""
183
 
184
+ #: ../admin/about.php:15
185
  msgid "If you study the code of this plugin, you will find out that we mixed a lot of good already existing code and ideas together."
186
  msgstr ""
187
 
188
+ #: ../admin/about.php:16
189
  msgid "So, we would like to thank the following people for their pioneer work (without this work it's impossible to create such a plugin so fast)"
190
  msgstr ""
191
 
192
+ #: ../admin/about.php:18
193
  msgid "for their great documented code"
194
  msgstr ""
195
 
196
+ #: ../admin/about.php:19
197
  msgid "for jQuery, which is the best Web2.0 framework"
198
  msgstr ""
199
 
200
+ #: ../admin/about.php:20
201
  msgid "for the fantastic PHP Thumbnail Class"
202
  msgstr ""
203
 
204
+ #: ../admin/about.php:21
205
  msgid "for PclZip , a PHP library that manage ZIP archives"
206
  msgstr ""
207
 
208
+ #: ../admin/about.php:22
209
  msgid "for a lot of very useful plugins and ideas"
210
  msgstr ""
211
 
212
+ #: ../admin/about.php:23
213
  msgid "for RS-Discuss, it saved me a lot of time"
214
  msgstr ""
215
 
216
+ #: ../admin/about.php:24
217
  msgid "for the best Media Flash Scripts on earth"
218
  msgstr ""
219
 
220
+ #: ../admin/about.php:25
221
  msgid "for the Watermark plugin"
222
  msgstr ""
223
 
224
+ #: ../admin/about.php:27
225
  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."
226
  msgstr ""
227
 
228
+ #: ../admin/about.php:28
229
  msgid "How to support ?"
230
  msgstr ""
231
 
232
+ #: ../admin/about.php:29
233
  msgid "There exist several ways to contribute, help or support us in this work. Non of them are mandatory."
234
  msgstr ""
235
 
236
+ #: ../admin/about.php:31
237
  msgid "Send us bugfixes / code changes"
238
  msgstr ""
239
 
240
+ #: ../admin/about.php:31
241
  msgid "The most motivated support for this plugin are your ideas and brain work"
242
  msgstr ""
243
 
244
+ #: ../admin/about.php:32
245
  msgid "Translate the plugin"
246
  msgstr ""
247
 
248
+ #: ../admin/about.php:32
249
  msgid "To help people to work with this plugin, I would like to have it in all avaivable languages"
250
  msgstr ""
251
 
252
+ #: ../admin/about.php:33
253
  msgid "Donate the work via paypal"
254
  msgstr ""
255
 
256
+ #: ../admin/about.php:44
257
  msgid "No doubt a very usefull and easy motivation :-)"
258
  msgstr ""
259
 
260
+ #: ../admin/about.php:46
261
  msgid "Place a link to the plugin in your blog/webpage"
262
  msgstr ""
263
 
264
+ #: ../admin/about.php:46
265
  msgid "Yes, share and trackback is also a good support for this work "
266
  msgstr ""
267
 
268
+ #: ../admin/about.php:48
269
  msgid "Thanks!"
270
  msgstr ""
271
 
272
+ #: ../admin/about.php:49
273
  msgid "We would like to thank this people which support us in the work :"
274
  msgstr ""
275
 
276
+ #: ../admin/addgallery.php:35
277
+ #: ../admin/addgallery.php:51
278
  msgid "Upload failed!"
279
  msgstr ""
280
 
281
+ #: ../admin/addgallery.php:56
282
+ #: ../admin/functions.php:567
283
+ #: ../admin/functions.php:635
284
+ msgid "No gallery selected !"
285
+ msgstr ""
286
+
287
+ #: ../admin/addgallery.php:103
288
+ msgid "Image Files"
289
+ msgstr ""
290
+
291
+ #: ../admin/addgallery.php:121
292
+ #: ../admin/addgallery.php:151
293
  msgid "remove"
294
  msgstr ""
295
 
296
+ #: ../admin/addgallery.php:122
297
+ msgid "Browse..."
298
+ msgstr ""
299
+
300
+ #: ../admin/addgallery.php:123
301
+ #: ../admin/addgallery.php:296
302
+ msgid "Upload images"
303
+ msgstr ""
304
+
305
+ #: ../admin/addgallery.php:167
306
+ #: ../admin/addgallery.php:179
307
  msgid "Add new gallery"
308
  msgstr ""
309
 
310
+ #: ../admin/addgallery.php:169
311
+ #: ../admin/addgallery.php:200
312
  msgid "Upload a Zip-File"
313
  msgstr ""
314
 
315
+ #: ../admin/addgallery.php:172
316
+ #: ../admin/addgallery.php:240
317
  msgid "Import image folder"
318
  msgstr ""
319
 
320
+ #: ../admin/addgallery.php:174
321
+ #: ../admin/addgallery.php:264
322
  msgid "Upload Images"
323
  msgstr ""
324
 
325
+ #: ../admin/addgallery.php:185
326
  msgid "New Gallery"
327
  msgstr ""
328
 
329
+ #: ../admin/addgallery.php:188
330
  msgid "Create a new , empty gallery below the folder"
331
  msgstr ""
332
 
333
+ #: ../admin/addgallery.php:190
334
  msgid "Allowed characters for file and folder names are"
335
  msgstr ""
336
 
337
+ #: ../admin/addgallery.php:193
338
  msgid "Add gallery"
339
  msgstr ""
340
 
341
+ #: ../admin/addgallery.php:206
342
  msgid "Select Zip-File"
343
  msgstr ""
344
 
345
+ #: ../admin/addgallery.php:208
346
  msgid "Upload a zip file with images"
347
  msgstr ""
348
 
349
+ #: ../admin/addgallery.php:211
350
+ #: ../admin/addgallery.php:274
351
  msgid "in to"
352
  msgstr ""
353
 
354
+ #: ../admin/addgallery.php:213
355
  msgid "a new gallery"
356
  msgstr ""
357
 
358
+ #: ../admin/addgallery.php:223
359
+ #: ../admin/addgallery.php:286
360
  msgid "Note : The upload limit on your server is "
361
  msgstr ""
362
 
363
+ #: ../admin/addgallery.php:227
364
+ #: ../admin/addgallery.php:252
365
+ #: ../admin/addgallery.php:290
366
+ msgid "Add Metadata :"
367
+ msgstr ""
368
+
369
+ #: ../admin/addgallery.php:229
370
+ #: ../admin/addgallery.php:254
371
+ #: ../admin/addgallery.php:292
372
+ msgid "Import EXIF, IPTC or XMP data (if available)"
373
+ msgstr ""
374
+
375
+ #: ../admin/addgallery.php:232
376
  msgid "Start upload"
377
  msgstr ""
378
 
379
+ #: ../admin/addgallery.php:246
380
  msgid "Import from Server path:"
381
  msgstr ""
382
 
383
+ #: ../admin/addgallery.php:248
384
  msgid "Import a folder with images. Please note :"
385
  msgstr ""
386
 
387
+ #: ../admin/addgallery.php:249
388
+ msgid "For safe-mode = ON you need to add the subfolder thumbs manually"
389
  msgstr ""
390
 
391
+ #: ../admin/addgallery.php:257
392
  msgid "Import folder"
393
  msgstr ""
394
 
395
+ #: ../admin/addgallery.php:270
396
  msgid "Upload image"
397
  msgstr ""
398
 
399
+ #: ../admin/addgallery.php:276
400
  msgid "Choose gallery"
401
  msgstr ""
402
 
403
+ #: ../admin/admin.php:54
404
+ #: ../admin/functions.php:72
405
+ #: ../admin/functions.php:76
406
+ #: ../admin/functions.php:123
407
+ #: ../admin/manage.php:64
408
+ #: ../admin/manage.php:424
409
+ #: ../admin/settings.php:102
410
+ #: ../admin/uploadtab.php:36
411
+ #: ../admin/_manage.php:182
412
+ #: ../admin/_manage.php:991
413
+ #: ../tinymce/window.php:35
414
+ msgid "Gallery"
415
  msgstr ""
416
 
417
+ #: ../admin/admin.php:55
418
+ msgid "Add Gallery"
419
  msgstr ""
420
 
421
+ #: ../admin/admin.php:56
422
+ msgid "Manage Gallery"
 
 
 
 
423
  msgstr ""
424
 
425
+ #: ../admin/admin.php:57
426
+ #: ../tinymce/window.php:36
427
+ msgid "Album"
428
  msgstr ""
429
 
430
+ #: ../admin/admin.php:58
431
+ msgid "Options"
 
432
  msgstr ""
433
 
434
+ #: ../admin/admin.php:60
435
+ msgid "Style"
436
  msgstr ""
437
 
438
+ #: ../admin/admin.php:61
439
+ msgid "Setup Gallery"
440
  msgstr ""
441
 
442
+ #: ../admin/admin.php:61
443
+ msgid "Setup"
 
 
 
 
444
  msgstr ""
445
 
446
+ #: ../admin/admin.php:63
447
+ msgid "Roles"
 
 
448
  msgstr ""
449
 
450
+ #: ../admin/admin.php:65
451
+ #: ../admin/myimport.php:74
452
+ msgid "Import"
453
  msgstr ""
454
 
455
+ #: ../admin/admin.php:66
456
+ msgid "About this Gallery"
457
  msgstr ""
458
 
459
+ #: ../admin/admin.php:66
460
+ msgid "About"
461
  msgstr ""
462
 
463
+ #: ../admin/admin.php:68
464
+ msgid "NextGEN Gallery"
465
  msgstr ""
466
 
467
+ #: ../admin/album.php:17
468
+ #: ../admin/album.php:36
469
+ msgid "Update Successfully"
470
  msgstr ""
471
 
472
+ #: ../admin/album.php:44
473
+ msgid "Album deleted"
474
  msgstr ""
475
 
476
+ #: ../admin/album.php:123
477
+ msgid "Manage Albums"
 
478
  msgstr ""
479
 
480
+ #: ../admin/album.php:129
481
+ #: ../tinymce/window.php:74
482
+ msgid "Select album"
483
  msgstr ""
484
 
485
+ #: ../admin/album.php:132
486
+ msgid "No album selected"
 
487
  msgstr ""
488
 
489
+ #: ../admin/album.php:145
490
+ msgid "Add new album"
491
  msgstr ""
492
 
493
+ #: ../admin/album.php:149
494
+ #: ../admin/manage.php:302
495
+ #: ../admin/manage.php:568
496
+ #: ../admin/_manage.php:232
497
+ msgid "Delete"
498
  msgstr ""
499
 
500
+ #: ../admin/album.php:149
501
+ msgid "Delete album ?"
502
  msgstr ""
503
 
504
+ #: ../admin/album.php:151
505
+ #: ../admin/settings.php:167
506
+ #: ../admin/settings.php:207
507
+ #: ../admin/settings.php:254
508
+ #: ../admin/settings.php:329
509
+ #: ../admin/settings.php:376
510
+ #: ../admin/settings.php:488
511
+ #: ../admin/settings.php:591
512
+ #: ../admin/wpmu.php:98
513
+ msgid "Update"
514
  msgstr ""
515
 
516
+ #: ../admin/album.php:159
517
+ msgid "[Show all]"
518
  msgstr ""
519
 
520
+ #: ../admin/album.php:160
521
+ msgid "[Maximize]"
 
522
  msgstr ""
523
 
524
+ #: ../admin/album.php:161
525
+ msgid "[Minimize]"
526
  msgstr ""
527
 
528
+ #: ../admin/album.php:163
529
+ msgid "After you create and select a album, you can drag and drop a gallery into your album below"
530
  msgstr ""
531
 
532
+ #: ../admin/album.php:170
533
+ msgid "Select Gallery"
534
  msgstr ""
535
 
536
+ #: ../admin/album.php:209
537
+ msgid "Album Page ID"
538
  msgstr ""
539
 
540
+ #: ../admin/album.php:221
541
+ msgid "No album selected!"
542
  msgstr ""
543
 
544
+ #: ../admin/album.php:257
545
+ #: ../admin/manage.php:276
546
+ #: ../admin/manage.php:523
547
+ #: ../admin/myimport.php:49
548
+ #: ../admin/_manage.php:206
549
+ msgid "ID"
550
  msgstr ""
551
 
552
+ #: ../admin/album.php:258
553
+ msgid "Name"
 
554
  msgstr ""
555
 
556
+ #: ../admin/album.php:259
557
+ #: ../admin/manage.php:278
558
+ #: ../admin/manage.php:436
559
+ #: ../admin/myimport.php:51
560
+ #: ../admin/_manage.php:208
561
+ #: ../admin/_manage.php:1005
562
+ #: ../admin/js/uploadtab.js.php:109
563
+ #: ../lib/nggmeta.lib.php:373
564
+ msgid "Title"
565
  msgstr ""
566
 
567
+ #: ../admin/album.php:260
568
+ msgid "Page"
569
  msgstr ""
570
 
571
+ #: ../admin/functions.php:22
572
+ msgid "No valid gallery name!"
573
  msgstr ""
574
 
575
+ #: ../admin/functions.php:29
576
+ #: ../admin/functions.php:39
577
+ #: ../admin/functions.php:53
578
+ #: ../admin/functions.php:96
579
+ #: ../admin/functions.php:103
580
+ msgid "Directory"
581
  msgstr ""
582
 
583
+ #: ../admin/functions.php:29
584
+ msgid "didn't exist. Please create first the main gallery folder "
585
  msgstr ""
586
 
587
+ #: ../admin/functions.php:30
588
+ #: ../admin/functions.php:40
589
+ msgid "Check this link, if you didn't know how to set the permission :"
590
  msgstr ""
591
 
592
+ #: ../admin/functions.php:39
593
+ #: ../admin/functions.php:53
594
+ msgid "is not writeable !"
595
  msgstr ""
596
 
597
+ #: ../admin/functions.php:47
598
+ msgid "Directory "
599
  msgstr ""
600
 
601
+ #: ../admin/functions.php:47
602
+ msgid "already exists!"
603
  msgstr ""
604
 
605
+ #: ../admin/functions.php:51
606
+ #: ../admin/functions.php:55
607
+ #: ../admin/functions.php:515
608
+ #: ../lib/nggallery.lib.php:297
609
+ msgid "Unable to create directory "
610
  msgstr ""
611
 
612
+ #: ../admin/functions.php:58
613
+ msgid "The server setting Safe-Mode is on !"
614
  msgstr ""
615
 
616
+ #: ../admin/functions.php:59
617
+ msgid "If you have problems, please create directory"
618
  msgstr ""
619
 
620
+ #: ../admin/functions.php:60
621
+ msgid "and the thumbnails directory"
622
  msgstr ""
623
 
624
+ #: ../admin/functions.php:60
625
+ msgid "with permission 777 manually !"
 
626
  msgstr ""
627
 
628
+ #: ../admin/functions.php:72
629
+ msgid "already exists"
630
  msgstr ""
631
 
632
+ #: ../admin/functions.php:76
633
+ #: ../admin/functions.php:123
634
+ msgid "successfully created!"
635
  msgstr ""
636
 
637
+ #: ../admin/functions.php:76
638
+ msgid "You can show this gallery with the tag"
 
639
  msgstr ""
640
 
641
+ #: ../admin/functions.php:96
642
+ msgid "doesn&#96;t exist!"
643
  msgstr ""
644
 
645
+ #: ../admin/functions.php:103
646
+ msgid "contains no pictures"
647
  msgstr ""
648
 
649
+ #: ../admin/functions.php:120
650
+ #: ../admin/myimport.php:38
651
+ msgid "Database error. Could not add gallery!"
652
  msgstr ""
653
 
654
+ #: ../admin/functions.php:139
655
+ msgid " picture(s) successfully added"
656
  msgstr ""
657
 
658
+ #: ../admin/functions.php:169
659
+ #: ../admin/functions.php:216
660
+ #: ../admin/functions.php:277
661
+ msgid "Running... Please wait"
662
  msgstr ""
663
 
664
+ #: ../admin/functions.php:170
665
+ #: ../admin/manage.php:500
666
+ msgid "Resize images"
667
  msgstr ""
668
 
669
+ #: ../admin/functions.php:192
670
+ msgid " : Image resized..."
 
 
 
 
 
 
 
671
  msgstr ""
672
 
673
+ #: ../admin/functions.php:201
674
+ #: ../admin/functions.php:256
675
+ msgid "Some pictures are not writeable :"
676
  msgstr ""
677
 
678
+ #: ../admin/functions.php:217
679
+ #: ../admin/manage.php:498
680
+ msgid "Set watermark"
681
  msgstr ""
682
 
683
+ #: ../admin/functions.php:247
684
+ msgid " : Watermark created..."
685
  msgstr ""
686
 
687
+ #: ../admin/functions.php:278
688
+ #: ../admin/manage.php:499
689
+ msgid "Create new thumbnails"
690
  msgstr ""
691
 
692
+ #: ../admin/functions.php:343
693
+ msgid " : Thumbnail created..."
694
  msgstr ""
695
 
696
+ #: ../admin/functions.php:348
697
+ msgid "Follow thumbnails could not created."
698
  msgstr ""
699
 
700
+ #: ../admin/functions.php:349
701
+ msgid "Some thumbnails are not writeable :"
 
 
 
702
  msgstr ""
703
 
704
+ #: ../admin/functions.php:450
705
+ msgid "The Zip-file is too large. Exceed Memory limit !"
706
  msgstr ""
707
 
708
+ #: ../admin/functions.php:491
709
+ msgid "Uploaded file was no or a faulty zip file ! The server recognize : "
710
+ msgstr ""
711
+
712
+ #: ../admin/functions.php:510
713
+ #, php-format
714
+ msgid "Unable to create directory %s. Is its parent directory writable by the server?"
715
+ msgstr ""
716
+
717
+ #: ../admin/functions.php:525
718
+ msgid "Zip-File successfully unpacked"
719
+ msgstr ""
720
+
721
+ #: ../admin/functions.php:566
722
+ #: ../admin/functions.php:574
723
+ msgid "Unable to unlink file "
724
+ msgstr ""
725
+
726
+ #: ../admin/functions.php:575
727
+ #: ../admin/functions.php:660
728
+ msgid "Failure in database, no gallery path set !"
729
+ msgstr ""
730
+
731
+ #: ../admin/functions.php:582
732
+ #: ../admin/functions.php:653
733
+ msgid "is no valid image file!"
734
+ msgstr ""
735
+
736
+ #: ../admin/functions.php:590
737
+ #, php-format
738
+ msgid "Unable to write to directory %s. Is this directory writable by the server?"
739
+ msgstr ""
740
+
741
+ #: ../admin/functions.php:597
742
+ #: ../admin/functions.php:677
743
+ msgid "Error, the file could not moved to : "
744
+ msgstr ""
745
+
746
+ #: ../admin/functions.php:602
747
+ #: ../admin/functions.php:681
748
+ msgid "Error, the file permissions could not set"
749
+ msgstr ""
750
+
751
+ #: ../admin/functions.php:620
752
+ msgid " Image(s) successfully added"
753
+ msgstr ""
754
+
755
+ #: ../admin/functions.php:640
756
+ msgid "Invalid upload. Error Code : "
757
+ msgstr ""
758
+
759
+ #: ../admin/functions.php:692
760
+ msgid "Sorry, you have used your space allocation. Please delete some files to upload more files."
761
+ msgstr ""
762
+
763
+ #: ../admin/functions.php:719
764
+ #, php-format
765
+ msgid "SAFE MODE Restriction in effect! You need to create the folder <strong>%s</strong> manually"
766
+ msgstr ""
767
+
768
+ #: ../admin/functions.php:720
769
+ #, php-format
770
+ 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"
771
  msgstr ""
772
 
773
  #: ../admin/manage.php:64
774
  #: ../admin/manage.php:85
775
+ #: ../admin/_manage.php:182
776
  msgid "deleted successfully"
777
  msgstr ""
778
 
792
  msgid "Pictures deleted successfully "
793
  msgstr ""
794
 
795
+ #: ../admin/manage.php:145
796
+ msgid "Import metadata finished"
797
  msgstr ""
798
 
799
+ #: ../admin/manage.php:195
800
+ msgid "Tags changed"
801
  msgstr ""
802
 
803
+ #: ../admin/manage.php:215
804
+ msgid "Update successful"
805
  msgstr ""
806
 
807
+ #: ../admin/manage.php:249
808
  msgid "New gallery page ID"
809
  msgstr ""
810
 
811
+ #: ../admin/manage.php:249
812
  msgid "created"
813
  msgstr ""
814
 
815
+ #: ../admin/manage.php:272
816
+ #: ../admin/_manage.php:202
817
  msgid "Gallery Overview"
818
  msgstr ""
819
 
820
+ #: ../admin/manage.php:277
821
  #: ../admin/myimport.php:50
822
+ #: ../admin/_manage.php:207
823
  msgid "Gallery name"
824
  msgstr ""
825
 
826
+ #: ../admin/manage.php:279
827
+ #: ../admin/manage.php:455
828
+ #: ../admin/manage.php:529
829
+ #: ../admin/myimport.php:52
830
+ #: ../admin/style.php:102
831
+ #: ../admin/uploadtab.php:180
832
+ #: ../admin/_manage.php:209
833
+ #: ../admin/_manage.php:1024
834
+ #: ../admin/js/uploadtab.js.php:172
835
+ msgid "Description"
836
+ msgstr ""
837
+
838
+ #: ../admin/manage.php:280
839
  #: ../admin/myimport.php:53
840
+ #: ../admin/_manage.php:210
841
  msgid "Page ID"
842
  msgstr ""
843
 
844
+ #: ../admin/manage.php:281
845
  #: ../admin/myimport.php:54
846
+ #: ../admin/_manage.php:211
847
  msgid "Quantity"
848
  msgstr ""
849
 
850
+ #: ../admin/manage.php:282
851
+ #: ../admin/manage.php:535
852
  #: ../admin/myimport.php:55
853
+ #: ../admin/_manage.php:212
854
  msgid "Action"
855
  msgstr ""
856
 
857
+ #: ../admin/manage.php:301
858
+ #: ../admin/_manage.php:231
859
+ #: ../admin/js/uploadtab.js.php:93
860
  msgid "Edit"
861
  msgstr ""
862
 
863
+ #: ../admin/manage.php:302
864
+ #: ../admin/_manage.php:232
865
  msgid "Delete this gallery ?"
866
  msgstr ""
867
 
868
+ #: ../admin/manage.php:307
869
+ #: ../admin/manage.php:573
870
  #: ../admin/myimport.php:79
871
+ #: ../admin/_manage.php:237
872
+ #: ../admin/_manage.php:1155
873
  msgid "No entries found"
874
  msgstr ""
875
 
876
+ #: ../admin/manage.php:433
877
+ #: ../admin/_manage.php:1001
878
  msgid "Main settings"
879
  msgstr ""
880
 
881
+ #: ../admin/manage.php:438
882
+ #: ../admin/_manage.php:1007
883
  msgid "Page Link to"
884
  msgstr ""
885
 
886
+ #: ../admin/manage.php:441
887
+ #: ../admin/_manage.php:1010
888
  msgid "Not linked"
889
  msgstr ""
890
 
891
+ #: ../admin/manage.php:457
892
+ #: ../admin/_manage.php:1026
893
  msgid "Preview image"
894
  msgstr ""
895
 
896
+ #: ../admin/manage.php:460
897
+ #: ../admin/_manage.php:1029
898
  msgid "No Picture"
899
  msgstr ""
900
 
901
+ #: ../admin/manage.php:475
902
+ #: ../admin/_manage.php:1043
903
  msgid "Path"
904
  msgstr ""
905
 
906
+ #: ../admin/manage.php:478
907
+ #: ../admin/_manage.php:1045
908
  msgid "Create new page"
909
  msgstr ""
910
 
911
+ #: ../admin/manage.php:481
912
+ #: ../admin/_manage.php:1048
913
  msgid "Main page (No parent)"
914
  msgstr ""
915
 
916
+ #: ../admin/manage.php:484
917
+ #: ../admin/_manage.php:1051
918
  msgid "Add page"
919
  msgstr ""
920
 
921
+ #: ../admin/manage.php:490
922
+ #: ../admin/_manage.php:1057
923
  msgid "Scan Folder for new images"
924
  msgstr ""
925
 
926
+ #: ../admin/manage.php:491
927
+ #: ../admin/manage.php:580
928
+ #: ../admin/_manage.php:1058
929
  msgid "Save Changes"
930
  msgstr ""
931
 
932
+ #: ../admin/manage.php:496
933
  msgid "No action"
934
  msgstr ""
935
 
936
+ #: ../admin/manage.php:501
937
+ msgid "Delete images"
 
 
 
 
 
 
 
 
938
  msgstr ""
939
 
940
+ #: ../admin/manage.php:502
941
+ msgid "Import metadata"
942
  msgstr ""
943
 
944
+ #: ../admin/manage.php:504
945
  msgid "Add tags"
946
  msgstr ""
947
 
948
+ #: ../admin/manage.php:505
949
  msgid "Delete tags"
950
  msgstr ""
951
 
952
+ #: ../admin/manage.php:506
953
  msgid "Overwrite tags"
954
  msgstr ""
955
 
956
+ #: ../admin/manage.php:510
957
+ #: ../admin/manage.php:511
958
+ #: ../admin/manage.php:598
959
  msgid "OK"
960
  msgstr ""
961
 
962
+ #: ../admin/manage.php:510
963
+ #: ../admin/manage.php:598
964
  msgid "No images selected"
965
  msgstr ""
966
 
967
+ #: ../admin/manage.php:510
968
+ #: ../admin/manage.php:598
969
  #, php-format
970
  msgid ""
971
  "You are about to start the bulk edit for %s images \n"
973
  " 'Cancel' to stop, 'OK' to proceed."
974
  msgstr ""
975
 
976
+ #: ../admin/manage.php:512
977
  msgid "Hide thumbnails "
978
  msgstr ""
979
 
980
+ #: ../admin/manage.php:513
981
  msgid "Show thumbnails "
982
  msgstr ""
983
 
984
+ #: ../admin/manage.php:514
985
+ msgid "Show tags"
986
+ msgstr ""
987
+
988
+ #: ../admin/manage.php:515
989
+ msgid "Hide tags"
990
+ msgstr ""
991
+
992
+ #: ../admin/manage.php:524
993
+ #: ../admin/settings.php:318
994
+ msgid "File name"
995
  msgstr ""
996
 
997
  #: ../admin/manage.php:526
998
+ #: ../admin/js/uploadtab.js.php:106
999
+ msgid "Thumbnail"
1000
  msgstr ""
1001
 
1002
+ #: ../admin/manage.php:530
1003
+ #: ../admin/uploadtab.php:176
1004
+ #: ../admin/js/uploadtab.js.php:169
1005
+ msgid "Alt &amp; Title Text"
1006
  msgstr ""
1007
 
1008
+ #: ../admin/manage.php:531
1009
  msgid "exclude"
1010
  msgstr ""
1011
 
1012
+ #: ../admin/manage.php:533
1013
  msgid "Tags (comma separated list)"
1014
  msgstr ""
1015
 
1016
+ #: ../admin/manage.php:566
1017
  msgid "View"
1018
  msgstr ""
1019
 
1020
+ #: ../admin/manage.php:567
1021
  msgid "Show Meta data"
1022
  msgstr ""
1023
 
1024
+ #: ../admin/manage.php:567
1025
  msgid "Meta"
1026
  msgstr ""
1027
 
1028
+ #: ../admin/manage.php:568
1029
  msgid "Delete this file ?"
1030
  msgstr ""
1031
 
1032
+ #: ../admin/manage.php:595
1033
  msgid "Enter the tags"
1034
  msgstr ""
1035
 
1036
+ #: ../admin/manage.php:598
1037
+ #: ../tinymce/window.php:146
1038
+ msgid "Cancel"
1039
+ msgstr ""
1040
+
1041
  #: ../admin/myimport.php:35
1042
  msgid "Gallery "
1043
  msgstr ""
1079
  msgid "Download here"
1080
  msgstr ""
1081
 
1082
+ #: ../admin/overview.php:42
1083
  msgid "Server Settings"
1084
  msgstr ""
1085
 
1086
+ #: ../admin/overview.php:50
1087
  msgid "Welcome"
1088
  msgstr ""
1089
 
1090
+ #: ../admin/overview.php:54
1091
  msgid "gallery administrator"
1092
  msgstr ""
1093
 
1094
+ #: ../admin/overview.php:54
1095
  msgid "gallery editor"
1096
  msgstr ""
1097
 
1098
+ #: ../admin/overview.php:55
1099
  #, php-format
1100
  msgid "Welcome to NextGEN Gallery. Here you can control your images, galleries and albums. You currently have %s rights."
1101
  msgstr ""
1102
 
1103
+ #: ../admin/overview.php:60
1104
  msgid "Add a new gallery or import pictures"
1105
  msgstr ""
1106
 
1107
+ #: ../admin/overview.php:61
1108
  msgid "Manage galleries and images"
1109
  msgstr ""
1110
 
1111
+ #: ../admin/overview.php:62
1112
  msgid "Create and manage albums"
1113
  msgstr ""
1114
 
1115
+ #: ../admin/overview.php:63
1116
  msgid "Change the settings of NextGEN Gallery"
1117
  msgstr ""
1118
 
1119
+ #: ../admin/overview.php:66
1120
  msgid "Latest News"
1121
  msgstr ""
1122
 
1123
+ #: ../admin/overview.php:85
1124
  #, php-format
1125
  msgid "Newsfeed could not be loaded. Check the <a href=\"%s\">front page</a> to check for updates."
1126
  msgstr ""
1127
 
1128
+ #: ../admin/overview.php:98
1129
  msgid "GD support"
1130
  msgstr ""
1131
 
1132
+ #: ../admin/overview.php:109
1133
  msgid "No GD support"
1134
  msgstr ""
1135
 
1136
+ #: ../admin/overview.php:116
1137
+ #: ../admin/overview.php:154
1138
+ #: ../admin/overview.php:157
1139
+ #: ../admin/overview.php:160
1140
  msgid "Yes"
1141
  msgstr ""
1142
 
1143
+ #: ../admin/overview.php:117
1144
+ #: ../admin/overview.php:155
1145
+ #: ../admin/overview.php:158
1146
+ #: ../admin/overview.php:161
1147
  msgid "No"
1148
  msgstr ""
1149
 
1150
+ #: ../admin/overview.php:131
1151
  msgid "Not set"
1152
  msgstr ""
1153
 
1154
+ #: ../admin/overview.php:133
1155
+ #: ../admin/overview.php:136
1156
  msgid "On"
1157
  msgstr ""
1158
 
1159
+ #: ../admin/overview.php:134
1160
+ #: ../admin/overview.php:137
1161
  msgid "Off"
1162
  msgstr ""
1163
 
1164
+ #: ../admin/overview.php:140
1165
+ #: ../admin/overview.php:143
1166
+ #: ../admin/overview.php:146
1167
+ #: ../admin/overview.php:149
1168
+ #: ../admin/overview.php:152
1169
  msgid "N/A"
1170
  msgstr ""
1171
 
1172
+ #: ../admin/overview.php:151
1173
  msgid " MByte"
1174
  msgstr ""
1175
 
1176
+ #: ../admin/overview.php:164
1177
  msgid "Operating System"
1178
  msgstr ""
1179
 
1180
+ #: ../admin/overview.php:165
1181
  msgid "Server"
1182
  msgstr ""
1183
 
1184
+ #: ../admin/overview.php:166
1185
  msgid "Memory usage"
1186
  msgstr ""
1187
 
1188
+ #: ../admin/overview.php:167
1189
  msgid "MYSQL Version"
1190
  msgstr ""
1191
 
1192
+ #: ../admin/overview.php:168
1193
  msgid "SQL Mode"
1194
  msgstr ""
1195
 
1196
+ #: ../admin/overview.php:169
1197
  msgid "PHP Version"
1198
  msgstr ""
1199
 
1200
+ #: ../admin/overview.php:170
1201
  msgid "PHP Safe Mode"
1202
  msgstr ""
1203
 
1204
+ #: ../admin/overview.php:171
1205
  msgid "PHP Allow URL fopen"
1206
  msgstr ""
1207
 
1208
+ #: ../admin/overview.php:172
1209
  msgid "PHP Memory Limit"
1210
  msgstr ""
1211
 
1212
+ #: ../admin/overview.php:173
1213
  msgid "PHP Max Upload Size"
1214
  msgstr ""
1215
 
1216
+ #: ../admin/overview.php:174
1217
  msgid "PHP Max Post Size"
1218
  msgstr ""
1219
 
1220
+ #: ../admin/overview.php:175
1221
  msgid "PHP Max Script Execute Time"
1222
  msgstr ""
1223
 
1224
+ #: ../admin/overview.php:176
1225
+ msgid "PHP Exif support"
1226
+ msgstr ""
1227
+
1228
+ #: ../admin/overview.php:177
1229
+ msgid "PHP IPTC support"
1230
+ msgstr ""
1231
+
1232
+ #: ../admin/overview.php:178
1233
+ msgid "PHP XML support"
1234
+ msgstr ""
1235
+
1236
+ #: ../admin/overview.php:319
1237
+ msgid "Storage Space"
1238
+ msgstr ""
1239
+
1240
+ #: ../admin/overview.php:322
1241
+ msgid "Upload Space Used:"
1242
+ msgstr ""
1243
+
1244
+ #: ../admin/overview.php:328
1245
+ msgid "Upload Space Remaining:"
1246
+ msgstr ""
1247
+
1248
  #: ../admin/roles.php:20
1249
  msgid "Updated capabilities"
1250
  msgstr ""
1295
 
1296
  #: ../admin/settings.php:29
1297
  #: ../admin/style.php:16
1298
+ #: ../admin/wpmu.php:32
1299
  msgid "Update successfully"
1300
  msgstr ""
1301
 
1302
+ #: ../admin/settings.php:46
1303
+ msgid "Cache cleared"
 
1304
  msgstr ""
1305
 
1306
+ #: ../admin/settings.php:99
1307
+ #: ../admin/settings.php:111
1308
+ msgid "General Options"
1309
  msgstr ""
1310
 
1311
+ #: ../admin/settings.php:101
1312
  msgid "Images"
1313
  msgstr ""
1314
 
1315
+ #: ../admin/settings.php:103
1316
+ #: ../admin/settings.php:337
1317
  msgid "Effects"
1318
  msgstr ""
1319
 
1320
+ #: ../admin/settings.php:104
1321
+ #: ../admin/settings.php:390
1322
+ #: ../tinymce/window.php:123
1323
+ msgid "Watermark"
1324
+ msgstr ""
1325
+
1326
+ #: ../admin/settings.php:105
1327
+ #: ../admin/settings.php:296
1328
+ #: ../admin/settings.php:498
1329
+ #: ../tinymce/window.php:63
1330
+ msgid "Slideshow"
1331
+ msgstr ""
1332
+
1333
+ #: ../admin/settings.php:118
1334
+ #: ../admin/wpmu.php:48
1335
  msgid "Gallery path"
1336
  msgstr ""
1337
 
1338
+ #: ../admin/settings.php:120
1339
  msgid "This is the default path for all galleries"
1340
  msgstr ""
1341
 
1342
+ #: ../admin/settings.php:131
1343
  msgid "Delete image files"
1344
  msgstr ""
1345
 
1346
+ #: ../admin/settings.php:133
1347
  msgid "Delete files, when removing a gallery in the database"
1348
  msgstr ""
1349
 
1350
+ #: ../admin/settings.php:136
1351
+ msgid "Activate batch upload"
1352
+ msgstr ""
1353
+
1354
+ #: ../admin/settings.php:138
1355
+ msgid "The batch upload requires Adobe Flash 9, disable it if you have problems"
1356
+ msgstr ""
1357
+
1358
+ #: ../admin/settings.php:141
1359
+ msgid "Activate permalinks"
1360
+ msgstr ""
1361
+
1362
+ #: ../admin/settings.php:143
1363
+ msgid "When you activate this option, you need to update your permalink structure one time."
1364
+ msgstr ""
1365
+
1366
+ #: ../admin/settings.php:146
1367
  msgid "Tags / Categories"
1368
  msgstr ""
1369
 
1370
+ #: ../admin/settings.php:149
1371
  msgid "Activate related images"
1372
  msgstr ""
1373
 
1374
+ #: ../admin/settings.php:151
1375
  msgid "This option will append related images to every post"
1376
  msgstr ""
1377
 
1378
+ #: ../admin/settings.php:155
1379
  msgid "Match with"
1380
  msgstr ""
1381
 
1382
+ #: ../admin/settings.php:156
1383
  msgid "Categories"
1384
  msgstr ""
1385
 
1386
+ #: ../admin/settings.php:157
1387
+ #: ../lib/nggmeta.lib.php:375
1388
  msgid "Tags"
1389
  msgstr ""
1390
 
1391
+ #: ../admin/settings.php:157
1392
  msgid " (require WordPress 2.3 or higher)"
1393
  msgstr ""
1394
 
1395
+ #: ../admin/settings.php:161
1396
  msgid "Max. number of images"
1397
  msgstr ""
1398
 
1399
+ #: ../admin/settings.php:163
1400
  msgid "0 will show all images"
1401
  msgstr ""
1402
 
1403
+ #: ../admin/settings.php:175
1404
  msgid "Thumbnail settings"
1405
  msgstr ""
1406
 
1407
+ #: ../admin/settings.php:180
1408
  msgid "Please note : If you change the settings, you need to recreate the thumbnails under -> Manage Gallery ."
1409
  msgstr ""
1410
 
1411
+ #: ../admin/settings.php:183
1412
  msgid "Width x height (in pixel)"
1413
  msgstr ""
1414
 
1415
+ #: ../admin/settings.php:185
1416
  msgid "These values are maximum values "
1417
  msgstr ""
1418
 
1419
+ #: ../admin/settings.php:188
1420
  msgid "Set fix dimension"
1421
  msgstr ""
1422
 
1423
+ #: ../admin/settings.php:190
1424
  msgid "Ignore the aspect ratio, no portrait thumbnails"
1425
  msgstr ""
1426
 
1427
+ #: ../admin/settings.php:193
1428
  msgid "Crop square thumbnail from image"
1429
  msgstr ""
1430
 
1431
+ #: ../admin/settings.php:195
1432
  msgid "Create square thumbnails, use only the width setting :"
1433
  msgstr ""
1434
 
1435
+ #: ../admin/settings.php:198
1436
  msgid "Thumbnail quality"
1437
  msgstr ""
1438
 
1439
+ #: ../admin/settings.php:202
1440
+ #: ../admin/settings.php:234
1441
  msgid "Resample Mode"
1442
  msgstr ""
1443
 
1444
+ #: ../admin/settings.php:204
1445
+ #: ../admin/settings.php:237
1446
  msgid "Value between 1-5 (higher value, more CPU load)"
1447
  msgstr ""
1448
 
1449
+ #: ../admin/settings.php:215
1450
  msgid "Image settings"
1451
  msgstr ""
1452
 
1453
+ #: ../admin/settings.php:222
1454
  msgid "Resize Images"
1455
  msgstr ""
1456
 
1457
+ #: ../admin/settings.php:226
1458
  msgid "Width x height (in pixel). NextGEN Gallery will keep ratio size"
1459
  msgstr ""
1460
 
1461
+ #: ../admin/settings.php:229
1462
  msgid "Image quality"
1463
  msgstr ""
1464
 
1465
+ #: ../admin/settings.php:240
1466
+ msgid "Single picture"
1467
+ msgstr ""
1468
+
1469
+ #: ../admin/settings.php:243
1470
+ msgid "Cache single pictures"
1471
+ msgstr ""
1472
+
1473
+ #: ../admin/settings.php:246
1474
+ msgid "Creates a file for each singlepic settings. Reduce the CPU load"
1475
+ msgstr ""
1476
+
1477
+ #: ../admin/settings.php:249
1478
+ msgid "Clear cache folder"
1479
+ msgstr ""
1480
+
1481
+ #: ../admin/settings.php:251
1482
+ msgid "Proceed now"
1483
+ msgstr ""
1484
+
1485
+ #: ../admin/settings.php:262
1486
  msgid "Gallery settings"
1487
  msgstr ""
1488
 
1489
+ #: ../admin/settings.php:269
1490
  msgid "Activate jQuery navigation"
1491
  msgstr ""
1492
 
1493
+ #: ../admin/settings.php:271
1494
  msgid "Please note : This is still experimental. Requires the Thickbox effect"
1495
  msgstr ""
1496
 
1497
+ #: ../admin/settings.php:275
1498
  msgid "Deactivate gallery page link"
1499
  msgstr ""
1500
 
1501
+ #: ../admin/settings.php:277
1502
  msgid "The album will not link to a gallery subpage. The gallery is shown on the same page."
1503
  msgstr ""
1504
 
1505
+ #: ../admin/settings.php:281
1506
  msgid "Number of images per page"
1507
  msgstr ""
1508
 
1509
+ #: ../admin/settings.php:283
1510
  msgid "0 will disable pagination, all images on one page"
1511
  msgstr ""
1512
 
1513
+ #: ../admin/settings.php:287
1514
  msgid "Integrate slideshow"
1515
  msgstr ""
1516
 
1517
+ #: ../admin/settings.php:294
1518
  msgid "Show first"
1519
  msgstr ""
1520
 
1521
+ #: ../admin/settings.php:300
1522
  msgid "Show thumbnail description"
1523
  msgstr ""
1524
 
1525
+ #: ../admin/settings.php:301
1526
+ #: ../admin/settings.php:349
1527
+ #: ../admin/js/uploadtab.js.php:117
1528
  msgid "None"
1529
  msgstr ""
1530
 
1531
+ #: ../admin/settings.php:302
1532
  msgid "Description text"
1533
  msgstr ""
1534
 
1535
+ #: ../admin/settings.php:303
1536
+ #: ../admin/settings.php:319
1537
  msgid "Alt / Title text"
1538
  msgstr ""
1539
 
1540
+ #: ../admin/settings.php:307
1541
  msgid "Show ImageBrowser"
1542
  msgstr ""
1543
 
1544
+ #: ../admin/settings.php:309
1545
  msgid "The gallery will open the ImageBrowser instead the effect."
1546
  msgstr ""
1547
 
1548
+ #: ../admin/settings.php:313
1549
  msgid "Sort options"
1550
  msgstr ""
1551
 
1552
+ #: ../admin/settings.php:316
1553
  msgid "Sort thumbnails"
1554
  msgstr ""
1555
 
1556
+ #: ../admin/settings.php:317
1557
  msgid "Image ID"
1558
  msgstr ""
1559
 
1560
+ #: ../admin/settings.php:323
1561
  msgid "Sort direction"
1562
  msgstr ""
1563
 
1564
+ #: ../admin/settings.php:324
1565
  msgid "Ascending"
1566
  msgstr ""
1567
 
1568
+ #: ../admin/settings.php:325
1569
  msgid "Descending"
1570
  msgstr ""
1571
 
1572
+ #: ../admin/settings.php:341
1573
  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."
1574
  msgstr ""
1575
 
1576
+ #: ../admin/settings.php:342
1577
  msgid "With the placeholder"
1578
  msgstr ""
1579
 
1580
+ #: ../admin/settings.php:342
1581
  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."
1582
  msgstr ""
1583
 
1584
+ #: ../admin/settings.php:346
1585
  msgid "JavaScript Thumbnail effect"
1586
  msgstr ""
1587
 
1588
+ #: ../admin/settings.php:350
1589
  msgid "Thickbox"
1590
  msgstr ""
1591
 
1592
+ #: ../admin/settings.php:351
1593
  msgid "Lightbox"
1594
  msgstr ""
1595
 
1596
+ #: ../admin/settings.php:352
1597
  msgid "Highslide"
1598
  msgstr ""
1599
 
1600
+ #: ../admin/settings.php:353
1601
  msgid "Shutter"
1602
  msgstr ""
1603
 
1604
+ #: ../admin/settings.php:354
1605
  msgid "Custom"
1606
  msgstr ""
1607
 
1608
+ #: ../admin/settings.php:359
1609
  msgid "Link Code line"
1610
  msgstr ""
1611
 
1612
+ #: ../admin/settings.php:367
1613
  msgid "Select loading image"
1614
  msgstr ""
1615
 
1616
+ #: ../admin/settings.php:391
1617
  msgid "Please note : You can only activate the watermark under -> Manage Gallery . This action cannot be undone."
1618
  msgstr ""
1619
 
1620
+ #: ../admin/settings.php:396
1621
  msgid "Preview"
1622
  msgstr ""
1623
 
1624
+ #: ../admin/settings.php:398
1625
+ #: ../admin/settings.php:402
1626
  msgid "Position"
1627
  msgstr ""
1628
 
1629
+ #: ../admin/settings.php:422
1630
  msgid "Offset"
1631
  msgstr ""
1632
 
1633
+ #: ../admin/settings.php:440
1634
  msgid "Use image as watermark"
1635
  msgstr ""
1636
 
1637
+ #: ../admin/settings.php:443
1638
  msgid "URL to file"
1639
  msgstr ""
1640
 
1641
+ #: ../admin/settings.php:445
1642
  msgid "The accessing of URL files is disabled at your server (allow_url_fopen)"
1643
  msgstr ""
1644
 
1645
+ #: ../admin/settings.php:451
1646
  msgid "Use text as watermark"
1647
  msgstr ""
1648
 
1649
+ #: ../admin/settings.php:454
1650
  msgid "Font"
1651
  msgstr ""
1652
 
1653
+ #: ../admin/settings.php:463
1654
+ msgid "This function will not work, cause you need the FreeType library"
1655
+ msgstr ""
1656
+
1657
+ #: ../admin/settings.php:465
1658
  msgid "You can upload more fonts in the folder <strong>nggallery/fonts</strong>"
1659
  msgstr ""
1660
 
1661
+ #: ../admin/settings.php:469
1662
  msgid "Size"
1663
  msgstr ""
1664
 
1665
+ #: ../admin/settings.php:473
1666
  msgid "Color"
1667
  msgstr ""
1668
 
1669
+ #: ../admin/settings.php:475
1670
  msgid "(hex w/o #)"
1671
  msgstr ""
1672
 
1673
+ #: ../admin/settings.php:478
1674
  msgid "Text"
1675
  msgstr ""
1676
 
1677
+ #: ../admin/settings.php:482
1678
  msgid "Opaque"
1679
  msgstr ""
1680
 
1681
+ #: ../admin/settings.php:500
1682
  msgid "The imagerotator.swf is not in the nggallery folder, the slideshow will not work."
1683
  msgstr ""
1684
 
1685
+ #: ../admin/settings.php:501
1686
  msgid "The settings are used in the JW Image Rotator Version 3.9 ."
1687
  msgstr ""
1688
 
1689
+ #: ../admin/settings.php:502
1690
  msgid "See more information for the Flash Player on the web page"
1691
  msgstr ""
1692
 
1693
+ #: ../admin/settings.php:505
1694
  msgid "Default size (W x H)"
1695
  msgstr ""
1696
 
1697
+ #: ../admin/settings.php:510
1698
  msgid "Shuffle mode"
1699
  msgstr ""
1700
 
1701
+ #: ../admin/settings.php:514
1702
  msgid "Show next image on click"
1703
  msgstr ""
1704
 
1705
+ #: ../admin/settings.php:518
1706
  msgid "Show navigation bar"
1707
  msgstr ""
1708
 
1709
+ #: ../admin/settings.php:522
1710
  msgid "Show loading icon"
1711
  msgstr ""
1712
 
1713
+ #: ../admin/settings.php:526
1714
  msgid "Use watermark logo"
1715
  msgstr ""
1716
 
1717
+ #: ../admin/settings.php:528
1718
  msgid "You can change the logo at the watermark settings"
1719
  msgstr ""
1720
 
1721
+ #: ../admin/settings.php:531
1722
  msgid "Stretch image"
1723
  msgstr ""
1724
 
1725
+ #: ../admin/settings.php:534
1726
  msgid "true"
1727
  msgstr ""
1728
 
1729
+ #: ../admin/settings.php:535
1730
  msgid "false"
1731
  msgstr ""
1732
 
1733
+ #: ../admin/settings.php:536
1734
  msgid "fit"
1735
  msgstr ""
1736
 
1737
+ #: ../admin/settings.php:537
1738
+ msgid "none"
1739
+ msgstr ""
1740
+
1741
+ #: ../admin/settings.php:542
1742
  msgid "Duration time"
1743
  msgstr ""
1744
 
1745
+ #: ../admin/settings.php:543
1746
  msgid "sec."
1747
  msgstr ""
1748
 
1749
+ #: ../admin/settings.php:546
1750
  msgid "Transition / Fade effect"
1751
  msgstr ""
1752
 
1753
+ #: ../admin/settings.php:549
1754
  msgid "fade"
1755
  msgstr ""
1756
 
1757
+ #: ../admin/settings.php:550
1758
  msgid "bgfade"
1759
  msgstr ""
1760
 
1761
+ #: ../admin/settings.php:551
1762
  msgid "slowfade"
1763
  msgstr ""
1764
 
1765
+ #: ../admin/settings.php:552
1766
  msgid "circles"
1767
  msgstr ""
1768
 
1769
+ #: ../admin/settings.php:553
1770
  msgid "bubbles"
1771
  msgstr ""
1772
 
1773
+ #: ../admin/settings.php:554
1774
  msgid "blocks"
1775
  msgstr ""
1776
 
1777
+ #: ../admin/settings.php:555
1778
  msgid "fluids"
1779
  msgstr ""
1780
 
1781
+ #: ../admin/settings.php:556
1782
  msgid "flash"
1783
  msgstr ""
1784
 
1785
+ #: ../admin/settings.php:557
1786
  msgid "lines"
1787
  msgstr ""
1788
 
1789
+ #: ../admin/settings.php:562
 
 
 
 
1790
  msgid "Use slow zooming effect"
1791
  msgstr ""
1792
 
1793
+ #: ../admin/settings.php:566
1794
  msgid "Background Color"
1795
  msgstr ""
1796
 
1797
+ #: ../admin/settings.php:571
1798
  msgid "Texts / Buttons Color"
1799
  msgstr ""
1800
 
1801
+ #: ../admin/settings.php:576
1802
  msgid "Rollover / Active Color"
1803
  msgstr ""
1804
 
1805
+ #: ../admin/settings.php:581
1806
  msgid "Background music (URL)"
1807
  msgstr ""
1808
 
1809
+ #: ../admin/settings.php:585
1810
  msgid "Try XHTML validation (with CDATA)"
1811
  msgstr ""
1812
 
1813
+ #: ../admin/settings.php:587
1814
  msgid "Important : Could causes problem at some browser. Please recheck your page."
1815
  msgstr ""
1816
 
1841
  "Choose [Cancel] to Stop, [OK] to proceed.\\n"
1842
  msgstr ""
1843
 
1844
+ #: ../admin/setup.php:55
1845
  msgid "Uninstall plugin tables"
1846
  msgstr ""
1847
 
1848
+ #: ../admin/setup.php:58
1849
  msgid "You don't like NextGEN Gallery ?"
1850
  msgstr ""
1851
 
1852
+ #: ../admin/setup.php:59
1853
  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. "
1854
  msgstr ""
1855
 
1856
+ #: ../admin/setup.php:60
1857
  msgid "WARNING:"
1858
  msgstr ""
1859
 
1860
+ #: ../admin/setup.php:61
1861
  msgid "Once uninstalled, this cannot be undone. You should use a Database Backup plugin of WordPress to backup all the tables first. NextGEN gallery is stored in the tables"
1862
  msgstr ""
1863
 
1864
+ #: ../admin/setup.php:61
1865
  msgid "and"
1866
  msgstr ""
1867
 
1868
+ #: ../admin/setup.php:63
1869
  msgid "Uninstall plugin"
1870
  msgstr ""
1871
 
1872
+ #: ../admin/setup.php:63
1873
  msgid ""
1874
  "You are about to Uninstall this plugin from WordPress.\\n"
1875
  "This action is not reversible.\\n"
1926
  msgid "Activate"
1927
  msgstr ""
1928
 
1929
+ #: ../admin/style.php:93
1930
  #, php-format
1931
  msgid "Editing <strong>%s</strong>"
1932
  msgstr ""
1933
 
1934
+ #: ../admin/style.php:95
1935
  #, php-format
1936
  msgid "Browsing <strong>%s</strong>"
1937
  msgstr ""
1938
 
1939
+ #: ../admin/style.php:100
1940
+ #: ../lib/nggmeta.lib.php:374
1941
  msgid "Author"
1942
  msgstr ""
1943
 
1944
+ #: ../admin/style.php:101
1945
  msgid "Version"
1946
  msgstr ""
1947
 
1948
+ #: ../admin/style.php:118
1949
  msgid "Update File &raquo;"
1950
  msgstr ""
1951
 
1952
+ #: ../admin/style.php:122
1953
  msgid "If this file were writable you could edit it."
1954
  msgstr ""
1955
 
1956
+ #: ../admin/style.php:127
1957
  msgid "Oops, no such file exists! Double check the name and try again, merci."
1958
  msgstr ""
1959
 
1960
+ #: ../admin/uploadtab.php:105
1961
+ msgid "Select a gallery"
1962
+ msgstr ""
1963
+
1964
+ #: ../admin/uploadtab.php:107
1965
+ #: ../tinymce/window.php:49
1966
+ msgid "No gallery"
1967
+ msgstr ""
1968
+
1969
+ #: ../admin/uploadtab.php:172
1970
+ #: ../admin/js/uploadtab.js.php:166
1971
+ msgid "URL"
1972
+ msgstr ""
1973
+
1974
+ #: ../admin/uploadtab.php:185
1975
+ #: ../admin/js/uploadtab.js.php:174
1976
+ msgid "Delete File"
1977
+ msgstr ""
1978
+
1979
+ #: ../admin/uploadtab.php:185
1980
+ msgid "Delete image ?"
1981
+ msgstr ""
1982
+
1983
+ #: ../admin/wpmu.php:41
1984
+ msgid "General WordPress MU Settings"
1985
+ msgstr ""
1986
+
1987
+ #: ../admin/wpmu.php:50
1988
+ 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 /."
1989
+ msgstr ""
1990
+
1991
+ #: ../admin/wpmu.php:53
1992
+ msgid "Enable upload quota check"
1993
+ msgstr ""
1994
+
1995
+ #: ../admin/wpmu.php:55
1996
+ msgid "Should work if the gallery is bellow the blog.dir"
1997
+ msgstr ""
1998
+
1999
+ #: ../admin/wpmu.php:59
2000
+ msgid "Enable zip upload option"
2001
+ msgstr ""
2002
+
2003
+ #: ../admin/wpmu.php:61
2004
+ msgid "Allow users to upload zip folders."
2005
+ msgstr ""
2006
+
2007
+ #: ../admin/wpmu.php:65
2008
+ msgid "Enable style selection"
2009
+ msgstr ""
2010
+
2011
+ #: ../admin/wpmu.php:67
2012
+ msgid "Allow users to choose a style for the gallery."
2013
+ msgstr ""
2014
+
2015
+ #: ../admin/wpmu.php:71
2016
+ msgid "Enable roles/capabilities"
2017
+ msgstr ""
2018
+
2019
+ #: ../admin/wpmu.php:73
2020
+ msgid "Allow users to change the roles for other blog authors."
2021
+ msgstr ""
2022
+
2023
+ #: ../admin/wpmu.php:77
2024
+ msgid "Default style"
2025
+ msgstr ""
2026
+
2027
+ #: ../admin/wpmu.php:94
2028
+ msgid "Choose the default style for the galleries."
2029
+ msgstr ""
2030
+
2031
+ #: ../admin/js/uploadtab.js.php:86
2032
+ #: ../admin/js/uploadtab.js.php:88
2033
+ #: ../admin/js/uploadtab.js.php:149
2034
+ #: ../admin/js/uploadtab.js.php:151
2035
  msgid "Browse your files"
2036
  msgstr ""
2037
 
2038
+ #: ../admin/js/uploadtab.js.php:86
2039
+ #: ../admin/js/uploadtab.js.php:88
2040
+ #: ../admin/js/uploadtab.js.php:149
2041
+ #: ../admin/js/uploadtab.js.php:151
2042
  msgid "&laquo; Back"
2043
  msgstr ""
2044
 
2045
+ #: ../admin/js/uploadtab.js.php:97
2046
+ #: ../admin/js/uploadtab.js.php:160
2047
  msgid "Direct link to file"
2048
  msgstr ""
2049
 
2050
+ #: ../admin/js/uploadtab.js.php:107
2051
  msgid "Full size"
2052
  msgstr ""
2053
 
2054
+ #: ../admin/js/uploadtab.js.php:110
2055
  msgid "Show:"
2056
  msgstr ""
2057
 
2058
+ #: ../admin/js/uploadtab.js.php:115
2059
  msgid "Link to:"
2060
  msgstr ""
2061
 
2062
+ #: ../admin/js/uploadtab.js.php:116
2063
  msgid "File"
2064
  msgstr ""
2065
 
2066
+ #: ../admin/js/uploadtab.js.php:121
2067
  msgid "Send to editor &raquo;"
2068
  msgstr ""
2069
 
2070
+ #: ../admin/js/uploadtab.js.php:156
2071
+ #: ../tinymce/window.php:150
2072
+ msgid "Insert"
2073
+ msgstr ""
2074
+
2075
+ #: ../admin/js/uploadtab.js.php:180
2076
  msgid "Save &raquo;"
2077
  msgstr ""
2078
 
2079
+ #: ../admin/js/uploadtab.js.php:259
2080
  #, php-format
2081
  msgid ""
2082
  "Are you sure you want to delete the file '%s'?\n"
2083
  "Click ok to delete or cancel to go back."
2084
  msgstr ""
2085
 
2086
+ #: ../lib/nggmeta.lib.php:83
2087
+ msgid " mm"
2088
+ msgstr ""
2089
+
2090
+ #: ../lib/nggmeta.lib.php:89
2091
+ msgid " sec"
2092
+ msgstr ""
2093
+
2094
+ #: ../lib/nggmeta.lib.php:364
2095
  msgid "Aperture"
2096
  msgstr ""
2097
 
2098
+ #: ../lib/nggmeta.lib.php:365
2099
+ #: ../lib/nggmeta.lib.php:390
2100
  msgid "Credit"
2101
  msgstr ""
2102
 
2103
+ #: ../lib/nggmeta.lib.php:366
2104
  msgid "Camera"
2105
  msgstr ""
2106
 
2107
+ #: ../lib/nggmeta.lib.php:367
2108
  msgid "Caption"
2109
  msgstr ""
2110
 
2111
+ #: ../lib/nggmeta.lib.php:368
2112
  msgid "Date/Time"
2113
  msgstr ""
2114
 
2115
+ #: ../lib/nggmeta.lib.php:369
2116
  msgid "Copyright"
2117
  msgstr ""
2118
 
2119
+ #: ../lib/nggmeta.lib.php:370
2120
  msgid "Focal length"
2121
  msgstr ""
2122
 
2123
+ #: ../lib/nggmeta.lib.php:371
2124
  msgid "ISO"
2125
  msgstr ""
2126
 
2127
+ #: ../lib/nggmeta.lib.php:372
2128
  msgid "Shutter speed"
2129
  msgstr ""
2130
 
2131
+ #: ../lib/nggmeta.lib.php:376
 
 
 
 
2132
  msgid "Subject"
2133
  msgstr ""
2134
 
2135
+ #: ../lib/nggmeta.lib.php:377
2136
  msgid "Make"
2137
  msgstr ""
2138
 
2139
+ #: ../lib/nggmeta.lib.php:378
2140
  msgid "Edit Status"
2141
  msgstr ""
2142
 
2143
+ #: ../lib/nggmeta.lib.php:379
2144
  msgid "Category"
2145
  msgstr ""
2146
 
2147
+ #: ../lib/nggmeta.lib.php:380
2148
  msgid "Keywords"
2149
  msgstr ""
2150
 
2151
+ #: ../lib/nggmeta.lib.php:381
2152
  msgid "Date Created"
2153
  msgstr ""
2154
 
2155
+ #: ../lib/nggmeta.lib.php:382
2156
  msgid "Time Created"
2157
  msgstr ""
2158
 
2159
+ #: ../lib/nggmeta.lib.php:383
2160
  msgid "Author Position"
2161
  msgstr ""
2162
 
2163
+ #: ../lib/nggmeta.lib.php:384
2164
  msgid "City"
2165
  msgstr ""
2166
 
2167
+ #: ../lib/nggmeta.lib.php:385
2168
  msgid "Location"
2169
  msgstr ""
2170
 
2171
+ #: ../lib/nggmeta.lib.php:386
2172
  msgid "Province/State"
2173
  msgstr ""
2174
 
2175
+ #: ../lib/nggmeta.lib.php:387
2176
  msgid "Country code"
2177
  msgstr ""
2178
 
2179
+ #: ../lib/nggmeta.lib.php:388
2180
  msgid "Country"
2181
  msgstr ""
2182
 
2183
+ #: ../lib/nggmeta.lib.php:389
2184
  msgid "Headline"
2185
  msgstr ""
2186
 
2187
+ #: ../lib/nggmeta.lib.php:391
2188
  msgid "Source"
2189
  msgstr ""
2190
 
2191
+ #: ../lib/nggmeta.lib.php:392
2192
  msgid "Copyright Notice"
2193
  msgstr ""
2194
 
2195
+ #: ../lib/nggmeta.lib.php:393
2196
  msgid "Contact"
2197
  msgstr ""
2198
 
2199
+ #: ../lib/nggmeta.lib.php:394
2200
  msgid "Last modified"
2201
  msgstr ""
2202
 
2203
+ #: ../lib/nggmeta.lib.php:395
2204
  msgid "Program tool"
2205
  msgstr ""
2206
 
2207
+ #: ../lib/nggmeta.lib.php:396
2208
  msgid "Format"
2209
  msgstr ""
2210
 
2211
+ #: ../tinymce/window.php:47
2212
+ msgid "Select gallery"
2213
+ msgstr ""
2214
+
2215
+ #: ../tinymce/window.php:61
2216
+ #: ../tinymce/window.php:88
2217
+ msgid "Show as"
2218
+ msgstr ""
2219
+
2220
+ #: ../tinymce/window.php:62
2221
+ msgid "Image list"
2222
+ msgstr ""
2223
+
2224
+ #: ../tinymce/window.php:76
2225
+ msgid "No album"
2226
+ msgstr ""
2227
+
2228
+ #: ../tinymce/window.php:89
2229
+ msgid "Extended version"
2230
+ msgstr ""
2231
+
2232
+ #: ../tinymce/window.php:90
2233
+ msgid "Compact version"
2234
+ msgstr ""
2235
+
2236
+ #: ../tinymce/window.php:101
2237
+ msgid "Select picture"
2238
+ msgstr ""
2239
+
2240
+ #: ../tinymce/window.php:103
2241
+ msgid "No picture"
2242
+ msgstr ""
2243
+
2244
+ #: ../tinymce/window.php:115
2245
+ msgid "Width x Height"
2246
+ msgstr ""
2247
+
2248
+ #: ../tinymce/window.php:119
2249
+ msgid "Effect"
2250
+ msgstr ""
2251
+
2252
+ #: ../tinymce/window.php:122
2253
+ msgid "No effect"
2254
+ msgstr ""
2255
+
2256
+ #: ../tinymce/window.php:124
2257
+ msgid "Web 2.0"
2258
+ msgstr ""
2259
+
2260
+ #: ../tinymce/window.php:129
2261
+ msgid "Float"
2262
+ msgstr ""
2263
+
2264
+ #: ../tinymce/window.php:132
2265
+ msgid "No float"
2266
+ msgstr ""
2267
+
2268
+ #: ../tinymce/window.php:133
2269
+ msgid "Left"
2270
+ msgstr ""
2271
+
2272
+ #: ../tinymce/window.php:134
2273
+ msgid "Right"
2274
+ msgstr ""
2275
+
lib/nggallery.lib.php CHANGED
@@ -5,7 +5,7 @@
5
  * nggallery.lib.php
6
  *
7
  * @author Alex Rabe
8
- * @copyright Copyright 2007
9
  *
10
  */
11
 
@@ -43,7 +43,7 @@ class nggImage{
43
  global $wpdb;
44
 
45
  //initialize variables
46
- $this->imageID = $imageID;
47
 
48
  // get image values
49
  $imageData = $wpdb->get_row("SELECT * FROM $wpdb->nggpictures WHERE pid = '$this->imageID' ") or $this->error = true;
@@ -68,35 +68,37 @@ class nggImage{
68
 
69
  /**********************************************************/
70
  function get_thumbnail_folder($gallerypath, $include_Abspath = TRUE) {
71
- //required for myGallery import :-)
72
-
73
  if (!$include_Abspath)
74
  $gallerypath = WINABSPATH.$gallerypath;
75
 
 
 
 
76
  if (is_dir($gallerypath."/thumbs")) {
77
  $this->thumbFolder = "/thumbs/";
78
- $this->thumbPrefix = "thumbs_";
79
  return TRUE;
80
- }
81
-
82
  if (is_dir($gallerypath."/tumbs")) {
83
  $this->thumbFolder = "/tumbs/";
84
  $this->thumbPrefix = "tmb_";
85
  return TRUE;
86
  }
87
 
88
- // create the folder if it not exist
89
- if (!SAFE_MODE) {
90
  if (!is_dir($gallerypath."/thumbs")) {
91
- mkdir($gallerypath."/thumbs");
 
92
  $this->thumbFolder = "/thumbs/";
93
- $this->thumbPrefix = "thumbs_";
94
  return TRUE;
95
  }
96
  }
97
 
98
  return FALSE;
99
-
100
  }
101
 
102
  function get_thumbcode($galleryname) {
@@ -104,8 +106,8 @@ class nggImage{
104
  $ngg_options = get_option('ngg_options');
105
 
106
  // get the effect code
107
- if ($ngg_options[thumbEffect] != "none") $this->thumbcode = stripslashes($ngg_options[thumbCode]);
108
- if ($ngg_options[thumbEffect] == "highslide") $this->thumbcode = str_replace("%GALLERY_NAME%", "'".$galleryname."'", $this->thumbcode);
109
  else $this->thumbcode = str_replace("%GALLERY_NAME%", $galleryname, $this->thumbcode);
110
 
111
  return $this->thumbcode;
@@ -126,6 +128,61 @@ class nggImage{
126
 
127
  return $this->href;
128
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
129
  }
130
 
131
  /**
@@ -166,7 +223,7 @@ class nggallery {
166
  }
167
 
168
  /**********************************************************/
169
- // remove some umlauts
170
  /**********************************************************/
171
  function remove_umlauts($filename) {
172
 
@@ -228,13 +285,22 @@ class nggallery {
228
  if (!file_exists($gallerypath))
229
  return FALSE;
230
  if (is_dir($gallerypath."/thumbs")) return "/thumbs/";
 
231
  if (is_dir($gallerypath."/tumbs")) return "/tumbs/";
232
- if (!SAFE_MODE) {
 
233
  if (!is_dir($gallerypath."/thumbs")) {
234
- @mkdir($gallerypath."/thumbs");
 
 
 
 
 
 
235
  return "/thumbs/";
236
  }
237
  }
 
238
  return FALSE;
239
 
240
  }
@@ -247,6 +313,7 @@ class nggallery {
247
 
248
  if (!$include_Abspath) $gallerypath = WINABSPATH.$gallerypath;
249
  if (is_dir($gallerypath."/thumbs")) return "thumbs_";
 
250
  if (is_dir($gallerypath."/tumbs")) return "tmb_";
251
 
252
  return FALSE;
@@ -273,11 +340,12 @@ class nggallery {
273
  // create the complete navigation
274
  /**********************************************************/
275
  function create_navigation($page, $totalElement, $maxElement = 0) {
 
 
276
  $navigation = "";
277
 
278
  if ($maxElement > 0) {
279
  $total = $totalElement;
280
- $args['page'] = get_the_ID();
281
 
282
  // create navigation
283
  if ( $total > $maxElement ) {
@@ -285,7 +353,7 @@ class nggallery {
285
  $r = '';
286
  if ( 1 < $page ) {
287
  $args['nggpage'] = ( 1 == $page - 1 ) ? FALSE : $page - 1;
288
- $r .= '<a class="prev" href="'. htmlspecialchars( add_query_arg( $args ) ) . '">&#9668;</a>';
289
  }
290
  if ( ( $total_pages = ceil( $total / $maxElement ) ) > 1 ) {
291
  for ( $page_num = 1; $page_num <= $total_pages; $page_num++ ) {
@@ -295,7 +363,7 @@ class nggallery {
295
  $p = false;
296
  if ( $page_num < 3 || ( $page_num >= $page - 3 && $page_num <= $page + 3 ) || $page_num > $total_pages - 3 ) {
297
  $args['nggpage'] = ( 1 == $page_num ) ? FALSE : $page_num;
298
- $r .= '<a class="page-numbers" href="' . htmlspecialchars( add_query_arg( $args ) ) . '">' . ( $page_num ) . '</a>';
299
  $in = true;
300
  } elseif ( $in == true ) {
301
  $r .= '<span>...</span>';
@@ -306,7 +374,7 @@ class nggallery {
306
  }
307
  if ( ( $page ) * $maxElement < $total || -1 == $total ) {
308
  $args['nggpage'] = $page + 1;
309
- $r .= '<a class="next" href="' . htmlspecialchars( add_query_arg( $args ) ) . '">&#9658;</a>';
310
  }
311
 
312
  $navigation = "<div class='ngg-navigation'>$r</div>";
@@ -318,6 +386,73 @@ class nggallery {
318
  return $navigation;
319
  }
320
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
321
  }
322
 
323
  /**
@@ -482,13 +617,15 @@ class ngg_Tags {
482
 
483
  $picarray = array();
484
 
485
- // first get all picture with this tag
486
  $picids = $wpdb->get_col("SELECT t.picid FROM $wpdb->nggpic2tags AS t INNER JOIN $wpdb->nggtags AS tt ON t.tagid = tt.id WHERE tt.slug IN ($sluglist) ORDER BY t.picid ASC ");
 
487
  if (is_array($picids)){
488
  // now get all pictures
489
  $piclist = "'" . implode("', '", $picids) . "'";
490
- //TODO:Use thumbnail sort order ?
491
- $picarray = $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 ($piclist) ORDER BY t.pid ASC ");
 
492
  }
493
 
494
  return $picarray;
@@ -524,4 +661,168 @@ class ngg_Tags {
524
  }
525
 
526
  }
527
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5
  * nggallery.lib.php
6
  *
7
  * @author Alex Rabe
8
+ * @copyright Copyright 2007-2008
9
  *
10
  */
11
 
43
  global $wpdb;
44
 
45
  //initialize variables
46
+ $this->imageID = (int) $imageID;
47
 
48
  // get image values
49
  $imageData = $wpdb->get_row("SELECT * FROM $wpdb->nggpictures WHERE pid = '$this->imageID' ") or $this->error = true;
68
 
69
  /**********************************************************/
70
  function get_thumbnail_folder($gallerypath, $include_Abspath = TRUE) {
71
+ //TODO:Double coded, see also class nggallery, fix it !
 
72
  if (!$include_Abspath)
73
  $gallerypath = WINABSPATH.$gallerypath;
74
 
75
+ if (!file_exists($gallerypath))
76
+ return FALSE;
77
+
78
  if (is_dir($gallerypath."/thumbs")) {
79
  $this->thumbFolder = "/thumbs/";
80
+ $this->thumbPrefix = "thumbs_";
81
  return TRUE;
82
+ }
83
+ // old mygallery check
84
  if (is_dir($gallerypath."/tumbs")) {
85
  $this->thumbFolder = "/tumbs/";
86
  $this->thumbPrefix = "tmb_";
87
  return TRUE;
88
  }
89
 
90
+ if (is_admin()) {
 
91
  if (!is_dir($gallerypath."/thumbs")) {
92
+ if ( !wp_mkdir_p($gallerypath."/thumbs") )
93
+ return FALSE;
94
  $this->thumbFolder = "/thumbs/";
95
+ $this->thumbPrefix = "thumbs_";
96
  return TRUE;
97
  }
98
  }
99
 
100
  return FALSE;
101
+
102
  }
103
 
104
  function get_thumbcode($galleryname) {
106
  $ngg_options = get_option('ngg_options');
107
 
108
  // get the effect code
109
+ if ($ngg_options['thumbEffect'] != "none") $this->thumbcode = stripslashes($ngg_options['thumbCode']);
110
+ if ($ngg_options['thumbEffect'] == "highslide") $this->thumbcode = str_replace("%GALLERY_NAME%", "'".$galleryname."'", $this->thumbcode);
111
  else $this->thumbcode = str_replace("%GALLERY_NAME%", $galleryname, $this->thumbcode);
112
 
113
  return $this->thumbcode;
128
 
129
  return $this->href;
130
  }
131
+
132
+ function cached_singlepic_file($width, $height, $mode = "" ) {
133
+ // This function creates a cache for all singlepics to reduce the CPU load
134
+ $ngg_options = get_option('ngg_options');
135
+
136
+ include_once(NGGALLERY_ABSPATH.'/lib/thumbnail.inc.php');
137
+
138
+ // cache filename should be unique
139
+ $cachename = $this->imageID. "_". $mode . "_". $width. "x". $height ."_". $this->filename;
140
+ $cachefolder = WINABSPATH .$ngg_options['gallerypath'] . "cache/";
141
+ $cached_url = get_option ('siteurl') ."/". $ngg_options['gallerypath'] . "cache/" . $cachename;
142
+ $cached_file = $cachefolder . $cachename;
143
+
144
+ // check first for the file
145
+ if ( file_exists($cached_file) )
146
+ return $cached_url;
147
+
148
+ // create folder if needed
149
+ if ( !file_exists($cachefolder) )
150
+ if ( !wp_mkdir_p($cachefolder) )
151
+ return false;
152
+
153
+ // get the filepath on the server
154
+ $filepath = WINABSPATH . "/" . $this->path ."/" . $this->filename;
155
+ $thumb = new ngg_Thumbnail($filepath, TRUE);
156
+ // echo $thumb->errmsg;
157
+
158
+ if (!$thumb->error) {
159
+ $thumb->resize($width,$height);
160
+
161
+ if ($mode == 'watermark') {
162
+ if ($ngg_options['wmType'] == 'image') {
163
+ $thumb->watermarkImgPath = $ngg_options['wmPath'];
164
+ $thumb->watermarkImage($ngg_options['wmPos'], $ngg_options['wmXpos'], $ngg_options['wmYpos']);
165
+ }
166
+ if ($ngg_options['wmType'] == 'text') {
167
+ $thumb->watermarkText = $ngg_options['wmText'];
168
+ $thumb->watermarkCreateText($ngg_options['wmColor'], $ngg_options['wmFont'], $ngg_options['wmSize'], $ngg_options['wmOpaque']);
169
+ $thumb->watermarkImage($ngg_options['wmPos'], $ngg_options['wmXpos'], $ngg_options['wmYpos']);
170
+ }
171
+ }
172
+
173
+ if ($mode == 'web20')
174
+ $thumb->createReflection(40,40,50,false,'#a4a4a4');
175
+ // save the new cache picture
176
+ $thumb->save($cached_file,$ngg_options['imgQuality']);
177
+ }
178
+ $thumb->destruct();
179
+
180
+ // check again for the file
181
+ if ( file_exists($cached_file) )
182
+ return $cached_url;
183
+
184
+ return false;
185
+ }
186
  }
187
 
188
  /**
223
  }
224
 
225
  /**********************************************************/
226
+ // remove some umlauts - deprecated
227
  /**********************************************************/
228
  function remove_umlauts($filename) {
229
 
285
  if (!file_exists($gallerypath))
286
  return FALSE;
287
  if (is_dir($gallerypath."/thumbs")) return "/thumbs/";
288
+ // old mygallery check
289
  if (is_dir($gallerypath."/tumbs")) return "/tumbs/";
290
+
291
+ if (is_admin()) {
292
  if (!is_dir($gallerypath."/thumbs")) {
293
+ if ( !wp_mkdir_p($gallerypath."/thumbs") ) {
294
+ if (SAFE_MODE)
295
+ nggAdmin::check_safemode($gallerypath."/thumbs");
296
+ else
297
+ nggallery::show_error(__('Unable to create directory ', 'nggallery').$gallerypath.'/thumbs !');
298
+ return FALSE;
299
+ }
300
  return "/thumbs/";
301
  }
302
  }
303
+
304
  return FALSE;
305
 
306
  }
313
 
314
  if (!$include_Abspath) $gallerypath = WINABSPATH.$gallerypath;
315
  if (is_dir($gallerypath."/thumbs")) return "thumbs_";
316
+ // old mygallery check
317
  if (is_dir($gallerypath."/tumbs")) return "tmb_";
318
 
319
  return FALSE;
340
  // create the complete navigation
341
  /**********************************************************/
342
  function create_navigation($page, $totalElement, $maxElement = 0) {
343
+ global $nggRewrite;
344
+
345
  $navigation = "";
346
 
347
  if ($maxElement > 0) {
348
  $total = $totalElement;
 
349
 
350
  // create navigation
351
  if ( $total > $maxElement ) {
353
  $r = '';
354
  if ( 1 < $page ) {
355
  $args['nggpage'] = ( 1 == $page - 1 ) ? FALSE : $page - 1;
356
+ $r .= '<a class="prev" href="'. $nggRewrite->get_permalink( $args ) . '">&#9668;</a>';
357
  }
358
  if ( ( $total_pages = ceil( $total / $maxElement ) ) > 1 ) {
359
  for ( $page_num = 1; $page_num <= $total_pages; $page_num++ ) {
363
  $p = false;
364
  if ( $page_num < 3 || ( $page_num >= $page - 3 && $page_num <= $page + 3 ) || $page_num > $total_pages - 3 ) {
365
  $args['nggpage'] = ( 1 == $page_num ) ? FALSE : $page_num;
366
+ $r .= '<a class="page-numbers" href="' . $nggRewrite->get_permalink( $args ) . '">' . ( $page_num ) . '</a>';
367
  $in = true;
368
  } elseif ( $in == true ) {
369
  $r .= '<span>...</span>';
374
  }
375
  if ( ( $page ) * $maxElement < $total || -1 == $total ) {
376
  $args['nggpage'] = $page + 1;
377
+ $r .= '<a class="next" href="' . $nggRewrite->get_permalink ( $args ) . '">&#9658;</a>';
378
  }
379
 
380
  $navigation = "<div class='ngg-navigation'>$r</div>";
386
  return $navigation;
387
  }
388
 
389
+ /**
390
+ * nggallery::get_option() - get the options and overwrite them with custom meta settings
391
+ *
392
+ * @param string $key
393
+ * @return array $options
394
+ */
395
+ function get_option($key) {
396
+ // get first the options from the database
397
+ $options = get_option($key);
398
+ // Get all key/value data for the current post.
399
+ $meta_array = get_post_custom();
400
+ // assign meta key to db setting key
401
+ $meta_tags = array(
402
+ 'string' => array(
403
+ 'ngg_gal_ShowOrder' => 'galShowOrder',
404
+ 'ngg_gal_Sort' => 'galSort',
405
+ 'ngg_gal_SortDirection' => 'galSortDir',
406
+ 'ngg_gal_ShowDescription' => 'galShowDesc',
407
+ 'ngg_ir_Audio' => 'irAudio',
408
+ 'ngg_ir_Overstretch' => 'irOverstretch',
409
+ 'ngg_ir_Transition' => 'irTransition',
410
+ 'ngg_ir_Backcolor' => 'irBackcolor',
411
+ 'ngg_ir_Frontcolor' => 'irFrontcolor',
412
+ 'ngg_ir_Lightcolor' => 'irLightcolor'
413
+ ),
414
+
415
+ 'int' => array(
416
+ 'ngg_gal_Images' => 'galImages',
417
+ 'ngg_gal_Sort' => 'galSort',
418
+ 'ngg_ir_Width' => 'irWidth',
419
+ 'ngg_ir_Height' => 'irHeight',
420
+ 'ngg_ir_Rotatetime' => 'irRotatetime'
421
+ ),
422
+
423
+ 'bool' => array(
424
+ 'ngg_gal_ShowSlide' => 'galShowSlide',
425
+ 'ngg_gal_ImgageBrowser' => 'galImgBrowser',
426
+ 'ngg_ir_Shuffle' => 'irShuffle',
427
+ 'ngg_ir_LinkFromDisplay' => 'irLinkfromdisplay',
428
+ 'ngg_ir_ShowNavigation' => 'irShownavigation',
429
+ 'ngg_ir_ShowWatermark' => 'irWatermark',
430
+ 'ngg_ir_Overstretch' => 'irOverstretch',
431
+ 'ngg_ir_Kenburns' => 'irKenburns'
432
+ )
433
+ );
434
+
435
+ foreach ($meta_tags as $typ => $meta_keys){
436
+ foreach ($meta_keys as $key => $db_value){
437
+ // if the kex exist overwrite it with the custom field
438
+ if (array_key_exists($key, $meta_array)){
439
+ switch ($typ) {
440
+ case "string":
441
+ $options[$db_value] = (string) attribute_escape($meta_array[$key][0]);
442
+ break;
443
+ case "int":
444
+ $options[$db_value] = (int) $meta_array[$key][0];
445
+ break;
446
+ case "bool":
447
+ $options[$db_value] = (bool) $meta_array[$key][0];
448
+ break;
449
+ }
450
+ }
451
+ }
452
+ }
453
+
454
+ return $options;
455
+ }
456
  }
457
 
458
  /**
617
 
618
  $picarray = array();
619
 
620
+ // first get all picture with this tag //
621
  $picids = $wpdb->get_col("SELECT t.picid FROM $wpdb->nggpic2tags AS t INNER JOIN $wpdb->nggtags AS tt ON t.tagid = tt.id WHERE tt.slug IN ($sluglist) ORDER BY t.picid ASC ");
622
+
623
  if (is_array($picids)){
624
  // now get all pictures
625
  $piclist = "'" . implode("', '", $picids) . "'";
626
+ //TODO: Use thumbnail sort order ? v0.80 Use now random function
627
+ //$picarray = $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 ($piclist) ORDER BY t.pid ASC ");
628
+ $picarray = $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 ($piclist) ORDER BY rand() ");
629
  }
630
 
631
  return $picarray;
661
  }
662
 
663
  }
664
+
665
+ /**
666
+ * nggRewrite - First version of Rewrite Rules
667
+ *
668
+ * sorry wp-guys I didn't understand this at all.
669
+ * I tried it a couple of hours : this is the only pooooor result
670
+ *
671
+ * @package NextGEN Gallery
672
+ * @author Alex Rabe
673
+ * @copyright 2008
674
+ *
675
+ */
676
+ class nggRewrite {
677
+
678
+ // default value
679
+ var $slug = "nggallery";
680
+
681
+ function nggRewrite() {
682
+
683
+ // read the option setting
684
+ $this->options = get_option('ngg_options');
685
+
686
+ // get later from the options
687
+ $this->slug = "nggallery";
688
+
689
+ /*WARNING: Do nothook rewrite rule regentation on the init hook for anything other than dev. */
690
+ //add_action('init',array(&$this, 'flush'));
691
+
692
+ add_filter('query_vars', array(&$this, 'add_queryvars') );
693
+ if ($this->options['usePermalinks'])
694
+ add_action('generate_rewrite_rules', array(&$this, 'RewriteRules'));
695
+
696
+ } // end of initialization
697
+
698
+ function get_permalink( $args ) {
699
+ global $wp_rewrite, $wp_query;
700
+
701
+ if ($wp_rewrite->using_permalinks() && $this->options['usePermalinks'] ) {
702
+
703
+ $post = &get_post(get_the_ID());
704
+
705
+ // $_GET from wp_query
706
+ $album = get_query_var('album');
707
+ if ( !empty( $album ) )
708
+ $args ['album'] = $album;
709
+ $gallery = get_query_var('gallery');
710
+ if ( !empty( $gallery ) )
711
+ $args ['gallery'] = $gallery;
712
+ $gallerytag = get_query_var('gallerytag');
713
+ if ( !empty( $gallerytag ) )
714
+ $args ['gallerytag'] = $gallerytag;
715
+
716
+ /* urlconstructor = slug | type | tags | [nav] | [show]
717
+ type : page | post
718
+ tags : album, gallery -> /album-([0-9]+)/gallery-([0-9]+)/
719
+ pid -> /page/([0-9]+)/
720
+ gallerytag -> /tags/([^/]+)/
721
+ nav : nggpage -> /page-([0-9]+)/
722
+ show : show=slide -> /slideshow/
723
+ show=gallery -> /images/
724
+ */
725
+
726
+ // 1. Blog url + main slug
727
+ $url = get_option('home'). "/". $this->slug;
728
+ // 2. Post or page ?
729
+ if ( $post->post_type == 'page' )
730
+ $url .= "/page-".$post->ID; // Pagnename is nicer but how to handle /parent/pagename ? Confused...
731
+ else
732
+ $url .= "/post/".$post->post_name;
733
+ // 3. Album, pid or tags
734
+ if (isset ($args['album']) && isset ($args['gallery']) )
735
+ $url .= "/album-".$args['album']."/gallery-".$args['gallery'];
736
+ if (isset ($args['gallerytag']))
737
+ $url .= "/tags/".$args['gallerytag'];
738
+ if (isset ($args['pid']))
739
+ $url .= "/page/".$args['pid'];
740
+ // 4. Navigation
741
+ if (isset ($args['nggpage']) && ($args['nggpage']) )
742
+ $url .= "/page-".$args['nggpage'];
743
+ // 5. Show images or Slideshow
744
+ if (isset ($args['show']))
745
+ $url .= ( $args['show'] == 'slide' ) ? "/slideshow" : "/images";
746
+
747
+ return $url;
748
+
749
+ } else {
750
+
751
+ // we need to add the page/post id at the start_page otherwise we don't know which gallery is clicked
752
+ if (is_home())
753
+ $args['pageid'] = get_the_ID();
754
+
755
+ // taken from is_frontpage plugin, required for static homepage
756
+ $show_on_front = get_option('show_on_front');
757
+ $page_on_front = get_option('page_on_front');
758
+
759
+ if ( ($show_on_front == 'page') && ($page_on_front == get_the_ID()) )
760
+ $args['page_id'] = get_the_ID();
761
+
762
+ $query = htmlspecialchars(add_query_arg( $args));
763
+
764
+ return $query;
765
+ }
766
+ }
767
+
768
+ // The permalinks needs to be flushed after activation
769
+ function flush() {
770
+ global $wp_rewrite;
771
+ $wp_rewrite->flush_rules();
772
+ }
773
+
774
+ // add some more vars to the big wp_query
775
+ function add_queryvars( $query_vars ){
776
+
777
+ $query_vars[] = 'pid';
778
+ $query_vars[] = 'pageid';
779
+ $query_vars[] = 'nggpage';
780
+ $query_vars[] = 'gallery';
781
+ $query_vars[] = 'album';
782
+ $query_vars[] = 'gallerytag';
783
+ $query_vars[] = 'show';
784
+
785
+ return $query_vars;
786
+ }
787
+
788
+ function RewriteRules($wp_rewrite) {
789
+
790
+ $rewrite_rules = array
791
+ (
792
+ // rewrite rules for pages
793
+ $this->slug.'/page-([0-9]+)/?$' => 'index.php?page_id=$matches[1]',
794
+ $this->slug.'/page-([0-9]+)/page-([0-9]+)/?$' => 'index.php?page_id=$matches[1]&nggpage=$matches[2]',
795
+ $this->slug.'/page-([0-9]+)/page/([0-9]+)/?$' => 'index.php?page_id=$matches[1]&pid=$matches[2]',
796
+ $this->slug.'/page-([0-9]+)/slideshow/?$' => 'index.php?page_id=$matches[1]&show=slide',
797
+ $this->slug.'/page-([0-9]+)/images/?$' => 'index.php?page_id=$matches[1]&show=gallery',
798
+ $this->slug.'/page-([0-9]+)/tags/([^/]+)/?$' => 'index.php?page_id=$matches[1]&gallerytag=$matches[2]',
799
+ $this->slug.'/page-([0-9]+)/tags/([^/]+)/page-([0-9]+)/?$' => 'index.php?page_id=$matches[1]&gallerytag=$matches[2]&nggpage=$matches[3]',
800
+ $this->slug.'/page-([0-9]+)/album-([0-9]+)/gallery-([0-9]+)/?$' => 'index.php?page_id=$matches[1]&album=$matches[2]&gallery=$matches[3]',
801
+ $this->slug.'/page-([0-9]+)/album-([0-9]+)/gallery-([0-9]+)/slideshow/?$' => 'index.php?page_id=$matches[1]&album=$matches[2]&gallery=$matches[3]&show=slide',
802
+ $this->slug.'/page-([0-9]+)/album-([0-9]+)/gallery-([0-9]+)/images/?$' => 'index.php?page_id=$matches[1]&album=$matches[2]&gallery=$matches[3]&show=gallery',
803
+ $this->slug.'/page-([0-9]+)/album-([0-9]+)/gallery-([0-9]+)/page-([0-9]+)/?$' => 'index.php?page_id=$matches[1]&album=$matches[2]&gallery=$matches[3]&nggpage=$matches[4]',
804
+ $this->slug.'/page-([0-9]+)/album-([0-9]+)/gallery-([0-9]+)/page-([0-9]+)/slideshow/?$' => 'index.php?page_id=$matches[1]&album=$matches[2]&gallery=$matches[3]&nggpage=$matches[4]&show=slide',
805
+ $this->slug.'/page-([0-9]+)/album-([0-9]+)/gallery-([0-9]+)/page-([0-9]+)/images/?$' => 'index.php?page_id=$matches[1]&album=$matches[2]&gallery=$matches[3]&nggpage=$matches[4]&show=gallery',
806
+ // rewrite rules for posts
807
+ $this->slug.'/post/([^/]+)/?$' => 'index.php?name=$matches[1]',
808
+ $this->slug.'/post/([^/]+)/page-([0-9]+)/?$' => 'index.php?name=$matches[1]&nggpage=$matches[2]',
809
+ $this->slug.'/post/([^/]+)/page/([0-9]+)/?$' => 'index.php?name=$matches[1]&pid=$matches[2]',
810
+ $this->slug.'/post/([^/]+)/slideshow/?$' => 'index.php?name=$matches[1]&show=slide',
811
+ $this->slug.'/post/([^/]+)/images/?$' => 'index.php?name=$matches[1]&show=gallery',
812
+ $this->slug.'/post/([^/]+)/tags/([^/]+)/?$' => 'index.php?name=$matches[1]&gallerytag=$matches[2]',
813
+ $this->slug.'/post/([^/]+)/tags/([^/]+)/page-([0-9]+)/?$' => 'index.php?name=$matches[1]&gallerytag=$matches[2]&nggpage=$matches[3]',
814
+ $this->slug.'/post/([^/]+)/album-([0-9]+)/gallery-([0-9]+)/?$' => 'index.php?name=$matches[1]&album=$matches[2]&gallery=$matches[3]',
815
+ $this->slug.'/post/([^/]+)/album-([0-9]+)/gallery-([0-9]+)/slideshow/?$' => 'index.php?name=$matches[1]&album=$matches[2]&gallery=$matches[3]&show=slide',
816
+ $this->slug.'/post/([^/]+)/album-([0-9]+)/gallery-([0-9]+)/images/?$' => 'index.php?name=$matches[1]&album=$matches[2]&gallery=$matches[3]&show=gallery',
817
+ $this->slug.'/post/([^/]+)/album-([0-9]+)/gallery-([0-9]+)/page-([0-9]+)/?$' => 'index.php?name=$matches[1]&album=$matches[2]&gallery=$matches[3]&nggpage=$matches[4]',
818
+ $this->slug.'/post/([^/]+)/album-([0-9]+)/gallery-([0-9]+)/page-([0-9]+)/slideshow/?$' => 'index.php?name=$matches[1]&album=$matches[2]&gallery=$matches[3]&nggpage=$matches[4]&show=slide',
819
+ $this->slug.'/post/([^/]+)/album-([0-9]+)/gallery-([0-9]+)/page-([0-9]+)/images/?$' => 'index.php?name=$matches[1]&album=$matches[2]&gallery=$matches[3]&nggpage=$matches[4]&show=gallery',
820
+ );
821
+
822
+ $wp_rewrite->rules = $wp_rewrite->rules + $rewrite_rules;
823
+
824
+ }
825
+
826
+ } // of nggRewrite CLASS
827
+
828
+ ?>
lib/nggmeta.lib.php CHANGED
@@ -16,6 +16,10 @@ class nggMeta{
16
  var $exif_data = false; // EXIF data array
17
  var $iptc_data = false; // IPTC data array
18
  var $xmp_data = false; // XMP data array
 
 
 
 
19
 
20
  /**
21
  * nggMeta::nggMeta()
@@ -58,47 +62,62 @@ class nggMeta{
58
  *
59
  * @return structured EXIF data
60
  */
61
- function get_EXIF() {
62
 
63
  if (!$this->exif_data)
64
  return false;
65
-
66
- $meta= array();
67
 
68
- // taken from WP core
69
- $exif = $this->exif_data['EXIF'];
70
- if (!empty($exif['FNumber']))
71
- $meta['aperture'] = "F " . round( $this->exif_frac2dec( $exif['FNumber'] ), 2 );
72
- if (!empty($exif['Model']))
73
- $meta['camera'] = trim( $exif['Model'] );
74
- if (!empty($exif['DateTimeDigitized']))
75
- $meta['created_timestamp'] = date_i18n(get_option('date_format').' '.get_option('time_format'), $this->exif_date2ts($exif['DateTimeDigitized']));
76
- if (!empty($exif['FocalLength']))
77
- $meta['focal_length'] = $this->exif_frac2dec( $exif['FocalLength'] ) . __(' mm','nggallery');
78
- if (!empty($exif['ISOSpeedRatings']))
79
- $meta['iso'] = $exif['ISOSpeedRatings'];
80
- if (!empty($exif['ExposureTime']))
81
- $meta['shutter_speed'] = $exif['ExposureTime'] . __(' sec','nggallery');
82
-
83
- // additional information
84
- $exif = $this->exif_data['IFD0'];
85
- if (!empty($exif['Model']))
86
- $meta['camera'] = $exif['Model'];
87
- if (!empty($exif['Make']))
88
- $meta['make'] = $exif['Make'];
89
-
90
- // this is done by Windows
91
- $exif = $this->exif_data['WINXP'];
92
- if (!empty($exif['Title']))
93
- $meta['title'] = $exif['Title'];
94
- if (!empty($exif['Author']))
95
- $meta['author'] = $exif['Author'];
96
- if (!empty($exif['Keywords']))
97
- $meta['tags'] = $exif['Keywords'];
98
- if (!empty($exif['Subject']))
99
- $meta['subject'] = $exif['Subject'];
100
 
101
- return $meta;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
102
 
103
  }
104
 
@@ -123,45 +142,54 @@ class nggMeta{
123
  * nggMeta::readIPTC() - IPTC Data Information for EXIF Display
124
  *
125
  * @param mixed $output_tag
126
- * @return
127
  */
128
- function get_IPTC() {
129
 
130
- // --------- Set up Array Functions --------- //
131
- $iptcTags = array (
132
- "2#005" => 'title',
133
- "2#007" => 'status',
134
- "2#012" => 'subject',
135
- "2#015" => 'category',
136
- "2#025" => 'keywords',
137
- "2#055" => 'created_date',
138
- "2#060" => 'created_time',
139
- "2#080" => 'author',
140
- "2#085" => 'position',
141
- "2#090" => 'city',
142
- "2#092" => 'location',
143
- "2#095" => 'state',
144
- "2#100" => 'country_code',
145
- "2#101" => 'country',
146
- "2#105" => 'headline',
147
- "2#110" => 'credit',
148
- "2#115" => 'source',
149
- "2#116" => 'copyright',
150
- "2#118" => 'contact'
151
- );
152
-
153
- // var_dump($this->iptc_data);
154
- if($this->iptc_data) {
155
- $IPTCarray = array();
 
 
 
 
 
156
  foreach ($iptcTags as $key => $value) {
157
  if ($this->iptc_data[$key])
158
- $IPTCarray[$value] = trim(utf8_encode(implode(", ", $this->iptc_data[$key])));
159
-
160
  }
161
- return $IPTCarray;
162
  }
163
-
164
- return false;
 
 
 
 
165
  }
166
 
167
  /**
@@ -170,7 +198,7 @@ class nggMeta{
170
  * code by Pekka Saarinen http://photography-on-the.net
171
  *
172
  * @param mixed $filename
173
- * @return
174
  */
175
  function extract_XMP( $filename ) {
176
 
@@ -198,90 +226,100 @@ class nggMeta{
198
  *
199
  * @package Taken from http://php.net/manual/en/function.xml-parse-into-struct.php
200
  * @author Alf Marius Foss Olsen & Alex Rabe
201
- *
 
202
  */
203
- function get_XMP() {
204
 
205
  if(!$this->xmp_data)
206
- return false;
207
 
208
- $parser = xml_parser_create();
209
- xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0); // Dont mess with my cAsE sEtTings
210
- xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, 1); // Dont bother with empty info
211
- xml_parse_into_struct($parser, $this->xmp_data, $values);
212
- xml_parser_free($parser);
213
-
214
- $xmlarray = array(); // The XML array
215
- $XMParray = array(); // The returned array
216
- $stack = array(); // tmp array used for stacking
217
- $list_array = array(); // tmp array for list elements
218
- $list_element = false; // rdf:li indicator
219
-
220
- foreach($values as $val) {
221
 
222
- if($val['type'] == "open") {
223
- array_push($stack, $val['tag']);
224
-
225
- } elseif($val['type'] == "close") {
226
- // reset the compared stack
227
- if ($list_element == false)
228
- array_pop($stack);
229
- // reset the rdf:li indicator & array
230
- $list_element = false;
231
- $list_array = array();
232
-
233
- } elseif($val['type'] == "complete") {
234
- if ($val['tag'] == "rdf:li") {
235
- // first go one element back
236
- if ($list_element == false)
237
- array_pop($stack);
238
- $list_element = true;
239
- // save it in our temp array
240
- $list_array[] = $val['value'];
241
- // in the case it's a list element we seralize it
242
- $value = implode(",", $list_array);
243
- $this->setArrayValue($xmlarray, $stack, $value);
244
- } else {
245
- array_push($stack, $val['tag']);
246
- $this->setArrayValue($xmlarray, $stack, $val['value']);
247
- array_pop($stack);
248
- }
249
- }
250
-
251
- } // foreach
252
-
253
- // cut off the useless tags
254
- $xmlarray = $xmlarray['x:xmpmeta']['rdf:RDF']['rdf:Description'];
255
-
256
- // --------- Some values from the XMP format--------- //
257
- $xmpTags = array (
258
- 'xap:CreateDate' => 'created_timestamp',
259
- 'xap:ModifyDate' => 'last_modfied',
260
- 'xap:CreatorTool' => 'tool',
261
- 'dc:format' => 'format',
262
- 'dc:title' => 'title',
263
- 'dc:creator' => 'author',
264
- 'dc:subject' => 'keywords',
265
- 'photoshop:AuthorsPosition' => 'position',
266
- 'photoshop:City' => 'city',
267
- 'photoshop:Country' => 'country'
268
- );
269
-
270
- foreach ($xmpTags as $key => $value) {
271
- // if the kex exist
272
- if ($xmlarray[$key]) {
273
- switch ($key) {
274
- case 'xap:CreateDate':
275
- case 'xap:ModifyDate':
276
- $XMParray[$value] = date_i18n(get_option('date_format').' '.get_option('time_format'), strtotime($xmlarray[$key]));
277
- break;
278
- default :
279
- $XMParray[$value] = $xmlarray[$key];
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
280
  }
281
  }
 
282
  }
283
-
284
- return $XMParray;
 
 
 
 
285
  }
286
 
287
  function setArrayValue(&$array, $stack, $value) {
@@ -294,6 +332,26 @@ class nggMeta{
294
  }
295
  }
296
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
297
  /**
298
  * nggMeta::i8n_name() - localize the tag name
299
  *
@@ -312,7 +370,7 @@ class nggMeta{
312
  'focal_length' => __('Focal length','nggallery'),
313
  'iso' => __('ISO','nggallery'),
314
  'shutter_speed' => __('Shutter speed','nggallery'),
315
- 'title' => __('Titel','nggallery'),
316
  'author' => __('Author','nggallery'),
317
  'tags' => __('Tags','nggallery'),
318
  'subject' => __('Subject','nggallery'),
16
  var $exif_data = false; // EXIF data array
17
  var $iptc_data = false; // IPTC data array
18
  var $xmp_data = false; // XMP data array
19
+ /**** Filtered Data ****/
20
+ var $exif_array = false; // EXIF data array
21
+ var $iptc_array = false; // IPTC data array
22
+ var $xmp_array = false; // XMP data array
23
 
24
  /**
25
  * nggMeta::nggMeta()
62
  *
63
  * @return structured EXIF data
64
  */
65
+ function get_EXIF($object = false) {
66
 
67
  if (!$this->exif_data)
68
  return false;
 
 
69
 
70
+ if (!is_array($this->exif_array)){
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
71
 
72
+ $meta= array();
73
+
74
+ // taken from WP core
75
+ $exif = $this->exif_data['EXIF'];
76
+ if (!empty($exif['FNumber']))
77
+ $meta['aperture'] = "F " . round( $this->exif_frac2dec( $exif['FNumber'] ), 2 );
78
+ if (!empty($exif['Model']))
79
+ $meta['camera'] = trim( $exif['Model'] );
80
+ if (!empty($exif['DateTimeDigitized']))
81
+ $meta['created_timestamp'] = date_i18n(get_option('date_format').' '.get_option('time_format'), $this->exif_date2ts($exif['DateTimeDigitized']));
82
+ if (!empty($exif['FocalLength']))
83
+ $meta['focal_length'] = $this->exif_frac2dec( $exif['FocalLength'] ) . __(' mm','nggallery');
84
+ if (!empty($exif['ISOSpeedRatings']))
85
+ $meta['iso'] = $exif['ISOSpeedRatings'];
86
+ if (!empty($exif['ExposureTime'])) {
87
+ $meta['shutter_speed'] = $this->exif_frac2dec ($exif['ExposureTime']);
88
+ ($meta['shutter_speed'] > 0.0 and $meta['shutter_speed'] < 1.0) ? ("1/" . round(1/$meta['shutter_speed'])) : ($meta['shutter_speed']);
89
+ $meta['shutter_speed'] .= __(' sec','nggallery');
90
+ }
91
+
92
+ // additional information
93
+ $exif = $this->exif_data['IFD0'];
94
+ if (!empty($exif['Model']))
95
+ $meta['camera'] = $exif['Model'];
96
+ if (!empty($exif['Make']))
97
+ $meta['make'] = $exif['Make'];
98
+
99
+ // this is done by Windows
100
+ $exif = $this->exif_data['WINXP'];
101
+
102
+ if (!empty($exif['Title']))
103
+ $meta['title'] = utf8_encode($exif['Title']);
104
+ if (!empty($exif['Author']))
105
+ $meta['author'] = utf8_encode($exif['Author']);
106
+ if (!empty($exif['Keywords']))
107
+ $meta['tags'] = utf8_encode($exif['Keywords']);
108
+ if (!empty($exif['Subject']))
109
+ $meta['subject'] = utf8_encode($exif['Subject']);
110
+ if (!empty($exif['Comments']))
111
+ $meta['caption'] = utf8_encode($exif['Comments']);
112
+
113
+ $this->exif_array = $meta;
114
+ }
115
+
116
+ // return one element if requested
117
+ if ($object)
118
+ return $this->exif_array[$object];
119
+
120
+ return $this->exif_array;
121
 
122
  }
123
 
142
  * nggMeta::readIPTC() - IPTC Data Information for EXIF Display
143
  *
144
  * @param mixed $output_tag
145
+ * @return IPTC-tags
146
  */
147
+ function get_IPTC($object = false) {
148
 
149
+ if (!$this->iptc_data)
150
+ return false;
151
+
152
+ if (!is_array($this->iptc_array)){
153
+
154
+ // --------- Set up Array Functions --------- //
155
+ $iptcTags = array (
156
+ "2#005" => 'title',
157
+ "2#007" => 'status',
158
+ "2#012" => 'subject',
159
+ "2#015" => 'category',
160
+ "2#025" => 'keywords',
161
+ "2#055" => 'created_date',
162
+ "2#060" => 'created_time',
163
+ "2#080" => 'author',
164
+ "2#085" => 'position',
165
+ "2#090" => 'city',
166
+ "2#092" => 'location',
167
+ "2#095" => 'state',
168
+ "2#100" => 'country_code',
169
+ "2#101" => 'country',
170
+ "2#105" => 'headline',
171
+ "2#110" => 'credit',
172
+ "2#115" => 'source',
173
+ "2#116" => 'copyright',
174
+ "2#118" => 'contact',
175
+ "2#120" => 'caption'
176
+ );
177
+
178
+ // var_dump($this->iptc_data);
179
+ $meta = array();
180
  foreach ($iptcTags as $key => $value) {
181
  if ($this->iptc_data[$key])
182
+ $meta[$value] = trim(utf8_encode(implode(", ", $this->iptc_data[$key])));
183
+
184
  }
185
+ $this->iptc_array = $meta;
186
  }
187
+
188
+ // return one element if requested
189
+ if ($object)
190
+ return $this->iptc_array[$object];
191
+
192
+ return $this->iptc_array;
193
  }
194
 
195
  /**
198
  * code by Pekka Saarinen http://photography-on-the.net
199
  *
200
  * @param mixed $filename
201
+ * @return XML data
202
  */
203
  function extract_XMP( $filename ) {
204
 
226
  *
227
  * @package Taken from http://php.net/manual/en/function.xml-parse-into-struct.php
228
  * @author Alf Marius Foss Olsen & Alex Rabe
229
+ * @return XML Array or object
230
+ *
231
  */
232
+ function get_XMP($object = false) {
233
 
234
  if(!$this->xmp_data)
235
+ return false;
236
 
237
+ if (!is_array($this->xmp_array)){
 
 
 
 
 
 
 
 
 
 
 
 
238
 
239
+ $parser = xml_parser_create();
240
+ xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0); // Dont mess with my cAsE sEtTings
241
+ xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, 1); // Dont bother with empty info
242
+ xml_parse_into_struct($parser, $this->xmp_data, $values);
243
+ xml_parser_free($parser);
244
+
245
+ $xmlarray = array(); // The XML array
246
+ $this->xmp_array = array(); // The returned array
247
+ $stack = array(); // tmp array used for stacking
248
+ $list_array = array(); // tmp array for list elements
249
+ $list_element = false; // rdf:li indicator
250
+
251
+ foreach($values as $val) {
252
+
253
+ if($val['type'] == "open") {
254
+ array_push($stack, $val['tag']);
255
+
256
+ } elseif($val['type'] == "close") {
257
+ // reset the compared stack
258
+ if ($list_element == false)
259
+ array_pop($stack);
260
+ // reset the rdf:li indicator & array
261
+ $list_element = false;
262
+ $list_array = array();
263
+
264
+ } elseif($val['type'] == "complete") {
265
+ if ($val['tag'] == "rdf:li") {
266
+ // first go one element back
267
+ if ($list_element == false)
268
+ array_pop($stack);
269
+ $list_element = true;
270
+ // save it in our temp array
271
+ $list_array[] = $val['value'];
272
+ // in the case it's a list element we seralize it
273
+ $value = implode(",", $list_array);
274
+ $this->setArrayValue($xmlarray, $stack, $value);
275
+ } else {
276
+ array_push($stack, $val['tag']);
277
+ $this->setArrayValue($xmlarray, $stack, $val['value']);
278
+ array_pop($stack);
279
+ }
280
+ }
281
+
282
+ } // foreach
283
+
284
+ // cut off the useless tags
285
+ $xmlarray = $xmlarray['x:xmpmeta']['rdf:RDF']['rdf:Description'];
286
+
287
+ // --------- Some values from the XMP format--------- //
288
+ $xmpTags = array (
289
+ 'xap:CreateDate' => 'created_timestamp',
290
+ 'xap:ModifyDate' => 'last_modfied',
291
+ 'xap:CreatorTool' => 'tool',
292
+ 'dc:format' => 'format',
293
+ 'dc:title' => 'title',
294
+ 'dc:creator' => 'author',
295
+ 'dc:subject' => 'keywords',
296
+ 'dc:description' => 'caption',
297
+ 'photoshop:AuthorsPosition' => 'position',
298
+ 'photoshop:City' => 'city',
299
+ 'photoshop:Country' => 'country'
300
+ );
301
+
302
+ foreach ($xmpTags as $key => $value) {
303
+ // if the kex exist
304
+ if ($xmlarray[$key]) {
305
+ switch ($key) {
306
+ case 'xap:CreateDate':
307
+ case 'xap:ModifyDate':
308
+ $this->xmp_array[$value] = date_i18n(get_option('date_format').' '.get_option('time_format'), strtotime($xmlarray[$key]));
309
+ break;
310
+ default :
311
+ $this->xmp_array[$value] = $xmlarray[$key];
312
+ }
313
  }
314
  }
315
+
316
  }
317
+
318
+ // return one element if requested
319
+ if ($object)
320
+ return $this->xmp_array[$object];
321
+
322
+ return $this->xmp_array;
323
  }
324
 
325
  function setArrayValue(&$array, $stack, $value) {
332
  }
333
  }
334
 
335
+ /**
336
+ * nggMeta::get_META() - return a meta value form the available list
337
+ *
338
+ * @param string $object
339
+ * @return mixed $value
340
+ */
341
+ function get_META($object = false) {
342
+
343
+ // defined order XMP , before IPTC and EXIF.
344
+ if ($value = $this->get_XMP($object))
345
+ return $value;
346
+ if ($value = $this->get_IPTC($object))
347
+ return $value;
348
+ if ($value = $this->get_EXIF($object))
349
+ return $value;
350
+
351
+ // nothing found ?
352
+ return false;
353
+ }
354
+
355
  /**
356
  * nggMeta::i8n_name() - localize the tag name
357
  *
370
  'focal_length' => __('Focal length','nggallery'),
371
  'iso' => __('ISO','nggallery'),
372
  'shutter_speed' => __('Shutter speed','nggallery'),
373
+ 'title' => __('Title','nggallery'),
374
  'author' => __('Author','nggallery'),
375
  'tags' => __('Tags','nggallery'),
376
  'subject' => __('Subject','nggallery'),
lib/pclzip.lib.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php
2
  // --------------------------------------------------------------------------------
3
- // PhpConcept Library - Zip Module 2.5
4
  // --------------------------------------------------------------------------------
5
  // License GNU/LGPL - Vincent Blavet - March 2006
6
  // http://www.phpconcept.net
@@ -22,11 +22,13 @@
22
  // The use of this software is at the risk of the user.
23
  //
24
  // --------------------------------------------------------------------------------
25
- // $Id: pclzip.lib.php,v 1.44 2006/03/08 21:23:59 vblavet Exp $
26
  // --------------------------------------------------------------------------------
27
 
28
  // ----- Constants
29
- define( 'PCLZIP_READ_BLOCK_SIZE', 2048 );
 
 
30
 
31
  // ----- File list separator
32
  // In version 1.x of PclZip, the separator for file list is a space
@@ -38,14 +40,18 @@
38
  // Recommanded values for compatibility with older versions :
39
  //define( 'PCLZIP_SEPARATOR', ' ' );
40
  // Recommanded values for smart separation of filenames.
41
- define( 'PCLZIP_SEPARATOR', ',' );
 
 
42
 
43
  // ----- Error configuration
44
  // 0 : PclZip Class integrated error handling
45
  // 1 : PclError external library error handling. By enabling this
46
  // you must ensure that you have included PclError library.
47
  // [2,...] : reserved for futur use
48
- define( 'PCLZIP_ERROR_EXTERNAL', 0 );
 
 
49
 
50
  // ----- Optional static temporary directory
51
  // By default temporary files are generated in the script current
@@ -56,14 +62,16 @@
56
  // Samples :
57
  // define( 'PCLZIP_TEMPORARY_DIR', '/temp/' );
58
  // define( 'PCLZIP_TEMPORARY_DIR', 'C:/Temp/' );
59
- define( 'PCLZIP_TEMPORARY_DIR', '' );
 
 
60
 
61
  // --------------------------------------------------------------------------------
62
  // ***** UNDER THIS LINE NOTHING NEEDS TO BE MODIFIED *****
63
  // --------------------------------------------------------------------------------
64
 
65
  // ----- Global variables
66
- $g_pclzip_version = "2.5";
67
 
68
  // ----- Error codes
69
  // -1 : Unable to open file in binary write mode
@@ -133,6 +141,9 @@
133
  define( 'PCLZIP_ATT_FILE_NAME', 79001 );
134
  define( 'PCLZIP_ATT_FILE_NEW_SHORT_NAME', 79002 );
135
  define( 'PCLZIP_ATT_FILE_NEW_FULL_NAME', 79003 );
 
 
 
136
 
137
  // ----- Call backs values
138
  define( 'PCLZIP_CB_PRE_EXTRACT', 78001 );
@@ -363,6 +374,9 @@
363
  = array ( PCLZIP_ATT_FILE_NAME => 'mandatory'
364
  ,PCLZIP_ATT_FILE_NEW_SHORT_NAME => 'optional'
365
  ,PCLZIP_ATT_FILE_NEW_FULL_NAME => 'optional'
 
 
 
366
  );
367
  foreach ($v_att_list as $v_entry) {
368
  $v_result = $this->privFileDescrParseAtt($v_entry,
@@ -548,6 +562,9 @@
548
  = array ( PCLZIP_ATT_FILE_NAME => 'mandatory'
549
  ,PCLZIP_ATT_FILE_NEW_SHORT_NAME => 'optional'
550
  ,PCLZIP_ATT_FILE_NEW_FULL_NAME => 'optional'
 
 
 
551
  );
552
  foreach ($v_att_list as $v_entry) {
553
  $v_result = $this->privFileDescrParseAtt($v_entry,
@@ -793,9 +810,9 @@
793
  $p_list = array();
794
  $v_result = $this->privExtractByRule($p_list, $v_path, $v_remove_path,
795
  $v_remove_all_path, $v_options);
796
-
797
  if ($v_result < 1) {
798
  unset($p_list);
 
799
  $this->error_code = $v_result;
800
  //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0, PclZip::errorInfo());
801
  return(0);
@@ -1487,7 +1504,7 @@
1487
  }
1488
 
1489
  // ----- Get the value
1490
- $v_result_list[$p_options_list[$i]] = PclZipUtilTranslateWinPath($p_options_list[$i+1], false);
1491
  //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "".PclZipUtilOptionText($p_options_list[$i])." = '".$v_result_list[$p_options_list[$i]]."'");
1492
  $i++;
1493
  break;
@@ -1506,7 +1523,7 @@
1506
  // ----- Get the value
1507
  if ( is_string($p_options_list[$i+1])
1508
  && ($p_options_list[$i+1] != '')) {
1509
- $v_result_list[$p_options_list[$i]] = PclZipUtilTranslateWinPath($p_options_list[$i+1], false);
1510
  //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "".PclZipUtilOptionText($p_options_list[$i])." = '".$v_result_list[$p_options_list[$i]]."'");
1511
  $i++;
1512
  }
@@ -1903,6 +1920,34 @@
1903
  }
1904
  break;
1905
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1906
  default :
1907
  // ----- Error log
1908
  PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER,
@@ -1956,6 +2001,8 @@
1956
 
1957
  // ----- Look each entry
1958
  for ($i=0; $i<sizeof($p_filedescr_list); $i++) {
 
 
1959
  // ----- Get filedescr
1960
  $v_descr = $p_filedescr_list[$i];
1961
 
@@ -1965,8 +2012,36 @@
1965
  $v_descr['filename'] = PclZipUtilPathReduction($v_descr['filename']);
1966
  //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Filedescr after reduction :'".$v_descr['filename']."'");
1967
 
1968
- // ----- Get type of descr
1969
- if (!file_exists($v_descr['filename'])) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1970
  // ----- Error log
1971
  //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "File '".$v_descr['filename']."' does not exists");
1972
  PclZip::privErrorLog(PCLZIP_ERR_MISSING_FILE, "File '".$v_descr['filename']."' does not exists");
@@ -1975,24 +2050,6 @@
1975
  //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
1976
  return PclZip::errorCode();
1977
  }
1978
- if (@is_file($v_descr['filename'])) {
1979
- //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "This is a file");
1980
- $v_descr['type'] = 'file';
1981
- }
1982
- else if (@is_dir($v_descr['filename'])) {
1983
- //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "This is a folder");
1984
- $v_descr['type'] = 'folder';
1985
- }
1986
- else if (@is_link($v_descr['filename'])) {
1987
- //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Unsupported file type : link");
1988
- // skip
1989
- continue;
1990
- }
1991
- else {
1992
- //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Unsupported file type : unknown type");
1993
- // skip
1994
- continue;
1995
- }
1996
 
1997
  // ----- Calculate the stored filename
1998
  $this->privCalculateStoredFilename($v_descr, $p_options);
@@ -2021,11 +2078,18 @@
2021
  // Because the name of the folder was changed, the name of the
2022
  // files/sub-folders also change
2023
  if ($v_descr['stored_filename'] != $v_descr['filename']) {
2024
- $v_dirlist_descr[$v_dirlist_nb]['new_full_name'] = $v_descr['stored_filename'].'/'.$v_item_handler;
 
 
 
 
 
2025
  }
2026
 
2027
  $v_dirlist_nb++;
2028
  }
 
 
2029
  }
2030
  else {
2031
  //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Unable to open dir '".$v_descr['filename']."' in read mode. Skipped.");
@@ -2466,7 +2530,8 @@
2466
  }
2467
 
2468
  // ----- Check the filename
2469
- if (!file_exists($p_filedescr_list[$j]['filename'])) {
 
2470
  //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "File '".$p_filedescr_list[$j]['filename']."' does not exists");
2471
  PclZip::privErrorLog(PCLZIP_ERR_MISSING_FILE, "File '".$p_filedescr_list[$j]['filename']."' does not exists");
2472
  //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
@@ -2474,10 +2539,15 @@
2474
  }
2475
 
2476
  // ----- Look if it is a file or a dir with no all path remove option
2477
- if ( (is_file($p_filedescr_list[$j]['filename']))
2478
- || ( is_dir($p_filedescr_list[$j]['filename'])
 
 
 
 
2479
  && ( !isset($p_options[PCLZIP_OPT_REMOVE_ALL_PATH])
2480
- || !$p_options[PCLZIP_OPT_REMOVE_ALL_PATH]))) {
 
2481
 
2482
  // ----- Add the file
2483
  $v_result = $this->privAddFile($p_filedescr_list[$j], $v_header,
@@ -2524,6 +2594,7 @@
2524
  }
2525
 
2526
  // ----- Look for a stored different filename
 
2527
  if (isset($p_filedescr['stored_filename'])) {
2528
  $v_stored_filename = $p_filedescr['stored_filename'];
2529
  //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, 'Stored filename is NOT the same "'.$v_stored_filename.'"');
@@ -2532,6 +2603,7 @@
2532
  $v_stored_filename = $p_filedescr['stored_filename'];
2533
  //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, 'Stored filename is the same');
2534
  }
 
2535
 
2536
  // ----- Set the file properties
2537
  clearstatcache();
@@ -2539,26 +2611,62 @@
2539
  $p_header['version_extracted'] = 10;
2540
  $p_header['flag'] = 0;
2541
  $p_header['compression'] = 0;
2542
- $p_header['mtime'] = filemtime($p_filename);
2543
  $p_header['crc'] = 0;
2544
  $p_header['compressed_size'] = 0;
2545
- $p_header['size'] = filesize($p_filename);
2546
  $p_header['filename_len'] = strlen($p_filename);
2547
  $p_header['extra_len'] = 0;
2548
- $p_header['comment_len'] = 0;
2549
  $p_header['disk'] = 0;
2550
  $p_header['internal'] = 0;
2551
- // $p_header['external'] = (is_file($p_filename)?0xFE49FFE0:0x41FF0010);
2552
- $p_header['external'] = (is_file($p_filename)?0x00000000:0x00000010);
2553
- //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Header external extension '".sprintf("0x%X",$p_header['external'])."'");
2554
  $p_header['offset'] = 0;
2555
  $p_header['filename'] = $p_filename;
2556
- $p_header['stored_filename'] = $v_stored_filename;
 
2557
  $p_header['extra'] = '';
2558
- $p_header['comment'] = '';
2559
  $p_header['status'] = 'ok';
2560
  $p_header['index'] = -1;
2561
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2562
  // ----- Look for pre-add callback
2563
  if (isset($p_options[PCLZIP_CB_PRE_ADD])) {
2564
  //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "A pre-callback '".$p_options[PCLZIP_CB_PRE_ADD]."()') is defined for the extraction");
@@ -2599,41 +2707,51 @@
2599
  if ($p_header['status'] == 'ok') {
2600
 
2601
  // ----- Look for a file
2602
- if (is_file($p_filename))
2603
- {
2604
- //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "'".$p_filename."' is a file");
2605
- // ----- Open the source file
2606
- if (($v_file = @fopen($p_filename, "rb")) == 0) {
2607
- PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, "Unable to open file '$p_filename' in binary read mode");
2608
- //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
2609
- return PclZip::errorCode();
2610
- }
 
 
 
 
 
2611
 
2612
- if ($p_options[PCLZIP_OPT_NO_COMPRESSION]) {
2613
- //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "File will not be compressed");
2614
  // ----- Read the file content
2615
- $v_content_compressed = @fread($v_file, $p_header['size']);
2616
 
2617
- // ----- Calculate the CRC
2618
- $p_header['crc'] = @crc32($v_content_compressed);
 
 
 
 
 
2619
 
 
 
 
 
 
 
2620
  // ----- Set header parameters
2621
  $p_header['compressed_size'] = $p_header['size'];
2622
  $p_header['compression'] = 0;
2623
  }
 
 
2624
  else {
2625
  //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "File will be compressed");
2626
- // ----- Read the file content
2627
- $v_content = @fread($v_file, $p_header['size']);
2628
-
2629
- // ----- Calculate the CRC
2630
- $p_header['crc'] = @crc32($v_content);
2631
-
2632
- // ----- Compress the file
2633
- $v_content_compressed = @gzdeflate($v_content);
2634
 
2635
  // ----- Set header parameters
2636
- $p_header['compressed_size'] = strlen($v_content_compressed);
2637
  $p_header['compression'] = 8;
2638
  }
2639
 
@@ -2668,15 +2786,11 @@
2668
  }
2669
 
2670
  // ----- Write the compressed (or not) content
2671
- @fwrite($this->zip_fd,
2672
- $v_content_compressed, $p_header['compressed_size']);
2673
-
2674
- // ----- Close the file
2675
- @fclose($v_file);
2676
  }
2677
 
2678
  // ----- Look for a directory
2679
- else {
2680
  //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "'".$p_filename."' is a folder");
2681
  // ----- Look for directory last '/'
2682
  if (@substr($p_header['stored_filename'], -1) != '/') {
@@ -2751,6 +2865,7 @@
2751
  else {
2752
  $p_remove_dir = '';
2753
  }
 
2754
  if (isset($p_options[PCLZIP_OPT_REMOVE_ALL_PATH])) {
2755
  $p_remove_all_dir = $p_options[PCLZIP_OPT_REMOVE_ALL_PATH];
2756
  }
@@ -2789,6 +2904,7 @@
2789
  }
2790
  // ----- Look for partial path remove
2791
  else if ($p_remove_dir != "") {
 
2792
  if (substr($p_remove_dir, -1) != '/')
2793
  $p_remove_dir .= "/";
2794
 
@@ -2912,6 +3028,8 @@
2912
  $v_mtime = ($v_date['hours']<<11) + ($v_date['minutes']<<5) + $v_date['seconds']/2;
2913
  $v_mdate = (($v_date['year']-1980)<<9) + ($v_date['mon']<<5) + $v_date['mday'];
2914
 
 
 
2915
  // ----- Packed data
2916
  $v_binary_data = pack("VvvvvvvVVVvvvvvVV", 0x02014b50,
2917
  $p_header['version'], $p_header['version_extracted'],
@@ -3077,6 +3195,7 @@
3077
  // $p_info['comment'] = Comment associated with the file.
3078
  // $p_info['folder'] = true/false : indicates if the entry is a folder or not.
3079
  // $p_info['status'] = status of the action on the file.
 
3080
  // Parameters :
3081
  // Return Values :
3082
  // --------------------------------------------------------------------------------
@@ -3095,6 +3214,7 @@
3095
  $p_info['folder'] = (($p_header['external']&0x00000010)==0x00000010);
3096
  $p_info['index'] = $p_header['index'];
3097
  $p_info['status'] = $p_header['status'];
 
3098
 
3099
  // ----- Return
3100
  //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
@@ -3363,7 +3483,7 @@
3363
 
3364
  $v_extract = false;
3365
  }
3366
-
3367
  // ----- Look for real extraction
3368
  if ($v_extract)
3369
  {
@@ -3455,23 +3575,24 @@
3455
  $p_path, $p_remove_path,
3456
  $p_remove_all_path,
3457
  $p_options);
3458
-
3459
  if ($v_result1 < 1) {
3460
  $this->privCloseFd();
3461
  $this->privSwapBackMagicQuotes();
3462
  //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result1);
3463
-
3464
  return $v_result1;
3465
  }
 
3466
  // ----- Get the only interesting attributes
3467
  if (($v_result = $this->privConvertHeader2FileInfo($v_header, $p_file_list[$v_nb_extracted++])) != 1)
3468
  {
3469
  // ----- Close the zip file
3470
  $this->privCloseFd();
3471
  $this->privSwapBackMagicQuotes();
 
3472
  //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
3473
  return $v_result;
3474
  }
 
3475
  // ----- Look for user callback abort
3476
  if ($v_result1 == 2) {
3477
  break;
@@ -3735,6 +3856,7 @@
3735
 
3736
  // ----- Look if extraction should be done
3737
  if ($p_entry['status'] == 'ok') {
 
3738
  // ----- Do the extraction (if not a folder)
3739
  if (!(($p_entry['external']&0x00000010)==0x00000010))
3740
  {
@@ -3781,7 +3903,6 @@
3781
 
3782
  }
3783
  else {
3784
-
3785
  //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Extracting a compressed file (Compression method ".$p_entry['compression'].")");
3786
  // ----- TBC
3787
  // Need to be finished
@@ -3826,8 +3947,8 @@
3826
  // ----- Decompress the file
3827
  // alex.rabe : check again for the memory limit
3828
  if ( (function_exists('memory_get_usage')) && (ini_get('memory_limit')) ) {
3829
- // take a overhead of 300000 byte (tested with XAMPP)
3830
- $maxMemory = $memory_limit - memory_get_usage() - 300000;
3831
  $v_file_content = gzinflate($v_buffer,$maxMemory);
3832
  } else {
3833
  $v_file_content = @gzinflate($v_buffer);
@@ -4314,7 +4435,9 @@
4314
  //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Offset : \''.$p_header['offset'].'\'');
4315
 
4316
  // ----- Recuperate date in UNIX format
4317
- if ($p_header['mdate'] && $p_header['mtime'])
 
 
4318
  {
4319
  // ----- Extract time
4320
  $v_hour = ($p_header['mtime'] & 0xF800) >> 11;
@@ -4327,7 +4450,7 @@
4327
  $v_day = $p_header['mdate'] & 0x001F;
4328
 
4329
  // ----- Get UNIX date format
4330
- $p_header['mtime'] = mktime($v_hour, $v_minute, $v_seconde, $v_month, $v_day, $v_year);
4331
 
4332
  //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Date : \''.date("d/m/y H:i:s", $p_header['mtime']).'\'');
4333
  }
@@ -4567,8 +4690,10 @@
4567
  }
4568
 
4569
  // ----- Get comment
4570
- if ($v_data['comment_size'] != 0)
 
4571
  $p_central_dir['comment'] = fread($this->zip_fd, $v_data['comment_size']);
 
4572
  else
4573
  $p_central_dir['comment'] = '';
4574
  //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Comment : \''.$p_central_dir['comment'].'\'');
1
  <?php
2
  // --------------------------------------------------------------------------------
3
+ // PhpConcept Library - Zip Module 2.6
4
  // --------------------------------------------------------------------------------
5
  // License GNU/LGPL - Vincent Blavet - March 2006
6
  // http://www.phpconcept.net
22
  // The use of this software is at the risk of the user.
23
  //
24
  // --------------------------------------------------------------------------------
25
+ // $Id: pclzip.lib.php,v 1.47 2007/07/20 13:56:07 vblavet Exp $
26
  // --------------------------------------------------------------------------------
27
 
28
  // ----- Constants
29
+ if (!defined('PCLZIP_READ_BLOCK_SIZE')) {
30
+ define( 'PCLZIP_READ_BLOCK_SIZE', 2048 );
31
+ }
32
 
33
  // ----- File list separator
34
  // In version 1.x of PclZip, the separator for file list is a space
40
  // Recommanded values for compatibility with older versions :
41
  //define( 'PCLZIP_SEPARATOR', ' ' );
42
  // Recommanded values for smart separation of filenames.
43
+ if (!defined('PCLZIP_SEPARATOR')) {
44
+ define( 'PCLZIP_SEPARATOR', ',' );
45
+ }
46
 
47
  // ----- Error configuration
48
  // 0 : PclZip Class integrated error handling
49
  // 1 : PclError external library error handling. By enabling this
50
  // you must ensure that you have included PclError library.
51
  // [2,...] : reserved for futur use
52
+ if (!defined('PCLZIP_ERROR_EXTERNAL')) {
53
+ define( 'PCLZIP_ERROR_EXTERNAL', 0 );
54
+ }
55
 
56
  // ----- Optional static temporary directory
57
  // By default temporary files are generated in the script current
62
  // Samples :
63
  // define( 'PCLZIP_TEMPORARY_DIR', '/temp/' );
64
  // define( 'PCLZIP_TEMPORARY_DIR', 'C:/Temp/' );
65
+ if (!defined('PCLZIP_TEMPORARY_DIR')) {
66
+ define( 'PCLZIP_TEMPORARY_DIR', '' );
67
+ }
68
 
69
  // --------------------------------------------------------------------------------
70
  // ***** UNDER THIS LINE NOTHING NEEDS TO BE MODIFIED *****
71
  // --------------------------------------------------------------------------------
72
 
73
  // ----- Global variables
74
+ $g_pclzip_version = "2.6";
75
 
76
  // ----- Error codes
77
  // -1 : Unable to open file in binary write mode
141
  define( 'PCLZIP_ATT_FILE_NAME', 79001 );
142
  define( 'PCLZIP_ATT_FILE_NEW_SHORT_NAME', 79002 );
143
  define( 'PCLZIP_ATT_FILE_NEW_FULL_NAME', 79003 );
144
+ define( 'PCLZIP_ATT_FILE_MTIME', 79004 );
145
+ define( 'PCLZIP_ATT_FILE_CONTENT', 79005 );
146
+ define( 'PCLZIP_ATT_FILE_COMMENT', 79006 );
147
 
148
  // ----- Call backs values
149
  define( 'PCLZIP_CB_PRE_EXTRACT', 78001 );
374
  = array ( PCLZIP_ATT_FILE_NAME => 'mandatory'
375
  ,PCLZIP_ATT_FILE_NEW_SHORT_NAME => 'optional'
376
  ,PCLZIP_ATT_FILE_NEW_FULL_NAME => 'optional'
377
+ ,PCLZIP_ATT_FILE_MTIME => 'optional'
378
+ ,PCLZIP_ATT_FILE_CONTENT => 'optional'
379
+ ,PCLZIP_ATT_FILE_COMMENT => 'optional'
380
  );
381
  foreach ($v_att_list as $v_entry) {
382
  $v_result = $this->privFileDescrParseAtt($v_entry,
562
  = array ( PCLZIP_ATT_FILE_NAME => 'mandatory'
563
  ,PCLZIP_ATT_FILE_NEW_SHORT_NAME => 'optional'
564
  ,PCLZIP_ATT_FILE_NEW_FULL_NAME => 'optional'
565
+ ,PCLZIP_ATT_FILE_MTIME => 'optional'
566
+ ,PCLZIP_ATT_FILE_CONTENT => 'optional'
567
+ ,PCLZIP_ATT_FILE_COMMENT => 'optional'
568
  );
569
  foreach ($v_att_list as $v_entry) {
570
  $v_result = $this->privFileDescrParseAtt($v_entry,
810
  $p_list = array();
811
  $v_result = $this->privExtractByRule($p_list, $v_path, $v_remove_path,
812
  $v_remove_all_path, $v_options);
 
813
  if ($v_result < 1) {
814
  unset($p_list);
815
+ // alex.rabe - return error code
816
  $this->error_code = $v_result;
817
  //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0, PclZip::errorInfo());
818
  return(0);
1504
  }
1505
 
1506
  // ----- Get the value
1507
+ $v_result_list[$p_options_list[$i]] = PclZipUtilTranslateWinPath($p_options_list[$i+1], FALSE);
1508
  //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "".PclZipUtilOptionText($p_options_list[$i])." = '".$v_result_list[$p_options_list[$i]]."'");
1509
  $i++;
1510
  break;
1523
  // ----- Get the value
1524
  if ( is_string($p_options_list[$i+1])
1525
  && ($p_options_list[$i+1] != '')) {
1526
+ $v_result_list[$p_options_list[$i]] = PclZipUtilTranslateWinPath($p_options_list[$i+1], FALSE);
1527
  //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "".PclZipUtilOptionText($p_options_list[$i])." = '".$v_result_list[$p_options_list[$i]]."'");
1528
  $i++;
1529
  }
1920
  }
1921
  break;
1922
 
1923
+ // ----- Look for options that takes a string
1924
+ case PCLZIP_ATT_FILE_COMMENT :
1925
+ if (!is_string($v_value)) {
1926
+ PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid type ".gettype($v_value).". String expected for attribute '".PclZipUtilOptionText($v_key)."'");
1927
+ //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
1928
+ return PclZip::errorCode();
1929
+ }
1930
+
1931
+ $p_filedescr['comment'] = $v_value;
1932
+ //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "".PclZipUtilOptionText($v_key)." = '".$v_value."'");
1933
+ break;
1934
+
1935
+ case PCLZIP_ATT_FILE_MTIME :
1936
+ if (!is_integer($v_value)) {
1937
+ PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid type ".gettype($v_value).". Integer expected for attribute '".PclZipUtilOptionText($v_key)."'");
1938
+ //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
1939
+ return PclZip::errorCode();
1940
+ }
1941
+
1942
+ $p_filedescr['mtime'] = $v_value;
1943
+ //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "".PclZipUtilOptionText($v_key)." = '".$v_value."'");
1944
+ break;
1945
+
1946
+ case PCLZIP_ATT_FILE_CONTENT :
1947
+ $p_filedescr['content'] = $v_value;
1948
+ ////--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "".PclZipUtilOptionText($v_key)." = '".$v_value."'");
1949
+ break;
1950
+
1951
  default :
1952
  // ----- Error log
1953
  PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER,
2001
 
2002
  // ----- Look each entry
2003
  for ($i=0; $i<sizeof($p_filedescr_list); $i++) {
2004
+ //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Looking for file ".$i.".");
2005
+
2006
  // ----- Get filedescr
2007
  $v_descr = $p_filedescr_list[$i];
2008
 
2012
  $v_descr['filename'] = PclZipUtilPathReduction($v_descr['filename']);
2013
  //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Filedescr after reduction :'".$v_descr['filename']."'");
2014
 
2015
+ // ----- Look for real file or folder
2016
+ if (file_exists($v_descr['filename'])) {
2017
+ if (@is_file($v_descr['filename'])) {
2018
+ //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "This is a file");
2019
+ $v_descr['type'] = 'file';
2020
+ }
2021
+ else if (@is_dir($v_descr['filename'])) {
2022
+ //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "This is a folder");
2023
+ $v_descr['type'] = 'folder';
2024
+ }
2025
+ else if (@is_link($v_descr['filename'])) {
2026
+ //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Unsupported file type : link");
2027
+ // skip
2028
+ continue;
2029
+ }
2030
+ else {
2031
+ //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Unsupported file type : unknown type");
2032
+ // skip
2033
+ continue;
2034
+ }
2035
+ }
2036
+
2037
+ // ----- Look for string added as file
2038
+ else if (isset($v_descr['content'])) {
2039
+ //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "This is a string added as a file");
2040
+ $v_descr['type'] = 'virtual_file';
2041
+ }
2042
+
2043
+ // ----- Missing file
2044
+ else {
2045
  // ----- Error log
2046
  //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "File '".$v_descr['filename']."' does not exists");
2047
  PclZip::privErrorLog(PCLZIP_ERR_MISSING_FILE, "File '".$v_descr['filename']."' does not exists");
2050
  //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
2051
  return PclZip::errorCode();
2052
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2053
 
2054
  // ----- Calculate the stored filename
2055
  $this->privCalculateStoredFilename($v_descr, $p_options);
2078
  // Because the name of the folder was changed, the name of the
2079
  // files/sub-folders also change
2080
  if ($v_descr['stored_filename'] != $v_descr['filename']) {
2081
+ if ($v_descr['stored_filename'] != '') {
2082
+ $v_dirlist_descr[$v_dirlist_nb]['new_full_name'] = $v_descr['stored_filename'].'/'.$v_item_handler;
2083
+ }
2084
+ else {
2085
+ $v_dirlist_descr[$v_dirlist_nb]['new_full_name'] = $v_item_handler;
2086
+ }
2087
  }
2088
 
2089
  $v_dirlist_nb++;
2090
  }
2091
+
2092
+ @closedir($v_folder_handler);
2093
  }
2094
  else {
2095
  //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Unable to open dir '".$v_descr['filename']."' in read mode. Skipped.");
2530
  }
2531
 
2532
  // ----- Check the filename
2533
+ if ( ($p_filedescr_list[$j]['type'] != 'virtual_file')
2534
+ && (!file_exists($p_filedescr_list[$j]['filename']))) {
2535
  //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "File '".$p_filedescr_list[$j]['filename']."' does not exists");
2536
  PclZip::privErrorLog(PCLZIP_ERR_MISSING_FILE, "File '".$p_filedescr_list[$j]['filename']."' does not exists");
2537
  //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
2539
  }
2540
 
2541
  // ----- Look if it is a file or a dir with no all path remove option
2542
+ // or a dir with all its path removed
2543
+ // if ( (is_file($p_filedescr_list[$j]['filename']))
2544
+ // || ( is_dir($p_filedescr_list[$j]['filename'])
2545
+ if ( ($p_filedescr_list[$j]['type'] == 'file')
2546
+ || ($p_filedescr_list[$j]['type'] == 'virtual_file')
2547
+ || ( ($p_filedescr_list[$j]['type'] == 'folder')
2548
  && ( !isset($p_options[PCLZIP_OPT_REMOVE_ALL_PATH])
2549
+ || !$p_options[PCLZIP_OPT_REMOVE_ALL_PATH]))
2550
+ ) {
2551
 
2552
  // ----- Add the file
2553
  $v_result = $this->privAddFile($p_filedescr_list[$j], $v_header,
2594
  }
2595
 
2596
  // ----- Look for a stored different filename
2597
+ /* TBC : Removed
2598
  if (isset($p_filedescr['stored_filename'])) {
2599
  $v_stored_filename = $p_filedescr['stored_filename'];
2600
  //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, 'Stored filename is NOT the same "'.$v_stored_filename.'"');
2603
  $v_stored_filename = $p_filedescr['stored_filename'];
2604
  //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, 'Stored filename is the same');
2605
  }
2606
+ */
2607
 
2608
  // ----- Set the file properties
2609
  clearstatcache();
2611
  $p_header['version_extracted'] = 10;
2612
  $p_header['flag'] = 0;
2613
  $p_header['compression'] = 0;
 
2614
  $p_header['crc'] = 0;
2615
  $p_header['compressed_size'] = 0;
 
2616
  $p_header['filename_len'] = strlen($p_filename);
2617
  $p_header['extra_len'] = 0;
 
2618
  $p_header['disk'] = 0;
2619
  $p_header['internal'] = 0;
 
 
 
2620
  $p_header['offset'] = 0;
2621
  $p_header['filename'] = $p_filename;
2622
+ // TBC : Removed $p_header['stored_filename'] = $v_stored_filename;
2623
+ $p_header['stored_filename'] = $p_filedescr['stored_filename'];
2624
  $p_header['extra'] = '';
 
2625
  $p_header['status'] = 'ok';
2626
  $p_header['index'] = -1;
2627
 
2628
+ // ----- Look for regular file
2629
+ if ($p_filedescr['type']=='file') {
2630
+ $p_header['external'] = 0x00000000;
2631
+ $p_header['size'] = filesize($p_filename);
2632
+ }
2633
+
2634
+ // ----- Look for regular folder
2635
+ else if ($p_filedescr['type']=='folder') {
2636
+ $p_header['external'] = 0x00000010;
2637
+ $p_header['mtime'] = filemtime($p_filename);
2638
+ $p_header['size'] = filesize($p_filename);
2639
+ }
2640
+
2641
+ // ----- Look for virtual file
2642
+ else if ($p_filedescr['type'] == 'virtual_file') {
2643
+ $p_header['external'] = 0x00000000;
2644
+ $p_header['size'] = strlen($p_filedescr['content']);
2645
+ }
2646
+
2647
+ //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Header external extension '".sprintf("0x%X",$p_header['external'])."'");
2648
+
2649
+ // ----- Look for filetime
2650
+ if (isset($p_filedescr['mtime'])) {
2651
+ $p_header['mtime'] = $p_filedescr['mtime'];
2652
+ }
2653
+ else if ($p_filedescr['type'] == 'virtual_file') {
2654
+ $p_header['mtime'] = mktime();
2655
+ }
2656
+ else {
2657
+ $p_header['mtime'] = filemtime($p_filename);
2658
+ }
2659
+
2660
+ // ------ Look for file comment
2661
+ if (isset($p_filedescr['comment'])) {
2662
+ $p_header['comment_len'] = strlen($p_filedescr['comment']);
2663
+ $p_header['comment'] = $p_filedescr['comment'];
2664
+ }
2665
+ else {
2666
+ $p_header['comment_len'] = 0;
2667
+ $p_header['comment'] = '';
2668
+ }
2669
+
2670
  // ----- Look for pre-add callback
2671
  if (isset($p_options[PCLZIP_CB_PRE_ADD])) {
2672
  //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "A pre-callback '".$p_options[PCLZIP_CB_PRE_ADD]."()') is defined for the extraction");
2707
  if ($p_header['status'] == 'ok') {
2708
 
2709
  // ----- Look for a file
2710
+ // if (is_file($p_filename))
2711
+ if ( ($p_filedescr['type'] == 'file')
2712
+ || ($p_filedescr['type'] == 'virtual_file')) {
2713
+
2714
+ // ----- Get content from real file
2715
+ if ($p_filedescr['type'] == 'file') {
2716
+ //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "'".$p_filename."' is a file");
2717
+
2718
+ // ----- Open the source file
2719
+ if (($v_file = @fopen($p_filename, "rb")) == 0) {
2720
+ PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, "Unable to open file '$p_filename' in binary read mode");
2721
+ //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
2722
+ return PclZip::errorCode();
2723
+ }
2724
 
 
 
2725
  // ----- Read the file content
2726
+ $v_content = @fread($v_file, $p_header['size']);
2727
 
2728
+ // ----- Close the file
2729
+ @fclose($v_file);
2730
+ }
2731
+ else if ($p_filedescr['type'] == 'virtual_file') {
2732
+ //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Add by string");
2733
+ $v_content = $p_filedescr['content'];
2734
+ }
2735
 
2736
+ // ----- Calculate the CRC
2737
+ $p_header['crc'] = @crc32($v_content);
2738
+
2739
+ // ----- Look for no compression
2740
+ if ($p_options[PCLZIP_OPT_NO_COMPRESSION]) {
2741
+ //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "File will not be compressed");
2742
  // ----- Set header parameters
2743
  $p_header['compressed_size'] = $p_header['size'];
2744
  $p_header['compression'] = 0;
2745
  }
2746
+
2747
+ // ----- Look for normal compression
2748
  else {
2749
  //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "File will be compressed");
2750
+ // ----- Compress the content
2751
+ $v_content = @gzdeflate($v_content);
 
 
 
 
 
 
2752
 
2753
  // ----- Set header parameters
2754
+ $p_header['compressed_size'] = strlen($v_content);
2755
  $p_header['compression'] = 8;
2756
  }
2757
 
2786
  }
2787
 
2788
  // ----- Write the compressed (or not) content
2789
+ @fwrite($this->zip_fd, $v_content, $p_header['compressed_size']);
 
 
 
 
2790
  }
2791
 
2792
  // ----- Look for a directory
2793
+ else if ($p_filedescr['type'] == 'folder') {
2794
  //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "'".$p_filename."' is a folder");
2795
  // ----- Look for directory last '/'
2796
  if (@substr($p_header['stored_filename'], -1) != '/') {
2865
  else {
2866
  $p_remove_dir = '';
2867
  }
2868
+ //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Remove path ='".$p_remove_dir."'");
2869
  if (isset($p_options[PCLZIP_OPT_REMOVE_ALL_PATH])) {
2870
  $p_remove_all_dir = $p_options[PCLZIP_OPT_REMOVE_ALL_PATH];
2871
  }
2904
  }
2905
  // ----- Look for partial path remove
2906
  else if ($p_remove_dir != "") {
2907
+ //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Partial path to remove");
2908
  if (substr($p_remove_dir, -1) != '/')
2909
  $p_remove_dir .= "/";
2910
 
3028
  $v_mtime = ($v_date['hours']<<11) + ($v_date['minutes']<<5) + $v_date['seconds']/2;
3029
  $v_mdate = (($v_date['year']-1980)<<9) + ($v_date['mon']<<5) + $v_date['mday'];
3030
 
3031
+ //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Comment size : \''.$p_header['comment_len'].'\'');
3032
+
3033
  // ----- Packed data
3034
  $v_binary_data = pack("VvvvvvvVVVvvvvvVV", 0x02014b50,
3035
  $p_header['version'], $p_header['version_extracted'],
3195
  // $p_info['comment'] = Comment associated with the file.
3196
  // $p_info['folder'] = true/false : indicates if the entry is a folder or not.
3197
  // $p_info['status'] = status of the action on the file.
3198
+ // $p_info['crc'] = CRC of the file content.
3199
  // Parameters :
3200
  // Return Values :
3201
  // --------------------------------------------------------------------------------
3214
  $p_info['folder'] = (($p_header['external']&0x00000010)==0x00000010);
3215
  $p_info['index'] = $p_header['index'];
3216
  $p_info['status'] = $p_header['status'];
3217
+ $p_info['crc'] = $p_header['crc'];
3218
 
3219
  // ----- Return
3220
  //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
3483
 
3484
  $v_extract = false;
3485
  }
3486
+
3487
  // ----- Look for real extraction
3488
  if ($v_extract)
3489
  {
3575
  $p_path, $p_remove_path,
3576
  $p_remove_all_path,
3577
  $p_options);
 
3578
  if ($v_result1 < 1) {
3579
  $this->privCloseFd();
3580
  $this->privSwapBackMagicQuotes();
3581
  //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result1);
 
3582
  return $v_result1;
3583
  }
3584
+
3585
  // ----- Get the only interesting attributes
3586
  if (($v_result = $this->privConvertHeader2FileInfo($v_header, $p_file_list[$v_nb_extracted++])) != 1)
3587
  {
3588
  // ----- Close the zip file
3589
  $this->privCloseFd();
3590
  $this->privSwapBackMagicQuotes();
3591
+
3592
  //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
3593
  return $v_result;
3594
  }
3595
+
3596
  // ----- Look for user callback abort
3597
  if ($v_result1 == 2) {
3598
  break;
3856
 
3857
  // ----- Look if extraction should be done
3858
  if ($p_entry['status'] == 'ok') {
3859
+
3860
  // ----- Do the extraction (if not a folder)
3861
  if (!(($p_entry['external']&0x00000010)==0x00000010))
3862
  {
3903
 
3904
  }
3905
  else {
 
3906
  //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "Extracting a compressed file (Compression method ".$p_entry['compression'].")");
3907
  // ----- TBC
3908
  // Need to be finished
3947
  // ----- Decompress the file
3948
  // alex.rabe : check again for the memory limit
3949
  if ( (function_exists('memory_get_usage')) && (ini_get('memory_limit')) ) {
3950
+ // take a overhead of 350000 byte (tested with XAMPP)
3951
+ $maxMemory = $memory_limit - memory_get_usage() - 350000;
3952
  $v_file_content = gzinflate($v_buffer,$maxMemory);
3953
  } else {
3954
  $v_file_content = @gzinflate($v_buffer);
4435
  //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Offset : \''.$p_header['offset'].'\'');
4436
 
4437
  // ----- Recuperate date in UNIX format
4438
+ //if ($p_header['mdate'] && $p_header['mtime'])
4439
+ // TBC : bug : this was ignoring time with 0/0/0
4440
+ if (1)
4441
  {
4442
  // ----- Extract time
4443
  $v_hour = ($p_header['mtime'] & 0xF800) >> 11;
4450
  $v_day = $p_header['mdate'] & 0x001F;
4451
 
4452
  // ----- Get UNIX date format
4453
+ $p_header['mtime'] = @mktime($v_hour, $v_minute, $v_seconde, $v_month, $v_day, $v_year);
4454
 
4455
  //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, 'Date : \''.date("d/m/y H:i:s", $p_header['mtime']).'\'');
4456
  }
4690
  }
4691
 
4692
  // ----- Get comment
4693
+ //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Comment size : \''.$v_data['comment_size'].'\'');
4694
+ if ($v_data['comment_size'] != 0) {
4695
  $p_central_dir['comment'] = fread($this->zip_fd, $v_data['comment_size']);
4696
+ }
4697
  else
4698
  $p_central_dir['comment'] = '';
4699
  //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, 'Comment : \''.$p_central_dir['comment'].'\'');
lib/thumbnail.inc.php CHANGED
@@ -4,8 +4,8 @@
4
  *
5
  * @author Ian Selby (ian@gen-x-design.com)
6
  * @copyright Copyright 2006
7
- * @version 1.1.1 (PHP4)
8
- * @modded by Alex Rabe
9
  *
10
  */
11
 
@@ -112,12 +112,11 @@ class ngg_Thumbnail {
112
  *
113
  */
114
  var $watermarkText;
115
-
116
  /**
117
- * Class constructor
118
  *
119
- * @param string $fileName
120
- * @return Thumbnail
121
  */
122
  function ngg_Thumbnail($fileName,$no_ErrorImage = false) {
123
  //make sure the GD library is installed
@@ -586,7 +585,7 @@ class ngg_Thumbnail {
586
  switch($this->format) {
587
  case 'GIF':
588
  if($name != '') {
589
- ImageGif($this->newImage,$name);
590
  }
591
  else {
592
  header('Content-type: image/gif');
@@ -595,7 +594,7 @@ class ngg_Thumbnail {
595
  break;
596
  case 'JPG':
597
  if($name != '') {
598
- ImageJpeg($this->newImage,$name,$quality);
599
  }
600
  else {
601
  header('Content-type: image/jpeg');
@@ -604,7 +603,7 @@ class ngg_Thumbnail {
604
  break;
605
  case 'PNG':
606
  if($name != '') {
607
- ImagePng($this->newImage,$name);
608
  }
609
  else {
610
  header('Content-type: image/png');
@@ -619,9 +618,15 @@ class ngg_Thumbnail {
619
  *
620
  * @param string $name
621
  * @param int $quality
 
622
  */
623
  function save($name,$quality=100) {
624
  $this->show($quality,$name);
 
 
 
 
 
625
  }
626
 
627
  /**
@@ -805,6 +810,10 @@ class ngg_Thumbnail {
805
  if ( !is_readable($wmFontPath))
806
  return;
807
 
 
 
 
 
808
  $TextSize = ImageTTFBBox($wmSize, 0, $wmFontPath, $this->watermarkText);
809
  $TextWidth = abs($TextSize[2]) + abs($TextSize[0]);
810
  $TextHeight = abs($TextSize[7]) + abs($TextSize[1]);
@@ -835,10 +844,16 @@ class ngg_Thumbnail {
835
  */
836
  function watermarkImage( $relPOS = 'botRight', $xPOS = 0, $yPOS = 0) {
837
 
 
 
 
 
838
  // Would you really want to use anything other than a png?
839
  $this->workingImage = @imagecreatefrompng($this->watermarkImgPath);
840
- if (empty($this->workingImage))
841
- $this->workingImage = $this->watermarkImgPath;
 
 
842
 
843
  imagealphablending($this->workingImage, false);
844
  imagesavealpha($this->workingImage, true);
@@ -867,7 +882,7 @@ class ngg_Thumbnail {
867
  if($this->format == 'GIF') {
868
  $tempimage = imagecreatetruecolor($sourcefile_width,$sourcefile_height);
869
  imagecopy($tempimage, $this->oldImage, 0, 0, 0, 0,$sourcefile_width, $sourcefile_height);
870
- $this->workingImage = $tempimage;
871
  }
872
 
873
  imagecopy($this->newImage, $this->workingImage, $dest_x, $dest_y, 0, 0,$watermarkfile_width, $watermarkfile_height);
4
  *
5
  * @author Ian Selby (ian@gen-x-design.com)
6
  * @copyright Copyright 2006
7
+ * @version 1.1.2 (PHP4)
8
+ * @modded by Alex Rabe
9
  *
10
  */
11
 
112
  *
113
  */
114
  var $watermarkText;
 
115
  /**
116
+ * Image Resource ID for Watermark
117
  *
118
+ * @var string
119
+ *
120
  */
121
  function ngg_Thumbnail($fileName,$no_ErrorImage = false) {
122
  //make sure the GD library is installed
585
  switch($this->format) {
586
  case 'GIF':
587
  if($name != '') {
588
+ @ImageGif($this->newImage,$name) or $this->error = true;
589
  }
590
  else {
591
  header('Content-type: image/gif');
594
  break;
595
  case 'JPG':
596
  if($name != '') {
597
+ @ImageJpeg($this->newImage,$name,$quality) or $this->error = true;
598
  }
599
  else {
600
  header('Content-type: image/jpeg');
603
  break;
604
  case 'PNG':
605
  if($name != '') {
606
+ @ImagePng($this->newImage,$name) or $this->error = true;
607
  }
608
  else {
609
  header('Content-type: image/png');
618
  *
619
  * @param string $name
620
  * @param int $quality
621
+ * @return bool errorstate
622
  */
623
  function save($name,$quality=100) {
624
  $this->show($quality,$name);
625
+ if ($this->error == true) {
626
+ $this->errmsg = 'Create Image failed. Check safe mode settings';
627
+ return false;
628
+ }
629
+ return true;
630
  }
631
 
632
  /**
810
  if ( !is_readable($wmFontPath))
811
  return;
812
 
813
+ // This function requires both the GD library and the FreeType library.
814
+ if ( !function_exists(ImageTTFBBox) )
815
+ return;
816
+
817
  $TextSize = ImageTTFBBox($wmSize, 0, $wmFontPath, $this->watermarkText);
818
  $TextWidth = abs($TextSize[2]) + abs($TextSize[0]);
819
  $TextHeight = abs($TextSize[7]) + abs($TextSize[1]);
844
  */
845
  function watermarkImage( $relPOS = 'botRight', $xPOS = 0, $yPOS = 0) {
846
 
847
+ // if it's a resource ID take it as watermark text image
848
+ if(is_resource($this->watermarkImgPath)) {
849
+ $this->workingImage = $this->watermarkImgPath;
850
+ } else {
851
  // Would you really want to use anything other than a png?
852
  $this->workingImage = @imagecreatefrompng($this->watermarkImgPath);
853
+ // if it's not a valid file die...
854
+ if (empty($this->workingImage) or (!$this->workingImage))
855
+ return;
856
+ }
857
 
858
  imagealphablending($this->workingImage, false);
859
  imagesavealpha($this->workingImage, true);
882
  if($this->format == 'GIF') {
883
  $tempimage = imagecreatetruecolor($sourcefile_width,$sourcefile_height);
884
  imagecopy($tempimage, $this->oldImage, 0, 0, 0, 0,$sourcefile_width, $sourcefile_height);
885
+ $this->newImage = $tempimage;
886
  }
887
 
888
  imagecopy($this->newImage, $this->workingImage, $dest_x, $dest_y, 0, 0,$watermarkfile_width, $watermarkfile_height);
nggallery.php CHANGED
@@ -4,7 +4,7 @@ Plugin Name: NextGEN Gallery
4
  Plugin URI: http://alexrabe.boelinger.com/?page_id=80
5
  Description: A NextGENeration Photo gallery for the WEB2.0(beta).
6
  Author: NextGEN DEV-Team
7
- Version: 0.74
8
 
9
  Author URI: http://alexrabe.boelinger.com/
10
 
@@ -35,22 +35,20 @@ if(preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die('You
35
 
36
  //#################################################################
37
  // Let's Go
38
-
39
- global $wpdb, $wp_version;
40
 
41
  // ini_set('display_errors', '1');
42
  // ini_set('error_reporting', E_ALL);
43
 
44
- //This works only in WP2.1 or higher
45
- if (version_compare($wp_version, '2.1', '>=')) {
46
 
47
- // Permission settings ############################################
48
- define('NGGFOLDER_PERMISSION', 0777);
49
- define('NGGFILE_PERMISSION', 0666);
50
- // ################################################################
51
 
52
  // Version and path to check version
53
- define('NGGVERSION', "0.74");
54
  define('NGGURL', "http://nextgen.boelinger.com/version.php");
55
 
56
  // define URL
@@ -71,6 +69,10 @@ if ((gettype(ini_get('safe_mode')) == 'string')) {
71
  } else
72
  define('SAFE_MODE', ini_get('safe_mode'));
73
 
 
 
 
 
74
  //read the options
75
  $ngg_options = get_option('ngg_options');
76
 
@@ -87,15 +89,27 @@ function nggallery_init ()
87
  load_plugin_textdomain('nggallery','wp-content/plugins/' . NGGFOLDER.'/lang');
88
  }
89
 
90
- // Load admin panel
91
- include_once (dirname (__FILE__)."/ngginstall.php");
92
- include_once (dirname (__FILE__)."/nggfunctions.php");
93
- include_once (dirname (__FILE__)."/admin/admin.php");
 
 
 
 
 
 
 
94
 
95
- // load gallery class
96
  require_once (dirname (__FILE__).'/lib/nggallery.lib.php');
 
 
97
  $nggallery = new nggallery();
98
 
 
 
 
99
  // add javascript to header
100
  add_action('wp_head', 'ngg_addjs', 1);
101
  function ngg_addjs() {
@@ -103,9 +117,9 @@ function ngg_addjs() {
103
 
104
  echo "<meta name='NextGEN' content='".NGGVERSION."' />\n";
105
  if ($ngg_options['activateCSS'])
106
- echo "\n".'<style type="text/css" media="screen">@import "'.NGGALLERY_URLPATH.'css/'.$ngg_options[CSSfile].'";</style>';
107
  if ($ngg_options['thumbEffect'] == "thickbox") {
108
- echo "\n".'<script type="text/javascript"> var tb_pathToImage = "'.NGGALLERY_URLPATH.'thickbox/'.$ngg_options[thickboxImage].'";</script>';
109
  echo "\n".'<style type="text/css" media="screen">@import "'.NGGALLERY_URLPATH.'thickbox/thickbox.css";</style>'."\n";
110
  if ($wp_version < "2.3") {
111
  if ($wp_version > "2.1.3") wp_deregister_script('jquery');
@@ -123,143 +137,39 @@ function ngg_addjs() {
123
 
124
  // test for wordTube function
125
  if (!function_exists('integrate_swfobject')) {
126
- wp_enqueue_script('swfobject', NGGALLERY_URLPATH .'js/swfobject.js', FALSE, '1.5');
127
  }
128
  }
129
 
130
  // load language file
131
  add_action('init', 'nggallery_init');
132
 
133
- add_action('activate_' . NGGFOLDER.'/nggallery.php', 'ngg_install');
 
 
 
 
 
134
  // init tables in wp-database if plugin is activated
135
  function ngg_install() {
 
 
136
  nggallery_install();
 
 
 
 
 
 
 
137
  }
138
 
139
  // Action calls for all functions
140
  add_filter('the_content', 'searchnggallerytags');
141
  add_filter('the_excerpt', 'searchnggallerytags');
142
 
143
- //#################################################################
144
- // add action/filter for the upload tab
145
- add_action('upload_files_ngg_gallery', 'ngg_action_upload_Tab');
146
- add_filter('wp_upload_tabs', 'ngg_wp_upload_tabs');
147
-
148
- function ngg_action_upload_Tab() {
149
- // execute when click on the tab
150
- global $style;
151
- if ( 'inline' == $style )
152
- wp_enqueue_script('nggadmintab', NGGALLERY_URLPATH .'js/nggadmintab-js.php', array('prototype'), '0.6');
153
- }
154
-
155
- function ngg_wp_upload_tabs ($array) {
156
-
157
- global $wpdb;
158
-
159
- /*
160
- 0 => tab display name,
161
- 1 => required cap / role,
162
- 2 => function that produces tab content,
163
- 3 => total number objects OR array(total, objects per page),
164
- 4 => add_query_args
165
- */
166
- include_once (dirname (__FILE__)."/nggadmintab.php");
167
-
168
- // Create navigation
169
- $total = 1;
170
- if ($_GET['select_gal']){
171
- $galleryID = $_GET['select_gal'];
172
- $total = $wpdb->get_var("SELECT COUNT(*) FROM $wpdb->nggpictures WHERE galleryid = '$galleryID'");
173
- }
174
-
175
- $tab = array(
176
- 'ngg_gallery' => array(__('Gallery','nggallery'), 'NextGEN Use TinyMCE', 'ngg_upload_tab_content', array($total, 10))
177
- );
178
-
179
- return array_merge($array,$tab);
180
- }
181
- //#################################################################
182
- // TinyMCE Button Integration
183
-
184
- // Load the Script for the Button
185
- function insert_nextgen_script() {
186
-
187
- //TODO: Do with WP2.1 Script Loader
188
- // Thanks for this idea to www.jovelstefan.de
189
- echo "\n"."
190
- <script type='text/javascript'>
191
- function ngg_buttonscript() {
192
- if(window.tinyMCE) {
193
-
194
- var template = new Array();
195
-
196
- template['file'] = '".NGGALLERY_URLPATH."nggbutton.php';
197
- template['width'] = 360;
198
- template['height'] = 210;
199
-
200
- args = {
201
- resizable : 'no',
202
- scrollbars : 'no',
203
- inline : 'yes'
204
- };
205
-
206
- tinyMCE.openWindow(template, args);
207
- return true;
208
- }
209
- }
210
- </script>";
211
- return;
212
- }
213
-
214
- function ngg_addbuttons() {
215
-
216
- global $wp_db_version;
217
-
218
- // Don't bother doing this stuff if the current user lacks permissions
219
- if ( !current_user_can('edit_posts') && !current_user_can('edit_pages') ) return;
220
-
221
- // Check for NextGEN capability
222
- if ( !current_user_can('NextGEN Use TinyMCE') ) return;
223
-
224
- // Add only in Rich Editor mode
225
- if ( get_user_option('rich_editing') == 'true') {
226
-
227
- // add the button for wp21 in a new way
228
- add_filter("mce_plugins", "nextgen_button_plugin", 5);
229
- add_filter('mce_buttons', 'nextgen_button', 5);
230
- add_action('tinymce_before_init','nextgen_button_script');
231
- }
232
- }
233
-
234
- // used to insert button in wordpress 2.1x editor
235
- function nextgen_button($buttons) {
236
-
237
- array_push($buttons, "separator", "NextGEN");
238
- return $buttons;
239
-
240
- }
241
-
242
- // Tell TinyMCE that there is a plugin (wp2.1)
243
- function nextgen_button_plugin($plugins) {
244
-
245
- array_push($plugins, "-NextGEN");
246
- return $plugins;
247
- }
248
-
249
- // Load the TinyMCE plugin : editor_plugin.js (wp2.1)
250
- function nextgen_button_script() {
251
-
252
- $pluginURL = NGGALLERY_URLPATH.'js/';
253
- echo 'tinyMCE.loadPlugin("NextGEN", "'.$pluginURL.'");' . "\n";
254
- return;
255
- }
256
-
257
- // init process for button control
258
- add_action('init', 'ngg_addbuttons');
259
- add_action('edit_page_form', 'insert_nextgen_script');
260
- add_action('edit_form_advanced', 'insert_nextgen_script');
261
-
262
- //#################################################################
263
 
264
  } else {
265
  add_action('admin_notices', create_function('', 'echo \'<div id="message" class="error fade"><p><strong>' . __('Sorry, NextGEN Gallery works only under WordPress 2.1 or higher',"nggallery") . '</strong></p></div>\';'));
4
  Plugin URI: http://alexrabe.boelinger.com/?page_id=80
5
  Description: A NextGENeration Photo gallery for the WEB2.0(beta).
6
  Author: NextGEN DEV-Team
7
+ Version: 0.80
8
 
9
  Author URI: http://alexrabe.boelinger.com/
10
 
35
 
36
  //#################################################################
37
  // Let's Go
38
+
39
+ global $wpdb, $wp_version, $wpmu_version, $wp_roles;
40
 
41
  // ini_set('display_errors', '1');
42
  // ini_set('error_reporting', E_ALL);
43
 
44
+ // Check for WPMU installation
45
+ define('IS_WPMU', version_compare($wpmu_version, '1.3', '>=') );
46
 
47
+ //This works only in WP2.2 or higher
48
+ if ((version_compare($wp_version, '2.1', '>=')) or (IS_WPMU)){
 
 
49
 
50
  // Version and path to check version
51
+ define('NGGVERSION', "0.80");
52
  define('NGGURL', "http://nextgen.boelinger.com/version.php");
53
 
54
  // define URL
69
  } else
70
  define('SAFE_MODE', ini_get('safe_mode'));
71
 
72
+ //pass the init check or show a message
73
+ if (get_option( "ngg_init_check" ) != false )
74
+ add_action('admin_notices', create_function('', 'echo \'<div id="message" class="error fade"><p><strong>' . get_option( "ngg_init_check" ) . '</strong></p></div>\';'));
75
+
76
  //read the options
77
  $ngg_options = get_option('ngg_options');
78
 
89
  load_plugin_textdomain('nggallery','wp-content/plugins/' . NGGFOLDER.'/lang');
90
  }
91
 
92
+ // Load the admin panel
93
+ if (is_admin()) {
94
+ include_once (dirname (__FILE__)."/ngginstall.php");
95
+ include_once (dirname (__FILE__)."/admin/admin.php");
96
+ } else {
97
+ // Load the gallery generator
98
+ include_once (dirname (__FILE__)."/nggfunctions.php");
99
+ }
100
+
101
+ // Load tinymce button
102
+ include_once (dirname (__FILE__)."/tinymce/tinymce.php");
103
 
104
+ // Load gallery class
105
  require_once (dirname (__FILE__).'/lib/nggallery.lib.php');
106
+
107
+ // Init the clas
108
  $nggallery = new nggallery();
109
 
110
+ // Add rewrite rules
111
+ $nggRewrite = new nggRewrite();
112
+
113
  // add javascript to header
114
  add_action('wp_head', 'ngg_addjs', 1);
115
  function ngg_addjs() {
117
 
118
  echo "<meta name='NextGEN' content='".NGGVERSION."' />\n";
119
  if ($ngg_options['activateCSS'])
120
+ echo "\n".'<style type="text/css" media="screen">@import "'.NGGALLERY_URLPATH.'css/'.$ngg_options['CSSfile'].'";</style>';
121
  if ($ngg_options['thumbEffect'] == "thickbox") {
122
+ echo "\n".'<script type="text/javascript"> var tb_pathToImage = "'.NGGALLERY_URLPATH.'thickbox/'.$ngg_options['thickboxImage'].'";</script>';
123
  echo "\n".'<style type="text/css" media="screen">@import "'.NGGALLERY_URLPATH.'thickbox/thickbox.css";</style>'."\n";
124
  if ($wp_version < "2.3") {
125
  if ($wp_version > "2.1.3") wp_deregister_script('jquery');
137
 
138
  // test for wordTube function
139
  if (!function_exists('integrate_swfobject')) {
140
+ wp_enqueue_script('swfobject', NGGALLERY_URLPATH .'admin/js/swfobject.js', FALSE, '1.5');
141
  }
142
  }
143
 
144
  // load language file
145
  add_action('init', 'nggallery_init');
146
 
147
+ // Init options & tables during activation
148
+ // add_action('activate_' . NGGFOLDER.'/nggallery.php', 'ngg_install');
149
+ // WP recommended function, not used until 2.2.3
150
+ register_activation_hook(NGGFOLDER.'/nggallery.php','ngg_install');
151
+ register_deactivation_hook(NGGFOLDER.'/nggallery.php','ngg_deinstall');
152
+
153
  // init tables in wp-database if plugin is activated
154
  function ngg_install() {
155
+ global $nggRewrite;
156
+ // Check for admin role
157
  nggallery_install();
158
+ // Flush ReWrite rules
159
+ $nggRewrite->flush();
160
+ }
161
+
162
+ function ngg_deinstall() {
163
+ // remove & reset the init check option
164
+ delete_option( "ngg_init_check" );
165
  }
166
 
167
  // Action calls for all functions
168
  add_filter('the_content', 'searchnggallerytags');
169
  add_filter('the_excerpt', 'searchnggallerytags');
170
 
171
+ // Content Filters
172
+ add_filter('ngg_gallery_name', 'sanitize_title');
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
173
 
174
  } else {
175
  add_action('admin_notices', create_function('', 'echo \'<div id="message" class="error fade"><p><strong>' . __('Sorry, NextGEN Gallery works only under WordPress 2.1 or higher',"nggallery") . '</strong></p></div>\';'));
nggfunctions.php CHANGED
@@ -1,9 +1,13 @@
1
  <?php
2
 
 
 
3
  function searchnggallerytags($content) {
4
 
5
  global $wpdb;
6
- $ngg_options = get_option('ngg_options');
 
 
7
 
8
  $search = "@\[singlepic=(\d+)(|,\d+|,)(|,\d+|,)(|,watermark|,web20|,)(|,right|,left|,)\]@i";
9
 
@@ -81,7 +85,7 @@ function searchnggallerytags($content) {
81
  // check for gallery id
82
  $galleryID = $wpdb->get_var("SELECT gid FROM $wpdb->nggallery WHERE gid = '$v0' ");
83
  if(!$galleryID) $galleryID = $wpdb->get_var("SELECT gid FROM $wpdb->nggallery WHERE name = '$v0' ");
84
- if($galleryID) {
85
  $search = $matches[0][$key];
86
  // get the size if they are set
87
  $irWidth = $matches[3][$key];
@@ -128,81 +132,90 @@ function searchnggallerytags($content) {
128
  function nggShowSlideshow($galleryID,$irWidth,$irHeight) {
129
 
130
  global $wpdb;
131
- $ngg_options = get_option('ngg_options');
132
- $obj = 'so' . $galleryID;
133
-
134
- if (empty($irWidth) ) $irWidth = $ngg_options['irWidth'];
135
- if (empty($irHeight)) $irHeight = $ngg_options['irHeight'];
136
-
137
- $replace = "\n".'<div class="slideshow" id="ngg_slideshow'.$galleryID.'">';
138
- $replace .= '<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..</p></div>';
139
- $replace .= "\n\t".'<script type="text/javascript" defer="defer">';
140
- if ($ngg_options['irXHTMLvalid']) $replace .= "\n\t".'<!--';
141
- if ($ngg_options['irXHTMLvalid']) $replace .= "\n\t".'//<![CDATA[';
142
- $replace .= "\n\t\t".'var '. $obj .' = new SWFObject("'.NGGALLERY_URLPATH.'imagerotator.swf", "ngg_slideshow'.$galleryID.'", "'.$irWidth.'", "'.$irHeight.'", "7", "#'.$ngg_options[irBackcolor].'");';
143
- $replace .= "\n\t\t".$obj.'.addParam("wmode", "opaque");';
144
- $replace .= "\n\t\t".$obj.'.addVariable("file", "'.NGGALLERY_URLPATH.'nggextractXML.php?gid='.$galleryID.'");';
145
- if (!$ngg_options['irShuffle']) $replace .= "\n\t\t".$obj.'.addVariable("shuffle", "false");';
146
- if ($ngg_options['irLinkfromdisplay']) $replace .= "\n\t\t".$obj.'.addVariable("linkfromdisplay", "false");';
147
- if ($ngg_options['irShownavigation']) $replace .= "\n\t\t".$obj.'.addVariable("shownavigation", "true");';
148
- if ($ngg_options['irShowicons']) $replace .= "\n\t\t".$obj.'.addVariable("showicons", "true");';
149
- if ($ngg_options['irKenburns']) $replace .= "\n\t\t".$obj.'.addVariable("kenburns", "true");';
150
- if ($ngg_options['irWatermark']) $replace .= "\n\t\t".$obj.'.addVariable("logo", "'.$ngg_options['wmPath'].'");';
151
- if (!empty($ngg_options['irAudio'])) $replace .= "\n\t\t".$obj.'.addVariable("audio", "'.$ngg_options['irAudio'].'");';
152
- $replace .= "\n\t\t".$obj.'.addVariable("overstretch", "'.$ngg_options['irOverstretch'].'");';
153
- $replace .= "\n\t\t".$obj.'.addVariable("backcolor", "0x'.$ngg_options['irBackcolor'].'");';
154
- $replace .= "\n\t\t".$obj.'.addVariable("frontcolor", "0x'.$ngg_options['irFrontcolor'].'");';
155
- $replace .= "\n\t\t".$obj.'.addVariable("lightcolor", "0x'.$ngg_options['irLightcolor'].'");';
156
- $replace .= "\n\t\t".$obj.'.addVariable("rotatetime", "'.$ngg_options['irRotatetime'].'");';
157
- $replace .= "\n\t\t".$obj.'.addVariable("transition", "'.$ngg_options['irTransition'].'");';
158
- $replace .= "\n\t\t".$obj.'.addVariable("width", "'.$irWidth.'");';
159
- $replace .= "\n\t\t".$obj.'.addVariable("height", "'.$irHeight.'");';
160
- $replace .= "\n\t\t".$obj.'.write("ngg_slideshow'.$galleryID.'");';
161
- if ($ngg_options['irXHTMLvalid']) $replace .= "\n\t".'//]]>';
162
- if ($ngg_options['irXHTMLvalid']) $replace .= "\n\t".'-->';
163
- $replace .= "\n\t".'</script>';
164
-
165
- return $replace;
 
 
 
 
 
166
  }
167
 
168
  /**********************************************************/
169
  function nggShowGallery($galleryID) {
170
 
171
- global $wpdb;
172
 
173
- $ngg_options = get_option('ngg_options');
 
 
 
 
 
174
 
175
  // use the jQuery Plugin if activated
176
  if (($ngg_options['thumbEffect'] == "thickbox") && ($ngg_options['galUsejQuery'])) {
177
- $gallerycontent .= nggShowJSGallery($galleryID);
178
- return $gallerycontent;
179
  }
180
 
181
- // set $_GET if slideshow first
182
- if ( !isset( $_GET['show'] ) AND ($ngg_options['galShowOrder'] == 'slide')) {
183
- $_GET['page'] = get_the_ID();
184
- $_GET['show'] = slide;
185
  }
186
 
187
  // go on only on this page
188
- if ( $_GET['page'] == get_the_ID() ) {
189
 
190
  // 1st look for ImageBrowser link
191
- if (isset( $_GET['pid'])) {
192
- $gallerycontent = nggShowImageBrowser($galleryID);
193
- return $gallerycontent;
194
  }
195
 
196
  // 2nd look for slideshow
197
- if ( isset( $_GET['show'] ) AND ($_GET['show'] == slide) ) {
198
- $args['page'] = get_the_ID();
199
  $args['show'] = "gallery";
200
- $gallerycontent = '<div class="ngg-galleryoverview">';
201
- $gallerycontent .= '<a class="slideshowlink" href="' . htmlspecialchars(add_query_arg( $args) ) . '">'.$ngg_options['galTextGallery'].'</a>';
202
- $gallerycontent .= nggShowSlideshow($galleryID,$ngg_options['irWidth'],$ngg_options['irHeight']);
203
- $gallerycontent .= '</div>'."\n";
204
- $gallerycontent .= '<div class="ngg-clear"></div>'."\n";
205
- return $gallerycontent;
206
  }
207
  }
208
 
@@ -213,10 +226,11 @@ function nggShowGallery($galleryID) {
213
  // get all picture with this galleryid
214
  $picturelist = $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 tt.$ngg_options[galSort] $ngg_options[galSortDir] ");
215
  if (is_array($picturelist)) {
216
- $gallerycontent = nggCreateGallery($picturelist,$galleryID);
217
  }
218
 
219
- return $gallerycontent;
 
220
  }
221
 
222
  /**********************************************************/
@@ -226,12 +240,18 @@ function nggCreateGallery($picturelist,$galleryID = false) {
226
  * @int $galleryID
227
  **/
228
 
 
 
 
 
 
 
 
 
 
229
  if (!is_array($picturelist))
230
  $picturelist = array($picturelist);
231
 
232
- // Get option
233
- $ngg_options = get_option('ngg_options');
234
-
235
  $maxElement = $ngg_options['galImages'];
236
  $thumbwidth = $ngg_options['thumbwidth'];
237
  $thumbheight = $ngg_options['thumbheight'];
@@ -249,9 +269,9 @@ function nggCreateGallery($picturelist,$galleryID = false) {
249
 
250
  // check for page navigation
251
  if ($maxElement > 0) {
252
- if ( $_GET['page'] == get_the_ID() ) {
253
- if ( isset( $_GET['nggpage'] ) )
254
- $page = (int) $_GET['nggpage'];
255
  else
256
  $page = 1;
257
  }
@@ -270,46 +290,45 @@ function nggCreateGallery($picturelist,$galleryID = false) {
270
  }
271
 
272
  if (is_array($picturelist)) {
273
- $out = '<div class="ngg-galleryoverview">';
274
 
275
  // show slideshow link
276
  if ($galleryID)
277
  if (($ngg_options['galShowSlide']) AND (NGGALLERY_IREXIST)) {
278
- $args['page'] = get_the_ID();
279
  $args['show'] = "slide";
280
- $out .= '<a class="slideshowlink" href="' . htmlspecialchars(add_query_arg( $args )) . '">'.$ngg_options[galTextSlide].'</a>';
281
  }
282
 
283
  // a description below the picture, require fixed width
284
  if (!$ngg_options['galShowDesc'])
285
  $ngg_options['galShowDesc'] = "none";
286
- $setwidth = ($ngg_options['galShowDesc'] != "none") ? 'style="width:'.($thumbwidth + 15).'px;"' : '';
 
287
 
288
  foreach ($picturelist as $picture) {
289
  // set image url
290
  $folder_url = get_option ('siteurl')."/".$picture->path."/";
291
  $thumbnailURL = get_option ('siteurl')."/".$picture->path.nggallery::get_thumbnail_folder($picture->path, FALSE);
292
  $thumb_prefix = nggallery::get_thumbnail_prefix($picture->path, FALSE);
293
- //clean filename
294
- $picturefile = nggallery::remove_umlauts($picture->filename);
295
  // choose link between imagebrowser or effect
296
 
297
- $link =($ngg_options['galImgBrowser']) ? htmlspecialchars(add_query_arg(array('page'=>get_the_ID(),'pid'=>$picture->pid))) : $folder_url.$picturefile;
298
  // create output
299
- $out .= '<div class="ngg-gallery-thumbnail-box">'."\n\t";
300
  $out .= '<div class="ngg-gallery-thumbnail" '.$setwidth.' >'."\n\t";
301
  $out .= '<a href="'.$link.'" title="'.stripslashes($picture->description).'" '.$thumbcode.' >';
302
  $out .= '<img title="'.stripslashes($picture->alttext).'" alt="'.stripslashes($picture->alttext).'" src="'.$thumbnailURL.$thumb_prefix.$picture->filename.'" '.$thumbsize.' />';
303
  $out .= '</a>'."\n";
304
  if ($ngg_options['galShowDesc'] == "alttext")
305
- $out .= '<span>'.stripslashes($picture->alttext).'</span>'."\n";
306
  if ($ngg_options['galShowDesc'] == "desc")
307
- $out .= '<span>'.stripslashes($picture->description).'</span>'."\n";
308
  $out .= '</div>'."\n".'</div>'."\n";
309
  }
310
  $out .= '</div>'."\n";
311
  $out .= ($maxElement > 0) ? $navigation : '<div class="ngg-clear"></div>'."\n";
312
  }
 
313
  return $out;
314
  }
315
 
@@ -317,11 +336,12 @@ function nggCreateGallery($picturelist,$galleryID = false) {
317
  /**********************************************************/
318
  function nggShowJSGallery($galleryID) {
319
  // create a gallery with a jQuery plugin
 
320
 
321
  global $wpdb;
322
- $ngg_options = get_option('ngg_options');
 
323
 
324
- // Get option
325
  $maxElement = $ngg_options['galImages'];
326
 
327
  // get gallery values
@@ -338,48 +358,50 @@ function nggShowJSGallery($galleryID) {
338
  // create array
339
  $i = 0;
340
 
341
- $gallerycontent = '<script type="text/javascript">'."\n";
342
- $gallerycontent .= 'var nggal'. $galleryID .'=new Array()'."\n";
343
  foreach ($picturelist as $picture) {
344
- $picturefile = nggallery::remove_umlauts($picture->filename);
345
- $gallerycontent .= 'nggal'. $galleryID .'['.$i++.']=["'.$picture->filename.'", "'.stripslashes($picture->alttext).'", "'.strip_tags(nggallery::ngg_nl2br($picture->description)).'"]'."\n";
346
  }
347
- $gallerycontent .= 'jQuery(document).ready(function() {'."\n";
348
- $gallerycontent .= ' jQuery("#nggal'. $galleryID .'").nggallery({'."\n";
349
- $gallerycontent .= ' imgarray : nggal'. $galleryID . ','."\n";
350
- $gallerycontent .= ' name : "'. $act_gallery->name . '",'."\n";
351
- $gallerycontent .= ' galleryurl : "'. $folder_url . '",'."\n";
352
- $gallerycontent .= ' thumbfolder : "'. $thumb_folder . '",'."\n";
353
  if ($ngg_options['thumbEffect'] == "thickbox")
354
- $gallerycontent .= ' thickbox : true,'."\n";
355
- $gallerycontent .= ' maxelement : '. $maxElement ."\n";
356
- $gallerycontent .= ' });'."\n";
357
- $gallerycontent .= '});'."\n";
358
 
359
- $gallerycontent .= '</script>'."\n";
360
- $gallerycontent .= ' <div id="nggal'. $galleryID .'">'."\n";
361
- $gallerycontent .= ' <!-- The content will be dynamically loaded in here -->'."\n";
362
- $gallerycontent .= '</div>'."\n";
363
- $gallerycontent .= '<div class="ngg-clear"></div>'."\n";
364
  }
365
 
366
- return $gallerycontent;
367
  }
368
  /**********************************************************/
369
  function nggShowAlbum($albumID,$mode = "extend") {
370
 
371
  global $wpdb;
372
 
373
- $albumcontent = "";
 
 
374
 
375
  // look for gallery variable
376
- if (isset( $_GET['gallery'])) {
377
 
378
- if ($albumID != $_GET['album']) return $albumcontent;
 
379
 
380
- $galleryID = (int) attribute_escape($_GET['gallery']);
381
- $albumcontent = nggShowGallery($galleryID);
382
- return $albumcontent;
383
  }
384
 
385
  $mode = ltrim($mode,',');
@@ -388,32 +410,36 @@ function nggShowAlbum($albumID,$mode = "extend") {
388
  $gallery_array = unserialize($sortorder);
389
  }
390
 
391
- $albumcontent = '<div class="ngg-albumoverview">';
 
392
  if (is_array($gallery_array)) {
393
  foreach ($gallery_array as $galleryID) {
394
- $albumcontent .= nggCreateAlbum($galleryID,$mode,$albumID);
395
  }
396
  }
397
- $albumcontent .= '</div>'."\n";
398
- $albumcontent .= '<div class="ngg-clear"></div>'."\n";
399
 
400
- return $albumcontent;
 
 
 
 
401
  }
402
 
403
  /**********************************************************/
404
  function nggCreateAlbum($galleryID,$mode = "extend",$albumID = 0) {
405
  // create a gallery overview div
406
 
407
- global $wpdb;
408
- $ngg_options = get_option('ngg_options');
 
409
 
410
  $gallerycontent = $wpdb->get_row("SELECT * FROM $wpdb->nggallery WHERE gid = '$galleryID' ");
411
 
412
  // choose between variable and page link
413
- if ($ngg_options[galNoPages]) {
414
- $gallerylink['album'] = $albumID;
415
- $gallerylink['gallery'] = $galleryID;
416
- $link = htmlspecialchars(add_query_arg($gallerylink));
417
  } else {
418
  $link = get_permalink($gallerycontent->pageid);
419
  }
@@ -422,10 +448,10 @@ function nggCreateAlbum($galleryID,$mode = "extend",$albumID = 0) {
422
  $counter = $wpdb->get_var("SELECT COUNT(*) FROM $wpdb->nggpictures WHERE galleryid = '$galleryID' AND exclude != 1");
423
  if ($mode == "compact") {
424
  if ($gallerycontent->previewpic != 0)
425
- $insertpic = '<img class="Thumb" width="91" height="68" alt="'.$gallerycontent->title.'" src="'.nggallery::get_thumbnail_url($gallerycontent->previewpic).'"/>';
426
  else
427
  $insertpic = __('Watch gallery', 'nggallery');
428
- $galleryoutput = '
429
  <div class="ngg-album-compact">
430
  <div class="ngg-album-compactbox">
431
  <div class="ngg-album-link">
@@ -440,17 +466,17 @@ function nggCreateAlbum($galleryID,$mode = "extend",$albumID = 0) {
440
  $insertpic = '<img src="'.nggallery::get_thumbnail_url($gallerycontent->previewpic).'" alt="'.$gallerycontent->title.'" title="'.$gallerycontent->title.'"/>';
441
  else
442
  $insertpic = __('Watch gallery', 'nggallery');
443
- $galleryoutput = '
444
  <div class="ngg-album">
445
  <div class="ngg-albumtitle"><a href="'.$link.'">'.$gallerycontent->title.'</a></div>
446
  <div class="ngg-albumcontent">
447
  <div class="ngg-thumbnail"><a href="'.$link.'">'.$insertpic.'</a></div>
448
- <div class="ngg-description"><p>'.html_entity_decode($gallerycontent->galdesc).'</p><p><strong>'.$counter.'</strong> '.__('Photos', 'nggallery').'</p></div>'."\n".'</div>'."\n".'</div>';
449
 
450
  }
451
  }
452
-
453
- return $galleryoutput;
454
  }
455
 
456
  /**********************************************************/
@@ -462,16 +488,16 @@ function nggShowImageBrowser($galleryID) {
462
 
463
  global $wpdb;
464
 
465
- // get options
466
- $ngg_options = get_option('ngg_options');
467
 
468
  // get the pictures
469
  $picturelist = $wpdb->get_col("SELECT pid FROM $wpdb->nggpictures WHERE galleryid = '$galleryID' AND exclude != 1 ORDER BY $ngg_options[galSort] $ngg_options[galSortDir]");
470
  if (is_array($picturelist)) {
471
- $output = nggCreateImageBrowser($picturelist);
472
  }
473
 
474
- return $output;
 
475
 
476
  }
477
 
@@ -481,14 +507,19 @@ function nggCreateImageBrowser($picarray) {
481
  * @array $picarray with pid
482
  **/
483
 
 
 
 
 
 
484
  if (!is_array($picarray))
485
  $picarray = array($picarray);
486
 
487
  $total = count($picarray);
488
 
489
  // look for gallery variable
490
- if ( isset( $_GET['pid'] )) {
491
- $act_pid = (int) attribute_escape($_GET['pid']);
492
  } else {
493
  reset($picarray);
494
  $act_pid = current($picarray);
@@ -507,26 +538,27 @@ function nggCreateImageBrowser($picarray) {
507
  $picture = new nggImage($act_pid);
508
 
509
  if ($picture) {
510
- $galleryoutput = '
511
  <div class="ngg-imagebrowser" >
512
- <h3>'.stripslashes($picture->alttext).'</h3>
513
  <div class="pic">'.$picture->get_href_link().'</div>
514
  <div class="ngg-imagebrowser-nav">';
515
  if ($back_pid) {
516
  $backlink['pid'] = $back_pid;
517
- $galleryoutput .='<div class="back"><a href="'.htmlspecialchars(add_query_arg($backlink)).'">'.'&#9668; '.__('Back', 'nggallery').'</a></div>';
518
  }
519
  if ($next_pid) {
520
  $nextlink['pid'] = $next_pid;
521
- $galleryoutput .='<div class="next"><a href="'.htmlspecialchars(add_query_arg($nextlink)).'">'.__('Next', 'nggallery').' &#9658;'.'</a></div>';
522
  }
523
- $galleryoutput .='
524
  <div class="counter">'.__('Picture', 'nggallery').' '.($key+1).' '.__('from', 'nggallery').' '.$total.'</div>
525
- <div class="ngg-imagebrowser-desc"><p>'.html_entity_decode($picture->description).'</p></div>
526
  </div>
527
  </div>';
528
  }
529
- return $galleryoutput;
 
530
 
531
  }
532
 
@@ -540,7 +572,9 @@ function nggSinglePicture($imageID,$width=250,$height=250,$mode="",$float="") {
540
  * @mode none, watermark, web20
541
  * @float none, left, right
542
  */
543
- global $wpdb;
 
 
544
 
545
  // remove the comma
546
  $float = ltrim($float,',');
@@ -555,23 +589,31 @@ function nggSinglePicture($imageID,$width=250,$height=250,$mode="",$float="") {
555
  if (!empty($float)) {
556
  switch ($float) {
557
 
558
- case 'left': $float=' style="float:left;" ';
559
  break;
560
 
561
- case 'right': $float=' style="float:right;" ';
562
  break;
563
 
564
  default: $float='';
565
  break;
566
  }
567
  }
 
 
 
 
568
 
569
  // add fullsize picture as link
570
- $content = '<a href="'.$picture->imagePath.'" title="'.stripslashes($picture->description).'" '.$picture->get_thumbcode("singlepic".$imageID).' >';
571
- $content .= '<img class="ngg-singlepic" src="'.NGGALLERY_URLPATH.'nggshow.php?pid='.$imageID.'&amp;width='.$width.'&amp;height='.$height.'&amp;mode='.$mode.'" alt="'.stripslashes($picture->alttext).'" title="'.stripslashes($picture->alttext).'"'.$float.' />';
572
- $content .= '</a>';
 
 
 
573
 
574
- return $content;
 
575
  }
576
 
577
  /**********************************************************/
@@ -583,16 +625,20 @@ function nggShowGalleryTags($taglist) {
583
 
584
  global $wpdb;
585
 
 
 
 
 
586
  // get now the related images
587
  $picturelist = ngg_Tags::get_images($taglist);
588
 
589
  // look for ImageBrowser
590
- if ( $_GET['page'] == get_the_ID() )
591
- if (isset( $_GET['pid'])) {
592
  foreach ($picturelist as $picture)
593
  $picarray[] = $picture->pid;
594
- $content = nggCreateImageBrowser($picarray);
595
- return $content;
596
  }
597
 
598
  // go on if not empty
@@ -601,10 +647,11 @@ function nggShowGalleryTags($taglist) {
601
 
602
  // show gallery
603
  if (is_array($picturelist)) {
604
- $content = nggCreateGallery($picturelist,false);
605
  }
606
 
607
- return $content;
 
608
  }
609
 
610
  /**********************************************************/
@@ -617,15 +664,14 @@ function nggShowRelatedGallery($taglist, $maxImages = 0) {
617
 
618
  global $wpdb;
619
 
 
 
620
  // get now the related images
621
  $picturelist = ngg_Tags::get_images($taglist);
622
 
623
  // go on if not empty
624
  if (empty($picturelist))
625
  return;
626
-
627
- // get the options
628
- $ngg_options = get_option('ngg_options');
629
 
630
  // get the effect code
631
  $thumbcode = nggallery::get_thumbcode("Related images for ".get_the_title());
@@ -634,7 +680,7 @@ function nggShowRelatedGallery($taglist, $maxImages = 0) {
634
  if ($maxImages > 0 ) array_splice($picturelist, $maxImages);
635
 
636
  // *** build the gallery output
637
- $content = '<div class="ngg-related-gallery">';
638
 
639
  foreach ($picturelist as $picture) {
640
  // set gallery url
@@ -642,15 +688,15 @@ function nggShowRelatedGallery($taglist, $maxImages = 0) {
642
  $thumbnailURL = get_option ('siteurl')."/".$picture->path.nggallery::get_thumbnail_folder($picture->path, FALSE);
643
  $thumb_prefix = nggallery::get_thumbnail_prefix($picture->path, FALSE);
644
 
645
- $picturefile = nggallery::remove_umlauts($picture->filename);
646
- $content .= '<a href="'.$folder_url.$picturefile.'" title="'.stripslashes($picture->description).'" '.$thumbcode.' >';
647
- $content .= '<img title="'.stripslashes($picture->alttext).'" alt="'.stripslashes($picture->alttext).'" src="'.$thumbnailURL.$thumb_prefix.$picture->filename.'" '.$thumbsize.' />';
648
- $content .= '</a>'."\n";
649
  }
650
 
651
- $content .= '</div>'."\n";
652
 
653
- return $content;
 
654
  }
655
 
656
  /**********************************************************/
@@ -660,17 +706,21 @@ function nggShowAlbumTags($taglist) {
660
  * @taglist list of tags as csv
661
  */
662
 
663
- global $wpdb;
 
 
 
 
664
 
665
  // look for gallerytag variable
666
- if ( $_GET['page'] == get_the_ID() ) {
667
- if (isset( $_GET['gallerytag'])) {
668
 
669
- $galleryTag = attribute_escape($_GET['gallerytag']);
670
  $tagname = $wpdb->get_var("SELECT name FROM $wpdb->nggtags WHERE slug = '$galleryTag' ");
671
- $content = '<div id="albumnav"><span><a href="'.get_permalink().'" title="'.__('Overview', 'nggallery').'">'.__('Overview', 'nggallery').'</a> | '.$tagname.'</span></div>';
672
- $content .= nggShowGalleryTags($galleryTag);
673
- return $content;
674
 
675
  }
676
  }
@@ -682,16 +732,15 @@ function nggShowAlbumTags($taglist) {
682
  if (empty($picturelist))
683
  return;
684
 
685
- $content = '<div class="ngg-albumoverview">';
686
  foreach ($picturelist as $picture) {
687
- $args['page'] = get_the_ID();
688
  $args['gallerytag'] = $picture["slug"];
689
- $link = htmlspecialchars( add_query_arg($args) );
690
 
691
- $insertpic = '<img class="Thumb" width="91" height="68" alt="'.$picture["name"].'" src="'.nggallery::get_thumbnail_url($picture["pid"]).'"/>';
692
  $tagid = $picture['tagid'];
693
  $counter = $wpdb->get_var("SELECT COUNT(*) FROM $wpdb->nggpic2tags WHERE tagid = '$tagid' ");
694
- $content .= '
695
  <div class="ngg-album-compact">
696
  <div class="ngg-album-compactbox">
697
  <div class="ngg-album-link">
@@ -701,18 +750,21 @@ function nggShowAlbumTags($taglist) {
701
  <h4><a class="ngg-album-desc" title="'.$picture["name"].'" href="'.$link.'">'.$picture["name"].'</a></h4>
702
  <p><strong>'.$counter.'</strong> '.__('Photos', 'nggallery').'</p></div>';
703
  }
704
- $content .= '</div>'."\n";
705
- $content .= '<div class="ngg-clear"></div>'."\n";
706
 
707
- return $content;
 
 
708
  }
709
 
710
  /**********************************************************/
711
  function nggShowRelatedImages($type = '', $maxImages = 0) {
712
  // return related images based on category or tags
713
 
 
 
714
  if ($type == '') {
715
- $ngg_options = get_option('ngg_options');
716
  $type = $ngg_options['appendType'];
717
  $maxImages = $ngg_options['maxImages'];
718
  }
@@ -738,9 +790,9 @@ function nggShowRelatedImages($type = '', $maxImages = 0) {
738
  }
739
 
740
  $sluglist = implode(",", $sluglist);
741
- $content = nggShowRelatedGallery($sluglist, $maxImages);
742
 
743
- return $content;
744
  }
745
 
746
  /**********************************************************/
1
  <?php
2
 
3
+ if(preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die('You are not allowed to call this page directly.'); }
4
+
5
  function searchnggallerytags($content) {
6
 
7
  global $wpdb;
8
+
9
+ //TODO:Refactor this to a class
10
+ $ngg_options = nggallery::get_option('ngg_options');
11
 
12
  $search = "@\[singlepic=(\d+)(|,\d+|,)(|,\d+|,)(|,watermark|,web20|,)(|,right|,left|,)\]@i";
13
 
85
  // check for gallery id
86
  $galleryID = $wpdb->get_var("SELECT gid FROM $wpdb->nggallery WHERE gid = '$v0' ");
87
  if(!$galleryID) $galleryID = $wpdb->get_var("SELECT gid FROM $wpdb->nggallery WHERE name = '$v0' ");
88
+ if( $galleryID || $v0 == 0 ) {
89
  $search = $matches[0][$key];
90
  // get the size if they are set
91
  $irWidth = $matches[3][$key];
132
  function nggShowSlideshow($galleryID,$irWidth,$irHeight) {
133
 
134
  global $wpdb;
135
+
136
+ $ngg_options = nggallery::get_option('ngg_options');
137
+
138
+ //TODO: bad intermediate solution until refactor to class
139
+ $obj = 'so' . $galleryID . rand(10,1000);
140
+
141
+ if (empty($irWidth) ) $irWidth = (int) $ngg_options['irWidth'];
142
+ if (empty($irHeight)) $irHeight = (int) $ngg_options['irHeight'];
143
+
144
+ $out = "\n".'<div class="slideshow" id="ngg_slideshow'.$galleryID.'">';
145
+ $out .= '<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..</p></div>';
146
+ $out .= "\n\t".'<script type="text/javascript" defer="defer">';
147
+ if ($ngg_options['irXHTMLvalid']) $out .= "\n\t".'<!--';
148
+ if ($ngg_options['irXHTMLvalid']) $out .= "\n\t".'//<![CDATA[';
149
+ $out .= "\n\t\t".'var '. $obj .' = new SWFObject("'.NGGALLERY_URLPATH.'imagerotator.swf", "ngg_slideshow'.$galleryID.'", "'.$irWidth.'", "'.$irHeight.'", "7", "#'.$ngg_options[irBackcolor].'");';
150
+ $out .= "\n\t\t".$obj.'.addParam("wmode", "opaque");';
151
+ $out .= "\n\t\t".$obj.'.addVariable("file", "'.NGGALLERY_URLPATH.'nggextractXML.php?gid='.$galleryID.'");';
152
+ if (!$ngg_options['irShuffle']) $out .= "\n\t\t".$obj.'.addVariable("shuffle", "false");';
153
+ if ($ngg_options['irLinkfromdisplay']) $out .= "\n\t\t".$obj.'.addVariable("linkfromdisplay", "false");';
154
+ if ($ngg_options['irShownavigation']) $out .= "\n\t\t".$obj.'.addVariable("shownavigation", "true");';
155
+ if ($ngg_options['irShowicons']) $out .= "\n\t\t".$obj.'.addVariable("showicons", "true");';
156
+ if ($ngg_options['irKenburns']) $out .= "\n\t\t".$obj.'.addVariable("kenburns", "true");';
157
+ if ($ngg_options['irWatermark']) $out .= "\n\t\t".$obj.'.addVariable("logo", "'.$ngg_options['wmPath'].'");';
158
+ if (!empty($ngg_options['irAudio'])) $out .= "\n\t\t".$obj.'.addVariable("audio", "'.$ngg_options['irAudio'].'");';
159
+ $out .= "\n\t\t".$obj.'.addVariable("overstretch", "'.$ngg_options['irOverstretch'].'");';
160
+ $out .= "\n\t\t".$obj.'.addVariable("backcolor", "0x'.$ngg_options['irBackcolor'].'");';
161
+ $out .= "\n\t\t".$obj.'.addVariable("frontcolor", "0x'.$ngg_options['irFrontcolor'].'");';
162
+ $out .= "\n\t\t".$obj.'.addVariable("lightcolor", "0x'.$ngg_options['irLightcolor'].'");';
163
+ if (!empty($ngg_options['irScreencolor'])) $out .= "\n\t\t".$obj.'.addVariable("screencolor", "0x'.$ngg_options['irScreencolor'].'");';
164
+ $out .= "\n\t\t".$obj.'.addVariable("rotatetime", "'.$ngg_options['irRotatetime'].'");';
165
+ $out .= "\n\t\t".$obj.'.addVariable("transition", "'.$ngg_options['irTransition'].'");';
166
+ $out .= "\n\t\t".$obj.'.addVariable("width", "'.$irWidth.'");';
167
+ $out .= "\n\t\t".$obj.'.addVariable("height", "'.$irHeight.'");';
168
+ $out .= "\n\t\t".$obj.'.write("ngg_slideshow'.$galleryID.'");';
169
+ if ($ngg_options['irXHTMLvalid']) $out .= "\n\t".'//]]>';
170
+ if ($ngg_options['irXHTMLvalid']) $out .= "\n\t".'-->';
171
+ $out .= "\n\t".'</script>';
172
+
173
+ $out = apply_filters('ngg_show_slideshow_content', $out);
174
+ return $out;
175
  }
176
 
177
  /**********************************************************/
178
  function nggShowGallery($galleryID) {
179
 
180
+ global $wpdb, $nggRewrite;
181
 
182
+ $ngg_options = nggallery::get_option('ngg_options');
183
+
184
+ // $_GET from wp_query
185
+ $show = get_query_var('show');
186
+ $pid = get_query_var('pid');
187
+ $pageid = get_query_var('pageid');
188
 
189
  // use the jQuery Plugin if activated
190
  if (($ngg_options['thumbEffect'] == "thickbox") && ($ngg_options['galUsejQuery'])) {
191
+ $out .= nggShowJSGallery($galleryID);
192
+ return $out;
193
  }
194
 
195
+ // set $show if slideshow first
196
+ if ( empty( $show ) AND ($ngg_options['galShowOrder'] == 'slide')) {
197
+ if (is_home()) $pageid = get_the_ID();
198
+ $show = 'slide';
199
  }
200
 
201
  // go on only on this page
202
+ if ( !is_home() || $pageid == get_the_ID() ) {
203
 
204
  // 1st look for ImageBrowser link
205
+ if (!empty( $pid)) {
206
+ $out = nggShowImageBrowser($galleryID);
207
+ return $out;
208
  }
209
 
210
  // 2nd look for slideshow
211
+ if ( $show == 'slide' ) {
 
212
  $args['show'] = "gallery";
213
+ $out = '<div class="ngg-galleryoverview">';
214
+ $out .= '<div class="slideshowlink"><a class="slideshowlink" href="' . $nggRewrite->get_permalink($args) . '">'.$ngg_options['galTextGallery'].'</a></div>';
215
+ $out .= nggShowSlideshow($galleryID,$ngg_options['irWidth'],$ngg_options['irHeight']);
216
+ $out .= '</div>'."\n";
217
+ $out .= '<div class="ngg-clear"></div>'."\n";
218
+ return $out;
219
  }
220
  }
221
 
226
  // get all picture with this galleryid
227
  $picturelist = $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 tt.$ngg_options[galSort] $ngg_options[galSortDir] ");
228
  if (is_array($picturelist)) {
229
+ $out = nggCreateGallery($picturelist,$galleryID);
230
  }
231
 
232
+ $out = apply_filters('ngg_show_gallery_content', $out);
233
+ return $out;
234
  }
235
 
236
  /**********************************************************/
240
  * @int $galleryID
241
  **/
242
 
243
+ global $nggRewrite;
244
+
245
+
246
+ $ngg_options = nggallery::get_option('ngg_options');
247
+
248
+ // $_GET from wp_query
249
+ $nggpage = get_query_var('nggpage');
250
+ $pageid = get_query_var('pageid');
251
+
252
  if (!is_array($picturelist))
253
  $picturelist = array($picturelist);
254
 
 
 
 
255
  $maxElement = $ngg_options['galImages'];
256
  $thumbwidth = $ngg_options['thumbwidth'];
257
  $thumbheight = $ngg_options['thumbheight'];
269
 
270
  // check for page navigation
271
  if ($maxElement > 0) {
272
+ if ( !is_home() || $pageid == get_the_ID() ) {
273
+ if ( !empty( $nggpage ) )
274
+ $page = (int) $nggpage;
275
  else
276
  $page = 1;
277
  }
290
  }
291
 
292
  if (is_array($picturelist)) {
293
+ $out = '<div class="ngg-galleryoverview" id="ngg-gallery-'. $galleryID .'">';
294
 
295
  // show slideshow link
296
  if ($galleryID)
297
  if (($ngg_options['galShowSlide']) AND (NGGALLERY_IREXIST)) {
 
298
  $args['show'] = "slide";
299
+ $out .= '<div class="slideshowlink"><a class="slideshowlink" href="' . $nggRewrite->get_permalink($args) . '">'.$ngg_options['galTextSlide'].'</a></div>';
300
  }
301
 
302
  // a description below the picture, require fixed width
303
  if (!$ngg_options['galShowDesc'])
304
  $ngg_options['galShowDesc'] = "none";
305
+ $setwidth = ($ngg_options['galShowDesc'] != "none") ? 'style="width:'.($thumbwidth).'px;"' : '';
306
+ $class_desc = ($ngg_options['galShowDesc'] != "none") ? 'desc' : '';
307
 
308
  foreach ($picturelist as $picture) {
309
  // set image url
310
  $folder_url = get_option ('siteurl')."/".$picture->path."/";
311
  $thumbnailURL = get_option ('siteurl')."/".$picture->path.nggallery::get_thumbnail_folder($picture->path, FALSE);
312
  $thumb_prefix = nggallery::get_thumbnail_prefix($picture->path, FALSE);
 
 
313
  // choose link between imagebrowser or effect
314
 
315
+ $link =($ngg_options['galImgBrowser']) ? $nggRewrite->get_permalink(array('pid'=>$picture->pid)) : $folder_url.$picture->filename;
316
  // create output
317
+ $out .= '<div id="ngg-image-'. $picture->pid .'" class="ngg-gallery-thumbnail-box '. $class_desc .'">'."\n\t";
318
  $out .= '<div class="ngg-gallery-thumbnail" '.$setwidth.' >'."\n\t";
319
  $out .= '<a href="'.$link.'" title="'.stripslashes($picture->description).'" '.$thumbcode.' >';
320
  $out .= '<img title="'.stripslashes($picture->alttext).'" alt="'.stripslashes($picture->alttext).'" src="'.$thumbnailURL.$thumb_prefix.$picture->filename.'" '.$thumbsize.' />';
321
  $out .= '</a>'."\n";
322
  if ($ngg_options['galShowDesc'] == "alttext")
323
+ $out .= '<span>'.html_entity_decode(stripslashes($picture->alttext)).'</span>'."\n";
324
  if ($ngg_options['galShowDesc'] == "desc")
325
+ $out .= '<span>'.html_entity_decode(stripslashes($picture->description)).'</span>'."\n";
326
  $out .= '</div>'."\n".'</div>'."\n";
327
  }
328
  $out .= '</div>'."\n";
329
  $out .= ($maxElement > 0) ? $navigation : '<div class="ngg-clear"></div>'."\n";
330
  }
331
+
332
  return $out;
333
  }
334
 
336
  /**********************************************************/
337
  function nggShowJSGallery($galleryID) {
338
  // create a gallery with a jQuery plugin
339
+ //TODO:Refactor this to better, faster , cleaner solution
340
 
341
  global $wpdb;
342
+
343
+ $ngg_options = nggallery::get_option('ngg_options');
344
 
 
345
  $maxElement = $ngg_options['galImages'];
346
 
347
  // get gallery values
358
  // create array
359
  $i = 0;
360
 
361
+ $out = '<script type="text/javascript">'."\n";
362
+ $out .= 'var nggal'. $galleryID .'=new Array()'."\n";
363
  foreach ($picturelist as $picture) {
364
+ $out .= 'nggal'. $galleryID .'['.$i++.']=["'.$picture->filename.'", "'.stripslashes($picture->alttext).'", "'.strip_tags(nggallery::ngg_nl2br($picture->description)).'"]'."\n";
 
365
  }
366
+ $out .= 'jQuery(document).ready(function() {'."\n";
367
+ $out .= ' jQuery("#nggal'. $galleryID .'").nggallery({'."\n";
368
+ $out .= ' imgarray : nggal'. $galleryID . ','."\n";
369
+ $out .= ' name : "'. $act_gallery->name . '",'."\n";
370
+ $out .= ' galleryurl : "'. $folder_url . '",'."\n";
371
+ $out .= ' thumbfolder : "'. $thumb_folder . '",'."\n";
372
  if ($ngg_options['thumbEffect'] == "thickbox")
373
+ $out .= ' thickbox : true,'."\n";
374
+ $out .= ' maxelement : '. $maxElement ."\n";
375
+ $out .= ' });'."\n";
376
+ $out .= '});'."\n";
377
 
378
+ $out .= '</script>'."\n";
379
+ $out .= ' <div id="nggal'. $galleryID .'">'."\n";
380
+ $out .= ' <!-- The content will be dynamically loaded in here -->'."\n";
381
+ $out .= '</div>'."\n";
382
+ $out .= '<div class="ngg-clear"></div>'."\n";
383
  }
384
 
385
+ return $out;
386
  }
387
  /**********************************************************/
388
  function nggShowAlbum($albumID,$mode = "extend") {
389
 
390
  global $wpdb;
391
 
392
+ // $_GET from wp_query
393
+ $gallery = get_query_var('gallery');
394
+ $album = get_query_var('album');
395
 
396
  // look for gallery variable
397
+ if (!empty( $gallery )) {
398
 
399
+ if ( $albumID != $album )
400
+ return;
401
 
402
+ $galleryID = (int) $gallery;
403
+ $out = nggShowGallery($galleryID);
404
+ return $out;
405
  }
406
 
407
  $mode = ltrim($mode,',');
410
  $gallery_array = unserialize($sortorder);
411
  }
412
 
413
+ $out = '<div class="ngg-albumoverview">';
414
+
415
  if (is_array($gallery_array)) {
416
  foreach ($gallery_array as $galleryID) {
417
+ $out .= nggCreateAlbum($galleryID,$mode,$albumID);
418
  }
419
  }
 
 
420
 
421
+ $out .= '</div>'."\n";
422
+ $out .= '<div class="ngg-clear"></div>'."\n";
423
+
424
+ $out = apply_filters('ngg_show_album_content', $out);
425
+ return $out;
426
  }
427
 
428
  /**********************************************************/
429
  function nggCreateAlbum($galleryID,$mode = "extend",$albumID = 0) {
430
  // create a gallery overview div
431
 
432
+ global $wpdb, $nggRewrite;
433
+
434
+ $ngg_options = nggallery::get_option('ngg_options');
435
 
436
  $gallerycontent = $wpdb->get_row("SELECT * FROM $wpdb->nggallery WHERE gid = '$galleryID' ");
437
 
438
  // choose between variable and page link
439
+ if ($ngg_options['galNoPages']) {
440
+ $args['album'] = $albumID;
441
+ $args['gallery'] = $galleryID;
442
+ $link = $nggRewrite->get_permalink($args);
443
  } else {
444
  $link = get_permalink($gallerycontent->pageid);
445
  }
448
  $counter = $wpdb->get_var("SELECT COUNT(*) FROM $wpdb->nggpictures WHERE galleryid = '$galleryID' AND exclude != 1");
449
  if ($mode == "compact") {
450
  if ($gallerycontent->previewpic != 0)
451
+ $insertpic = '<img class="Thumb" alt="'.$gallerycontent->title.'" src="'.nggallery::get_thumbnail_url($gallerycontent->previewpic).'"/>';
452
  else
453
  $insertpic = __('Watch gallery', 'nggallery');
454
+ $out = '
455
  <div class="ngg-album-compact">
456
  <div class="ngg-album-compactbox">
457
  <div class="ngg-album-link">
466
  $insertpic = '<img src="'.nggallery::get_thumbnail_url($gallerycontent->previewpic).'" alt="'.$gallerycontent->title.'" title="'.$gallerycontent->title.'"/>';
467
  else
468
  $insertpic = __('Watch gallery', 'nggallery');
469
+ $out = '
470
  <div class="ngg-album">
471
  <div class="ngg-albumtitle"><a href="'.$link.'">'.$gallerycontent->title.'</a></div>
472
  <div class="ngg-albumcontent">
473
  <div class="ngg-thumbnail"><a href="'.$link.'">'.$insertpic.'</a></div>
474
+ <div class="ngg-description"><p>'.html_entity_decode(stripslashes($gallerycontent->galdesc)).'</p><p><strong>'.$counter.'</strong> '.__('Photos', 'nggallery').'</p></div>'."\n".'</div>'."\n".'</div>';
475
 
476
  }
477
  }
478
+
479
+ return $out;
480
  }
481
 
482
  /**********************************************************/
488
 
489
  global $wpdb;
490
 
491
+ $ngg_options = nggallery::get_option('ngg_options');
 
492
 
493
  // get the pictures
494
  $picturelist = $wpdb->get_col("SELECT pid FROM $wpdb->nggpictures WHERE galleryid = '$galleryID' AND exclude != 1 ORDER BY $ngg_options[galSort] $ngg_options[galSortDir]");
495
  if (is_array($picturelist)) {
496
+ $out = nggCreateImageBrowser($picturelist);
497
  }
498
 
499
+ $out = apply_filters('ngg_show_imagebrowser_content', $out);
500
+ return $out;
501
 
502
  }
503
 
507
  * @array $picarray with pid
508
  **/
509
 
510
+ global $nggRewrite;
511
+
512
+ // $_GET from wp_query
513
+ $pid = get_query_var('pid');
514
+
515
  if (!is_array($picarray))
516
  $picarray = array($picarray);
517
 
518
  $total = count($picarray);
519
 
520
  // look for gallery variable
521
+ if ( !empty( $pid )) {
522
+ $act_pid = (int) $pid;
523
  } else {
524
  reset($picarray);
525
  $act_pid = current($picarray);
538
  $picture = new nggImage($act_pid);
539
 
540
  if ($picture) {
541
+ $out = '
542
  <div class="ngg-imagebrowser" >
543
+ <h3>'.html_entity_decode(stripslashes($picture->alttext)).'</h3>
544
  <div class="pic">'.$picture->get_href_link().'</div>
545
  <div class="ngg-imagebrowser-nav">';
546
  if ($back_pid) {
547
  $backlink['pid'] = $back_pid;
548
+ $out .='<div class="back"><a href="'.$nggRewrite->get_permalink($backlink).'">'.'&#9668; '.__('Back', 'nggallery').'</a></div>';
549
  }
550
  if ($next_pid) {
551
  $nextlink['pid'] = $next_pid;
552
+ $out .='<div class="next"><a href="'.$nggRewrite->get_permalink($nextlink).'">'.__('Next', 'nggallery').' &#9658;'.'</a></div>';
553
  }
554
+ $out .='
555
  <div class="counter">'.__('Picture', 'nggallery').' '.($key+1).' '.__('from', 'nggallery').' '.$total.'</div>
556
+ <div class="ngg-imagebrowser-desc"><p>'.html_entity_decode(stripslashes($picture->description)).'</p></div>
557
  </div>
558
  </div>';
559
  }
560
+
561
+ return $out;
562
 
563
  }
564
 
572
  * @mode none, watermark, web20
573
  * @float none, left, right
574
  */
575
+ global $wpdb, $post;
576
+
577
+ $ngg_options = nggallery::get_option('ngg_options');
578
 
579
  // remove the comma
580
  $float = ltrim($float,',');
589
  if (!empty($float)) {
590
  switch ($float) {
591
 
592
+ case 'left': $float=' ngg-left" ';
593
  break;
594
 
595
+ case 'right': $float=' ngg-right" ';
596
  break;
597
 
598
  default: $float='';
599
  break;
600
  }
601
  }
602
+
603
+ // check fo cached picture
604
+ if ( ($ngg_options['imgCacheSinglePic']) && ($post->post_status == 'publish') )
605
+ $cache_url = $picture->cached_singlepic_file($width, $height, $mode );
606
 
607
  // add fullsize picture as link
608
+ $out = '<a href="'.$picture->imagePath.'" title="'.stripslashes($picture->description).'" '.$picture->get_thumbcode("singlepic".$imageID).' >';
609
+ if (!$cache_url)
610
+ $out .= '<img class="ngg-singlepic'. $float .'" src="'.NGGALLERY_URLPATH.'nggshow.php?pid='.$imageID.'&amp;width='.$width.'&amp;height='.$height.'&amp;mode='.$mode.'" alt="'.stripslashes($picture->alttext).'" title="'.stripslashes($picture->alttext).'" />';
611
+ else
612
+ $out .= '<img class="ngg-singlepic'. $float .'" src="'.$cache_url.'" alt="'.stripslashes($picture->alttext).'" title="'.stripslashes($picture->alttext).'" />';
613
+ $out .= '</a>';
614
 
615
+ $out = apply_filters('ngg_show_singlepic_content', $out);
616
+ return $out;
617
  }
618
 
619
  /**********************************************************/
625
 
626
  global $wpdb;
627
 
628
+ // $_GET from wp_query
629
+ $pid = get_query_var('pid');
630
+ $pageid = get_query_var('pageid');
631
+
632
  // get now the related images
633
  $picturelist = ngg_Tags::get_images($taglist);
634
 
635
  // look for ImageBrowser
636
+ if ( $pageid == get_the_ID() || !is_home() )
637
+ if (!empty( $pid )) {
638
  foreach ($picturelist as $picture)
639
  $picarray[] = $picture->pid;
640
+ $out = nggCreateImageBrowser($picarray);
641
+ return $out;
642
  }
643
 
644
  // go on if not empty
647
 
648
  // show gallery
649
  if (is_array($picturelist)) {
650
+ $out = nggCreateGallery($picturelist,false);
651
  }
652
 
653
+ $out = apply_filters('ngg_show_gallery_tags_content', $out);
654
+ return $out;
655
  }
656
 
657
  /**********************************************************/
664
 
665
  global $wpdb;
666
 
667
+ $ngg_options = nggallery::get_option('ngg_options');
668
+
669
  // get now the related images
670
  $picturelist = ngg_Tags::get_images($taglist);
671
 
672
  // go on if not empty
673
  if (empty($picturelist))
674
  return;
 
 
 
675
 
676
  // get the effect code
677
  $thumbcode = nggallery::get_thumbcode("Related images for ".get_the_title());
680
  if ($maxImages > 0 ) array_splice($picturelist, $maxImages);
681
 
682
  // *** build the gallery output
683
+ $out = '<div class="ngg-related-gallery">';
684
 
685
  foreach ($picturelist as $picture) {
686
  // set gallery url
688
  $thumbnailURL = get_option ('siteurl')."/".$picture->path.nggallery::get_thumbnail_folder($picture->path, FALSE);
689
  $thumb_prefix = nggallery::get_thumbnail_prefix($picture->path, FALSE);
690
 
691
+ $out .= '<a href="'.$folder_url.$picture->filename.'" title="'.stripslashes($picture->description).'" '.$thumbcode.' >';
692
+ $out .= '<img title="'.stripslashes($picture->alttext).'" alt="'.stripslashes($picture->alttext).'" src="'.$thumbnailURL.$thumb_prefix.$picture->filename.'" '.$thumbsize.' />';
693
+ $out .= '</a>'."\n";
 
694
  }
695
 
696
+ $out .= '</div>'."\n";
697
 
698
+ $out = apply_filters('ngg_show_related_gallery_content', $out);
699
+ return $out;
700
  }
701
 
702
  /**********************************************************/
706
  * @taglist list of tags as csv
707
  */
708
 
709
+ global $wpdb, $nggRewrite;
710
+
711
+ // $_GET from wp_query
712
+ $tag = get_query_var('gallerytag');
713
+ $pageid = get_query_var('pageid');
714
 
715
  // look for gallerytag variable
716
+ if ( $pageid == get_the_ID() || !is_home() ) {
717
+ if (!empty( $tag )) {
718
 
719
+ $galleryTag = attribute_escape( $tag );
720
  $tagname = $wpdb->get_var("SELECT name FROM $wpdb->nggtags WHERE slug = '$galleryTag' ");
721
+ $out = '<div id="albumnav"><span><a href="'.get_permalink().'" title="'.__('Overview', 'nggallery').'">'.__('Overview', 'nggallery').'</a> | '.$tagname.'</span></div>';
722
+ $out .= nggShowGalleryTags($galleryTag);
723
+ return $out;
724
 
725
  }
726
  }
732
  if (empty($picturelist))
733
  return;
734
 
735
+ $out = '<div class="ngg-albumoverview">';
736
  foreach ($picturelist as $picture) {
 
737
  $args['gallerytag'] = $picture["slug"];
738
+ $link = $nggRewrite->get_permalink($args);
739
 
740
+ $insertpic = '<img class="Thumb" alt="'.$picture["name"].'" src="'.nggallery::get_thumbnail_url($picture["pid"]).'"/>';
741
  $tagid = $picture['tagid'];
742
  $counter = $wpdb->get_var("SELECT COUNT(*) FROM $wpdb->nggpic2tags WHERE tagid = '$tagid' ");
743
+ $out .= '
744
  <div class="ngg-album-compact">
745
  <div class="ngg-album-compactbox">
746
  <div class="ngg-album-link">
750
  <h4><a class="ngg-album-desc" title="'.$picture["name"].'" href="'.$link.'">'.$picture["name"].'</a></h4>
751
  <p><strong>'.$counter.'</strong> '.__('Photos', 'nggallery').'</p></div>';
752
  }
753
+ $out .= '</div>'."\n";
754
+ $out .= '<div class="ngg-clear"></div>'."\n";
755
 
756
+ $out = apply_filters('ngg_show_album_tags_content', $out);
757
+
758
+ return $out;
759
  }
760
 
761
  /**********************************************************/
762
  function nggShowRelatedImages($type = '', $maxImages = 0) {
763
  // return related images based on category or tags
764
 
765
+ $ngg_options = nggallery::get_option('ngg_options');
766
+
767
  if ($type == '') {
 
768
  $type = $ngg_options['appendType'];
769
  $maxImages = $ngg_options['maxImages'];
770
  }
790
  }
791
 
792
  $sluglist = implode(",", $sluglist);
793
+ $out = nggShowRelatedGallery($sluglist, $maxImages);
794
 
795
+ return $out;
796
  }
797
 
798
  /**********************************************************/
ngginstall.php CHANGED
@@ -8,13 +8,18 @@ function nggallery_install () {
8
 
9
  global $wpdb , $wp_roles, $wp_version;
10
  global $ngg_db_version;
11
-
12
  // Check for capability
13
  if ( !current_user_can('activate_plugins') )
14
  return;
15
 
16
  // Set the capabilities for the administrator
17
  $role = get_role('administrator');
 
 
 
 
 
18
  $role->add_cap('NextGEN Gallery overview');
19
  $role->add_cap('NextGEN Use TinyMCE');
20
  $role->add_cap('NextGEN Upload images');
@@ -24,10 +29,20 @@ function nggallery_install () {
24
  $role->add_cap('NextGEN Change options');
25
 
26
  // upgrade function changed in WordPress 2.3
27
- if (version_compare($wp_version, '2.3-beta', '>='))
28
  require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
29
  else
30
  require_once(ABSPATH . 'wp-admin/upgrade-functions.php');
 
 
 
 
 
 
 
 
 
 
31
 
32
  $nggpictures = $wpdb->prefix . 'ngg_pictures';
33
  $nggallery = $wpdb->prefix . 'ngg_gallery';
@@ -45,7 +60,7 @@ function nggallery_install () {
45
  alttext MEDIUMTEXT NULL ,
46
  exclude TINYINT NULL DEFAULT '0' ,
47
  PRIMARY KEY pid (pid)
48
- );";
49
 
50
  dbDelta($sql);
51
 
@@ -64,7 +79,7 @@ function nggallery_install () {
64
  pageid BIGINT(20) NULL DEFAULT '0' ,
65
  previewpic BIGINT(20) NULL DEFAULT '0' ,
66
  PRIMARY KEY gid (gid)
67
- );";
68
 
69
  dbDelta($sql);
70
  }
@@ -76,7 +91,7 @@ function nggallery_install () {
76
  name VARCHAR(255) NOT NULL ,
77
  sortorder LONGTEXT NOT NULL,
78
  PRIMARY KEY id (id)
79
- );";
80
 
81
  dbDelta($sql);
82
  }
@@ -90,7 +105,7 @@ function nggallery_install () {
90
  slug VARCHAR(200) NOT NULL,
91
  PRIMARY KEY id (id),
92
  UNIQUE KEY slug (slug)
93
- );";
94
 
95
  dbDelta($sql);
96
  }
@@ -102,7 +117,7 @@ function nggallery_install () {
102
  tagid BIGINT(20) NOT NULL DEFAULT 0,
103
  PRIMARY KEY (picid, tagid),
104
  KEY tagid (tagid)
105
- );";
106
 
107
  dbDelta($sql);
108
  }
@@ -123,13 +138,23 @@ function nggallery_install () {
123
  update_option( "ngg_db_version", $ngg_db_version );
124
  }
125
 
 
 
 
 
 
 
126
  }
127
 
128
  function ngg_default_options() {
 
 
129
 
130
  $ngg_options['gallerypath'] = "wp-content/gallery/"; // set default path to the gallery
131
  $ngg_options['scanfolder'] = false; // search for new images (not used)
132
- $ngg_options['deleteImg'] = false; // delete Images
 
 
133
 
134
  // Tags / categories
135
  $ngg_options['activateTags'] = false; // append related images
@@ -150,6 +175,7 @@ function ngg_default_options() {
150
  $ngg_options['imgHeight'] = 600; // Image height
151
  $ngg_options['imgQuality'] = 85; // Image Quality
152
  $ngg_options['imgResampleMode'] = 4; // Resample speed value 1 - 5
 
153
 
154
  // Gallery Settings
155
  $ngg_options['galImages'] = "20"; // Number Of images per page
@@ -197,12 +223,29 @@ function ngg_default_options() {
197
  $ngg_options['irKenburns'] = false;
198
  $ngg_options['irBackcolor'] = "000000";
199
  $ngg_options['irFrontcolor'] = "FFFFFF";
200
- $ngg_options['irLightcolor'] = "CC0000";
 
201
 
202
  // CSS Style
203
  $ngg_options['activateCSS'] = true; // activate the CSS file
204
  $ngg_options['CSSfile'] = "nggallery.css"; // set default css filename
205
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
206
  update_option('ngg_options', $ngg_options);
207
 
208
  }
8
 
9
  global $wpdb , $wp_roles, $wp_version;
10
  global $ngg_db_version;
11
+
12
  // Check for capability
13
  if ( !current_user_can('activate_plugins') )
14
  return;
15
 
16
  // Set the capabilities for the administrator
17
  $role = get_role('administrator');
18
+ // We need this role, no other chance
19
+ if ( empty($role) ) {
20
+ update_option( "ngg_init_check", __('Sorry, NextGEN Gallery works only with a role called administrator',"nggallery") );
21
+ return;
22
+ }
23
  $role->add_cap('NextGEN Gallery overview');
24
  $role->add_cap('NextGEN Use TinyMCE');
25
  $role->add_cap('NextGEN Upload images');
29
  $role->add_cap('NextGEN Change options');
30
 
31
  // upgrade function changed in WordPress 2.3
32
+ if (version_compare($wp_version, '2.3', '>='))
33
  require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
34
  else
35
  require_once(ABSPATH . 'wp-admin/upgrade-functions.php');
36
+
37
+ // add charset & collate like wp core
38
+ $charset_collate = '';
39
+
40
+ if ( version_compare(mysql_get_server_info(), '4.1.0', '>=') ) {
41
+ if ( ! empty($wpdb->charset) )
42
+ $charset_collate = "DEFAULT CHARACTER SET $wpdb->charset";
43
+ if ( ! empty($wpdb->collate) )
44
+ $charset_collate .= " COLLATE $wpdb->collate";
45
+ }
46
 
47
  $nggpictures = $wpdb->prefix . 'ngg_pictures';
48
  $nggallery = $wpdb->prefix . 'ngg_gallery';
60
  alttext MEDIUMTEXT NULL ,
61
  exclude TINYINT NULL DEFAULT '0' ,
62
  PRIMARY KEY pid (pid)
63
+ ) $charset_collate;";
64
 
65
  dbDelta($sql);
66
 
79
  pageid BIGINT(20) NULL DEFAULT '0' ,
80
  previewpic BIGINT(20) NULL DEFAULT '0' ,
81
  PRIMARY KEY gid (gid)
82
+ ) $charset_collate;";
83
 
84
  dbDelta($sql);
85
  }
91
  name VARCHAR(255) NOT NULL ,
92
  sortorder LONGTEXT NOT NULL,
93
  PRIMARY KEY id (id)
94
+ ) $charset_collate;";
95
 
96
  dbDelta($sql);
97
  }
105
  slug VARCHAR(200) NOT NULL,
106
  PRIMARY KEY id (id),
107
  UNIQUE KEY slug (slug)
108
+ ) $charset_collate;";
109
 
110
  dbDelta($sql);
111
  }
117
  tagid BIGINT(20) NOT NULL DEFAULT 0,
118
  PRIMARY KEY (picid, tagid),
119
  KEY tagid (tagid)
120
+ ) $charset_collate;";
121
 
122
  dbDelta($sql);
123
  }
138
  update_option( "ngg_db_version", $ngg_db_version );
139
  }
140
 
141
+ // check one table again, to be sure
142
+ if($wpdb->get_var("show tables like '$nggpictures'")!= $nggpictures) {
143
+ update_option( "ngg_init_check", __('NextGEN Gallery : Tables could not created, please check your database settings',"nggallery") );
144
+ return;
145
+ }
146
+
147
  }
148
 
149
  function ngg_default_options() {
150
+
151
+ global $blog_id;
152
 
153
  $ngg_options['gallerypath'] = "wp-content/gallery/"; // set default path to the gallery
154
  $ngg_options['scanfolder'] = false; // search for new images (not used)
155
+ $ngg_options['deleteImg'] = true; // delete Images
156
+ $ngg_options['swfUpload'] = true; // activate the batch upload
157
+ $ngg_options['usePermalinks'] = false; // use permalinks for parameters
158
 
159
  // Tags / categories
160
  $ngg_options['activateTags'] = false; // append related images
175
  $ngg_options['imgHeight'] = 600; // Image height
176
  $ngg_options['imgQuality'] = 85; // Image Quality
177
  $ngg_options['imgResampleMode'] = 4; // Resample speed value 1 - 5
178
+ $ngg_options['imgCacheSinglePic'] = false; // cached the singlepic
179
 
180
  // Gallery Settings
181
  $ngg_options['galImages'] = "20"; // Number Of images per page
223
  $ngg_options['irKenburns'] = false;
224
  $ngg_options['irBackcolor'] = "000000";
225
  $ngg_options['irFrontcolor'] = "FFFFFF";
226
+ $ngg_options['irLightcolor'] = "CC0000";
227
+ $ngg_options['irScreencolor'] = "000000";
228
 
229
  // CSS Style
230
  $ngg_options['activateCSS'] = true; // activate the CSS file
231
  $ngg_options['CSSfile'] = "nggallery.css"; // set default css filename
232
 
233
+ // special overrides for WPMU
234
+ if (IS_WPMU) {
235
+ // get the site options
236
+ $ngg_wpmu_options=get_site_option('ngg_options');
237
+
238
+ // get the default value during installation
239
+ if (!is_array($ngg_wpmu_options)) {
240
+ $ngg_wpmu_options['gallerypath'] = "wp-content/blogs.dir/%BLOG_ID%/files/";
241
+ $ngg_wpmu_options['wpmuCSSfile'] = "nggallery.css";
242
+ }
243
+
244
+ $ngg_options['gallerypath'] = str_replace("%BLOG_ID%", $blog_id , $ngg_wpmu_options['gallerypath']);
245
+ $ngg_options['CSSfile'] = $ngg_wpmu_options['wpmuCSSfile'];
246
+ $ngg_options['imgCacheSinglePic'] = true; // under WPMU this should be enabled
247
+ }
248
+
249
  update_option('ngg_options', $ngg_options);
250
 
251
  }
nggshow.php CHANGED
@@ -25,18 +25,19 @@ $thumb = new ngg_Thumbnail($filepath);
25
  if ( isset($_GET['height']) and isset($_GET['width']))
26
  $thumb->resize($_GET['width'],$_GET['height']);
27
  if ($mode == 'watermark') {
28
- if ($ngg_options[wmType] == 'image') {
29
- $thumb->watermarkImgPath = $ngg_options[wmPath];
30
- $thumb->watermarkImage($ngg_options[wmPos], $ngg_options[wmXpos], $ngg_options[wmYpos]);
31
  }
32
- if ($ngg_options[wmType] == 'text') {
33
- $thumb->watermarkText = $ngg_options[wmText];
34
- $thumb->watermarkCreateText($ngg_options[wmColor], $ngg_options[wmFont], $ngg_options[wmSize], $ngg_options[wmOpaque]);
35
- $thumb->watermarkImage($ngg_options[wmPos], $ngg_options[wmXpos], $ngg_options[wmYpos]);
36
  }
37
  }
38
  if ($mode == 'web20')
39
  $thumb->createReflection(40,40,50,false,'#a4a4a4');
 
40
  $thumb->show();
41
  $thumb->destruct();
42
 
25
  if ( isset($_GET['height']) and isset($_GET['width']))
26
  $thumb->resize($_GET['width'],$_GET['height']);
27
  if ($mode == 'watermark') {
28
+ if ($ngg_options['wmType'] == 'image') {
29
+ $thumb->watermarkImgPath = $ngg_options['wmPath'];
30
+ $thumb->watermarkImage($ngg_options['wmPos'], $ngg_options['wmXpos'], $ngg_options['wmYpos']);
31
  }
32
+ if ($ngg_options['wmType'] == 'text') {
33
+ $thumb->watermarkText = $ngg_options['wmText'];
34
+ $thumb->watermarkCreateText($ngg_options['wmColor'], $ngg_options['wmFont'], $ngg_options['wmSize'], $ngg_options['wmOpaque']);
35
+ $thumb->watermarkImage($ngg_options['wmPos'], $ngg_options['wmXpos'], $ngg_options['wmYpos']);
36
  }
37
  }
38
  if ($mode == 'web20')
39
  $thumb->createReflection(40,40,50,false,'#a4a4a4');
40
+
41
  $thumb->show();
42
  $thumb->destruct();
43
 
nggwidget.php CHANGED
@@ -2,10 +2,10 @@
2
  /*
3
  Plugin Name: NextGEN Gallery Widget
4
  Description: Adds a sidebar widget support to your NextGEN Gallery
5
- Author: KeViN
6
- Version: 1.12
7
- Author URI: http://www.kev.hu
8
- Plugin URI: http://www.kev.hu
9
 
10
  This program is free software; you can redistribute it and/or modify
11
  it under the terms of the GNU General Public License as published by
@@ -23,35 +23,6 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
23
 
24
  */
25
 
26
- function nggGetCSVValues($string,$separator=",")
27
- {
28
- $string = str_replace('""', "'", $string);
29
- // split the string at double quotes "
30
- $bits = explode('"',$string);
31
- $elements = array();
32
- for ( $i=0; $i < count($bits) ; $i++ ) {
33
- /*
34
- odd numbered elements would have been
35
- enclosed by double quotes
36
- even numbered elements would not have been
37
- */
38
- if (($i%2) == 1) {
39
- /* if the element number is odd add the
40
- whole string to the output array */
41
- $elements[] = $bits[$i];
42
- } else
43
- {
44
- /* otherwise split the unquoted stuff at commas
45
- and add the elements to the array */
46
- $rest = $bits[$i];
47
- $rest = preg_replace("/^".$separator."/","",$rest);
48
- $rest = preg_replace("/".$separator."$/","",$rest);
49
- $elements = array_merge($elements,explode($separator,$rest));
50
- }
51
- }
52
- return $elements;
53
- }
54
-
55
  /**********************************************************/
56
  /* Slidehow widget function
57
  /**********************************************************/
@@ -64,35 +35,35 @@ function nggSlideshowWidget($galleryID,$irWidth,$irHeight) {
64
  global $wpdb;
65
  $ngg_options = get_option('ngg_options');
66
 
67
- if (empty($irWidth) ) $irWidth = $ngg_options[irWidth];
68
- if (empty($irHeight)) $irHeight = $ngg_options[irHeight];
69
 
70
- $replace .= "\n".'<div class="ngg-widget-slideshow" id="ngg_widget_slideshow'.$galleryID.'">';
71
- $replace .= '<a href="http://www.macromedia.com/go/getflashplayer">Get the Flash Player</a> to see the slideshow.</div>';
72
- $replace .= "\n\t".'<script type="text/javascript" defer="defer">';
73
- $replace .= "\n\t".'<!--';
74
- $replace .= "\n\t".'//<![CDATA[';
75
- $replace .= "\n\t\t".'var so = new SWFObject("'.NGGALLERY_URLPATH.'imagerotator.swf", "ngg_slideshow'.$galleryID.'", "'.$irWidth.'", "'.$irHeight.'", "7", "#'.$ngg_options[irBackcolor].'");';
76
- $replace .= "\n\t\t".'so.addParam("wmode", "opaque");';
77
- $replace .= "\n\t\t".'so.addVariable("file", "'.NGGALLERY_URLPATH.'nggextractXML.php?gid='.$galleryID.'");';
78
- if (!$ngg_options[irShuffle]) $replace .= "\n\t\t".'so.addVariable("shuffle", "false");';
79
- // if ($ngg_options[irLinkfromdisplay]) $replace .= "\n\t\t".'so.addVariable("linkfromdisplay", "false");';
80
- // if ($ngg_options[irShownavigation]) $replace .= "\n\t\t".'so.addVariable("shownavigation", "true");';
81
- if ($ngg_options[irShowicons]) $replace .= "\n\t\t".'so.addVariable("showicons", "true");';
82
- $replace .= "\n\t\t".'so.addVariable("overstretch", "'.$ngg_options[irOverstretch].'");';
83
- $replace .= "\n\t\t".'so.addVariable("backcolor", "0x'.$ngg_options[irBackcolor].'");';
84
- $replace .= "\n\t\t".'so.addVariable("frontcolor", "0x'.$ngg_options[irFrontcolor].'");';
85
- $replace .= "\n\t\t".'so.addVariable("lightcolor", "0x'.$ngg_options[irLightcolor].'");';
86
- $replace .= "\n\t\t".'so.addVariable("rotatetime", "'.$ngg_options[irRotatetime].'");';
87
- $replace .= "\n\t\t".'so.addVariable("transition", "'.$ngg_options[irTransition].'");';
88
- $replace .= "\n\t\t".'so.addVariable("width", "'.$irWidth.'");';
89
- $replace .= "\n\t\t".'so.addVariable("height", "'.$irHeight.'");';
90
- $replace .= "\n\t\t".'so.write("ngg_widget_slideshow'.$galleryID.'");';
91
- $replace .= "\n\t".'//]]>';
92
- $replace .= "\n\t".'-->';
93
- $replace .= "\n\t".'</script>';
94
 
95
- echo $replace;
96
  }
97
 
98
 
@@ -106,7 +77,7 @@ function widget_ngg_slideshow() {
106
  return;
107
 
108
  // Check for NextGEN Gallery
109
- if ( !function_exists('nggShowSlideshow') )
110
  return;
111
 
112
  function widget_show_ngg_slideshow($args) {
@@ -118,7 +89,6 @@ function widget_ngg_slideshow() {
118
 
119
  // These lines generate our output.
120
  echo $before_widget . $before_title . $options['title'] . $after_title;
121
- $url_parts = parse_url(get_bloginfo('home'));
122
  nggSlideshowWidget($options['galleryid'] , $options['width'] , $options['height']);
123
  echo $after_widget;
124
 
@@ -170,437 +140,358 @@ function widget_ngg_slideshow() {
170
  register_widget_control(array('NextGEN Slideshow', 'widgets'), 'widget_control_ngg_slideshow', 300, 200);
171
  }
172
 
173
- /*******************************************************/
174
- /* DISPLAY FUNCTION TO THE RECENT & RANDOM IMAGES
175
- /*******************************************************/
176
- function nggDisplayImagesWidget($thumb,$number,$sizeX,$sizeY,$mode,$imgtype) {
 
 
 
 
 
 
 
 
 
177
 
178
- // Check for NextGEN Gallery
179
- if ( !class_exists('nggallery') )
180
- return;
 
181
 
182
- global $wpdb;
183
 
184
- //get ngg options
185
- $ngg_options = get_option('ngg_options');
186
-
187
- // get the effect code
188
- $thumbcode = nggallery::get_thumbcode("sidebar_".$imgtype);
189
-
190
- $count = $wpdb->get_var("SELECT COUNT(*) FROM $wpdb->nggpictures WHERE exclude != 1 ");
191
- if ($count < $number)
192
- $number = $count;
193
-
194
- if ($imgtype == "random")
195
- $imageList = $wpdb->get_results("SELECT * FROM $wpdb->nggpictures WHERE exclude != 1 ORDER by rand() limit $number");
196
- else
197
- $imageList = $wpdb->get_results("SELECT * FROM $wpdb->nggpictures WHERE exclude != 1 ORDER by pid DESC limit 0,$number");
198
 
199
- if (is_array($imageList)){
200
- foreach($imageList as $image) {
 
 
 
201
 
202
- //TODO:Insert title
203
- $out = '<a href="'.nggallery::get_image_url($image->pid).'" title="'.stripslashes($image->description).'" '.$thumbcode.'>';
204
- $addmode = ($mode == 'web20') ? "&amp;mode=web20" : "" ;
205
- if ( $thumb == "false" )
206
- $out .= '<img src="'.NGGALLERY_URLPATH.'nggshow.php?pid='.$image->pid.'&amp;width='.$sizeX.'&amp;height='.$sizeY.$addmode.'" title="'.$image->alttext.'" alt="'.$image->alttext.'" />';
207
- else
208
- $out .= '<img src="'.nggallery::get_thumbnail_url($image->pid).'" style="width:'.$sizeX.'px;height:'.$sizeY.'px;" title="'.$image->alttext.'" alt="'.$image->alttext.'" />';
209
 
210
- echo $out . '</a>'."\n";
 
 
211
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
212
  }
213
- }
214
- }
215
-
216
- /**********************************************************/
217
- /* SIMPLE INSERT TAGS
218
- /**********************************************************/
219
-
220
- function nggDisplayRandomImages($number,$width,$height) {
221
- echo "\n".'<div class="ngg-widget">'."\n";
222
- nggDisplayImagesWidget("true",$number,$width,$height,"","random");
223
- echo '</div>'."\n";
224
- }
225
-
226
-
227
- function nggDisplayRecentImages($number,$width,$height) {
228
- echo "\n".'<div class="ngg-widget">'."\n";
229
- nggDisplayImagesWidget("true",$number,$width,$height,"","recent");
230
- echo '</div>'."\n";
231
- }
232
-
233
-
234
- /**********************************************************/
235
- /* Recent widget
236
- /**********************************************************/
237
- function widget_ngg_recentimage() {
238
 
239
- // Check for the required plugin functions. This will prevent fatal
240
- // errors occurring when you deactivate the dynamic-sidebar plugin.
241
- if ( !function_exists('register_sidebar_widget') )
242
- return;
243
-
244
- // Check for NextGEN Gallery
245
- if ( !class_exists('nggallery') )
246
- return;
247
-
248
- function widget_nextgenrecentimage($args) {
249
 
250
- extract($args);
 
 
 
 
 
 
 
 
 
 
 
 
 
251
 
252
- // Each widget can store its own options. We keep strings here.
253
- $options = get_option('widget_NextGenrecentimage');
254
 
255
- $title = $options['title'];
256
- $thumb = $options['thumb'];
257
- $number = $options['number'];
258
- $sizeX = $options['sizeX'];
259
- $sizeY = $options['sizeY'];
260
- $mode = $options['mode'];
261
-
262
- $showinhome = htmlspecialchars($options['showinhome'], ENT_QUOTES);
263
- $showcategory = htmlspecialchars($options['showcategory'], ENT_QUOTES);
264
- $categorylist = htmlspecialchars($options['categorylist'], ENT_QUOTES);
265
 
266
- $imgtype = "recent";
 
 
 
 
 
 
 
 
 
 
267
 
268
- $show_widget = false; // checking display status (category or home)
269
- $categorieslist = nggGetCSVValues($categorylist,','); // Make array for checking the categories
270
-
271
- if (($showcategory == "denied")) { // Denied list -> enable everywhere and make false if found!
272
- $show_widget = true;
273
- foreach((get_the_category()) as $cat)
274
- { if ((in_array($cat->cat_ID , $categorieslist)))
275
- $show_widget = false;
276
- }
277
- }
278
 
279
- if (($showcategory == "allow")) // Allow list -> false is the default -> enable if found
280
- foreach((get_the_category()) as $cat)
281
- { if ((in_array($cat->cat_ID , $categorieslist)))
282
- $show_widget = true;
283
- }
284
 
285
- if (($showcategory == "all")) // All categories -> if it's not the home -> enable
286
- if ((is_home() != true))
287
- $show_widget = true;
288
 
289
- if (($showinhome == "yes")) // Home page -> If yes -> enable
290
- if ((is_home()))
291
- $show_widget = true;
292
 
293
-
294
- $url_parts = parse_url(get_bloginfo('home'));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
295
 
296
- // Null parameters check
297
- if ( ($number == '') ) $number = 1;
298
- if ( ($sizeX == '') ) $sizeX = 190;
299
- if ( ($sizeY == '') ) $sizeY = 190;
300
 
301
- if ($show_widget) {
302
-
303
- echo $before_widget . $before_title . $title . $after_title;
304
- echo "\n".'<div class="ngg-widget">'."\n";
305
-
306
- nggDisplayImagesWidget($thumb,$number,$sizeX,$sizeY,$mode,$imgtype);
 
307
 
308
- echo '</div>'."\n";
309
- echo $after_widget;
 
 
 
 
310
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
311
  }
312
 
313
- /**
314
- * @desc Output of plugin�s editform in the adminarea
315
- * @author KeViN
316
- */
317
 
318
- function widget_nextgenrecentimage_control($number=1) {
319
-
320
- $options = get_option('widget_NextGenrecentimage');
321
 
322
- if ( !is_array($options) )
323
- $options = array('title'=>'Recent Images', 'buttontext'=>__('NextGEN Recent Image','nggallery'));
 
324
 
325
- if ( $_POST['nextgen-recentsubmit'] ) {
326
- // Remember to sanitize and format use input appropriately.
327
- $options = "";
328
- $options['title'] = strip_tags(stripslashes($_POST['nextgen-recenttitle']));
329
- $options['thumb'] = strip_tags(stripslashes($_POST['nextgen-recentthumb']));
330
- $options['number'] = strip_tags(stripslashes($_POST['nextgen-recentnumber']));
331
- $options['sizeX'] = strip_tags(stripslashes($_POST['nextgen-recentsizeX']));
332
- $options['sizeY'] = strip_tags(stripslashes($_POST['nextgen-recentsizeY']));
333
-
334
- // [0.80] [new functiions and newvariables] -> Category controll
335
- $options['showinhome'] = strip_tags(stripslashes($_POST['nextgen-recentshowinhome']));
336
- $options['showcategory']= strip_tags(stripslashes($_POST['nextgen-recentshowcategory']));
337
- $options['categorylist']= strip_tags(stripslashes($_POST['nextgen-recentcategorylist']));
338
 
339
- // [0.95] [new variable] -> (random / recent)
340
- $options['imgtype'] = strip_tags(stripslashes($_POST['nextgen-recentimgtype']));
 
341
 
342
- update_option('widget_NextGenrecentimage', $options);
343
- }
344
 
345
- // Be sure you format your options to be valid HTML attributes.
346
- $title = htmlspecialchars($options['title'], ENT_QUOTES);
347
- $thumb = htmlspecialchars($options['thumb'], ENT_QUOTES);
348
- $number = htmlspecialchars($options['number'], ENT_QUOTES);
349
- $sizeX = htmlspecialchars($options['sizeX'], ENT_QUOTES);
350
- $sizeY = htmlspecialchars($options['sizeY'], ENT_QUOTES);
351
- $mode = htmlspecialchars($options['mode'], ENT_QUOTES);
352
 
353
- // [0.80] [new functiions and newvariables] -> Category controll
354
- $showinhome = htmlspecialchars($options['showinhome'], ENT_QUOTES);
355
- $showcategory = htmlspecialchars($options['showcategory'], ENT_QUOTES);
356
- $categorylist = htmlspecialchars($options['categorylist'], ENT_QUOTES);
357
 
358
- // [0.95] [new variable] -> (random / recent)
359
- $mode = htmlspecialchars($options['imgtype'], ENT_QUOTES);
360
-
361
- // Here comes the form
362
-
363
- echo'<p style="text-align:right;"><label for="nextgen-recenttitle">' . __('Title','nggallery') . ': <input style="width: 150px;" id="nextgen-recenttitle" name="nextgen-recenttitle" type="text" value="'.$title.'" /></label></p>';
364
-
365
- echo '<p style="text-align:right;"><label for="nextgen-recentthumb">' . __('Display type','nggallery').':';
366
- echo ' <select name="nextgen-recentthumb" size="1">';
367
- echo ' <option id="1" ';if (($thumb == "true")) echo 'selected="selected"'; echo ' value="true">' . __('Thumbnail','nggallery') . '</option>';
368
- echo ' <option id="2" ';if (($thumb == "false")) echo 'selected="selected"'; echo ' value="false">' . __('Orginal','nggallery') . '</option>';
369
- echo ' </select></label></p>';
370
-
371
- echo '<p style="text-align:right;"><label for="nextgen-recentnumber">' . __('Number of pics','nggallery').':';
372
- echo ' <select name="nextgen-recentnumber" size="1">';
373
- echo ' <option id="1" ';if (($number == 1)) echo 'selected="selected"'; echo ' value="1">1</option>';
374
- echo ' <option id="2" ';if (($number == 2)) echo 'selected="selected"'; echo ' value="2">2</option>';
375
- echo ' <option id="3" ';if (($number == 3)) echo 'selected="selected"'; echo ' value="3">3</option>';
376
- echo ' <option id="4" ';if (($number == 4)) echo 'selected="selected"'; echo ' value="4">4</option>';
377
- echo ' <option id="6" ';if (($number == 6)) echo 'selected="selected"'; echo ' value="6">6</option>';
378
- echo ' <option id="8" ';if (($number == 8)) echo 'selected="selected"'; echo ' value="8">8</option>';
379
- echo ' <option id="10" ';if (($number == 10)) echo 'selected="selected"'; echo ' value="10">10</option>';
380
- echo ' </select></label></p>';
381
-
382
- echo '<p style="text-align:right;"><label for="nextgen-recentsizeX">' . __('Width (px)','nggallery') . ': <input style="width: 50px;" id="nextgen-recentsizeX" name="nextgen-recentsizeX" type="text" value="'.$sizeX.'" /></label></p>';
383
-
384
- echo '<p style="text-align:right;"><label for="nextgen-recentsizeY">' . __('Height (px)','nggallery') . ': <input style="width: 50px;" id="nextgen-recentsizeY" name="nextgen-recentsizeY" type="text" value="'.$sizeY.'" /></label></p>';
385
-
386
- echo '<p style="text-align:right;"><label for="nextgen-recentnumber">' . __('Mode','nggallery').':';
387
- echo ' <select name="nextgen-recentmode" size="1">';
388
- echo ' <option id="none" ';if (($mode == "")) echo 'selected="selected"'; echo ' value="">'. __('none','nggallery').'</option>';
389
- echo ' <option id="web20" ';if (($mode == "web20")) echo 'selected="selected"'; echo ' value="web20">'. __('web2.0','nggallery').'</option>';
390
- echo ' </select></label></p>';
391
-
392
- echo '<p style="text-align:right;"><label for="nextgen-recentshowinhome">' . __('Show in the main page','nggallery').':';
393
- echo ' <select name="nextgen-recentshowinhome" size="1">';
394
- echo ' <option id="1" ';if ($showinhome == "yes") echo 'selected="selected"'; echo ' value="yes" >'. __('yes','nggallery').'</option>';
395
- echo ' <option id="2" ';if ($showinhome == "no") echo 'selected="selected"'; echo ' value="no" >'. __('no','nggallery').'</option>';
396
- echo ' </select></label></p>';
397
-
398
- echo '<p style="text-align:right;"><label for="nextgen-recentshowcategory">' . __('Show in','nggallery').':';
399
- echo ' <select name="nextgen-recentshowcategory" size="1">';
400
- echo ' <option id="1" ';if (($showcategory == "all")) echo 'selected="selected"'; echo ' value="all" >'. __('All categories','nggallery').'</option>';
401
- echo ' <option id="2" ';if (($showcategory == "denied")) echo 'selected="selected"'; echo ' value="denied" >'. __('Only which are not listed','nggallery').'</option>';
402
- echo ' <option id="3" ';if (($showcategory == "allow")) echo 'selected="selected"'; echo ' value="allow" >'. __('Only which are listed','nggallery').'</option>';
403
- echo ' </select></label></p>';
404
-
405
- echo '<p style="text-align:right;"><label for="nextgen-recentcategorylist">' . __('Categories (id (use , to seperate)','nggallery') . ': <input style="width: 150px;" id="nextgen-recentcategorylist" name="nextgen-recentcategorylist" type="text" value="'.$categorylist.'" /></label></p>';
406
-
407
- echo '<input type="hidden" id="nextgen-recentsubmit" name="nextgen-recentsubmit" value="1" />';
408
- }
409
-
410
- // This registers our widget so it appears with the other available
411
- // widgets and can be dragged and dropped into any active sidebars.
412
- register_sidebar_widget(array('NextGEN Recent Image', 'widgets'), 'widget_nextgenrecentimage');
413
- register_widget_control(array('NextGEN Recent Image', 'widgets'), 'widget_nextgenrecentimage_control', 300, 400);
414
- }
415
 
416
- /**********************************************************/
417
- /* Random widget
418
- /**********************************************************/
419
- function widget_ngg_randomimage() {
420
 
421
- // Check for the required plugin functions. This will prevent fatal
422
- // errors occurring when you deactivate the dynamic-sidebar plugin.
423
- if ( !function_exists('register_sidebar_widget') )
424
- return;
425
-
426
- // Check for NextGEN Gallery
427
- if ( !class_exists('nggallery') )
428
- return;
429
 
430
- function widget_nextgenimage($args) {
431
-
432
- extract($args);
433
-
434
- // Each widget can store its own options. We keep strings here.
435
- $options = get_option('widget_NextGenimage');
436
-
437
- $title = $options['title'];
438
- $thumb = $options['thumb'];
439
- $number = $options['number'];
440
- $sizeX = $options['sizeX'];
441
- $sizeY = $options['sizeY'];
442
- $mode = $options['mode'];
443
-
444
- $showinhome = htmlspecialchars($options['showinhome'], ENT_QUOTES);
445
- $showcategory = htmlspecialchars($options['showcategory'], ENT_QUOTES);
446
- $categorylist = htmlspecialchars($options['categorylist'], ENT_QUOTES);
447
-
448
- $imgtype = "random";
449
 
450
- //origy ngg options
451
- $ngg_options = get_option('ngg_options');
452
-
453
- // get the effect code
454
- $thumbcode = nggallery::get_thumbcode("sidebar");
455
 
456
- $show_widget = false; // checking display status (category or home)
457
- $categorieslist = nggGetCSVValues($categorylist,','); // Make array for checking the categories
458
-
459
- if (($showcategory == "denied")) { // Denied list -> enable everywhere and make false if found!
460
- $show_widget = true;
461
- foreach((get_the_category()) as $cat)
462
- { if ((in_array($cat->cat_ID , $categorieslist)))
463
- $show_widget = false;
464
- }
465
- }
466
-
467
- if (($showcategory == "allow")) // Allow list -> false is the default -> enable if found
468
- foreach((get_the_category()) as $cat)
469
- { if ((in_array($cat->cat_ID , $categorieslist)))
470
- $show_widget = true;
471
- }
472
-
473
- if (($showcategory == "all")) // All categories -> if it's not the home -> enable
474
- if ((is_home() != true))
475
- $show_widget = true;
476
 
477
- if (($showinhome == "yes")) // Home page -> If yes -> enable
478
- if ((is_home()))
479
- $show_widget = true;
480
-
481
-
482
- $url_parts = parse_url(get_bloginfo('home'));
483
 
484
- // Null parameters check
485
- if ( ($number == '') ) $number = 1;
486
- if ( ($sizeX == '') ) $sizeX = 190;
487
- if ( ($sizeY == '') ) $sizeY = 190;
488
 
489
- if ($show_widget) {
 
 
 
 
 
 
490
 
491
- echo $before_widget . $before_title . $title . $after_title;
492
- echo "\n".'<div class="ngg-widget">'."\n";
493
-
494
- nggDisplayImagesWidget($thumb,$number,$sizeX,$sizeY,$mode,$imgtype,$thumbcode);
495
-
496
- echo '</div>'."\n";
497
- echo $after_widget;
498
  }
499
  }
500
-
501
- /**
502
- * @desc Output of plugin�s editform in the adminarea
503
- * @author KeViN
504
- */
505
-
506
- function widget_nextgenimage_control($number=1) {
507
-
508
- $options = get_option('widget_NextGenimage');
509
-
510
- if ( !is_array($options) )
511
- $options = array('title'=>'', 'buttontext'=>__('NextGEN Random Image','nggallery'));
512
 
513
- if ( $_POST['nextgen-submit'] ) {
514
- // Remember to sanitize and format use input appropriately.
515
- $options = "";
516
- $options['title'] = strip_tags(stripslashes($_POST['nextgen-title']));
517
- $options['thumb'] = strip_tags(stripslashes($_POST['nextgen-thumb']));
518
- $options['number'] = strip_tags(stripslashes($_POST['nextgen-number']));
519
- $options['sizeX'] = strip_tags(stripslashes($_POST['nextgen-sizeX']));
520
- $options['sizeY'] = strip_tags(stripslashes($_POST['nextgen-sizeY']));
521
- $options['mode'] = strip_tags(stripslashes($_POST['nextgen-mode']));
522
-
523
- // [0.80] [new functiions and newvariables] -> Category controll
524
- $options['showinhome'] = strip_tags(stripslashes($_POST['nextgen-showinhome']));
525
- $options['showcategory']= strip_tags(stripslashes($_POST['nextgen-showcategory']));
526
- $options['categorylist']= strip_tags(stripslashes($_POST['nextgen-categorylist']));
527
-
528
- // [0.95] [new variable] -> (random / recent)
529
- $options['imgtype'] = strip_tags(stripslashes($_POST['nextgen-imgtype']));
530
 
531
- update_option('widget_NextGenimage', $options);
532
- }
533
 
534
- // Be sure you format your options to be valid HTML attributes.
535
- $title = htmlspecialchars($options['title'], ENT_QUOTES);
536
- $thumb = htmlspecialchars($options['thumb'], ENT_QUOTES);
537
- $number = htmlspecialchars($options['number'], ENT_QUOTES);
538
- $sizeX = htmlspecialchars($options['sizeX'], ENT_QUOTES);
539
- $sizeY = htmlspecialchars($options['sizeY'], ENT_QUOTES);
540
- //$mode = htmlspecialchars($options['mode'], ENT_QUOTES);
541
-
542
- $showinhome = htmlspecialchars($options['showinhome'], ENT_QUOTES);
543
- $showcategory = htmlspecialchars($options['showcategory'], ENT_QUOTES);
544
- $categorylist = htmlspecialchars($options['categorylist'], ENT_QUOTES);
 
 
545
 
546
- $mode = htmlspecialchars($options['imgtype'], ENT_QUOTES);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
547
 
548
- // Here comes the form
549
- echo'<p style="text-align:right;"><label for="nextgen-title">' . __('Title','nggallery') . ': <input style="width: 150px;" id="nextgen-title" name="nextgen-title" type="text" value="'.$title.'" /></label></p>';
550
-
551
- echo '<p style="text-align:right;"><label for="nextgen-thumb">' . __('Display type','nggallery').':';
552
- echo ' <select name="nextgen-thumb" size="1">';
553
- echo ' <option id="1" ';if (($thumb == "true")) echo 'selected="selected"'; echo ' value="true">' . __('Thumbnail','nggallery') . '</option>';
554
- echo ' <option id="2" ';if (($thumb == "false")) echo 'selected="selected"'; echo ' value="false">' . __('Orginal','nggallery') . '</option>';
555
- echo ' </select></label></p>';
556
-
557
- echo '<p style="text-align:right;"><label for="nextgen-number">' . __('Number of pics','nggallery').':';
558
- echo ' <select name="nextgen-number" size="1">';
559
- echo ' <option id="1" ';if (($number == 1)) echo 'selected="selected"'; echo ' value="1">1</option>';
560
- echo ' <option id="2" ';if (($number == 2)) echo 'selected="selected"'; echo ' value="2">2</option>';
561
- echo ' <option id="3" ';if (($number == 3)) echo 'selected="selected"'; echo ' value="3">3</option>';
562
- echo ' <option id="4" ';if (($number == 4)) echo 'selected="selected"'; echo ' value="4">4</option>';
563
- echo ' <option id="6" ';if (($number == 6)) echo 'selected="selected"'; echo ' value="6">6</option>';
564
- echo ' <option id="8" ';if (($number == 8)) echo 'selected="selected"'; echo ' value="8">8</option>';
565
- echo ' <option id="10" ';if (($number == 10)) echo 'selected="selected"'; echo ' value="10">10</option>';
566
- echo ' </select></label></p>';
567
-
568
- echo '<p style="text-align:right;"><label for="nextgen-sizeX">' . __('Width (px)','nggallery') . ': <input style="width: 50px;" id="nextgen-sizeX" name="nextgen-sizeX" type="text" value="'.$sizeX.'" /></label></p>';
569
-
570
- echo '<p style="text-align:right;"><label for="nextgen-sizeY">' . __('Height (px)','nggallery') . ': <input style="width: 50px;" id="nextgen-sizeY" name="nextgen-sizeY" type="text" value="'.$sizeY.'" /></label></p>';
571
-
572
- echo '<p style="text-align:right;"><label for="nextgen-number">' . __('Mode','nggallery').':';
573
- echo ' <select name="nextgen-mode" size="1">';
574
- echo ' <option id="none" ';if (($mode == "")) echo 'selected="selected"'; echo ' value="">'. __('none','nggallery').'</option>';
575
- echo ' <option id="web20" ';if (($mode == "web20")) echo 'selected="selected"'; echo ' value="web20">'. __('web2.0','nggallery').'</option>';
576
- echo ' </select></label></p>';
577
-
578
- echo '<p style="text-align:right;"><label for="nextgen-showinhome">' . __('Show in the main page','nggallery').':';
579
- echo ' <select name="nextgen-showinhome" size="1">';
580
- echo ' <option id="1" ';if ($showinhome == "yes") echo 'selected="selected"'; echo ' value="yes" >'. __('yes','nggallery').'</option>';
581
- echo ' <option id="2" ';if ($showinhome == "no") echo 'selected="selected"'; echo ' value="no" >'. __('no','nggallery').'</option>';
582
- echo ' </select></label></p>';
583
-
584
- echo '<p style="text-align:right;"><label for="nextgen-showcategory">' . __('Show in','nggallery').':';
585
- echo ' <select name="nextgen-showcategory" size="1">';
586
- echo ' <option id="1" ';if (($showcategory == "all")) echo 'selected="selected"'; echo ' value="all" >'. __('All categories','nggallery').'</option>';
587
- echo ' <option id="2" ';if (($showcategory == "denied")) echo 'selected="selected"'; echo ' value="denied" >'. __('Only which are not listed','nggallery').'</option>';
588
- echo ' <option id="3" ';if (($showcategory == "allow")) echo 'selected="selected"'; echo ' value="allow" >'. __('Only which are listed','nggallery').'</option>';
589
- echo ' </select></label></p>';
590
-
591
- echo '<p style="text-align:right;"><label for="nextgen-categorylist">' . __('Categories (id (use , to seperate)','nggallery') . ': <input style="width: 150px;" id="nextgen-categorylist" name="nextgen-categorylist" type="text" value="'.$categorylist.'" /></label></p>';
592
-
593
- echo '<input type="hidden" id="nextgen-submit" name="nextgen-submit" value="1" />';
594
- }
595
-
596
- // This registers our widget so it appears with the other available
597
- // widgets and can be dragged and dropped into any active sidebars.
598
- register_sidebar_widget(array('NextGEN Random Image', 'widgets'), 'widget_nextgenimage');
599
- register_widget_control(array('NextGEN Random Image', 'widgets'), 'widget_nextgenimage_control', 300, 400);
600
  }
601
 
602
- // Run our code later in case this loads prior to any required plugins.
603
- add_action('widgets_init', 'widget_ngg_randomimage');
604
- add_action('widgets_init', 'widget_ngg_slideshow');
605
- add_action('widgets_init', 'widget_ngg_recentimage');
606
  ?>
2
  /*
3
  Plugin Name: NextGEN Gallery Widget
4
  Description: Adds a sidebar widget support to your NextGEN Gallery
5
+ Author: NextGEN DEV-Team
6
+ Version: 1.20
7
+ Author URI: http://alexrabe.boelinger.com/
8
+ Plugin URI: http://alexrabe.boelinger.com/?page_id=80
9
 
10
  This program is free software; you can redistribute it and/or modify
11
  it under the terms of the GNU General Public License as published by
23
 
24
  */
25
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
26
  /**********************************************************/
27
  /* Slidehow widget function
28
  /**********************************************************/
35
  global $wpdb;
36
  $ngg_options = get_option('ngg_options');
37
 
38
+ if (empty($irWidth) ) $irWidth = $ngg_options['irWidth'];
39
+ if (empty($irHeight)) $irHeight = $ngg_options['irHeight'];
40
 
41
+ $out .= "\n".'<div class="ngg-widget-slideshow" id="ngg_widget_slideshow'.$galleryID.'">';
42
+ $out .= '<a href="http://www.macromedia.com/go/getflashplayer">Get the Flash Player</a> to see the slideshow.</div>';
43
+ $out .= "\n\t".'<script type="text/javascript" defer="defer">';
44
+ $out .= "\n\t".'<!--';
45
+ $out .= "\n\t".'//<![CDATA[';
46
+ $out .= "\n\t\t".'var so = new SWFObject("'.NGGALLERY_URLPATH.'imagerotator.swf", "ngg_slideshow'.$galleryID.'", "'.$irWidth.'", "'.$irHeight.'", "7", "#'.$ngg_options['irBackcolor'].'");';
47
+ $out .= "\n\t\t".'so.addParam("wmode", "opaque");';
48
+ $out .= "\n\t\t".'so.addVariable("file", "'.NGGALLERY_URLPATH.'nggextractXML.php?gid='.$galleryID.'");';
49
+ if (!$ngg_options['irShuffle']) $out .= "\n\t\t".'so.addVariable("shuffle", "false");';
50
+ // if ($ngg_options[irLinkfromdisplay]) $out .= "\n\t\t".'so.addVariable("linkfromdisplay", "false");';
51
+ // if ($ngg_options[irShownavigation]) $out .= "\n\t\t".'so.addVariable("shownavigation", "true");';
52
+ if ($ngg_options['irShowicons']) $out .= "\n\t\t".'so.addVariable("showicons", "true");';
53
+ $out .= "\n\t\t".'so.addVariable("overstretch", "'.$ngg_options['irOverstretch'].'");';
54
+ $out .= "\n\t\t".'so.addVariable("backcolor", "0x'.$ngg_options['irBackcolor'].'");';
55
+ $out .= "\n\t\t".'so.addVariable("frontcolor", "0x'.$ngg_options['irFrontcolor'].'");';
56
+ $out .= "\n\t\t".'so.addVariable("lightcolor", "0x'.$ngg_options['irLightcolor'].'");';
57
+ $out .= "\n\t\t".'so.addVariable("rotatetime", "'.$ngg_options['irRotatetime'].'");';
58
+ $out .= "\n\t\t".'so.addVariable("transition", "'.$ngg_options['irTransition'].'");';
59
+ $out .= "\n\t\t".'so.addVariable("width", "'.$irWidth.'");';
60
+ $out .= "\n\t\t".'so.addVariable("height", "'.$irHeight.'");';
61
+ $out .= "\n\t\t".'so.write("ngg_widget_slideshow'.$galleryID.'");';
62
+ $out .= "\n\t".'//]]>';
63
+ $out .= "\n\t".'-->';
64
+ $out .= "\n\t".'</script>';
65
 
66
+ echo $out;
67
  }
68
 
69
 
77
  return;
78
 
79
  // Check for NextGEN Gallery
80
+ if ( !class_exists('nggallery') )
81
  return;
82
 
83
  function widget_show_ngg_slideshow($args) {
89
 
90
  // These lines generate our output.
91
  echo $before_widget . $before_title . $options['title'] . $after_title;
 
92
  nggSlideshowWidget($options['galleryid'] , $options['width'] , $options['height']);
93
  echo $after_widget;
94
 
140
  register_widget_control(array('NextGEN Slideshow', 'widgets'), 'widget_control_ngg_slideshow', 300, 200);
141
  }
142
 
143
+ add_action('widgets_init', 'widget_ngg_slideshow');
144
+
145
+ /**
146
+ * nggWidget - The widget control for NextGEN Gallery ( require WP2.2 or hiogher)
147
+ *
148
+ * @package NextGEN Gallery
149
+ * @author Alex Rabe
150
+ * @copyright 2008
151
+ * @version 1.00
152
+ * @access public
153
+ */
154
+
155
+ class nggWidget {
156
 
157
+ function nggWidget() {
158
+
159
+ // Run our code later in case this loads prior to any required plugins.
160
+ add_action('widgets_init', array(&$this, 'ngg_widget_register'));
161
 
162
+ }
163
 
164
+ function ngg_widget_register() {
165
+
166
+ if ( !class_exists('nggallery') )
167
+ return;
 
 
 
 
 
 
 
 
 
 
168
 
169
+ // For K2 Sidebar manager we do different
170
+ if(class_exists('K2SBM') && K2_USING_SBM ) {
171
+
172
+ K2SBM::register_sidebar_module('NextGEN Gallery', 'ngg_sbm_widget_output', 'sb-ngg-widget');
173
+ K2SBM::register_sidebar_module_control('NextGEN Gallery', 'ngg_sbm_widget_control');
174
 
175
+ } else {
 
 
 
 
 
 
176
 
177
+ // test for widget plugin > 2.2
178
+ if ( !function_exists('wp_register_sidebar_widget') )
179
+ return;
180
 
181
+ $options = get_option('ngg_widget');
182
+ $number = $options['number'];
183
+ if ( $number < 1 ) $number = 1;
184
+ if ( $number > 9 ) $number = 9;
185
+ $dims = array('width' => 410, 'height' => 300);
186
+ $class = array('classname' => 'ngg_widget');
187
+ for ($i = 1; $i <= 9; $i++) {
188
+ $name = sprintf(__('NextGEN Gallery %d','nggallery'), $i);
189
+ $id = "ngg-widget-$i"; // Never never never translate an id
190
+ wp_register_sidebar_widget($id, $name, $i <= $number ? array(&$this, 'ngg_widget_output') : /* unregister */ '', $class, $i);
191
+ wp_register_widget_control($id, $name, $i <= $number ? array(&$this, 'ngg_widget_control') : /* unregister */ '', $dims, $i);
192
+ }
193
+ add_action('sidebar_admin_setup', array(&$this, 'ngg_widget_admin_setup'));
194
+ add_action('sidebar_admin_page', array(&$this, 'ngg_widget_admin_page'));
195
  }
196
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
197
 
198
+ function ngg_widget_admin_page() {
 
 
 
 
 
 
 
 
 
199
 
200
+ $options = get_option('ngg_widget');
201
+ ?>
202
+ <div class="wrap">
203
+ <form method="POST">
204
+ <h2><?php _e('NextGEN Gallery Widgets','nggallery'); ?></h2>
205
+ <p style="line-height: 30px;"><?php _e('How many NextGEN Gallery widgets would you like?','nggallery'); ?>
206
+ <select id="ngg-number" name="ngg-number">
207
+ <?php for ( $i = 1; $i < 10; ++$i ) echo "<option value='$i' ".($options['number']==$i ? "selected='selected'" : '').">$i</option>"; ?>
208
+ </select>
209
+ <span class="submit"><input type="submit" name="ngg-number-submit" id="ngg-number-submit" value="<?php echo attribute_escape(__('Save')); ?>" /></span></p>
210
+ </form>
211
+ </div>
212
+ <?php
213
+ }
214
 
215
+ function ngg_widget_admin_setup() {
 
216
 
217
+ $options = $newoptions = get_option('ngg_widget');
 
 
 
 
 
 
 
 
 
218
 
219
+ if ( isset($_POST['ngg-number-submit']) ) {
220
+ $number = (int) $_POST['ngg-number'];
221
+ if ( $number > 9 ) $number = 9;
222
+ if ( $number < 1 ) $number = 1;
223
+ $newoptions['number'] = $number;
224
+ }
225
+ if ( $options != $newoptions ) {
226
+ $options = $newoptions;
227
+ update_option('ngg_widget', $options);
228
+ $this->ngg_widget_register($options['number']);
229
+ }
230
 
231
+ }
 
 
 
 
 
 
 
 
 
232
 
233
+ function ngg_widget_control($number, $is_K2_SMB = false) {
 
 
 
 
234
 
235
+ $options = $newoptions = get_option('ngg_widget');
 
 
236
 
237
+ // These post parameter are expected
238
+ $params = array('title','items','show','type','width','height','exclude','list');
 
239
 
240
+ // get the parameter from POST
241
+ if ( $_POST["ngg-submit-$number"] ) {
242
+
243
+ foreach ($params as $parameter) {
244
+ $value = trim(strip_tags(stripslashes($_POST["ngg-$parameter-$number"])));
245
+ // remove all non numeric values from the list
246
+ if ($parameter == 'list') {
247
+ $numeric_ids = array();
248
+ $ids = explode(',',$value);
249
+ if (is_array($ids)) {
250
+ foreach ($ids as $id) {
251
+ $id = trim($id);
252
+ if (is_numeric($id))
253
+ $numeric_ids[] = $id;
254
+ }
255
+ $value = implode(',', $numeric_ids);
256
+ }
257
+ }
258
+ $newoptions[$number][$parameter] = $value;
259
+ }
260
+
261
+ }
262
+
263
+ // save the parameter
264
+ if ( $options != $newoptions ) {
265
+ $options = $newoptions;
266
+ update_option('ngg_widget', $options);
267
+ }
268
 
269
+ // Init parameters check
270
+ if (empty($options[$number]))
271
+ $options[$number] = array('title'=>'Gallery', 'items'=>4,'show'=>'thumbnail' ,'type'=>'random','width'=>75, 'height'=>50, 'exclude'=>'all');
 
272
 
273
+ foreach ($params as $parameter) {
274
+ $post[$parameter] = attribute_escape($options[$number][$parameter]);
275
+ }
276
+
277
+ // get the parameter from options -> POST
278
+ $items = (int) $options[$number]['items'];
279
+ if ( empty($items) || $items < 1 ) $items = 10;
280
 
281
+ // Here comes the form (Not for K2 Style)
282
+ if (!$is_K2_SMB) {
283
+ ?>
284
+ <style>
285
+ div .ngg-widget p {
286
+ text-align:left;
287
  }
288
+ div .ngg-widget label {
289
+ float:left;
290
+ margin:0.4em 0px;
291
+ padding:0pt 10px;
292
+ text-align:right;
293
+ width:120px;
294
+ }
295
+ </style>
296
+ <?php
297
+ }
298
+ ?>
299
+ <div class="ngg-widget">
300
+ <p>
301
+ <label for="ngg-title-<?php echo "$number"; ?>"><?php _e('Title :','nggallery'); ?></label>
302
+ <input style="width: 250px;" id="ngg-title-<?php echo "$number"; ?>" name="ngg-title-<?php echo "$number"; ?>" type="text" value="<?php echo $post['title']; ?>" />
303
+ </p>
304
+
305
+ <p>
306
+ <label for="ngg-items-<?php echo "$number"; ?>"><?php _e('Show :','nggallery'); ?></label>
307
+ <select id="ngg-items-<?php echo "$number"; ?>" name="ngg-items-<?php echo "$number"; ?>">
308
+ <?php for ( $i = 1; $i <= 10; ++$i ) echo "<option value='$i' ".($items==$i ? "selected='selected'" : '').">$i</option>"; ?>
309
+ </select>
310
+ <select id="ngg-show-<?php echo "$number"; ?>" name="ngg-show-<?php echo "$number"; ?>" >
311
+ <option <?php selected("thumbnail" , $post['show']); ?> value="thumbnail"><?php _e('Thumbnails','nggallery'); ?></option>
312
+ <option <?php selected("orginal" , $post['show']); ?> value="orginal"><?php _e('Orginal images','nggallery'); ?></option>
313
+ </select>
314
+ </p>
315
+
316
+ <p>
317
+ <label for="ngg-type-<?php echo "$number"; ?>">&nbsp;</label>
318
+ <input name="ngg-type-<?php echo "$number"; ?>" type="radio" value="random" <?php checked("random" , $post['type']); ?> /> <?php _e('random','nggallery'); ?>
319
+ <input name="ngg-type-<?php echo "$number"; ?>" type="radio" value="recent" <?php checked("recent" , $post['type']); ?> /> <?php _e('recent added ','nggallery'); ?>
320
+ </p>
321
+
322
+ <p>
323
+ <label for="ngg-width-<?php echo "$number"; ?>"><?php _e('Width x Height :','nggallery'); ?></label>
324
+ <input style="width: 50px;" id="ngg-width-<?php echo "$number"; ?>" name="ngg-width-<?php echo "$number"; ?>" type="text" value="<?php echo (int)$post['width']; ?>" /> x
325
+ <input style="width: 50px;" id="ngg-height-<?php echo "$number"; ?>" name="ngg-height-<?php echo "$number"; ?>" type="text" value="<?php echo (int) $post['height']; ?>" /> (px)
326
+ </p>
327
+
328
+ <p>
329
+ <label for="ngg-exclude-<?php echo "$number"; ?>"><?php _e('Select :','nggallery'); ?></label>
330
+ <select id="ngg-exclude-<?php echo "$number"; ?>" name="ngg-exclude-<?php echo "$number"; ?>">
331
+ <option <?php selected("all" , $post['exclude']); ?> value="all" ><?php _e('All galleries','nggallery'); ?></option>
332
+ <option <?php selected("denied" , $post['exclude']); ?> value="denied" ><?php _e('Only which are not listed','nggallery'); ?></option>
333
+ <option <?php selected("allow" , $post['exclude']); ?> value="allow" ><?php _e('Only which are listed','nggallery'); ?></option>
334
+ </select>
335
+ </p>
336
+
337
+ <p>
338
+ <label for="ngg-list-<?php echo "$number"; ?>"><?php _e('Gallery ID :','nggallery'); ?></label>
339
+ <input style="width: 250px;" id="ngg-list-<?php echo "$number"; ?>" name="ngg-list-<?php echo "$number"; ?>" type="text" value="<?php echo $post['list'] ?>" />
340
+ <br/><small><?php _e('Gallery IDs, separated by commas.','nggallery'); ?></small>
341
+ </p>
342
+
343
+ <input type="hidden" id="ngg-submit-<?php echo "$number"; ?>" name="ngg-submit-<?php echo "$number"; ?>" value="1" />
344
+ </div>
345
+
346
+ <?php
347
+
348
  }
349
 
350
+ function ngg_widget_output($args, $number = 1 , $options = false) {
 
 
 
351
 
352
+ global $wpdb;
353
+
354
+ extract($args);
355
 
356
+ // We could get this also as parameter
357
+ if (!$options)
358
+ $options = get_option('ngg_widget');
359
 
360
+ // get the effect code
361
+ $thumbcode = nggallery::get_thumbcode("sidebar_".$number);
362
+
363
+ $items = $options[$number]['items'];
364
+ $exclude = $options[$number]['exclude'];
365
+ $list = $options[$number]['list'];
 
 
 
 
 
 
 
366
 
367
+ $count = $wpdb->get_var("SELECT COUNT(*) FROM $wpdb->nggpictures WHERE exclude != 1 ");
368
+ if ($count < $options[$number]['items'])
369
+ $options[$number]['items'] = $count;
370
 
371
+ $exclude_list = "";
 
372
 
373
+ // THX to Kay Germer for the idea & addon code
374
+ if ( (!empty($list)) && ($exclude != "all") ) {
375
+ $list = explode(',',$list);
376
+ // Prepare for SQL
377
+ $list = "'" . implode("', '", $list) . "'";
 
 
378
 
379
+ if ($exclude == "denied")
380
+ $exclude_list = "AND NOT galleryid IN ($list)";
 
 
381
 
382
+ if ($exclude == "allow")
383
+ $exclude_list = "AND galleryid IN ($list)";
384
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
385
 
386
+ if ( $options[$number]['type'] == "random" )
387
+ $imageList = $wpdb->get_results("SELECT * FROM $wpdb->nggpictures WHERE exclude != 1 $exclude_list ORDER by rand() limit $items");
388
+ else
389
+ $imageList = $wpdb->get_results("SELECT * FROM $wpdb->nggpictures WHERE exclude != 1 $exclude_list ORDER by pid DESC limit 0,$items");
390
 
391
+ echo $before_widget . $before_title . $options[$number]['title'] . $after_title;
392
+ echo "\n".'<div class="ngg-widget">'."\n";
 
 
 
 
 
 
393
 
394
+ if (is_array($imageList)){
395
+ foreach($imageList as $image) {
396
+
397
+ $out = '<a href="'.nggallery::get_image_url($image->pid).'" title="'.stripslashes($image->description).'" '.$thumbcode.'>';
398
+ if ( $options[$number]['show'] == "orginal" )
399
+ $out .= '<img src="'.NGGALLERY_URLPATH.'nggshow.php?pid='.$image->pid.'&amp;width='.$options[$number]['width'].'&amp;height='.$options[$number]['height'].'" title="'.$image->alttext.'" alt="'.$image->alttext.'" />';
400
+ else
401
+ $out .= '<img src="'.nggallery::get_thumbnail_url($image->pid).'" style="width:'.$options[$number]['width'].'px;height:'.$options[$number]['height'].'px;" title="'.$image->alttext.'" alt="'.$image->alttext.'" />';
402
+
403
+ echo $out . '</a>'."\n";
404
+
405
+ }
406
+ }
 
 
 
 
 
 
407
 
408
+ echo '</div>'."\n";
409
+ echo $after_widget;
 
 
 
410
 
411
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
412
 
413
+ }
414
+ // let's show it
415
+ $nggWidget = new nggWidget;
 
 
 
416
 
 
 
 
 
417
 
418
+ /**
419
+ * ngg_sbm_widget_control()
420
+ * ONLY required for K2 Theme (tested with K2 RC4)
421
+ *
422
+ * @return return widget admin
423
+ */
424
+ function ngg_sbm_widget_control() {
425
 
426
+ if ( !function_exists('checked') ) {
427
+ function checked( $checked, $current) {
428
+ if ( $checked == $current)
429
+ echo ' checked="checked"';
 
 
 
430
  }
431
  }
 
 
 
 
 
 
 
 
 
 
 
 
432
 
433
+ $number = 1;
434
+
435
+ // Check for Module id
436
+ if(isset($_POST['module_id']))
437
+ $number = $_POST['module_id'];
438
+
439
+ nggWidget::ngg_widget_control($number, true);
 
 
 
 
 
 
 
 
 
 
440
 
441
+ }
 
442
 
443
+ /**
444
+ * ngg_sbm_widget_output($args)
445
+ * ONLY required for K2 Theme
446
+ *
447
+ * @return widget content
448
+ */
449
+ function ngg_sbm_widget_output($args) {
450
+ global $k2sbm_current_module;
451
+
452
+ $number = $k2sbm_current_module->id;
453
+
454
+ nggWidget::ngg_widget_output($args, $number , false);
455
+ }
456
 
457
+ /**
458
+ * nggDisplayRandomImages($number,$width,$height,$exclude,$list)
459
+ * Function for templates without widget support
460
+ *
461
+ * @return echo the widget content
462
+ */
463
+ function nggDisplayRandomImages($number, $width = "75", $height = "50", $exclude = "all", $list = "") {
464
+
465
+ $options[1] = array('title'=>'',
466
+ 'items'=>$number,
467
+ 'show'=>'thumbnail' ,
468
+ 'type'=>'random',
469
+ 'width'=>$width,
470
+ 'height'=>$height,
471
+ 'exclude'=>'all',
472
+ 'list'=>$list );
473
+
474
+ nggWidget::ngg_widget_output($args = array(), 1, $options);
475
+ }
476
 
477
+ /**
478
+ * nggDisplayRecentImages($number,$width,$height,$exclude,$list)
479
+ * Function for templates without widget support
480
+ *
481
+ * @return echo the widget content
482
+ */
483
+ function nggDisplayRecentImages($number, $width = "75", $height = "50", $exclude = "all", $list = "") {
484
+
485
+ $options[1] = array('title'=>'',
486
+ 'items'=>$number,
487
+ 'show'=>'thumbnail' ,
488
+ 'type'=>'recent',
489
+ 'width'=>$width,
490
+ 'height'=>$height,
491
+ 'exclude'=>'all',
492
+ 'list'=>$list );
493
+
494
+ nggWidget::ngg_widget_output($args = array(), 1, $options);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
495
  }
496
 
 
 
 
 
497
  ?>
readme.txt CHANGED
@@ -3,7 +3,7 @@ Contributors: Alex Rabe
3
  Donate link: http://alexrabe.boelinger.com/?page_id=80
4
  Tags: photos, flash, slideshow, images, gallery, media, admin, post, photo-albums, pictures, widgets, photo, picture
5
  Requires at least: 2.1.3
6
- Tested up to: 2.3.1
7
 
8
  NextGEN Gallery is a full integrated Image Gallery plugin for WordPress with a Flash slideshow option.
9
 
@@ -24,7 +24,8 @@ Features:
24
  * Sidebar Widget : Show a slideshow, random or recent picture at your sidebar
25
  * Language support : Translated in more than 15 languages
26
  * Upload tab integration : You have access to all pictures via the upload tab
27
- * Tag support for images : Append related images to your post
 
28
 
29
  For support around this plugin please visit http://alexrabe.boelinger.com/forums/
30
 
@@ -34,7 +35,7 @@ For support around this plugin please visit http://alexrabe.boelinger.com/forums
34
 
35
  == Credits ==
36
 
37
- Copyright 2007 Alex Rabe & NextGEN DEV-Team
38
 
39
  The NextGEN button is taken from the Silk set of FamFamFam. See more at
40
  http://www.famfamfam.com/lab/icons/silk/
3
  Donate link: http://alexrabe.boelinger.com/?page_id=80
4
  Tags: photos, flash, slideshow, images, gallery, media, admin, post, photo-albums, pictures, widgets, photo, picture
5
  Requires at least: 2.1.3
6
+ Tested up to: 2.3.2
7
 
8
  NextGEN Gallery is a full integrated Image Gallery plugin for WordPress with a Flash slideshow option.
9
 
24
  * Sidebar Widget : Show a slideshow, random or recent picture at your sidebar
25
  * Language support : Translated in more than 15 languages
26
  * Upload tab integration : You have access to all pictures via the upload tab
27
+ * Tag support for images : Append related images to your post
28
+ * Meta data support : Import EXIF, IPTC or XMP meta data
29
 
30
  For support around this plugin please visit http://alexrabe.boelinger.com/forums/
31
 
35
 
36
  == Credits ==
37
 
38
+ Copyright 2007-2008 Alex Rabe & NextGEN DEV-Team
39
 
40
  The NextGEN button is taken from the Silk set of FamFamFam. See more at
41
  http://www.famfamfam.com/lab/icons/silk/
{js → tinymce}/editor_plugin.js RENAMED
File without changes
js/langs/de_DE.js → tinymce/langs/de_de.js RENAMED
File without changes
{js → tinymce}/langs/en.js RENAMED
File without changes
{js → tinymce}/langs/en_US.js RENAMED
File without changes
{js → tinymce}/nextgen.gif RENAMED
File without changes
{js → tinymce}/tinymce.js RENAMED
File without changes
tinymce/tinymce.php ADDED
@@ -0,0 +1,85 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * @title TinyMCE Button Integration
5
+ * @author Alex Rabe
6
+ */
7
+
8
+ // Load the Script for the Button
9
+ function insert_nextgen_script() {
10
+
11
+ //TODO: Do with WP2.1 Script Loader
12
+ // Thanks for this idea to www.jovelstefan.de
13
+ echo "\n"."
14
+ <script type='text/javascript'>
15
+ function ngg_buttonscript() {
16
+ if(window.tinyMCE) {
17
+
18
+ var template = new Array();
19
+
20
+ template['file'] = '".NGGALLERY_URLPATH."tinymce/window.php';
21
+ template['width'] = 360;
22
+ template['height'] = 210;
23
+
24
+ args = {
25
+ resizable : 'no',
26
+ scrollbars : 'no',
27
+ inline : 'yes'
28
+ };
29
+
30
+ tinyMCE.openWindow(template, args);
31
+ return true;
32
+ }
33
+ }
34
+ </script>";
35
+ return;
36
+ }
37
+
38
+ function ngg_addbuttons() {
39
+
40
+ global $wp_db_version;
41
+
42
+ // Don't bother doing this stuff if the current user lacks permissions
43
+ if ( !current_user_can('edit_posts') && !current_user_can('edit_pages') ) return;
44
+
45
+ // Check for NextGEN capability
46
+ if ( !current_user_can('NextGEN Use TinyMCE') ) return;
47
+
48
+ // Add only in Rich Editor mode
49
+ if ( get_user_option('rich_editing') == 'true') {
50
+
51
+ // add the button for wp21 in a new way
52
+ add_filter("mce_plugins", "nextgen_button_plugin", 5);
53
+ add_filter('mce_buttons', 'nextgen_button', 5);
54
+ add_action('tinymce_before_init','nextgen_button_script');
55
+ }
56
+ }
57
+
58
+ // used to insert button in wordpress 2.1x editor
59
+ function nextgen_button($buttons) {
60
+
61
+ array_push($buttons, "separator", "NextGEN");
62
+ return $buttons;
63
+
64
+ }
65
+
66
+ // Tell TinyMCE that there is a plugin (wp2.1)
67
+ function nextgen_button_plugin($plugins) {
68
+
69
+ array_push($plugins, "-NextGEN");
70
+ return $plugins;
71
+ }
72
+
73
+ // Load the TinyMCE plugin : editor_plugin.js (wp2.1)
74
+ function nextgen_button_script() {
75
+
76
+ echo 'tinyMCE.loadPlugin("NextGEN", "'.NGGALLERY_URLPATH.'tinymce/");' . "\n";
77
+ return;
78
+ }
79
+
80
+ // init process for button control
81
+ add_action('init', 'ngg_addbuttons');
82
+ add_action('edit_page_form', 'insert_nextgen_script');
83
+ add_action('edit_form_advanced', 'insert_nextgen_script');
84
+
85
+ ?>
nggbutton.php → tinymce/window.php RENAMED
@@ -1,6 +1,6 @@
1
  <?php
2
 
3
- $wpconfig = realpath("../../../wp-config.php");
4
 
5
  if (!file_exists($wpconfig)) {
6
  echo "Could not found wp-config.php. Error in path :\n\n".$wpconfig ;
@@ -14,18 +14,17 @@ require_once(ABSPATH.'/wp-admin/admin.php');
14
  if(!current_user_can('edit_posts')) die;
15
 
16
  global $wpdb;
17
- $ngg_options = get_option('ngg_options');
18
 
19
  ?>
20
 
21
  <html xmlns="http://www.w3.org/1999/xhtml">
22
  <head>
23
  <title>NextGEN Gallery</title>
24
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
25
  <script language="javascript" type="text/javascript" src="<?php echo get_option('siteurl') ?>/wp-includes/js/tinymce/tiny_mce_popup.js"></script>
26
  <script language="javascript" type="text/javascript" src="<?php echo get_option('siteurl') ?>/wp-includes/js/tinymce/utils/mctabs.js"></script>
27
  <script language="javascript" type="text/javascript" src="<?php echo get_option('siteurl') ?>/wp-includes/js/tinymce/utils/form_utils.js"></script>
28
- <script language="javascript" type="text/javascript" src="<?php echo NGGALLERY_URLPATH ?>js/tinymce.js"></script>
29
  <base target="_self" />
30
  </head>
31
  <body id="link" onload="tinyMCEPopup.executeOnLoad('init();');document.body.style.display='';document.getElementById('gallerytag').focus();" style="display: none">
1
  <?php
2
 
3
+ $wpconfig = realpath("../../../../wp-config.php");
4
 
5
  if (!file_exists($wpconfig)) {
6
  echo "Could not found wp-config.php. Error in path :\n\n".$wpconfig ;
14
  if(!current_user_can('edit_posts')) die;
15
 
16
  global $wpdb;
 
17
 
18
  ?>
19
 
20
  <html xmlns="http://www.w3.org/1999/xhtml">
21
  <head>
22
  <title>NextGEN Gallery</title>
23
+ <meta http-equiv="Content-Type" content="<?php bloginfo('html_type'); ?>; charset=<?php echo get_option('blog_charset'); ?>" />
24
  <script language="javascript" type="text/javascript" src="<?php echo get_option('siteurl') ?>/wp-includes/js/tinymce/tiny_mce_popup.js"></script>
25
  <script language="javascript" type="text/javascript" src="<?php echo get_option('siteurl') ?>/wp-includes/js/tinymce/utils/mctabs.js"></script>
26
  <script language="javascript" type="text/javascript" src="<?php echo get_option('siteurl') ?>/wp-includes/js/tinymce/utils/form_utils.js"></script>
27
+ <script language="javascript" type="text/javascript" src="<?php echo NGGALLERY_URLPATH ?>tinymce/tinymce.js"></script>
28
  <base target="_self" />
29
  </head>
30
  <body id="link" onload="tinyMCEPopup.executeOnLoad('init();');document.body.style.display='';document.getElementById('gallerytag').focus();" style="display: none">