NextGEN Gallery – WordPress Gallery Plugin - Version 2.1.2

Version Description

  • 07.20.2015 =
  • NEW: Ability to import from Media Library
  • NEW: Added filter 'ngg_datamapper_table_name'
  • NEW: Added filter ngg_legacy_template_directories for legacy template locator (thanks Ross McKay)
  • NEW: Pagination available onManage Images page
  • NEW: Added filter ngg_manage_images_items_per_page_array to control pagination options
  • NEW: Added filters 'ngg_load_frontend_logic' and 'ngg_get_modules_to_load'
  • NEW: Added filter 'ngg_add_page_shortcode' to control Manage Galleries > 'Create new page' content
  • NEW: Added filter 'ngg_manage_albums_items_order'
  • Changed: Removed PHP4 support
  • Fixed: Ability to set NextGEN Image as Featured Image
  • Fixed: Don't use resource manager in download requests for WP Photo Shelter
  • Fixed: Updated custom jQuery-UI styling to resemble WordPress postbox styling
  • Fixed: Styled plupload buttons to resemble WordPress buttons
  • Fixed: Removed 'fixed' class from manage galleries table. Allows columns to adjust to content
  • Fixed: Removed note about flash support and fixed typoe (thanks Rene Wolf)
  • Fixed: Fixed typo in nggallery.po
  • Fixed: Cache results of lookup_columns() to avoid multiple identical queries; thanks go to Alex Bradaric
  • Fixed: Better WP-CPI detection
  • Fixed: Removed unnecessary calls to parent::initialize()
  • Fixed: Adjusted album-compact template to always include p.ngg-album-gallery-image-counter
  • Fixed: Replaced empty gallery rendering in is_feed() with a link
  • Fixed: Removed default settings for imagerotator, which is no longer supported
  • Fixed: Optimizated scanning of images when importing a gallery
  • Fixed: When a gallery is deleted, ensure that DB and filesystem are purged
  • Fixed: Removed Insert Gallery Window box shadow
  • Fixed: Ensure that file_exists() calls are prefixed with @
Download this release

Release Info

Developer photocrati
Plugin Icon 128x128 NextGEN Gallery – WordPress Gallery Plugin
Version 2.1.2
Comparing to
See all releases

Code changes from version 2.1.0 to 2.1.2

Files changed (61) hide show
  1. .hg_archival.txt +2 -2
  2. .hgsubstate +1 -1
  3. .hgtags +10 -0
  4. changelog.txt +31 -0
  5. nggallery.php +11 -2
  6. pope/lib/class.component_registry.php +84 -82
  7. pope/lib/class.extensibleobject.php +2 -0
  8. products/photocrati_nextgen/modules/attach_to_post/static/attach_to_post_dialog.css +0 -4
  9. products/photocrati_nextgen/modules/attach_to_post/static/attach_to_post_dialog.min.css +1 -1
  10. products/photocrati_nextgen/modules/datamapper/package.module.datamapper.php +12 -6
  11. products/photocrati_nextgen/modules/dynamic_thumbnails/module.dynamic_thumbnails.php +1 -3
  12. products/photocrati_nextgen/modules/fs/package.module.fs.php +3 -0
  13. products/photocrati_nextgen/modules/i18n/lang/nggallery.po +1 -1
  14. products/photocrati_nextgen/modules/lightbox/module.lightbox.php +2 -1
  15. products/photocrati_nextgen/modules/nextgen_addgallery_page/module.nextgen_addgallery_page.php +53 -9
  16. products/photocrati_nextgen/modules/nextgen_addgallery_page/package.module.nextgen_addgallery_page.php +119 -0
  17. products/photocrati_nextgen/modules/nextgen_addgallery_page/static/media-library-import.css +27 -0
  18. products/photocrati_nextgen/modules/nextgen_addgallery_page/static/media-library-import.js +205 -0
  19. products/photocrati_nextgen/modules/nextgen_addgallery_page/static/media-library-import.min.css +1 -0
  20. products/photocrati_nextgen/modules/nextgen_addgallery_page/static/media-library-import.min.js +1 -0
  21. products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/jquery.plupload.queue/jquery.plupload.queue.js +3 -2
  22. products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/jquery.plupload.queue/jquery.plupload.queue.min.js +1 -1
  23. products/photocrati_nextgen/modules/nextgen_addgallery_page/static/styles.css +5 -1
  24. products/photocrati_nextgen/modules/nextgen_addgallery_page/static/styles.min.css +1 -1
  25. products/photocrati_nextgen/modules/nextgen_addgallery_page/templates/import_media_library.php +16 -0
  26. products/photocrati_nextgen/modules/nextgen_addgallery_page/templates/upload_images.php +1 -1
  27. products/photocrati_nextgen/modules/nextgen_admin/static/jquery-ui/jquery-ui-1.10.4.custom.css +33 -11
  28. products/photocrati_nextgen/modules/nextgen_admin/static/jquery-ui/jquery-ui-1.10.4.custom.min.css +1 -1
  29. products/photocrati_nextgen/modules/nextgen_admin/static/nextgen_admin_page.js +6 -1
  30. products/photocrati_nextgen/modules/nextgen_admin/static/nextgen_admin_page.min.js +1 -1
  31. products/photocrati_nextgen/modules/nextgen_basic_album/module.nextgen_basic_album.php +7 -7
  32. products/photocrati_nextgen/modules/nextgen_basic_gallery/module.nextgen_basic_gallery.php +4 -3
  33. products/photocrati_nextgen/modules/nextgen_basic_gallery/package.module.nextgen_basic_gallery.php +0 -1
  34. products/photocrati_nextgen/modules/nextgen_basic_imagebrowser/module.nextgen_basic_imagebrowser.php +7 -3
  35. products/photocrati_nextgen/modules/nextgen_basic_singlepic/module.nextgen_basic_singlepic.php +5 -2
  36. products/photocrati_nextgen/modules/nextgen_basic_tagcloud/module.nextgen_basic_tagcloud.php +7 -3
  37. products/photocrati_nextgen/modules/nextgen_basic_templates/package.module.nextgen_basic_templates.php +1 -1
  38. products/photocrati_nextgen/modules/nextgen_data/package.module.nextgen_data.php +30 -46
  39. products/photocrati_nextgen/modules/nextgen_gallery_display/module.nextgen_gallery_display.php +8 -5
  40. products/photocrati_nextgen/modules/nextgen_gallery_display/package.module.nextgen_gallery_display.php +3 -2
  41. products/photocrati_nextgen/modules/nextgen_settings/module.nextgen_settings.php +7 -23
  42. products/photocrati_nextgen/modules/ngglegacy/admin/album.php +7 -8
  43. products/photocrati_nextgen/modules/ngglegacy/admin/css/nggadmin.css +11 -0
  44. products/photocrati_nextgen/modules/ngglegacy/admin/manage-galleries.php +3 -2
  45. products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php +65 -8
  46. products/photocrati_nextgen/modules/ngglegacy/admin/manage.php +13 -10
  47. products/photocrati_nextgen/modules/ngglegacy/admin/media-upload.php +20 -1
  48. products/photocrati_nextgen/modules/ngglegacy/admin/overview.php +1 -1
  49. products/photocrati_nextgen/modules/ngglegacy/lib/gd.thumbnail.inc.php +2 -2
  50. products/photocrati_nextgen/modules/ngglegacy/lib/imagemagick.inc.php +2 -3
  51. products/photocrati_nextgen/modules/ngglegacy/lib/meta.php +2 -2
  52. products/photocrati_nextgen/modules/ngglegacy/lib/ngg-db.php +0 -9
  53. products/photocrati_nextgen/modules/ngglegacy/lib/post-thumbnail.php +0 -8
  54. products/photocrati_nextgen/modules/ngglegacy/lib/rewrite.php +2 -2
  55. products/photocrati_nextgen/modules/ngglegacy/lib/shortcodes.php +2 -2
  56. products/photocrati_nextgen/modules/ngglegacy/nggallery.php +2 -2
  57. products/photocrati_nextgen/modules/ngglegacy/view/album-compact.php +7 -3
  58. products/photocrati_nextgen/modules/third_party_compat/module.third_party_compat.php +22 -8
  59. products/photocrati_nextgen/modules/wpcli/module.wpcli.php +1 -1
  60. products/photocrati_nextgen/product.photocrati_nextgen.php +7 -7
  61. readme.txt +32 -1
.hg_archival.txt CHANGED
@@ -1,4 +1,4 @@
1
  repo: 2b82bc45fbe039c6f4c9f0c667e9cd1ee4d84cbb
2
- node: 75383700145e5f627c989cb1134fec0030bcf857
3
  branch: default
4
- tag: 2.1.0
1
  repo: 2b82bc45fbe039c6f4c9f0c667e9cd1ee4d84cbb
2
+ node: ca2225de1b2aff836e1fe9d7ff3a0f42820524ce
3
  branch: default
4
+ tag: 2.1.2
.hgsubstate CHANGED
@@ -1 +1 @@
1
- dfaca7487081728ffca20130ed6c379f8fda91b2 pope
1
+ 1195e4b40c1123d4a20aeb29bc66e6daf9f49deb pope
.hgtags CHANGED
@@ -297,3 +297,13 @@ cee255e599142af94ea042d446fa7ce1ae53d20c 2.0.92
297
  37ff3526d2471627b17b51d1bd6568def35e99e0 2.1.0
298
  37ff3526d2471627b17b51d1bd6568def35e99e0 2.1.0
299
  0000000000000000000000000000000000000000 2.1.0
 
 
 
 
 
 
 
 
 
 
297
  37ff3526d2471627b17b51d1bd6568def35e99e0 2.1.0
298
  37ff3526d2471627b17b51d1bd6568def35e99e0 2.1.0
299
  0000000000000000000000000000000000000000 2.1.0
300
+ 0000000000000000000000000000000000000000 2.1.0
301
+ 75383700145e5f627c989cb1134fec0030bcf857 2.1.0
302
+ 1ee69bf2d06e0ac6e8d74ab5fafe00cc66bffe15 2.1.1
303
+ cbe47e4cefc75558b857c50d3efcbc8ce27a5636 2.1.2
304
+ cbe47e4cefc75558b857c50d3efcbc8ce27a5636 2.1.2
305
+ 0000000000000000000000000000000000000000 2.1.2
306
+ 0000000000000000000000000000000000000000 2.1.2
307
+ 2fca6018f85c86f32518b4e601fba84823127dfb 2.1.2
308
+ 2fca6018f85c86f32518b4e601fba84823127dfb 2.1.2
309
+ 0000000000000000000000000000000000000000 2.1.2
changelog.txt CHANGED
@@ -1,6 +1,34 @@
1
  NextGEN Gallery
2
  by Photocrati Media
3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4
  = V2.1.0 - 05.18.2015 =
5
  * NEW: Album breadcrumbs and pagination
6
  * NEW: Ability to override builtin MVC templates
@@ -50,6 +78,9 @@ by Photocrati Media
50
  * Fixed: Warning about missing style.php file on Network Admin -> Gallery page
51
  * Fixed: Warning about getimagesize() failure when backing up an image
52
 
 
 
 
53
  = V2.0.78 - 03.12.2015 =
54
  * Secured: AJAX actions for uploading images and importing folders now uses nonce checks
55
 
1
  NextGEN Gallery
2
  by Photocrati Media
3
 
4
+ = V2.1.2 - 07.20.2015 =
5
+ * NEW: Ability to import from Media Library
6
+ * NEW: Added filter 'ngg_datamapper_table_name'
7
+ * NEW: Added filter `ngg_legacy_template_directories` for legacy template locator (thanks Ross McKay)
8
+ * NEW: Pagination available onManage Images page
9
+ * NEW: Added filter ngg_manage_images_items_per_page_array to control pagination options
10
+ * NEW: Added filters 'ngg_load_frontend_logic' and 'ngg_get_modules_to_load'
11
+ * NEW: Added filter 'ngg_add_page_shortcode' to control Manage Galleries > 'Create new page' content
12
+ * NEW: Added filter 'ngg_manage_albums_items_order'
13
+ * Changed: Removed PHP4 support
14
+ * Fixed: Ability to set NextGEN Image as Featured Image
15
+ * Fixed: Don't use resource manager in download requests for WP Photo Shelter
16
+ * Fixed: Updated custom jQuery-UI styling to resemble WordPress postbox styling
17
+ * Fixed: Styled plupload buttons to resemble WordPress buttons
18
+ * Fixed: Removed 'fixed' class from manage galleries table. Allows columns to adjust to content
19
+ * Fixed: Removed note about flash support and fixed typoe (thanks Rene Wolf)
20
+ * Fixed: Fixed typo in nggallery.po
21
+ * Fixed: Cache results of lookup_columns() to avoid multiple identical queries; thanks go to Alex Bradaric
22
+ * Fixed: Better WP-CPI detection
23
+ * Fixed: Removed unnecessary calls to parent::initialize()
24
+ * Fixed: Adjusted album-compact template to always include p.ngg-album-gallery-image-counter
25
+ * Fixed: Replaced empty gallery rendering in is_feed() with a link
26
+ * Fixed: Removed default settings for imagerotator, which is no longer supported
27
+ * Fixed: Optimizated scanning of images when importing a gallery
28
+ * Fixed: When a gallery is deleted, ensure that DB and filesystem are purged
29
+ * Fixed: Removed Insert Gallery Window box shadow
30
+ * Fixed: Ensure that file_exists() calls are prefixed with @
31
+
32
  = V2.1.0 - 05.18.2015 =
33
  * NEW: Album breadcrumbs and pagination
34
  * NEW: Ability to override builtin MVC templates
78
  * Fixed: Warning about missing style.php file on Network Admin -> Gallery page
79
  * Fixed: Warning about getimagesize() failure when backing up an image
80
 
81
+ = v2.0.79 - 03.20.2015 =
82
+ * Secured: Sanitized C_Displayed_Gallery->_add_find_in_set_column() third parameter
83
+
84
  = V2.0.78 - 03.12.2015 =
85
  * Secured: AJAX actions for uploading images and importing folders now uses nonce checks
86
 
nggallery.php CHANGED
@@ -4,7 +4,7 @@ if(preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die('You
4
  /**
5
  * Plugin Name: NextGEN Gallery by Photocrati
6
  * Description: The most popular gallery plugin for WordPress and one of the most popular plugins of all time with over 12 million downloads.
7
- * Version: 2.1.0
8
  * Author: Photocrati Media
9
  * Plugin URI: http://www.nextgen-gallery.com
10
  * Author URI: http://www.photocrati.com
@@ -363,6 +363,15 @@ class C_NextGEN_Bootstrap
363
  add_filter('http_request_args', array(&$this, 'fix_autoupdate_api_requests'), 10, 2);
364
  add_action('all_admin_notices', array(&$this, 'render_incompatibility_warning'));
365
  }
 
 
 
 
 
 
 
 
 
366
  }
367
 
368
  function fix_autoupdate_api_requests($args, $url)
@@ -574,7 +583,7 @@ class C_NextGEN_Bootstrap
574
  define('NGG_PRODUCT_URL', path_join(str_replace("\\", '/', NGG_PLUGIN_URL), 'products'));
575
  define('NGG_MODULE_URL', path_join(str_replace("\\", '/', NGG_PRODUCT_URL), 'photocrati_nextgen/modules'));
576
  define('NGG_PLUGIN_STARTED_AT', microtime());
577
- define('NGG_PLUGIN_VERSION', '2.1.0');
578
 
579
  if (!defined('NGG_HIDE_STRICT_ERRORS')) {
580
  define('NGG_HIDE_STRICT_ERRORS', TRUE);
4
  /**
5
  * Plugin Name: NextGEN Gallery by Photocrati
6
  * Description: The most popular gallery plugin for WordPress and one of the most popular plugins of all time with over 12 million downloads.
7
+ * Version: 2.1.2
8
  * Author: Photocrati Media
9
  * Plugin URI: http://www.nextgen-gallery.com
10
  * Author URI: http://www.photocrati.com
363
  add_filter('http_request_args', array(&$this, 'fix_autoupdate_api_requests'), 10, 2);
364
  add_action('all_admin_notices', array(&$this, 'render_incompatibility_warning'));
365
  }
366
+
367
+ add_filter('ngg_load_frontend_logic', array($this, 'disable_frontend_logic'), -10, 2);
368
+ }
369
+
370
+ function disable_frontend_logic($enabled, $module_id)
371
+ {
372
+ if (is_admin())
373
+ $enabled = FALSE;
374
+ return $enabled;
375
  }
376
 
377
  function fix_autoupdate_api_requests($args, $url)
583
  define('NGG_PRODUCT_URL', path_join(str_replace("\\", '/', NGG_PLUGIN_URL), 'products'));
584
  define('NGG_MODULE_URL', path_join(str_replace("\\", '/', NGG_PRODUCT_URL), 'photocrati_nextgen/modules'));
585
  define('NGG_PLUGIN_STARTED_AT', microtime());
586
+ define('NGG_PLUGIN_VERSION', '2.1.2');
587
 
588
  if (!defined('NGG_HIDE_STRICT_ERRORS')) {
589
  define('NGG_HIDE_STRICT_ERRORS', TRUE);
pope/lib/class.component_registry.php CHANGED
@@ -318,100 +318,102 @@ class C_Component_Registry
318
 
319
  /**
320
  * Retrieves a list of instantiated module ids, in their "loaded" order as defined by a product
 
321
  * @return array
322
  */
323
- function get_module_list($for_product_id=FALSE)
324
- {
325
- $retval = $module_list = array();
326
  // As of May 1, 2015, there's a new standard. A product will provide get_provided_modules() and get_modules_to_load().
327
 
328
- // As of Feb 10, 2015, there's no standard way across Pope products to an "ordered" list of modules
329
- // that the product provides.
330
- //
331
- // The "standard" going forward will insist that all Product classes will provide either:
332
- // A) a static property called "modules"
333
- // B) an instance method called "define_modules", which returns a list of modules, and as well, sets
334
- // a static property called "modules'.
335
- //
336
- // IMPORTANT!
337
- // The Photocrati Theme, as of version 4.1.8, doesn't follow this standard. But both NextGEN Pro and Plus do.
338
-
339
- // Following the standard above, collect all modules provided by a product
340
- $problematic_product_id = FALSE;
341
- foreach ($this->get_product_list() as $product_id) {
342
-
343
- // Try getting the list of modules using the "standard" described above
344
- $obj = $this->get_product($product_id);
345
- try{
346
- $klass = new ReflectionClass($obj);
347
- if ($klass->hasMethod('get_modules_to_load')) {
348
- $modules = $obj->get_modules_to_load();
349
- }
350
- elseif ($klass->hasProperty('modules')) {
351
- $modules = $klass->getStaticPropertyValue('modules');
352
- }
353
-
354
- if (!$modules && $klass->hasMethod('define_modules')) {
355
- $modules = $obj->define_modules();
356
- if ($klass->hasProperty('modules')) {
357
- $modules = $klass->getStaticPropertyValue('modules');
358
- }
359
- }
360
 
361
- $module_list[$product_id] = $modules;
362
- }
 
 
 
 
 
363
 
364
- // We've encountered a product that doesn't follow the standard. For these exceptions, we'll have to
365
- // make an educated guess - if the module path is in the product's default module path, we know that
366
- // it belongs to the product
367
- catch (ReflectionException $ex) {
368
- $product_path = $this->get_product_module_path($product_id);
369
- $modules = array();
370
- foreach ($this->_modules as $module_id => $module) {
371
- if (strpos($this->get_module_path($module_id), $product_path) !== FALSE) {
372
- $modules[] = $module_id;
373
- }
374
- }
375
- $module_list[$product_id] = $modules;
376
 
377
- // Did our educated guess work?
378
- if (!$modules) $problematic_product_id = $product_id;
379
- }
380
- }
 
 
 
 
 
381
 
382
- // If we have a problematic product, that is, one that we can't find it's ordered list of modules
383
- // that it provides, then we have one last fallback: get a list of modules that Pope is aware of, but hasn't
384
- // added to $module_list[$product_id] yet
385
- if ($problematic_product_id) {
386
- $modules = array();
387
- foreach (array_keys($this->_modules) as $module_id) {
388
- $assigned = FALSE;
389
- foreach (array_keys($module_list) as $product_id) {
390
- if (in_array($module_id, $module_list[$product_id])) {
391
- $assigned =TRUE;
392
- break;
393
- }
394
- }
395
- if (!$assigned) $modules[] = $module_id;
396
- }
397
- $module_list[$problematic_product_id] = $modules;
398
- }
399
 
400
- // Now that we know which products provide which modules, we can serve the request.
401
- if (!$for_product_id) {
402
- foreach (array_values($module_list) as $modules) {
403
- $retval = array_merge($retval, $modules);
404
- }
405
- }
406
- else $retval = $module_list[$for_product_id];
 
 
 
 
 
 
 
 
 
 
407
 
408
- // Final fallback...if all else fails, just return the list of all modules
409
- // that Pope is aware of
410
- if (!$retval) $retval = array_keys($this->_modules);
 
 
 
 
411
 
 
 
 
412
 
413
- return $retval;
414
- }
 
415
 
416
  function get_loaded_module_list()
417
  {
318
 
319
  /**
320
  * Retrieves a list of instantiated module ids, in their "loaded" order as defined by a product
321
+ *
322
  * @return array
323
  */
324
+ function get_module_list($for_product_id=FALSE)
325
+ {
326
+ $retval = $module_list = array();
327
  // As of May 1, 2015, there's a new standard. A product will provide get_provided_modules() and get_modules_to_load().
328
 
329
+ // As of Feb 10, 2015, there's no standard way across Pope products to an "ordered" list of modules
330
+ // that the product provides.
331
+ //
332
+ // The "standard" going forward will insist that all Product classes will provide either:
333
+ // A) a static property called "modules"
334
+ // B) an instance method called "define_modules", which returns a list of modules, and as well, sets
335
+ // a static property called "modules'.
336
+ //
337
+ // IMPORTANT!
338
+ // The Photocrati Theme, as of version 4.1.8, doesn't follow this standard. But both NextGEN Pro and Plus do.
339
+
340
+ // Following the standard above, collect all modules provided by a product
341
+ $problematic_product_id = FALSE;
342
+ foreach ($this->get_product_list() as $product_id) {
343
+ $modules = array();
344
+
345
+ // Try getting the list of modules using the "standard" described above
346
+ $obj = $this->get_product($product_id);
347
+ try{
348
+ $klass = new ReflectionClass($obj);
349
+ if ($klass->hasMethod('get_modules_to_load')) {
350
+ $modules = $obj->get_modules_provided();
351
+ }
352
+ elseif ($klass->hasProperty('modules')) {
353
+ $modules = $klass->getStaticPropertyValue('modules');
354
+ }
 
 
 
 
 
 
355
 
356
+ if (!$modules && $klass->hasMethod('define_modules')) {
357
+ $modules = $obj->define_modules();
358
+ if ($klass->hasProperty('modules')) {
359
+ $modules = $klass->getStaticPropertyValue('modules');
360
+ }
361
+ }
362
+ }
363
 
364
+ // We've encountered a product that doesn't follow the standard. For these exceptions, we'll have to
365
+ // make an educated guess - if the module path is in the product's default module path, we know that
366
+ // it belongs to the product
367
+ catch (ReflectionException $ex) {
368
+ $modules = array();
369
+ }
 
 
 
 
 
 
370
 
371
+ if (!$modules) {
372
+ $product_path = $this->get_product_module_path($product_id);
373
+ foreach ($this->_modules as $module_id => $module) {
374
+ if (strpos($this->get_module_path($module_id), $product_path) !== FALSE) {
375
+ $modules[] = $module_id;
376
+ }
377
+ }
378
+ if (!$modules) $problematic_product_id = $product_id;
379
+ }
380
 
381
+ $module_list[$product_id] = $modules;
382
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
383
 
384
+ // If we have a problematic product, that is, one that we can't find it's ordered list of modules
385
+ // that it provides, then we have one last fallback: get a list of modules that Pope is aware of, but hasn't
386
+ // added to $module_list[$product_id] yet
387
+ if ($problematic_product_id) {
388
+ $modules = array();
389
+ foreach (array_keys($this->_modules) as $module_id) {
390
+ $assigned = FALSE;
391
+ foreach (array_keys($module_list) as $product_id) {
392
+ if (in_array($module_id, $module_list[$product_id])) {
393
+ $assigned =TRUE;
394
+ break;
395
+ }
396
+ }
397
+ if (!$assigned) $modules[] = $module_id;
398
+ }
399
+ $module_list[$problematic_product_id] = $modules;
400
+ }
401
 
402
+ // Now that we know which products provide which modules, we can serve the request.
403
+ if (!$for_product_id) {
404
+ foreach (array_values($module_list) as $modules) {
405
+ $retval = array_merge($retval, $modules);
406
+ }
407
+ }
408
+ else $retval = $module_list[$for_product_id];
409
 
410
+ // Final fallback...if all else fails, just return the list of all modules
411
+ // that Pope is aware of
412
+ if (!$retval) $retval = array_keys($this->_modules);
413
 
414
+
415
+ return $retval;
416
+ }
417
 
418
  function get_loaded_module_list()
419
  {
pope/lib/class.extensibleobject.php CHANGED
@@ -511,6 +511,8 @@ class ExtensibleObject extends PopeHelpers
511
  );
512
  }
513
  elseif ($this->_throw_error) {
 
 
514
  throw new Exception("`{$method}` not defined for " . get_class());
515
  }
516
  }
511
  );
512
  }
