Version Description
- 09.08.2021
- Fixed: Links on "Extensions" page were incorrect
- Fixed: Incompatibility with WP User Manager caused Manage Gallery bulk actions to be unusable
- Fixed: Images that failed to upload would be treated as a success in the UI if the server HTTP response code is 200
- Changed: Removed the "Ambassadors" tab from the Overview page
Download this release
Release Info
Developer | photocrati |
Plugin | NextGEN Gallery – WordPress Gallery Plugin |
Version | 3.16 |
Comparing to | |
See all releases |
Code changes from version 3.15 to 3.16
- changelog.txt +6 -0
- nggallery.php +2 -2
- products/photocrati_nextgen/modules/marketing/module.marketing.php +1 -1
- products/photocrati_nextgen/modules/nextgen_addgallery_page/templates/upload_images.php +27 -10
- products/photocrati_nextgen/modules/nextgen_data/package.module.nextgen_data.php +2 -2
- products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php +159 -161
- products/photocrati_nextgen/modules/ngglegacy/admin/overview.php +1 -54
- products/photocrati_nextgen/modules/ngglegacy/lib/gd.thumbnail.inc.php +2 -2
- readme.txt +7 -1
changelog.txt
CHANGED
@@ -1,6 +1,12 @@
|
|
1 |
NextGEN Gallery
|
2 |
by Imagely
|
3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
4 |
= V3.15 - 08.23.2021
|
5 |
* Fixed: A warning was generated on every request for users of PHP 5.6
|
6 |
|
1 |
NextGEN Gallery
|
2 |
by Imagely
|
3 |
|
4 |
+
= V3.16 - 09.08.2021
|
5 |
+
* Fixed: Links on "Extensions" page were incorrect
|
6 |
+
* Fixed: Incompatibility with WP User Manager caused Manage Gallery bulk actions to be unusable
|
7 |
+
* Fixed: Images that failed to upload would be treated as a success in the UI if the server HTTP response code is 200
|
8 |
+
* Changed: Removed the "Ambassadors" tab from the Overview page
|
9 |
+
|
10 |
= V3.15 - 08.23.2021
|
11 |
* Fixed: A warning was generated on every request for users of PHP 5.6
|
12 |
|
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 30 million downloads.
|
7 |
-
* Version: 3.
|
8 |
* Author: Imagely
|
9 |
* Plugin URI: https://www.imagely.com/wordpress-gallery-plugin/nextgen-gallery/
|
10 |
* Author URI: https://www.imagely.com
|
@@ -712,7 +712,7 @@ class C_NextGEN_Bootstrap
|
|
712 |
define('NGG_PRODUCT_URL', path_join(str_replace("\\" , '/', NGG_PLUGIN_URL), 'products'));
|
713 |
define('NGG_MODULE_URL', path_join(str_replace("\\", '/', NGG_PRODUCT_URL), 'photocrati_nextgen/modules'));
|
714 |
define('NGG_PLUGIN_STARTED_AT', microtime());
|
715 |
-
define('NGG_PLUGIN_VERSION', '3.
|
716 |
|
717 |
define(
|
718 |
'NGG_SCRIPT_VERSION',
|
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 30 million downloads.
|
7 |
+
* Version: 3.16
|
8 |
* Author: Imagely
|
9 |
* Plugin URI: https://www.imagely.com/wordpress-gallery-plugin/nextgen-gallery/
|
10 |
* Author URI: https://www.imagely.com
|
712 |
define('NGG_PRODUCT_URL', path_join(str_replace("\\" , '/', NGG_PLUGIN_URL), 'products'));
|
713 |
define('NGG_MODULE_URL', path_join(str_replace("\\", '/', NGG_PRODUCT_URL), 'photocrati_nextgen/modules'));
|
714 |
define('NGG_PLUGIN_STARTED_AT', microtime());
|
715 |
+
define('NGG_PLUGIN_VERSION', '3.16');
|
716 |
|
717 |
define(
|
718 |
'NGG_SCRIPT_VERSION',
|
products/photocrati_nextgen/modules/marketing/module.marketing.php
CHANGED
@@ -299,7 +299,7 @@ class M_Marketing extends C_Base_Module
|
|
299 |
'source' => $source
|
300 |
]);
|
301 |
|
302 |
-
$url
|
303 |
$url .= '&utm_medium=' . $params['medium'];
|
304 |
$url .= '&utm_campaign=' . $params['campaign'];
|
305 |
|
299 |
'source' => $source
|
300 |
]);
|
301 |
|
302 |
+
$url .= '?utm_source=' . $params['source'];
|
303 |
$url .= '&utm_medium=' . $params['medium'];
|
304 |
$url .= '&utm_campaign=' . $params['campaign'];
|
305 |
|
products/photocrati_nextgen/modules/nextgen_addgallery_page/templates/upload_images.php
CHANGED
@@ -116,14 +116,18 @@
|
|
116 |
...NggXHRSettings,
|
117 |
endpoint: set_ngg_upload_url(0, ''),
|
118 |
getResponseError: (text, response) => {
|
119 |
-
|
120 |
-
|
|
|
|
|
|
|
|
|
|
|
121 |
}
|
122 |
-
|
123 |
-
|
124 |
-
}
|
125 |
|
126 |
-
|
127 |
.use(Uppy.Dashboard, NggUppyDashboardSettings)
|
128 |
.use(Uppy.XHRUpload, uppyXHRSettings)
|
129 |
.use(Uppy.DropTarget, {
|
@@ -148,9 +152,10 @@
|
|
148 |
}
|
149 |
})
|
150 |
.on('complete', (result) => {
|
151 |
-
|
152 |
-
|
153 |
uppy.getFiles().forEach((file) => {
|
|
|
154 |
if ('undefined' === typeof file.error) {
|
155 |
uppy.removeFile(file.id);
|
156 |
}
|
@@ -244,10 +249,22 @@
|
|
244 |
if (!chosen_name) {
|
245 |
chosen_name = parseInt(gallery_select.value) === 0 ? gallery_name.value : gallery_select.selectedOptions[0].dataset.originalValue;
|
246 |
}
|
|
|
247 |
const endpoint = set_ngg_upload_url(gallery_select.value, chosen_name)
|
|
|
248 |
uppy.getPlugin('XHRUpload').setOptions({
|
249 |
-
endpoint: endpoint
|
250 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
251 |
}
|
252 |
|
253 |
gallery_select.addEventListener('change', function() {
|
116 |
...NggXHRSettings,
|
117 |
endpoint: set_ngg_upload_url(0, ''),
|
118 |
getResponseError: (text, response) => {
|
119 |
+
try {
|
120 |
+
if ('string' === typeof text) {
|
121 |
+
text = JSON.parse(text);
|
122 |
+
}
|
123 |
+
return text.error;
|
124 |
+
} catch (error) {
|
125 |
+
return error;
|
126 |
}
|
127 |
+
}
|
128 |
+
}
|
|
|
129 |
|
130 |
+
const uppy = Uppy.Core(uppyCoreSettings)
|
131 |
.use(Uppy.Dashboard, NggUppyDashboardSettings)
|
132 |
.use(Uppy.XHRUpload, uppyXHRSettings)
|
133 |
.use(Uppy.DropTarget, {
|
152 |
}
|
153 |
})
|
154 |
.on('complete', (result) => {
|
155 |
+
// There was at least one error: remove the successful images so users can find out what went wrong
|
156 |
+
if (result.failed.length > 0) {
|
157 |
uppy.getFiles().forEach((file) => {
|
158 |
+
console.log("FILE", file);
|
159 |
if ('undefined' === typeof file.error) {
|
160 |
uppy.removeFile(file.id);
|
161 |
}
|
249 |
if (!chosen_name) {
|
250 |
chosen_name = parseInt(gallery_select.value) === 0 ? gallery_name.value : gallery_select.selectedOptions[0].dataset.originalValue;
|
251 |
}
|
252 |
+
|
253 |
const endpoint = set_ngg_upload_url(gallery_select.value, chosen_name)
|
254 |
+
|
255 |
uppy.getPlugin('XHRUpload').setOptions({
|
256 |
+
endpoint: endpoint,
|
257 |
+
// It's possible that the server may fail to upload any images but still return an HTTP 200 code,
|
258 |
+
// this method will ensure that the response contains a JSON object with the gallery_id attribute.
|
259 |
+
validateStatus: (status, responseText, response) => {
|
260 |
+
try {
|
261 |
+
const result = JSON.parse(responseText);
|
262 |
+
return 'undefined' !== typeof result.gallery_id;
|
263 |
+
} catch (error) {
|
264 |
+
return false;
|
265 |
+
}
|
266 |
+
}
|
267 |
+
});
|
268 |
}
|
269 |
|
270 |
gallery_select.addEventListener('change', function() {
|
products/photocrati_nextgen/modules/nextgen_data/package.module.nextgen_data.php
CHANGED
@@ -4789,10 +4789,10 @@ class C_NggLegacy_Thumbnail
|
|
4789 |
if (is_resource($this->newImage) || $this->newImage instanceof GdImage) {
|
4790 |
@imagedestroy($this->newImage);
|
4791 |
}
|
4792 |
-
if (is_resource($this->oldImage) || $this->
|
4793 |
@imagedestroy($this->oldImage);
|
4794 |
}
|
4795 |
-
if (is_resource($this->workingImage) || $this->
|
4796 |
@imagedestroy($this->workingImage);
|
4797 |
}
|
4798 |
}
|
4789 |
if (is_resource($this->newImage) || $this->newImage instanceof GdImage) {
|
4790 |
@imagedestroy($this->newImage);
|
4791 |
}
|
4792 |
+
if (is_resource($this->oldImage) || $this->oldImage instanceof GdImage) {
|
4793 |
@imagedestroy($this->oldImage);
|
4794 |
}
|
4795 |
+
if (is_resource($this->workingImage) || $this->workingImage instanceof GdImage) {
|
4796 |
@imagedestroy($this->workingImage);
|
4797 |
}
|
4798 |
}
|
products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php
CHANGED
@@ -88,71 +88,8 @@ function nggallery_picturelist($controller)
|
|
88 |
?>
|
89 |
|
90 |
<script type="text/javascript">
|
91 |
-
|
92 |
-
|
93 |
-
function showDialog(windowId, title) {
|
94 |
-
var form = document.getElementById('updategallery');
|
95 |
-
var elementlist = "";
|
96 |
-
|
97 |
-
for (var i = 0, n = form.elements.length; i < n; i++) {
|
98 |
-
if (form.elements[i].type === "checkbox") {
|
99 |
-
if (form.elements[i].name === "doaction[]") {
|
100 |
-
if (form.elements[i].checked === true) {
|
101 |
-
if (elementlist === "") {
|
102 |
-
elementlist = form.elements[i].value;
|
103 |
-
} else {
|
104 |
-
elementlist += "," + form.elements[i].value;
|
105 |
-
}
|
106 |
-
}
|
107 |
-
}
|
108 |
-
}
|
109 |
-
}
|
110 |
-
|
111 |
-
$("#" + windowId + "_bulkaction").val($("#bulkaction").val());
|
112 |
-
$("#" + windowId + "_imagelist").val(elementlist);
|
113 |
-
|
114 |
-
// now show the dialog
|
115 |
-
$("#" + windowId).dialog({
|
116 |
-
width: 640,
|
117 |
-
resizable: false,
|
118 |
-
modal: true,
|
119 |
-
title: title,
|
120 |
-
position: {
|
121 |
-
my: 'center',
|
122 |
-
at: 'center',
|
123 |
-
of: window.parent
|
124 |
-
}
|
125 |
-
});
|
126 |
-
|
127 |
-
$("#" + windowId + ' .dialog-cancel').on('click', function() {
|
128 |
-
$("#" + windowId).dialog("close");
|
129 |
-
});
|
130 |
-
}
|
131 |
-
|
132 |
-
function setURLParam(param, paramVal) {
|
133 |
-
var url = window.location.href;
|
134 |
-
var params = "";
|
135 |
-
var tmp = "";
|
136 |
-
var tmpArray = url.split("?");
|
137 |
-
var base = tmpArray[0];
|
138 |
-
var additional = tmpArray[1];
|
139 |
-
|
140 |
-
if (additional) {
|
141 |
-
tmpArray = additional.split("&");
|
142 |
-
for (i = 0; i < tmpArray.length; i++) {
|
143 |
-
if (tmpArray[i].split('=')[0] !== param) {
|
144 |
-
params += tmp + tmpArray[i];
|
145 |
-
tmp = "&";
|
146 |
-
}
|
147 |
-
}
|
148 |
-
}
|
149 |
-
|
150 |
-
return base + "?" + params + tmp + "" + param + "=" + paramVal;
|
151 |
-
}
|
152 |
-
|
153 |
-
$(function() {
|
154 |
-
|
155 |
-
$('span.tooltip, label.tooltip').tooltip();
|
156 |
|
157 |
$('#ngg-manage-images-items-per-page').on('change', function() {
|
158 |
window.location.href = setURLParam('items', $(this).val());
|
@@ -224,103 +161,164 @@ function nggallery_picturelist($controller)
|
|
224 |
Frame_Event_Publisher.delete_cookie("X-Frame-Events_" + data.id);
|
225 |
}, 400);
|
226 |
});
|
227 |
-
});
|
228 |
-
|
229 |
-
function checkAll(form) {
|
230 |
-
for (var i = 0, n = form.elements.length; i < n; i++) {
|
231 |
-
if (form.elements[i].type === "checkbox") {
|
232 |
-
if (form.elements[i].name === "doaction[]") {
|
233 |
-
if (form.elements[i].checked == true) {
|
234 |
-
form.elements[i].checked = false;
|
235 |
-
} else {
|
236 |
-
form.elements[i].checked = true;
|
237 |
-
}
|
238 |
-
}
|
239 |
-
}
|
240 |
-
}
|
241 |
-
}
|
242 |
-
|
243 |
-
function getNumChecked(form) {
|
244 |
-
var num = 0;
|
245 |
-
for (var i = 0, n = form.elements.length; i < n; i++) {
|
246 |
-
if (form.elements[i].type === "checkbox") {
|
247 |
-
if (form.elements[i].name === "doaction[]") {
|
248 |
-
if (form.elements[i].checked === true) {
|
249 |
-
num++;
|
250 |
-
}
|
251 |
-
}
|
252 |
-
}
|
253 |
-
}
|
254 |
-
return num;
|
255 |
-
}
|
256 |
-
|
257 |
-
// this function check for a the number of selected images, sumbmit false when no one selected
|
258 |
-
function checkSelected() {
|
259 |
-
|
260 |
-
var numchecked = getNumChecked(document.getElementById('updategallery'));
|
261 |
|
262 |
-
|
263 |
-
|
264 |
-
|
265 |
-
|
266 |
-
|
267 |
-
|
268 |
-
|
269 |
-
|
270 |
-
|
271 |
-
|
272 |
-
|
273 |
-
|
274 |
-
|
275 |
-
|
276 |
-
|
277 |
-
|
278 |
-
|
279 |
-
|
280 |
-
|
281 |
-
|
282 |
-
|
283 |
-
|
284 |
-
|
285 |
-
|
286 |
-
|
287 |
-
|
288 |
-
|
289 |
-
|
290 |
-
|
291 |
-
|
292 |
-
|
293 |
-
|
294 |
-
|
295 |
-
|
296 |
-
|
297 |
-
|
298 |
-
|
299 |
-
|
300 |
-
|
301 |
-
|
302 |
-
|
303 |
-
|
304 |
-
|
305 |
-
|
306 |
-
|
307 |
-
|
308 |
-
|
309 |
-
|
310 |
-
|
311 |
-
|
312 |
-
|
313 |
-
|
314 |
-
|
315 |
-
|
316 |
-
|
317 |
-
|
318 |
-
|
319 |
-
|
320 |
-
|
321 |
-
|
322 |
-
|
323 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
324 |
</script>
|
325 |
|
326 |
<?php if ($action_status['message'] != '') { ?>
|
88 |
?>
|
89 |
|
90 |
<script type="text/javascript">
|
91 |
+
(function($) {
|
92 |
+
// $('span.tooltip, label.tooltip').tooltip();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
93 |
|
94 |
$('#ngg-manage-images-items-per-page').on('change', function() {
|
95 |
window.location.href = setURLParam('items', $(this).val());
|
161 |
Frame_Event_Publisher.delete_cookie("X-Frame-Events_" + data.id);
|
162 |
}, 400);
|
163 |
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
164 |
|
165 |
+
window.showDialog = function(windowId, title) {
|
166 |
+
var form = document.getElementById('updategallery');
|
167 |
+
var elementlist = "";
|
168 |
+
|
169 |
+
for (var i = 0, n = form.elements.length; i < n; i++) {
|
170 |
+
if (form.elements[i].type === "checkbox") {
|
171 |
+
if (form.elements[i].name === "doaction[]") {
|
172 |
+
if (form.elements[i].checked === true) {
|
173 |
+
if (elementlist === "") {
|
174 |
+
elementlist = form.elements[i].value;
|
175 |
+
} else {
|
176 |
+
elementlist += "," + form.elements[i].value;
|
177 |
+
}
|
178 |
+
}
|
179 |
+
}
|
180 |
+
}
|
181 |
+
}
|
182 |
+
|
183 |
+
$("#" + windowId + "_bulkaction").val($("#bulkaction").val());
|
184 |
+
$("#" + windowId + "_imagelist").val(elementlist);
|
185 |
+
|
186 |
+
// now show the dialog
|
187 |
+
$("#" + windowId).dialog({
|
188 |
+
width: 640,
|
189 |
+
resizable: false,
|
190 |
+
modal: true,
|
191 |
+
title: title,
|
192 |
+
position: {
|
193 |
+
my: 'center',
|
194 |
+
at: 'center',
|
195 |
+
of: window.parent
|
196 |
+
}
|
197 |
+
});
|
198 |
+
|
199 |
+
$("#" + windowId + ' .dialog-cancel').on('click', function() {
|
200 |
+
$("#" + windowId).dialog("close");
|
201 |
+
});
|
202 |
+
}
|
203 |
+
|
204 |
+
window.setURLParam = function(param, paramVal) {
|
205 |
+
var url = window.location.href;
|
206 |
+
var params = "";
|
207 |
+
var tmp = "";
|
208 |
+
var tmpArray = url.split("?");
|
209 |
+
var base = tmpArray[0];
|
210 |
+
var additional = tmpArray[1];
|
211 |
+
|
212 |
+
if (additional) {
|
213 |
+
tmpArray = additional.split("&");
|
214 |
+
for (i = 0; i < tmpArray.length; i++) {
|
215 |
+
if (tmpArray[i].split('=')[0] !== param) {
|
216 |
+
params += tmp + tmpArray[i];
|
217 |
+
tmp = "&";
|
218 |
+
}
|
219 |
+
}
|
220 |
+
}
|
221 |
+
|
222 |
+
return base + "?" + params + tmp + "" + param + "=" + paramVal;
|
223 |
+
}
|
224 |
+
|
225 |
+
window.checkAll = function(form) {
|
226 |
+
for (var i = 0, n = form.elements.length; i < n; i++) {
|
227 |
+
if (form.elements[i].type === "checkbox") {
|
228 |
+
if (form.elements[i].name === "doaction[]") {
|
229 |
+
if (form.elements[i].checked == true) {
|
230 |
+
form.elements[i].checked = false;
|
231 |
+
} else {
|
232 |
+
form.elements[i].checked = true;
|
233 |
+
}
|
234 |
+
}
|
235 |
+
}
|
236 |
+
}
|
237 |
+
}
|
238 |
+
|
239 |
+
window.getNumChecked = function(form) {
|
240 |
+
var num = 0;
|
241 |
+
for (var i = 0, n = form.elements.length; i < n; i++) {
|
242 |
+
if (form.elements[i].type === "checkbox") {
|
243 |
+
if (form.elements[i].name === "doaction[]") {
|
244 |
+
if (form.elements[i].checked === true) {
|
245 |
+
num++;
|
246 |
+
}
|
247 |
+
}
|
248 |
+
}
|
249 |
+
}
|
250 |
+
return num;
|
251 |
+
}
|
252 |
+
|
253 |
+
// this function check for a the number of selected images, sumbmit false when no one selected
|
254 |
+
window.checkSelected = function() {
|
255 |
+
|
256 |
+
var numchecked = getNumChecked(document.getElementById('updategallery'));
|
257 |
+
|
258 |
+
if (typeof document.activeElement == "undefined" && document.addEventListener) {
|
259 |
+
document.addEventListener("focus", function (e) {
|
260 |
+
document.activeElement = e.target;
|
261 |
+
}, true);
|
262 |
+
}
|
263 |
+
|
264 |
+
if (document.activeElement.name === 'post_paged')
|
265 |
+
return true;
|
266 |
+
|
267 |
+
if (numchecked < 1) {
|
268 |
+
alert('<?php echo esc_js(__('No images selected', 'nggallery')); ?>');
|
269 |
+
return false;
|
270 |
+
}
|
271 |
+
|
272 |
+
var actionId = document.getElementById('bulkaction').value;
|
273 |
+
|
274 |
+
switch (actionId) {
|
275 |
+
case "copy_to":
|
276 |
+
showDialog('selectgallery', '<?php echo esc_js(__('Copy image to...','nggallery')); ?>');
|
277 |
+
return false;
|
278 |
+
break;
|
279 |
+
case "move_to":
|
280 |
+
showDialog('selectgallery', '<?php echo esc_js(__('Move image to...','nggallery')); ?>');
|
281 |
+
return false;
|
282 |
+
break;
|
283 |
+
case "add_tags":
|
284 |
+
showDialog('entertags', '<?php echo esc_js(__('Add new tags','nggallery')); ?>');
|
285 |
+
return false;
|
286 |
+
break;
|
287 |
+
case "delete_tags":
|
288 |
+
showDialog('entertags', '<?php echo esc_js(__('Delete tags','nggallery')); ?>');
|
289 |
+
return false;
|
290 |
+
break;
|
291 |
+
case "overwrite_tags":
|
292 |
+
showDialog('entertags', '<?php echo esc_js(__('Overwrite','nggallery')); ?>');
|
293 |
+
return false;
|
294 |
+
break;
|
295 |
+
case "resize_images":
|
296 |
+
showDialog('resize_images', '<?php echo esc_js(__('Resize images','nggallery')); ?>');
|
297 |
+
return false;
|
298 |
+
break;
|
299 |
+
case "new_thumbnail":
|
300 |
+
showDialog('new_thumbnail', '<?php echo esc_js(__('Create new thumbnails','nggallery')); ?>');
|
301 |
+
return false;
|
302 |
+
break;
|
303 |
+
}
|
304 |
+
|
305 |
+
return confirm('<?php echo sprintf(esc_js(__("You are about to start the bulk edit for %s images \n \n 'Cancel' to stop, 'OK' to proceed.",'nggallery')), "' + numchecked + '") ; ?>');
|
306 |
+
}
|
307 |
+
|
308 |
+
if ($(this).data('ready')) {
|
309 |
+
return;
|
310 |
+
}
|
311 |
+
|
312 |
+
// close postboxes that should be closed
|
313 |
+
$('.if-js-closed').removeClass('if-js-closed').addClass('closed');
|
314 |
+
|
315 |
+
// Some third party plugins alter when postboxes are enqueued, so give this line a second to wait for it to be available
|
316 |
+
setTimeout(function() {
|
317 |
+
postboxes.add_postbox_toggles('ngg-manage-gallery');
|
318 |
+
}, 1000);
|
319 |
+
|
320 |
+
$(this).data('ready', true);
|
321 |
+
})(jQuery);
|
322 |
</script>
|
323 |
|
324 |
<?php if ($action_status['message'] != '') { ?>
|
products/photocrati_nextgen/modules/ngglegacy/admin/overview.php
CHANGED
@@ -45,10 +45,10 @@ function nggallery_admin_overview()
|
|
45 |
if (!$found) { ?>
|
46 |
<a href="javascript:void(0)" data-id="ngg-vs-pro-link"><?php _e( 'NextGEN Basic vs Pro', 'nggallery'); ?></a>
|
47 |
<?php } ?>
|
|
|
48 |
<?php if (wp_get_theme() != "Imagely"): ?>
|
49 |
<a href="javascript:void(0)" data-id="genesis-link"><?php _e( 'Imagely Themes', 'nggallery'); ?></a>
|
50 |
<?php endif ?>
|
51 |
-
<a href="javascript:void(0)" data-id="ambassador-link"><?php _e( 'Ambassadors', 'nggallery'); ?></a>
|
52 |
<?php if (!$found) { ?>
|
53 |
<a href="javascript:void(0)" data-id="pro-link"><?php _e('Unlock More', 'nggallery'); ?></a>
|
54 |
<?php } ?>
|
@@ -377,59 +377,6 @@ function nggallery_admin_overview()
|
|
377 |
</div>
|
378 |
<?php endif ?>
|
379 |
|
380 |
-
<div data-id="ambassador-link">
|
381 |
-
|
382 |
-
<div class="feature-section three-col">
|
383 |
-
<h2><?php _e( 'Meet the Imagely Product Ambassadors', 'nggallery' ); ?></h2>
|
384 |
-
<p class="about-text"><?php _e( "NextGEN Gallery and other Imagely products are used by some of the best photographers in the world. Meet some of the Imagely Ambassadors who are putting Imagely and NextGEN Gallery to work professionally.", 'nggallery' ); ?>
|
385 |
-
</p>
|
386 |
-
<div class="col">
|
387 |
-
<a href="<?php print esc_attr(M_Marketing::get_utm_link('https://www.imagely.com/team-member/the-youngrens/', 'ambassador', 'theyoungrens')); ?>" target="_blank"><img src="https://f001.backblaze.com/file/nextgen-gallery/theyoungrens-ngg.jpg" alt="The Youngrens"/></a>
|
388 |
-
<h3><?php _e( 'The Youngrens' ); ?></h3>
|
389 |
-
<p><?php _e( 'Jeff and Erin are a luxury husband and wife photography team who deeply love each other and their photography clients. They shoot weddings and engagements all over the U.S. and beyond. With three photography businesses that serve different clientele, they have unique insights into business strategies and are passionate about improving the day to day lives of other photographers.', 'nggallery' ); ?></p>
|
390 |
-
</div>
|
391 |
-
<div class="col">
|
392 |
-
<a href="<?php print esc_attr(M_Marketing::get_utm_link('https://www.imagely.com/team-member/tamara-lackey/', 'ambassador', 'tamaralackey')); ?>" target="_blank"><img src="https://f001.backblaze.com/file/nextgen-gallery/TamaraLackey-ngg.jpg" alt="Tamara Lackey" /></a>
|
393 |
-
<h3><?php _e( 'Tamara Lackey' ); ?></h3>
|
394 |
-
<p><?php _e( 'Tamara Lackey is a renowned professional photographer, speaker, and author. Her authentic lifestyle photography, from children’s portraits to celebrity portraits, is praised within her industry and published internationally. She is a Nikon USA Ambassador, the host of The reDefine Show web series, and the co-founder of the non-profit charitable organization, Beautiful Together, in support of children waiting for families.', 'nggallery' ); ?></p>
|
395 |
-
</div>
|
396 |
-
<div class="col">
|
397 |
-
<a href="<?php print esc_attr(M_Marketing::get_utm_link('https://www.imagely.com/team-member/colby-brown/', 'ambassador', 'colbybrown')); ?>" target="_blank"><img src="https://f001.backblaze.com/file/nextgen-gallery/colby-brown-ngg.jpg" alt="Colby Brown" /></a>
|
398 |
-
<h3><?php _e( 'Colby Brown' ); ?></h3>
|
399 |
-
<p><?php _e( 'Colby is a photographer, photo educator, and author specializing in landscape, travel and humanitarian photography. With an audience reaching millions, Colby partners on social influencer marketing campaigns with some of the biggest companies and destinations in the world, including Sony, Samsung, Toshiba, Iceland Naturally, Jordan Tourism Board, Australia.com, Visit California and more.', 'nggallery' ); ?></p>
|
400 |
-
</div>
|
401 |
-
</div>
|
402 |
-
|
403 |
-
<div class="feature-section three-col">
|
404 |
-
<div class="col">
|
405 |
-
<a href="<?php print esc_attr(M_Marketing::get_utm_link('https://www.imagely.com/team-member/jared-platt/', 'ambassador', 'jaredplatt')); ?>" target="_blank"><img src="https://f001.backblaze.com/file/nextgen-gallery/jared-platt-ngg.jpg" alt="Jared Platt" /></a>
|
406 |
-
<h3><?php _e( 'Jared Platt' ); ?></h3>
|
407 |
-
<p><?php _e( 'Jared is a professional wedding and lifestyle photographer. He also travels the world giving lectures and workshops on photography, lighting, and post-production efficiency and workflow. His interactive style, and attention to detail and craft make him an entertaining and demanding photography instructor.', 'nggallery' ); ?></p>
|
408 |
-
</div>
|
409 |
-
<div class="col">
|
410 |
-
<a href="<?php print esc_attr(M_Marketing::get_utm_link('https://www.imagely.com/team-member/brian-matiash/', 'ambassador', 'brianmatiash')); ?>" target="_blank"><img src="https://f001.backblaze.com/file/nextgen-gallery/brian-matiash-ngg.jpeg" alt="" /></a>
|
411 |
-
<h3><?php _e( 'Brian Matiash' ); ?></h3>
|
412 |
-
<p><?php _e( 'Brian is a professional photographer, author, and educator. He fuses landscape & travel photography with experiential storytelling and practical instructing to help others grow creatively. He is also a Sony Artisan of Imagery, a Zeiss Lens Ambassador, a Formatt-Hitech Featured Photographer, and a member of G-Technology’s G-Team.', 'nggallery' ); ?></p>
|
413 |
-
</div>
|
414 |
-
<div class="col">
|
415 |
-
<a href="<?php print esc_attr(M_Marketing::get_utm_link('https://www.imagely.com/team-member/christine-tremoulet/', 'ambassador', 'christinetremoulet')); ?>" target="_blank"><img src="https://f001.backblaze.com/file/nextgen-gallery/Christine-Tremoulet-ngg.jpg" alt="" /></a>
|
416 |
-
<h3><?php _e( 'Christine Tremoulet' ); ?></h3>
|
417 |
-
<p><?php _e( 'Christine famously coined the term WordPress. She is an author, speaker, business coach, and story strategist who specializes in helping creatives celebrate their story online through blogging and social media. When not offering actionable know-how to businesses, she can be found taking long road trips across North America in her Mini Cooper.', 'nggallery' ); ?></p>
|
418 |
-
</div>
|
419 |
-
</div>
|
420 |
-
|
421 |
-
<div class="feature-section three-col">
|
422 |
-
<div class="col">
|
423 |
-
<a href="<?php print esc_attr(M_Marketing::get_utm_link('https://www.imagely.com/team-member/david-beckstead/', 'ambassador', 'davidbeckstead')); ?>" target="_blank"><img src="https://f001.backblaze.com/file/nextgen-gallery/david-beckstead-ngg.jpg" alt="David Beckstead" /></a>
|
424 |
-
<h3><?php _e( 'David Beckstead' ); ?></h3>
|
425 |
-
<p><?php _e( 'Named one of the Top 10 Wedding Photographers in the World by American Photo magazine, David is a celebrated photographer and educator. He is also a mountain man with a enviable lifestyle: from his base in rural Washington, he travels all over the world teaching workshops, while sharing lessons with 16,000 photographers in the Abstract Canvas Facebook group.', 'nggallery' ); ?></p>
|
426 |
-
</div>
|
427 |
-
<div class="col"></div>
|
428 |
-
<div class="col"></div>
|
429 |
-
</div>
|
430 |
-
|
431 |
-
</div>
|
432 |
-
|
433 |
</div> <!-- /.ngg_page_content_main -->
|
434 |
|
435 |
</div> <!-- /.wrap -->
|
45 |
if (!$found) { ?>
|
46 |
<a href="javascript:void(0)" data-id="ngg-vs-pro-link"><?php _e( 'NextGEN Basic vs Pro', 'nggallery'); ?></a>
|
47 |
<?php } ?>
|
48 |
+
|
49 |
<?php if (wp_get_theme() != "Imagely"): ?>
|
50 |
<a href="javascript:void(0)" data-id="genesis-link"><?php _e( 'Imagely Themes', 'nggallery'); ?></a>
|
51 |
<?php endif ?>
|
|
|
52 |
<?php if (!$found) { ?>
|
53 |
<a href="javascript:void(0)" data-id="pro-link"><?php _e('Unlock More', 'nggallery'); ?></a>
|
54 |
<?php } ?>
|
377 |
</div>
|
378 |
<?php endif ?>
|
379 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
380 |
</div> <!-- /.ngg_page_content_main -->
|
381 |
|
382 |
</div> <!-- /.wrap -->
|
products/photocrati_nextgen/modules/ngglegacy/lib/gd.thumbnail.inc.php
CHANGED
@@ -275,10 +275,10 @@ class ngg_Thumbnail {
|
|
275 |
if (is_resource($this->newImage) || $this->newImage instanceof GdImage)
|
276 |
@imagedestroy($this->newImage);
|
277 |
|
278 |
-
if (is_resource($this->oldImage) || $this->
|
279 |
@imagedestroy($this->oldImage);
|
280 |
|
281 |
-
if (is_resource($this->workingImage) || $this->
|
282 |
@imagedestroy($this->workingImage);
|
283 |
}
|
284 |
|
275 |
if (is_resource($this->newImage) || $this->newImage instanceof GdImage)
|
276 |
@imagedestroy($this->newImage);
|
277 |
|
278 |
+
if (is_resource($this->oldImage) || $this->oldImage instanceof GdImage)
|
279 |
@imagedestroy($this->oldImage);
|
280 |
|
281 |
+
if (is_resource($this->workingImage) || $this->workingImage instanceof GdImage)
|
282 |
@imagedestroy($this->workingImage);
|
283 |
}
|
284 |
|
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: 5.5.4
|
5 |
-
Stable tag: 3.
|
6 |
Tested up to: 5.8
|
7 |
License: GPLv3
|
8 |
Requires PHP: 5.6
|
@@ -179,6 +179,12 @@ For more information, feel free to visit the official website for the NextGEN Ga
|
|
179 |
|
180 |
== Changelog ==
|
181 |
|
|
|
|
|
|
|
|
|
|
|
|
|
182 |
= V3.15 - 08.23.2021
|
183 |
* Fixed: A warning was generated on every request for users of PHP 5.6
|
184 |
|
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: 5.5.4
|
5 |
+
Stable tag: 3.16
|
6 |
Tested up to: 5.8
|
7 |
License: GPLv3
|
8 |
Requires PHP: 5.6
|
179 |
|
180 |
== Changelog ==
|
181 |
|
182 |
+
= V3.16 - 09.08.2021
|
183 |
+
* Fixed: Links on "Extensions" page were incorrect
|
184 |
+
* Fixed: Incompatibility with WP User Manager caused Manage Gallery bulk actions to be unusable
|
185 |
+
* Fixed: Images that failed to upload would be treated as a success in the UI if the server HTTP response code is 200
|
186 |
+
* Changed: Removed the "Ambassadors" tab from the Overview page
|
187 |
+
|
188 |
= V3.15 - 08.23.2021
|
189 |
* Fixed: A warning was generated on every request for users of PHP 5.6
|
190 |
|