NextGEN Gallery – WordPress Gallery Plugin - Version 3.1.6

Version Description

  • 01.16.2019 =
  • NEW: Option to control caching duration of random widget galleries
  • Secured: DB record serialization
  • Fixed: Compatibility with plugins that extend Gutenberg / Block Editor
  • Fixed: Invalid regex causing warnings when viewing /ngg_tags/ pages
  • Fixed: Misc grammatical and spelling mistakes
Download this release

Release Info

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

Code changes from version 3.1.5 to 3.1.6

Files changed (26) hide show
  1. changelog.txt +7 -0
  2. nggallery.php +2 -2
  3. non_pope/class.nextgen_serializable.php +1 -1
  4. products/photocrati_nextgen/modules/i18n/lang/nggallery-da_DK.po +2 -2
  5. products/photocrati_nextgen/modules/i18n/lang/nggallery-sv_SE.po +2 -2
  6. products/photocrati_nextgen/modules/i18n/lang/nggallery.po +2 -2
  7. products/photocrati_nextgen/modules/i18n/module.i18n.php +1 -1
  8. products/photocrati_nextgen/modules/nextgen_basic_tagcloud/module.nextgen_basic_tagcloud.php +1 -1
  9. products/photocrati_nextgen/modules/nextgen_basic_tagcloud/package.module.nextgen_basic_tagcloud.php +1 -1
  10. products/photocrati_nextgen/modules/nextgen_block/module.nextgen_block.php +1 -1
  11. products/photocrati_nextgen/modules/nextgen_block/package.module.nextgen_block.php +1 -1
  12. products/photocrati_nextgen/modules/nextgen_block/static/build/post-thumbnail.min.js +1 -1
  13. products/photocrati_nextgen/modules/nextgen_block/static/build/post-thumbnail.min.js.map +1 -1
  14. products/photocrati_nextgen/modules/nextgen_block/static/src/post-thumbnail.min.js +2 -1
  15. products/photocrati_nextgen/modules/nextgen_data/module.nextgen_data.php +1 -1
  16. products/photocrati_nextgen/modules/nextgen_data/package.module.nextgen_data.php +6 -1
  17. products/photocrati_nextgen/modules/nextgen_other_options/module.nextgen_other_options.php +1 -1
  18. products/photocrati_nextgen/modules/nextgen_other_options/package.module.nextgen_other_options.php +2 -2
  19. products/photocrati_nextgen/modules/nextgen_other_options/templates/misc_tab.php +2 -0
  20. products/photocrati_nextgen/modules/nextgen_settings/module.nextgen_settings.php +5 -2
  21. products/photocrati_nextgen/modules/ngglegacy/admin/album.php +1 -1
  22. products/photocrati_nextgen/modules/ngglegacy/admin/edit-thumbnail.php +1 -1
  23. products/photocrati_nextgen/modules/ngglegacy/module.ngglegacy.php +1 -1
  24. products/photocrati_nextgen/modules/widget/module.widget.php +1 -1
  25. products/photocrati_nextgen/modules/widget/package.module.widget.php +3 -2
  26. readme.txt +9 -2
changelog.txt CHANGED
@@ -1,6 +1,13 @@
1
  NextGEN Gallery
2
  by Imagely
3
 
 
 
 
 
 
 
 
4
  = V3.1.5 - 01.08.2019 =
5
  * NEW: Added constant NGG_DISABLE_SHUTDOWN_EXCEPTION_HANDLER
6
  * Secured: DB record serialization
1
  NextGEN Gallery
2
  by Imagely
3
 
4
+ = V3.1.6 - 01.16.2019 =
5
+ * NEW: Option to control caching duration of random widget galleries
6
+ * Secured: DB record serialization
7
+ * Fixed: Compatibility with plugins that extend Gutenberg / Block Editor
8
+ * Fixed: Invalid regex causing warnings when viewing /ngg_tags/ pages
9
+ * Fixed: Misc grammatical and spelling mistakes
10
+
11
  = V3.1.5 - 01.08.2019 =
12
  * NEW: Added constant NGG_DISABLE_SHUTDOWN_EXCEPTION_HANDLER
13
  * Secured: DB record serialization