513
  elseif ($this->_throw_error) {
514
+ if (defined('POPE_DEBUG') && POPE_DEBUG)
515
+ print_r(debug_backtrace());
516
  throw new Exception("`{$method}` not defined for " . get_class());
517
  }
518
  }
products/photocrati_nextgen/modules/attach_to_post/static/attach_to_post_dialog.css CHANGED
@@ -58,10 +58,6 @@
58
  -webkit-border-radius: 0px;
59
  -moz-border-radius: 0px;
60
  border-radius: 0px;
61
- border: 1px solid #969696;
62
  background: rgba(255, 255, 255, 0.6);
63
- -webkit-box-shadow: #B3B3B3 5px 5px 5px;
64
- -moz-box-shadow: #B3B3B3 5px 5px 5px;
65
- box-shadow: #B3B3B3 2px 2px 5px;
66
  border-top: none;
67
  }
58
  -webkit-border-radius: 0px;
59
  -moz-border-radius: 0px;
60
  border-radius: 0px;
 
61
  background: rgba(255, 255, 255, 0.6);
 
 
 
62
  border-top: none;
63
  }
products/photocrati_nextgen/modules/attach_to_post/static/attach_to_post_dialog.min.css CHANGED
@@ -1 +1 @@
1
- #ngg_attach_to_post_dialog-title{display:none}#ngg_attach_to_post_dialog-head{min-height:0;height:0}#ngg_attach_to_post_dialog-head .mce-close{position:absolute;top:6px !important;right:20px !important;z-index:2}.ngg_attach_to_post_window{position:relative;border:0 !important}.ngg_attach_to_post_window .mceResize,.ngg_attach_to_post_window .mceTop,.ngg_attach_to_post_window .mceBottom,.ngg_attach_to_post_window .mceLeft,.ngg_attach_to_post_window .mceRight,.ngg_attach_to_post_window .mceCenter{background:transparent !important;border:0 !important}.ngg_attach_to_post_window .mceMiddle span{padding-top:6px !important}.ngg_attach_to_post_window .mceTop{display:block !important;height:0 !important;font-size:0 !important}.ngg_attach_to_post_window .mceClose{background:url('uploader-icons.png') !important;display:block !important;margin:0 !important;padding:0 !important;width:15px !important;height:15px !important;background-position:-100px 0 !important;position:absolute !important;top:44px !important;right:30px !important}#ngg_attach_to_post_dialog-body{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;border:1px solid #969696;background:rgba(255,255,255,.6);-webkit-box-shadow:#b3b3b3 5px 5px 5px;-moz-box-shadow:#b3b3b3 5px 5px 5px;box-shadow:#b3b3b3 2px 2px 5px;border-top:0}
1
+ #ngg_attach_to_post_dialog-title{display:none}#ngg_attach_to_post_dialog-head{min-height:0;height:0}#ngg_attach_to_post_dialog-head .mce-close{position:absolute;top:6px !important;right:20px !important;z-index:2}.ngg_attach_to_post_window{position:relative;border:0 !important}.ngg_attach_to_post_window .mceResize,.ngg_attach_to_post_window .mceTop,.ngg_attach_to_post_window .mceBottom,.ngg_attach_to_post_window .mceLeft,.ngg_attach_to_post_window .mceRight,.ngg_attach_to_post_window .mceCenter{background:transparent !important;border:0 !important}.ngg_attach_to_post_window .mceMiddle span{padding-top:6px !important}.ngg_attach_to_post_window .mceTop{display:block !important;height:0 !important;font-size:0 !important}.ngg_attach_to_post_window .mceClose{background:url('uploader-icons.png') !important;display:block !important;margin:0 !important;padding:0 !important;width:15px !important;height:15px !important;background-position:-100px 0 !important;position:absolute !important;top:44px !important;right:30px !important}#ngg_attach_to_post_dialog-body{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;background:rgba(255,255,255,.6);border-top:0}
products/photocrati_nextgen/modules/datamapper/package.module.datamapper.php CHANGED
@@ -545,18 +545,24 @@ class C_DataMapper_Driver_Base extends C_Component
545
  public function get_table_name()
546
  {
547
  global $table_prefix;
548
- return $table_prefix . $this->_object_name;
549
  }
550
  /**
551
  * Looks up using SQL the columns existing in the database
552
  */
553
  public function lookup_columns()
554
  {
555
- global $wpdb;
556
- $this->_table_columns = array();
557
- $sql = "SHOW COLUMNS FROM `{$this->get_table_name()}`";
558
- foreach ($wpdb->get_results($sql) as $row) {
559
- $this->_table_columns[] = $row->Field;
 
 
 
 
 
 
560
  }
561
  return $this->_table_columns;
562
  }
545
  public function get_table_name()
546
  {
547
  global $table_prefix;
548
+ return apply_filters('ngg_datamapper_table_name', $table_prefix . $this->_object_name, $this->_object_name);
549
  }
550
  /**
551
  * Looks up using SQL the columns existing in the database
552
  */
553
  public function lookup_columns()
554
  {
555
+ // Avoid doing multiple SHOW COLUMNS if we can help it
556
+ $key = C_Photocrati_Transient_Manager::create_key('col_in_' . $this->get_table_name(), 'columns');
557
+ $this->_table_columns = C_Photocrati_Transient_Manager::fetch($key, FALSE);
558
+ if (!$this->_table_columns) {
559
+ global $wpdb;
560
+ $this->_table_columns = array();
561
+ $sql = "SHOW COLUMNS FROM `{$this->get_table_name()}`";
562
+ foreach ($wpdb->get_results($sql) as $row) {
563
+ $this->_table_columns[] = $row->Field;
564
+ }
565
+ C_Photocrati_Transient_Manager::update($key, $this->_table_columns);
566
  }
567
  return $this->_table_columns;
568
  }
products/photocrati_nextgen/modules/dynamic_thumbnails/module.dynamic_thumbnails.php CHANGED
@@ -30,10 +30,8 @@ class M_Dynamic_Thumbnails extends C_Base_Module
30
  function _register_utilities()
31
  {
32
  $this->get_registry()->add_utility('I_Dynamic_Thumbnails_Manager', 'C_Dynamic_Thumbnails_Manager');
33
- if (!is_admin()) {
34
  $this->get_registry()->add_utility('I_Dynamic_Thumbnails_Controller', 'C_Dynamic_Thumbnails_Controller');
35
- }
36
-
37
  }
38
 
39
  function _register_hooks()
30
  function _register_utilities()
31
  {
32
  $this->get_registry()->add_utility('I_Dynamic_Thumbnails_Manager', 'C_Dynamic_Thumbnails_Manager');
33
+ if (apply_filters('ngg_load_frontend_logic', TRUE, $this->module_id))
34
  $this->get_registry()->add_utility('I_Dynamic_Thumbnails_Controller', 'C_Dynamic_Thumbnails_Controller');
 
 
35
  }
36
 
37
  function _register_hooks()
products/photocrati_nextgen/modules/fs/package.module.fs.php CHANGED
@@ -222,6 +222,9 @@ class Mixin_Fs_Instance_Methods extends Mixin
222
  @unlink($abspath);
223
  } else {
224
  foreach (scandir($abspath) as $relpath) {
 
 
 
225
  $sub_abspath = $this->join_paths($abspath, $relpath);
226
  $this->object->delete($sub_abspath);
227
  }
222
  @unlink($abspath);
223
  } else {
224
  foreach (scandir($abspath) as $relpath) {
225
+ if (in_array($relpath, array('.', '..'))) {
226
+ continue;
227
+ }
228
  $sub_abspath = $this->join_paths($abspath, $relpath);
229
  $this->object->delete($sub_abspath);
230
  }
products/photocrati_nextgen/modules/i18n/lang/nggallery.po CHANGED
@@ -448,7 +448,7 @@ msgid "Create a new gallery"
448
  msgstr ""
449
 
450
  #: products/photocrati_nextgen/modules/nextgen_addgallery_page/templates/upload_images.php:13
451
- msgid "You browser doesn't have Flash, Silverlight, HTML5, or HTML4 support."
452
  msgstr ""
453
 
454
  #: products/photocrati_nextgen/modules/nextgen_addgallery_page/templates/upload_images.php:114
448
  msgstr ""
449
 
450
  #: products/photocrati_nextgen/modules/nextgen_addgallery_page/templates/upload_images.php:13
451
+ msgid "Your browser doesn't have Flash, Silverlight, HTML5, or HTML4 support."
452
  msgstr ""
453
 
454
  #: products/photocrati_nextgen/modules/nextgen_addgallery_page/templates/upload_images.php:114
products/photocrati_nextgen/modules/lightbox/module.lightbox.php CHANGED
@@ -28,7 +28,8 @@ class M_Lightbox extends C_Base_Module
28
  */
29
  function _register_hooks()
30
  {
31
- if (!is_admin()) add_action('wp_enqueue_scripts', array(C_Lightbox_Library_Manager::get_instance(), 'maybe_enqueue'));
 
32
  add_action('init', array(&$this, '_register_custom_post_type'));
33
  }
34
 
28
  */
29
  function _register_hooks()
30
  {
31
+ if (!is_admin())
32
+ add_action('wp_enqueue_scripts', array(C_Lightbox_Library_Manager::get_instance(), 'maybe_enqueue'));
33
  add_action('init', array(&$this, '_register_custom_post_type'));
34
  }
35
 
products/photocrati_nextgen/modules/nextgen_addgallery_page/module.nextgen_addgallery_page.php CHANGED
@@ -28,12 +28,16 @@ class M_NextGen_AddGallery_Page extends C_Base_Module
28
  $settings = C_NextGen_Settings::get_instance();
29
  $forms->add_form(NGG_ADD_GALLERY_SLUG, 'upload_images');
30
  if (!is_multisite() || (is_multisite() && $settings->get('wpmuImportFolder')))
 
 
31
  $forms->add_form(NGG_ADD_GALLERY_SLUG, 'import_folder');
 
32
  }
33
 
34
  function get_type_list()
35
  {
36
  return array(
 
37
  'A_Import_Folder_Form' => 'adapter.import_folder_form.php',
38
  'A_Nextgen_Addgallery_Ajax' => 'adapter.nextgen_addgallery_ajax.php',
39
  'A_Nextgen_Addgallery_Controller' => 'adapter.nextgen_addgallery_controller.php',
@@ -52,7 +56,10 @@ class M_NextGen_AddGallery_Page extends C_Base_Module
52
  $this->get_registry()->add_adapter('I_NextGen_Admin_Page', 'A_NextGen_AddGallery_Controller', NGG_ADD_GALLERY_SLUG);
53
  $this->get_registry()->add_adapter('I_Form', 'A_Upload_Images_Form', 'upload_images');
54
  if (!is_multisite() || (is_multisite() && C_NextGen_Settings::get_instance()->get('wpmuImportFolder')))
 
55
  $this->get_registry()->add_adapter('I_Form', 'A_Import_Folder_Form', 'import_folder');
 
 
56
  }
57
  }
58
 
@@ -63,16 +70,53 @@ class M_NextGen_AddGallery_Page extends C_Base_Module
63
 
64
  function register_scripts()
65
  {
66
- if (is_admin()) {
 
67
  $router = C_Router::get_instance();
68
- wp_register_script('browserplus', $router->get_static_url('photocrati-nextgen_addgallery_page#browserplus-2.4.21.min.js'));
69
- wp_register_script('ngg.plupload.moxie', $router->get_static_url('photocrati-nextgen_addgallery_page#plupload-2.1.1/moxie.min.js'));
70
- wp_register_script('ngg.plupload.full', $router->get_static_url('photocrati-nextgen_addgallery_page#plupload-2.1.1/plupload.dev.min.js'), array('ngg.plupload.moxie'));
71
- wp_register_script('ngg.plupload.queue', $router->get_static_url('photocrati-nextgen_addgallery_page#plupload-2.1.1/jquery.plupload.queue/jquery.plupload.queue.min.js'), array('ngg.plupload.full'));
72
- wp_register_style('ngg.plupload.queue', $router->get_static_url('photocrati-nextgen_addgallery_page#plupload-2.1.1/jquery.plupload.queue/css/jquery.plupload.queue.css'));
73
- wp_register_style('nextgen_addgallery_page', $router->get_static_url('photocrati-nextgen_addgallery_page#styles.css'));
74
- wp_register_script('jquery.filetree', $router->get_static_url('photocrati-nextgen_addgallery_page#jquery.filetree/jquery.filetree.js'), array('jquery'));
75
- wp_register_style('jquery.filetree', $router->get_static_url('photocrati-nextgen_addgallery_page#jquery.filetree/jquery.filetree.css'));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
76
  }
77
  }
78
  }
28
  $settings = C_NextGen_Settings::get_instance();
29
  $forms->add_form(NGG_ADD_GALLERY_SLUG, 'upload_images');
30
  if (!is_multisite() || (is_multisite() && $settings->get('wpmuImportFolder')))
31
+ {
32
+ $forms->add_form(NGG_ADD_GALLERY_SLUG, 'import_media_library');
33
  $forms->add_form(NGG_ADD_GALLERY_SLUG, 'import_folder');
34
+ }
35
  }
36
 
37
  function get_type_list()
38
  {
39
  return array(
40
+ 'A_Import_Media_Library_Form' => 'adapter.import_media_library_form.php',
41
  'A_Import_Folder_Form' => 'adapter.import_folder_form.php',
42
  'A_Nextgen_Addgallery_Ajax' => 'adapter.nextgen_addgallery_ajax.php',
43
  'A_Nextgen_Addgallery_Controller' => 'adapter.nextgen_addgallery_controller.php',
56
  $this->get_registry()->add_adapter('I_NextGen_Admin_Page', 'A_NextGen_AddGallery_Controller', NGG_ADD_GALLERY_SLUG);
57
  $this->get_registry()->add_adapter('I_Form', 'A_Upload_Images_Form', 'upload_images');
58
  if (!is_multisite() || (is_multisite() && C_NextGen_Settings::get_instance()->get('wpmuImportFolder')))
59
+ {
60
  $this->get_registry()->add_adapter('I_Form', 'A_Import_Folder_Form', 'import_folder');
61
+ $this->get_registry()->add_adapter('I_Form', 'A_Import_Media_Library_Form', 'import_media_library');
62
+ }
63
  }
64
  }
65
 
70
 
71
  function register_scripts()
72
  {
73
+ if (is_admin())
74
+ {
75
  $router = C_Router::get_instance();
76
+ wp_register_script(
77
+ 'browserplus',
78
+ $router->get_static_url('photocrati-nextgen_addgallery_page#browserplus-2.4.21.min.js')
79
+ );
80
+ wp_register_script(
81
+ 'ngg.plupload.moxie',
82
+ $router->get_static_url('photocrati-nextgen_addgallery_page#plupload-2.1.1/moxie.min.js')
83
+ );
84
+ wp_register_script(
85
+ 'ngg.plupload.full',
86
+ $router->get_static_url('photocrati-nextgen_addgallery_page#plupload-2.1.1/plupload.dev.min.js'),
87
+ array('ngg.plupload.moxie')
88
+ );
89
+ wp_register_script(
90
+ 'ngg.plupload.queue',
91
+ $router->get_static_url('photocrati-nextgen_addgallery_page#plupload-2.1.1/jquery.plupload.queue/jquery.plupload.queue.min.js'),
92
+ array('ngg.plupload.full')
93
+ );
94
+ wp_register_style(
95
+ 'ngg.plupload.queue',
96
+ $router->get_static_url('photocrati-nextgen_addgallery_page#plupload-2.1.1/jquery.plupload.queue/css/jquery.plupload.queue.css')
97
+ );
98
+ wp_register_style(
99
+ 'nextgen_addgallery_page',
100
+ $router->get_static_url('photocrati-nextgen_addgallery_page#styles.css')
101
+ );
102
+ wp_register_script(
103
+ 'jquery.filetree',
104
+ $router->get_static_url('photocrati-nextgen_addgallery_page#jquery.filetree/jquery.filetree.js'),
105
+ array('jquery')
106
+ );
107
+ wp_register_style(
108
+ 'jquery.filetree',
109
+ $router->get_static_url('photocrati-nextgen_addgallery_page#jquery.filetree/jquery.filetree.css')
110
+ );
111
+ wp_register_script(
112
+ 'nextgen_media_library_import-js',
113
+ $router->get_static_url('photocrati-nextgen_addgallery_page#media-library-import.js'),
114
+ array('jquery', 'ngg_progressbar')
115
+ );
116
+ wp_register_style(
117
+ 'nextgen_media_library_import-css',
118
+ $router->get_static_url('photocrati-nextgen_addgallery_page#media-library-import.css')
119
+ );
120
  }
121
  }
122
  }
products/photocrati_nextgen/modules/nextgen_addgallery_page/package.module.nextgen_addgallery_page.php CHANGED
@@ -17,6 +17,48 @@ class A_Import_Folder_Form extends Mixin
17
  return $this->object->render_partial('photocrati-nextgen_addgallery_page#import_folder', array('browse_sec_token' => C_WordPress_Security_Manager::get_instance()->get_request_token('nextgen_upload_image'), 'import_sec_token' => C_WordPress_Security_Manager::get_instance()->get_request_token('nextgen_upload_image')), TRUE);
18
  }
19
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
20
  class A_NextGen_AddGallery_Ajax extends Mixin
21
  {
22
  public function cookie_dump_action()
@@ -177,6 +219,83 @@ class A_NextGen_AddGallery_Ajax extends Mixin
177
  }
178
  return $retval;
179
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
180
  }
181
  class A_NextGen_AddGallery_Controller extends Mixin
182
  {
17
  return $this->object->render_partial('photocrati-nextgen_addgallery_page#import_folder', array('browse_sec_token' => C_WordPress_Security_Manager::get_instance()->get_request_token('nextgen_upload_image'), 'import_sec_token' => C_WordPress_Security_Manager::get_instance()->get_request_token('nextgen_upload_image')), TRUE);
18
  }
19
  }
20
+ class A_Import_Media_Library_Form extends Mixin
21
+ {
22
+ public function get_title()
23
+ {
24
+ return __('Import from WordPress Media Library', 'nggallery');
25
+ }
26
+ public function enqueue_static_resources()
27
+ {
28
+ wp_enqueue_media();
29
+ wp_enqueue_script('nextgen_media_library_import-js');
30
+ wp_enqueue_style('nextgen_media_library_import-css');
31
+ $i18n_array = array('title' => __('Import Images into NextGen Gallery', 'nggallery'), 'import_multiple' => __('Import %s images', 'nggallery'), 'import_singular' => __('Import 1 image', 'nggallery'), 'imported_multiple' => __('%s images were uploaded successfully', 'nggallery'), 'imported_singular' => __('1 image was uploaded successfully', 'nggallery'), 'imported_none' => __('0 images were uploaded', 'nggallery'), 'progress_title' => __('Importing gallery', 'nggallery'), 'in_progress' => __('In Progress...', 'nggallery'), 'gritter_title' => __('Upload complete', 'nggallery'), 'gritter_error' => __('An unexpected error occured. This is most likely due to a server misconfiguration. Check your PHP error log or ask your hosting provider for assistance.', 'nggallery'));
32
+ foreach (C_WordPress_Security_Manager::get_instance()->get_request_token('nextgen_upload_image')->get_request_list() as $name => $value) {
33
+ $i18n_array['sectoken'][$name] = $value;
34
+ }
35
+ wp_localize_script('nextgen_media_library_import-js', 'ngg_importml_i18n', $i18n_array);
36
+ }
37
+ public function render()
38
+ {
39
+ $i18n = array('select-images-to-continue' => __('Please make a selection to continue', 'nggallery'), 'select-opener' => __('Select images', 'nggallery'), 'selected-image-import' => __('Import %d image(s)', 'nggallery'));
40
+ return $this->object->render_partial('photocrati-nextgen_addgallery_page#import_media_library', array('i18n' => $i18n, 'galleries' => $this->object->get_galleries()), TRUE);
41
+ }
42
+ public function get_galleries()
43
+ {
44
+ $security = $this->get_registry()->get_utility('I_Security_Manager');
45
+ $sec_actor = $security->get_current_actor();
46
+ $galleries = array();
47
+ if ($sec_actor->is_allowed('nextgen_edit_gallery')) {
48
+ $galleries = C_Gallery_Mapper::get_instance()->find_all();
49
+ if (!$sec_actor->is_allowed('nextgen_edit_gallery_unowned')) {
50
+ $galleries_all = $galleries;
51
+ $galleries = array();
52
+ foreach ($galleries_all as $gallery) {
53
+ if ($sec_actor->is_user() && $sec_actor->get_entity_id() == (int) $gallery->author) {
54
+ $galleries[] = $gallery;
55
+ }
56
+ }
57
+ }
58
+ }
59
+ return $galleries;
60
+ }
61
+ }
62
  class A_NextGen_AddGallery_Ajax extends Mixin
63
  {
64
  public function cookie_dump_action()
219
  }
220
  return $retval;
221
  }
222
+ public function import_media_library_action()
223
+ {
224
+ $retval = array();
225
+ $created_gallery = FALSE;
226
+ $gallery_id = intval($this->param('gallery_id'));
227
+ $gallery_name = urldecode($this->param('gallery_name'));
228
+ $gallery_mapper = C_Gallery_Mapper::get_instance();
229
+ $image_mapper = C_Image_Mapper::get_instance();
230
+ $attachment_ids = $this->param('attachment_ids');
231
+ if ($this->validate_ajax_request('nextgen_upload_image', TRUE)) {
232
+ if (empty($attachment_ids) || !is_array($attachment_ids)) {
233
+ $retval['error'] = __('An unexpected error occured.', 'nggallery');
234
+ }
235
+ if (empty($retval['error']) && $gallery_id == 0) {
236
+ if (strlen($gallery_name) > 0) {
237
+ $gallery = $gallery_mapper->create(array('title' => $gallery_name));
238
+ if (!$gallery->save()) {
239
+ $retval['error'] = $gallery->get_errors();
240
+ } else {
241
+ $created_gallery = TRUE;
242
+ $gallery_id = $gallery->id();
243
+ }
244
+ } else {
245
+ $retval['error'] = __('No gallery name specified', 'nggallery');
246
+ }
247
+ }
248
+ if (empty($retval['error'])) {
249
+ $retval['gallery_id'] = $gallery_id;
250
+ $storage = C_Gallery_Storage::get_instance();
251
+ foreach ($attachment_ids as $id) {
252
+ try {
253
+ $abspath = get_attached_file($id);
254
+ $file_data = @file_get_contents($abspath);
255
+ $file_name = M_I18n::mb_basename($abspath);
256
+ $attachment = get_post($id);
257
+ if (empty($file_data)) {
258
+ $retval['error'] = __('Image generation failed', 'nggallery');
259
+ break;
260
+ }
261
+ $image = $storage->upload_base64_image($gallery_id, $file_data, $file_name);
262
+ if ($image) {
263
+ // Potentially import metadata from WordPress
264
+ $image = $image_mapper->find($image->id());
265
+ if (!empty($attachment->post_excerpt)) {
266
+ $image->alttext = $attachment->post_excerpt;
267
+ }
268
+ if (!empty($attachment->post_content)) {
269
+ $image->description = $attachment->post_content;
270
+ }
271
+ $image = apply_filters('ngg_medialibrary_imported_image', $image, $attachment);
272
+ $image_mapper->save($image);
273
+ } else {
274
+ $retval['error'] = __('Image generation failed', 'nggallery');
275
+ break;
276
+ }
277
+ $retval['image_ids'][] = $image->{$image->id_field};
278
+ } catch (E_NggErrorException $ex) {
279
+ $retval['error'] = $ex->getMessage();
280
+ if ($created_gallery) {
281
+ $gallery_mapper->destroy($gallery_id);
282
+ }
283
+ } catch (Exception $ex) {
284
+ $retval['error'] = __('An unexpected error occured.', 'nggallery');
285
+ $retval['error_details'] = $ex->getMessage();
286
+ }
287
+ }
288
+ }
289
+ } else {
290
+ $retval['error'] = __('No permissions to upload images. Try refreshing the page or ensuring that your user account has sufficient roles/privileges.', 'nggallery');
291
+ }
292
+ if (!empty($retval['error'])) {
293
+ return $retval;
294
+ } else {
295
+ $retval['gallery_name'] = esc_html($gallery_name);
296
+ }
297
+ return $retval;
298
+ }
299
  }
