Version 5.0.13
This commit is contained in:
1 parent
b89858b2ff
commit
5efe744c5f
1407 files changed
+69690
-30177
No files matched your search
@@ -241,5 +241,15 @@
|
||||
"create albums",
|
||||
"create albums permission"
|
||||
]
|
||||
},
|
||||
"app=gallery&module=gallery&controller=settings&searchResult=form_gallery_metadata": {
|
||||
"lang_key": "gallery_metadata",
|
||||
"restriction": "settings_manage",
|
||||
"keywords": [
|
||||
"exif",
|
||||
"metadata",
|
||||
"location",
|
||||
"image data"
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -9,6 +9,7 @@
|
||||
<setting key="gallery_detailed_bandwidth"><![CDATA[{"key":"gallery_detailed_bandwidth","default":"1","report":"full"}]]></setting>
|
||||
<setting key="gallery_large_dims"><![CDATA[{"key":"gallery_large_dims","default":"1600x1200","report":"full"}]]></setting>
|
||||
<setting key="gallery_maps_default"><![CDATA[{"key":"gallery_maps_default","default":"0","report":"full"}]]></setting>
|
||||
<setting key="gallery_metadata"><![CDATA[{"key":"gallery_metadata","default":"1","report":"none"}]]></setting>
|
||||
<setting key="gallery_new_images_count"><![CDATA[{"key":"gallery_new_images_count","default":"16","report":"none"}]]></setting>
|
||||
<setting key="gallery_nsfw"><![CDATA[{"key":"gallery_nsfw","default":"0","report":"bool"}]]></setting>
|
||||
<setting key="gallery_overview_carousel_count"><![CDATA[{"key":"gallery_overview_carousel_count","default":"20","report":"full"}]]></setting>
|
||||
@@ -59,4 +60,5 @@
|
||||
<acpsearch key="app=core&module=members&controller=groups&searchResult=4_g_max_upload"><![CDATA[{"lang_key":"g_max_upload","restriction":"groups_manage","keywords":["gallery image size","gallery max image size","gallery maximum image size","max size of image","maximum image size"]}]]></acpsearch>
|
||||
<acpsearch key="app=core&module=members&controller=groups&searchResult=4_g_movies"><![CDATA[{"lang_key":"g_movies","restriction":"groups_manage","keywords":["ability to upload movies","movie upload ability","movies","upload movie permission","upload movies"]}]]></acpsearch>
|
||||
<acpsearch key="app=core&module=members&controller=groups&searchResult=4_g_create_albums"><![CDATA[{"lang_key":"g_create_albums","restriction":"groups_manage","keywords":["albums","albums permission","create albums","create albums permission"]}]]></acpsearch>
|
||||
<acpsearch key="app=gallery&module=gallery&controller=settings&searchResult=form_gallery_metadata"><![CDATA[{"lang_key":"gallery_metadata","restriction":"settings_manage","keywords":["exif","metadata","location","image data"]}]]></acpsearch>
|
||||
</build>
|
||||
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<javascript app="gallery">
|
||||
<file javascript_app="gallery" javascript_location="front" javascript_path="controllers/global" javascript_name="ips.global.nsfw.js" javascript_type="controller" javascript_version="5000074" javascript_position="1000200">;( function($, _, undefined){
|
||||
<file javascript_app="gallery" javascript_location="front" javascript_path="controllers/global" javascript_name="ips.global.nsfw.js" javascript_type="controller" javascript_version="5001302" javascript_position="1000200">;( function($, _, undefined){
|
||||
"use strict";
|
||||
|
||||
ips.controller.register('gallery.front.global.nsfw', {
|
||||
@@ -20,7 +20,7 @@
|
||||
});
|
||||
|
||||
}(jQuery, _));</file>
|
||||
<file javascript_app="gallery" javascript_location="admin" javascript_path="controllers/settings" javascript_name="ips.settings.settings.js" javascript_type="controller" javascript_version="5000074" javascript_position="1000050">/**
|
||||
<file javascript_app="gallery" javascript_location="admin" javascript_path="controllers/settings" javascript_name="ips.settings.settings.js" javascript_type="controller" javascript_version="5001302" javascript_position="1000050">/**
|
||||
* Invision Community
|
||||
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
|
||||
*
|
||||
@@ -77,7 +77,7 @@
|
||||
|
||||
});
|
||||
}(jQuery, _));</file>
|
||||
<file javascript_app="gallery" javascript_location="front" javascript_path="controllers/submit" javascript_name="ips.submit.chooseCategory.js" javascript_type="controller" javascript_version="5000074" javascript_position="1000100"><![CDATA[/**
|
||||
<file javascript_app="gallery" javascript_location="front" javascript_path="controllers/submit" javascript_name="ips.submit.chooseCategory.js" javascript_type="controller" javascript_version="5001302" javascript_position="1000100"><![CDATA[/**
|
||||
* Invision Community
|
||||
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
|
||||
*
|
||||
@@ -244,7 +244,7 @@
|
||||
});
|
||||
}(jQuery, _));
|
||||
]]></file>
|
||||
<file javascript_app="gallery" javascript_location="front" javascript_path="controllers/submit" javascript_name="ips.submit.existingAlbums.js" javascript_type="controller" javascript_version="5000074" javascript_position="1000100"><![CDATA[/**
|
||||
<file javascript_app="gallery" javascript_location="front" javascript_path="controllers/submit" javascript_name="ips.submit.existingAlbums.js" javascript_type="controller" javascript_version="5001302" javascript_position="1000100"><![CDATA[/**
|
||||
* Invision Community
|
||||
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
|
||||
*
|
||||
@@ -280,7 +280,7 @@
|
||||
}
|
||||
});
|
||||
}(jQuery, _));]]></file>
|
||||
<file javascript_app="gallery" javascript_location="front" javascript_path="controllers/submit" javascript_name="ips.submit.uploadImages.js" javascript_type="controller" javascript_version="5000074" javascript_position="1000100"><![CDATA[/**
|
||||
<file javascript_app="gallery" javascript_location="front" javascript_path="controllers/submit" javascript_name="ips.submit.uploadImages.js" javascript_type="controller" javascript_version="5001302" javascript_position="1000100"><![CDATA[/**
|
||||
* Invision Community
|
||||
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
|
||||
*
|
||||
@@ -411,7 +411,7 @@
|
||||
}
|
||||
});
|
||||
}(jQuery, _));]]></file>
|
||||
<file javascript_app="gallery" javascript_location="front" javascript_path="controllers/submit" javascript_name="ips.submit.wrapper.js" javascript_type="controller" javascript_version="5000074" javascript_position="1000100"><![CDATA[/**
|
||||
<file javascript_app="gallery" javascript_location="front" javascript_path="controllers/submit" javascript_name="ips.submit.wrapper.js" javascript_type="controller" javascript_version="5001302" javascript_position="1000100"><![CDATA[/**
|
||||
* Invision Community
|
||||
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
|
||||
*
|
||||
@@ -450,7 +450,6 @@
|
||||
this.on( 'click', '[data-role="imageDescriptionUseTextarea"]', this.setUpImageDescriptionPlain );
|
||||
this.on( 'click', '[data-role="addCopyrightCredit"]', this.showCopyrightCredit );
|
||||
this.on( 'click', '[data-role="saveDetails"]', this.saveDetails );
|
||||
this.on( 'click', '[data-role="saveInfo"]', this.saveInfo );
|
||||
|
||||
// Handle events from uploader
|
||||
this.on( 'gallery.activateSubmitButton', this.activateSubmitButton );
|
||||
@@ -562,16 +561,6 @@
|
||||
link.hide().next().slideDown();
|
||||
},
|
||||
|
||||
/**
|
||||
* Closes the copyright/credit menu
|
||||
*
|
||||
* @returns {void}
|
||||
*/
|
||||
saveInfo: function (e) {
|
||||
e.preventDefault();
|
||||
$(e.currentTarget).trigger('closeMenu');
|
||||
},
|
||||
|
||||
/**
|
||||
* Mobile-specific functionality for 'save' button
|
||||
*
|
||||
@@ -1166,7 +1155,7 @@
|
||||
}
|
||||
});
|
||||
}(jQuery, _));]]></file>
|
||||
<file javascript_app="gallery" javascript_location="front" javascript_path="controllers/view" javascript_name="ips.view.image.js" javascript_type="controller" javascript_version="5000074" javascript_position="1000150">/**
|
||||
<file javascript_app="gallery" javascript_location="front" javascript_path="controllers/view" javascript_name="ips.view.image.js" javascript_type="controller" javascript_version="5001302" javascript_position="1000150"><![CDATA[/**
|
||||
* Invision Community
|
||||
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
|
||||
*
|
||||
@@ -1175,7 +1164,22 @@
|
||||
* Author: Rikki Tissier
|
||||
*/
|
||||
;( function($, _, undefined){
|
||||
"use strict";
|
||||
"use strict";
|
||||
|
||||
/**
|
||||
* @typedef {{id: number|string, content:string}[]} ImageNavLinks
|
||||
* @typedef {Object&{image: string, url: string, info: string, title: string, id: string|number, images_prev: ImageNavLinks, images_next: ImageNavLinks, image_link_current:string}} ImageFetchResponse
|
||||
*/
|
||||
|
||||
const selectorPropertyMap = {
|
||||
comments: '[data-role="imageComments"]',
|
||||
image: '[data-role="imageFrame"]',
|
||||
info: '[data-role="imageInfo"]',
|
||||
breadcrumb_top: 'nav.ipsBreadcrumb--top',
|
||||
breadcrumb_bottom: 'nav.ipsBreadcrumb--bottom',
|
||||
breadcrumb_mobile: 'nav.ipsBreadcrumb--mobile',
|
||||
breadcrumb_off_canvas: 'nav.ipsOffCanvas__breadcrumb'
|
||||
};
|
||||
|
||||
ips.controller.register('gallery.front.view.image', {
|
||||
|
||||
@@ -1183,9 +1187,17 @@
|
||||
this.on( 'menuOpened', this.menuOpened );
|
||||
this.on( 'menuClosed', this.menuClosed );
|
||||
this.on( document, 'keydown', this.keyDown );
|
||||
this.on( 'click', '[data-action="setAsCover"]', this.setAsCover );
|
||||
this.on( 'click', '[data-action="setAsProfile"]', this.setAsProfile );
|
||||
this.on( 'click', '[data-action="rotateImage"]', this.rotateImage );
|
||||
this.on( 'click', '[data-action="setAsCover"]', this.setAsCover );
|
||||
this.on( 'click', '[data-action="setAsProfile"]', this.setAsProfile );
|
||||
this.on( 'click', '[data-action="rotateImage"]', this.rotateImage );
|
||||
this.on( 'click', '[data-action="changeImage"]', this.changeImage );
|
||||
this._stateUpdate = e => this.stateUpdate(e);
|
||||
ips.utils.history.replaceState({id: this.getCurrentImageId()}, 'gallery.view.image', window.location.href);
|
||||
window.addEventListener('historychange', this._stateUpdate);
|
||||
},
|
||||
|
||||
destroy() {
|
||||
window.removeEventListener('historychange:gallery.view.image', this._stateUpdate);
|
||||
},
|
||||
|
||||
/**
|
||||
@@ -1220,10 +1232,10 @@
|
||||
|
||||
switch( e.keyCode ){
|
||||
case ips.ui.key.LEFT:
|
||||
this.scope.find('[data-action="prevMedia"]')[0].click();
|
||||
this.scope.find('[data-action="changeImage"][data-direction="prev"]')[0].click();
|
||||
break;
|
||||
case ips.ui.key.RIGHT:
|
||||
this.scope.find('[data-action="nextMedia"]')[0].click();
|
||||
this.scope.find('[data-action="changeImage"][data-direction="next"]')[0].click();
|
||||
break;
|
||||
}
|
||||
},
|
||||
@@ -1297,18 +1309,359 @@
|
||||
showLoading: true
|
||||
} )
|
||||
.done( function (response) {
|
||||
self.scope.find('[data-role="theImage"]')[0].src = response.src;
|
||||
self.scope.find('[data-role="theImage"]').css( { 'width': response.width + 'px', 'height': response.height + 'px' } );
|
||||
self.scope.find('[data-role="theImage"]').closest('.cGalleryViewImage').css( { 'width': response.width + 'px', 'height': response.height + 'px' } );
|
||||
self.scope.find('[data-role="theImage"]')[0].src = response.src;
|
||||
self.scope.find('[data-role="theImage"]').css( { 'width': response.width + 'px', 'height': response.height + 'px' } );
|
||||
self.scope.find('[data-role="theImage"]').closest('.cGalleryViewImage').css( { 'width': response.width + 'px', 'height': response.height + 'px' } );
|
||||
ips.ui.flashMsg.show( response.message );
|
||||
})
|
||||
.fail( function () {
|
||||
window.location = url;
|
||||
});
|
||||
},
|
||||
|
||||
/**
|
||||
* Fetch new image and replace existing HTML so we don't need to refresh the page
|
||||
*
|
||||
* @param {Event} e Event object
|
||||
* @returns {void}
|
||||
*/
|
||||
changeImage: async function(e){
|
||||
e.preventDefault();
|
||||
|
||||
let commentTab;
|
||||
const tabsContainer = this.elem.querySelector(`${selectorPropertyMap.comments} i-tabs`);
|
||||
if (tabsContainer) {
|
||||
let tab = tabsContainer.querySelector(`[href][aria-selected="true"]`)?.href;
|
||||
if (tab && tab.endsWith('comments')) {
|
||||
commentTab = 'comments';
|
||||
} else if (tab) {
|
||||
commentTab = 'reviews';
|
||||
}
|
||||
}
|
||||
let url = $( e.currentTarget ).attr('href');
|
||||
const currentId = this.getCurrentImageId();
|
||||
const urlObj = new URL(url, window.location.href);
|
||||
urlObj.updateSearchParams({param: 'browse', value: '1'});
|
||||
|
||||
try {
|
||||
// Fetch new image data
|
||||
let selectedId;
|
||||
if (urlObj.searchParams.get('do') === 'previous' && currentId && currentId in this._prevIdCache) {
|
||||
selectedId = this._prevIdCache[currentId];
|
||||
} else if (urlObj.searchParams.get('do') === 'next' && currentId && currentId in this._nextIdCache) {
|
||||
selectedId = this._nextIdCache[currentId];
|
||||
} else if (e.currentTarget.closest(`#gallery-image-thumbs > [data-image-id]`)) {
|
||||
selectedId = e.currentTarget.closest(`#gallery-image-thumbs > [data-image-id]`).dataset.imageId;
|
||||
}
|
||||
|
||||
if (selectedId && selectedId === currentId) {
|
||||
Debug.log(`Not loading image ${selectedId} from ${urlObj} because it is the current image`);
|
||||
return;
|
||||
}
|
||||
|
||||
for (const selector of Object.values(selectorPropertyMap)) {
|
||||
this.elem.querySelectorAll(`${selector}:not(${selector} *)`).forEach(el => el.classList.add('ipsLoading'));
|
||||
}
|
||||
|
||||
const response = await this.fetchImageData(urlObj.toString(), commentTab, selectedId);
|
||||
|
||||
// Update browser URL
|
||||
url = new URL(response.url, window.location.href)
|
||||
if (commentTab) {
|
||||
url.updateSearchParams({param: "tab", value: commentTab});
|
||||
}
|
||||
ips.utils.history.pushState({url:url.toString(), response, commentTab, id: response.id.toString()}, `gallery.view.image`, url.toString(), e);
|
||||
if (this.historyPromise) {
|
||||
await this.historyPromise;
|
||||
}
|
||||
|
||||
const currentThumbIDs = new Set(
|
||||
[...this.elem.querySelectorAll("#gallery-image-thumbs [data-image-id]")]
|
||||
.map(elem => elem.dataset.imageId)
|
||||
);
|
||||
|
||||
let thumbsChanged = false;
|
||||
for (const thumb of this.elem.querySelectorAll("#gallery-image-thumbs [data-image-id]")) {
|
||||
if (!currentThumbIDs.has(thumb.dataset.imageId)) {
|
||||
thumbsChanged = true;
|
||||
break;
|
||||
}
|
||||
currentThumbIDs.delete(thumb.dataset.imageId);
|
||||
}
|
||||
|
||||
if (currentThumbIDs.size && !thumbsChanged) {
|
||||
thumbsChanged = true;
|
||||
}
|
||||
selectedId = this.getCurrentImageId();
|
||||
if (selectedId) {
|
||||
// We need to clear out the existing prev/next associations if an image was added or deleted, otherwise it will skip images and/or display the cached deleted image and content feed, creating issues
|
||||
if (thumbsChanged) {
|
||||
this._prevIdCache = {};
|
||||
this._nextIdCache = {};
|
||||
}
|
||||
|
||||
const urlObj = new URL(response.url, window.location.href);
|
||||
if (urlObj.searchParams.get('do') === 'previous' && currentId) {
|
||||
this._prevIdCache[currentId] = selectedId;
|
||||
this._nextIdCache[selectedId] = currentId;
|
||||
} else if (urlObj.searchParams.get('do') === 'next' && currentId) {
|
||||
this._nextIdCache[currentId] = selectedId;
|
||||
this._prevIdCache[selectedId] = currentId;
|
||||
}
|
||||
}
|
||||
} catch (e) {
|
||||
Debug.warn(e);
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Get the image data based on details
|
||||
* @param url
|
||||
* @param commentTab
|
||||
* @param id
|
||||
* @return {Promise<ImageFetchResponse>}
|
||||
*/
|
||||
async fetchImageData(url, commentTab, id) {
|
||||
url = new URL(url, window.location.href)
|
||||
.updateSearchParams({params: {
|
||||
tab: ['comments','reviews'].includes(commentTab) ? commentTab : null, // null removes this param if it's set
|
||||
browse: 1,
|
||||
}})
|
||||
.toString();
|
||||
commentTab = commentTab || 'reviews';
|
||||
const response = this._resultCache?.[commentTab]?.[id] || await ips.fetch(url, {bypassRedirect: 'none'});
|
||||
if (typeof response !== 'object' || ['image','url','info','title', 'id'].some(prop => !(prop in response))) {
|
||||
throw new RangeError(`The response from the endpoint ${urlObj} is not a JSON object containing image, url, info and title properties.`);
|
||||
}
|
||||
|
||||
if (id) {
|
||||
this._resultCache[commentTab] = this._resultCache[commentTab] || {};
|
||||
this._resultCache[commentTab][id] = response;
|
||||
}
|
||||
|
||||
return response;
|
||||
},
|
||||
|
||||
/**
|
||||
* Handle a state update
|
||||
* @param {CustomEvent<Object&{detail: 'replace'|'pop'|'push'|string,state: {"gallery.view.image": Object&{response: Object|undefined, commentTab: string|undefined, id:string|number}}}>}e
|
||||
* @return {Promise<void>}
|
||||
*/
|
||||
async stateUpdate(e) {
|
||||
if (e.detail.type === 'replace') {
|
||||
return;
|
||||
}
|
||||
let _resolve, _reject;
|
||||
let {response, commentTab, id} = e.detail.state['gallery.view.image'];
|
||||
this.historyPromise = new Promise(((resolve, reject) => {
|
||||
_resolve = resolve;
|
||||
_reject = reject;
|
||||
}));
|
||||
if (!id || id === this.getCurrentImageId()) {
|
||||
Debug.log(`Not handling a state update for the gallery view because the id has not changed`);
|
||||
_reject(`The view wasn't actually changed`);
|
||||
return;
|
||||
}
|
||||
if (!response || !commentTab) {
|
||||
let tab = this.elem.querySelector(`${selectorPropertyMap.comments} i-tabs [href][aria-selected="true"]`)?.href;
|
||||
if (tab && tab.endsWith('comments')) {
|
||||
commentTab = 'comments';
|
||||
} else if (tab) {
|
||||
commentTab = 'reviews';
|
||||
}
|
||||
|
||||
response = await this.fetchImageData(window.location.href, commentTab, id);
|
||||
ips.utils.history.replaceState({...e.detail.state['gallery.view.image'], response, commentTab, id, url: response.url});
|
||||
}
|
||||
|
||||
for (const [property, selector] of Object.entries(selectorPropertyMap)) {
|
||||
const root = ['breadcrumb_top','breadcrumb_bottom','breadcrumb_mobile', 'breadcrumb_off_canvas'].includes(property) ? document.body : this.elem;
|
||||
root.querySelectorAll(`${selector}:not(${selector} *)`).forEach(el => {
|
||||
el.insertAdjacentHTML("afterend", response[property] || "");
|
||||
el.remove();
|
||||
});
|
||||
}
|
||||
this.updateActiveThumb(response);
|
||||
|
||||
document.title = response.title;
|
||||
|
||||
// Refresh content
|
||||
$( document ).trigger( 'contentChange', [ $(this.elem) ] );
|
||||
|
||||
if (response.dataLayer) {
|
||||
this.scope.trigger('ipsDataLayerProperties', {_properties: response.dataLayer});
|
||||
}
|
||||
_resolve();
|
||||
},
|
||||
|
||||
/**
|
||||
* @type {Promise<void>|undefined}
|
||||
*/
|
||||
historyPromise: undefined,
|
||||
|
||||
/**
|
||||
* Get the id of the currently visible image.
|
||||
* @return {string | undefined}
|
||||
*/
|
||||
getCurrentImageId() {
|
||||
const id = this.elem.querySelector("[data-role='imageFrame'][data-image-id]")?.dataset.imageId;
|
||||
if (id === undefined) {
|
||||
Debug.warn(new RangeError(`Could not determine the current image id from the image frame`));
|
||||
}
|
||||
return id;
|
||||
},
|
||||
|
||||
/**
|
||||
* Since the prev/next buttons use the current image, and do=next in the URL, we have to cache the image ID after the request is done
|
||||
* @type {Object<string, string>}
|
||||
*/
|
||||
_nextIdCache: {},
|
||||
|
||||
/**
|
||||
* Since the prev/next buttons use the current image, and do=next in the URL, we have to cache the image ID after the request is done
|
||||
* @type {Object<string, string>}
|
||||
*/
|
||||
_prevIdCache: {},
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
_resultCache: {},
|
||||
|
||||
/**
|
||||
* @param {ImageFetchResponse|undefined} response
|
||||
*/
|
||||
updateActiveThumb(response) {
|
||||
if (response) {
|
||||
// merge in images before this one
|
||||
const allImages = [...this.elem.querySelectorAll(`#gallery-image-thumbs > [data-image-id]`)];
|
||||
const remainingIds = new Set(allImages.map(img => parseInt(img.dataset.imageId)));
|
||||
|
||||
/**
|
||||
* @type {ImageNavLinks}
|
||||
*/
|
||||
const toInsert = [...response.images_prev, {id: response.id, content:response.image_link_current}, ...response.images_next];
|
||||
|
||||
// first is there any overlap?
|
||||
const overlap = toInsert.findIndex(val => remainingIds.has((parseInt(val.id))));
|
||||
if (overlap !== -1) {
|
||||
const id = parseInt(toInsert[overlap].id);
|
||||
const overlapDOMIdx = allImages.findIndex(img => parseInt(img.dataset.imageId) === id);
|
||||
|
||||
// merge in any ids that aren't currently in the page
|
||||
const prevInDOM = allImages.slice(0,overlapDOMIdx).reverse();
|
||||
const prevIdsRemaining = new Set(prevInDOM.map(img => parseInt(img.dataset.imageId)));
|
||||
const prevToInsert = toInsert.slice(0, overlap).reverse();
|
||||
for (let i = 0; i < prevToInsert.length; i++) {
|
||||
const id = parseInt(prevToInsert[i].id);
|
||||
|
||||
|
||||
// just insert if there's no images before this one in the DOM
|
||||
if (!prevInDOM.length && !remainingIds.has(id)) {
|
||||
requestAnimationFrame(() => {
|
||||
this.elem.querySelector(`#gallery-image-thumbs`).insertAdjacentHTML('afterbegin', prevToInsert[i].content);
|
||||
});
|
||||
continue;
|
||||
}
|
||||
|
||||
if (prevIdsRemaining.has(id)) {
|
||||
prevIdsRemaining.delete(id);
|
||||
while (prevInDOM.length > 1 && parseInt(prevInDOM[0].dataset.imageId) !== id) {
|
||||
const skipped = prevInDOM.shift();
|
||||
prevIdsRemaining.delete(parseInt(skipped.dataset.imageId));
|
||||
}
|
||||
continue;
|
||||
}
|
||||
|
||||
// if there's already an element for this, skip it
|
||||
if (remainingIds.has(id)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// insert this before the first image
|
||||
const chunk = [];
|
||||
while (i < prevToInsert.length && !remainingIds.has(parseInt(prevToInsert[i].id))) {
|
||||
chunk.unshift(prevToInsert[i].content);
|
||||
i++;
|
||||
}
|
||||
requestAnimationFrame(() => {
|
||||
prevInDOM[0].insertAdjacentHTML('beforebegin', chunk.join(''));
|
||||
});
|
||||
}
|
||||
|
||||
const nextToInsert = toInsert.slice(overlap + 1);
|
||||
const nextInDOM = allImages.slice(overlapDOMIdx);
|
||||
const nextIdsRemaining = new Set(nextInDOM.map(img => parseInt(img.dataset.imageId)));
|
||||
for (let i = 0; i < nextToInsert.length; i++) {
|
||||
const id = parseInt(nextToInsert[i].id);
|
||||
// just insert if there's no images before this one in the DOM
|
||||
if (!nextInDOM.length) {
|
||||
requestAnimationFrame(() => {
|
||||
this.elem.querySelector(`#gallery-image-thumbs`).insertAdjacentHTML('beforeend', nextToInsert[i].content);
|
||||
});
|
||||
continue;
|
||||
}
|
||||
|
||||
if (nextIdsRemaining.has(id)) {
|
||||
nextIdsRemaining.delete(id);
|
||||
while (nextInDOM.length > 1 && parseInt(nextInDOM[0].dataset.imageId) !== id) {
|
||||
const skipped = nextInDOM.shift();
|
||||
nextIdsRemaining.delete(parseInt(skipped.dataset.imageId));
|
||||
}
|
||||
continue;
|
||||
}
|
||||
|
||||
if (remainingIds.has(id)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// insert this before the first image
|
||||
let chunk = [];
|
||||
while (i < nextToInsert.length && !remainingIds.has(parseInt(nextToInsert[i].id))) {
|
||||
chunk.push(nextToInsert[i].content);
|
||||
i++;
|
||||
}
|
||||
requestAnimationFrame(() => {
|
||||
nextInDOM[0].insertAdjacentHTML('afterend', chunk.join(''));
|
||||
});
|
||||
}
|
||||
} else if (toInsert.length) {
|
||||
requestAnimationFrame(() => {
|
||||
// no overlap? Well then we need to replace the links as we have no way to properly merge the lists
|
||||
this.elem.querySelector('#gallery-image-thumbs').innerHTML = toInsert.map(img => img.content).join('\n');
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
const currentlyActiveThumb = this.getCurrentImageId();
|
||||
requestAnimationFrame(() => {
|
||||
this.elem.querySelectorAll(`#gallery-image-thumbs > [data-active]`).forEach(el => delete el.dataset.active);
|
||||
});
|
||||
if (currentlyActiveThumb) {
|
||||
let img;
|
||||
requestAnimationFrame(() => {
|
||||
this.elem.querySelectorAll(`#gallery-image-thumbs > [data-image-id="${currentlyActiveThumb}"]`).forEach(el => {
|
||||
el.dataset.active = '';
|
||||
img = el;
|
||||
});
|
||||
if (img) {
|
||||
requestAnimationFrame(() => {
|
||||
const imgRect = img.getBoundingClientRect();
|
||||
const scroller = img.closest('#gallery-image-thumbs');
|
||||
const scrollerRect = scroller.getBoundingClientRect();
|
||||
if (imgRect.left < scrollerRect.left) {
|
||||
scroller.scrollBy({left: imgRect.left - scrollerRect.left});
|
||||
} else if (imgRect.right > scrollerRect.right) {
|
||||
scroller.scrollBy({left: imgRect.right - scrollerRect.right});
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
}(jQuery, _));</file>
|
||||
<file javascript_app="gallery" javascript_location="front" javascript_path="controllers/view" javascript_name="ips.view.note.js" javascript_type="controller" javascript_version="5000074" javascript_position="1000150"><![CDATA[/**
|
||||
}(jQuery, _));]]></file>
|
||||
<file javascript_app="gallery" javascript_location="front" javascript_path="controllers/view" javascript_name="ips.view.note.js" javascript_type="controller" javascript_version="5001302" javascript_position="1000150"><![CDATA[/**
|
||||
* Invision Community
|
||||
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
|
||||
*
|
||||
@@ -1768,7 +2121,7 @@
|
||||
}
|
||||
});
|
||||
}(jQuery, _));]]></file>
|
||||
<file javascript_app="gallery" javascript_location="front" javascript_path="controllers/view" javascript_name="ips.view.notes.js" javascript_type="controller" javascript_version="5000074" javascript_position="1000150"><![CDATA[/**
|
||||
<file javascript_app="gallery" javascript_location="front" javascript_path="controllers/view" javascript_name="ips.view.notes.js" javascript_type="controller" javascript_version="5001302" javascript_position="1000150"><![CDATA[/**
|
||||
* Invision Community
|
||||
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
|
||||
*
|
||||
@@ -1851,8 +2204,8 @@
|
||||
}
|
||||
});
|
||||
}(jQuery, _));]]></file>
|
||||
<file javascript_app="gallery" javascript_location="front" javascript_path="templates" javascript_name="ips.templates.browse.js" javascript_type="template" javascript_version="5000074" javascript_position="1000050">// Empty</file>
|
||||
<file javascript_app="gallery" javascript_location="front" javascript_path="templates" javascript_name="ips.templates.submit.js" javascript_type="template" javascript_version="5000074" javascript_position="1000050"><![CDATA[ips.templates.set('gallery.submit.imageItem', " \
|
||||
<file javascript_app="gallery" javascript_location="front" javascript_path="templates" javascript_name="ips.templates.browse.js" javascript_type="template" javascript_version="5001302" javascript_position="1000050">// Empty</file>
|
||||
<file javascript_app="gallery" javascript_location="front" javascript_path="templates" javascript_name="ips.templates.submit.js" javascript_type="template" javascript_version="5001302" javascript_position="1000050"><![CDATA[ips.templates.set('gallery.submit.imageItem', " \
|
||||
<div class='ipsAttach ipsImageAttach {{#done}}ipsAttach_done{{/done}}' id='{{id}}' data-role='file' data-fileid='{{id}}' data-fullsizeurl='{{imagesrc}}' data-thumbnailurl='{{thumbnail}}' data-isImage='1'>\
|
||||
<ul class='ipsImageAttach_controls'>\
|
||||
<li data-role='insert' {{#insertable}}style='display: none'{{/insertable}}><a href='#' data-action='insertFile' class='ipsAttach_selection' data-ipsTooltip title='{{#lang}}insertIntoPost{{/lang}}'><i class='fa-solid fa-plus'></i></a></li>\
|
||||
@@ -1879,7 +2232,7 @@
|
||||
ips.templates.set('gallery.submit.imageItemWrapper', " \
|
||||
<div class='cGallerySubmit_fileList'>{{{content}}}</div>\
|
||||
");]]></file>
|
||||
<file javascript_app="gallery" javascript_location="front" javascript_path="templates" javascript_name="ips.templates.view.js" javascript_type="template" javascript_version="5000074" javascript_position="1000050"><![CDATA[ips.templates.set('gallery.notes.wrapper', " \
|
||||
<file javascript_app="gallery" javascript_location="front" javascript_path="templates" javascript_name="ips.templates.view.js" javascript_type="template" javascript_version="5001302" javascript_position="1000050"><![CDATA[ips.templates.set('gallery.notes.wrapper', " \
|
||||
<div class='cGalleryNote' data-controller='gallery.front.view.note' data-noteID='{{id}}' data-note=\"{{note}}\" {{#editable}}data-editable{{/editable}} data-posLeft='{{left}}' data-posTop='{{top}}' data-dimWidth='{{width}}' data-dimHeight='{{height}}'>\
|
||||
<div class='cGalleryNote_border'></div>\
|
||||
<div class='cGalleryNote_note' style='display: none'>\
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<language>
|
||||
<app key="gallery" version="5000074">
|
||||
<app key="gallery" version="5001302">
|
||||
<word key="__app_gallery" js="0">Gallery</word>
|
||||
<word key="frontnavigation_gallery" js="0">Gallery</word>
|
||||
<word key="gallery_title" js="0">Gallery</word>
|
||||
@@ -261,6 +261,12 @@
|
||||
<word key="cleaning_up_gallery_images" js="0">Cleaning up Gallery images </word>
|
||||
<word key="gallery_maps_default" js="0">Enable maps by default</word>
|
||||
<word key="gallery_maps_default_desc" js="0">Users can choose whether or not to show a map next to images that have geolocation data embedded into the image. This option controls whether those maps are enabled by default or not, however users can override this preference while submitting their images.</word>
|
||||
<word key="gallery_metadata_none" js="0">Hide all image metadata</word>
|
||||
<word key="gallery_metadata_sensitive" js="0">Hide sensitive metadata</word>
|
||||
<word key="gallery_metadata_sensitive_desc" js="0">Hides sensitive details, such as GPS geolocation data from images taken with mobile phones</word>
|
||||
<word key="gallery_metadata_all" js="0">Show all image metadata</word>
|
||||
<word key="gallery_metadata_desc_gd" js="0"><![CDATA[<strong>Note:</strong> All EXIF data is stripped from the image file itself and stored separately. The above setting determines what metadata will be visible to other users.]]></word>
|
||||
<word key="gallery_metadata_desc_imagick" js="0"><![CDATA[<strong>Note:</strong> EXIF data is stripped from the image file based on <a href='{internal.admin.app=core&module=overview&controller=files&do=imagesettings&searchResult=imagick_strip_exif}'>your image settings</a>. The above setting determines what metadata will be visible to other users.]]></word>
|
||||
<word key="member__gallery_Images" js="0">Gallery</word>
|
||||
<word key="remove_gallery_access" js="0">Allowed to access gallery?</word>
|
||||
<word key="remove_gallery_upload" js="0">Allowed to upload images?</word>
|
||||
@@ -523,6 +529,7 @@
|
||||
<word key="block_albums" js="0">Album Feed</word>
|
||||
<word key="block_albums_desc" js="0">Create a listing of albums</word>
|
||||
<word key="widget_feed_container_gallery_album" js="0">Category</word>
|
||||
<word key="widget_feed_album_empty" js="0">Include empty albums</word>
|
||||
<word key="profile_gallery_album" js="0">Albums</word>
|
||||
<word key="gallery_category_id" js="0">Category</word>
|
||||
<word key="profile_gallery_gallery" js="0">Albums</word>
|
||||
|
||||
@@ -19,6 +19,11 @@
|
||||
"default": "0",
|
||||
"report": "full"
|
||||
},
|
||||
{
|
||||
"key": "gallery_metadata",
|
||||
"default": "1",
|
||||
"report": "none"
|
||||
},
|
||||
{
|
||||
"key": "gallery_new_images_count",
|
||||
"default": "16",
|
||||
|
||||
+714
-614
File diff suppressed because it is too large.
Load diff
@@ -348,5 +348,54 @@
|
||||
"5000071": "5.0.6 Beta 2",
|
||||
"5000072": "5.0.6 Beta 3",
|
||||
"5000073": "5.0.6 Beta 4",
|
||||
"5000074": "5.0.6"
|
||||
"5000074": "5.0.6",
|
||||
"5000075": "5.0.7 Beta 1",
|
||||
"5000076": "5.0.7 Beta 2",
|
||||
"5000077": "5.0.7 Beta 2",
|
||||
"5000078": "5.0.7 Beta 3",
|
||||
"5000079": "5.0.7 Beta 4",
|
||||
"5000080": "5.0.7",
|
||||
"5000081": "5.0.7",
|
||||
"5000082": "5.0.7",
|
||||
"5000800": "5.0.8 Alpha 1",
|
||||
"5000801": "5.0.8 Alpha 2",
|
||||
"5000802": "5.0.8 Beta 1",
|
||||
"5000803": "5.0.8 Beta 2",
|
||||
"5000804": "5.0.8 Beta 3",
|
||||
"5000805": "5.0.8",
|
||||
"5000900": "5.0.9 Beta 1",
|
||||
"5000901": "5.0.9 Beta 1",
|
||||
"5000902": "5.0.9 Beta 1",
|
||||
"5000903": "5.0.9 Beta 2",
|
||||
"5000904": "5.0.9",
|
||||
"5000905": "5.0.9",
|
||||
"5000906": "5.0.10 Beta 1",
|
||||
"5000907": "5.0.10 Beta 1",
|
||||
"5000908": "5.0.10 Beta 1",
|
||||
"5000909": "5.0.10 Beta 1",
|
||||
"5000910": "5.0.10 Beta 2",
|
||||
"5000911": "5.0.10 Beta 3",
|
||||
"5000912": "5.0.10 Beta 4",
|
||||
"5000913": "5.0.10 Beta 4",
|
||||
"5000914": "5.0.10",
|
||||
"5000915": "5.0.10",
|
||||
"5000916": "5.0.10",
|
||||
"5000917": "5.0.10",
|
||||
"5000918": "5.0.10",
|
||||
"5000919": "5.0.10",
|
||||
"5000920": "5.0.10",
|
||||
"5001100": "5.0.11 Beta 1",
|
||||
"5001101": "5.0.11 Beta 1",
|
||||
"5001102": "5.0.11 Beta 2",
|
||||
"5001103": "5.0.11",
|
||||
"5001104": "5.0.11",
|
||||
"5001105": "5.0.11",
|
||||
"5001200": "5.0.12 Beta 1",
|
||||
"5001201": "5.0.12 Beta 2",
|
||||
"5001202": "5.0.12 Beta 3",
|
||||
"5001203": "5.0.12",
|
||||
"5001204": "5.0.12",
|
||||
"5001300": "5.0.13 Beta 1",
|
||||
"5001301": "5.0.13 Beta 2",
|
||||
"5001302": "5.0.13"
|
||||
}
|
||||
@@ -13,7 +13,11 @@ namespace IPS\gallery\extensions\core\AdvertisementLocations;
|
||||
|
||||
/* To prevent PHP errors (extending class does not exist) revealing path */
|
||||
|
||||
use IPS\core\Advertisement;
|
||||
use IPS\Extensions\AdvertisementLocationsAbstract;
|
||||
use IPS\gallery\Image;
|
||||
use IPS\Request;
|
||||
use OutOfRangeException;
|
||||
use function defined;
|
||||
|
||||
if ( !defined( '\IPS\SUITE_UNIQUE_KEY' ) )
|
||||
@@ -35,7 +39,7 @@ class ImageLightbox extends AdvertisementLocationsAbstract
|
||||
*/
|
||||
public function getSettings( array $settings ): array
|
||||
{
|
||||
return array( 'locations' => array( 'ad_image_lightbox' => array() ), 'settings' => array() );
|
||||
return array( 'locations' => array( 'ad_image_lightbox' => array( 'IPS_gallery_Category' ) ), 'settings' => array() );
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -48,4 +52,28 @@ class ImageLightbox extends AdvertisementLocationsAbstract
|
||||
{
|
||||
return array();
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if the advertisement can be displayed, based on settings
|
||||
*
|
||||
* @param Advertisement $advertisement
|
||||
* @param string $location
|
||||
* @return bool
|
||||
*/
|
||||
public function canShow( Advertisement $advertisement, string $location ) : bool
|
||||
{
|
||||
if( isset( $advertisement->_additional_settings['IPS_gallery_Category'] ) and is_array( $advertisement->_additional_settings['IPS_gallery_Category'] ) )
|
||||
{
|
||||
try
|
||||
{
|
||||
return in_array( Image::load( Request::i()->id )->category_id, $advertisement->_additional_settings['IPS_gallery_Category'] );
|
||||
}
|
||||
catch( OutOfRangeException )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
@@ -14,6 +14,7 @@ namespace IPS\gallery\extensions\core\ContentRouter;
|
||||
/* To prevent PHP errors (extending class does not exist) revealing path */
|
||||
|
||||
use IPS\Application\Module;
|
||||
use IPS\Content\Filter;
|
||||
use IPS\Extensions\ContentRouterAbstract;
|
||||
use IPS\gallery\Album\Item;
|
||||
use IPS\gallery\Application;
|
||||
@@ -81,7 +82,7 @@ class Gallery extends ContentRouterAbstract
|
||||
{
|
||||
if( !in_array( $className, $this->classes ) or $className == 'IPS\gallery\Album\Item' )
|
||||
{
|
||||
return new Content( $className, $url, $where );
|
||||
return new Content( $className, $url, $where, null, Filter::FILTER_AUTOMATIC, 'read' );
|
||||
}
|
||||
|
||||
Output::i()->jsFiles = array_merge( Output::i()->jsFiles, Output::i()->js('front_browse.js', 'gallery' ) );
|
||||
@@ -89,7 +90,7 @@ class Gallery extends ContentRouterAbstract
|
||||
|
||||
Application::outputCss();
|
||||
|
||||
$table = new Table( $className, $url, $where, NULL, FALSE );
|
||||
$table = new Table( $className, $url, $where, NULL, Filter::FILTER_AUTOMATIC, 'read' );
|
||||
$table->tableTemplate = array( Theme::i()->getTemplate( 'browse', 'gallery' ), 'imageTable' );
|
||||
|
||||
/* Get rows template */
|
||||
|
||||
@@ -13,6 +13,7 @@ namespace IPS\gallery\extensions\core\EditorLocations;
|
||||
|
||||
/* To prevent PHP errors (extending class does not exist) revealing path */
|
||||
|
||||
use Exception;
|
||||
use InvalidArgumentException;
|
||||
use IPS\Content;
|
||||
use IPS\Db;
|
||||
@@ -85,7 +86,14 @@ class Albums extends EditorLocationsAbstract
|
||||
*/
|
||||
public function attachmentLookup( int $id1=NULL, int $id2=NULL, string $id3=NULL ): Model|Content|Url|Member|null
|
||||
{
|
||||
return Album::load( $id1 );
|
||||
try
|
||||
{
|
||||
return Album::load( $id1 );
|
||||
}
|
||||
catch( Exception $e )
|
||||
{
|
||||
throw new LogicException;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -159,7 +159,7 @@ class Categories extends EditorLocationsAbstract
|
||||
}
|
||||
catch( InvalidArgumentException $e )
|
||||
{
|
||||
if( $callback[1] == 'parseStatic' AND $e->getcode() == 103014 )
|
||||
if( is_array( $callback ) and $callback[1] == 'parseStatic' AND $e->getcode() == 103014 )
|
||||
{
|
||||
$rebuilt = preg_replace( "#\[/?([^\]]+?)\]#", '', $word['word_custom'] );
|
||||
}
|
||||
|
||||
@@ -90,10 +90,10 @@ class Gallery extends GroupFormAbstract
|
||||
if( $group->g_id != Settings::i()->guest_group )
|
||||
{
|
||||
$group->g_create_albums = (int) $values['g_create_albums'];
|
||||
$group->g_create_albums_private = (int) $values['g_create_albums_private'];
|
||||
$group->g_create_albums_fo = (int) $values['g_create_albums_fo'];
|
||||
$group->g_album_limit = (int) $values['g_album_limit'];
|
||||
$group->g_img_album_limit = (int) $values['g_img_album_limit'];
|
||||
$group->g_create_albums_private = $values['g_create_albums'] ? (int) $values['g_create_albums_private'] : 0;
|
||||
$group->g_create_albums_fo = $values['g_create_albums'] ? (int) $values['g_create_albums_fo'] : 0;
|
||||
$group->g_album_limit = $values['g_create_albums'] ? (int) $values['g_album_limit'] : 0;
|
||||
$group->g_img_album_limit = $values['g_create_albums'] ? (int) $values['g_img_album_limit'] : 0;
|
||||
}
|
||||
|
||||
$group->g_download_original = (int) $values['g_download_original'];
|
||||
|
||||
@@ -36,6 +36,7 @@ try
|
||||
Output::i()->sendHeader( "Content-Length: " . $file->filesize() );
|
||||
Output::i()->sendHeader( "Content-Security-Policy: default-src 'none'; sandbox" );
|
||||
Output::i()->sendHeader( "X-Content-Security-Policy: default-src 'none'; sandbox" );
|
||||
Output::i()->sendHeader( "Cross-Origin-Opener-Policy: same-origin" );
|
||||
|
||||
$file->printFile();
|
||||
exit;
|
||||
|
||||
@@ -17,6 +17,7 @@ use IPS\Db;
|
||||
use IPS\Dispatcher;
|
||||
use IPS\Dispatcher\Controller;
|
||||
use IPS\File;
|
||||
use IPS\gallery\Image;
|
||||
use IPS\GeoLocation;
|
||||
use IPS\Helpers\Form;
|
||||
use IPS\Helpers\Form\CheckboxSet;
|
||||
@@ -126,10 +127,25 @@ class settings extends Controller
|
||||
|
||||
$form->addHeader( 'gallery_options' );
|
||||
$form->add( new YesNo( 'gallery_rss_enabled', SettingsClass::i()->gallery_rss_enabled ) );
|
||||
$form->add( new Radio( 'gallery_metadata', SettingsClass::i()->gallery_metadata, false, [
|
||||
'options' => [
|
||||
Image::IMAGE_METADATA_NONE => 'gallery_metadata_none',
|
||||
Image::IMAGE_METADATA_ALL => 'gallery_metadata_all',
|
||||
Image::IMAGE_METADATA_NOSENSITIVE => 'gallery_metadata_sensitive'
|
||||
],
|
||||
'descriptions' => [
|
||||
Image::IMAGE_METADATA_NOSENSITIVE => 'gallery_metadata_sensitive_desc'
|
||||
],
|
||||
'toggles' => [
|
||||
Image::IMAGE_METADATA_ALL => [ 'gallery_maps_default' ]
|
||||
]
|
||||
] ) );
|
||||
|
||||
Member::loggedIn()->language()->words['gallery_metadata_desc'] = Member::loggedIn()->language()->addToStack( SettingsClass::i()->image_suite == 'imagemagick' ? 'gallery_metadata_desc_imagick' : 'gallery_metadata_desc_gd' );
|
||||
|
||||
if( GeoLocation::enabled() )
|
||||
{
|
||||
$form->add( new YesNo( 'gallery_maps_default', SettingsClass::i()->gallery_maps_default ) );
|
||||
$form->add( new YesNo( 'gallery_maps_default', SettingsClass::i()->gallery_maps_default, id: 'gallery_maps_default' ) );
|
||||
}
|
||||
|
||||
$form->add( new YesNo( 'gallery_nsfw', SettingsClass::i()->gallery_nsfw ) );
|
||||
@@ -190,6 +206,7 @@ class settings extends Controller
|
||||
'gallery_recent_updated_albums_count' => $values['gallery_recent_updated_albums_count'],
|
||||
'gallery_show_new_images' => $values['gallery_show_new_images'],
|
||||
'gallery_new_images_count' => $values['gallery_new_images_count'],
|
||||
'gallery_metadata' => $values['gallery_metadata']
|
||||
) );
|
||||
|
||||
Session::i()->log( 'acplogs__gallery_settings' );
|
||||
|
||||
@@ -374,7 +374,7 @@ class browse extends Controller
|
||||
}
|
||||
|
||||
/* Data Layer Page Context */
|
||||
if ( Settings::i()->core_datalayer_enabled AND !Request::i()->isAjax() )
|
||||
if ( DataLayer::enabled() AND !Request::i()->isAjax() )
|
||||
{
|
||||
foreach ( $category->getDataLayerProperties() as $property => $value )
|
||||
{
|
||||
@@ -387,6 +387,7 @@ class browse extends Controller
|
||||
$category->updateViews();
|
||||
}
|
||||
|
||||
Output::i()->bodyAttributes['contentClass'] = Category::class;
|
||||
Output::i()->contextualSearchOptions[ Member::loggedIn()->language()->addToStack( 'search_contextual_item_categories' ) ] = array( 'type' => 'gallery_image', 'nodes' => $category->_id );
|
||||
Output::i()->output = Theme::i()->getTemplate( 'browse' )->category( $category, $albums, (string) $table );
|
||||
}
|
||||
@@ -523,6 +524,7 @@ class browse extends Controller
|
||||
$albumItem->updateViews();
|
||||
}
|
||||
|
||||
Output::i()->bodyAttributes['contentClass'] = Album::class;
|
||||
Output::i()->breadcrumb[] = array( NULL, $album->_title );
|
||||
Output::i()->output = Theme::i()->getTemplate( 'browse' )->album( $album, (string) $table, $commentsAndReviews );
|
||||
}
|
||||
|
||||
@@ -19,6 +19,7 @@ use DomainException;
|
||||
use Exception;
|
||||
use IPS\Content\Controller;
|
||||
use IPS\Content\Item;
|
||||
use IPS\core\DataLayer;
|
||||
use IPS\core\FrontNavigation;
|
||||
use IPS\DateTime;
|
||||
use IPS\Db;
|
||||
@@ -189,7 +190,7 @@ class view extends Controller
|
||||
|
||||
if ( count( $tabs ) > 1 )
|
||||
{
|
||||
$commentsAndReviews = count( $tabs ) ? Theme::i()->getTemplate( 'global', 'core' )->tabs( $tabs, $tab, $activeTabContents, Request::i()->lightbox ? $this->image->url()->setQueryString( 'lightbox', 1 ) : $this->image->url(), 'tab', FALSE, FALSE, Request::i()->lightbox ? 'ipsTabs--small ipsTabs--stretch' : '' ) : NULL;
|
||||
$commentsAndReviews = count( $tabs ) ? Theme::i()->getTemplate( 'global', 'core' )->tabs( $tabs, $tab, $activeTabContents, Request::i()->lightbox ? $this->image->url()->setQueryString( 'lightbox', 1 ) : $this->image->url(), 'tab', FALSE, FALSE, Request::i()->lightbox ? 'ipsTabs--small ipsTabs--stretch' : '', forceURLUpdate: true ) : NULL;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -343,19 +344,54 @@ class view extends Controller
|
||||
/* Display */
|
||||
if( Request::i()->isAjax() && isset( Request::i()->browse ) )
|
||||
{
|
||||
/* Set navigation and title */
|
||||
$this->_setBreadcrumbAndTitle( $this->image, FALSE );
|
||||
Output::i()->buildMetaTags();
|
||||
$return = array(
|
||||
'title' => htmlspecialchars( $this->image->mapped('title'), ENT_DISALLOWED | ENT_QUOTES, 'UTF-8', FALSE ),
|
||||
'title' => Output::i()->getTitle( Output::i()->title ),
|
||||
'breadcrumb_top' => Theme::i()->getTemplate( 'global', 'core' )->breadcrumb( "top" ),
|
||||
'breadcrumb_bottom' => Theme::i()->getTemplate( 'global', 'core' )->breadcrumb( "bottom" ),
|
||||
'breadcrumb_mobile' => Theme::i()->getTemplate( 'global', 'core' )->breadcrumb( "mobile" ),
|
||||
'breadcrumb_off_canvas' => Theme::i()->getTemplate( 'global', 'core' )->mobileFooterNav(),
|
||||
'image' => Theme::i()->getTemplate( 'view' )->imageFrame( $this->image ),
|
||||
'info' => Theme::i()->getTemplate( 'view' )->imageInfo( $this->image )
|
||||
'info' => Theme::i()->getTemplate( 'view' )->imageInfo( $this->image ),
|
||||
'url' => $this->image->url(),
|
||||
'id' => $this->image->id,
|
||||
'images_prev' => [],
|
||||
'images_next' => [],
|
||||
'image_link_current' => Theme::i()->getTemplate( 'view' )->imageCarouselLink( $this->image )
|
||||
);
|
||||
|
||||
/* Add the prev and next images to make sure the carousel stays updated */
|
||||
if ( $this->image->hasPreviousOrNext() )
|
||||
{
|
||||
$prev = array_reverse( array_slice( $this->image->fetchNextOrPreviousImages( 9, 'ASC' ), 0, 4 ) );
|
||||
$next = $this->image->fetchNextOrPreviousImages( 9, 'DESC' );
|
||||
$counter = 1;
|
||||
foreach ( $prev as $prevImage )
|
||||
{
|
||||
$return['images_prev'][] = [ 'id' => (int) $prevImage->id, 'content' => Theme::i()->getTemplate( 'view' )->imageCarouselLink( $prevImage ) ];
|
||||
$counter++;
|
||||
}
|
||||
|
||||
foreach ( $next as $nextImage )
|
||||
{
|
||||
$return['images_next'][] = [ 'id' => (int) $nextImage->id, 'content' => Theme::i()->getTemplate( 'view' )->imageCarouselLink( $nextImage ) ];
|
||||
if ( $counter >= 10 )
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if( $this->image->directContainer()->allow_comments )
|
||||
{
|
||||
$return['comments'] = $commentsAndReviews;
|
||||
$return['comments'] = Theme::i()->getTemplate( 'view' )->imageComments( $this->image, $commentsAndReviews );
|
||||
}
|
||||
|
||||
/* Data Layer Properties */
|
||||
if ( Settings::i()->core_datalayer_enabled )
|
||||
if ( DataLayer::enabled() )
|
||||
{
|
||||
$return['dataLayer'] = $this->image->getDataLayerProperties();
|
||||
}
|
||||
@@ -439,6 +475,7 @@ class view extends Controller
|
||||
|
||||
Output::i()->sendHeader( "Content-Security-Policy: default-src 'none'; sandbox" );
|
||||
Output::i()->sendHeader( "X-Content-Security-Policy: default-src 'none'; sandbox" );
|
||||
Output::i()->sendHeader( "Cross-Origin-Opener-Policy: same-origin" );
|
||||
|
||||
if( $image !== NULL )
|
||||
{
|
||||
|
||||
@@ -1,170 +1,5 @@
|
||||
{
|
||||
"1": {
|
||||
"method": "addColumn",
|
||||
"params": [
|
||||
"core_groups",
|
||||
{
|
||||
"name": "g_create_albums",
|
||||
"type": "TINYINT",
|
||||
"length": 10,
|
||||
"null": false,
|
||||
"default": 0,
|
||||
"comment": "Can create albums?",
|
||||
"unsigned": true
|
||||
}
|
||||
]
|
||||
},
|
||||
"2": {
|
||||
"method": "addColumn",
|
||||
"params": [
|
||||
"core_groups",
|
||||
{
|
||||
"name": "g_create_albums_private",
|
||||
"type": "TINYINT",
|
||||
"length": 10,
|
||||
"null": false,
|
||||
"default": 0,
|
||||
"comment": "Can create private albums?",
|
||||
"unsigned": true
|
||||
}
|
||||
]
|
||||
},
|
||||
"3": {
|
||||
"method": "addColumn",
|
||||
"params": [
|
||||
"core_groups",
|
||||
{
|
||||
"name": "g_create_albums_fo",
|
||||
"type": "TINYINT",
|
||||
"length": 10,
|
||||
"null": false,
|
||||
"default": 0,
|
||||
"comment": "Can create restricted albums?",
|
||||
"unsigned": true
|
||||
}
|
||||
]
|
||||
},
|
||||
"4": {
|
||||
"method": "addColumn",
|
||||
"params": [
|
||||
"core_groups",
|
||||
{
|
||||
"name": "g_album_limit",
|
||||
"type": "INT",
|
||||
"length": 10,
|
||||
"null": false,
|
||||
"default": 0,
|
||||
"comment": "Maximum number of albums",
|
||||
"unsigned": true
|
||||
}
|
||||
]
|
||||
},
|
||||
"5": {
|
||||
"method": "addColumn",
|
||||
"params": [
|
||||
"core_groups",
|
||||
{
|
||||
"name": "g_img_album_limit",
|
||||
"type": "INT",
|
||||
"length": 1,
|
||||
"null": false,
|
||||
"default": 0,
|
||||
"comment": "Maximum number of images per album",
|
||||
"unsigned": true
|
||||
}
|
||||
]
|
||||
},
|
||||
"7": {
|
||||
"method": "addColumn",
|
||||
"params": [
|
||||
"core_groups",
|
||||
{
|
||||
"name": "g_movies",
|
||||
"type": "TINYINT",
|
||||
"length": 1,
|
||||
"null": false,
|
||||
"default": 0,
|
||||
"comment": "Can upload movies?",
|
||||
"unsigned": true
|
||||
}
|
||||
]
|
||||
},
|
||||
"8": {
|
||||
"method": "addColumn",
|
||||
"params": [
|
||||
"core_groups",
|
||||
{
|
||||
"name": "g_movie_size",
|
||||
"type": "INT",
|
||||
"length": 1,
|
||||
"null": false,
|
||||
"default": 0,
|
||||
"comment": "Maximum size of movies",
|
||||
"unsigned": true
|
||||
}
|
||||
]
|
||||
},
|
||||
"9": {
|
||||
"method": "addColumn",
|
||||
"params": [
|
||||
"core_groups",
|
||||
{
|
||||
"name": "g_max_upload",
|
||||
"type": "INT",
|
||||
"length": 1,
|
||||
"null": false,
|
||||
"default": 0,
|
||||
"comment": "Maximum image upload size",
|
||||
"unsigned": true
|
||||
}
|
||||
]
|
||||
},
|
||||
"10": {
|
||||
"method": "addColumn",
|
||||
"params": [
|
||||
"core_groups",
|
||||
{
|
||||
"name": "g_max_transfer",
|
||||
"type": "INT",
|
||||
"length": 1,
|
||||
"null": false,
|
||||
"default": 0,
|
||||
"comment": "Maximum bandwidth consumption",
|
||||
"unsigned": true
|
||||
}
|
||||
]
|
||||
},
|
||||
"11": {
|
||||
"method": "addColumn",
|
||||
"params": [
|
||||
"core_groups",
|
||||
{
|
||||
"name": "g_max_views",
|
||||
"type": "INT",
|
||||
"length": 1,
|
||||
"null": false,
|
||||
"default": 0,
|
||||
"comment": "Maximum daily image views",
|
||||
"unsigned": true
|
||||
}
|
||||
]
|
||||
},
|
||||
"12": {
|
||||
"method": "addColumn",
|
||||
"params": [
|
||||
"core_groups",
|
||||
{
|
||||
"name": "g_download_original",
|
||||
"type": "TINYINT",
|
||||
"length": 1,
|
||||
"null": false,
|
||||
"default": 0,
|
||||
"comment": "Can this group download the original image?",
|
||||
"unsigned": true
|
||||
}
|
||||
]
|
||||
},
|
||||
"13": {
|
||||
"method": "insert",
|
||||
"params": [
|
||||
"core_permission_index",
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"id": 5000075,
|
||||
"name": "5.0.7 Beta 1",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": true,
|
||||
"themeeditor": false,
|
||||
"javascript": true,
|
||||
"emailTemplates": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"files": {
|
||||
"added": [],
|
||||
"edited": [
|
||||
"gallery\/front\/controllers\/view\/ips.view.image.js"
|
||||
],
|
||||
"removed": []
|
||||
},
|
||||
"orders": {
|
||||
"added": [],
|
||||
"edited": [],
|
||||
"removed": []
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
{
|
||||
"html": {
|
||||
"added": [
|
||||
"front\/view\/imageComments"
|
||||
],
|
||||
"edited": [
|
||||
"front\/browse\/album",
|
||||
"front\/browse\/categories",
|
||||
"front\/browse\/category",
|
||||
"front\/global\/approvalQueueItem",
|
||||
"front\/view\/image",
|
||||
"front\/view\/imageFrame",
|
||||
"front\/view\/imageInfo",
|
||||
"front\/view\/imageLightboxFrame"
|
||||
],
|
||||
"removed": []
|
||||
},
|
||||
"css": {
|
||||
"added": [],
|
||||
"edited": [],
|
||||
"removed": []
|
||||
},
|
||||
"resources": {
|
||||
"added": [],
|
||||
"edited": [],
|
||||
"removed": []
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"id": 5000076,
|
||||
"name": "5.0.7 Beta 2",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeeditor": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"id": 5000077,
|
||||
"name": "5.0.7 Beta 2",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeeditor": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"id": 5000078,
|
||||
"name": "5.0.7 Beta 3",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeeditor": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"id": 5000079,
|
||||
"name": "5.0.7 Beta 4",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeeditor": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"id": 5000080,
|
||||
"name": "5.0.7",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeeditor": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"id": 5000081,
|
||||
"name": "5.0.7",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeeditor": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"id": 5000082,
|
||||
"name": "5.0.7",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeeditor": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"id": 5000800,
|
||||
"name": "5.0.8 Alpha 1",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": true,
|
||||
"themeeditor": false,
|
||||
"javascript": true,
|
||||
"emailTemplates": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"files": {
|
||||
"added": [],
|
||||
"edited": [
|
||||
"gallery\/front\/controllers\/view\/ips.view.image.js"
|
||||
],
|
||||
"removed": []
|
||||
},
|
||||
"orders": {
|
||||
"added": [],
|
||||
"edited": [],
|
||||
"removed": []
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
{
|
||||
"html": {
|
||||
"added": [],
|
||||
"edited": [
|
||||
"front\/browse\/categories",
|
||||
"front\/browse\/categoryCarousel",
|
||||
"front\/browse\/categoryGrid",
|
||||
"front\/browse\/categoryRow",
|
||||
"front\/browse\/index",
|
||||
"front\/browse\/tableRowsThumbs",
|
||||
"front\/global\/manageFollowNodeRow",
|
||||
"front\/widgets\/albums",
|
||||
"front\/widgets\/imageRow",
|
||||
"front\/widgets\/recentComments",
|
||||
"front\/widgets\/recentImageReviews"
|
||||
],
|
||||
"removed": []
|
||||
},
|
||||
"css": {
|
||||
"added": [],
|
||||
"edited": [],
|
||||
"removed": []
|
||||
},
|
||||
"resources": {
|
||||
"added": [],
|
||||
"edited": [],
|
||||
"removed": []
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"id": 5000801,
|
||||
"name": "5.0.8 Alpha 2",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": true,
|
||||
"themeeditor": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"html": {
|
||||
"added": [],
|
||||
"edited": [
|
||||
"front\/browse\/imageTable",
|
||||
"front\/browse\/tableRowsRows",
|
||||
"front\/widgets\/imageRow"
|
||||
],
|
||||
"removed": []
|
||||
},
|
||||
"css": {
|
||||
"added": [],
|
||||
"edited": [],
|
||||
"removed": []
|
||||
},
|
||||
"resources": {
|
||||
"added": [],
|
||||
"edited": [],
|
||||
"removed": []
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"id": 5000802,
|
||||
"name": "5.0.8 Beta 1",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeeditor": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"id": 5000803,
|
||||
"name": "5.0.8 Beta 2",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": true,
|
||||
"themeeditor": false,
|
||||
"javascript": true,
|
||||
"emailTemplates": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"files": {
|
||||
"added": [],
|
||||
"edited": [
|
||||
"gallery\/front\/controllers\/view\/ips.view.image.js"
|
||||
],
|
||||
"removed": []
|
||||
},
|
||||
"orders": {
|
||||
"added": [],
|
||||
"edited": [],
|
||||
"removed": []
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"html": {
|
||||
"added": [
|
||||
"front\/view\/imageCarouselLink",
|
||||
"front\/view\/imageCarouselLinks"
|
||||
],
|
||||
"edited": [
|
||||
"front\/view\/image"
|
||||
],
|
||||
"removed": []
|
||||
},
|
||||
"css": {
|
||||
"added": [],
|
||||
"edited": [],
|
||||
"removed": []
|
||||
},
|
||||
"resources": {
|
||||
"added": [],
|
||||
"edited": [],
|
||||
"removed": []
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"id": 5000804,
|
||||
"name": "5.0.8 Beta 3",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeeditor": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"id": 5000805,
|
||||
"name": "5.0.8",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeeditor": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"id": 5000900,
|
||||
"name": "5.0.9 Beta 1",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": true,
|
||||
"theme": true,
|
||||
"themeeditor": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"normal": {
|
||||
"added": [
|
||||
"widget_feed_album_empty"
|
||||
],
|
||||
"edited": [],
|
||||
"removed": []
|
||||
},
|
||||
"js": {
|
||||
"added": [],
|
||||
"edited": [],
|
||||
"removed": []
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
{
|
||||
"html": {
|
||||
"added": [],
|
||||
"edited": [
|
||||
"front\/browse\/noImages",
|
||||
"front\/widgets\/albums"
|
||||
],
|
||||
"removed": []
|
||||
},
|
||||
"css": {
|
||||
"added": [],
|
||||
"edited": [],
|
||||
"removed": []
|
||||
},
|
||||
"resources": {
|
||||
"added": [],
|
||||
"edited": [],
|
||||
"removed": []
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"id": 5000901,
|
||||
"name": "5.0.9 Beta 1",
|
||||
"steps": {
|
||||
"queries": true,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeeditor": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"id": 5000902,
|
||||
"name": "5.0.9 Beta 1",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeeditor": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"id": 5000903,
|
||||
"name": "5.0.9 Beta 2",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeeditor": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"id": 5000904,
|
||||
"name": "5.0.9",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeeditor": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"id": 5000905,
|
||||
"name": "5.0.9",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeeditor": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"id": 5000906,
|
||||
"name": "5.0.10 Beta 1",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": true,
|
||||
"themeeditor": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
{
|
||||
"html": {
|
||||
"added": [],
|
||||
"edited": [
|
||||
"front\/browse\/album",
|
||||
"front\/browse\/categoryCarousel",
|
||||
"front\/browse\/categoryRow",
|
||||
"front\/global\/manageFollowNodeRow",
|
||||
"front\/widgets\/albums",
|
||||
"front\/widgets\/imageRow",
|
||||
"front\/widgets\/recentComments",
|
||||
"front\/widgets\/recentImageReviews"
|
||||
],
|
||||
"removed": []
|
||||
},
|
||||
"css": {
|
||||
"added": [],
|
||||
"edited": [],
|
||||
"removed": []
|
||||
},
|
||||
"resources": {
|
||||
"added": [],
|
||||
"edited": [],
|
||||
"removed": []
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"id": 5000907,
|
||||
"name": "5.0.10 Beta 1",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeeditor": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"id": 5000908,
|
||||
"name": "5.0.10 Beta 1",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeeditor": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"id": 5000909,
|
||||
"name": "5.0.10 Beta 1",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeeditor": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"id": 5000910,
|
||||
"name": "5.0.10 Beta 2",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeeditor": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"id": 5000911,
|
||||
"name": "5.0.10 Beta 3",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeeditor": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"id": 5000912,
|
||||
"name": "5.0.10 Beta 4",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeeditor": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"id": 5000913,
|
||||
"name": "5.0.10 Beta 4",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeeditor": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"id": 5000914,
|
||||
"name": "5.0.10",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeeditor": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"id": 5000915,
|
||||
"name": "5.0.10",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeeditor": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"id": 5000916,
|
||||
"name": "5.0.10",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeeditor": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"id": 5000917,
|
||||
"name": "5.0.10",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeeditor": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"id": 5000918,
|
||||
"name": "5.0.10",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeeditor": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"id": 5000919,
|
||||
"name": "5.0.10",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeeditor": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"id": 5000920,
|
||||
"name": "5.0.10",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeeditor": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"id": 5001100,
|
||||
"name": "5.0.11 Beta 1",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeeditor": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"added": [
|
||||
"app=gallery&module=gallery&controller=settings&searchResult=form_gallery_metadata"
|
||||
],
|
||||
"edited": [],
|
||||
"removed": []
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"id": 5001101,
|
||||
"name": "5.0.11 Beta 1",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": true,
|
||||
"theme": true,
|
||||
"themeeditor": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"acpSearchKeywords": true,
|
||||
"settings": true,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"normal": {
|
||||
"added": [
|
||||
"gallery_metadata_none",
|
||||
"gallery_metadata_sensitive",
|
||||
"gallery_metadata_sensitive_desc",
|
||||
"gallery_metadata_all",
|
||||
"gallery_metadata_desc_gd",
|
||||
"gallery_metadata_desc_imagick"
|
||||
],
|
||||
"edited": [],
|
||||
"removed": []
|
||||
},
|
||||
"js": {
|
||||
"added": [],
|
||||
"edited": [],
|
||||
"removed": []
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"added": [
|
||||
"gallery_metadata"
|
||||
],
|
||||
"edited": [],
|
||||
"removed": []
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"html": {
|
||||
"added": [],
|
||||
"edited": [
|
||||
"front\/browse\/album",
|
||||
"front\/view\/imageInfo",
|
||||
"front\/widgets\/albums",
|
||||
"front\/widgets\/imageRow",
|
||||
"front\/widgets\/recentComments",
|
||||
"front\/widgets\/recentImageReviews"
|
||||
],
|
||||
"removed": []
|
||||
},
|
||||
"css": {
|
||||
"added": [],
|
||||
"edited": [],
|
||||
"removed": []
|
||||
},
|
||||
"resources": {
|
||||
"added": [],
|
||||
"edited": [],
|
||||
"removed": []
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"id": 5001102,
|
||||
"name": "5.0.11 Beta 2",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeeditor": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"id": 5001103,
|
||||
"name": "5.0.11",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeeditor": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"id": 5001104,
|
||||
"name": "5.0.11",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeeditor": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"id": 5001105,
|
||||
"name": "5.0.11",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeeditor": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"id": 5001200,
|
||||
"name": "5.0.12 Beta 1",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": true,
|
||||
"themeeditor": false,
|
||||
"javascript": true,
|
||||
"emailTemplates": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"files": {
|
||||
"added": [],
|
||||
"edited": [
|
||||
"gallery\/front\/controllers\/submit\/ips.submit.wrapper.js"
|
||||
],
|
||||
"removed": []
|
||||
},
|
||||
"orders": {
|
||||
"added": [],
|
||||
"edited": [],
|
||||
"removed": []
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
{
|
||||
"html": {
|
||||
"added": [],
|
||||
"edited": [
|
||||
"front\/browse\/albumReviews",
|
||||
"front\/browse\/categoriesSidebar",
|
||||
"front\/browse\/imageTable",
|
||||
"front\/forms\/commentUnavailable",
|
||||
"front\/forms\/reviewTemplate",
|
||||
"front\/global\/approvalQueueItem",
|
||||
"front\/global\/comment",
|
||||
"front\/global\/commentContainer",
|
||||
"front\/global\/review",
|
||||
"front\/global\/searchResultImageSnippet",
|
||||
"front\/submit\/createAlbum",
|
||||
"front\/submit\/wrapper",
|
||||
"front\/view\/image",
|
||||
"front\/view\/imageFrame",
|
||||
"front\/view\/imageInfo",
|
||||
"front\/view\/imageLightboxFrame",
|
||||
"front\/view\/imageLightboxInfo",
|
||||
"front\/view\/reviews"
|
||||
],
|
||||
"removed": []
|
||||
},
|
||||
"css": {
|
||||
"added": [],
|
||||
"edited": [],
|
||||
"removed": []
|
||||
},
|
||||
"resources": {
|
||||
"added": [],
|
||||
"edited": [],
|
||||
"removed": []
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"id": 5001201,
|
||||
"name": "5.0.12 Beta 2",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeeditor": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"id": 5001202,
|
||||
"name": "5.0.12 Beta 3",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeeditor": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"id": 5001203,
|
||||
"name": "5.0.12",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeeditor": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"id": 5001204,
|
||||
"name": "5.0.12",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeeditor": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"id": 5001300,
|
||||
"name": "5.0.13 Beta 1",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": true,
|
||||
"themeeditor": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
{
|
||||
"html": {
|
||||
"added": [],
|
||||
"edited": [
|
||||
"front\/browse\/imageTable",
|
||||
"front\/global\/approvalQueueItem",
|
||||
"front\/global\/comment",
|
||||
"front\/global\/commentContainer",
|
||||
"front\/global\/review",
|
||||
"front\/submit\/createAlbum",
|
||||
"front\/submit\/wrapper",
|
||||
"front\/view\/imageFrame",
|
||||
"front\/view\/imageInfo",
|
||||
"front\/view\/imageLightboxFrame",
|
||||
"front\/view\/imageLightboxInfo"
|
||||
],
|
||||
"removed": []
|
||||
},
|
||||
"css": {
|
||||
"added": [],
|
||||
"edited": [],
|
||||
"removed": []
|
||||
},
|
||||
"resources": {
|
||||
"added": [],
|
||||
"edited": [],
|
||||
"removed": []
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"id": 5001301,
|
||||
"name": "5.0.13 Beta 2",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeeditor": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"id": 5001302,
|
||||
"name": "5.0.13",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeeditor": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -14,6 +14,7 @@ namespace IPS\gallery\Album;
|
||||
/* To prevent PHP errors (extending class does not exist) revealing path */
|
||||
|
||||
use BadMethodCallException;
|
||||
use InvalidArgumentException;
|
||||
use IPS\Content\ContentMenuLink;
|
||||
use IPS\Content\Embeddable;
|
||||
use IPS\Content\Filter;
|
||||
@@ -38,12 +39,14 @@ use IPS\gallery\Category;
|
||||
use IPS\gallery\Image;
|
||||
use IPS\Helpers\Badge;
|
||||
use IPS\Helpers\Menu;
|
||||
use IPS\Http\Url;
|
||||
use IPS\Member;
|
||||
use IPS\Node\Model;
|
||||
use IPS\Output;
|
||||
use IPS\Patterns\ActiveRecordIterator;
|
||||
use IPS\Settings;
|
||||
use IPS\Theme;
|
||||
use OutOfRangeException;
|
||||
use function array_slice;
|
||||
use function count;
|
||||
use function defined;
|
||||
@@ -612,6 +615,28 @@ Filter
|
||||
return 'album_id';
|
||||
}
|
||||
|
||||
/**
|
||||
* Load record based on a URL
|
||||
*
|
||||
* @param Url $url URL to load from
|
||||
* @return mixed
|
||||
* @throws InvalidArgumentException
|
||||
* @throws OutOfRangeException
|
||||
*/
|
||||
public static function loadFromUrl( Url $url ): mixed
|
||||
{
|
||||
if ( isset( $url->queryString['album'] ) )
|
||||
{
|
||||
return static::load( $url->queryString['album'] );
|
||||
}
|
||||
if ( isset( $url->hiddenQueryString['album'] ) )
|
||||
{
|
||||
return static::load( $url->hiddenQueryString['album'] );
|
||||
}
|
||||
|
||||
return parent::loadFromUrl( $url );
|
||||
}
|
||||
|
||||
/**
|
||||
* Get content for embed
|
||||
*
|
||||
|
||||
@@ -374,7 +374,10 @@ class Category extends Model implements Permissions
|
||||
|
||||
$form->add( new Select( 'category_sort_options_img', $this->sort_options_img ?: 'updated', FALSE, array( 'options' => array( 'updated' => 'sort_updated', 'last_comment' => 'sort_last_comment', 'title' => 'album_sort_caption', 'rating' => 'sort_rating', 'date' => 'sort_date', 'num_comments' => 'sort_num_comments', 'num_reviews' => 'sort_num_reviews', 'views' => 'sort_views' ) ), NULL, NULL, NULL, 'category_sort_options_img' ) );
|
||||
|
||||
$form->add( new Radio( 'category_allow_albums', $this->id ? $this->allow_albums : 1, TRUE, array( 'options' => array( 0 => 'cat_no_allow_albums', 1 => 'cat_allow_albums', 2 => 'cat_require_albums' ) ) ) );
|
||||
$form->add( new Radio( 'category_allow_albums', $this->id ? $this->allow_albums : 1, TRUE, array(
|
||||
'options' => array( 0 => 'cat_no_allow_albums', 1 => 'cat_allow_albums', 2 => 'cat_require_albums' ),
|
||||
'toggles' => array( 1 => array( 'category_sort_options' ), 2 => array( 'category_sort_options' ) )
|
||||
) ) );
|
||||
$form->add( new YesNo( 'category_approve_img', $this->approve_img, FALSE ) );
|
||||
|
||||
if( Settings::i()->gallery_watermark_path )
|
||||
@@ -382,11 +385,10 @@ class Category extends Model implements Permissions
|
||||
$form->add( new YesNo( 'category_watermark', $this->id ? $this->watermark : TRUE, FALSE ) );
|
||||
}
|
||||
|
||||
$form->add( new YesNo( 'allow_anonymous_comments', $this->id ? $this->allow_anonymous : FALSE, FALSE, array() ) );
|
||||
|
||||
$form->addHeader( 'category_comments_and_ratings' );
|
||||
$form->add( new YesNo( 'category_allow_comments', $this->id ? $this->allow_comments : TRUE, FALSE, array( 'togglesOn' => array( 'category_approve_com' ) ), NULL, NULL, NULL, 'category_allow_comments' ) );
|
||||
$form->add( new YesNo( 'category_allow_comments', $this->id ? $this->allow_comments : TRUE, FALSE, array( 'togglesOn' => array( 'category_approve_com', 'allow_anonymous_comments' ) ), NULL, NULL, NULL, 'category_allow_comments' ) );
|
||||
$form->add( new YesNo( 'category_approve_com', $this->approve_com, FALSE, array(), NULL, NULL, NULL, 'category_approve_com' ) );
|
||||
$form->add( new YesNo( 'allow_anonymous_comments', $this->id ? $this->allow_anonymous : FALSE, FALSE, array(), null, null, null, 'allow_anonymous_comments' ) );
|
||||
$form->add( new YesNo( 'gcategory_allow_rating', $this->id ? $this->allow_rating : TRUE, FALSE ) );
|
||||
$form->add( new YesNo( 'category_allow_reviews', $this->id ? $this->allow_reviews : FALSE, FALSE, array( 'togglesOn' => array( 'category_review_moderate' ) ) ) );
|
||||
$form->add( new YesNo( 'category_review_moderate', $this->id ? $this->review_moderate : FALSE, FALSE, array(), NULL, NULL, NULL, 'category_review_moderate' ) );
|
||||
@@ -927,7 +929,7 @@ class Category extends Model implements Permissions
|
||||
}
|
||||
else
|
||||
{
|
||||
Task::queue( 'core', 'DeleteOrMoveContent', array( 'class' => 'IPS\gallery\Album', 'id' => $album->_id, 'deleteWhenDone' => TRUE ) );
|
||||
Task::queue( 'core', 'DeleteOrMoveContent', array( 'class' => 'IPS\gallery\Album', 'id' => $album->_id, 'deleteWhenDone' => TRUE ), priority: 4 );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -230,6 +230,8 @@ Filter
|
||||
$return[] = 'image_album_id';
|
||||
$return[] = 'image_copyright';
|
||||
$return[] = 'image_nsfw';
|
||||
$return[] = 'image_media';
|
||||
$return[] = 'image_file_type';
|
||||
return $return;
|
||||
}
|
||||
|
||||
@@ -279,7 +281,27 @@ Filter
|
||||
return array();
|
||||
}
|
||||
|
||||
return is_array( $this->_data['metadata'] ) ? $this->_data['metadata'] : ( $this->_data['metadata'] ? json_decode( $this->_data['metadata'], TRUE ) : array() );
|
||||
/* Did we disable metadata viewing? */
|
||||
if( Settings::i()->gallery_metadata == static::IMAGE_METADATA_NONE )
|
||||
{
|
||||
return array();
|
||||
}
|
||||
|
||||
$metadata = is_array( $this->_data['metadata'] ) ? $this->_data['metadata'] : ( $this->_data['metadata'] ? json_decode( $this->_data['metadata'], TRUE ) : array() );
|
||||
|
||||
/* If we're stripping sensitive data, then remove it here */
|
||||
if( Settings::i()->gallery_metadata == static::IMAGE_METADATA_NOSENSITIVE )
|
||||
{
|
||||
foreach( $metadata as $k => $v )
|
||||
{
|
||||
if( str_starts_with( $k, 'GPS.' ) )
|
||||
{
|
||||
unset( $metadata[ $k ] );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $metadata;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -292,10 +314,9 @@ Filter
|
||||
if( isset( $this->_data['data'] ) )
|
||||
{
|
||||
$data = is_array( $this->_data['data'] ) ? $this->_data['data'] : json_decode( $this->_data['data'], true );
|
||||
return is_array( $data ) ? $data : [];
|
||||
}
|
||||
|
||||
return [];
|
||||
return $data ?? [ 'large' => [ null, null ], 'small' => [ null, null ] ];
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -316,7 +337,17 @@ Filter
|
||||
*/
|
||||
public function get__notes(): array
|
||||
{
|
||||
return is_array( $this->_data['notes'] ) ? $this->_data['notes'] : ( $this->_data['notes'] ? json_decode( $this->_data['notes'], TRUE ) : array() );
|
||||
if( is_array( ( $this->_data['notes'] ) ) )
|
||||
{
|
||||
return $this->_data['notes'];
|
||||
}
|
||||
|
||||
if( isset( $this->_data['notes'] ) and $data = json_decode( $this->_data['notes'], true ) )
|
||||
{
|
||||
return $data;
|
||||
}
|
||||
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1587,6 +1618,23 @@ Filter
|
||||
return $image;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Metadata-related constants
|
||||
*/
|
||||
const IMAGE_METADATA_NONE = 0;
|
||||
const IMAGE_METADATA_ALL = 1;
|
||||
const IMAGE_METADATA_NOSENSITIVE = 2;
|
||||
|
||||
/**
|
||||
* Determines if the map and location data should be displayed
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function showLocation() : bool
|
||||
{
|
||||
return GeoLocation::enabled() and Settings::i()->gallery_metadata == static::IMAGE_METADATA_ALL and $this->gps_show;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the map for the image if available
|
||||
*
|
||||
|
||||
@@ -14,6 +14,8 @@ namespace IPS\gallery\widgets;
|
||||
/* To prevent PHP errors (extending class does not exist) revealing path */
|
||||
|
||||
use IPS\Content\Widget;
|
||||
use IPS\Helpers\Form;
|
||||
use IPS\Helpers\Form\YesNo;
|
||||
use IPS\Output;
|
||||
use IPS\Theme;
|
||||
use function defined;
|
||||
@@ -62,4 +64,37 @@ class albums extends Widget
|
||||
Output::i()->cssFiles = array_merge( Output::i()->cssFiles, Theme::i()->css( 'gallery.css', 'gallery', 'front' ) );
|
||||
parent::init();
|
||||
}
|
||||
|
||||
/**
|
||||
* Specify widget configuration
|
||||
*
|
||||
* @param Form|null $form Form object
|
||||
* @return Form
|
||||
*/
|
||||
public function configuration( Form &$form=null ): Form
|
||||
{
|
||||
$form = parent::configuration( $form );
|
||||
|
||||
$form->add( new YesNo( 'widget_feed_album_empty', $this->configuration['widget_feed_album_empty'] ?? true, false ), 'widget_feed_author' );
|
||||
|
||||
return $form;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get where clause
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
protected function buildWhere(): array
|
||||
{
|
||||
$where = parent::buildWhere();
|
||||
|
||||
/* We default to true to maintain previous behavior */
|
||||
if( isset( $this->configuration['widget_feed_album_empty'] ) and !$this->configuration['widget_feed_album_empty'] )
|
||||
{
|
||||
$where[] = [ 'album_count_imgs>?', 0 ];
|
||||
}
|
||||
|
||||
return $where;
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user