nggallery.php CHANGED
@@ -4,7 +4,7 @@ if(preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die('You
4
  /**
5
  * Plugin Name: NextGEN Gallery
6
  * Description: The most popular gallery plugin for WordPress and one of the most popular plugins of all time with over 24 million downloads.
7
- * Version: 3.1.5
8
  * Author: Imagely
9
  * Plugin URI: https://www.imagely.com/wordpress-gallery-plugin/nextgen-gallery/
10
  * Author URI: https://www.imagely.com
@@ -676,7 +676,7 @@ class C_NextGEN_Bootstrap
676
  define('NGG_PRODUCT_URL', path_join(str_replace("\\" , '/', NGG_PLUGIN_URL), 'products'));
677
  define('NGG_MODULE_URL', path_join(str_replace("\\", '/', NGG_PRODUCT_URL), 'photocrati_nextgen/modules'));
678
  define('NGG_PLUGIN_STARTED_AT', microtime());
679
- define('NGG_PLUGIN_VERSION', '3.1.5');
680
 
681
  if (defined('SCRIPT_DEBUG') && SCRIPT_DEBUG)
682
  define('NGG_SCRIPT_VERSION', (string)mt_rand(0, mt_getrandmax()));
4
  /**
5
  * Plugin Name: NextGEN Gallery
6
  * Description: The most popular gallery plugin for WordPress and one of the most popular plugins of all time with over 24 million downloads.
7
+ * Version: 3.1.6
8
  * Author: Imagely
9
  * Plugin URI: https://www.imagely.com/wordpress-gallery-plugin/nextgen-gallery/
10
  * Author URI: https://www.imagely.com
676
  define('NGG_PRODUCT_URL', path_join(str_replace("\\" , '/', NGG_PLUGIN_URL), 'products'));
677
  define('NGG_MODULE_URL', path_join(str_replace("\\", '/', NGG_PRODUCT_URL), 'photocrati_nextgen/modules'));
678
  define('NGG_PLUGIN_STARTED_AT', microtime());
679
+ define('NGG_PLUGIN_VERSION', '3.1.6');
680
 
681
  if (defined('SCRIPT_DEBUG') && SCRIPT_DEBUG)
682
  define('NGG_SCRIPT_VERSION', (string)mt_rand(0, mt_getrandmax()));
non_pope/class.nextgen_serializable.php CHANGED
@@ -81,6 +81,6 @@ class C_NextGen_Serializable
81
  if (!is_string($string))
82
  return false;
83
  $string = trim($string);
84
- return (bool)preg_match("/O:[0-9]+:/is", $string);
85
  }
86
  }
81
  if (!is_string($string))
82
  return false;
83
  $string = trim($string);
84
+ return (bool)preg_match("/(O|C):\+?[0-9]+:/is", $string);
85
  }
86
  }
products/photocrati_nextgen/modules/i18n/lang/nggallery-da_DK.po CHANGED
@@ -291,7 +291,7 @@ msgstr ""
291
 
292
  #: products/photocrati_nextgen/modules/ngglegacy/admin/album.php:485
293
  msgid ""
294
- "After you create and select a album, you can drag and drop a gallery or "
295
  "another album into your new album below"
296
  msgstr ""
297
  "Når du har oprettet og valgt et album, kan du trække og slippe et galleri "
@@ -1569,7 +1569,7 @@ msgid "Hide"
1569
  msgstr "Skjul"
1570
 
1571
  #: products/photocrati_nextgen/modules/nextgen_other_options/package.module.nextgen_other_options.php:148
1572
- msgid "How should related images be match?"
1573
  msgstr "Hvordan skal relaterede billeder være match?"
1574
 
1575
  #: products/photocrati_nextgen/modules/nextgen_other_options/package.module.nextgen_other_options.php:697
291
 
292
  #: products/photocrati_nextgen/modules/ngglegacy/admin/album.php:485
293
  msgid ""
294
+ "After you create and select an album, you can drag and drop a gallery or "
295
  "another album into your new album below"
296
  msgstr ""
297
  "Når du har oprettet og valgt et album, kan du trække og slippe et galleri "
1569
  msgstr "Skjul"
1570
 
1571
  #: products/photocrati_nextgen/modules/nextgen_other_options/package.module.nextgen_other_options.php:148
1572
+ msgid "How should related images be matched?"
1573
  msgstr "Hvordan skal relaterede billeder være match?"
1574
 
1575
  #: products/photocrati_nextgen/modules/nextgen_other_options/package.module.nextgen_other_options.php:697
products/photocrati_nextgen/modules/i18n/lang/nggallery-sv_SE.po CHANGED
@@ -1221,7 +1221,7 @@ msgid "(Hide Customization Settings)"
1221
  msgstr "(Dölj anpassade inställningar)"
1222
 
1223
  #: products/photocrati_nextgen/modules/nextgen_other_options/adapter.image_options_form.php:97
1224
- msgid "How should related images be match?"
1225
  msgstr "Hur ska relaterade bilder matchas?"
1226
 
1227
  #: products/photocrati_nextgen/modules/nextgen_other_options/adapter.image_options_form.php:100
@@ -1708,7 +1708,7 @@ msgid "[Minimize]"
1708
  msgstr "[Minimera]"
1709
 
1710
  #: products/photocrati_nextgen/modules/ngglegacy/admin/album.php:482
1711
- msgid "After you create and select a album, you can drag and drop a gallery or another album into your new album below"
1712
  msgstr "När du skapar eller väljer ett album, kan du lägga till gallerier eller andra album genom att dra och släppa dem nedan"
1713
 
1714
  #: products/photocrati_nextgen/modules/ngglegacy/admin/album.php:508
1221
  msgstr "(Dölj anpassade inställningar)"
1222
 
1223
  #: products/photocrati_nextgen/modules/nextgen_other_options/adapter.image_options_form.php:97
1224
+ msgid "How should related images be matched?"
1225
  msgstr "Hur ska relaterade bilder matchas?"
1226
 
1227
  #: products/photocrati_nextgen/modules/nextgen_other_options/adapter.image_options_form.php:100
1708
  msgstr "[Minimera]"
1709
 
1710
  #: products/photocrati_nextgen/modules/ngglegacy/admin/album.php:482
1711
+ msgid "After you create and select an album, you can drag and drop a gallery or another album into your new album below"
1712
  msgstr "När du skapar eller väljer ett album, kan du lägga till gallerier eller andra album genom att dra och släppa dem nedan"
1713
 
1714
  #: products/photocrati_nextgen/modules/ngglegacy/admin/album.php:508
products/photocrati_nextgen/modules/i18n/lang/nggallery.po CHANGED
@@ -1246,7 +1246,7 @@ msgid "(Hide Customization Settings)"
1246
  msgstr ""
1247
 
1248
  #: products/photocrati_nextgen/modules/nextgen_other_options/adapter.image_options_form.php:97
1249
- msgid "How should related images be match?"
1250
  msgstr ""
1251
 
1252
  #: products/photocrati_nextgen/modules/nextgen_other_options/adapter.image_options_form.php:100
@@ -1725,7 +1725,7 @@ msgid "[Minimize]"
1725
  msgstr ""
1726
 
1727
  #: products/photocrati_nextgen/modules/ngglegacy/admin/album.php:482
1728
- msgid "After you create and select a album, you can drag and drop a gallery or another album into your new album below"
1729
  msgstr ""
1730
 
1731
  #: products/photocrati_nextgen/modules/ngglegacy/admin/album.php:508
1246
  msgstr ""
1247
 
1248
  #: products/photocrati_nextgen/modules/nextgen_other_options/adapter.image_options_form.php:97
1249
+ msgid "How should related images be matched?"
1250
  msgstr ""
1251
 
1252
  #: products/photocrati_nextgen/modules/nextgen_other_options/adapter.image_options_form.php:100
1725
  msgstr ""
1726
 
1727
  #: products/photocrati_nextgen/modules/ngglegacy/admin/album.php:482
1728
+ msgid "After you create and select an album, you can drag and drop a gallery or another album into your new album below"
1729
  msgstr ""
1730
 
1731
  #: products/photocrati_nextgen/modules/ngglegacy/admin/album.php:508
products/photocrati_nextgen/modules/i18n/module.i18n.php CHANGED
@@ -20,7 +20,7 @@ class M_I18N extends C_Base_Module
20
  'photocrati-i18n',
21
  'Internationalization',
22
  "Adds I18N resources and methods",
23
- '3.0.0',
24
  'https://www.imagely.com/languages/',
25
  'Imagely',
26
  'https://www.imagely.com'
20
  'photocrati-i18n',
21
  'Internationalization',
22
  "Adds I18N resources and methods",
23
+ '3.1.6',
24
  'https://www.imagely.com/languages/',
25
  'Imagely',
26
  'https://www.imagely.com'
products/photocrati_nextgen/modules/nextgen_basic_tagcloud/module.nextgen_basic_tagcloud.php CHANGED
@@ -24,7 +24,7 @@ class M_NextGen_Basic_Tagcloud extends C_Base_Module
24
  NGG_BASIC_TAGCLOUD,
25
  'NextGen Basic Tagcloud',
26
  'Provides a tagcloud for NextGEN Gallery',
27
- '3.0.0.1',
28
  'https://www.imagely.com/wordpress-gallery-plugin/nextgen-gallery/',
29
  'Imagely',
30
  'https://www.imagely.com'
24
  NGG_BASIC_TAGCLOUD,
25
  'NextGen Basic Tagcloud',
26
  'Provides a tagcloud for NextGEN Gallery',
27
+ '3.1.6',
28
  'https://www.imagely.com/wordpress-gallery-plugin/nextgen-gallery/',
29
  'Imagely',
30
  'https://www.imagely.com'
products/photocrati_nextgen/modules/nextgen_basic_tagcloud/package.module.nextgen_basic_tagcloud.php CHANGED
@@ -178,7 +178,7 @@ class A_NextGen_Basic_TagCloud_Urls extends Mixin
178
  $id = preg_quote($id, '#') . $sep;
179
  }
180
  $prefix = preg_quote($settings->router_param_prefix, '#');
181
- $regex = implode('', array('#//?', $id ? "({$id})?" : "(\\w+{$sep})?", "({$prefix})?gallerytag{$sep}([\\w-_]+)/?#"));
182
  // Replace any page parameters with the ngglegacy equivalent
183
  if (preg_match($regex, $retval, $matches)) {
184
  $retval = rtrim(str_replace($matches[0], "/tags/{$matches[3]}/", $retval), "/");
178
  $id = preg_quote($id, '#') . $sep;
179
  }
180
  $prefix = preg_quote($settings->router_param_prefix, '#');
181
+ $regex = implode('', array('#//?', $id ? "({$id})?" : "(\\w+{$sep})?", "({$prefix})?gallerytag{$sep}([\\w\\-_]+)/?#"));
182
  // Replace any page parameters with the ngglegacy equivalent
183
  if (preg_match($regex, $retval, $matches)) {
184
  $retval = rtrim(str_replace($matches[0], "/tags/{$matches[3]}/", $retval), "/");
products/photocrati_nextgen/modules/nextgen_block/module.nextgen_block.php CHANGED
@@ -23,7 +23,7 @@ class M_NextGEN_Block extends C_Base_Module
23
  'photocrati-nextgen_block',
24
  'NextGEN Block',
25
  'Provides a NextGEN Block for the Gutenberg interface.',
26
- '3.1.4.2',
27
  'https://www.imagely.com/wordpress-gallery-plugin/nextgen-gallery/',
28
  'Imagely',
29
  'https://www.imagely.com'
23
  'photocrati-nextgen_block',
24
  'NextGEN Block',
25
  'Provides a NextGEN Block for the Gutenberg interface.',
26
+ '3.1.5.3',
27
  'https://www.imagely.com/wordpress-gallery-plugin/nextgen-gallery/',
28
  'Imagely',
29
  'https://www.imagely.com'
products/photocrati_nextgen/modules/nextgen_block/package.module.nextgen_block.php CHANGED
@@ -67,7 +67,7 @@ class C_Ngg_Post_Thumbnails
67
  {
68
  add_thickbox();
69
  global $wp_scripts;
70
- wp_enqueue_script('ngg-post-thumbnails', C_Router::get_instance()->get_static_url(NEXTGEN_BLOCK . '#build/post-thumbnail.min.js'), array('lodash', 'wp-element', 'wp-data', 'wp-components', 'wp-i18n', 'photocrati_ajax'));
71
  wp_localize_script('ngg-post-thumbnails', 'ngg_featured_image', array('modal_url' => admin_url("/media-upload.php?post_id=%post_id%&type=image&tab=nextgen&from=block-editor&TB_iframe=true")));
72
  if (preg_match("/media-upload\\.php/", $_SERVER['REQUEST_URI']) && $_GET['tab'] == 'nextgen') {
73
  wp_add_inline_style('wp-admin', "#media-upload-header {display: none }");
67
  {
68
  add_thickbox();
69
  global $wp_scripts;
70
+ wp_enqueue_script('ngg-post-thumbnails', C_Router::get_instance()->get_static_url(NEXTGEN_BLOCK . '#build/post-thumbnail.min.js'), array('lodash', 'wp-element', 'wp-data', 'wp-components', 'wp-i18n', 'photocrati_ajax'), NGG_PLUGIN_VERSION);
71
  wp_localize_script('ngg-post-thumbnails', 'ngg_featured_image', array('modal_url' => admin_url("/media-upload.php?post_id=%post_id%&type=image&tab=nextgen&from=block-editor&TB_iframe=true")));
72
  if (preg_match("/media-upload\\.php/", $_SERVER['REQUEST_URI']) && $_GET['tab'] == 'nextgen') {
73
  wp_add_inline_style('wp-admin', "#media-upload-header {display: none }");
products/photocrati_nextgen/modules/nextgen_block/static/build/post-thumbnail.min.js CHANGED
@@ -1,2 +1,2 @@
1
- !function(t){var e={};function r(n){if(e[n])return e[n].exports;var o=e[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=t,r.c=e,r.d=function(t,e,n){r.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},r.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},r.t=function(t,e){if(1&e&&(t=r(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var o in t)r.d(n,o,function(e){return t[e]}.bind(null,o));return n},r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,"a",e),e},r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.p="",r(r.s=3)}([function(t,e,r){(function(t){function e(t){return(e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var r=function(t){function e(){this.fetch=!1}return e.prototype=t,new e}("undefined"!=typeof self?self:this);(function(t){!function(t){if(!t.fetch){var e={searchParams:"URLSearchParams"in t,iterable:"Symbol"in t&&"iterator"in Symbol,blob:"FileReader"in t&&"Blob"in t&&function(){try{return new Blob,!0}catch(t){return!1}}(),formData:"FormData"in t,arrayBuffer:"ArrayBuffer"in t};if(e.arrayBuffer)var r=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]"],n=function(t){return t&&DataView.prototype.isPrototypeOf(t)},o=ArrayBuffer.isView||function(t){return t&&r.indexOf(Object.prototype.toString.call(t))>-1};f.prototype.append=function(t,e){t=s(t),e=u(e);var r=this.map[t];this.map[t]=r?r+","+e:e},f.prototype.delete=function(t){delete this.map[s(t)]},f.prototype.get=function(t){return t=s(t),this.has(t)?this.map[t]:null},f.prototype.has=function(t){return this.map.hasOwnProperty(s(t))},f.prototype.set=function(t,e){this.map[s(t)]=u(e)},f.prototype.forEach=function(t,e){for(var r in this.map)this.map.hasOwnProperty(r)&&t.call(e,this.map[r],r,this)},f.prototype.keys=function(){var t=[];return this.forEach(function(e,r){t.push(r)}),c(t)},f.prototype.values=function(){var t=[];return this.forEach(function(e){t.push(e)}),c(t)},f.prototype.entries=function(){var t=[];return this.forEach(function(e,r){t.push([r,e])}),c(t)},e.iterable&&(f.prototype[Symbol.iterator]=f.prototype.entries);var i=["DELETE","GET","HEAD","OPTIONS","POST","PUT"];m.prototype.clone=function(){return new m(this,{body:this._bodyInit})},y.call(m.prototype),y.call(g.prototype),g.prototype.clone=function(){return new g(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new f(this.headers),url:this.url})},g.error=function(){var t=new g(null,{status:0,statusText:""});return t.type="error",t};var a=[301,302,303,307,308];g.redirect=function(t,e){if(-1===a.indexOf(e))throw new RangeError("Invalid status code");return new g(null,{status:e,headers:{location:t}})},t.Headers=f,t.Request=m,t.Response=g,t.fetch=function(t,r){return new Promise(function(n,o){var i=new m(t,r),a=new XMLHttpRequest;a.onload=function(){var t={status:a.status,statusText:a.statusText,headers:function(t){var e=new f;return t.replace(/\r?\n[\t ]+/g," ").split(/\r?\n/).forEach(function(t){var r=t.split(":"),n=r.shift().trim();if(n){var o=r.join(":").trim();e.append(n,o)}}),e}(a.getAllResponseHeaders()||"")};t.url="responseURL"in a?a.responseURL:t.headers.get("X-Request-URL");var e="response"in a?a.response:a.responseText;n(new g(e,t))},a.onerror=function(){o(new TypeError("Network request failed"))},a.ontimeout=function(){o(new TypeError("Network request failed"))},a.open(i.method,i.url,!0),"include"===i.credentials?a.withCredentials=!0:"omit"===i.credentials&&(a.withCredentials=!1),"responseType"in a&&e.blob&&(a.responseType="blob"),i.headers.forEach(function(t,e){a.setRequestHeader(e,t)}),a.send(void 0===i._bodyInit?null:i._bodyInit)})},t.fetch.polyfill=!0}function s(t){if("string"!=typeof t&&(t=String(t)),/[^a-z0-9\-#$%&'*+.\^_`|~]/i.test(t))throw new TypeError("Invalid character in header field name");return t.toLowerCase()}function u(t){return"string"!=typeof t&&(t=String(t)),t}function c(t){var r={next:function(){var e=t.shift();return{done:void 0===e,value:e}}};return e.iterable&&(r[Symbol.iterator]=function(){return r}),r}function f(t){this.map={},t instanceof f?t.forEach(function(t,e){this.append(e,t)},this):Array.isArray(t)?t.forEach(function(t){this.append(t[0],t[1])},this):t&&Object.getOwnPropertyNames(t).forEach(function(e){this.append(e,t[e])},this)}function l(t){if(t.bodyUsed)return Promise.reject(new TypeError("Already read"));t.bodyUsed=!0}function p(t){return new Promise(function(e,r){t.onload=function(){e(t.result)},t.onerror=function(){r(t.error)}})}function d(t){var e=new FileReader,r=p(e);return e.readAsArrayBuffer(t),r}function h(t){if(t.slice)return t.slice(0);var e=new Uint8Array(t.byteLength);return e.set(new Uint8Array(t)),e.buffer}function y(){return this.bodyUsed=!1,this._initBody=function(t){if(this._bodyInit=t,t)if("string"==typeof t)this._bodyText=t;else if(e.blob&&Blob.prototype.isPrototypeOf(t))this._bodyBlob=t;else if(e.formData&&FormData.prototype.isPrototypeOf(t))this._bodyFormData=t;else if(e.searchParams&&URLSearchParams.prototype.isPrototypeOf(t))this._bodyText=t.toString();else if(e.arrayBuffer&&e.blob&&n(t))this._bodyArrayBuffer=h(t.buffer),this._bodyInit=new Blob([this._bodyArrayBuffer]);else{if(!e.arrayBuffer||!ArrayBuffer.prototype.isPrototypeOf(t)&&!o(t))throw new Error("unsupported BodyInit type");this._bodyArrayBuffer=h(t)}else this._bodyText="";this.headers.get("content-type")||("string"==typeof t?this.headers.set("content-type","text/plain;charset=UTF-8"):this._bodyBlob&&this._bodyBlob.type?this.headers.set("content-type",this._bodyBlob.type):e.searchParams&&URLSearchParams.prototype.isPrototypeOf(t)&&this.headers.set("content-type","application/x-www-form-urlencoded;charset=UTF-8"))},e.blob&&(this.blob=function(){var t=l(this);if(t)return t;if(this._bodyBlob)return Promise.resolve(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(new Blob([this._bodyArrayBuffer]));if(this._bodyFormData)throw new Error("could not read FormData body as blob");return Promise.resolve(new Blob([this._bodyText]))},this.arrayBuffer=function(){return this._bodyArrayBuffer?l(this)||Promise.resolve(this._bodyArrayBuffer):this.blob().then(d)}),this.text=function(){var t=l(this);if(t)return t;if(this._bodyBlob)return function(t){var e=new FileReader,r=p(e);return e.readAsText(t),r}(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(function(t){for(var e=new Uint8Array(t),r=new Array(e.length),n=0;n<e.length;n++)r[n]=String.fromCharCode(e[n]);return r.join("")}(this._bodyArrayBuffer));if(this._bodyFormData)throw new Error("could not read FormData body as text");return Promise.resolve(this._bodyText)},e.formData&&(this.formData=function(){return this.text().then(b)}),this.json=function(){return this.text().then(JSON.parse)},this}function m(t,e){var r=(e=e||{}).body;if(t instanceof m){if(t.bodyUsed)throw new TypeError("Already read");this.url=t.url,this.credentials=t.credentials,e.headers||(this.headers=new f(t.headers)),this.method=t.method,this.mode=t.mode,r||null==t._bodyInit||(r=t._bodyInit,t.bodyUsed=!0)}else this.url=String(t);if(this.credentials=e.credentials||this.credentials||"omit",!e.headers&&this.headers||(this.headers=new f(e.headers)),this.method=function(t){var e=t.toUpperCase();return i.indexOf(e)>-1?e:t}(e.method||this.method||"GET"),this.mode=e.mode||this.mode||null,this.referrer=null,("GET"===this.method||"HEAD"===this.method)&&r)throw new TypeError("Body not allowed for GET or HEAD requests");this._initBody(r)}function b(t){var e=new FormData;return t.trim().split("&").forEach(function(t){if(t){var r=t.split("="),n=r.shift().replace(/\+/g," "),o=r.join("=").replace(/\+/g," ");e.append(decodeURIComponent(n),decodeURIComponent(o))}}),e}function g(t,e){e||(e={}),this.type="default",this.status=void 0===e.status?200:e.status,this.ok=this.status>=200&&this.status<300,this.statusText="statusText"in e?e.statusText:"OK",this.headers=new f(e.headers),this.url=e.url||"",this._initBody(t)}}(void 0!==t?t:this)}).call(r,void 0);var n=r.fetch;n.Response=r.Response,n.Request=r.Request,n.Headers=r.Headers;"object"===e(t)&&t.exports&&(t.exports=n,t.exports.default=n)}).call(this,r(2)(t))},function(t,e){function r(t){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}t.exports="object"==("undefined"==typeof self?"undefined":r(self))?self.FormData:window.FormData},function(t,e){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children||(t.children=[]),Object.defineProperty(t,"loaded",{enumerable:!0,get:function(){return t.l}}),Object.defineProperty(t,"id",{enumerable:!0,get:function(){return t.i}}),t.webpackPolyfill=1),t}},function(t,e,r){"use strict";r.r(e);var n=r(0),o=r.n(n),i=r(1),a=r.n(i);function s(t){return(s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function u(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(t){return Object.getOwnPropertyDescriptor(r,t).enumerable}))),n.forEach(function(e){g(t,e,r[e])})}return t}function c(){return(c=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var r=arguments[e];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(t[n]=r[n])}return t}).apply(this,arguments)}function f(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function l(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}function p(t,e,r){return e&&l(t.prototype,e),r&&l(t,r),t}function d(t,e){return!e||"object"!==s(e)&&"function"!=typeof e?b(t):e}function h(t){return(h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function y(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&m(t,e)}function m(t,e){return(m=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}function b(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function g(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}var w=wp.element,v=w.Fragment,_=w.Component,P=wp.data,O=P.withSelect,E=P.withDispatch,T=wp.compose.compose,x=wp.components.Button,S=wp.i18n.__,j=lodash.property,A=function(t){function e(){var t,r;f(this,e);for(var n=arguments.length,i=new Array(n),s=0;s<n;s++)i[s]=arguments[s];return g(b(b(r=d(this,(t=h(e)).call.apply(t,[this].concat(i))))),"state",{image_url:null,msg:S("Loading...")}),g(b(b(r)),"updateImageUrl",function(){r.getImageUrl(r.props.image_id).then(function(t){return r.setState({image_url:t})}).catch(function(t){return console.log(t)&&r.setState({msg:S("Could not load image")})})}),g(b(b(r)),"getImageUrl",function(t){var e=new a.a;return e.append("action","get_image"),e.append("image_id",t),o()(photocrati_ajax.url,{method:"POST",body:e,headers:{Accept:"application/json"}}).then(function(t){return t.json()}).then(j("image.image_url"))}),r}return y(e,_),p(e,[{key:"componentDidUpdate",value:function(t){this.props.image_id!=t.image_id&&this.updateImageUrl()}},{key:"componentDidMount",value:function(){this.updateImageUrl()}},{key:"render",value:function(){var t=this.state.msg,e=this.state.image_url?React.createElement("img",{src:this.state.image_url}):React.createElement("span",null,t);return React.createElement("div",{style:{paddingTop:"5px",paddingBottom:"5px"}},e)}}]),e}(),B=function(t){function e(){var t,r;f(this,e);for(var n=arguments.length,o=new Array(n),i=0;i<n;i++)o[i]=arguments[i];return g(b(b(r=d(this,(t=h(e)).call.apply(t,[this].concat(o))))),"handleOpenClick",function(t){var e=r.props.currentPostId;top.set_ngg_post_thumbnail=r.onUpdatePostThumbnail,tb_show("Set NextGEN Featured Image",ngg_featured_image.modal_url.replace(/%post_id%/,e))}),g(b(b(r)),"handleRemoveClick",function(t){r.props.onRemoveNggPostThumbnail()}),g(b(b(r)),"onUpdatePostThumbnail",function(t){tb_remove(),r.props.onSetNggPostThumbnail(parseInt(t))}),r}return y(e,_),p(e,[{key:"render",value:function(){var t=this.props,e=t.PostFeaturedImage,r=t.nggPostThumbnailId;return React.createElement(v,null,!r&&React.createElement(e,this.props),React.createElement(x,{style:{marginTop:"10px"},onClick:this.handleOpenClick,className:"editor-post-featured-image__toggle"},S("Set NextGEN Featured Image")),r>0&&React.createElement("div",null,React.createElement(A,{image_id:r}),React.createElement(x,{onClick:this.handleRemoveClick,className:"is-link is-destructive"},S("Remove featured image"))))}}]),e}(),R=O(function(t){var e=t("core/editor"),r=e.getCurrentPostId,n=e.getEditedPostAttribute,o=n("featured_media"),i=n("meta").ngg_post_thumbnail;return{currentPostId:r(),featuredImageId:o,nggPostThumbnailId:i}}),I=E(function(t){var e=t("core/editor").editPost;return{onSetNggPostThumbnail:function(t){var r=wp.data.select("core/editor").getEditedPostAttribute("meta");r.ngg_post_thumbnail=t,e(u({},r,{meta:r}))},onRemoveNggPostThumbnail:function(){var t=wp.data.select("core/editor").getEditedPostAttribute("meta");t.ngg_post_thumbnail=0,t.featured_media=0,e(u({},t,{meta:t}))}}}),U=function(t){return T(R,I)(function(t){return function(e){return React.createElement(B,c({PostFeaturedImage:t},e))}}(t))},D=lodash.memoize,F={get:function(t,e){return"isProxy"==e||("PostFeaturedImage"==e?U(function(t){return D(function(e){return t[e]})}(t)(e)):t[e])}},k={get:function(t,e){return"editor"==e&&t[e]&&!t[e].isProxy&&(t[e]=new Proxy(t[e],F)),t[e]},set:function(t,e,r){return"editor"==e&&(r=new Proxy(r,F)),t[e]=r,r}};window.wp=new Proxy(wp,k)}]);
2
  //# sourceMappingURL=post-thumbnail.min.js.map
1
+ !function(t){var e={};function r(n){if(e[n])return e[n].exports;var o=e[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=t,r.c=e,r.d=function(t,e,n){r.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},r.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},r.t=function(t,e){if(1&e&&(t=r(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var o in t)r.d(n,o,function(e){return t[e]}.bind(null,o));return n},r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,"a",e),e},r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.p="",r(r.s=3)}([function(t,e,r){(function(t){function e(t){return(e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var r=function(t){function e(){this.fetch=!1}return e.prototype=t,new e}("undefined"!=typeof self?self:this);(function(t){!function(t){if(!t.fetch){var e={searchParams:"URLSearchParams"in t,iterable:"Symbol"in t&&"iterator"in Symbol,blob:"FileReader"in t&&"Blob"in t&&function(){try{return new Blob,!0}catch(t){return!1}}(),formData:"FormData"in t,arrayBuffer:"ArrayBuffer"in t};if(e.arrayBuffer)var r=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]"],n=function(t){return t&&DataView.prototype.isPrototypeOf(t)},o=ArrayBuffer.isView||function(t){return t&&r.indexOf(Object.prototype.toString.call(t))>-1};f.prototype.append=function(t,e){t=s(t),e=u(e);var r=this.map[t];this.map[t]=r?r+","+e:e},f.prototype.delete=function(t){delete this.map[s(t)]},f.prototype.get=function(t){return t=s(t),this.has(t)?this.map[t]:null},f.prototype.has=function(t){return this.map.hasOwnProperty(s(t))},f.prototype.set=function(t,e){this.map[s(t)]=u(e)},f.prototype.forEach=function(t,e){for(var r in this.map)this.map.hasOwnProperty(r)&&t.call(e,this.map[r],r,this)},f.prototype.keys=function(){var t=[];return this.forEach(function(e,r){t.push(r)}),c(t)},f.prototype.values=function(){var t=[];return this.forEach(function(e){t.push(e)}),c(t)},f.prototype.entries=function(){var t=[];return this.forEach(function(e,r){t.push([r,e])}),c(t)},e.iterable&&(f.prototype[Symbol.iterator]=f.prototype.entries);var i=["DELETE","GET","HEAD","OPTIONS","POST","PUT"];m.prototype.clone=function(){return new m(this,{body:this._bodyInit})},y.call(m.prototype),y.call(g.prototype),g.prototype.clone=function(){return new g(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new f(this.headers),url:this.url})},g.error=function(){var t=new g(null,{status:0,statusText:""});return t.type="error",t};var a=[301,302,303,307,308];g.redirect=function(t,e){if(-1===a.indexOf(e))throw new RangeError("Invalid status code");return new g(null,{status:e,headers:{location:t}})},t.Headers=f,t.Request=m,t.Response=g,t.fetch=function(t,r){return new Promise(function(n,o){var i=new m(t,r),a=new XMLHttpRequest;a.onload=function(){var t={status:a.status,statusText:a.statusText,headers:function(t){var e=new f;return t.replace(/\r?\n[\t ]+/g," ").split(/\r?\n/).forEach(function(t){var r=t.split(":"),n=r.shift().trim();if(n){var o=r.join(":").trim();e.append(n,o)}}),e}(a.getAllResponseHeaders()||"")};t.url="responseURL"in a?a.responseURL:t.headers.get("X-Request-URL");var e="response"in a?a.response:a.responseText;n(new g(e,t))},a.onerror=function(){o(new TypeError("Network request failed"))},a.ontimeout=function(){o(new TypeError("Network request failed"))},a.open(i.method,i.url,!0),"include"===i.credentials?a.withCredentials=!0:"omit"===i.credentials&&(a.withCredentials=!1),"responseType"in a&&e.blob&&(a.responseType="blob"),i.headers.forEach(function(t,e){a.setRequestHeader(e,t)}),a.send(void 0===i._bodyInit?null:i._bodyInit)})},t.fetch.polyfill=!0}function s(t){if("string"!=typeof t&&(t=String(t)),/[^a-z0-9\-#$%&'*+.\^_`|~]/i.test(t))throw new TypeError("Invalid character in header field name");return t.toLowerCase()}function u(t){return"string"!=typeof t&&(t=String(t)),t}function c(t){var r={next:function(){var e=t.shift();return{done:void 0===e,value:e}}};return e.iterable&&(r[Symbol.iterator]=function(){return r}),r}function f(t){this.map={},t instanceof f?t.forEach(function(t,e){this.append(e,t)},this):Array.isArray(t)?t.forEach(function(t){this.append(t[0],t[1])},this):t&&Object.getOwnPropertyNames(t).forEach(function(e){this.append(e,t[e])},this)}function l(t){if(t.bodyUsed)return Promise.reject(new TypeError("Already read"));t.bodyUsed=!0}function p(t){return new Promise(function(e,r){t.onload=function(){e(t.result)},t.onerror=function(){r(t.error)}})}function d(t){var e=new FileReader,r=p(e);return e.readAsArrayBuffer(t),r}function h(t){if(t.slice)return t.slice(0);var e=new Uint8Array(t.byteLength);return e.set(new Uint8Array(t)),e.buffer}function y(){return this.bodyUsed=!1,this._initBody=function(t){if(this._bodyInit=t,t)if("string"==typeof t)this._bodyText=t;else if(e.blob&&Blob.prototype.isPrototypeOf(t))this._bodyBlob=t;else if(e.formData&&FormData.prototype.isPrototypeOf(t))this._bodyFormData=t;else if(e.searchParams&&URLSearchParams.prototype.isPrototypeOf(t))this._bodyText=t.toString();else if(e.arrayBuffer&&e.blob&&n(t))this._bodyArrayBuffer=h(t.buffer),this._bodyInit=new Blob([this._bodyArrayBuffer]);else{if(!e.arrayBuffer||!ArrayBuffer.prototype.isPrototypeOf(t)&&!o(t))throw new Error("unsupported BodyInit type");this._bodyArrayBuffer=h(t)}else this._bodyText="";this.headers.get("content-type")||("string"==typeof t?this.headers.set("content-type","text/plain;charset=UTF-8"):this._bodyBlob&&this._bodyBlob.type?this.headers.set("content-type",this._bodyBlob.type):e.searchParams&&URLSearchParams.prototype.isPrototypeOf(t)&&this.headers.set("content-type","application/x-www-form-urlencoded;charset=UTF-8"))},e.blob&&(this.blob=function(){var t=l(this);if(t)return t;if(this._bodyBlob)return Promise.resolve(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(new Blob([this._bodyArrayBuffer]));if(this._bodyFormData)throw new Error("could not read FormData body as blob");return Promise.resolve(new Blob([this._bodyText]))},this.arrayBuffer=function(){return this._bodyArrayBuffer?l(this)||Promise.resolve(this._bodyArrayBuffer):this.blob().then(d)}),this.text=function(){var t=l(this);if(t)return t;if(this._bodyBlob)return function(t){var e=new FileReader,r=p(e);return e.readAsText(t),r}(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(function(t){for(var e=new Uint8Array(t),r=new Array(e.length),n=0;n<e.length;n++)r[n]=String.fromCharCode(e[n]);return r.join("")}(this._bodyArrayBuffer));if(this._bodyFormData)throw new Error("could not read FormData body as text");return Promise.resolve(this._bodyText)},e.formData&&(this.formData=function(){return this.text().then(b)}),this.json=function(){return this.text().then(JSON.parse)},this}function m(t,e){var r=(e=e||{}).body;if(t instanceof m){if(t.bodyUsed)throw new TypeError("Already read");this.url=t.url,this.credentials=t.credentials,e.headers||(this.headers=new f(t.headers)),this.method=t.method,this.mode=t.mode,r||null==t._bodyInit||(r=t._bodyInit,t.bodyUsed=!0)}else this.url=String(t);if(this.credentials=e.credentials||this.credentials||"omit",!e.headers&&this.headers||(this.headers=new f(e.headers)),this.method=function(t){var e=t.toUpperCase();return i.indexOf(e)>-1?e:t}(e.method||this.method||"GET"),this.mode=e.mode||this.mode||null,this.referrer=null,("GET"===this.method||"HEAD"===this.method)&&r)throw new TypeError("Body not allowed for GET or HEAD requests");this._initBody(r)}function b(t){var e=new FormData;return t.trim().split("&").forEach(function(t){if(t){var r=t.split("="),n=r.shift().replace(/\+/g," "),o=r.join("=").replace(/\+/g," ");e.append(decodeURIComponent(n),decodeURIComponent(o))}}),e}function g(t,e){e||(e={}),this.type="default",this.status=void 0===e.status?200:e.status,this.ok=this.status>=200&&this.status<300,this.statusText="statusText"in e?e.statusText:"OK",this.headers=new f(e.headers),this.url=e.url||"",this._initBody(t)}}(void 0!==t?t:this)}).call(r,void 0);var n=r.fetch;n.Response=r.Response,n.Request=r.Request,n.Headers=r.Headers;"object"===e(t)&&t.exports&&(t.exports=n,t.exports.default=n)}).call(this,r(2)(t))},function(t,e){function r(t){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}t.exports="object"==("undefined"==typeof self?"undefined":r(self))?self.FormData:window.FormData},function(t,e){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children||(t.children=[]),Object.defineProperty(t,"loaded",{enumerable:!0,get:function(){return t.l}}),Object.defineProperty(t,"id",{enumerable:!0,get:function(){return t.i}}),t.webpackPolyfill=1),t}},function(t,e,r){"use strict";r.r(e);var n=r(0),o=r.n(n),i=r(1),a=r.n(i);function s(t){return(s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function u(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(t){return Object.getOwnPropertyDescriptor(r,t).enumerable}))),n.forEach(function(e){g(t,e,r[e])})}return t}function c(){return(c=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var r=arguments[e];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(t[n]=r[n])}return t}).apply(this,arguments)}function f(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function l(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}function p(t,e,r){return e&&l(t.prototype,e),r&&l(t,r),t}function d(t,e){return!e||"object"!==s(e)&&"function"!=typeof e?b(t):e}function h(t){return(h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function y(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&m(t,e)}function m(t,e){return(m=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}function b(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function g(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}var w=wp.element,v=w.Fragment,_=w.Component,P=wp.data,O=P.withSelect,E=P.withDispatch,x=wp.compose.compose,T=wp.components.Button,S=wp.i18n.__,j=lodash.property,A=function(t){function e(){var t,r;f(this,e);for(var n=arguments.length,i=new Array(n),s=0;s<n;s++)i[s]=arguments[s];return g(b(b(r=d(this,(t=h(e)).call.apply(t,[this].concat(i))))),"state",{image_url:null,msg:S("Loading...")}),g(b(b(r)),"updateImageUrl",function(){r.getImageUrl(r.props.image_id).then(function(t){return r.setState({image_url:t})}).catch(function(t){return console.log(t)&&r.setState({msg:S("Could not load image")})})}),g(b(b(r)),"getImageUrl",function(t){var e=new a.a;return e.append("action","get_image"),e.append("image_id",t),o()(photocrati_ajax.url,{method:"POST",body:e,headers:{Accept:"application/json"}}).then(function(t){return t.json()}).then(j("image.image_url"))}),r}return y(e,_),p(e,[{key:"componentDidUpdate",value:function(t){this.props.image_id!=t.image_id&&this.updateImageUrl()}},{key:"componentDidMount",value:function(){this.updateImageUrl()}},{key:"render",value:function(){var t=this.state.msg,e=this.state.image_url?React.createElement("img",{src:this.state.image_url}):React.createElement("span",null,t);return React.createElement("div",{style:{paddingTop:"5px",paddingBottom:"5px"}},e)}}]),e}(),B=function(t){function e(){var t,r;f(this,e);for(var n=arguments.length,o=new Array(n),i=0;i<n;i++)o[i]=arguments[i];return g(b(b(r=d(this,(t=h(e)).call.apply(t,[this].concat(o))))),"handleOpenClick",function(t){var e=r.props.currentPostId;top.set_ngg_post_thumbnail=r.onUpdatePostThumbnail,tb_show("Set NextGEN Featured Image",ngg_featured_image.modal_url.replace(/%post_id%/,e))}),g(b(b(r)),"handleRemoveClick",function(t){r.props.onRemoveNggPostThumbnail()}),g(b(b(r)),"onUpdatePostThumbnail",function(t){tb_remove(),r.props.onSetNggPostThumbnail(parseInt(t))}),r}return y(e,_),p(e,[{key:"render",value:function(){var t=this.props,e=t.PostFeaturedImage,r=t.nggPostThumbnailId;return React.createElement(v,null,!r&&React.createElement(e,this.props),React.createElement(T,{style:{marginTop:"10px"},onClick:this.handleOpenClick,className:"editor-post-featured-image__toggle"},S("Set NextGEN Featured Image")),r>0&&React.createElement("div",null,React.createElement(A,{image_id:r}),React.createElement(T,{onClick:this.handleRemoveClick,className:"is-link is-destructive"},S("Remove featured image"))))}}]),e}(),R=O(function(t){var e=t("core/editor"),r=e.getCurrentPostId,n=e.getEditedPostAttribute,o=n("featured_media"),i=n("meta").ngg_post_thumbnail;return{currentPostId:r(),featuredImageId:o,nggPostThumbnailId:i}}),I=E(function(t){var e=t("core/editor").editPost;return{onSetNggPostThumbnail:function(t){var r=wp.data.select("core/editor").getEditedPostAttribute("meta");r.ngg_post_thumbnail=t,e(u({},r,{meta:r}))},onRemoveNggPostThumbnail:function(){var t=wp.data.select("core/editor").getEditedPostAttribute("meta");t.ngg_post_thumbnail=0,t.featured_media=0,e(u({},t,{meta:t}))}}}),U=function(t){return x(R,I)(function(t){return function(e){return React.createElement(B,c({PostFeaturedImage:t},e))}}(t))},D=lodash.memoize,F={get:function(t,e){return"isProxy"==e||("PostFeaturedImage"==e?U(function(t){return D(function(e){return t[e]})}(t)(e)):t[e])}},k={get:function(t,e){return"editor"==e&&(console.log(t[e]),t[e]&&!t[e].isProxy&&(t[e]=new Proxy(t[e],F))),t[e]},set:function(t,e,r){return"editor"!=e||r.isProxy||(r=new Proxy(r,F)),t[e]=r,r}};window.wp=new Proxy(wp,k)}]);
2
  //# sourceMappingURL=post-thumbnail.min.js.map
products/photocrati_nextgen/modules/nextgen_block/static/build/post-thumbnail.min.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/cross-fetch/dist/browser-ponyfill.js","webpack:///./node_modules/form-data/lib/browser.js","webpack:///(webpack)/buildin/module.js","webpack:///./build/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_block/static/src/components/ngg-post-thumbnail.min.js","webpack:///./build/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_block/static/src/post-thumbnail.min.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","__root__","root","F","this","fetch","self","support","searchParams","iterable","blob","Blob","e","formData","arrayBuffer","viewClasses","isDataView","obj","DataView","isPrototypeOf","isArrayBufferView","ArrayBuffer","isView","indexOf","toString","Headers","append","normalizeName","normalizeValue","oldValue","map","has","set","forEach","callback","thisArg","keys","items","push","iteratorFor","values","entries","iterator","methods","Request","clone","body","_bodyInit","Body","Response","status","statusText","headers","url","error","response","type","redirectStatuses","redirect","RangeError","location","input","init","Promise","resolve","reject","request","xhr","XMLHttpRequest","onload","options","rawHeaders","replace","split","line","parts","shift","trim","join","parseHeaders","getAllResponseHeaders","responseURL","responseText","onerror","TypeError","ontimeout","open","method","credentials","withCredentials","responseType","setRequestHeader","send","polyfill","String","test","toLowerCase","next","done","undefined","Array","isArray","header","getOwnPropertyNames","consumed","bodyUsed","fileReaderReady","reader","result","readBlobAsArrayBuffer","FileReader","promise","readAsArrayBuffer","bufferClone","buf","slice","view","Uint8Array","byteLength","buffer","_initBody","_bodyText","_bodyBlob","FormData","_bodyFormData","URLSearchParams","_bodyArrayBuffer","Error","rejected","then","text","readAsText","readBlobAsText","chars","length","fromCharCode","readArrayBufferAsText","decode","json","JSON","parse","upcased","toUpperCase","normalizeMethod","referrer","form","bytes","decodeURIComponent","bodyInit","ok","_typeof","default","window","webpackPolyfill","deprecate","paths","children","wp","element","Fragment","Component","data","withSelect","withDispatch","compose","Button","components","__","i18n","lodash","NggThumbnail","_Component","_getPrototypeOf2","_this","_classCallCheck","_len","arguments","args","_key","_defineProperty","_assertThisInitialized","_possibleConstructorReturn","_getPrototypeOf","apply","concat","image_url","msg","getImageUrl","props","image_id","setState","catch","err","console","log","photocrati_ajax","Accept","res","_inherits","_createClass","prevProps","updateImageUrl","state","el","React","createElement","src","style","paddingTop","paddingBottom","PostThumbnail","currentPostId","_this2","top","set_ngg_post_thumbnail","onUpdatePostThumbnail","tb_show","ngg_featured_image","modal_url","onRemoveNggPostThumbnail","ngg_image_id","tb_remove","onSetNggPostThumbnail","parseInt","_this$props","PostFeaturedImage","nggPostThumbnailId","marginTop","onClick","handleOpenClick","className","ngg_post_thumbnail_min_NggThumbnail","handleRemoveClick","applyWithSelect","select","_select","getCurrentPostId","getEditedPostAttribute","featuredImageId","ngg_post_thumbnail","applyWithDispatch","dispatch","editPost","meta","_objectSpread","featured_media","ngg_post_thumbnail_min","_extends","nggPostThumbnail","memoize","wpEditorProxy","prop","NggPostThumbnail","getOriginalComponent","wpProxy","isProxy","Proxy"],"mappings":"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","file":"post-thumbnail.min.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 3);\n","var __root__ = (function (root) {\nfunction F() { this.fetch = false; }\nF.prototype = root;\nreturn new F();\n})(typeof self !== 'undefined' ? self : this);\n(function(self) {\n\n(function(self) {\n\n if (self.fetch) {\n return\n }\n\n var support = {\n searchParams: 'URLSearchParams' in self,\n iterable: 'Symbol' in self && 'iterator' in Symbol,\n blob: 'FileReader' in self && 'Blob' in self && (function() {\n try {\n new Blob();\n return true\n } catch(e) {\n return false\n }\n })(),\n formData: 'FormData' in self,\n arrayBuffer: 'ArrayBuffer' in self\n };\n\n if (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ];\n\n var isDataView = function(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n };\n\n var isArrayBufferView = ArrayBuffer.isView || function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n };\n }\n\n function normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name);\n }\n if (/[^a-z0-9\\-#$%&'*+.\\^_`|~]/i.test(name)) {\n throw new TypeError('Invalid character in header field name')\n }\n return name.toLowerCase()\n }\n\n function normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value);\n }\n return value\n }\n\n // Build a destructive iterator for the value list\n function iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift();\n return {done: value === undefined, value: value}\n }\n };\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n };\n }\n\n return iterator\n }\n\n function Headers(headers) {\n this.map = {};\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value);\n }, this);\n } else if (Array.isArray(headers)) {\n headers.forEach(function(header) {\n this.append(header[0], header[1]);\n }, this);\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name]);\n }, this);\n }\n }\n\n Headers.prototype.append = function(name, value) {\n name = normalizeName(name);\n value = normalizeValue(value);\n var oldValue = this.map[name];\n this.map[name] = oldValue ? oldValue+','+value : value;\n };\n\n Headers.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)];\n };\n\n Headers.prototype.get = function(name) {\n name = normalizeName(name);\n return this.has(name) ? this.map[name] : null\n };\n\n Headers.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n };\n\n Headers.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value);\n };\n\n Headers.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this);\n }\n }\n };\n\n Headers.prototype.keys = function() {\n var items = [];\n this.forEach(function(value, name) { items.push(name); });\n return iteratorFor(items)\n };\n\n Headers.prototype.values = function() {\n var items = [];\n this.forEach(function(value) { items.push(value); });\n return iteratorFor(items)\n };\n\n Headers.prototype.entries = function() {\n var items = [];\n this.forEach(function(value, name) { items.push([name, value]); });\n return iteratorFor(items)\n };\n\n if (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries;\n }\n\n function consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true;\n }\n\n function fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result);\n };\n reader.onerror = function() {\n reject(reader.error);\n };\n })\n }\n\n function readBlobAsArrayBuffer(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsArrayBuffer(blob);\n return promise\n }\n\n function readBlobAsText(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsText(blob);\n return promise\n }\n\n function readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf);\n var chars = new Array(view.length);\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i]);\n }\n return chars.join('')\n }\n\n function bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength);\n view.set(new Uint8Array(buf));\n return view.buffer\n }\n }\n\n function Body() {\n this.bodyUsed = false;\n\n this._initBody = function(body) {\n this._bodyInit = body;\n if (!body) {\n this._bodyText = '';\n } else if (typeof body === 'string') {\n this._bodyText = body;\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body;\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body;\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString();\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer);\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer]);\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body);\n } else {\n throw new Error('unsupported BodyInit type')\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8');\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type);\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n }\n }\n };\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n };\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n return consumed(this) || Promise.resolve(this._bodyArrayBuffer)\n } else {\n return this.blob().then(readBlobAsArrayBuffer)\n }\n };\n }\n\n this.text = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n };\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n };\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n };\n\n return this\n }\n\n // HTTP methods whose capitalization should be normalized\n var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT'];\n\n function normalizeMethod(method) {\n var upcased = method.toUpperCase();\n return (methods.indexOf(upcased) > -1) ? upcased : method\n }\n\n function Request(input, options) {\n options = options || {};\n var body = options.body;\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url;\n this.credentials = input.credentials;\n if (!options.headers) {\n this.headers = new Headers(input.headers);\n }\n this.method = input.method;\n this.mode = input.mode;\n if (!body && input._bodyInit != null) {\n body = input._bodyInit;\n input.bodyUsed = true;\n }\n } else {\n this.url = String(input);\n }\n\n this.credentials = options.credentials || this.credentials || 'omit';\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers);\n }\n this.method = normalizeMethod(options.method || this.method || 'GET');\n this.mode = options.mode || this.mode || null;\n this.referrer = null;\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body);\n }\n\n Request.prototype.clone = function() {\n return new Request(this, { body: this._bodyInit })\n };\n\n function decode(body) {\n var form = new FormData();\n body.trim().split('&').forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=');\n var name = split.shift().replace(/\\+/g, ' ');\n var value = split.join('=').replace(/\\+/g, ' ');\n form.append(decodeURIComponent(name), decodeURIComponent(value));\n }\n });\n return form\n }\n\n function parseHeaders(rawHeaders) {\n var headers = new Headers();\n // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n // https://tools.ietf.org/html/rfc7230#section-3.2\n var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ');\n preProcessedHeaders.split(/\\r?\\n/).forEach(function(line) {\n var parts = line.split(':');\n var key = parts.shift().trim();\n if (key) {\n var value = parts.join(':').trim();\n headers.append(key, value);\n }\n });\n return headers\n }\n\n Body.call(Request.prototype);\n\n function Response(bodyInit, options) {\n if (!options) {\n options = {};\n }\n\n this.type = 'default';\n this.status = options.status === undefined ? 200 : options.status;\n this.ok = this.status >= 200 && this.status < 300;\n this.statusText = 'statusText' in options ? options.statusText : 'OK';\n this.headers = new Headers(options.headers);\n this.url = options.url || '';\n this._initBody(bodyInit);\n }\n\n Body.call(Response.prototype);\n\n Response.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n };\n\n Response.error = function() {\n var response = new Response(null, {status: 0, statusText: ''});\n response.type = 'error';\n return response\n };\n\n var redirectStatuses = [301, 302, 303, 307, 308];\n\n Response.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n };\n\n self.Headers = Headers;\n self.Request = Request;\n self.Response = Response;\n\n self.fetch = function(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init);\n var xhr = new XMLHttpRequest();\n\n xhr.onload = function() {\n var options = {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n };\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL');\n var body = 'response' in xhr ? xhr.response : xhr.responseText;\n resolve(new Response(body, options));\n };\n\n xhr.onerror = function() {\n reject(new TypeError('Network request failed'));\n };\n\n xhr.ontimeout = function() {\n reject(new TypeError('Network request failed'));\n };\n\n xhr.open(request.method, request.url, true);\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true;\n } else if (request.credentials === 'omit') {\n xhr.withCredentials = false;\n }\n\n if ('responseType' in xhr && support.blob) {\n xhr.responseType = 'blob';\n }\n\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value);\n });\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit);\n })\n };\n self.fetch.polyfill = true;\n})(typeof self !== 'undefined' ? self : this);\n}).call(__root__, void(0));\nvar fetch = __root__.fetch;\nvar Response = fetch.Response = __root__.Response;\nvar Request = fetch.Request = __root__.Request;\nvar Headers = fetch.Headers = __root__.Headers;\nif (typeof module === 'object' && module.exports) {\nmodule.exports = fetch;\n// Needed for TypeScript consumers without esModuleInterop.\nmodule.exports.default = fetch;\n}\n","/* eslint-env browser */\nmodule.exports = typeof self == 'object' ? self.FormData : window.FormData;\n","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","import fetch from 'cross-fetch'\nimport FormData from 'form-data'\n\nconst {Fragment, Component} = wp.element\nconst {withSelect, withDispatch} = wp.data\nconst {compose} = wp.compose\nconst {Button}\t\t\t\t\t\t= wp.components\nconst {__}\t\t\t\t\t\t\t= wp.i18n\nconst {property}\t\t\t\t\t= lodash\n\n/**\n * Renders a NGG thumbnail\n */\nexport class NggThumbnail extends Component {\n\tstate = {\n\t\timage_url: null,\n\t\tmsg: __('Loading...')\n\t}\n\n\tcomponentDidUpdate(prevProps) {\n\t\tif (this.props.image_id != prevProps.image_id) {\n\t\t\tthis.updateImageUrl()\n\t\t}\n\t}\n\n\tcomponentDidMount() {\n\t\tthis.updateImageUrl()\n\t}\n\n\tupdateImageUrl = () => {\n\t\tthis.getImageUrl(this.props.image_id)\n\t\t\t.then(image_url => this.setState({image_url}))\n\t\t\t.catch((err) => console.log(err) && this.setState({msg: __(\"Could not load image\")}))\t\t\n\t}\n\n\tgetImageUrl = image_id => {\n\t\tconst data = new FormData()\n\n\t\tdata.append('action', 'get_image')\n\t\tdata.append('image_id', image_id)\t\n\n\t\treturn fetch(photocrati_ajax.url, {method: 'POST', body: data, headers: {'Accept': 'application/json'}})\n\t\t\t.then(res => res.json())\n\t\t\t.then(property('image.image_url'))\n\t}\n\n\trender() {\n\t\tconst {msg} \t\t= this.state\n\n\t\tconst style = {\n\t\t\tpaddingTop: '5px',\n\t\t\tpaddingBottom: '5px'\n\t\t}\n\n\t\tconst el = this.state.image_url\n\t\t\t? <img src={this.state.image_url}/>\n\t\t\t: <span>{msg}</span>\n\t\t\n\t\treturn (\n\t\t\t<div style={style}>{el}</div>\n\t\t)\n\t}\n}\n\n/**\n * Displays the NGG Post Thumbnail component, which is a wrapper\n * around the PostFeaturedImage component.\n * \n * This exponent expects the following props:\n * \n * @param PostFeaturedImage PostFeaturedImage\n * @param Function onUpdatePostThumbnail\n * @param Integer nggPostThumbnailId\n */\nclass PostThumbnail extends Component {\n\n\t// Open the modal window to select a Featured Image\n\thandleOpenClick = e => {\n\t\tconst {currentPostId} = this.props\n\t\ttop.set_ngg_post_thumbnail = this.onUpdatePostThumbnail\n\t\ttb_show(\"Set NextGEN Featured Image\", ngg_featured_image.modal_url.replace(/%post_id%/, currentPostId))\n\t}\n\n\t// Remove the post thumbnail\n\thandleRemoveClick = e => {\n\t\tthis.props.onRemoveNggPostThumbnail()\n\t}\n\n\t// Close the modal window and set the ngg_post_thumbnail post meta field\n\tonUpdatePostThumbnail = ngg_image_id => {\n\t\ttb_remove()\n\t\tthis.props.onSetNggPostThumbnail(parseInt(ngg_image_id))\n\t}\n\n\trender() {\n\t\tconst {PostFeaturedImage, nggPostThumbnailId} = this.props\n\t\tconst buttonStyle = {marginTop: '10px'}\n\n\t\treturn (\n\t\t\t<Fragment>\n\t\t\t\t{! nggPostThumbnailId && <PostFeaturedImage {...this.props}/>}\n\n\t\t\t\t<Button style={buttonStyle} onClick={this.handleOpenClick} className=\"editor-post-featured-image__toggle\">\n\t\t\t\t\t{__('Set NextGEN Featured Image')}\n\t\t\t\t</Button>\n\n\t\t\t\t{nggPostThumbnailId > 0 && \n\t\t\t\t\t<div>\n\t\t\t\t\t\t<NggThumbnail image_id={nggPostThumbnailId}/>\n\t\t\t\t\t\t<Button onClick={this.handleRemoveClick} className=\"is-link is-destructive\">\n\t\t\t\t\t\t\t{__('Remove featured image')}\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</div>\n\t\t\t\t}\n\t\t\t</Fragment>\n\t\t)\n\t\t\n\t}\n}\n\n/**\n * A higher-order component used to provide the PostFeaturedImage prop\n * to the PostThumbnail component\n * @param PostFeaturedImage PostFeaturedImage \n */\nconst nggPostThumbnail = PostFeaturedImage => props => (\n\t<PostThumbnail PostFeaturedImage={PostFeaturedImage} {...props}/>\n)\n\n/**\n * A higher-order component using the core/editor store which provides the following props\n * to the PostThumbnail component:\n * \n * @param integer currentPostId\t\t\tthe id of the current post\n * @param integer nggPostThumbnailId\tthe NGG image id used as a post thumbnail for the post/page\n * @param integer featuredImageId\t\tthe media library image id used as a post thumbnail for the post/page \t\n */\nconst applyWithSelect = withSelect( ( select ) => {\n\tconst { getCurrentPostId, getEditedPostAttribute } = select( 'core/editor' );\n\tconst featuredImageId = getEditedPostAttribute( 'featured_media' );\n\tconst meta = getEditedPostAttribute('meta')\n\tconst nggPostThumbnailId = meta.ngg_post_thumbnail\n\t\n\treturn {\n\t\tcurrentPostId: getCurrentPostId(),\n\t\tfeaturedImageId,\n\t\tnggPostThumbnailId\n\t};\n} );\n\n\n/**\n * A higher-order component using the core/editor store which provides the following props\n * to the PostThumbnail component:\n * \n * @param function onSetPostThumbnail\n */\nconst applyWithDispatch = withDispatch( ( dispatch ) => {\n\tconst { editPost } = dispatch( 'core/editor' );\n\treturn {\n\t\tonSetNggPostThumbnail(image_id) {\n\t\t\tconst meta = wp.data.select('core/editor').getEditedPostAttribute('meta')\n\t\t\tmeta.ngg_post_thumbnail = image_id\n\t\t\teditPost({\n\t\t\t\t...meta,\n\t\t\t\tmeta\t\n\t\t\t})\n\t\t},\n\t\t\n\t\tonRemoveNggPostThumbnail() {\n\t\t\tconst meta = wp.data.select('core/editor').getEditedPostAttribute('meta')\n\t\t\tmeta.ngg_post_thumbnail = 0\n\t\t\tmeta.featured_media = 0\n\t\t\teditPost({\n\t\t\t\t...meta,\n\t\t\t\tmeta\n\t\t\t})\n\t\t},\n\t};\t\n} );\n\n/** Export a composed component **/\nexport default PostFeaturedImage => compose(\n\tapplyWithSelect,\n\tapplyWithDispatch\n)(nggPostThumbnail(PostFeaturedImage))\n","import NggPostThumbnail from './components/ngg-post-thumbnail.min'\nconst {memoize} = lodash\n\n// Gets the original component which we will wrap\nconst getOriginalComponent = obj => memoize(prop => {\n return obj[prop]\n})\n\n// Wrap wp && wp.editor in a Proxy. We can then override the wp.editor.PostFeaturedImage component\n// TODO: All of this logic should be encapsulated into a utility of some kind.\nconst wpEditorProxy = {\n get(obj, prop) {\n if (prop == 'isProxy') return true\n else if (prop == 'PostFeaturedImage') {\n return NggPostThumbnail(getOriginalComponent(obj)(prop))\n }\n return obj[prop]\n }\n }\nconst wpProxy = {\n get(obj, prop) {\n if (prop == 'editor') {\n if (obj[prop] && !obj[prop].isProxy) {\n obj[prop] = new Proxy(obj[prop], wpEditorProxy) \n }\n }\n return obj[prop]\n },\n\n set(obj, prop, value) {\n if (prop == 'editor') {\n value = new Proxy(value, wpEditorProxy)\n }\n obj[prop] = value\n return value\n }\n}\n\nwindow.wp = new Proxy(wp, wpProxy)"],"sourceRoot":""}
1
+ {"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/cross-fetch/dist/browser-ponyfill.js","webpack:///./node_modules/form-data/lib/browser.js","webpack:///(webpack)/buildin/module.js","webpack:///./build/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_block/static/src/components/ngg-post-thumbnail.min.js","webpack:///./build/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_block/static/src/post-thumbnail.min.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","__root__","root","F","this","fetch","self","support","searchParams","iterable","blob","Blob","e","formData","arrayBuffer","viewClasses","isDataView","obj","DataView","isPrototypeOf","isArrayBufferView","ArrayBuffer","isView","indexOf","toString","Headers","append","normalizeName","normalizeValue","oldValue","map","has","set","forEach","callback","thisArg","keys","items","push","iteratorFor","values","entries","iterator","methods","Request","clone","body","_bodyInit","Body","Response","status","statusText","headers","url","error","response","type","redirectStatuses","redirect","RangeError","location","input","init","Promise","resolve","reject","request","xhr","XMLHttpRequest","onload","options","rawHeaders","replace","split","line","parts","shift","trim","join","parseHeaders","getAllResponseHeaders","responseURL","responseText","onerror","TypeError","ontimeout","open","method","credentials","withCredentials","responseType","setRequestHeader","send","polyfill","String","test","toLowerCase","next","done","undefined","Array","isArray","header","getOwnPropertyNames","consumed","bodyUsed","fileReaderReady","reader","result","readBlobAsArrayBuffer","FileReader","promise","readAsArrayBuffer","bufferClone","buf","slice","view","Uint8Array","byteLength","buffer","_initBody","_bodyText","_bodyBlob","FormData","_bodyFormData","URLSearchParams","_bodyArrayBuffer","Error","rejected","then","text","readAsText","readBlobAsText","chars","length","fromCharCode","readArrayBufferAsText","decode","json","JSON","parse","upcased","toUpperCase","normalizeMethod","referrer","form","bytes","decodeURIComponent","bodyInit","ok","_typeof","default","window","webpackPolyfill","deprecate","paths","children","wp","element","Fragment","Component","data","withSelect","withDispatch","compose","Button","components","__","i18n","lodash","NggThumbnail","_Component","_getPrototypeOf2","_this","_classCallCheck","_len","arguments","args","_key","_defineProperty","_assertThisInitialized","_possibleConstructorReturn","_getPrototypeOf","apply","concat","image_url","msg","getImageUrl","props","image_id","setState","catch","err","console","log","photocrati_ajax","Accept","res","_inherits","_createClass","prevProps","updateImageUrl","state","el","React","createElement","src","style","paddingTop","paddingBottom","PostThumbnail","currentPostId","_this2","top","set_ngg_post_thumbnail","onUpdatePostThumbnail","tb_show","ngg_featured_image","modal_url","onRemoveNggPostThumbnail","ngg_image_id","tb_remove","onSetNggPostThumbnail","parseInt","_this$props","PostFeaturedImage","nggPostThumbnailId","marginTop","onClick","handleOpenClick","className","ngg_post_thumbnail_min_NggThumbnail","handleRemoveClick","applyWithSelect","select","_select","getCurrentPostId","getEditedPostAttribute","featuredImageId","ngg_post_thumbnail","applyWithDispatch","dispatch","editPost","meta","_objectSpread","featured_media","ngg_post_thumbnail_min","_extends","nggPostThumbnail","memoize","wpEditorProxy","prop","NggPostThumbnail","getOriginalComponent","wpProxy","isProxy","Proxy"],"mappings":"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","file":"post-thumbnail.min.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 3);\n","var __root__ = (function (root) {\nfunction F() { this.fetch = false; }\nF.prototype = root;\nreturn new F();\n})(typeof self !== 'undefined' ? self : this);\n(function(self) {\n\n(function(self) {\n\n if (self.fetch) {\n return\n }\n\n var support = {\n searchParams: 'URLSearchParams' in self,\n iterable: 'Symbol' in self && 'iterator' in Symbol,\n blob: 'FileReader' in self && 'Blob' in self && (function() {\n try {\n new Blob();\n return true\n } catch(e) {\n return false\n }\n })(),\n formData: 'FormData' in self,\n arrayBuffer: 'ArrayBuffer' in self\n };\n\n if (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ];\n\n var isDataView = function(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n };\n\n var isArrayBufferView = ArrayBuffer.isView || function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n };\n }\n\n function normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name);\n }\n if (/[^a-z0-9\\-#$%&'*+.\\^_`|~]/i.test(name)) {\n throw new TypeError('Invalid character in header field name')\n }\n return name.toLowerCase()\n }\n\n function normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value);\n }\n return value\n }\n\n // Build a destructive iterator for the value list\n function iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift();\n return {done: value === undefined, value: value}\n }\n };\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n };\n }\n\n return iterator\n }\n\n function Headers(headers) {\n this.map = {};\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value);\n }, this);\n } else if (Array.isArray(headers)) {\n headers.forEach(function(header) {\n this.append(header[0], header[1]);\n }, this);\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name]);\n }, this);\n }\n }\n\n Headers.prototype.append = function(name, value) {\n name = normalizeName(name);\n value = normalizeValue(value);\n var oldValue = this.map[name];\n this.map[name] = oldValue ? oldValue+','+value : value;\n };\n\n Headers.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)];\n };\n\n Headers.prototype.get = function(name) {\n name = normalizeName(name);\n return this.has(name) ? this.map[name] : null\n };\n\n Headers.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n };\n\n Headers.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value);\n };\n\n Headers.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this);\n }\n }\n };\n\n Headers.prototype.keys = function() {\n var items = [];\n this.forEach(function(value, name) { items.push(name); });\n return iteratorFor(items)\n };\n\n Headers.prototype.values = function() {\n var items = [];\n this.forEach(function(value) { items.push(value); });\n return iteratorFor(items)\n };\n\n Headers.prototype.entries = function() {\n var items = [];\n this.forEach(function(value, name) { items.push([name, value]); });\n return iteratorFor(items)\n };\n\n if (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries;\n }\n\n function consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true;\n }\n\n function fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result);\n };\n reader.onerror = function() {\n reject(reader.error);\n };\n })\n }\n\n function readBlobAsArrayBuffer(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsArrayBuffer(blob);\n return promise\n }\n\n function readBlobAsText(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsText(blob);\n return promise\n }\n\n function readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf);\n var chars = new Array(view.length);\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i]);\n }\n return chars.join('')\n }\n\n function bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength);\n view.set(new Uint8Array(buf));\n return view.buffer\n }\n }\n\n function Body() {\n this.bodyUsed = false;\n\n this._initBody = function(body) {\n this._bodyInit = body;\n if (!body) {\n this._bodyText = '';\n } else if (typeof body === 'string') {\n this._bodyText = body;\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body;\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body;\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString();\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer);\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer]);\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body);\n } else {\n throw new Error('unsupported BodyInit type')\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8');\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type);\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n }\n }\n };\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n };\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n return consumed(this) || Promise.resolve(this._bodyArrayBuffer)\n } else {\n return this.blob().then(readBlobAsArrayBuffer)\n }\n };\n }\n\n this.text = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n };\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n };\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n };\n\n return this\n }\n\n // HTTP methods whose capitalization should be normalized\n var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT'];\n\n function normalizeMethod(method) {\n var upcased = method.toUpperCase();\n return (methods.indexOf(upcased) > -1) ? upcased : method\n }\n\n function Request(input, options) {\n options = options || {};\n var body = options.body;\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url;\n this.credentials = input.credentials;\n if (!options.headers) {\n this.headers = new Headers(input.headers);\n }\n this.method = input.method;\n this.mode = input.mode;\n if (!body && input._bodyInit != null) {\n body = input._bodyInit;\n input.bodyUsed = true;\n }\n } else {\n this.url = String(input);\n }\n\n this.credentials = options.credentials || this.credentials || 'omit';\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers);\n }\n this.method = normalizeMethod(options.method || this.method || 'GET');\n this.mode = options.mode || this.mode || null;\n this.referrer = null;\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body);\n }\n\n Request.prototype.clone = function() {\n return new Request(this, { body: this._bodyInit })\n };\n\n function decode(body) {\n var form = new FormData();\n body.trim().split('&').forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=');\n var name = split.shift().replace(/\\+/g, ' ');\n var value = split.join('=').replace(/\\+/g, ' ');\n form.append(decodeURIComponent(name), decodeURIComponent(value));\n }\n });\n return form\n }\n\n function parseHeaders(rawHeaders) {\n var headers = new Headers();\n // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n // https://tools.ietf.org/html/rfc7230#section-3.2\n var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ');\n preProcessedHeaders.split(/\\r?\\n/).forEach(function(line) {\n var parts = line.split(':');\n var key = parts.shift().trim();\n if (key) {\n var value = parts.join(':').trim();\n headers.append(key, value);\n }\n });\n return headers\n }\n\n Body.call(Request.prototype);\n\n function Response(bodyInit, options) {\n if (!options) {\n options = {};\n }\n\n this.type = 'default';\n this.status = options.status === undefined ? 200 : options.status;\n this.ok = this.status >= 200 && this.status < 300;\n this.statusText = 'statusText' in options ? options.statusText : 'OK';\n this.headers = new Headers(options.headers);\n this.url = options.url || '';\n this._initBody(bodyInit);\n }\n\n Body.call(Response.prototype);\n\n Response.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n };\n\n Response.error = function() {\n var response = new Response(null, {status: 0, statusText: ''});\n response.type = 'error';\n return response\n };\n\n var redirectStatuses = [301, 302, 303, 307, 308];\n\n Response.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n };\n\n self.Headers = Headers;\n self.Request = Request;\n self.Response = Response;\n\n self.fetch = function(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init);\n var xhr = new XMLHttpRequest();\n\n xhr.onload = function() {\n var options = {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n };\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL');\n var body = 'response' in xhr ? xhr.response : xhr.responseText;\n resolve(new Response(body, options));\n };\n\n xhr.onerror = function() {\n reject(new TypeError('Network request failed'));\n };\n\n xhr.ontimeout = function() {\n reject(new TypeError('Network request failed'));\n };\n\n xhr.open(request.method, request.url, true);\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true;\n } else if (request.credentials === 'omit') {\n xhr.withCredentials = false;\n }\n\n if ('responseType' in xhr && support.blob) {\n xhr.responseType = 'blob';\n }\n\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value);\n });\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit);\n })\n };\n self.fetch.polyfill = true;\n})(typeof self !== 'undefined' ? self : this);\n}).call(__root__, void(0));\nvar fetch = __root__.fetch;\nvar Response = fetch.Response = __root__.Response;\nvar Request = fetch.Request = __root__.Request;\nvar Headers = fetch.Headers = __root__.Headers;\nif (typeof module === 'object' && module.exports) {\nmodule.exports = fetch;\n// Needed for TypeScript consumers without esModuleInterop.\nmodule.exports.default = fetch;\n}\n","/* eslint-env browser */\nmodule.exports = typeof self == 'object' ? self.FormData : window.FormData;\n","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","import fetch from 'cross-fetch'\nimport FormData from 'form-data'\n\nconst {Fragment, Component} = wp.element\nconst {withSelect, withDispatch} = wp.data\nconst {compose} = wp.compose\nconst {Button}\t\t\t\t\t\t= wp.components\nconst {__}\t\t\t\t\t\t\t= wp.i18n\nconst {property}\t\t\t\t\t= lodash\n\n/**\n * Renders a NGG thumbnail\n */\nexport class NggThumbnail extends Component {\n\tstate = {\n\t\timage_url: null,\n\t\tmsg: __('Loading...')\n\t}\n\n\tcomponentDidUpdate(prevProps) {\n\t\tif (this.props.image_id != prevProps.image_id) {\n\t\t\tthis.updateImageUrl()\n\t\t}\n\t}\n\n\tcomponentDidMount() {\n\t\tthis.updateImageUrl()\n\t}\n\n\tupdateImageUrl = () => {\n\t\tthis.getImageUrl(this.props.image_id)\n\t\t\t.then(image_url => this.setState({image_url}))\n\t\t\t.catch((err) => console.log(err) && this.setState({msg: __(\"Could not load image\")}))\t\t\n\t}\n\n\tgetImageUrl = image_id => {\n\t\tconst data = new FormData()\n\n\t\tdata.append('action', 'get_image')\n\t\tdata.append('image_id', image_id)\t\n\n\t\treturn fetch(photocrati_ajax.url, {method: 'POST', body: data, headers: {'Accept': 'application/json'}})\n\t\t\t.then(res => res.json())\n\t\t\t.then(property('image.image_url'))\n\t}\n\n\trender() {\n\t\tconst {msg} \t\t= this.state\n\n\t\tconst style = {\n\t\t\tpaddingTop: '5px',\n\t\t\tpaddingBottom: '5px'\n\t\t}\n\n\t\tconst el = this.state.image_url\n\t\t\t? <img src={this.state.image_url}/>\n\t\t\t: <span>{msg}</span>\n\t\t\n\t\treturn (\n\t\t\t<div style={style}>{el}</div>\n\t\t)\n\t}\n}\n\n/**\n * Displays the NGG Post Thumbnail component, which is a wrapper\n * around the PostFeaturedImage component.\n * \n * This exponent expects the following props:\n * \n * @param PostFeaturedImage PostFeaturedImage\n * @param Function onUpdatePostThumbnail\n * @param Integer nggPostThumbnailId\n */\nclass PostThumbnail extends Component {\n\n\t// Open the modal window to select a Featured Image\n\thandleOpenClick = e => {\n\t\tconst {currentPostId} = this.props\n\t\ttop.set_ngg_post_thumbnail = this.onUpdatePostThumbnail\n\t\ttb_show(\"Set NextGEN Featured Image\", ngg_featured_image.modal_url.replace(/%post_id%/, currentPostId))\n\t}\n\n\t// Remove the post thumbnail\n\thandleRemoveClick = e => {\n\t\tthis.props.onRemoveNggPostThumbnail()\n\t}\n\n\t// Close the modal window and set the ngg_post_thumbnail post meta field\n\tonUpdatePostThumbnail = ngg_image_id => {\n\t\ttb_remove()\n\t\tthis.props.onSetNggPostThumbnail(parseInt(ngg_image_id))\n\t}\n\n\trender() {\n\t\tconst {PostFeaturedImage, nggPostThumbnailId} = this.props\n\t\tconst buttonStyle = {marginTop: '10px'}\n\n\t\treturn (\n\t\t\t<Fragment>\n\t\t\t\t{! nggPostThumbnailId && <PostFeaturedImage {...this.props}/>}\n\n\t\t\t\t<Button style={buttonStyle} onClick={this.handleOpenClick} className=\"editor-post-featured-image__toggle\">\n\t\t\t\t\t{__('Set NextGEN Featured Image')}\n\t\t\t\t</Button>\n\n\t\t\t\t{nggPostThumbnailId > 0 && \n\t\t\t\t\t<div>\n\t\t\t\t\t\t<NggThumbnail image_id={nggPostThumbnailId}/>\n\t\t\t\t\t\t<Button onClick={this.handleRemoveClick} className=\"is-link is-destructive\">\n\t\t\t\t\t\t\t{__('Remove featured image')}\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</div>\n\t\t\t\t}\n\t\t\t</Fragment>\n\t\t)\n\t\t\n\t}\n}\n\n/**\n * A higher-order component used to provide the PostFeaturedImage prop\n * to the PostThumbnail component\n * @param PostFeaturedImage PostFeaturedImage \n */\nconst nggPostThumbnail = PostFeaturedImage => props => (\n\t<PostThumbnail PostFeaturedImage={PostFeaturedImage} {...props}/>\n)\n\n/**\n * A higher-order component using the core/editor store which provides the following props\n * to the PostThumbnail component:\n * \n * @param integer currentPostId\t\t\tthe id of the current post\n * @param integer nggPostThumbnailId\tthe NGG image id used as a post thumbnail for the post/page\n * @param integer featuredImageId\t\tthe media library image id used as a post thumbnail for the post/page \t\n */\nconst applyWithSelect = withSelect( ( select ) => {\n\tconst { getCurrentPostId, getEditedPostAttribute } = select( 'core/editor' );\n\tconst featuredImageId = getEditedPostAttribute( 'featured_media' );\n\tconst meta = getEditedPostAttribute('meta')\n\tconst nggPostThumbnailId = meta.ngg_post_thumbnail\n\t\n\treturn {\n\t\tcurrentPostId: getCurrentPostId(),\n\t\tfeaturedImageId,\n\t\tnggPostThumbnailId\n\t};\n} );\n\n\n/**\n * A higher-order component using the core/editor store which provides the following props\n * to the PostThumbnail component:\n * \n * @param function onSetPostThumbnail\n */\nconst applyWithDispatch = withDispatch( ( dispatch ) => {\n\tconst { editPost } = dispatch( 'core/editor' );\n\treturn {\n\t\tonSetNggPostThumbnail(image_id) {\n\t\t\tconst meta = wp.data.select('core/editor').getEditedPostAttribute('meta')\n\t\t\tmeta.ngg_post_thumbnail = image_id\n\t\t\teditPost({\n\t\t\t\t...meta,\n\t\t\t\tmeta\t\n\t\t\t})\n\t\t},\n\t\t\n\t\tonRemoveNggPostThumbnail() {\n\t\t\tconst meta = wp.data.select('core/editor').getEditedPostAttribute('meta')\n\t\t\tmeta.ngg_post_thumbnail = 0\n\t\t\tmeta.featured_media = 0\n\t\t\teditPost({\n\t\t\t\t...meta,\n\t\t\t\tmeta\n\t\t\t})\n\t\t},\n\t};\t\n} );\n\n/** Export a composed component **/\nexport default PostFeaturedImage => compose(\n\tapplyWithSelect,\n\tapplyWithDispatch\n)(nggPostThumbnail(PostFeaturedImage))\n","import NggPostThumbnail from './components/ngg-post-thumbnail.min'\nconst {memoize} = lodash\n\n// Gets the original component which we will wrap\nconst getOriginalComponent = obj => memoize(prop => {\n return obj[prop]\n})\n\n// Wrap wp && wp.editor in a Proxy. We can then override the wp.editor.PostFeaturedImage component\n// TODO: All of this logic should be encapsulated into a utility of some kind.\nconst wpEditorProxy = {\n get(obj, prop) {\n if (prop == 'isProxy') return true\n else if (prop == 'PostFeaturedImage') {\n return NggPostThumbnail(getOriginalComponent(obj)(prop))\n }\n return obj[prop]\n }\n }\nconst wpProxy = {\n get(obj, prop) {\n if (prop == 'editor') {\n console.log(obj[prop])\n if (obj[prop] && !obj[prop].isProxy) {\n obj[prop] = new Proxy(obj[prop], wpEditorProxy) \n }\n }\n return obj[prop]\n },\n\n set(obj, prop, value) {\n if (prop == 'editor' && !value.isProxy) {\n value = new Proxy(value, wpEditorProxy)\n }\n obj[prop] = value\n return value\n }\n}\n\nwindow.wp = new Proxy(wp, wpProxy)"],"sourceRoot":""}
products/photocrati_nextgen/modules/nextgen_block/static/src/post-thumbnail.min.js CHANGED
@@ -20,6 +20,7 @@ const wpEditorProxy = {
20
  const wpProxy = {
21
  get(obj, prop) {
22
  if (prop == 'editor') {
 
23
  if (obj[prop] && !obj[prop].isProxy) {
24
  obj[prop] = new Proxy(obj[prop], wpEditorProxy)
25
  }
@@ -28,7 +29,7 @@ const wpProxy = {
28
  },
29
 
30
  set(obj, prop, value) {
31
- if (prop == 'editor') {
32
  value = new Proxy(value, wpEditorProxy)
33
  }
34
  obj[prop] = value
20
  const wpProxy = {
21
  get(obj, prop) {
22
  if (prop == 'editor') {
23
+ console.log(obj[prop])
24
  if (obj[prop] && !obj[prop].isProxy) {
25
  obj[prop] = new Proxy(obj[prop], wpEditorProxy)
26
  }
29
  },
30
 
31
  set(obj, prop, value) {
32
+ if (prop == 'editor' && !value.isProxy) {
33
  value = new Proxy(value, wpEditorProxy)
34
  }
35
  obj[prop] = value
products/photocrati_nextgen/modules/nextgen_data/module.nextgen_data.php CHANGED
@@ -22,7 +22,7 @@ class M_NextGen_Data extends C_Base_Module
22
  'photocrati-nextgen-data',
23
  'NextGEN Data Tier',
24
  "Provides a data tier for NextGEN gallery based on the DataMapper module",
25
- '3.1.4.2',
26
  'https://www.imagely.com/wordpress-gallery-plugin/nextgen-gallery/',
27
  'Imagely',
28
  'https://www.imagely.com'
22
  'photocrati-nextgen-data',
23
  'NextGEN Data Tier',
24
  "Provides a data tier for NextGEN gallery based on the DataMapper module",
25
+ '3.1.6',
26
  'https://www.imagely.com/wordpress-gallery-plugin/nextgen-gallery/',
27
  'Imagely',
28
  'https://www.imagely.com'
products/photocrati_nextgen/modules/nextgen_data/package.module.nextgen_data.php CHANGED
@@ -4059,7 +4059,12 @@ class Mixin_NggLegacy_GalleryStorage_Driver extends Mixin
4059
  $title = '<a href="' . admin_url() . 'admin.php?page=nggallery-manage-gallery&mode=edit&gid=' . $gallery_id . '" >';
4060
  $title .= $gallery->title;
4061
  $title .= '</a>';
4062
- echo '<div class="updated fade " id="message"><p>' . sprintf(__('Copied %1$s picture(s) to gallery %2$s .', 'nggallery'), count($new_image_pids), $title) . '</p></div>';
 
 
 
 
 
4063
  // echo '<hr/>' . sprintf(__('Copied %1$s picture(s) to gallery %2$s .', 'nggallery'), count($new_image_pids), $title);
4064
  return $new_image_pids;
4065
  }
4059
  $title = '<a href="' . admin_url() . 'admin.php?page=nggallery-manage-gallery&mode=edit&gid=' . $gallery_id . '" >';
4060
  $title .= $gallery->title;
4061
  $title .= '</a>';
4062
+ if ($move) {
4063
+ $message = sprintf(__('Moved %1$s picture(s) to gallery %2$s .', 'nggallery'), count($new_image_pids), $title);
4064
+ } else {
4065
+ $message = sprintf(__('Copied %1$s picture(s) to gallery %2$s .', 'nggallery'), count($new_image_pids), $title);
4066
+ }
4067
+ echo '<div class="updated fade" id="message"><p>' . $message . '</p></div>';
4068
  // echo '<hr/>' . sprintf(__('Copied %1$s picture(s) to gallery %2$s .', 'nggallery'), count($new_image_pids), $title);
4069
  return $new_image_pids;
4070
  }
products/photocrati_nextgen/modules/nextgen_other_options/module.nextgen_other_options.php CHANGED
@@ -23,7 +23,7 @@ class M_NextGen_Other_Options extends C_Base_Module
23
  'photocrati-nextgen_other_options',
24
  'Other Options',
25
  'NextGEN Gallery Others Options Page',
26
- '3.1.4.2',
27
  'https://www.imagely.com/wordpress-gallery-plugin/nextgen-gallery/',
28
  'Imagely',
29
  'https://www.imagely.com'
23
  'photocrati-nextgen_other_options',
24
  'Other Options',
25
  'NextGEN Gallery Others Options Page',
26
+ '3.1.6',
27
  'https://www.imagely.com/wordpress-gallery-plugin/nextgen-gallery/',
28
  'Imagely',
29
  'https://www.imagely.com'
products/photocrati_nextgen/modules/nextgen_other_options/package.module.nextgen_other_options.php CHANGED
@@ -145,7 +145,7 @@ class A_Image_Options_Form extends Mixin
145
  $this->object->get_model()->add_error(__('Gallery path does not exist and could not be created', 'nggallery'), 'gallerypath');
146
  }
147
  $settings = $this->object->get_model();
148
- return $this->render_partial('photocrati-nextgen_other_options#image_options_tab', array('gallery_path_label' => __('Where would you like galleries stored?', 'nggallery'), 'gallery_path_help' => __('Where galleries and their images are stored', 'nggallery'), 'gallery_path' => $settings->gallerypath, 'delete_image_files_label' => __('Delete Image Files?', 'nggallery'), 'delete_image_files_help' => __('When enabled, image files will be removed after a Gallery has been deleted', 'nggallery'), 'delete_image_files' => $settings->deleteImg, 'show_related_images_label' => __('Show Related Images on Posts?', 'nggallery'), 'show_related_images_help' => __('When enabled, related images will be appended to each post by matching the posts tags/categories to image tags', 'nggallery'), 'show_related_images' => $settings->activateTags, 'related_images_hidden_label' => __('(Show Customization Settings)', 'nggallery'), 'related_images_active_label' => __('(Hide Customization Settings)', 'nggallery'), 'match_related_images_label' => __('How should related images be match?', 'nggallery'), 'match_related_images' => $settings->appendType, 'match_related_image_options' => $this->object->_get_related_image_match_options(), 'max_related_images_label' => __('Maximum # of related images to display', 'nggallery'), 'max_related_images' => $settings->maxImages, 'related_images_heading_label' => __('Heading for related images', 'nggallery'), 'related_images_heading' => $settings->relatedHeading, 'sorting_order_label' => __("What's the default sorting method?", 'nggallery'), 'sorting_order_options' => $this->object->_get_image_sorting_options(), 'sorting_order' => $settings->galSort, 'sorting_direction_label' => __('Sort in what direction?', 'nggallery'), 'sorting_direction_options' => $this->object->_get_sorting_direction_options(), 'sorting_direction' => $settings->galSortDir, 'automatic_resize_label' => __('Automatically resize images after upload', 'nggallery'), 'automatic_resize_help' => __('It is recommended that your images be resized to be web friendly', 'nggallery'), 'automatic_resize' => $settings->imgAutoResize, 'resize_images_label' => __('What should images be resized to?', 'nggallery'), 'resize_images_help' => __('After images are uploaded, they will be resized to the above dimensions and quality', 'nggallery'), 'resized_image_width_label' => __('Width:', 'nggallery'), 'resized_image_height_label' => __('Height:', 'nggallery'), 'resized_image_quality_label' => __('Quality:', 'nggallery'), 'resized_image_width' => $settings->imgWidth, 'resized_image_height' => $settings->imgHeight, 'resized_image_quality' => $settings->imgQuality, 'backup_images_label' => __('Backup the original images?', 'nggallery'), 'backup_images_yes_label' => __('Yes'), 'backup_images_no_label' => __('No'), 'backup_images' => $settings->imgBackup), TRUE);
149
  }
150
  function save_action($image_options)
151
  {
@@ -328,7 +328,7 @@ class A_Miscellaneous_Form extends Mixin
328
  }
329
  function render()
330
  {
331
- return $this->object->render_partial('photocrati-nextgen_other_options#misc_tab', array('mediarss_activated' => C_NextGen_Settings::get_instance()->useMediaRSS, 'mediarss_activated_label' => __('Add MediaRSS link?', 'nggallery'), 'mediarss_activated_help' => __('When enabled, adds a MediaRSS link to your header. Third-party web services can use this to publish your galleries', 'nggallery'), 'mediarss_activated_no' => __('No'), 'mediarss_activated_yes' => __('Yes'), 'galleries_in_feeds' => C_NextGen_Settings::get_instance()->galleries_in_feeds, 'galleries_in_feeds_label' => __('Display galleries in feeds', 'nggallery'), 'galleries_in_feeds_help' => __('NextGEN hides its gallery displays in feeds other than MediaRSS. This enables image galleries in feeds.', 'nggallery'), 'galleries_in_feeds_no' => __('No'), 'galleries_in_feeds_yes' => __('Yes'), 'cache_label' => __('Clear image cache', 'nggallery'), 'cache_confirmation' => __("Completely clear the NextGEN cache of all image modifications?\n\nChoose [Cancel] to Stop, [OK] to proceed.", 'nggallery'), 'slug_field' => $this->_render_text_field((object) array('name' => 'misc_settings'), 'router_param_slug', __('Permalink slug', 'nggallery'), $this->object->get_model()->router_param_slug), 'maximum_entity_count_field' => $this->_render_number_field((object) array('name' => 'misc_settings'), 'maximum_entity_count', __('Maximum image count', 'nggallery'), $this->object->get_model()->maximum_entity_count, __('This is the maximum limit of images that NextGEN will restrict itself to querying', 'nggallery') . " \n " . __('Note: This limit will not apply to slideshow widgets or random galleries if/when those galleries specify their own image limits', 'nggallery'), FALSE, '', 1), 'alternate_random_method_field' => $this->_render_radio_field((object) array('name' => 'misc_settings'), 'use_alternate_random_method', __('Use alternative method of retrieving random image galleries', 'nggallery'), C_NextGen_Settings::get_instance()->use_alternate_random_method, __("Some web hosts' database servers disable or disrupt queries using 'ORDER BY RAND()' which can cause galleries to lose their randomness. NextGen provides an alternative (but not completely random) method to determine what images are fed into 'random' galleries.", 'nggallery'))), TRUE);
332
  }
333
  function cache_action()
334
  {
145
  $this->object->get_model()->add_error(__('Gallery path does not exist and could not be created', 'nggallery'), 'gallerypath');
146
  }
147
  $settings = $this->object->get_model();
148
+ return $this->render_partial('photocrati-nextgen_other_options#image_options_tab', array('gallery_path_label' => __('Where would you like galleries stored?', 'nggallery'), 'gallery_path_help' => __('Where galleries and their images are stored', 'nggallery'), 'gallery_path' => $settings->gallerypath, 'delete_image_files_label' => __('Delete Image Files?', 'nggallery'), 'delete_image_files_help' => __('When enabled, image files will be removed after a Gallery has been deleted', 'nggallery'), 'delete_image_files' => $settings->deleteImg, 'show_related_images_label' => __('Show Related Images on Posts?', 'nggallery'), 'show_related_images_help' => __('When enabled, related images will be appended to each post by matching the posts tags/categories to image tags', 'nggallery'), 'show_related_images' => $settings->activateTags, 'related_images_hidden_label' => __('(Show Customization Settings)', 'nggallery'), 'related_images_active_label' => __('(Hide Customization Settings)', 'nggallery'), 'match_related_images_label' => __('How should related images be matched?', 'nggallery'), 'match_related_images' => $settings->appendType, 'match_related_image_options' => $this->object->_get_related_image_match_options(), 'max_related_images_label' => __('Maximum # of related images to display', 'nggallery'), 'max_related_images' => $settings->maxImages, 'related_images_heading_label' => __('Heading for related images', 'nggallery'), 'related_images_heading' => $settings->relatedHeading, 'sorting_order_label' => __("What's the default sorting method?", 'nggallery'), 'sorting_order_options' => $this->object->_get_image_sorting_options(), 'sorting_order' => $settings->galSort, 'sorting_direction_label' => __('Sort in what direction?', 'nggallery'), 'sorting_direction_options' => $this->object->_get_sorting_direction_options(), 'sorting_direction' => $settings->galSortDir, 'automatic_resize_label' => __('Automatically resize images after upload', 'nggallery'), 'automatic_resize_help' => __('It is recommended that your images be resized to be web friendly', 'nggallery'), 'automatic_resize' => $settings->imgAutoResize, 'resize_images_label' => __('What should images be resized to?', 'nggallery'), 'resize_images_help' => __('After images are uploaded, they will be resized to the above dimensions and quality', 'nggallery'), 'resized_image_width_label' => __('Width:', 'nggallery'), 'resized_image_height_label' => __('Height:', 'nggallery'), 'resized_image_quality_label' => __('Quality:', 'nggallery'), 'resized_image_width' => $settings->imgWidth, 'resized_image_height' => $settings->imgHeight, 'resized_image_quality' => $settings->imgQuality, 'backup_images_label' => __('Backup the original images?', 'nggallery'), 'backup_images_yes_label' => __('Yes'), 'backup_images_no_label' => __('No'), 'backup_images' => $settings->imgBackup), TRUE);
149
  }
150
  function save_action($image_options)
151
  {
328
  }
329
  function render()
330
  {
331
+ return $this->object->render_partial('photocrati-nextgen_other_options#misc_tab', array('mediarss_activated' => C_NextGen_Settings::get_instance()->useMediaRSS, 'mediarss_activated_label' => __('Add MediaRSS link?', 'nggallery'), 'mediarss_activated_help' => __('When enabled, adds a MediaRSS link to your header. Third-party web services can use this to publish your galleries', 'nggallery'), 'mediarss_activated_no' => __('No'), 'mediarss_activated_yes' => __('Yes'), 'galleries_in_feeds' => C_NextGen_Settings::get_instance()->galleries_in_feeds, 'galleries_in_feeds_label' => __('Display galleries in feeds', 'nggallery'), 'galleries_in_feeds_help' => __('NextGEN hides its gallery displays in feeds other than MediaRSS. This enables image galleries in feeds.', 'nggallery'), 'galleries_in_feeds_no' => __('No'), 'galleries_in_feeds_yes' => __('Yes'), 'cache_label' => __('Clear image cache', 'nggallery'), 'cache_confirmation' => __("Completely clear the NextGEN cache of all image modifications?\n\nChoose [Cancel] to Stop, [OK] to proceed.", 'nggallery'), 'slug_field' => $this->_render_text_field((object) array('name' => 'misc_settings'), 'router_param_slug', __('Permalink slug', 'nggallery'), $this->object->get_model()->router_param_slug), 'maximum_entity_count_field' => $this->_render_number_field((object) array('name' => 'misc_settings'), 'maximum_entity_count', __('Maximum image count', 'nggallery'), $this->object->get_model()->maximum_entity_count, __('This is the maximum limit of images that NextGEN will restrict itself to querying', 'nggallery') . " \n " . __('Note: This limit will not apply to slideshow widgets or random galleries if/when those galleries specify their own image limits', 'nggallery'), FALSE, '', 1), 'random_widget_cache_ttl_field' => $this->_render_number_field((object) array('name' => 'misc_settings'), 'random_widget_cache_ttl', __('Random widget cache duration', 'nggallery'), $this->object->get_model()->random_widget_cache_ttl, __('The duration of time (in minutes) that "random" widget galleries should be cached. A setting of zero will disable caching.', 'nggallery'), FALSE, '', 0), 'alternate_random_method_field' => $this->_render_radio_field((object) array('name' => 'misc_settings'), 'use_alternate_random_method', __('Use alternative method of retrieving random image galleries', 'nggallery'), C_NextGen_Settings::get_instance()->use_alternate_random_method, __("Some web hosts' database servers disable or disrupt queries using 'ORDER BY RAND()' which can cause galleries to lose their randomness. NextGen provides an alternative (but not completely random) method to determine what images are fed into 'random' galleries.", 'nggallery'))), TRUE);
332
  }
333
  function cache_action()
334
  {
products/photocrati_nextgen/modules/nextgen_other_options/templates/misc_tab.php CHANGED
@@ -82,5 +82,7 @@
82
 
83
  <?php print $maximum_entity_count_field; ?>
84
 
 
 
85
  <?php print $alternate_random_method_field; ?>
86
  </table>
82
 
83
  <?php print $maximum_entity_count_field; ?>
84
 
85
+ <?php print $random_widget_cache_ttl_field; ?>
86
+
87
  <?php print $alternate_random_method_field; ?>
88
  </table>
products/photocrati_nextgen/modules/nextgen_settings/module.nextgen_settings.php CHANGED
@@ -18,7 +18,7 @@ class M_NextGen_Settings extends C_Base_Module
18
  'photocrati-nextgen_settings',
19
  'NextGEN Gallery Settings',
20
  'Provides central management for NextGEN Gallery settings',
21
- '3.1.4.2',
22
  'https://www.imagely.com/wordpress-gallery-plugin/nextgen-gallery/',
23
  'Imagely',
24
  'https://www.imagely.com'
@@ -133,7 +133,10 @@ class C_NextGen_Settings_Installer
133
 
134
  // Misc
135
  // It is known that WPEngine disables 'order by rand()' by default, but exposes it as an option to users
136
- 'use_alternate_random_method' => (function_exists('is_wpe') && is_wpe()) ? TRUE : FALSE
 
 
 
137
  );
138
  }
139
 
18
  'photocrati-nextgen_settings',
19
  'NextGEN Gallery Settings',
20
  'Provides central management for NextGEN Gallery settings',
21
+ '3.1.6',
22
  'https://www.imagely.com/wordpress-gallery-plugin/nextgen-gallery/',
23
  'Imagely',
24
  'https://www.imagely.com'
133
 
134
  // Misc
135
  // It is known that WPEngine disables 'order by rand()' by default, but exposes it as an option to users
136
+ 'use_alternate_random_method' => (function_exists('is_wpe') && is_wpe()) ? TRUE : FALSE,
137
+
138
+ // Duration of caching of 'random' widgets image IDs
139
+ 'random_widget_cache_ttl' => 30
140
  );
141
  }
142
 
products/photocrati_nextgen/modules/ngglegacy/admin/album.php CHANGED
@@ -540,7 +540,7 @@ function ngg_confirm_delete_album(form) {
540
  | <a href="#" title="<?php esc_attr_e('Maximize the widget content','nggallery'); ?>" id="all_max"><?php esc_html_e('Maximize', 'nggallery'); ?></a>
541
  | <a href="#" title="<?php esc_attr_e('Minimize the widget content','nggallery'); ?>" id="all_min"><?php esc_html_e('Minimize', 'nggallery'); ?></a>
542
  </div>
543
- <?php esc_html_e('After you create and select a album, you can drag and drop a gallery or another album into your new album below','nggallery'); ?>
544
  </div>
545
 
546
  <br class="clear" />
540
  | <a href="#" title="<?php esc_attr_e('Maximize the widget content','nggallery'); ?>" id="all_max"><?php esc_html_e('Maximize', 'nggallery'); ?></a>
541
  | <a href="#" title="<?php esc_attr_e('Minimize the widget content','nggallery'); ?>" id="all_min"><?php esc_html_e('Minimize', 'nggallery'); ?></a>
542
  </div>
543
+ <?php esc_html_e('After you create and select an album, you can drag and drop a gallery or another album into your new album below','nggallery'); ?>
544
  </div>
545
 
546
  <br class="clear" />
products/photocrati_nextgen/modules/ngglegacy/admin/edit-thumbnail.php CHANGED
@@ -158,7 +158,7 @@ if ($thumbnail_crop_frame != null)
158
  <table align="center">
159
  <tr>
160
  <td rowspan="3" valign="middle" align="center" id="ngg-overlay-dialog-main">
161
- <small><?php esc_html_e('Select the area for the thumbnail from the picture on below.', 'nggallery'); ?></small>
162
  <img src="<?php echo nextgen_esc_url( $preview_image ); ?>" alt="" id="imageToEdit" />
163
  </td>
164
  <td style="display:none;">
158
  <table align="center">
159
  <tr>
160
  <td rowspan="3" valign="middle" align="center" id="ngg-overlay-dialog-main">
161
+ <small><?php esc_html_e('Select the area for the thumbnail from the picture below.', 'nggallery'); ?></small>
162
  <img src="<?php echo nextgen_esc_url( $preview_image ); ?>" alt="" id="imageToEdit" />
163
  </td>
164
  <td style="display:none;">
products/photocrati_nextgen/modules/ngglegacy/module.ngglegacy.php CHANGED
@@ -23,7 +23,7 @@ class M_NggLegacy extends C_Base_Module
23
  'photocrati-nextgen-legacy',
24
  'NextGEN Legacy',
25
  'Embeds the original version of NextGEN 1.9.3 by Alex Rabe',
26
- '3.1.4.2',
27
  'https://www.imagely.com/wordpress-gallery-plugin/nextgen-gallery/',
28
  'Imagely',
29
  'https://www.imagely.com'
23
  'photocrati-nextgen-legacy',
24
  'NextGEN Legacy',
25
  'Embeds the original version of NextGEN 1.9.3 by Alex Rabe',
26
+ '3.1.6',
27
  'https://www.imagely.com/wordpress-gallery-plugin/nextgen-gallery/',
28
  'Imagely',
29
  'https://www.imagely.com'
products/photocrati_nextgen/modules/widget/module.widget.php CHANGED
@@ -17,7 +17,7 @@ class M_Widget extends C_Base_Module
17
  'photocrati-widget',
18
  'Widget',
19
  'Handles clearing of NextGen Widgets',
20
- '3.1.4.2',
21
  'https://www.imagely.com/wordpress-gallery-plugin/nextgen-gallery/',
22
  'Imagely',
23
  'https://www.imagely.com'
17
  'photocrati-widget',
18
  'Widget',
19
  'Handles clearing of NextGen Widgets',
20
+ '3.1.6',
21
  'https://www.imagely.com/wordpress-gallery-plugin/nextgen-gallery/',
22
  'Imagely',
23
  'https://www.imagely.com'
products/photocrati_nextgen/modules/widget/package.module.widget.php CHANGED
@@ -121,6 +121,7 @@ class C_Widget_Gallery extends WP_Widget
121
  }
122
  function widget($args, $instance)
123
  {
 
124
  $router = C_Router::get_instance();
125
  wp_enqueue_style('nextgen_widgets_style', $router->get_static_url('photocrati-widget#widgets.css'), array(), NGG_SCRIPT_VERSION);
126
  wp_enqueue_style('nextgen_basic_thumbnails_style', $router->get_static_url('photocrati-nextgen_basic_gallery#thumbnails/nextgen_basic_thumbnails.css'), array(), NGG_SCRIPT_VERSION);
@@ -167,7 +168,7 @@ class C_Widget_Gallery extends WP_Widget
167
  // HTML of random galleries the following is a bit of a workaround: for random widgets we create a displayed
168
  // gallery object and then cache the results of get_entities() so that, for at least as long as
169
  // NGG_RENDERING_CACHE_TTL seconds, widgets will be temporarily cached
170
- if (in_array($params['source'], array('random', 'random_images'))) {
171
  $displayed_gallery = $renderer->params_to_displayed_gallery($params);
172
  if (is_null($displayed_gallery->id())) {
173
  $displayed_gallery->id(md5(json_encode($displayed_gallery->get_entity())));
@@ -185,7 +186,7 @@ class C_Widget_Gallery extends WP_Widget
185
  $ids[] = $item->{$item->id_field};
186
  }
187
  $params['image_ids'] = implode(',', $ids);
188
- $transientM->set($key, $params['image_ids'], NGG_RENDERING_CACHE_TTL);
189
  }
190
  $params['source'] = 'images';
191
  unset($params['container_ids']);
121
  }
122
  function widget($args, $instance)
123
  {
124
+ $settings = C_NextGen_Settings::get_instance();
125
  $router = C_Router::get_instance();
126
  wp_enqueue_style('nextgen_widgets_style', $router->get_static_url('photocrati-widget#widgets.css'), array(), NGG_SCRIPT_VERSION);
127
  wp_enqueue_style('nextgen_basic_thumbnails_style', $router->get_static_url('photocrati-nextgen_basic_gallery#thumbnails/nextgen_basic_thumbnails.css'), array(), NGG_SCRIPT_VERSION);
168
  // HTML of random galleries the following is a bit of a workaround: for random widgets we create a displayed
169
  // gallery object and then cache the results of get_entities() so that, for at least as long as
170
  // NGG_RENDERING_CACHE_TTL seconds, widgets will be temporarily cached
171
+ if (in_array($params['source'], array('random', 'random_images')) && (double) $settings->random_widget_cache_ttl > 0) {
172
  $displayed_gallery = $renderer->params_to_displayed_gallery($params);
173
  if (is_null($displayed_gallery->id())) {
174
  $displayed_gallery->id(md5(json_encode($displayed_gallery->get_entity())));
186
  $ids[] = $item->{$item->id_field};
187
  }
188
  $params['image_ids'] = implode(',', $ids);
189
+ $transientM->set($key, $params['image_ids'], (double) $settings->random_widget_cache_ttl * 60);
190
  }
191
  $params['source'] = 'images';
192
  unset($params['container_ids']);
readme.txt CHANGED
@@ -2,7 +2,7 @@
2
  Contributors: photocrati, imagely
3
  Tags: wordpress gallery plugin, gallery, nextgen, nextgen gallery, photo gallery, image gallery, photography, slideshow, images, photo, photo album, watermark
4
  Requires at least: 4.0.0
5
- Stable tag: 3.1.5
6
  Tested up to: 5.0.2
7
  License: GPLv2
8
 
@@ -61,7 +61,7 @@ Learn more or connect with us:<br>
61
  == Credits ==
62
 
63
  Copyright:<br>
64
- Imagely 2016-2018
65
  Photocrati Media 2012-2016<br>
66
  Alex Rabe 2007-2011
67
 
@@ -183,6 +183,13 @@ For more information, feel free to visit the official website for the NextGEN Ga
183
 
184
  == Changelog ==
185
 
 
 
 
 
 
 
 
186
  = V3.1.5 - 01.08.2019 =
187
  * NEW: Added constant NGG_DISABLE_SHUTDOWN_EXCEPTION_HANDLER
188
  * Secured: DB record serialization
2
  Contributors: photocrati, imagely
3
  Tags: wordpress gallery plugin, gallery, nextgen, nextgen gallery, photo gallery, image gallery, photography, slideshow, images, photo, photo album, watermark
4
  Requires at least: 4.0.0
5
+ Stable tag: 3.1.6
6
  Tested up to: 5.0.2
7
  License: GPLv2
8
 
61
  == Credits ==
62
 
63
  Copyright:<br>
64
+ Imagely 2016-2019
65
  Photocrati Media 2012-2016<br>
66
  Alex Rabe 2007-2011
67
 
183
 
184
  == Changelog ==
185
 
186
+ = V3.1.6 - 01.16.2019 =
187
+ * NEW: Option to control caching duration of random widget galleries
188
+ * Secured: DB record serialization
189
+ * Fixed: Compatibility with plugins that extend Gutenberg / Block Editor
190
+ * Fixed: Invalid regex causing warnings when viewing /ngg_tags/ pages
191
+ * Fixed: Misc grammatical and spelling mistakes
192
+
193
  = V3.1.5 - 01.08.2019 =
194
  * NEW: Added constant NGG_DISABLE_SHUTDOWN_EXCEPTION_HANDLER
195
  * Secured: DB record serialization