300
  class A_NextGen_AddGallery_Controller extends Mixin
301
  {
products/photocrati_nextgen/modules/nextgen_addgallery_page/static/media-library-import.css ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #ngg-importML-selected-image-import.hidden {
2
+ display: none;
3
+ }
4
+
5
+ #ngg-importML-select-opener.hidden {
6
+ display: none;
7
+ }
8
+
9
+ #ngg-importML-gallery-selection {
10
+ display: inline-block;
11
+ }
12
+
13
+ #ngg-importML-selected-image-import {
14
+ vertical-align: middle;
15
+ }
16
+
17
+ #ngg-importML-select-opener {
18
+ vertical-align: middle;
19
+ }
20
+
21
+ #ngg-importML-gallery-name {
22
+ vertical-align: middle;
23
+ }
24
+
25
+ #ngg-importML-gallery-select {
26
+ vertical-align: middle;
27
+ }
products/photocrati_nextgen/modules/nextgen_addgallery_page/static/media-library-import.js ADDED
@@ -0,0 +1,205 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ (function($) {
2
+ var ngg_importml = {
3
+
4
+ ml_data: null,
5
+ import_ids: [],
6
+
7
+ selectors: {
8
+ ml_btn_import: $('#ngg-importML-selected-image-import'),
9
+ ml_btn_select: $('#ngg-importML-select-opener'),
10
+ gallery_select: $('#ngg-importML-gallery-id'),
11
+ gallery_name: $('#ngg-importML-gallery-name')
12
+ },
13
+
14
+ initialize: function() {
15
+ this.methods.initialize();
16
+ this.methods.set_events();
17
+ },
18
+
19
+ methods: {
20
+
21
+ initialize: function() {
22
+ ngg_importml.ml_dialog = top.wp.media.frames.ngg_importml = top.wp.media({
23
+ multiple: true,
24
+ title: ngg_importml_i18n.title,
25
+ button: { text: ngg_importml_i18n.button_text }
26
+ });
27
+ },
28
+
29
+ urlencode: function(str) {
30
+ str = (str + '').toString();
31
+ return encodeURIComponent(str)
32
+ .replace(/!/g, '%21')
33
+ .replace(/'/g, '%27')
34
+ .replace(/\(/g, '%28')
35
+ .replace(/\)/g, '%29')
36
+ .replace(/\*/g, '%2A')
37
+ .replace(/%20/g, '+');
38
+ },
39
+
40
+ import: {
41
+
42
+ import_count: 0,
43
+
44
+ params: {
45
+ action: 'import_media_library'
46
+ },
47
+
48
+ start: function() {
49
+ // prevent the impatient from causing simultaneous ongoing posts
50
+ ngg_importml.selectors.ml_btn_import.attr('disabled', true);
51
+ ngg_importml.selectors.ml_btn_select.attr('disabled', true);
52
+
53
+ ngg_importml.methods.import.params.gallery_id = ngg_importml.methods.urlencode(ngg_importml.selectors.gallery_select.val());
54
+ ngg_importml.methods.import.params.gallery_name = ngg_importml.methods.urlencode(ngg_importml.selectors.gallery_name.val());
55
+
56
+ Object.keys(ngg_importml_i18n.sectoken).forEach(function(key) {
57
+ ngg_importml.methods.import.params[key] = ngg_importml_i18n.sectoken[key];
58
+ });
59
+
60
+ ngg_importml.progress_bar = $.nggProgressBar({
61
+ title: ngg_importml_i18n.progress_title,
62
+ infinite: true,
63
+ starting_value: ngg_importml_i18n.in_progress
64
+ });
65
+
66
+ $(ngg_importml).trigger('send_ajax');
67
+ },
68
+
69
+ done: function() {
70
+ ngg_importml.progress_bar.close(100);
71
+ ngg_importml.selectors.ml_btn_import.attr('disabled', false);
72
+ ngg_importml.selectors.ml_btn_select.attr('disabled', false);
73
+
74
+ delete ngg_importml.methods.import.params.gallery_id;
75
+ delete ngg_importml.methods.import.params.gallery_name;
76
+
77
+ var msg = ngg_importml_i18n.imported_multiple.replace('%s', ngg_importml.methods.import.import_count);
78
+ if (ngg_importml.methods.import.import_count == 1) {
79
+ msg = ngg_importml_i18n.imported_singular;
80
+ }
81
+
82
+ $.gritter.add({
83
+ title: ngg_importml_i18n.gritter_title,
84
+ text: msg,
85
+ sticky: true
86
+ });
87
+
88
+ ngg_importml.methods.import.import_count = 0;
89
+
90
+ // Empty the current selection & revert to the default state
91
+ ngg_importml.ml_dialog.trigger('reset');
92
+ ngg_importml.import_ids = [];
93
+ ngg_importml.selectors.ml_btn_import.fadeOut();
94
+ },
95
+
96
+ send_ajax: function() {
97
+ var params = ngg_importml.methods.import.params;
98
+ params.attachment_ids = [ngg_importml.import_ids.pop()];
99
+
100
+ $.post(photocrati_ajax.url, params, function(data) {
101
+ if (typeof data.error == 'undefined') {
102
+ ngg_importml.methods.import.import_count++;
103
+
104
+ // If we created a new gallery, ensure it's now in the drop-down list, and select it
105
+ if (ngg_importml.selectors.gallery_select.find('option[value="' + data.gallery_id + '"]').length == 0) {
106
+ ngg_importml.methods.import.params.gallery_id = data.gallery_id;
107
+ var option = $('<option/>').attr('value', data.gallery_id).html(data.gallery_name);
108
+ ngg_importml.selectors.gallery_select.append(option);
109
+ ngg_importml.selectors.gallery_select.val(data.gallery_id);
110
+ option.prop('selected', true);
111
+ ngg_importml.selectors.gallery_name.val('').fadeOut();
112
+ }
113
+ } else {
114
+ $.gritter.add({
115
+ title: ngg_importml_i18n.gritter_error,
116
+ text: data.error,
117
+ sticky: true
118
+ });
119
+ }
120
+ if (ngg_importml.import_ids.length == 0) {
121
+ ngg_importml.methods.import.done();
122
+ } else {
123
+ $(ngg_importml).trigger('send_ajax');
124
+ }
125
+ }, 'json');
126
+ }
127
+ },
128
+
129
+ set_events: function() {
130
+
131
+ $(ngg_importml).on('send_ajax', function() {
132
+ ngg_importml.methods.import.send_ajax();
133
+ });
134
+
135
+ // Captures selected images and records their ID
136
+ ngg_importml.ml_dialog.on('select', function () {
137
+ ngg_importml.import_ids = [];
138
+ ngg_importml.ml_data = ngg_importml.ml_dialog.state().get('selection');
139
+ ngg_importml.ml_data.map(function(image) {
140
+ image = image.toJSON();
141
+ ngg_importml.import_ids.push(image.id);
142
+ });
143
+ var msg = ngg_importml_i18n.import_multiple.replace('%s', ngg_importml.import_ids.length);
144
+ if (ngg_importml.import_ids.length == 1) {
145
+ msg = ngg_importml_i18n.import_singular;
146
+ }
147
+ ngg_importml.selectors.ml_btn_import.html(msg);
148
+ ngg_importml.selectors.ml_btn_import.fadeIn();
149
+ });
150
+
151
+ // Opens Media Library dialog to select images for import
152
+ ngg_importml.selectors.ml_btn_select.on('click', function(event) {
153
+ event.preventDefault();
154
+ ngg_importml.ml_dialog.open();
155
+ });
156
+
157
+ // Import selected images
158
+ ngg_importml.selectors.ml_btn_import.on('click', function(event) {
159
+ event.preventDefault();
160
+ ngg_importml.methods.import.start();
161
+ });
162
+
163
+ // Show/hide MediaLibrary import buttons if a gallery is selected
164
+ ngg_importml.selectors.gallery_select.on('change', function() {
165
+ if (parseInt(this.value) == 0) {
166
+ ngg_importml.selectors.gallery_name.fadeIn().focus();
167
+ if (ngg_importml.selectors.gallery_name.val().length == 0) {
168
+ ngg_importml.selectors.ml_btn_import.fadeOut();
169
+ ngg_importml.selectors.ml_btn_select.fadeOut();
170
+ }
171
+ } else {
172
+ ngg_importml.selectors.gallery_name.fadeOut(400, function() {
173
+ ngg_importml.selectors.gallery_select.focus();
174
+ ngg_importml.selectors.ml_btn_select.fadeIn();
175
+ if (ngg_importml.import_ids.length > 0) {
176
+ ngg_importml.selectors.ml_btn_import.fadeIn();
177
+ }
178
+ });
179
+ }
180
+ });
181
+
182
+ // Ensure the gallery name is filled in if "create new gallery" is selected
183
+ ngg_importml.selectors.gallery_name.on('keyup', function() {
184
+ if (ngg_importml.selectors.gallery_name.val().length > 0) {
185
+ ngg_importml.selectors.gallery_name.removeClass('error');
186
+ ngg_importml.selectors.ml_btn_select.fadeIn();
187
+ if (ngg_importml.import_ids.length > 0) {
188
+ ngg_importml.selectors.ml_btn_import.fadeIn();
189
+ }
190
+ } else {
191
+ ngg_importml.selectors.ml_btn_import.fadeOut();
192
+ ngg_importml.selectors.ml_btn_select.fadeOut();
193
+ }
194
+ });
195
+ }
196
+ }
197
+ };
198
+
199
+ $(document).ready(function() {
200
+ window.ngg_importml = ngg_importml;
201
+ ngg_importml.initialize();
202
+ window.Frame_Event_Publisher.broadcast();
203
+ });
204
+
205
+ })(jQuery);
products/photocrati_nextgen/modules/nextgen_addgallery_page/static/media-library-import.min.css ADDED
@@ -0,0 +1 @@
 
1
+ #ngg-importML-selected-image-import.hidden{display:none}#ngg-importML-select-opener.hidden{display:none}#ngg-importML-gallery-selection{display:inline-block}#ngg-importML-selected-image-import{vertical-align:middle}#ngg-importML-select-opener{vertical-align:middle}#ngg-importML-gallery-name{vertical-align:middle}#ngg-importML-gallery-select{vertical-align:middle}
products/photocrati_nextgen/modules/nextgen_addgallery_page/static/media-library-import.min.js ADDED
@@ -0,0 +1 @@
 
1
+ eval(function(p,a,c,k,e,d){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--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[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}('(5($){r 2={J:1q,c:[],3:{9:$(\'#F-C-W-u-6\'),f:$(\'#F-C-Q-1r\'),j:$(\'#F-C-17-10\'),7:$(\'#F-C-17-1m\')},A:5(){L.4.A();L.4.Z()},4:{A:5(){2.v=19.16.Y.1n.2=19.16.Y({1s:k,w:8.w,1t:{K:8.1y}})},H:5(B){B=(B+\'\').1z();1l 1w(B).h(/!/g,\'%21\').h(/\'/g,\'%27\').h(/\\(/g,\'%28\').h(/\\)/g,\'%29\').h(/\\*/g,\'%1u\').h(/%20/g,\'+\')},6:{q:0,a:{1v:\'1A\'},P:5(){2.3.9.x(\'D\',k);2.3.f.x(\'D\',k);2.4.6.a.l=2.4.H(2.3.j.o());2.4.6.a.7=2.4.H(2.3.7.o());1d.1b(8.R).1e(5(G){2.4.6.a[G]=8.R[G]});2.12=$.1i({w:8.1j,1f:k,1h:8.1k});$(2).I(\'t\')},S:5(){2.12.1c(1x);2.3.9.x(\'D\',14);2.3.f.x(\'D\',14);13 2.4.6.a.l;13 2.4.6.a.7;r p=8.1W.h(\'%s\',2.4.6.q);b(2.4.6.q==1){p=8.1X}$.X.T({w:8.1V,K:p,O:k});2.4.6.q=0;2.v.I(\'1B\');2.c=[];2.3.9.i()},t:5(){r a=2.4.6.a;a.1S=[2.c.1T()];$.1Y(1Z.26,a,5(e){b(25 e.N==\'24\'){2.4.6.q++;b(2.3.j.22(\'y[M="\'+e.l+\'"]\').d==0){2.4.6.a.l=e.l;r y=$(\'<y/>\').x(\'M\',e.l).15(e.7);2.3.j.1H(y);2.3.j.o(e.l);y.1J(\'W\',k);2.3.7.o(\'\').i()}}E{$.X.T({w:8.1O,K:e.N,O:k})}b(2.c.d==0){2.4.6.S()}E{$(2).I(\'t\')}},\'1K\')}},Z:5(){$(2).m(\'t\',5(){2.4.6.t()});2.v.m(\'Q\',5(){2.c=[];2.J=2.v.1L().2a(\'1G\');2.J.1Q(5(u){u=u.1D();2.c.1C(u.10)});r p=8.1F.h(\'%s\',2.c.d);b(2.c.d==1){p=8.1U}2.3.9.15(p);2.3.9.n()});2.3.f.m(\'11\',5(z){z.18();2.v.1E()});2.3.9.m(\'11\',5(z){z.18();2.4.6.P()});2.3.j.m(\'1M\',5(){b(1N(L.M)==0){2.3.7.n().U();b(2.3.7.o().d==0){2.3.9.i();2.3.f.i()}}E{2.3.7.i(1I,5(){2.3.j.U();2.3.f.n();b(2.c.d>0){2.3.9.n()}})}});2.3.7.m(\'1R\',5(){b(2.3.7.o().d>0){2.3.7.23(\'N\');2.3.f.n();b(2.c.d>0){2.3.9.n()}}E{2.3.9.i();2.3.f.i()}})}}};$(1g).1a(5(){V.2=2;2.A();V.1o.1p()})})(1P);',62,135,'||ngg_importml|selectors|methods|function|import|gallery_name|ngg_importml_i18n|ml_btn_import|params|if|import_ids|length|data|ml_btn_select||replace|fadeOut|gallery_select|true|gallery_id|on|fadeIn|val|msg|import_count|var||send_ajax|image|ml_dialog|title|attr|option|event|initialize|str|importML|disabled|else|ngg|key|urlencode|trigger|ml_data|text|this|value|error|sticky|start|select|sectoken|done|add|focus|window|selected|gritter|media|set_events|id|click|progress_bar|delete|false|html|wp|gallery|preventDefault|top|ready|keys|close|Object|forEach|infinite|document|starting_value|nggProgressBar|progress_title|in_progress|return|name|frames|Frame_Event_Publisher|broadcast|null|opener|multiple|button|2A|action|encodeURIComponent|100|button_text|toString|import_media_library|reset|push|toJSON|open|import_multiple|selection|append|400|prop|json|state|change|parseInt|gritter_error|jQuery|map|keyup|attachment_ids|pop|import_singular|gritter_title|imported_multiple|imported_singular|post|photocrati_ajax|||find|removeClass|undefined|typeof|url||||get'.split('|'),0,{}))
products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/jquery.plupload.queue/jquery.plupload.queue.js CHANGED
@@ -90,6 +90,7 @@ used as it is.
90
  }
91
  });
92
 
 
93
  target.prepend(
94
  '<div class="plupload_wrapper plupload_scroll">' +
95
  '<div id="' + id + '_container" class="plupload_container">' +
@@ -115,8 +116,8 @@ used as it is.
115
  '<div class="plupload_filelist_footer">' +
116
  '<div class="plupload_file_name">' +
117
  '<div class="plupload_buttons">' +
118
- '<a href="#" class="plupload_button plupload_add" id="' + id + '_browse">' + _('Add Files') + '</a>' +
119
- '<a href="#" class="plupload_button plupload_start">' + _('Start Upload') + '</a>' +
120
  '</div>' +
121
  '<span class="plupload_upload_status"></span>' +
122
  '</div>' +
90
  }
91
  });
92
 
93
+ // The below has been edited to change the classes given to the Add Files / Start Upload buttons
94
  target.prepend(
95
  '<div class="plupload_wrapper plupload_scroll">' +
96
  '<div id="' + id + '_container" class="plupload_container">' +
116
  '<div class="plupload_filelist_footer">' +
117
  '<div class="plupload_file_name">' +
118
  '<div class="plupload_buttons">' +
119
+ '<a href="#" class="button-primary" id="' + id + '_browse">' + _('Add Files') + '</a>' +
120
+ '<a href="#" class="button-primary plupload_start" id="' + id + '_upload">' + _('Start Upload') + '</a>' +
121
  '</div>' +
122
  '<span class="plupload_upload_status"></span>' +
123
  '</div>' +
products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/jquery.plupload.queue/jquery.plupload.queue.min.js CHANGED
@@ -1 +1 @@
1
- eval(function(p,a,c,k,e,d){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--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[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}('(c($,o){r X={};c h(1A){1x g.2d(1A)||1A}c 1U(5,8){8.2g().1a(c(i,N){N=$(N);9(!N.2l(\'.g\')){N.1n()}});8.2o(\'<3 6="2m 2O">\'+\'<3 5="\'+5+\'24" 6="2u">\'+\'<3 6="g">\'+\'<3 6="2s">\'+\'<3 6="2w">\'+\'<3 6="2A">\'+h(\'2e l\')+\'</3>\'+\'<3 6="2p">\'+h(\'1h l 2k 1W 28 2i 2j I 1W 20 2n.\')+\'</3>\'+\'</3>\'+\'</3>\'+\'<3 6="2f">\'+\'<3 6="2c">\'+\'<3 6="R">\'+h(\'29\')+\'</3>\'+\'<3 6="1f">&14;</3>\'+\'<3 6="T"><f>\'+h(\'2b\')+\'</f></3>\'+\'<3 6="1g">\'+h(\'2a\')+\'</3>\'+\'<3 6="1k">&14;</3>\'+\'</3>\'+\'<1d 5="\'+5+\'v" 6="1N"></1d>\'+\'<3 6="2G">\'+\'<3 6="R">\'+\'<3 6="1v">\'+\'<a 1i="#" 6="1F 2K" 5="\'+5+\'1I">\'+h(\'1h 1T\')+\'</a>\'+\'<a 1i="#" 6="1F M">\'+h(\'2y 2z\')+\'</a>\'+\'</3>\'+\'<f 6="F"></f>\'+\'</3>\'+\'<3 6="1f"></3>\'+\'<3 6="T"><f 6="12">0%</f></3>\'+\'<3 6="1g"><f 6="11">0 b</f></3>\'+\'<3 6="1y">\'+\'<3 6="2B">\'+\'<3 6="1O"></3>\'+\'</3>\'+\'</3>\'+\'<3 6="1k">&14;</3>\'+\'</3>\'+\'</3>\'+\'</3>\'+\'</3>\'+\'<H J="Z" 5="\'+5+\'1o" j="\'+5+\'1o" W="0" />\'+\'</3>\')}$.2x.2r=c(k){9(k){A.1a(c(){r 7,8,5,S;8=$(A);5=8.u(\'5\');9(!5){5=g.2t();8.u(\'5\',5)}S=8.n();1U(5,8);k=$.2v({z:2C,2D:5+\'1I\',2L:5},k);9(k.z){k.2M=5+\'v\'}7=2N g.2J(k);X[5]=7;c V(4){r x;9(4.C==g.1c){x=\'2I\'}9(4.C==g.2E){x=\'25\'}9(4.C==g.2F){x=\'18\'}9(4.C==g.2q){x=\'2H\'}r 1J=$(\'#\'+4.5).u(\'6\',x).27(\'a\').y(\'K\',\'17\');9(4.1p){1J.u(\'1e\',4.1p)}}c 1s(){$(\'f.12\',8).n(7.m.U+\'%\');$(\'3.1O\',8).y(\'2h\',7.m.U+\'%\');$(\'f.F\',8).n(o.1C(h(\'1E %d/%d l\'),7.m.16,7.l.G))}c Q(){r 10=$(\'1d.1N\',8).n(\'\'),E=0,w;$.1a(7.l,c(i,4){w=\'\';9(4.C==g.1c){9(4.1M){w+=\'<H J="Z" j="\'+5+\'h\'+E+\'3m" W="\'+g.1L(4.1M)+\'" />\'}w+=\'<H J="Z" j="\'+5+\'h\'+E+\'3n" W="\'+g.1L(4.j)+\'" />\';w+=\'<H J="Z" j="\'+5+\'h\'+E+\'3o" W="\'+(4.C==g.1c?\'3p\':\'1u\')+\'" />\';E++;$(\'#\'+5+\'1o\').1m(E)}10.1z(\'<t 5="\'+4.5+\'">\'+\'<3 6="R"><f>\'+4.j+\'</f></3>\'+\'<3 6="1f"><a 1i="#"></a></3>\'+\'<3 6="T">\'+4.U+\'%</3>\'+\'<3 6="1g">\'+g.1S(4.1R)+\'</3>\'+\'<3 6="1k">&14;</3>\'+w+\'</t>\');V(4);$(\'#\'+4.5+\'.18 a\').I(c(e){$(\'#\'+4.5).1n();7.3l(4);e.Y()})});$(\'f.11\',8).n(g.1S(7.m.1R));9(7.m.1j===0){$(\'f.1H\',8).n(h(\'1h 1T\'))}1w{$(\'f.1H\',8).n(o.1C(h(\'%d l 1j\'),7.m.1j))}$(\'a.M\',8).3k(\'P\',7.l.G==(7.m.16+7.m.1u));10[0].O=10[0].3g;1s();9(!7.l.G&&7.1V.z&&7.k.z){$(\'#\'+5+\'v\').1z(\'<t 6="26">\'+h("21 l 1P.")+\'</t>\')}}c 1B(){3f X[5];7.1B();8.n(S);7=8=S=3h}7.q("3i",c(p,4){$(\'#\'+4.5).1t(\'3r\')});7.q(\'3j\',c(p,1Y){9(!k.3q&&k.3t){8.3y(\'I\',\'#\'+5+\'v 3.R f\',c(e){r D=$(e.8),4,L,j,1l="";4=p.3z(D.3w(\'t\')[0].5);j=4.j;L=/^(.+)(\\.[^.]+)$/.3s(j);9(L){j=L[1];1l=L[2]}D.15().3v(\'<H J="3u" />\');D.1G().1m(j).3x().1X(c(){D.1D().1G().1n()}).3d(c(e){r 19=$(A);9(e.2P==13){e.Y();4.j=19.1m()+1l;D.n(4.j);19.1X()}})})}$(\'#\'+5+\'24\').u(\'1e\',\'2X 22: \'+1Y.22);$(\'a.M\',8).I(c(e){9(!$(A).2Y(\'P\')){7.20()}e.Y()});$(\'a.1q\',8).I(c(e){e.Y();7.2Z()});$(\'a.M\',8).1t(\'P\')});7.q("1b",c(p,s){r 4=s.4,B;9(4){B=s.B;9(s.1Z){B+=" ("+s.1Z+")"}9(s.1r==g.30){23(h("1b: 2W 2V 2R:")+" "+4.j)}9(s.1r==g.2Q){23(h("1b: 2S 4 2T:")+" "+4.j)}4.1p=B;$(\'#\'+4.5).u(\'6\',\'25\').27(\'a\').y(\'K\',\'17\').u(\'1e\',B)}9(s.1r===g.2U){31(c(){1B()},1)}});7.q("32",c(p){9(p.k.z&&p.1V.z){$(\'#\'+5+\'v\').1z(\'<t 6="26">\'+h("21 l 1P.")+\'</t>\')}});7.39();7.q(\'3a\',c(){9(7.3b===g.3c){$(\'t.18 a,3.1v\',8).15();$(\'f.F,3.1y,a.1q\',8).y(\'K\',\'17\');$(\'f.F\',8).n(\'1E \'+7.m.16+\'/\'+7.l.G+\' l\');9(k.1Q){$(\'f.12,f.11\',8).1D()}}1w{Q();$(\'a.1q,3.1y\',8).15();$(\'a.18\',8).y(\'K\',\'17\');9(k.1Q&&7.m.16+7.m.1u==7.l.G){$(".1v,.F",8).y("K","38");$(".M",8).1t("P");$(\'f.12,f.11\',8).15()}}});7.q(\'37\',Q);7.q(\'33\',c(){r O=$(\'#\'+5+\'v\').O();Q();$(\'#\'+5+\'v\').O(O)});7.q(\'34\',c(p,4){V(4)});7.q("35",c(p,4){$(\'#\'+4.5+\' 3.T\',8).n(4.U+\'%\');V(4);1s()});9(k.1K){k.1K(7)}});1x A}1w{1x X[$(A[0]).u(\'5\')]}}})(36,3e);',62,222,'|||div|file|id|class|uploader|target|if|||function|||span|plupload|_||name|settings|files|total|html||up|bind|var|err|li|attr|_filelist|inputHTML|actionClass|css|dragdrop|this|message|status|targetSpan|inputCount|plupload_upload_status|length|input|click|type|display|parts|plupload_start|node|scrollTop|plupload_disabled|updateList|plupload_file_name|contents_bak|plupload_file_status|percent|handleStatus|value|uploaders|preventDefault|hidden|fileList|plupload_total_file_size|plupload_total_status||nbsp|hide|uploaded|block|plupload_delete|targetInput|each|Error|DONE|ul|title|plupload_file_action|plupload_file_size|Add|href|queued|plupload_clearer|ext|val|remove|_count|hint|plupload_stop|code|updateTotalProgress|addClass|failed|plupload_buttons|else|return|plupload_progress|append|str|destroy|sprintf|show|Uploaded|plupload_button|next|plupload_add_text|_browse|icon|setup|xmlEncode|target_name|plupload_filelist|plupload_progress_bar|here|multiple_queues|size|formatSize|Files|renderUI|features|the|blur|res|details|start|Drag|runtime|alert|_container|plupload_failed|plupload_droptext|find|upload|Filename|Size|Status|plupload_filelist_header|translate|Select|plupload_content|contents|width|queue|and|to|is|plupload_wrapper|button|prepend|plupload_header_text|UPLOADING|pluploadQueue|plupload_header|guid|plupload_container|extend|plupload_header_content|fn|Start|Upload|plupload_header_title|plupload_progress_container|true|browse_button|FAILED|QUEUED|plupload_filelist_footer|plupload_uploading|plupload_done|Uploader|plupload_add|container|drop_element|new|plupload_scroll|keyCode|FILE_EXTENSION_ERROR|large|Invalid|extension|INIT_ERROR|too|File|Using|hasClass|stop|FILE_SIZE_ERROR|setTimeout|PostInit|FilesRemoved|FileUploaded|UploadProgress|jQuery|FilesAdded|inline|init|StateChanged|state|STARTED|keydown|mOxie|delete|scrollHeight|null|UploadFile|Init|toggleClass|removeFile|_tmpname|_name|_status|done|unique_names|plupload_current_file|exec|rename|text|after|parents|focus|on|getFile'.split('|'),0,{}))
1
+ eval(function(p,a,c,k,e,d){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--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[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}('(c($,o){q X={};c h(1B){1C g.2c(1B)||1B}c 1U(4,8){8.2i().1a(c(i,N){N=$(N);9(!N.2l(\'.g\')){N.1l()}});8.2p(\'<3 7="2n 2O">\'+\'<3 4="\'+4+\'1V" 7="2v">\'+\'<3 7="g">\'+\'<3 7="2s">\'+\'<3 7="2w">\'+\'<3 7="2A">\'+h(\'29 l\')+\'</3>\'+\'<3 7="2e">\'+h(\'1i l 2m 1Y 2a 2k 2q I 1Y 1W 19.\')+\'</3>\'+\'</3>\'+\'</3>\'+\'<3 7="2j">\'+\'<3 7="2o">\'+\'<3 7="R">\'+h(\'2g\')+\'</3>\'+\'<3 7="1f">&14;</3>\'+\'<3 7="T"><f>\'+h(\'2d\')+\'</f></3>\'+\'<3 7="1h">\'+h(\'2b\')+\'</3>\'+\'<3 7="1k">&14;</3>\'+\'</3>\'+\'<1d 4="\'+4+\'v" 7="1N"></1d>\'+\'<3 7="2f">\'+\'<3 7="R">\'+\'<3 7="1w">\'+\'<a 1j="#" 7="19-1Z" 4="\'+4+\'1I">\'+h(\'1i 1T\')+\'</a>\'+\'<a 1j="#" 7="19-1Z M" 4="\'+4+\'2G">\'+h(\'2y 2z\')+\'</a>\'+\'</3>\'+\'<f 7="F"></f>\'+\'</3>\'+\'<3 7="1f"></3>\'+\'<3 7="T"><f 7="12">0%</f></3>\'+\'<3 7="1h"><f 7="11">0 b</f></3>\'+\'<3 7="1s">\'+\'<3 7="2B">\'+\'<3 7="1O"></3>\'+\'</3>\'+\'</3>\'+\'<3 7="1k">&14;</3>\'+\'</3>\'+\'</3>\'+\'</3>\'+\'</3>\'+\'<H J="Z" 4="\'+4+\'1m" j="\'+4+\'1m" V="0" />\'+\'</3>\')}$.2x.2t=c(k){9(k){B.1a(c(){q 6,8,4,S;8=$(B);4=8.t(\'4\');9(!4){4=g.2u();8.t(\'4\',4)}S=8.n();1U(4,8);k=$.2C({z:2D,2K:4+\'1I\',2L:4},k);9(k.z){k.2M=4+\'v\'}6=2N g.2J(k);X[4]=6;c W(5){q w;9(5.C==g.1p){w=\'2I\'}9(5.C==g.2E){w=\'28\'}9(5.C==g.2F){w=\'17\'}9(5.C==g.2r){w=\'2H\'}q 1J=$(\'#\'+5.4).t(\'7\',w).27(\'a\').y(\'K\',\'18\');9(5.1q){1J.t(\'1e\',5.1q)}}c 1t(){$(\'f.12\',8).n(6.m.U+\'%\');$(\'3.1O\',8).y(\'2h\',6.m.U+\'%\');$(\'f.F\',8).n(o.1D(h(\'1F %d/%d l\'),6.m.16,6.l.G))}c Q(){q 10=$(\'1d.1N\',8).n(\'\'),E=0,x;$.1a(6.l,c(i,5){x=\'\';9(5.C==g.1p){9(5.1M){x+=\'<H J="Z" j="\'+4+\'h\'+E+\'3m" V="\'+g.1L(5.1M)+\'" />\'}x+=\'<H J="Z" j="\'+4+\'h\'+E+\'3n" V="\'+g.1L(5.j)+\'" />\';x+=\'<H J="Z" j="\'+4+\'h\'+E+\'3o" V="\'+(5.C==g.1p?\'3p\':\'1v\')+\'" />\';E++;$(\'#\'+4+\'1m\').1o(E)}10.1A(\'<u 4="\'+5.4+\'">\'+\'<3 7="R"><f>\'+5.j+\'</f></3>\'+\'<3 7="1f"><a 1j="#"></a></3>\'+\'<3 7="T">\'+5.U+\'%</3>\'+\'<3 7="1h">\'+g.1S(5.1R)+\'</3>\'+\'<3 7="1k">&14;</3>\'+x+\'</u>\');W(5);$(\'#\'+5.4+\'.17 a\').I(c(e){$(\'#\'+5.4).1l();6.3l(5);e.Y()})});$(\'f.11\',8).n(g.1S(6.m.1R));9(6.m.1g===0){$(\'f.1H\',8).n(h(\'1i 1T\'))}1y{$(\'f.1H\',8).n(o.1D(h(\'%d l 1g\'),6.m.1g))}$(\'a.M\',8).3k(\'P\',6.l.G==(6.m.16+6.m.1v));10[0].O=10[0].3g;1t();9(!6.l.G&&6.21.z&&6.k.z){$(\'#\'+4+\'v\').1A(\'<u 7="1X">\'+h("26 l 1P.")+\'</u>\')}}c 1x(){3f X[4];6.1x();8.n(S);6=8=S=3h}6.p("3i",c(r,5){$(\'#\'+5.4).1u(\'3r\')});6.p(\'3j\',c(r,23){9(!k.3q&&k.3t){8.3y(\'I\',\'#\'+4+\'v 3.R f\',c(e){q D=$(e.8),5,L,j,1n="";5=r.3z(D.3w(\'u\')[0].4);j=5.j;L=/^(.+)(\\.[^.]+)$/.3s(j);9(L){j=L[1];1n=L[2]}D.15().3v(\'<H J="3u" />\');D.1G().1o(j).3x().25(c(){D.1E().1G().1l()}).3d(c(e){q 1c=$(B);9(e.2P==13){e.Y();5.j=1c.1o()+1n;D.n(5.j);1c.25()}})})}$(\'#\'+4+\'1V\').t(\'1e\',\'2X 22: \'+23.22);$(\'a.M\',8).I(c(e){9(!$(B).2Y(\'P\')){6.1W()}e.Y()});$(\'a.1r\',8).I(c(e){e.Y();6.2Z()});$(\'a.M\',8).1u(\'P\')});6.p("1b",c(r,s){q 5=s.5,A;9(5){A=s.A;9(s.20){A+=" ("+s.20+")"}9(s.1z==g.30){24(h("1b: 2W 2V 2R:")+" "+5.j)}9(s.1z==g.2Q){24(h("1b: 2S 5 2T:")+" "+5.j)}5.1q=A;$(\'#\'+5.4).t(\'7\',\'28\').27(\'a\').y(\'K\',\'18\').t(\'1e\',A)}9(s.1z===g.2U){31(c(){1x()},1)}});6.p("32",c(r){9(r.k.z&&r.21.z){$(\'#\'+4+\'v\').1A(\'<u 7="1X">\'+h("26 l 1P.")+\'</u>\')}});6.39();6.p(\'3a\',c(){9(6.3b===g.3c){$(\'u.17 a,3.1w\',8).15();$(\'f.F,3.1s,a.1r\',8).y(\'K\',\'18\');$(\'f.F\',8).n(\'1F \'+6.m.16+\'/\'+6.l.G+\' l\');9(k.1Q){$(\'f.12,f.11\',8).1E()}}1y{Q();$(\'a.1r,3.1s\',8).15();$(\'a.17\',8).y(\'K\',\'18\');9(k.1Q&&6.m.16+6.m.1v==6.l.G){$(".1w,.F",8).y("K","38");$(".M",8).1u("P");$(\'f.12,f.11\',8).15()}}});6.p(\'37\',Q);6.p(\'33\',c(){q O=$(\'#\'+4+\'v\').O();Q();$(\'#\'+4+\'v\').O(O)});6.p(\'34\',c(r,5){W(5)});6.p("35",c(r,5){$(\'#\'+5.4+\' 3.T\',8).n(5.U+\'%\');W(5);1t()});9(k.1K){k.1K(6)}});1C B}1y{1C X[$(B[0]).t(\'4\')]}}})(36,3e);',62,222,'|||div|id|file|uploader|class|target|if|||function|||span|plupload|_||name|settings|files|total|html||bind|var|up|err|attr|li|_filelist|actionClass|inputHTML|css|dragdrop|message|this|status|targetSpan|inputCount|plupload_upload_status|length|input|click|type|display|parts|plupload_start|node|scrollTop|plupload_disabled|updateList|plupload_file_name|contents_bak|plupload_file_status|percent|value|handleStatus|uploaders|preventDefault|hidden|fileList|plupload_total_file_size|plupload_total_status||nbsp|hide|uploaded|plupload_delete|block|button|each|Error|targetInput|ul|title|plupload_file_action|queued|plupload_file_size|Add|href|plupload_clearer|remove|_count|ext|val|DONE|hint|plupload_stop|plupload_progress|updateTotalProgress|addClass|failed|plupload_buttons|destroy|else|code|append|str|return|sprintf|show|Uploaded|next|plupload_add_text|_browse|icon|setup|xmlEncode|target_name|plupload_filelist|plupload_progress_bar|here|multiple_queues|size|formatSize|Files|renderUI|_container|start|plupload_droptext|the|primary|details|features|runtime|res|alert|blur|Drag|find|plupload_failed|Select|upload|Size|translate|Status|plupload_header_text|plupload_filelist_footer|Filename|width|contents|plupload_content|queue|is|to|plupload_wrapper|plupload_filelist_header|prepend|and|UPLOADING|plupload_header|pluploadQueue|guid|plupload_container|plupload_header_content|fn|Start|Upload|plupload_header_title|plupload_progress_container|extend|true|FAILED|QUEUED|_upload|plupload_uploading|plupload_done|Uploader|browse_button|container|drop_element|new|plupload_scroll|keyCode|FILE_EXTENSION_ERROR|large|Invalid|extension|INIT_ERROR|too|File|Using|hasClass|stop|FILE_SIZE_ERROR|setTimeout|PostInit|FilesRemoved|FileUploaded|UploadProgress|jQuery|FilesAdded|inline|init|StateChanged|state|STARTED|keydown|mOxie|delete|scrollHeight|null|UploadFile|Init|toggleClass|removeFile|_tmpname|_name|_status|done|unique_names|plupload_current_file|exec|rename|text|after|parents|focus|on|getFile'.split('|'),0,{}))
products/photocrati_nextgen/modules/nextgen_addgallery_page/static/styles.css CHANGED
@@ -1,5 +1,5 @@
1
  #gallery_selection {
2
- background-color: #EFEFEF;
3
  padding: 7px;
4
  }
5
 
@@ -9,6 +9,10 @@
9
  top: -1px;
10
  }
11
 
 
 
 
 
12
  #gallery_name {
13
  width: auto;
14
  min-width: 200px;
1
  #gallery_selection {
2
+ background-color: #fff;
3
  padding: 7px;
4
  }
5
 
9
  top: -1px;
10
  }
11
 
12
+ #gallery_selection .plupload_buttons a {
13
+ margin-right: 4px;
14
+ }
15
+
16
  #gallery_name {
17
  width: auto;
18
  min-width: 200px;
products/photocrati_nextgen/modules/nextgen_addgallery_page/static/styles.min.css CHANGED
@@ -1 +1 @@
1
- #gallery_selection{background-color:#efefef;padding:7px}#gallery_selection label{font-weight:600;position:relative;top:-1px}#gallery_name{width:auto;min-width:200px}#gallery_name.error{border:solid 1px red}#upload_images_content{padding:0}#upload_images_content .plupload_container{padding:0}.plupload_header{display:none}.plupload_buttons{display:inline}.plupload_droptext{font-size:16px;color:silver}
1
+ #gallery_selection{background-color:#fff;padding:7px}#gallery_selection label{font-weight:600;position:relative;top:-1px}#gallery_selection .plupload_buttons a{margin-right:4px}#gallery_name{width:auto;min-width:200px}#gallery_name.error{border:solid 1px red}#upload_images_content{padding:0}#upload_images_content .plupload_container{padding:0}.plupload_header{display:none}.plupload_buttons{display:inline}.plupload_droptext{font-size:16px;color:silver}
products/photocrati_nextgen/modules/nextgen_addgallery_page/templates/import_media_library.php ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php $i18n['isavalidvar'] = true; // make my editor shutup about invalid variables ?>
2
+ <div id="ngg-importML-gallery-selection">
3
+ <label for="ngg-importML-gallery-id"><?php _e('Gallery', 'nggallery'); ?></label>
4
+ <select id="ngg-importML-gallery-id">
5
+ <option value="0"><?php _e('Create a new gallery', 'nggallery'); ?></option>
6
+ <?php foreach ($galleries as $gallery): ?>
7
+ <option value="<?php echo esc_attr($gallery->{$gallery->id_field}) ?>"><?php echo esc_attr($gallery->title) ?></option>
8
+ <?php endforeach ?>
9
+ </select>
10
+ <input type="text" id="ngg-importML-gallery-name" name="gallery_name"/>
11
+ </div>
12
+
13
+ <button id='ngg-importML-select-opener'
14
+ class='button-primary hidden'><?php echo $i18n['select-opener']; ?></button>
15
+ <button id='ngg-importML-selected-image-import'
16
+ class='button-primary hidden'><?php echo $i18n['import_singular']; ?></button>
products/photocrati_nextgen/modules/nextgen_addgallery_page/templates/upload_images.php CHANGED
@@ -10,7 +10,7 @@
10
  </div>
11
 
12
  <div id="uploader">
13
- <p><?php _e("You browser doesn't have Flash, Silverlight, HTML5, or HTML4 support.", 'nggallery'); ?></p>
14
  </div>
15
  <script type="text/javascript">
16
  // Listen for events emitted in other frames
10
  </div>
11
 
12
  <div id="uploader">
13
+ <p><?php _e("Your browser doesn't have Silverlight, HTML5, or HTML4 support.", 'nggallery'); ?></p>
14
  </div>
15
  <script type="text/javascript">
16
  // Listen for events emitted in other frames
products/photocrati_nextgen/modules/nextgen_admin/static/jquery-ui/jquery-ui-1.10.4.custom.css CHANGED
@@ -163,12 +163,12 @@
163
  display: block;
164
  cursor: pointer;
165
  position: relative;
166
- margin-top: 2px;
167
  padding: .5em .5em .5em .7em;
 
168
  min-height: 0; /* support: IE7 */
169
  }
170
  .ui-accordion .ui-accordion-icons {
171
- padding-left: 2.2em;
172
  }
173
  .ui-accordion .ui-accordion-noicons {
174
  padding-left: .7em;
@@ -178,14 +178,20 @@
178
  }
179
  .ui-accordion .ui-accordion-header .ui-accordion-header-icon {
180
  position: absolute;
181
- left: .5em;
 
182
  top: 50%;
183
  margin-top: -8px;
 
184
  }
185
  .ui-accordion .ui-accordion-content {
186
  padding: 1em 2.2em;
 
187
  border-top: 0;
188
  overflow: auto;
 
 
 
189
  }
190
  .ui-autocomplete {
191
  position: absolute;
@@ -819,8 +825,7 @@ body .ui-tooltip {
819
  .ui-state-default,
820
  .ui-widget-content .ui-state-default,
821
  .ui-widget-header .ui-state-default {
822
- border: 1px solid #dfdfdf;
823
- background: #f5f5f5 url(images/ui-bg_flat_0_f5f5f5_40x100.png) 50% 50% repeat-x;
824
  font-weight: normal;
825
  color: #222;
826
  }
@@ -836,8 +841,6 @@ body .ui-tooltip {
836
  .ui-state-focus,
837
  .ui-widget-content .ui-state-focus,
838
  .ui-widget-header .ui-state-focus {
839
- border: 1px solid #dfdfdf;
840
- background: #e1e1e1 url(images/ui-bg_flat_0_e1e1e1_40x100.png) 50% 50% repeat-x;
841
  font-weight: normal;
842
  color: #222;
843
  }
@@ -855,8 +858,7 @@ body .ui-tooltip {
855
  .ui-state-active,
856
  .ui-widget-content .ui-state-active,
857
  .ui-widget-header .ui-state-active {
858
- border: 1px solid #dfdfdf;
859
- background: #e1e1e1 url(images/ui-bg_flat_65_e1e1e1_40x100.png) 50% 50% repeat-x;
860
  font-weight: normal;
861
  color: #222;
862
  }
@@ -937,7 +939,7 @@ body .ui-tooltip {
937
  background-image: url(images/ui-icons_eee_256x240.png);
938
  }
939
  .ui-state-default .ui-icon {
940
- background-image: url(images/ui-icons_222_256x240.png);
941
  }
942
  .ui-state-hover .ui-icon,
943
  .ui-state-focus .ui-icon {
@@ -1271,7 +1273,27 @@ body .ui-tooltip {
1271
  }
1272
 
1273
  /* WP 4.1-beta1 makes the accordion fonts & margin huge */
 
1274
  h3.ui-accordion-header {
1275
  margin: 3px 0 0 0;
1276
- font-size: 13px;
 
 
1277
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
163
  display: block;
164
  cursor: pointer;
165
  position: relative;
166
+ margin-top: 10px;
167
  padding: .5em .5em .5em .7em;
168
+ border: 1px solid #e5e5e5;
169
  min-height: 0; /* support: IE7 */
170
  }
171
  .ui-accordion .ui-accordion-icons {
 
172
  }
173
  .ui-accordion .ui-accordion-noicons {
174
  padding-left: .7em;
178
  }
179
  .ui-accordion .ui-accordion-header .ui-accordion-header-icon {
180
  position: absolute;
181
+ right: .5em;
182
+ left: initial;
183
  top: 50%;
184
  margin-top: -8px;
185
+ color: #a0a5aa;
186
  }
187
  .ui-accordion .ui-accordion-content {
188
  padding: 1em 2.2em;
189
+ border: 1px solid #e5e5e5;
190
  border-top: 0;
191
  overflow: auto;
192
+ margin: 0 0 10px 0;
193
+ -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04)
194
+ box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04);
195
  }
196
  .ui-autocomplete {
197
  position: absolute;
825
  .ui-state-default,
826
  .ui-widget-content .ui-state-default,
827
  .ui-widget-header .ui-state-default {
828
+ background: #fff;
 
829
  font-weight: normal;
830
  color: #222;
831
  }
841
  .ui-state-focus,
842
  .ui-widget-content .ui-state-focus,
843
  .ui-widget-header .ui-state-focus {
 
 
844
  font-weight: normal;
845
  color: #222;
846
  }
858
  .ui-state-active,
859
  .ui-widget-content .ui-state-active,
860
  .ui-widget-header .ui-state-active {
861
+ background: #fff;
 
862
  font-weight: normal;
863
  color: #222;
864
  }
939
  background-image: url(images/ui-icons_eee_256x240.png);
940
  }
941
  .ui-state-default .ui-icon {
942
+ background-image: url(images/ui-icons_999999_256x240.png);
943
  }
944
  .ui-state-hover .ui-icon,
945
  .ui-state-focus .ui-icon {
1273
  }
1274
 
1275
  /* WP 4.1-beta1 makes the accordion fonts & margin huge */
1276
+ h3.ui-accordion-header.ui-state-default,
1277
  h3.ui-accordion-header {
1278
  margin: 3px 0 0 0;
1279
+ font-size: 14px;
1280
+ font-weight: 600;
1281
+ line-height: 20px;
1282
  }
1283
+
1284
+ h3.ui-accordion-header a:focus,
1285
+ h3.ui-accordion-header:focus {
1286
+ outline: none;
1287
+ box-shadow: none;
1288
+ }
1289
+
1290
+ h3.ui-accordion-header.ui-state-active .ui-accordion-header-icon {
1291
+ }
1292
+
1293
+ h3.ui-accordion-header.ui-state-active {
1294
+ border-bottom: 1px solid #eee;
1295
+ }
1296
+
1297
+ div.accordion {
1298
+ margin-top: 10px;
1299
+ }
products/photocrati_nextgen/modules/nextgen_admin/static/jquery-ui/jquery-ui-1.10.4.custom.min.css CHANGED
@@ -3,4 +3,4 @@
3
  * * Includes: jquery.ui.core.css, jquery.ui.resizable.css, jquery.ui.selectable.css, jquery.ui.accordion.css, jquery.ui.autocomplete.css, jquery.ui.button.css, jquery.ui.datepicker.css, jquery.ui.dialog.css, jquery.ui.menu.css, jquery.ui.progressbar.css, jquery.ui.slider.css, jquery.ui.spinner.css, jquery.ui.tabs.css, jquery.ui.tooltip.css, jquery.ui.theme.css
4
  * * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=%22Open%20Sans%22%2C%20sans-serif&fwDefault=normal&fsDefault=13px&cornerRadius=0&bgColorHeader=%23333&bgTextureHeader=flat&bgImgOpacityHeader=0&borderColorHeader=%23333&fcHeader=%23eee&iconColorHeader=%23eee&bgColorContent=%23fff&bgTextureContent=flat&bgImgOpacityContent=0&borderColorContent=%23eee&fcContent=%23333333&iconColorContent=%23cccccc&bgColorDefault=%23f5f5f5&bgTextureDefault=flat&bgImgOpacityDefault=0&borderColorDefault=%23dfdfdf&fcDefault=%23222&iconColorDefault=%23222&bgColorHover=%23e1e1e1&bgTextureHover=flat&bgImgOpacityHover=0&borderColorHover=%23dfdfdf&fcHover=%23222&iconColorHover=%23222&bgColorActive=%23e1e1e1&bgTextureActive=flat&bgImgOpacityActive=65&borderColorActive=%23dfdfdf&fcActive=%23222&iconColorActive=%23222&bgColorHighlight=%23e1e1e1&bgTextureHighlight=flat&bgImgOpacityHighlight=55&borderColorHighlight=%23dfdfdf&fcHighlight=%23222&iconColorHighlight=%23222&bgColorError=%23D54E21&bgTextureError=flat&bgImgOpacityError=0&borderColorError=%23D54E21&fcError=%23eee&iconColorError=%23eee&bgColorOverlay=%23333&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=%23aaaaaa&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=2px&offsetTopShadow=-2px&offsetLeftShadow=-2px&cornerRadiusShadow=2px
5
  * * Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */
6
- .ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{min-height:0}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default !important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:.1px;display:block}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin-top:2px;padding:.5em .5em .5em .7em;min-height:0}.ui-accordion .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-noicons{padding-left:.7em}.ui-accordion .ui-accordion-icons .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-header .ui-accordion-header-icon{position:absolute;left:.5em;top:50%;margin-top:-8px}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-button{display:inline-block;position:relative;padding:0;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2.2em}button.ui-button-icon-only{width:2.4em}.ui-button-icons-only{width:3.4em}button.ui-button-icons-only{width:3.7em}.ui-button .ui-button-text{display:block;line-height:normal}.ui-button-text-only .ui-button-text{padding:.4em 1em}.ui-button-icon-only .ui-button-text,.ui-button-icons-only .ui-button-text{padding:.4em;text-indent:-9999999px}.ui-button-text-icon-primary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 1em .4em 2.1em}.ui-button-text-icon-secondary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 2.1em .4em 1em}.ui-button-text-icons .ui-button-text{padding-left:2.1em;padding-right:2.1em}input.ui-button{padding:.4em 1em}.ui-button-icon-only .ui-icon,.ui-button-text-icon-primary .ui-icon,.ui-button-text-icon-secondary .ui-icon,.ui-button-text-icons .ui-icon,.ui-button-icons-only .ui-icon{position:absolute;top:50%;margin-top:-8px}.ui-button-icon-only .ui-icon{left:50%;margin-left:-8px}.ui-button-text-icon-primary .ui-button-icon-primary,.ui-button-text-icons .ui-button-icon-primary,.ui-button-icons-only .ui-button-icon-primary{left:.5em}.ui-button-text-icon-secondary .ui-button-icon-secondary,.ui-button-text-icons .ui-button-icon-secondary,.ui-button-icons-only .ui-button-icon-secondary{right:.5em}.ui-buttonset{margin-right:7px}.ui-buttonset .ui-button{margin-left:0;margin-right:-.3em}input.ui-button::-moz-focus-inner,button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:49%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-dialog{overflow:hidden;position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:20px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-se{width:12px;height:12px;right:-5px;bottom:-5px;background-position:16px 16px}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-menu{list-style:none;padding:2px;margin:0;display:block;outline:0}.ui-menu .ui-menu{margin-top:-3px;position:absolute}.ui-menu .ui-menu-item{margin:0;padding:0;width:100%;list-style-image:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)}.ui-menu .ui-menu-divider{margin:5px -2px 5px -2px;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-menu-item a{text-decoration:none;display:block;padding:2px .4em;line-height:1.5;min-height:0;font-weight:normal}.ui-menu .ui-menu-item a.ui-state-focus,.ui-menu .ui-menu-item a.ui-state-active{font-weight:normal;margin:-1px}.ui-menu .ui-state-disabled{font-weight:normal;margin:.4em 0 .2em;line-height:1.5}.ui-menu .ui-state-disabled a{cursor:default}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item a{position:relative;padding-left:2em}.ui-menu .ui-icon{position:absolute;top:.2em;left:.2em}.ui-menu .ui-menu-icon{position:static;float:right}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url("images/animated-overlay.gif");height:100%;filter:alpha(opacity=25);opacity:.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:0;background:none;color:inherit;padding:0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:22px}.ui-spinner-button{width:16px;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top:0;border-bottom:0;border-right:0}.ui-spinner .ui-icon{position:absolute;margin-top:-8px;top:50%;left:0}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-spinner .ui-icon-triangle-1-s{background-position:-65px -16px}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav .ui-tabs-anchor{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor{cursor:text}.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px;-webkit-box-shadow:0 0 5px #aaa;box-shadow:0 0 5px #aaa}body .ui-tooltip{border-width:2px}.ui-widget{font-family:"Open Sans",sans-serif;font-size:13px}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:"Open Sans",sans-serif;font-size:1em}.ui-widget-content{border:1px solid #eee;background:#fff url(images/ui-bg_flat_0_fff_40x100.png) 50% 50% repeat-x;color:#333}.ui-widget-content a{color:#333}.ui-widget-header{border:1px solid #333;background:#333 url(images/ui-bg_flat_0_333_40x100.png) 50% 50% repeat-x;color:#eee;font-weight:bold}.ui-widget-header a{color:#eee}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid #dfdfdf;background:#f5f5f5 url(images/ui-bg_flat_0_f5f5f5_40x100.png) 50% 50% repeat-x;font-weight:normal;color:#222}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#222;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #dfdfdf;background:#e1e1e1 url(images/ui-bg_flat_0_e1e1e1_40x100.png) 50% 50% repeat-x;font-weight:normal;color:#222}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited{color:#222;text-decoration:none}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid #dfdfdf;background:#e1e1e1 url(images/ui-bg_flat_65_e1e1e1_40x100.png) 50% 50% repeat-x;font-weight:normal;color:#222}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#222;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #dfdfdf;background:#e1e1e1 url(images/ui-bg_flat_55_e1e1e1_40x100.png) 50% 50% repeat-x;color:#222}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#222}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #d54e21;background:#d54e21 url(images/ui-bg_flat_0_D54E21_40x100.png) 50% 50% repeat-x;color:#eee}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#eee}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#eee}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url(images/ui-icons_cccccc_256x240.png)}.ui-widget-header .ui-icon{background-image:url(images/ui-icons_eee_256x240.png)}.ui-state-default .ui-icon{background-image:url(images/ui-icons_222_256x240.png)}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon{background-image:url(images/ui-icons_222_256x240.png)}.ui-state-active .ui-icon{background-image:url(images/ui-icons_222_256x240.png)}.ui-state-highlight .ui-icon{background-image:url(images/ui-icons_222_256x240.png)}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url(images/ui-icons_eee_256x240.png)}.ui-icon-blank{background-position:16px 16px}.ui-icon-carat-1-n{background-position:0 0}.ui-icon-carat-1-ne{background-position:-16px 0}.ui-icon-carat-1-e{background-position:-32px 0}.ui-icon-carat-1-se{background-position:-48px 0}.ui-icon-carat-1-s{background-position:-64px 0}.ui-icon-carat-1-sw{background-position:-80px 0}.ui-icon-carat-1-w{background-position:-96px 0}.ui-icon-carat-1-nw{background-position:-112px 0}.ui-icon-carat-2-n-s{background-position:-128px 0}.ui-icon-carat-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-64px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-64px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:0 -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:0}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:0}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:0}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:0}.ui-widget-overlay{background:#333 url(images/ui-bg_flat_0_333_40x100.png) 50% 50% repeat-x;opacity:.3;filter:Alpha(Opacity=30)}.ui-widget-shadow{margin:-2px 0 0 -2px;padding:2px;background:#aaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;opacity:.3;filter:Alpha(Opacity=30);border-radius:2px}.ui-tabs-nav .ui-corner-top{-khtml-border-top-left-radius:4px;-khtml-border-top-right-radius:4px;-moz-border-radius-topleft:4px;-moz-border-radius-topright:4px;-webkit-border-top-left-radius:4px;-webkit-border-top-right-radius:4px;border-top-left-radius:4px;border-top-right-radius:4px;border:1px solid #dfdfdf}.ngg_settings_template_wrapper .ui-combobox-input{padding:0 !important}.ui-tabs .ui-tabs-nav li{background:white;font-family:"HelveticaNeue-Light","Helvetica Neue Light","Helvetica Neue",sans-serif;margin-bottom:-1px;margin-right:.5em}.ui-tabs .ui-tabs-nav li a{color:#aaa;outline:0;font-size:120%}.ui-tabs .ui-tabs-nav li a:hover{color:#d54e21}.ui-tabs .ui-tabs-nav li.ui-tabs-active{padding-bottom:-1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active a{color:#464646}.ui-tabs .ui-tabs-nav li.ui-tabs-selected{border-top:1px solid #8a8a8a;border-right:1px solid #8a8a8a;border-left:1px solid #8a8a8a;border-bottom:1px solid #fff}.ui-tabs-icon+ul.ui-tabs-nav{-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;-khtml-border-bottom-left-radius:0;border-bottom-left-radius:0}.ui-tabs-icon{float:left;background:url('images/nextgen-logo-small.jpg') no-repeat left center;font-size:18px;font-family:HelveticaNeue-Light,'Helvetica Neue Light','Helvetica Neue',sans-serif;width:200px;height:40px}.ui-tabs-icon .nextgen_logo{display:none}.ui-tabs-icon .nextgen_logo_sub{display:none;font-size:14px}.ui-widget-overlay{background:#000 50% 50% repeat-x;opacity:.4;filter:Alpha(Opacity=40);filter:-\9}.ui-widget select{height:2em}.ui-autocomplete{z-index:250}h3.ui-accordion-header{margin:3px 0 0 0;font-size:13px}
3
  * * Includes: jquery.ui.core.css, jquery.ui.resizable.css, jquery.ui.selectable.css, jquery.ui.accordion.css, jquery.ui.autocomplete.css, jquery.ui.button.css, jquery.ui.datepicker.css, jquery.ui.dialog.css, jquery.ui.menu.css, jquery.ui.progressbar.css, jquery.ui.slider.css, jquery.ui.spinner.css, jquery.ui.tabs.css, jquery.ui.tooltip.css, jquery.ui.theme.css
4
  * * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=%22Open%20Sans%22%2C%20sans-serif&fwDefault=normal&fsDefault=13px&cornerRadius=0&bgColorHeader=%23333&bgTextureHeader=flat&bgImgOpacityHeader=0&borderColorHeader=%23333&fcHeader=%23eee&iconColorHeader=%23eee&bgColorContent=%23fff&bgTextureContent=flat&bgImgOpacityContent=0&borderColorContent=%23eee&fcContent=%23333333&iconColorContent=%23cccccc&bgColorDefault=%23f5f5f5&bgTextureDefault=flat&bgImgOpacityDefault=0&borderColorDefault=%23dfdfdf&fcDefault=%23222&iconColorDefault=%23222&bgColorHover=%23e1e1e1&bgTextureHover=flat&bgImgOpacityHover=0&borderColorHover=%23dfdfdf&fcHover=%23222&iconColorHover=%23222&bgColorActive=%23e1e1e1&bgTextureActive=flat&bgImgOpacityActive=65&borderColorActive=%23dfdfdf&fcActive=%23222&iconColorActive=%23222&bgColorHighlight=%23e1e1e1&bgTextureHighlight=flat&bgImgOpacityHighlight=55&borderColorHighlight=%23dfdfdf&fcHighlight=%23222&iconColorHighlight=%23222&bgColorError=%23D54E21&bgTextureError=flat&bgImgOpacityError=0&borderColorError=%23D54E21&fcError=%23eee&iconColorError=%23eee&bgColorOverlay=%23333&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=%23aaaaaa&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=2px&offsetTopShadow=-2px&offsetLeftShadow=-2px&cornerRadiusShadow=2px
5
  * * Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */
6
+ .ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{min-height:0}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default !important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:.1px;display:block}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin-top:10px;padding:.5em .5em .5em .7em;border:1px solid #e5e5e5;min-height:0}.ui-accordion .ui-accordion-noicons{padding-left:.7em}.ui-accordion .ui-accordion-icons .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-header .ui-accordion-header-icon{position:absolute;right:.5em;left:initial;top:50%;margin-top:-8px;color:#a0a5aa}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border:1px solid #e5e5e5;border-top:0;overflow:auto;margin:0 0 10px 0;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.04) box-shadow:0 1px 1px rgba(0,0,0,.04)}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-button{display:inline-block;position:relative;padding:0;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2.2em}button.ui-button-icon-only{width:2.4em}.ui-button-icons-only{width:3.4em}button.ui-button-icons-only{width:3.7em}.ui-button .ui-button-text{display:block;line-height:normal}.ui-button-text-only .ui-button-text{padding:.4em 1em}.ui-button-icon-only .ui-button-text,.ui-button-icons-only .ui-button-text{padding:.4em;text-indent:-9999999px}.ui-button-text-icon-primary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 1em .4em 2.1em}.ui-button-text-icon-secondary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 2.1em .4em 1em}.ui-button-text-icons .ui-button-text{padding-left:2.1em;padding-right:2.1em}input.ui-button{padding:.4em 1em}.ui-button-icon-only .ui-icon,.ui-button-text-icon-primary .ui-icon,.ui-button-text-icon-secondary .ui-icon,.ui-button-text-icons .ui-icon,.ui-button-icons-only .ui-icon{position:absolute;top:50%;margin-top:-8px}.ui-button-icon-only .ui-icon{left:50%;margin-left:-8px}.ui-button-text-icon-primary .ui-button-icon-primary,.ui-button-text-icons .ui-button-icon-primary,.ui-button-icons-only .ui-button-icon-primary{left:.5em}.ui-button-text-icon-secondary .ui-button-icon-secondary,.ui-button-text-icons .ui-button-icon-secondary,.ui-button-icons-only .ui-button-icon-secondary{right:.5em}.ui-buttonset{margin-right:7px}.ui-buttonset .ui-button{margin-left:0;margin-right:-.3em}input.ui-button::-moz-focus-inner,button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:49%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-dialog{overflow:hidden;position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:20px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-se{width:12px;height:12px;right:-5px;bottom:-5px;background-position:16px 16px}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-menu{list-style:none;padding:2px;margin:0;display:block;outline:0}.ui-menu .ui-menu{margin-top:-3px;position:absolute}.ui-menu .ui-menu-item{margin:0;padding:0;width:100%;list-style-image:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)}.ui-menu .ui-menu-divider{margin:5px -2px 5px -2px;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-menu-item a{text-decoration:none;display:block;padding:2px .4em;line-height:1.5;min-height:0;font-weight:normal}.ui-menu .ui-menu-item a.ui-state-focus,.ui-menu .ui-menu-item a.ui-state-active{font-weight:normal;margin:-1px}.ui-menu .ui-state-disabled{font-weight:normal;margin:.4em 0 .2em;line-height:1.5}.ui-menu .ui-state-disabled a{cursor:default}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item a{position:relative;padding-left:2em}.ui-menu .ui-icon{position:absolute;top:.2em;left:.2em}.ui-menu .ui-menu-icon{position:static;float:right}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url("images/animated-overlay.gif");height:100%;filter:alpha(opacity=25);opacity:.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:0;background:none;color:inherit;padding:0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:22px}.ui-spinner-button{width:16px;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top:0;border-bottom:0;border-right:0}.ui-spinner .ui-icon{position:absolute;margin-top:-8px;top:50%;left:0}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-spinner .ui-icon-triangle-1-s{background-position:-65px -16px}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav .ui-tabs-anchor{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor{cursor:text}.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px;-webkit-box-shadow:0 0 5px #aaa;box-shadow:0 0 5px #aaa}body .ui-tooltip{border-width:2px}.ui-widget{font-family:"Open Sans",sans-serif;font-size:13px}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:"Open Sans",sans-serif;font-size:1em}.ui-widget-content{border:1px solid #eee;background:#fff url(images/ui-bg_flat_0_fff_40x100.png) 50% 50% repeat-x;color:#333}.ui-widget-content a{color:#333}.ui-widget-header{border:1px solid #333;background:#333 url(images/ui-bg_flat_0_333_40x100.png) 50% 50% repeat-x;color:#eee;font-weight:bold}.ui-widget-header a{color:#eee}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{background:#fff;font-weight:normal;color:#222}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#222;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{font-weight:normal;color:#222}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited{color:#222;text-decoration:none}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{background:#fff;font-weight:normal;color:#222}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#222;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #dfdfdf;background:#e1e1e1 url(images/ui-bg_flat_55_e1e1e1_40x100.png) 50% 50% repeat-x;color:#222}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#222}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #d54e21;background:#d54e21 url(images/ui-bg_flat_0_D54E21_40x100.png) 50% 50% repeat-x;color:#eee}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#eee}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#eee}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url(images/ui-icons_cccccc_256x240.png)}.ui-widget-header .ui-icon{background-image:url(images/ui-icons_eee_256x240.png)}.ui-state-default .ui-icon{background-image:url(images/ui-icons_999999_256x240.png)}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon{background-image:url(images/ui-icons_222_256x240.png)}.ui-state-active .ui-icon{background-image:url(images/ui-icons_222_256x240.png)}.ui-state-highlight .ui-icon{background-image:url(images/ui-icons_222_256x240.png)}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url(images/ui-icons_eee_256x240.png)}.ui-icon-blank{background-position:16px 16px}.ui-icon-carat-1-n{background-position:0 0}.ui-icon-carat-1-ne{background-position:-16px 0}.ui-icon-carat-1-e{background-position:-32px 0}.ui-icon-carat-1-se{background-position:-48px 0}.ui-icon-carat-1-s{background-position:-64px 0}.ui-icon-carat-1-sw{background-position:-80px 0}.ui-icon-carat-1-w{background-position:-96px 0}.ui-icon-carat-1-nw{background-position:-112px 0}.ui-icon-carat-2-n-s{background-position:-128px 0}.ui-icon-carat-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-64px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-64px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:0 -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:0}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:0}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:0}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:0}.ui-widget-overlay{background:#333 url(images/ui-bg_flat_0_333_40x100.png) 50% 50% repeat-x;opacity:.3;filter:Alpha(Opacity=30)}.ui-widget-shadow{margin:-2px 0 0 -2px;padding:2px;background:#aaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;opacity:.3;filter:Alpha(Opacity=30);border-radius:2px}.ui-tabs-nav .ui-corner-top{-khtml-border-top-left-radius:4px;-khtml-border-top-right-radius:4px;-moz-border-radius-topleft:4px;-moz-border-radius-topright:4px;-webkit-border-top-left-radius:4px;-webkit-border-top-right-radius:4px;border-top-left-radius:4px;border-top-right-radius:4px;border:1px solid #dfdfdf}.ngg_settings_template_wrapper .ui-combobox-input{padding:0 !important}.ui-tabs .ui-tabs-nav li{background:white;font-family:"HelveticaNeue-Light","Helvetica Neue Light","Helvetica Neue",sans-serif;margin-bottom:-1px;margin-right:.5em}.ui-tabs .ui-tabs-nav li a{color:#aaa;outline:0;font-size:120%}.ui-tabs .ui-tabs-nav li a:hover{color:#d54e21}.ui-tabs .ui-tabs-nav li.ui-tabs-active{padding-bottom:-1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active a{color:#464646}.ui-tabs .ui-tabs-nav li.ui-tabs-selected{border-top:1px solid #8a8a8a;border-right:1px solid #8a8a8a;border-left:1px solid #8a8a8a;border-bottom:1px solid #fff}.ui-tabs-icon+ul.ui-tabs-nav{-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;-khtml-border-bottom-left-radius:0;border-bottom-left-radius:0}.ui-tabs-icon{float:left;background:url('images/nextgen-logo-small.jpg') no-repeat left center;font-size:18px;font-family:HelveticaNeue-Light,'Helvetica Neue Light','Helvetica Neue',sans-serif;width:200px;height:40px}.ui-tabs-icon .nextgen_logo{display:none}.ui-tabs-icon .nextgen_logo_sub{display:none;font-size:14px}.ui-widget-overlay{background:#000 50% 50% repeat-x;opacity:.4;filter:Alpha(Opacity=40);filter:-\9}.ui-widget select{height:2em}.ui-autocomplete{z-index:250}h3.ui-accordion-header.ui-state-default,h3.ui-accordion-header{margin:3px 0 0 0;font-size:14px;font-weight:600;line-height:20px}h3.ui-accordion-header a:focus,h3.ui-accordion-header:focus{outline:0;box-shadow:none}h3.ui-accordion-header.ui-state-active{border-bottom:1px solid #eee}div.accordion{margin-top:10px}
products/photocrati_nextgen/modules/nextgen_admin/static/nextgen_admin_page.js CHANGED
@@ -4,7 +4,12 @@ jQuery(function($){
4
  $('.accordion').accordion({
5
  clearStyle: true,
6
  autoHeight: false,
7
- heightStyle: 'content'
 
 
 
 
 
8
  });
9
 
10
  // When a submit button is clicked...
4
  $('.accordion').accordion({
5
  clearStyle: true,
6
  autoHeight: false,
7
+ heightStyle: 'content',
8
+ collapsible: true,
9
+ icons: {
10
+ header: 'ui-icon-triangle-1-s',
11
+ activeHeader: 'ui-icon-triangle-1-n'
12
+ }
13
  });
14
 
15
  // When a submit button is clicked...
products/photocrati_nextgen/modules/nextgen_admin/static/nextgen_admin_page.min.js CHANGED
@@ -1 +1 @@
1
- eval(function(p,a,c,k,e,d){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--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[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}('t(a($){$(\'.o\').o({D:A,y:s,z:\'x\'});$(\'d[h="q"], 3[h="q"]\').j(a(e){5 $3=$(6);5 f=s;7((f=$3.2(\'k-m\'))){7(!m(f)){e.i();w}}7($3.2(\'b\').B(\'p\')!=-1){5 4=$3.2(\'k-C-4\');7(!4)4=$3.2(\'4\');5 g=$3.2(\'b\').E(\'p\',\'\');5 $9=$(\'d[b="\'+g+\'"]\');7($9.u>0)$9.v(4);n{$9=$(\'<d/>\').2({h:\'c\',b:g,4:4});$3.V(\'Y\').U($9)}}});$(\'.F\').S(\'j\',a(e){e.i();5 l=\'#\'+$(6).2(\'W\');5 8=$(6);$(l).X(R,\'Q\',a(){7($(6).J(\'c\')){$(6).I(\'c\');8.r(8.2(\'H\'))}n{$(6).G(\'c\');8.r(8.2(\'K\'))}})});$(\'d.L\').P();$(\'#O\').N(\'M\',\'T\')});',61,61,'||attr|button|value|var|this|if|btn|field|function|name|hidden|input||message|field_name|type|preventDefault|click|data|form_id|confirm|else|accordion|_proxy|submit|text|false|jQuery|length|val|return|content|autoHeight|heightStyle|true|indexOf|proxy|clearStyle|replace|nextgen_advanced_toggle_link|addClass|active_label|removeClass|hasClass|hidden_label|nextgen_settings_field_colorpicker|visibility|css|ngg_page_content|wpColorPicker|swing|500|on|visible|append|parents|rel|toggle|form'.split('|'),0,{}))
1
+ eval(function(p,a,c,k,e,d){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--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[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}('C(a($){$(\'.t\').t({z:x,A:p,E:\'L\',J:x,I:{G:\'r-v-j-1-s\',H:\'r-v-j-1-n\'}});$(\'d[f="q"], 4[f="q"]\').l(a(e){5 $4=$(6);5 g=p;7((g=$4.2(\'i-o\'))){7(!o(g)){e.k();F}}7($4.2(\'c\').K(\'y\')!=-1){5 3=$4.2(\'i-D-3\');7(!3)3=$4.2(\'3\');5 h=$4.2(\'c\').B(\'y\',\'\');5 $8=$(\'d[c="\'+h+\'"]\');7($8.14>0)$8.13(3);w{$8=$(\'<d/>\').2({f:\'b\',c:h,3:3});$4.M(\'11\').10($8)}}});$(\'.15\').16(\'l\',a(e){e.k();5 m=\'#\'+$(6).2(\'17\');5 9=$(6);$(m).Z(Y,\'R\',a(){7($(6).Q(\'b\')){$(6).P(\'b\');9.u(9.2(\'N\'))}w{$(6).O(\'b\');9.u(9.2(\'S\'))}})});$(\'d.T\').X();$(\'#W\').V(\'U\',\'12\')});',62,70,'||attr|value|button|var|this|if|field|btn|function|hidden|name|input||type|message|field_name|data|triangle|preventDefault|click|form_id||confirm|false|submit|ui||accordion|text|icon|else|true|_proxy|clearStyle|autoHeight|replace|jQuery|proxy|heightStyle|return|header|activeHeader|icons|collapsible|indexOf|content|parents|active_label|addClass|removeClass|hasClass|swing|hidden_label|nextgen_settings_field_colorpicker|visibility|css|ngg_page_content|wpColorPicker|500|toggle|append|form|visible|val|length|nextgen_advanced_toggle_link|on|rel'.split('|'),0,{}))
products/photocrati_nextgen/modules/nextgen_basic_album/module.nextgen_basic_album.php CHANGED
@@ -53,8 +53,8 @@ class M_NextGen_Basic_Album extends C_Base_Module
53
  'A_NextGen_Basic_Album'
54
  );
55
 
56
-
57
- if (!is_admin()) {
58
  // Add a controller for displaying albums on the front-end
59
  $this->get_registry()->add_adapter(
60
  'I_Display_Type_Controller',
@@ -106,11 +106,11 @@ class M_NextGen_Basic_Album extends C_Base_Module
106
 
107
  function _register_hooks()
108
  {
109
- if (!is_admin()) {
110
- if (!defined('NGG_DISABLE_LEGACY_SHORTCODES') || !NGG_DISABLE_LEGACY_SHORTCODES) {
111
- C_NextGen_Shortcode_Manager::add('album', array(&$this, 'ngglegacy_shortcode'));
112
- C_NextGen_Shortcode_Manager::add('nggalbum', array(&$this, 'ngglegacy_shortcode'));
113
- }
114
  }
115
  }
116
 
53
  'A_NextGen_Basic_Album'
54
  );
55
 
56
+ if (apply_filters('ngg_load_frontend_logic', TRUE, $this->module_id))
57
+ {
58
  // Add a controller for displaying albums on the front-end
59
  $this->get_registry()->add_adapter(
60
  'I_Display_Type_Controller',
106
 
107
  function _register_hooks()
108
  {
109
+ if (apply_filters('ngg_load_frontend_logic', TRUE, $this->module_id)
110
+ && (!defined('NGG_DISABLE_LEGACY_SHORTCODES') || !NGG_DISABLE_LEGACY_SHORTCODES))
111
+ {
112
+ C_NextGen_Shortcode_Manager::add('album', array(&$this, 'ngglegacy_shortcode'));
113
+ C_NextGen_Shortcode_Manager::add('nggalbum', array(&$this, 'ngglegacy_shortcode'));
114
  }
115
  }
116
 
products/photocrati_nextgen/modules/nextgen_basic_gallery/module.nextgen_basic_gallery.php CHANGED
@@ -80,8 +80,8 @@ class M_NextGen_Basic_Gallery extends C_Base_Module
80
  }
81
 
82
  // Frontend-only components
83
- if (!is_admin()) {
84
-
85
  // Provides the controllers for the display types
86
  $this->get_registry()->add_adapter(
87
  'I_Display_Type_Controller',
@@ -127,7 +127,8 @@ class M_NextGen_Basic_Gallery extends C_Base_Module
127
 
128
  function _register_hooks()
129
  {
130
- if (!is_admin() && ((!defined('NGG_DISABLE_LEGACY_SHORTCODES') || !NGG_DISABLE_LEGACY_SHORTCODES)))
 
131
  {
132
  C_NextGen_Shortcode_Manager::add('random', array(&$this, 'render_random_images'));
133
  C_NextGen_Shortcode_Manager::add('recent', array(&$this, 'render_recent_images'));
80
  }
81
 
82
  // Frontend-only components
83
+ if (apply_filters('ngg_load_frontend_logic', TRUE, $this->module_id))
84
+ {
85
  // Provides the controllers for the display types
86
  $this->get_registry()->add_adapter(
87
  'I_Display_Type_Controller',
127
 
128
  function _register_hooks()
129
  {
130
+ if (apply_filters('ngg_load_frontend_logic', TRUE, $this->module_id)
131
+ && (!defined('NGG_DISABLE_LEGACY_SHORTCODES') || !NGG_DISABLE_LEGACY_SHORTCODES))
132
  {
133
  C_NextGen_Shortcode_Manager::add('random', array(&$this, 'render_random_images'));
134
  C_NextGen_Shortcode_Manager::add('recent', array(&$this, 'render_recent_images'));
products/photocrati_nextgen/modules/nextgen_basic_gallery/package.module.nextgen_basic_gallery.php CHANGED
@@ -411,7 +411,6 @@ class A_NextGen_Basic_Thumbnails_Controller extends Mixin
411
  */
412
  public function initialize()
413
  {
414
- parent::initialize();
415
  $this->add_mixin('Mixin_NextGen_Basic_Pagination');
416
  }
417
  /**
411
  */
412
  public function initialize()
413
  {
 
414
  $this->add_mixin('Mixin_NextGen_Basic_Pagination');
415
  }
416
  /**
products/photocrati_nextgen/modules/nextgen_basic_imagebrowser/module.nextgen_basic_imagebrowser.php CHANGED
@@ -68,10 +68,12 @@ class M_NextGen_Basic_ImageBrowser extends C_Base_Module
68
  );
69
  }
70
 
71
- if (!is_admin()) {
 
72
  // Add rendering logic
73
  $this->get_registry()->add_adapter(
74
- 'I_Display_Type_Controller', 'A_NextGen_Basic_ImageBrowser_Controller',
 
75
  $this->module_id
76
  );
77
  }
@@ -79,7 +81,9 @@ class M_NextGen_Basic_ImageBrowser extends C_Base_Module
79
 
80
  function _register_hooks()
81
  {
82
- if (!is_admin() && ((!defined('NGG_DISABLE_LEGACY_SHORTCODES') || !NGG_DISABLE_LEGACY_SHORTCODES))) {
 
 
83
  C_NextGen_Shortcode_Manager::add('imagebrowser', array(&$this, 'render_shortcode'));
84
  C_NextGen_Shortcode_Manager::add('nggimagebrowser', array(&$this, 'render_shortcode'));
85
  }
68
  );
69
  }
70
 
71
+ if (apply_filters('ngg_load_frontend_logic', TRUE, $this->module_id))
72
+ {
73
  // Add rendering logic
74
  $this->get_registry()->add_adapter(
75
+ 'I_Display_Type_Controller',
76
+ 'A_NextGen_Basic_ImageBrowser_Controller',
77
  $this->module_id
78
  );
79
  }
81
 
82
  function _register_hooks()
83
  {
84
+ if (apply_filters('ngg_load_frontend_logic', TRUE, $this->module_id)
85
+ && (!defined('NGG_DISABLE_LEGACY_SHORTCODES') || !NGG_DISABLE_LEGACY_SHORTCODES))
86
+ {
87
  C_NextGen_Shortcode_Manager::add('imagebrowser', array(&$this, 'render_shortcode'));
88
  C_NextGen_Shortcode_Manager::add('nggimagebrowser', array(&$this, 'render_shortcode'));
89
  }
products/photocrati_nextgen/modules/nextgen_basic_singlepic/module.nextgen_basic_singlepic.php CHANGED
@@ -56,7 +56,8 @@ class M_NextGen_Basic_Singlepic extends C_Base_Module
56
  );
57
  }
58
 
59
- if (!is_admin()) {
 
60
  // Provides settings fields and frontend rendering
61
  $this->get_registry()->add_adapter(
62
  'I_Display_Type_Controller',
@@ -68,7 +69,9 @@ class M_NextGen_Basic_Singlepic extends C_Base_Module
68
 
69
  function _register_hooks()
70
  {
71
- if (!is_admin() && (!defined('NGG_DISABLE_LEGACY_SHORTCODES') || !NGG_DISABLE_LEGACY_SHORTCODES)) {
 
 
72
  C_NextGen_Shortcode_Manager::add('singlepic', array(&$this, 'render_singlepic'));
73
  C_NextGen_Shortcode_Manager::add('nggsinglepic', array(&$this, 'render_singlepic'));
74
 
56
  );
57
  }
58
 
59
+ if (apply_filters('ngg_load_frontend_logic', TRUE, $this->module_id))
60
+ {
61
  // Provides settings fields and frontend rendering
62
  $this->get_registry()->add_adapter(
63
  'I_Display_Type_Controller',
69
 
70
  function _register_hooks()
71
  {
72
+ if (apply_filters('ngg_load_frontend_logic', TRUE, $this->module_id)
73
+ && (!defined('NGG_DISABLE_LEGACY_SHORTCODES') || !NGG_DISABLE_LEGACY_SHORTCODES))
74
+ {
75
  C_NextGen_Shortcode_Manager::add('singlepic', array(&$this, 'render_singlepic'));
76
  C_NextGen_Shortcode_Manager::add('nggsinglepic', array(&$this, 'render_singlepic'));
77
 
products/photocrati_nextgen/modules/nextgen_basic_tagcloud/module.nextgen_basic_tagcloud.php CHANGED
@@ -40,7 +40,8 @@ class M_NextGen_Basic_Tagcloud extends C_Base_Module
40
 
41
  function _register_utilities()
42
  {
43
- if (!is_admin()) $this->get_registry()->add_utility('I_Taxonomy_Controller', 'C_Taxonomy_Controller');
 
44
  }
45
 
46
  function _register_adapters()
@@ -67,7 +68,8 @@ class M_NextGen_Basic_Tagcloud extends C_Base_Module
67
  );
68
  }
69
 
70
- if (!is_admin()) {
 
71
  // Provides settings fields and frontend rendering
72
  $this->get_registry()->add_adapter(
73
  'I_Display_Type_Controller',
@@ -85,7 +87,9 @@ class M_NextGen_Basic_Tagcloud extends C_Base_Module
85
 
86
  function _register_hooks()
87
  {
88
- if (!is_admin() && (!defined('NGG_DISABLE_LEGACY_SHORTCODES') || !NGG_DISABLE_LEGACY_SHORTCODES)) {
 
 
89
  C_NextGen_Shortcode_Manager::add('tagcloud', array(&$this, 'render_shortcode'));
90
  C_NextGen_Shortcode_Manager::add('nggtagcloud', array(&$this, 'render_shortcode'));
91
 
40
 
41
  function _register_utilities()
42
  {
43
+ if (apply_filters('ngg_load_frontend_logic', TRUE, $this->module_id))
44
+ $this->get_registry()->add_utility('I_Taxonomy_Controller', 'C_Taxonomy_Controller');
45
  }
46
 
47
  function _register_adapters()
68
  );
69
  }
70
 
71
+ if (apply_filters('ngg_load_frontend_logic', TRUE, $this->module_id))
72
+ {
73
  // Provides settings fields and frontend rendering
74
  $this->get_registry()->add_adapter(
75
  'I_Display_Type_Controller',
87
 
88
  function _register_hooks()
89
  {
90
+ if (apply_filters('ngg_load_frontend_logic', TRUE, $this->module_id)
91
+ && (!defined('NGG_DISABLE_LEGACY_SHORTCODES') || !NGG_DISABLE_LEGACY_SHORTCODES))
92
+ {
93
  C_NextGen_Shortcode_Manager::add('tagcloud', array(&$this, 'render_shortcode'));
94
  C_NextGen_Shortcode_Manager::add('nggtagcloud', array(&$this, 'render_shortcode'));
95
 
products/photocrati_nextgen/modules/nextgen_basic_templates/package.module.nextgen_basic_templates.php CHANGED
@@ -199,7 +199,7 @@ class Mixin_Legacy_Template_Locator extends Mixin
199
  */
200
  public function get_template_directories()
201
  {
202
- return array('Child Theme' => get_stylesheet_directory() . DIRECTORY_SEPARATOR . 'nggallery' . DIRECTORY_SEPARATOR, 'Parent Theme' => get_template_directory() . DIRECTORY_SEPARATOR . 'nggallery' . DIRECTORY_SEPARATOR, 'NextGEN Legacy' => NGGALLERY_ABSPATH . 'view' . DIRECTORY_SEPARATOR, 'NextGEN Overrides' => implode(DIRECTORY_SEPARATOR, array(WP_CONTENT_DIR, 'ngg', 'legacy', 'templates')));
203
  }
204
  /**
205
  * Returns an array of all available template files
199
  */
200
  public function get_template_directories()
201
  {
202
+ return apply_filters('ngg_legacy_template_directories', array('Child Theme' => get_stylesheet_directory() . DIRECTORY_SEPARATOR . 'nggallery' . DIRECTORY_SEPARATOR, 'Parent Theme' => get_template_directory() . DIRECTORY_SEPARATOR . 'nggallery' . DIRECTORY_SEPARATOR, 'NextGEN Legacy' => NGGALLERY_ABSPATH . 'view' . DIRECTORY_SEPARATOR, 'NextGEN Overrides' => implode(DIRECTORY_SEPARATOR, array(WP_CONTENT_DIR, 'ngg', 'legacy', 'templates'))));
203
  }
204
  /**
205
  * Returns an array of all available template files
products/photocrati_nextgen/modules/nextgen_data/package.module.nextgen_data.php CHANGED
@@ -362,7 +362,6 @@ class Mixin_Gallery_Mapper extends Mixin
362
  {
363
  $retval = FALSE;
364
  if ($gallery) {
365
- $retval = $this->call_parent('destroy', $gallery);
366
  $gallery_id = is_numeric($gallery) ? $gallery : $gallery->{$gallery->id_field};
367
  // TODO: Look into making this operation more efficient
368
  if ($with_dependencies) {
@@ -371,7 +370,7 @@ class Mixin_Gallery_Mapper extends Mixin
371
  $settings = C_NextGen_Settings::get_instance();
372
  if ($settings->deleteImg) {
373
  $storage = C_Gallery_Storage::get_instance();
374
- $storage->delete_gallery();
375
  }
376
  // Delete the image records from the DB
377
  $image_mapper->delete()->where(array('galleryid = %d', $gallery_id))->run_query();
@@ -380,8 +379,9 @@ class Mixin_Gallery_Mapper extends Mixin
380
  // Delete tag associations no longer needed. The following SQL statement
381
  // deletes all tag associates for images that no longer exist
382
  global $wpdb;
383
- $wpdb->query("\n\t\t\t\t\tDELETE FROM {$wpdb->term_relationships}\n\t\t\t\t\tINNER JOIN {$wpdb->term_taxonomy}\n\t\t\t\t\tON {$wpdb->term_taxonomy}.term_taxonomy_id = {$wpdb->term_relationships}.term_taxonomy_id\n\t\t\t\t\tWHERE {$wpdb->term_taxonomy}.term_taxonomy_id = {$wpdb->term_relationships}.term_taxonomy_id\n\t\t\t\t\tAND {$wpdb->term_taxonomy}.taxonomy = 'ngg_tag'\n\t\t\t\t\tAND {$wpdb->term_relationships}.object_id NOT IN (SELECT {$image_key} FROM {$image_table})");
384
  }
 
385
  if ($retval) {
386
  do_action('ngg_delete_gallery', $gallery);
387
  C_Photocrati_Transient_Manager::flush('displayed_gallery_rendering');
@@ -951,44 +951,22 @@ class Mixin_GalleryStorage_Driver_Base extends Mixin
951
  {
952
  return $this->object->copy_images($images, $gallery, $db, TRUE);
953
  }
954
- public function is_image_file()
955
  {
956
  $retval = FALSE;
957
- if (isset($_FILES['file']) && $_FILES['file']['error'] == 0) {
958
- $file_info = $_FILES['file'];
959
  $filename = $_FILES['file']['tmp_name'];
960
- if (isset($file_info['type'])) {
961
- $type = strtolower($file_info['type']);
962
- $valid_types = array('image/gif', 'image/jpg', 'image/jpeg', 'image/pjpeg', 'image/png');
963
- $valid_regex = '/\\.(jpg|jpeg|gif|png)$/i';
964
- // Is this a valid type?
965
- if (in_array($type, $valid_types)) {
966
- // If we can, we'll verify the mime type
967
- if (function_exists('exif_imagetype')) {
968
- if (($image_type = @exif_imagetype($filename)) !== FALSE) {
969
- $retval = in_array(image_type_to_mime_type($image_type), $valid_types);
970
- }
971
- } else {
972
- $file_info = @getimagesize($filename);
973
- if (isset($file_info[2])) {
974
- $retval = in_array(image_type_to_mime_type($file_info[2]), $valid_types);
975
- }
976
- }
977
- } else {
978
- if (strpos($type, 'octet-stream') !== FALSE && preg_match($valid_regex, $type)) {
979
- // If we can, we'll verify the mime type
980
- if (function_exists('exif_imagetype')) {
981
- if (($image_type = @exif_imagetype($filename)) !== FALSE) {
982
- $retval = in_array(image_type_to_mime_type($image_type), $valid_types);
983
- }
984
- } else {
985
- $file_info = @getimagesize($filename);
986
- if (isset($file_info[2])) {
987
- $retval = in_array(image_type_to_mime_type($file_info[2]), $valid_types);
988
- }
989
- }
990
- }
991
- }
992
  }
993
  }
994
  return $retval;
@@ -1201,6 +1179,7 @@ class Mixin_GalleryStorage_Driver_Base extends Mixin
1201
  {
1202
  $retval = FALSE;
1203
  if (@file_exists($abspath)) {
 
1204
  // Ensure that this folder has images
1205
  $files_all = scandir($abspath);
1206
  $files = array();
@@ -1209,11 +1188,12 @@ class Mixin_GalleryStorage_Driver_Base extends Mixin
1209
  if ($file == '.' || $file == '..') {
1210
  continue;
1211
  }
1212
- $files[] = $file;
 
 
1213
  }
1214
  if (!empty($files)) {
1215
  // Get needed utilities
1216
- $fs = C_Fs::get_instance();
1217
  $gallery_mapper = C_Gallery_Mapper::get_instance();
1218
  // Sometimes users try importing a directory, which actually has all images under another directory
1219
  $first_file_abspath = $fs->join_paths($abspath, $files[0]);
@@ -3006,7 +2986,7 @@ class Mixin_NggLegacy_GalleryStorage_Driver extends Mixin
3006
  break;
3007
  case 'backup':
3008
  $retval = $fs->join_paths($gallery_path, $image->filename . '_backup');
3009
- if ($check_existance && !file_exists($retval)) {
3010
  $retval = $fs->join_paths($gallery_path, $image->filename);
3011
  }
3012
  break;
@@ -3038,7 +3018,7 @@ class Mixin_NggLegacy_GalleryStorage_Driver extends Mixin
3038
  }
3039
  // Check the existance of the file
3040
  if ($retval && $check_existance) {
3041
- if (!file_exists($retval)) {
3042
  $retval = NULL;
3043
  }
3044
  }
@@ -3353,6 +3333,11 @@ class Mixin_NggLegacy_GalleryStorage_Driver extends Mixin
3353
  if ($gallery_abspath = $this->object->get_gallery_abspath($gallery)) {
3354
  $fs = C_Fs::get_instance();
3355
  $retval = $fs->delete($gallery_abspath);
 
 
 
 
 
3356
  }
3357
  return $retval;
3358
  }
@@ -3452,7 +3437,7 @@ class Mixin_NggLegacy_GalleryStorage_Driver extends Mixin
3452
  $target_path = path_join($thumbs_dir, $target_relpath);
3453
  $max_count = 100;
3454
  $count = 0;
3455
- while (file_exists($target_path) && $count <= $max_count) {
3456
  $count++;
3457
  $pathinfo = M_I18n::mb_pathinfo($target_path);
3458
  $dirname = $pathinfo['dirname'];
@@ -3462,7 +3447,7 @@ class Mixin_NggLegacy_GalleryStorage_Driver extends Mixin
3462
  $basename = $filename . '_' . sprintf('%04d', $rand) . '.' . $extension;
3463
  $target_path = path_join($dirname, $basename);
3464
  }
3465
- if (file_exists($target_path)) {
3466
  }
3467
  $target_dir = dirname($target_path);
3468
  wp_mkdir_p($target_dir);
@@ -3479,7 +3464,6 @@ class Mixin_NggLegacy_GalleryStorage_Driver extends Mixin
3479
  }
3480
  update_post_meta($attachment_id, '_ngg_image_id', $image->{$image->id_field});
3481
  wp_update_attachment_metadata($attachment_id, wp_generate_attachment_metadata($attachment_id, $target_path));
3482
- set_post_thumbnail($post_id, $attachment_id);
3483
  }
3484
  }
3485
  return $attachment_id;
@@ -3622,7 +3606,7 @@ class Mixin_NggLegacy_GalleryStorage_Driver extends Mixin
3622
  if ($image) {
3623
  $full_abspath = $this->object->get_image_abspath($image);
3624
  $backup_abspath = $this->object->get_image_abspath($image, 'backup');
3625
- if ($backup_abspath != $full_abspath && file_exists($backup_abspath)) {
3626
  if (is_writable($full_abspath) && is_writable(dirname($full_abspath))) {
3627
  // Copy the backup
3628
  if (@copy($backup_abspath, $full_abspath)) {
362
  {
363
  $retval = FALSE;
364
  if ($gallery) {
 
365
  $gallery_id = is_numeric($gallery) ? $gallery : $gallery->{$gallery->id_field};
366
  // TODO: Look into making this operation more efficient
367
  if ($with_dependencies) {
370
  $settings = C_NextGen_Settings::get_instance();
371
  if ($settings->deleteImg) {
372
  $storage = C_Gallery_Storage::get_instance();
373
+ $storage->delete_gallery($gallery);
374
  }
375
  // Delete the image records from the DB
376
  $image_mapper->delete()->where(array('galleryid = %d', $gallery_id))->run_query();
379
  // Delete tag associations no longer needed. The following SQL statement
380
  // deletes all tag associates for images that no longer exist
381
  global $wpdb;
382
+ $wpdb->query("\n\t\t\t\t\tDELETE wptr.* FROM {$wpdb->term_relationships} wptr\n\t\t\t\t\tINNER JOIN {$wpdb->term_taxonomy} wptt\n\t\t\t\t\tON wptt.term_taxonomy_id = wptr.term_taxonomy_id\n\t\t\t\t\tWHERE wptt.term_taxonomy_id = wptr.term_taxonomy_id\n\t\t\t\t\tAND wptt.taxonomy = 'ngg_tag'\n\t\t\t\t\tAND wptr.object_id NOT IN (SELECT {$image_key} FROM {$image_table})");
383
  }
384
+ $retval = $this->call_parent('destroy', $gallery);
385
  if ($retval) {
386
  do_action('ngg_delete_gallery', $gallery);
387
  C_Photocrati_Transient_Manager::flush('displayed_gallery_rendering');
951
  {
952
  return $this->object->copy_images($images, $gallery, $db, TRUE);
953
  }
954
+ public function is_image_file($filename = NULL)
955
  {
956
  $retval = FALSE;
957
+ if (!$filename && isset($_FILES['file']) && $_FILES['file']['error'] == 0) {
 
958
  $filename = $_FILES['file']['tmp_name'];
959
+ }
960
+ $valid_types = array('image/gif', 'image/jpg', 'image/jpeg', 'image/pjpeg', 'image/png');
961
+ // If we can, we'll verify the mime type
962
+ if (function_exists('exif_imagetype')) {
963
+ if (($image_type = @exif_imagetype($filename)) !== FALSE) {
964
+ $retval = in_array(image_type_to_mime_type($image_type), $valid_types);
965
+ }
966
+ } else {
967
+ $file_info = @getimagesize($filename);
968
+ if (isset($file_info[2])) {
969
+ $retval = in_array(image_type_to_mime_type($file_info[2]), $valid_types);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
970
  }
971
  }
972
  return $retval;
1179
  {
1180
  $retval = FALSE;
1181
  if (@file_exists($abspath)) {
1182
+ $fs = C_Fs::get_instance();
1183
  // Ensure that this folder has images
1184
  $files_all = scandir($abspath);
1185
  $files = array();
1188
  if ($file == '.' || $file == '..') {
1189
  continue;
1190
  }
1191
+ if ($this->object->is_image_file($fs->join_paths($abspath, $file))) {
1192
+ $files[] = $file;
1193
+ }
1194
  }
1195
  if (!empty($files)) {
1196
  // Get needed utilities
 
1197
  $gallery_mapper = C_Gallery_Mapper::get_instance();
1198
  // Sometimes users try importing a directory, which actually has all images under another directory
1199
  $first_file_abspath = $fs->join_paths($abspath, $files[0]);
2986
  break;
2987
  case 'backup':
2988
  $retval = $fs->join_paths($gallery_path, $image->filename . '_backup');
2989
+ if ($check_existance && !@file_exists($retval)) {
2990
  $retval = $fs->join_paths($gallery_path, $image->filename);
2991
  }
2992
  break;
3018
  }
3019
  // Check the existance of the file
3020
  if ($retval && $check_existance) {
3021
+ if (!@file_exists($retval)) {
3022
  $retval = NULL;
3023
  }
3024
  }
3333
  if ($gallery_abspath = $this->object->get_gallery_abspath($gallery)) {
3334
  $fs = C_Fs::get_instance();
3335
  $retval = $fs->delete($gallery_abspath);
3336
+ if ($retval) {
3337
+ @rmdir($fs->join_paths($gallery_abspath, 'thumbs'));
3338
+ @rmdir($fs->join_paths($gallery_abspath, 'dynamic'));
3339
+ @rmdir($gallery_abspath);
3340
+ }
3341
  }
3342
  return $retval;
3343
  }
3437
  $target_path = path_join($thumbs_dir, $target_relpath);
3438
  $max_count = 100;
3439
  $count = 0;
3440
+ while (@file_exists($target_path) && $count <= $max_count) {
3441
  $count++;
3442
  $pathinfo = M_I18n::mb_pathinfo($target_path);
3443
  $dirname = $pathinfo['dirname'];
3447
  $basename = $filename . '_' . sprintf('%04d', $rand) . '.' . $extension;
3448
  $target_path = path_join($dirname, $basename);
3449
  }
3450
+ if (@file_exists($target_path)) {
3451
  }
3452
  $target_dir = dirname($target_path);
3453
  wp_mkdir_p($target_dir);
3464
  }
3465
  update_post_meta($attachment_id, '_ngg_image_id', $image->{$image->id_field});
3466
  wp_update_attachment_metadata($attachment_id, wp_generate_attachment_metadata($attachment_id, $target_path));
 
3467
  }
3468
  }
3469
  return $attachment_id;
3606
  if ($image) {
3607
  $full_abspath = $this->object->get_image_abspath($image);
3608
  $backup_abspath = $this->object->get_image_abspath($image, 'backup');
3609
+ if ($backup_abspath != $full_abspath && @file_exists($backup_abspath)) {
3610
  if (is_writable($full_abspath) && is_writable(dirname($full_abspath))) {
3611
  // Copy the backup
3612
  if (@copy($backup_abspath, $full_abspath)) {
products/photocrati_nextgen/modules/nextgen_gallery_display/module.nextgen_gallery_display.php CHANGED
@@ -38,8 +38,8 @@ class M_Gallery_Display extends C_Base_Module
38
  function _register_utilities()
39
  {
40
  // Register frontend-only components
41
- if (!is_admin()) {
42
-
43
  // This utility provides a controller to render the settings form
44
  // for a display type, or render the front-end of a display type
45
  $this->get_registry()->add_utility(
@@ -94,7 +94,8 @@ class M_Gallery_Display extends C_Base_Module
94
  }
95
 
96
  // Frontend-only components
97
- if (!is_admin()) {
 
98
  $this->get_registry()->add_adapter('I_MVC_View', 'A_Gallery_Display_View');
99
  $this->get_registry()->add_adapter('I_MVC_View', 'A_Displayed_Gallery_Trigger_Element');
100
  $this->get_registry()->add_adapter('I_Display_Type_Controller', 'A_Displayed_Gallery_Trigger_Resources');
@@ -106,7 +107,8 @@ class M_Gallery_Display extends C_Base_Module
106
  */
107
  function _register_hooks()
108
  {
109
- if (!is_admin()) {
 
110
  C_NextGen_Shortcode_Manager::add('ngg_images', array(&$this, 'display_images'));
111
  add_action('wp_enqueue_scripts', array(&$this, 'no_resources_mode'), PHP_INT_MAX-1);
112
  add_filter('the_content', array($this, '_render_related_images'));
@@ -365,7 +367,8 @@ class M_Gallery_Display extends C_Base_Module
365
  $router->get_static_url('photocrati-nextgen_gallery_display#nextgen_gallery_display_settings.css')
366
  );
367
 
368
- if (!is_admin()) {
 
369
  wp_register_style(
370
  'nextgen_gallery_related_images',
371
  $router->get_static_url('photocrati-nextgen_gallery_display#nextgen_gallery_related_images.css')
38
  function _register_utilities()
39
  {
40
  // Register frontend-only components
41
+ if (apply_filters('ngg_load_frontend_logic', TRUE, $this->module_id))
42
+ {
43
  // This utility provides a controller to render the settings form
44
  // for a display type, or render the front-end of a display type
45
  $this->get_registry()->add_utility(
94
  }
95
 
96
  // Frontend-only components
97
+ if (apply_filters('ngg_load_frontend_logic', TRUE, $this->module_id))
98
+ {
99
  $this->get_registry()->add_adapter('I_MVC_View', 'A_Gallery_Display_View');
100
  $this->get_registry()->add_adapter('I_MVC_View', 'A_Displayed_Gallery_Trigger_Element');
101
  $this->get_registry()->add_adapter('I_Display_Type_Controller', 'A_Displayed_Gallery_Trigger_Resources');
107
  */
108
  function _register_hooks()
109
  {
110
+ if (apply_filters('ngg_load_frontend_logic', TRUE, $this->module_id))
111
+ {
112
  C_NextGen_Shortcode_Manager::add('ngg_images', array(&$this, 'display_images'));
113
  add_action('wp_enqueue_scripts', array(&$this, 'no_resources_mode'), PHP_INT_MAX-1);
114
  add_filter('the_content', array($this, '_render_related_images'));
367
  $router->get_static_url('photocrati-nextgen_gallery_display#nextgen_gallery_display_settings.css')
368
  );
369
 
370
+ if (apply_filters('ngg_load_frontend_logic', TRUE, $this->module_id))
371
+ {
372
  wp_register_style(
373
  'nextgen_gallery_related_images',
374
  $router->get_static_url('photocrati-nextgen_gallery_display#nextgen_gallery_related_images.css')
products/photocrati_nextgen/modules/nextgen_gallery_display/package.module.nextgen_gallery_display.php CHANGED
@@ -616,7 +616,8 @@ class Mixin_Displayed_Gallery_Validation extends Mixin
616
  }
617
  // If no maximum_entity_count has been given, then set a maximum
618
  if (!isset($this->object->maximum_entity_count)) {
619
- $this->object->maximum_entity_count = C_Photocrati_Settings_Manager::get('maximum_entity_count', 500);
 
620
  }
621
  } else {
622
  $this->object->add_error('Invalid display type', 'display_type');
@@ -1577,7 +1578,7 @@ class Mixin_Displayed_Gallery_Renderer extends Mixin
1577
  // Simply throwing our rendered gallery into a feed will most likely not work correctly.
1578
  // The MediaRSS option in NextGEN is available as an alternative.
1579
  if (!C_NextGen_Settings::get_instance()->galleries_in_feeds && is_feed()) {
1580
- return '';
1581
  }
1582
  if ($mode == null) {
1583
  $mode = 'normal';
616
  }
617
  // If no maximum_entity_count has been given, then set a maximum
618
  if (!isset($this->object->maximum_entity_count)) {
619
+ $settings = C_NextGen_Settings::get_instance();
620
+ $this->object->maximum_entity_count = $settings->get('maximum_entity_count', 500);
621
  }
622
  } else {
623
  $this->object->add_error('Invalid display type', 'display_type');
1578
  // Simply throwing our rendered gallery into a feed will most likely not work correctly.
1579
  // The MediaRSS option in NextGEN is available as an alternative.
1580
  if (!C_NextGen_Settings::get_instance()->galleries_in_feeds && is_feed()) {
1581
+ return sprintf(__(' [<a href="%s">See image gallery at %s</a>] ', 'nggallery'), esc_url(apply_filters('the_permalink_rss', get_permalink())), $_SERVER['SERVER_NAME']);
1582
  }
1583
  if ($mode == null) {
1584
  $mode = 'normal';
products/photocrati_nextgen/modules/nextgen_settings/module.nextgen_settings.php CHANGED
@@ -112,7 +112,7 @@ class C_NextGen_Settings_Installer
112
  'wmPos' => 'botRight', // Postion
113
  'wmXpos' => 5, // X Pos
114
  'wmYpos' => 5, // Y Pos
115
- 'wmType' => 0, // Type : 'image' / 'text'
116
  'wmPath' => '', // Path to image
117
  'wmFont' => 'arial.ttf', // Font type
118
  'wmSize' => 10, // Font Size
@@ -121,30 +121,14 @@ class C_NextGen_Settings_Installer
121
  'wmOpaque' => '100', // Font Opaque
122
 
123
  // Image Rotator settings
124
- 'enableIR' => 0,
125
- 'slideFx' => 'fade',
126
- 'irURL' => '',
127
- 'irXHTMLvalid' => 0,
128
- 'irAudio' => '',
129
- 'irWidth' => 600,
130
- 'irHeight' => 400,
131
- 'irShuffle' => True,
132
- 'irLinkfromdisplay' => True,
133
- 'irShownavigation' => 0,
134
- 'irShowicons' => 0,
135
- 'irWatermark' => 0,
136
- 'irOverstretch' => 'True',
137
- 'irRotatetime' => 10,
138
- 'irTransition' => 'random',
139
- 'irKenburns' => 0,
140
- 'irBackcolor' => '000000',
141
- 'irFrontcolor' => 'FFFFFF',
142
- 'irLightcolor' => 'CC0000',
143
- 'irScreencolor' => '000000',
144
 
145
  // CSS Style
146
- 'activateCSS' => 1, // activate the CSS file
147
- 'CSSfile' => 'nggallery.css', // set default css filename
148
  );
149
  }
150
 
112
  'wmPos' => 'botRight', // Postion
113
  'wmXpos' => 5, // X Pos
114
  'wmYpos' => 5, // Y Pos
115
+ 'wmType' => 0, // Type : 'image' / 'text'
116
  'wmPath' => '', // Path to image
117
  'wmFont' => 'arial.ttf', // Font type
118
  'wmSize' => 10, // Font Size
121
  'wmOpaque' => '100', // Font Opaque
122
 
123
  // Image Rotator settings
124
+ 'slideFX' => 'fade',
125
+ 'irWidth' => 600,
126
+ 'irHeight' => 400,
127
+ 'irRotatetime' => 10,
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
128
 
129
  // CSS Style
130
+ 'activateCSS' => 1, // activate the CSS file
131
+ 'CSSfile' => 'nggallery.css', // set default css filename
132
  );
133
  }
134
 
products/photocrati_nextgen/modules/ngglegacy/admin/album.php CHANGED
@@ -49,14 +49,6 @@ class nggManageAlbum {
49
  */
50
  var $num_albums = false;
51
 
52
- /**
53
- * PHP4 compatibility layer for calling the PHP5 constructor.
54
- *
55
- */
56
- function nggManageAlbum() {
57
- return $this->__construct();
58
- }
59
-
60
  /**
61
  * Gets the Pope component registry
62
  * @return C_Component_Registry
@@ -96,6 +88,13 @@ class nggManageAlbum {
96
  foreach (C_Gallery_Mapper::get_instance()->find_all() as $gallery) {
97
  $this->galleries[$gallery->{$gallery->id_field}] = $gallery;
98
  }
 
 
 
 
 
 
 
99
  $this->num_albums = count( $this->albums );
100
  $this->num_galleries = count( $this->galleries );
101
 
49
  */
50
  var $num_albums = false;
51
 
 
 
 
 
 
 
 
 
52
  /**
53
  * Gets the Pope component registry
54
  * @return C_Component_Registry
88
  foreach (C_Gallery_Mapper::get_instance()->find_all() as $gallery) {
89
  $this->galleries[$gallery->{$gallery->id_field}] = $gallery;
90
  }
91
+
92
+ if (apply_filters('ngg_manage_albums_items_order', 'ASC') == 'DESC')
93
+ {
94
+ $this->albums = array_reverse($this->albums, TRUE);
95
+ $this->galleries = array_reverse($this->galleries, TRUE);
96
+ }
97
+
98
  $this->num_albums = count( $this->albums );
99
  $this->num_galleries = count( $this->galleries );
100
 
products/photocrati_nextgen/modules/ngglegacy/admin/css/nggadmin.css CHANGED
@@ -526,3 +526,14 @@ DIV that shows the image as you drag it
526
  list-style-position:inside;
527
  list-style-type:disc;
528
  }
 
 
 
 
 
 
 
 
 
 
 
526
  list-style-position:inside;
527
  list-style-type:disc;
528
  }
529
+
530
+ #ngg-manage-images-items-per-page-label {
531
+ float: right;
532
+ line-height: 30px;
533
+ margin-right: 5px;
534
+ }
535
+
536
+ #ngg-manage-images-items-per-page {
537
+ float: right;
538
+ margin-right: 5px;
539
+ }
products/photocrati_nextgen/modules/ngglegacy/admin/manage-galleries.php CHANGED
@@ -201,7 +201,7 @@ function nggallery_manage_gallery_main() {
201
  <?php $ngg->manage_page->pagination( 'top', $_GET['paged'], $total_number_of_galleries, $items_per_page ); ?>
202
 
203
  </div>
204
- <table class="wp-list-table widefat fixed" cellspacing="0">
205
  <thead>
206
  <tr>
207
  <?php $wp_list_table->print_column_headers(true); ?>
@@ -418,7 +418,8 @@ class _NGG_Galleries_List_Table extends WP_List_Table {
418
  var $_screen;
419
  var $_columns;
420
 
421
- function _NGG_Galleries_List_Table( $screen ) {
 
422
  if ( is_string( $screen ) )
423
  $screen = convert_to_screen( $screen );
424
 
201
  <?php $ngg->manage_page->pagination( 'top', $_GET['paged'], $total_number_of_galleries, $items_per_page ); ?>
202
 
203
  </div>
204
+ <table class="wp-list-table widefat" cellspacing="0">
205
  <thead>
206
  <tr>
207
  <?php $wp_list_table->print_column_headers(true); ?>
418
  var $_screen;
419
  var $_columns;
420
 
421
+ function __construct($screen)
422
+ {
423
  if ( is_string( $screen ) )
424
  $screen = convert_to_screen( $screen );
425
 
products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php CHANGED
@@ -44,9 +44,12 @@ function nggallery_picturelist($controller) {
44
 
45
  // look for pagination
46
  $_GET['paged'] = isset($_GET['paged']) && ($_GET['paged'] > 0) ? absint($_GET['paged']) : 1;
47
- $items_per_page = apply_filters('ngg_manage_images_items_per_page', 50);
48
-
49
- $start = ( $_GET['paged'] - 1 ) * $items_per_page;
 
 
 
50
 
51
  // get picture values
52
  $image_mapper = C_Image_Mapper::get_instance();
@@ -60,7 +63,7 @@ function nggallery_picturelist($controller) {
60
  limit($items_per_page, $start)->run_query();
61
 
62
  // get the current author
63
- $act_author_user = get_userdata( (int) $gallery->author );
64
 
65
  }
66
 
@@ -107,10 +110,35 @@ function showDialog( windowId, title ) {
107
  jQuery("#" + windowId + ' .dialog-cancel').click(function() { jQuery( "#" + windowId ).dialog("close"); });
108
  }
109
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
110
  jQuery(function (){
111
 
112
  jQuery('span.tooltip, label.tooltip').tooltip();
113
 
 
 
 
 
114
  // load a content via ajax
115
  jQuery('a.ngg-dialog').click(function() {
116
  var dialogs = jQuery('.ngg-overlay-dialog:visible');
@@ -314,7 +342,37 @@ jQuery(document).ready( function($) {
314
  <?php endif; ?>
315
 
316
  <div class="tablenav top ngg-tablenav">
317
- <?php $ngg->manage_page->pagination( 'top', $_GET['paged'], $total_number_of_images, $items_per_page ); ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
318
  <div class="alignleft actions">
319
  <select id="bulkaction" name="bulkaction">
320
  <option value="no_action" ><?php _e("Bulk actions",'nggallery'); ?></option>
@@ -533,7 +591,8 @@ class _NGG_Images_List_Table extends WP_List_Table {
533
  var $_screen;
534
  var $_columns;
535
 
536
- function _NGG_Images_List_Table( $screen ) {
 
537
  if ( is_string( $screen ) )
538
  $screen = convert_to_screen( $screen );
539
 
@@ -588,5 +647,3 @@ class _NGG_Images_List_Table extends WP_List_Table {
588
 
589
  }
590
  }
591
-
592
- ?>
44
 
45
  // look for pagination
46
  $_GET['paged'] = isset($_GET['paged']) && ($_GET['paged'] > 0) ? absint($_GET['paged']) : 1;
47
+ $items_per_page = (!empty($_GET['items']) ? $_GET['items'] : apply_filters('ngg_manage_images_items_per_page', 50));
48
+ if ($items_per_page == 'all')
49
+ $items_per_page = PHP_INT_MAX;
50
+ else
51
+ $items_per_page = (int)$items_per_page;
52
+ $start = ( $_GET['paged'] - 1 ) * $items_per_page;
53
 
54
  // get picture values
55
  $image_mapper = C_Image_Mapper::get_instance();
63
  limit($items_per_page, $start)->run_query();
64
 
65
  // get the current author
66
+ $act_author_user = get_userdata((int)$gallery->author);
67
 
68
  }
69
 
110
  jQuery("#" + windowId + ' .dialog-cancel').click(function() { jQuery( "#" + windowId ).dialog("close"); });
111
  }
112
 
113
+ function setURLParam(param, paramVal) {
114
+ var url = window.location.href;
115
+ var params = "";
116
+ var tmp = "";
117
+ var tmpArray = url.split("?");
118
+ var base = tmpArray[0];
119
+ var additional = tmpArray[1];
120
+
121
+ if (additional) {
122
+ tmpArray = additional.split("&");
123
+ for (i = 0; i < tmpArray.length; i++) {
124
+ if (tmpArray[i].split('=')[0] != param) {
125
+ params += tmp + tmpArray[i];
126
+ tmp = "&";
127
+ }
128
+ }
129
+ }
130
+
131
+ return base + "?" + params + tmp + "" + param + "=" + paramVal;
132
+ }
133
+
134
  jQuery(function (){
135
 
136
  jQuery('span.tooltip, label.tooltip').tooltip();
137
 
138
+ jQuery('#ngg-manage-images-items-per-page').on('change', function() {
139
+ window.location.href = setURLParam('items', jQuery(this).val());
140
+ });
141
+
142
  // load a content via ajax
143
  jQuery('a.ngg-dialog').click(function() {
144
  var dialogs = jQuery('.ngg-overlay-dialog:visible');
342
  <?php endif; ?>
343
 
344
  <div class="tablenav top ngg-tablenav">
345
+
346
+ <?php
347
+ $ngg->manage_page->pagination( 'top', $_GET['paged'], $total_number_of_images, $items_per_page );
348
+
349
+ $items_per_page_array = apply_filters('ngg_manage_images_items_per_page_array', array(
350
+ '25' => __(' 25', 'nggallery'),
351
+ '50' => __(' 50', 'nggallery'),
352
+ '75' => __(' 75', 'nggallery'),
353
+ '100' => __('100', 'nggallery'),
354
+ '200' => __('200', 'nggallery'),
355
+ 'all' => __('All', 'nggallery')
356
+ ));
357
+ ?>
358
+
359
+ <select id="ngg-manage-images-items-per-page">
360
+ <?php foreach ($items_per_page_array as $val => $label) { ?>
361
+ <?php
362
+ $selected = '';
363
+ if(!empty($_GET['items']) && $val == $_GET['items'])
364
+ $selected = 'selected';
365
+ elseif (empty($_GET['items']) && $val == $items_per_page)
366
+ $selected = 'selected';
367
+ ?>
368
+ <option value="<?php echo esc_attr($val); ?>" <?php echo $selected; ?>>
369
+ <?php echo esc_html($label); ?>
370
+ </option>
371
+ <?php } ?>
372
+ </select>
373
+ <label id="ngg-manage-images-items-per-page-label"
374
+ for="ngg-manage-images-items-per-page"><?php echo __('Images per page:', 'nggallery'); ?></label>
375
+
376
  <div class="alignleft actions">
377
  <select id="bulkaction" name="bulkaction">
378
  <option value="no_action" ><?php _e("Bulk actions",'nggallery'); ?></option>
591
  var $_screen;
592
  var $_columns;
593
 
594
+ function __construct($screen)
595
+ {
596
  if ( is_string( $screen ) )
597
  $screen = convert_to_screen( $screen );
598
 
647
 
648
  }
649
  }
 
 
products/photocrati_nextgen/modules/ngglegacy/admin/manage.php CHANGED
@@ -12,8 +12,8 @@ class nggManageGallery {
12
  var $search_result = false;
13
 
14
  // initiate the manage page
15
- function nggManageGallery() {
16
-
17
  // GET variables
18
  if( isset($_GET['gid']) ) {
19
  $this->gid = (int) $_GET['gid'];
@@ -575,15 +575,18 @@ class nggManageGallery {
575
  nggAdmin::do_ajax_operation( 'gallery_import_metadata' , $_POST['doaction'], __('Import metadata','nggallery') );
576
  break;
577
  case 'delete_gallery':
578
- // Delete gallery
579
- if ( is_array($_POST['doaction']) ) {
580
- $deleted = false;
 
581
  $mapper = C_Gallery_Mapper::get_instance();
582
- foreach ( $_POST['doaction'] as $id ) $deleted = $mapper->destroy($id);
 
 
 
583
 
584
- if($deleted)
585
  nggGallery::show_message(__('Gallery deleted successfully ', 'nggallery'));
586
-
587
  }
588
  break;
589
  }
@@ -674,7 +677,7 @@ class nggManageGallery {
674
  $storage->delete_image($image->pid);
675
  }
676
  do_action('ngg_delete_picture', $image->pid);
677
- $delete_pic = nggdb::delete_image( $image->pid );
678
  }
679
  }
680
  if($delete_pic)
@@ -840,7 +843,7 @@ class nggManageGallery {
840
  global $user_ID;
841
 
842
  $page['post_type'] = 'page';
843
- $page['post_content'] = '[nggallery id=' . $this->gid . ']';
844
  $page['post_parent'] = $parent_id;
845
  $page['post_author'] = $user_ID;
846
  $page['post_status'] = 'publish';
12
  var $search_result = false;
13
 
14
  // initiate the manage page
15
+ function __construct()
16
+ {
17
  // GET variables
18
  if( isset($_GET['gid']) ) {
19
  $this->gid = (int) $_GET['gid'];
575
  nggAdmin::do_ajax_operation( 'gallery_import_metadata' , $_POST['doaction'], __('Import metadata','nggallery') );
576
  break;
577
  case 'delete_gallery':
578
+ // Delete gallery
579
+ if (is_array($_POST['doaction']))
580
+ {
581
+ $deleted = FALSE;
582
  $mapper = C_Gallery_Mapper::get_instance();
583
+ foreach ($_POST['doaction'] as $id) {
584
+ if ($mapper->destroy($id, TRUE))
585
+ $deleted = TRUE;
586
+ }
587
 
588
+ if ($deleted)
589
  nggGallery::show_message(__('Gallery deleted successfully ', 'nggallery'));
 
590
  }
591
  break;
592
  }
677
  $storage->delete_image($image->pid);
678
  }
679
  do_action('ngg_delete_picture', $image->pid);
680
+ $delete_pic = C_Image_Mapper::get_instance()->destroy($image->pid);
681
  }
682
  }
683
  if($delete_pic)
843
  global $user_ID;
844
 
845
  $page['post_type'] = 'page';
846
+ $page['post_content'] = apply_filters('ngg_add_page_shortcode', '[nggallery id="' . $this->gid . '"]' );
847
  $page['post_parent'] = $parent_id;
848
  $page['post_author'] = $user_ID;
849
  $page['post_status'] = 'publish';
products/photocrati_nextgen/modules/ngglegacy/admin/media-upload.php CHANGED
@@ -147,6 +147,14 @@ function media_upload_nextgen_form($errors) {
147
  } else if (str == '-1') {
148
  // image removed
149
  } else {
 
 
 
 
 
 
 
 
150
  WPSetAsThumbnail(str, nonce);
151
  }
152
  }
@@ -280,8 +288,9 @@ if ($chromeless)
280
  if ( $calling_post_id && current_theme_supports( 'post-thumbnails', get_post_type( $calling_post_id ) ) )
281
  $ajax_nonce = wp_create_nonce( "set_post_thumbnail-$calling_post_id" );
282
  echo "<a class='ngg-post-thumbnail' id='ngg-post-thumbnail-" . $picid . "' href='#' onclick='NGGSetAsThumbnail(\"$picid\", \"$ajax_nonce\");return false;'>" . esc_html__( 'Use as featured image' ) . "</a>";
 
283
  ?>
284
- <button type="submit" class="button" value="1" name="send[<?php echo $picid ?>]"><?php esc_html_e( 'Insert into Post' ); ?></button>
285
  </td>
286
  </tr>
287
  </tbody></table>
@@ -298,6 +307,16 @@ if ($chromeless)
298
  <input type="hidden" name="select_gal" id="select_gal" value="<?php echo (int) $galleryID; ?>" />
299
  </form>
300
 
 
 
 
 
 
 
 
 
 
 
301
  <?php
302
  }
303
  ?>
147
  } else if (str == '-1') {
148
  // image removed
149
  } else {
150
+ jQuery('a.ngg-post-thumbnail').each(function() { jQuery(this).show(); });
151
+ jQuery('a.ngg-post-thumbnail-standin').each(function() { jQuery(this).hide(); });
152
+ $link.hide();
153
+
154
+ var $dummy = $link.next();
155
+ $dummy.attr('id', 'wp-post-thumbnail-' + str);
156
+ $dummy.show();
157
+
158
  WPSetAsThumbnail(str, nonce);
159
  }
160
  }
288
  if ( $calling_post_id && current_theme_supports( 'post-thumbnails', get_post_type( $calling_post_id ) ) )
289
  $ajax_nonce = wp_create_nonce( "set_post_thumbnail-$calling_post_id" );
290
  echo "<a class='ngg-post-thumbnail' id='ngg-post-thumbnail-" . $picid . "' href='#' onclick='NGGSetAsThumbnail(\"$picid\", \"$ajax_nonce\");return false;'>" . esc_html__( 'Use as featured image' ) . "</a>";
291
+ echo "<a class='ngg-post-thumbnail-standin' href='#' style='display:none;'></a>";
292
  ?>
293
+ <button type="submit" id="ngg-mlitp-<?php echo esc_attr($picid); ?>" class="button ngg-mlitp" value="1" name="send[<?php echo $picid ?>]"><?php esc_html_e( 'Insert into Post' ); ?></button>
294
  </td>
295
  </tr>
296
  </tbody></table>
307
  <input type="hidden" name="select_gal" id="select_gal" value="<?php echo (int) $galleryID; ?>" />
308
  </form>
309
 
310
+ <script type="text/javascript">
311
+ jQuery(function($) {
312
+ // reset the media library modal tab
313
+ var mlmodal = top.wp.media.editor.get();
314
+ mlmodal.on('close', function() {
315
+ mlmodal.setState('insert');
316
+ });
317
+ });
318
+ </script>
319
+
320
  <?php
321
  }
322
  ?>
products/photocrati_nextgen/modules/ngglegacy/admin/overview.php CHANGED
@@ -94,7 +94,7 @@ function ngg_AboutMetaBox()
94
  {
95
  ?>
96
  <div id="poststuff">
97
- <p><?php _e("NextGEN Gallery is one of the most popular WordPress plugins of all time with over 12 million downloads.", 'nggallery'); __(" It is developed and supported by Photocrati Media. We'd like to offer a special thanks to Alex Rabe, who first developed the plugin and maintained it through 2011.", 'nggallery'); ?></p>
98
  <p><?php _e("<strong>NEED HELP?</strong> If you need help or assistance please visit the <a href='http://wordpress.org/support/plugin/nextgen-gallery'>NextGEN Gallery forums on WordPress.org</a>. Please note that we actively monitor and participate in the forums, but given that NextGEN Gallery is a free product, we don't guarantee replies to support queries.", 'nggallery'); ?></p>
99
  <p><?php _e("<strong>EXTENDING NEXTGEN?</strong> There are many third party plugins that add displays and functionality for NextGEN Gallery. See our <a href='http://www.nextgen-gallery.com/nextgen-gallery-extension-plugins/'>Complete List of NextGEN Extension Plugins</a>.", 'nggallery'); ?></p>
100
  </div>
94
  {
95
  ?>
96
  <div id="poststuff">
97
+ <p><?php _e("NextGEN Gallery is one of the most popular WordPress plugins of all time with over 12 million downloads.", 'nggallery'); _e(" It is developed and supported by Photocrati Media. We'd like to offer a special thanks to Alex Rabe, who first developed the plugin and maintained it through 2011.", 'nggallery'); ?></p>
98
  <p><?php _e("<strong>NEED HELP?</strong> If you need help or assistance please visit the <a href='http://wordpress.org/support/plugin/nextgen-gallery'>NextGEN Gallery forums on WordPress.org</a>. Please note that we actively monitor and participate in the forums, but given that NextGEN Gallery is a free product, we don't guarantee replies to support queries.", 'nggallery'); ?></p>
99
  <p><?php _e("<strong>EXTENDING NEXTGEN?</strong> There are many third party plugins that add displays and functionality for NextGEN Gallery. See our <a href='http://www.nextgen-gallery.com/nextgen-gallery-extension-plugins/'>Complete List of NextGEN Extension Plugins</a>.", 'nggallery'); ?></p>
100
  </div>
products/photocrati_nextgen/modules/ngglegacy/lib/gd.thumbnail.inc.php CHANGED
@@ -112,8 +112,8 @@ class ngg_Thumbnail {
112
  * @var string
113
  *
114
  */
115
- function ngg_Thumbnail($fileName,$no_ErrorImage = false) {
116
-
117
  //make sure the GD library is installed
118
  if(!function_exists("gd_info")) {
119
  echo 'You do not have the GD Library installed. This class requires the GD library to function properly.' . "\n";
112
  * @var string
113
  *
114
  */
115
+ function __construct($fileName,$no_ErrorImage = false)
116
+ {
117
  //make sure the GD library is installed
118
  if(!function_exists("gd_info")) {
119
  echo 'You do not have the GD Library installed. This class requires the GD library to function properly.' . "\n";
products/photocrati_nextgen/modules/ngglegacy/lib/imagemagick.inc.php CHANGED
@@ -99,9 +99,8 @@ var $imageMagickBefore;
99
  * out: nothing
100
  * init of class: init of variables, detect needed memory (gd), image format (gd), detect image size (GetImageSize is general PHP, not GD), Image Meta?
101
  */
102
-
103
- function ngg_Thumbnail($fileName, $no_ErrorImage = false) {
104
-
105
  //initialize variables
106
  $this->errmsg = '';
107
  $this->error = false;
99
  * out: nothing
100
  * init of class: init of variables, detect needed memory (gd), image format (gd), detect image size (GetImageSize is general PHP, not GD), Image Meta?
101
  */
102
+ function __construct($fileName, $no_ErrorImage = false)
103
+ {
 
104
  //initialize variables
105
  $this->errmsg = '';
106
  $this->error = false;
products/photocrati_nextgen/modules/ngglegacy/lib/meta.php CHANGED
@@ -30,8 +30,8 @@ class nggMeta{
30
  * @param bool $onlyEXIF parse only exif if needed
31
  * @return
32
  */
33
- function nggMeta($image_or_id, $onlyEXIF = false) {
34
-
35
  if (is_int($image_or_id)) {
36
  //get the path and other data about the image
37
  $this->image = C_Image_Mapper::get_instance()->find( $image_or_id);
30
  * @param bool $onlyEXIF parse only exif if needed
31
  * @return
32
  */
33
+ function __construct($image_or_id, $onlyEXIF = false)
34
+ {
35
  if (is_int($image_or_id)) {
36
  //get the path and other data about the image
37
  $this->image = C_Image_Mapper::get_instance()->find( $image_or_id);
products/photocrati_nextgen/modules/ngglegacy/lib/ngg-db.php CHANGED
@@ -44,14 +44,6 @@ class nggdb
44
  */
45
  var $paged = false;
46
 
47
- /**
48
- * PHP4 compatibility layer for calling the PHP5 constructor.
49
- *
50
- */
51
- function nggdb() {
52
- return $this->__construct();
53
- }
54
-
55
  /**
56
  * Init the Database Abstraction layer for NextGEN Gallery
57
  *
@@ -65,7 +57,6 @@ class nggdb
65
  $this->paged = array();
66
 
67
  register_shutdown_function(array(&$this, '__destruct'));
68
-
69
  }
70
 
71
  /**
44
  */
45
  var $paged = false;
46
 
 
 
 
 
 
 
 
 
47
  /**
48
  * Init the Database Abstraction layer for NextGEN Gallery
49
  *
57
  $this->paged = array();
58
 
59
  register_shutdown_function(array(&$this, '__destruct'));
 
60
  }
61
 
62
  /**
products/photocrati_nextgen/modules/ngglegacy/lib/post-thumbnail.php CHANGED
@@ -11,14 +11,6 @@
11
  */
12
  class nggPostThumbnail {
13
 
14
- /**
15
- * PHP4 compatibility layer for calling the PHP5 constructor.
16
- *
17
- */
18
- function nggPostThumbnail() {
19
- return $this->__construct();
20
- }
21
-
22
  /**
23
  * Main constructor - Add filter and action hooks
24
  *
11
  */
12
  class nggPostThumbnail {
13
 
 
 
 
 
 
 
 
 
14
  /**
15
  * Main constructor - Add filter and action hooks
16
  *
products/photocrati_nextgen/modules/ngglegacy/lib/rewrite.php CHANGED
@@ -31,8 +31,8 @@ class nggRewrite {
31
  /**
32
  * Constructor
33
  */
34
- function nggRewrite() {
35
-
36
  // read the option setting
37
  $this->options = get_option('ngg_options');
38
 
31
  /**
32
  * Constructor
33
  */
34
+ function __construct()
35
+ {
36
  // read the option setting
37
  $this->options = get_option('ngg_options');
38
 
products/photocrati_nextgen/modules/ngglegacy/lib/shortcodes.php CHANGED
@@ -11,8 +11,8 @@
11
  class NextGEN_shortcodes {
12
 
13
  // register the new shortcodes
14
- function NextGEN_shortcodes() {
15
-
16
  // Long posts should require a higher limit, see http://core.trac.wordpress.org/ticket/8553
17
  $pcre_limit = 500000;
18
  if ((int)ini_get('pcre.backtrack_limit') < $pcre_limit) {
11
  class NextGEN_shortcodes {
12
 
13
  // register the new shortcodes
14
+ function __construct()
15
+ {
16
  // Long posts should require a higher limit, see http://core.trac.wordpress.org/ticket/8553
17
  $pcre_limit = 500000;
18
  if ((int)ini_get('pcre.backtrack_limit') < $pcre_limit) {
products/photocrati_nextgen/modules/ngglegacy/nggallery.php CHANGED
@@ -14,8 +14,8 @@ class nggLoader
14
  var $add_PHP5_notice = false;
15
  var $plugin_name = '';
16
 
17
- function nggLoader() {
18
-
19
  // Stop the plugin if we missed the requirements
20
  if ( ( !$this->required_version() ) || ( !$this->check_memory_limit() ) )
21
  return;
14
  var $add_PHP5_notice = false;
15
  var $plugin_name = '';
16
 
17
+ function __construct()
18
+ {
19
  // Stop the plugin if we missed the requirements
20
  if ( ( !$this->required_version() ) || ( !$this->check_memory_limit() ) )
21
  return;
products/photocrati_nextgen/modules/ngglegacy/view/album-compact.php CHANGED
@@ -41,9 +41,13 @@ Follow variables are useable :
41
  <?php echo $gallery->title ?>
42
  </a>
43
  </h4>
44
- <?php if (@$gallery->counter > 0) : ?>
45
- <p class="ngg-album-gallery-image-counter"><strong><?php echo $gallery->counter ?></strong>&nbsp;<?php _e('Photos', 'nggallery') ?></p>
46
- <?php endif; ?>
 
 
 
 
47
  </div>
48
 
49
  <?php endforeach; ?>
41
  <?php echo $gallery->title ?>
42
  </a>
43
  </h4>
44
+ <p class="ngg-album-gallery-image-counter">
45
+ <?php if (isset($gallery->counter) && $gallery->counter > 0) { ?>
46
+ <strong><?php echo $gallery->counter; ?></strong>&nbsp;<?php _e('Photos', 'nggallery'); ?>
47
+ <?php } else { ?>
48
+ &nbsp;
49
+ <?php } ?>
50
+ </p>
51
  </div>
52
 
53
  <?php endforeach; ?>
products/photocrati_nextgen/modules/third_party_compat/module.third_party_compat.php CHANGED
@@ -103,15 +103,16 @@ class M_Third_Party_Compat extends C_Base_Module
103
  add_filter('headway_gzip', array(&$this, 'headway_gzip'), (PHP_INT_MAX - 1));
104
  add_filter('ckeditor_external_plugins', array(&$this, 'ckeditor_plugins'), 11);
105
  add_filter('bp_do_redirect_canonical', array(&$this, 'fix_buddypress_routing'));
106
- add_filter('the_content', array(&$this, 'check_weaverii'), -(PHP_INT_MAX-2));
107
- add_action('wp', array(&$this, 'check_for_jquery_lightbox'));
108
- add_filter('get_the_excerpt', array(&$this, 'disable_galleries_in_excerpts'), 1);
109
- add_filter('get_the_excerpt', array(&$this, 'enable_galleries_in_excerpts'), PHP_INT_MAX-1);
110
- add_action('debug_bar_enqueue_scripts', array(&$this, 'no_debug_bar'));
111
  add_filter('ngg_non_minified_modules', array($this, 'dont_minify_nextgen_pro_cssjs'));
112
- add_filter('run_ngg_resource_manager', array(&$this, 'check_woocommerce_download'));
113
- add_filter('run_ngg_resource_manager', array(&$this, 'check_wpecommerce_download'));
114
- add_filter('run_ngg_resource_manager', array(&$this, 'check_mafs_download'));
 
115
 
116
  // WPML fix
117
  if (class_exists('SitePress')) {
@@ -124,6 +125,19 @@ class M_Third_Party_Compat extends C_Base_Module
124
  add_action('the_post', array(&$this, 'add_ngg_pro_page_parameter'));
125
  }
126
 
 
 
 
 
 
 
 
 
 
 
 
 
 
127
  /**
128
  * Determine if the requested URL is a Multiverso Advanced File Sharing download and adjust the resource manager
129
  *
103
  add_filter('headway_gzip', array(&$this, 'headway_gzip'), (PHP_INT_MAX - 1));
104
  add_filter('ckeditor_external_plugins', array(&$this, 'ckeditor_plugins'), 11);
105
  add_filter('bp_do_redirect_canonical', array(&$this, 'fix_buddypress_routing'));
106
+ add_filter('the_content', array($this, 'check_weaverii'), -(PHP_INT_MAX-2));
107
+ add_action('wp', array($this, 'check_for_jquery_lightbox'));
108
+ add_filter('get_the_excerpt', array($this, 'disable_galleries_in_excerpts'), 1);
109
+ add_filter('get_the_excerpt', array($this, 'enable_galleries_in_excerpts'), PHP_INT_MAX-1);
110
+ add_action('debug_bar_enqueue_scripts', array($this, 'no_debug_bar'));
111
  add_filter('ngg_non_minified_modules', array($this, 'dont_minify_nextgen_pro_cssjs'));
112
+ add_filter('run_ngg_resource_manager', array($this, 'check_woocommerce_download'));
113
+ add_filter('run_ngg_resource_manager', array($this, 'check_wpecommerce_download'));
114
+ add_filter('run_ngg_resource_manager', array($this, 'check_mafs_download'));
115
+ add_filter('run_ngg_resource_manager', array($this, 'check_wps_download'));
116
 
117
  // WPML fix
118
  if (class_exists('SitePress')) {
125
  add_action('the_post', array(&$this, 'add_ngg_pro_page_parameter'));
126
  }
127
 
128
+ /**
129
+ * Determine if the requested URL is a WP-Photo-Seller download and adjust the resource manager
130
+ *
131
+ * @param bool $valid_request
132
+ * @return bool
133
+ */
134
+ function check_wps_download($valid_request = TRUE)
135
+ {
136
+ if (class_exists('WPS') && isset($_REQUEST['wps_file_dl']) && $_REQUEST['wps_file_dl'] == '1')
137
+ $valid_request = FALSE;
138
+ return $valid_request;
139
+ }
140
+
141
  /**
142
  * Determine if the requested URL is a Multiverso Advanced File Sharing download and adjust the resource manager
143
  *
products/photocrati_nextgen/modules/wpcli/module.wpcli.php CHANGED
@@ -33,7 +33,7 @@ class M_WPCLI extends C_Base_Module
33
 
34
  new M_WPCLI();
35
 
36
- if (class_exists('WP_CLI_Command')) {
37
  /**
38
  * Manage NextGen Gallery
39
  */
33
 
34
  new M_WPCLI();
35
 
36
+ if (defined('WP_CLI') && WP_CLI && class_exists('WP_CLI_Command', FALSE)) {
37
  /**
38
  * Manage NextGen Gallery
39
  */
products/photocrati_nextgen/product.photocrati_nextgen.php CHANGED
@@ -53,7 +53,7 @@ class P_Photocrati_NextGen extends C_Base_Product
53
  'photocrati-widget' => 'always',
54
  'photocrati-third_party_compat' => 'always',
55
  'photocrati-nextgen_xmlrpc' => 'always',
56
- 'photocrati-wpcli' => 'other',
57
  );
58
 
59
  function get_modules_provided()
@@ -71,18 +71,18 @@ class P_Photocrati_NextGen extends C_Base_Product
71
  $retval[] = $module_name;
72
  break;
73
  case 'backend':
74
- if (is_admin()) $retval[] = $module_name;
 
75
  break;
76
  case 'frontend':
77
- if (!is_admin()) $retval[] = $module_name;
78
- break;
79
- case 'other':
80
- if ($module_name == 'photocrati-wpcli' && defined('WP_CLI') && WP_CLI)
81
- $retval[] = 'photocrati-wpcli';
82
  break;
83
  }
84
  }
85
 
 
 
86
  return $retval;
87
  }
88
 
53
  'photocrati-widget' => 'always',
54
  'photocrati-third_party_compat' => 'always',
55
  'photocrati-nextgen_xmlrpc' => 'always',
56
+ 'photocrati-wpcli' => 'always'
57
  );
58
 
59
  function get_modules_provided()
71
  $retval[] = $module_name;
72
  break;
73
  case 'backend':
74
+ if (is_admin())
75
+ $retval[] = $module_name;
76
  break;
77
  case 'frontend':
78
+ if (!is_admin())
79
+ $retval[] = $module_name;
 
 
 
80
  break;
81
  }
82
  }
83
 
84
+ $retval = apply_filters('ngg_get_modules_to_load', $retval, self::$modules_provided);
85
+
86
  return $retval;
87
  }
88
 
readme.txt CHANGED
@@ -3,7 +3,7 @@ Contributors: photocrati
3
  Tags: nextgen, nextgen gallery, gallery, galleries, image, images, image gallery, photo, photos, photo gallery, picture, pictures, picture gallery, album, albums, photo albums, image album, media, media gallery, thumbnails, thumbnail gallery, thumbnail galleries, slideshow, slideshows, slideshow gallery, slideshow galleries, fancybox, lightbox, responsive, responsive gallery, responsive galleries, wordpress responsive gallery, nextcellent, wordpress gallery plugin, wordpress photo gallery plugin, wp gallery, wp gallery plugins, best gallery plugin, free photo gallery, singlepic, image captions imagebrowser, watermarks, watermarking, photography, photographer
4
  Requires at least: 3.6.1
5
  Tested up to: 4.2.2
6
- Stable tag: 2.1.0
7
  License: GPLv2
8
 
9
  The most popular WordPress gallery plugin and one of the most popular plugins of all time with over 12 million downloads.
@@ -199,6 +199,34 @@ For more information, feel free to visit the official website for the NextGEN Ga
199
 
200
  == Changelog ==
201
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
202
  = V2.1.0 - 05.18.2015 =
203
  * NEW: Album breadcrumbs and pagination
204
  * NEW: Ability to override builtin MVC templates
@@ -248,6 +276,9 @@ For more information, feel free to visit the official website for the NextGEN Ga
248
  * Fixed: Warning about missing style.php file on Network Admin -> Gallery page
249
  * Fixed: Warning about getimagesize() failure when backing up an image
250
 
 
 
 
251
  = V2.0.78.1 - 03.12.2015 =
252
  * Changed: Image date/time meta data fields are stored as UNIX timestamps
253
  * Fixed: When importing galleries from folders, allow symlinks
3
  Tags: nextgen, nextgen gallery, gallery, galleries, image, images, image gallery, photo, photos, photo gallery, picture, pictures, picture gallery, album, albums, photo albums, image album, media, media gallery, thumbnails, thumbnail gallery, thumbnail galleries, slideshow, slideshows, slideshow gallery, slideshow galleries, fancybox, lightbox, responsive, responsive gallery, responsive galleries, wordpress responsive gallery, nextcellent, wordpress gallery plugin, wordpress photo gallery plugin, wp gallery, wp gallery plugins, best gallery plugin, free photo gallery, singlepic, image captions imagebrowser, watermarks, watermarking, photography, photographer
4
  Requires at least: 3.6.1
5
  Tested up to: 4.2.2
6
+ Stable tag: 2.1.2
7
  License: GPLv2
8
 
9
  The most popular WordPress gallery plugin and one of the most popular plugins of all time with over 12 million downloads.
199
 
200
  == Changelog ==
201
 
202
+ = V2.1.2 - 07.20.2015 =
203
+ * NEW: Ability to import from Media Library
204
+ * NEW: Added filter 'ngg_datamapper_table_name'
205
+ * NEW: Added filter `ngg_legacy_template_directories` for legacy template locator (thanks Ross McKay)
206
+ * NEW: Pagination available onManage Images page
207
+ * NEW: Added filter ngg_manage_images_items_per_page_array to control pagination options
208
+ * NEW: Added filters 'ngg_load_frontend_logic' and 'ngg_get_modules_to_load'
209
+ * NEW: Added filter 'ngg_add_page_shortcode' to control Manage Galleries > 'Create new page' content
210
+ * NEW: Added filter 'ngg_manage_albums_items_order'
211
+ * Changed: Removed PHP4 support
212
+ * Fixed: Ability to set NextGEN Image as Featured Image
213
+ * Fixed: Don't use resource manager in download requests for WP Photo Shelter
214
+ * Fixed: Updated custom jQuery-UI styling to resemble WordPress postbox styling
215
+ * Fixed: Styled plupload buttons to resemble WordPress buttons
216
+ * Fixed: Removed 'fixed' class from manage galleries table. Allows columns to adjust to content
217
+ * Fixed: Removed note about flash support and fixed typoe (thanks Rene Wolf)
218
+ * Fixed: Fixed typo in nggallery.po
219
+ * Fixed: Cache results of lookup_columns() to avoid multiple identical queries; thanks go to Alex Bradaric
220
+ * Fixed: Better WP-CPI detection
221
+ * Fixed: Removed unnecessary calls to parent::initialize()
222
+ * Fixed: Adjusted album-compact template to always include p.ngg-album-gallery-image-counter
223
+ * Fixed: Replaced empty gallery rendering in is_feed() with a link
224
+ * Fixed: Removed default settings for imagerotator, which is no longer supported
225
+ * Fixed: Optimizated scanning of images when importing a gallery
226
+ * Fixed: When a gallery is deleted, ensure that DB and filesystem are purged
227
+ * Fixed: Removed Insert Gallery Window box shadow
228
+ * Fixed: Ensure that file_exists() calls are prefixed with @
229
+
230
  = V2.1.0 - 05.18.2015 =
231
  * NEW: Album breadcrumbs and pagination
232
  * NEW: Ability to override builtin MVC templates
276
  * Fixed: Warning about missing style.php file on Network Admin -> Gallery page
277
  * Fixed: Warning about getimagesize() failure when backing up an image
278
 
279
+ = v2.0.79 - 03.20.2015 =
280
+ * Secured: Sanitized C_Displayed_Gallery->_add_find_in_set_column() third parameter
281
+
282
  = V2.0.78.1 - 03.12.2015 =
283
  * Changed: Image date/time meta data fields are stored as UNIX timestamps
284
  * Fixed: When importing galleries from folders, allow symlinks