Version 4.7.23
This commit is contained in:
1 parent
7124a02564
commit
25ddeb65d6
1791 files changed
+76990
-44452
No files matched your search
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<javascript app="gallery">
|
||||
<file javascript_app="gallery" javascript_location="front" javascript_path="controllers/browse" javascript_name="ips.browse.carousel.js" javascript_type="controller" javascript_version="107712" javascript_position="1000050"><![CDATA[/**
|
||||
<file javascript_app="gallery" javascript_location="front" javascript_path="controllers/browse" javascript_name="ips.browse.carousel.js" javascript_type="controller" javascript_version="107827" javascript_position="1000200"><![CDATA[/**
|
||||
* Invision Community
|
||||
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
|
||||
*
|
||||
@@ -61,7 +61,7 @@
|
||||
|
||||
});
|
||||
}());]]></file>
|
||||
<file javascript_app="gallery" javascript_location="front" javascript_path="controllers/browse" javascript_name="ips.browse.list.js" javascript_type="controller" javascript_version="107712" javascript_position="1000050">/**
|
||||
<file javascript_app="gallery" javascript_location="front" javascript_path="controllers/browse" javascript_name="ips.browse.list.js" javascript_type="controller" javascript_version="107827" javascript_position="1000200">/**
|
||||
* Invision Community
|
||||
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
|
||||
*
|
||||
@@ -90,7 +90,7 @@
|
||||
}
|
||||
});
|
||||
}(jQuery, _));</file>
|
||||
<file javascript_app="gallery" javascript_location="front" javascript_path="controllers/global" javascript_name="ips.global.nsfw.js" javascript_type="controller" javascript_version="107712" javascript_position="1000100">;( function($, _, undefined){
|
||||
<file javascript_app="gallery" javascript_location="front" javascript_path="controllers/global" javascript_name="ips.global.nsfw.js" javascript_type="controller" javascript_version="107827" javascript_position="1000250">;( function($, _, undefined){
|
||||
"use strict";
|
||||
|
||||
ips.controller.register('gallery.front.global.nsfw', {
|
||||
@@ -112,7 +112,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="107712" 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="107827" javascript_position="1000050">/**
|
||||
* Invision Community
|
||||
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
|
||||
*
|
||||
@@ -169,7 +169,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="107712" javascript_position="1000150"><![CDATA[/**
|
||||
<file javascript_app="gallery" javascript_location="front" javascript_path="controllers/submit" javascript_name="ips.submit.chooseCategory.js" javascript_type="controller" javascript_version="107827" javascript_position="1000100"><![CDATA[/**
|
||||
* Invision Community
|
||||
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
|
||||
*
|
||||
@@ -369,7 +369,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="107712" javascript_position="1000150"><![CDATA[/**
|
||||
<file javascript_app="gallery" javascript_location="front" javascript_path="controllers/submit" javascript_name="ips.submit.existingAlbums.js" javascript_type="controller" javascript_version="107827" javascript_position="1000100"><![CDATA[/**
|
||||
* Invision Community
|
||||
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
|
||||
*
|
||||
@@ -416,7 +416,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="107712" javascript_position="1000150"><![CDATA[/**
|
||||
<file javascript_app="gallery" javascript_location="front" javascript_path="controllers/submit" javascript_name="ips.submit.uploadImages.js" javascript_type="controller" javascript_version="107827" javascript_position="1000100"><![CDATA[/**
|
||||
* Invision Community
|
||||
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
|
||||
*
|
||||
@@ -547,7 +547,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="107712" javascript_position="1000150"><![CDATA[/**
|
||||
<file javascript_app="gallery" javascript_location="front" javascript_path="controllers/submit" javascript_name="ips.submit.wrapper.js" javascript_type="controller" javascript_version="107827" javascript_position="1000100"><![CDATA[/**
|
||||
* Invision Community
|
||||
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
|
||||
*
|
||||
@@ -585,7 +585,6 @@
|
||||
this.on( 'click', '[data-role="imageDescriptionUseEditor"]', this.setUpImageDescriptionRich );
|
||||
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
|
||||
@@ -708,38 +707,6 @@
|
||||
$(e.currentTarget).trigger('closeMenu');
|
||||
},
|
||||
|
||||
/**
|
||||
* Mobile-specific functionality for 'save' button
|
||||
*
|
||||
* @returns {void}
|
||||
*/
|
||||
saveDetails: function (e) {
|
||||
if( e ){
|
||||
e.preventDefault();
|
||||
}
|
||||
|
||||
this._markActiveImageAsSaved();
|
||||
|
||||
// Show and then hide a 'saved' message
|
||||
$(e.currentTarget).next('[data-role="savedMessage"]').fadeIn();
|
||||
setTimeout( function () {
|
||||
$(e.currentTarget).next('[data-role="savedMessage"]').fadeOut();
|
||||
}, 2000 );
|
||||
|
||||
// Hide any error messages
|
||||
if( e ){
|
||||
$( e.currentTarget ).closest('.cGallerySubmit_details').find('[data-errorField]').hide();
|
||||
}
|
||||
|
||||
// Mobile-only behavior
|
||||
if( ips.utils.responsive.enabled() && ips.utils.responsive.currentIs('phone') ){
|
||||
// Fade out details form
|
||||
this._toggleDetailsPanelMobile(false);
|
||||
// Remove active selection styles
|
||||
this.scope.find('.cGallerySubmit_activeFile').removeClass('cGallerySubmit_activeFile');
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Confirm the user wants to close the dialog
|
||||
*
|
||||
@@ -790,19 +757,29 @@
|
||||
// Remove selection from all other files
|
||||
this.scope.find('.cGallerySubmit_activeFile').removeClass('cGallerySubmit_activeFile');
|
||||
$( e.currentTarget ).addClass('cGallerySubmit_activeFile');
|
||||
let imageId;
|
||||
let tempId;
|
||||
const detailsPanel = this.scope.find('[data-role="imageDetails"]');
|
||||
|
||||
// Get the image ID first
|
||||
if( $( e.currentTarget ).attr('data-fileid').indexOf('o_') != -1 )
|
||||
{
|
||||
var imageId = $('input[name="images_existing\\[' + $( e.currentTarget ).attr('data-fileid') + '\\]"').val();
|
||||
}
|
||||
else
|
||||
{
|
||||
var imageId = $( e.currentTarget ).attr('data-fileid');
|
||||
if ($(e.currentTarget).attr('data-uploading-temp-id')) {
|
||||
// if the details pane was opened before the fileid was set, we use the existing temp id
|
||||
imageId = $(e.currentTarget).attr('data-uploading-temp-id')
|
||||
} else if( $( e.currentTarget ).attr('data-fileid').startsWith('o_') ) {
|
||||
imageId = $('input[name="images_existing\\[' + $( e.currentTarget ).attr('data-fileid') + '\\]"').val();
|
||||
if (!imageId) {
|
||||
imageId = $(e.currentTarget).attr('data-fileid');
|
||||
$(e.currentTarget).attr('data-uploading-temp-id', $(e.currentTarget).attr('data-fileid'))
|
||||
}
|
||||
} else if ( $(e.currentTarget).attr('data-fileid') && parseInt($(e.currentTarget).attr('data-fileid')) ) {
|
||||
imageId = $( e.currentTarget ).attr('data-fileid');
|
||||
} else {
|
||||
// in this case, we assume it's still uploading
|
||||
tempId = imageId = Math.round(Math.random() * Math.pow(2, 32)).toString(16)
|
||||
$(e.currentTarget).attr('data-uploading-temp-id', imageId)
|
||||
}
|
||||
|
||||
var imagePreview = $( e.currentTarget ).find('.ipsImage').attr('src');
|
||||
var detailsPanel = this.scope.find('[data-role="imageDetails"]');
|
||||
|
||||
// Hide our existing form, if any
|
||||
detailsPanel.find('.cGallerySubmit_details, [data-role="submitHelp"]').hide();
|
||||
@@ -839,9 +816,8 @@
|
||||
.removeClass('ipsBox_transparent')
|
||||
.removeClass('ipsNoThumb')
|
||||
.removeClass('ipsNoThumb_video')
|
||||
.html("<img src='" + imagePreview + "' class='ipsImage' />")
|
||||
.html( $("<img class='ipsImage'/>").attr('src', imagePreview ) )
|
||||
.show();
|
||||
|
||||
}
|
||||
else {
|
||||
imageForm
|
||||
@@ -1056,7 +1032,20 @@
|
||||
form.find('textarea[name="images_order"]').val( JSON.stringify( imageOrder ) );
|
||||
|
||||
// And get the individual image details and store in the submission
|
||||
form.find('textarea[name="images_info"]').val( JSON.stringify( $('#form_imageDetails').serializeArray() ) );
|
||||
const tempIdMap = {}
|
||||
form.find('[data-uploading-temp-id][data-fileid]').each(function() {
|
||||
tempIdMap[$(this).attr('data-uploading-temp-id')] = $(this).attr('data-fileid');
|
||||
})
|
||||
|
||||
form.find('textarea[name="images_info"]').val( JSON.stringify( $('#form_imageDetails').serializeArray().map(({name, value}) => {
|
||||
for(const key in tempIdMap) {
|
||||
if (name.includes(key)) {
|
||||
name = name.replaceAll(key, tempIdMap[key])
|
||||
break;
|
||||
}
|
||||
}
|
||||
return {name, value}
|
||||
}) ) );
|
||||
|
||||
// Hide/disable some stuff
|
||||
this.scope.find('[data-role="imageDetails"]').addClass('ipsHide');
|
||||
@@ -1311,7 +1300,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="107712" javascript_position="1000200">/**
|
||||
<file javascript_app="gallery" javascript_location="front" javascript_path="controllers/view" javascript_name="ips.view.image.js" javascript_type="controller" javascript_version="107827" javascript_position="1000150">/**
|
||||
* Invision Community
|
||||
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
|
||||
*
|
||||
@@ -1453,7 +1442,7 @@
|
||||
}
|
||||
});
|
||||
}(jQuery, _));</file>
|
||||
<file javascript_app="gallery" javascript_location="front" javascript_path="controllers/view" javascript_name="ips.view.note.js" javascript_type="controller" javascript_version="107712" javascript_position="1000200"><![CDATA[/**
|
||||
<file javascript_app="gallery" javascript_location="front" javascript_path="controllers/view" javascript_name="ips.view.note.js" javascript_type="controller" javascript_version="107827" javascript_position="1000150"><![CDATA[/**
|
||||
* Invision Community
|
||||
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
|
||||
*
|
||||
@@ -1911,7 +1900,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="107712" javascript_position="1000200"><![CDATA[/**
|
||||
<file javascript_app="gallery" javascript_location="front" javascript_path="controllers/view" javascript_name="ips.view.notes.js" javascript_type="controller" javascript_version="107827" javascript_position="1000150"><![CDATA[/**
|
||||
* Invision Community
|
||||
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
|
||||
*
|
||||
@@ -1994,8 +1983,8 @@
|
||||
}
|
||||
});
|
||||
}(jQuery, _));]]></file>
|
||||
<file javascript_app="gallery" javascript_location="front" javascript_path="templates" javascript_name="ips.templates.browse.js" javascript_type="template" javascript_version="107712" javascript_position="1000250">// Empty</file>
|
||||
<file javascript_app="gallery" javascript_location="front" javascript_path="templates" javascript_name="ips.templates.submit.js" javascript_type="template" javascript_version="107712" javascript_position="1000250"><![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="107827" 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="107827" javascript_position="1000050"><![CDATA[ips.templates.set('gallery.submit.imageItem', " \
|
||||
<div class='ipsAttach ipsImageAttach ipsPad_half ipsAreaBackground_light {{#done}}ipsAttach_done{{/done}}' id='{{id}}' data-role='file' data-fileid='{{id}}' data-fullsizeurl='{{imagesrc}}' data-thumbnailurl='{{thumbnail}}' data-isImage='1'>\
|
||||
<ul class='ipsList_inline 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 fa-plus'></i></a></li>\
|
||||
@@ -2022,7 +2011,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="107712" javascript_position="1000250"><![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="107827" 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'>\
|
||||
@@ -2055,7 +2044,6 @@ Debug.js
|
||||
app.js</order>
|
||||
<order app="global" path="/dev/js//library//jquery">jquery.js
|
||||
jquery-migrate.js
|
||||
jquery.history.js
|
||||
jquery.transform.js</order>
|
||||
<order app="global" path="/dev/js//library//linkify">linkify.min.js
|
||||
linkify-jquery.min.js</order>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<language>
|
||||
<app key="gallery" version="107712">
|
||||
<app key="gallery" version="107827">
|
||||
<word key="__app_gallery" js="0">Gallery</word>
|
||||
<word key="frontnavigation_gallery" js="0">Gallery</word>
|
||||
<word key="gallery_title" js="0">Gallery</word>
|
||||
|
||||
@@ -2492,6 +2492,26 @@
|
||||
null,
|
||||
null
|
||||
]
|
||||
},
|
||||
"image_file_size": {
|
||||
"type": "key",
|
||||
"name": "image_file_size",
|
||||
"columns": [
|
||||
"image_file_size"
|
||||
],
|
||||
"length": [
|
||||
null
|
||||
]
|
||||
},
|
||||
"image_views": {
|
||||
"type": "key",
|
||||
"name": "image_views",
|
||||
"columns": [
|
||||
"image_views"
|
||||
],
|
||||
"length": [
|
||||
null
|
||||
]
|
||||
}
|
||||
},
|
||||
"collation": "utf8mb4_unicode_ci",
|
||||
|
||||
+146
-131
@@ -1729,7 +1729,9 @@
|
||||
{template="reputationBadge" group="global" app="core" params="$comment->author()"}
|
||||
</h3>
|
||||
<p class='ipsComment_meta ipsType_light ipsType_medium'>
|
||||
<a href='{$comment->url()}' class='ipsType_blendLinks'>{$comment->dateLine()|raw}</a>
|
||||
{{if ! \IPS\Output::i()->reduceLinks()}}<a href='{$comment->shareableUrl()}' class='ipsType_blendLinks'>{{endif}}
|
||||
{$comment->dateLine()|raw}
|
||||
{{if ! \IPS\Output::i()->reduceLinks()}}</a>{{endif}}
|
||||
{{if $comment->ip_address and \IPS\Member::loggedIn()->modPermission('can_use_ip_tools') and \IPS\Member::loggedIn()->canAccessModule( \IPS\Application\Module::get( 'core', 'modcp' ) )}}
|
||||
· <a class='ipsType_blendLinks ipsType_light ipsType_noUnderline' href="{url="app=core&module=modcp&controller=modcp&tab=ip_tools&ip=$comment->ip_address" seoTemplate="modcp_ip_tools"}" data-ipsMenu data-ipsMenu-menuID='{$comment->$idField}_ip_menu'>{lang="ip_short"} <i class='fa fa-angle-down'></i></a>
|
||||
{{endif}}
|
||||
@@ -1757,7 +1759,9 @@
|
||||
{{if $comment->canReportOrRevoke() === TRUE}}
|
||||
<li class='ipsMenu_item'><a href='{$comment->url('report')}' {{if member.member_id or \IPS\Helpers\Form\Captcha::supportsModal()}}data-ipsDialog data-ipsDialog-remoteSubmit data-ipsDialog-size='medium' data-ipsDialog-flashMessage='{lang="report_submit_success"}' data-ipsDialog-title="{lang="report"}"{{endif}} data-action='reportComment' title='{lang="report_content"}'>{lang="report"}</a></li>
|
||||
{{endif}}
|
||||
<li class='ipsMenu_item'><a href='{$comment->item()->url()->setQueryString( array( 'do' => 'findComment', 'comment' => $comment->id ) )}' data-ipsDialog data-ipsDialog-size='narrow' data-ipsDialog-content='#elShareComment_{$comment->id}_menu' data-ipsDialog-title="{lang="share_this_comment"}" id='elShareComment_{$comment->id}' data-role='shareComment'>{lang="share"}</a></li>
|
||||
{{if ! \IPS\Output::i()->reduceLinks()}}
|
||||
<li class='ipsMenu_item'><a href='{$comment->shareableUrl()}' data-ipsDialog data-ipsDialog-size='narrow' data-ipsDialog-content='#elShareComment_{$comment->id}_menu' data-ipsDialog-title="{lang="share_this_comment"}" id='elShareComment_{$comment->id}' data-role='shareComment'>{lang="share"}</a></li>
|
||||
{{endif}}
|
||||
{{if $comment->canReportOrRevoke() === TRUE || \count( $comment->sharelinks() )}}
|
||||
{{if $comment->canEdit() || $comment->canPromoteToSocialMedia() || $comment->canDelete() || $comment->canSplit() || ( $comment instanceof \IPS\Content\Hideable AND ( ( !$comment->hidden() and $comment->canHide() ) || ( $comment->hidden() and $comment->canUnhide() ) ) ) || ( $comment->hidden() == -2 AND \IPS\Member::loggedIn()->modPermission('can_manage_deleted_content') )}}
|
||||
<li class='ipsMenu_sep'><hr></li>
|
||||
@@ -1879,7 +1883,9 @@
|
||||
<a href='{url="app=core&module=modcp&controller=modcp&tab=ip_tools&ip=$comment->ip_address" seoTemplate="modcp_ip_tools"}' class='ipsButton ipsButton_light ipsButton_small ipsButton_fullWidth'>{lang="more_about_ip_address"} <i class='fa fa-angle-right'></i></a>
|
||||
</div>
|
||||
{{endif}}
|
||||
{{if ! \IPS\Output::i()->reduceLinks()}}
|
||||
{template="sharemenu" group="global" app="core" params="$comment"}
|
||||
{{endif}}
|
||||
</div>]]></template>
|
||||
<template template_group="global" template_name="commentContainer" template_data="$item, $comment" template_location="front" template_app="gallery"><![CDATA[{{$idField = $comment::$databaseColumnId;}}
|
||||
{{$itemClassSafe = str_replace( '\\', '_', mb_substr( $comment::$itemClass, 4 ) );}}
|
||||
@@ -1895,6 +1901,7 @@
|
||||
</div>
|
||||
{{endif}}
|
||||
|
||||
<a id='findComment-{$comment->$idField}'></a>
|
||||
<a id='comment-{$comment->$idField}'></a>
|
||||
<article {{if $comment->author()->hasHighlightedReplies()}}data-memberGroup="{$comment->author()->member_group_id}" {{endif}} id='elComment_{$comment->$idField}' class='ipsBox ipsBox--child ipsComment {{if ( settings.reputation_enabled and \IPS\IPS::classUsesTrait( $comment, 'IPS\Content\Reactable' ) and settings.reputation_highlight and $comment->reactionCount() >= settings.reputation_highlight ) OR $comment->isFeatured()}}ipsComment_popular{{endif}} ipsComment_parent ipsClearfix ipsClear {{if $comment->isIgnored()}}ipsHide{{endif}} {{if $comment->author()->hasHighlightedReplies()}}ipsComment_highlighted{{endif}} {{if $comment->hidden() OR $item->hidden() == -2}}ipsModerated{{endif}}'>
|
||||
{template="comment" group="global" app="gallery" params="$item, $comment, $item::$formLangPrefix . 'comment', $item::$application, $item::$module, $itemClassSafe"}
|
||||
@@ -2535,10 +2542,11 @@
|
||||
<a href='{$review->url('report')}' {{if member.member_id or \IPS\Helpers\Form\Captcha::supportsModal()}}data-ipsDialog data-ipsDialog-remoteSubmit data-ipsDialog-size='medium' data-ipsDialog-flashMessage='{lang="report_submit_success"}' data-ipsDialog-title="{lang="report"}"{{endif}} data-action='reportComment' title='{lang="report"}'>{lang="report"}</a>
|
||||
</li>
|
||||
{{endif}}
|
||||
{{if ! \IPS\Output::i()->reduceLinks()}}
|
||||
<li class='ipsMenu_item'>
|
||||
<a class='ipsType_blendLinks' href='{$review->item()->url()->setQueryString( array( 'do' => 'findReview', 'review' => $review->id ) )}' title='{lang="share_this_review"}' data-ipsDialog data-ipsDialog-size='narrow' data-ipsDialog-content='#elShareReview_{$review->id}_menu' data-ipsDialog-title="{lang="share_this_review"}" id='elShareReview_{$review->id}' data-role='shareComment'>{lang="share_this_review"}</a>
|
||||
<a class='ipsType_blendLinks' href='{$review->shareableUrl('review')}' title='{lang="share_this_review"}' data-ipsDialog data-ipsDialog-size='narrow' data-ipsDialog-content='#elShareReview_{$review->id}_menu' data-ipsDialog-title="{lang="share_this_review"}" id='elShareReview_{$review->id}' data-role='shareComment'>{lang="share_this_review"}</a>
|
||||
</li>
|
||||
|
||||
{{endif}}
|
||||
{{if $review->canEdit() || ( $review->hidden() == -2 AND \IPS\Member::loggedIn()->modPermission('can_manage_deleted_content') ) || ( $review instanceof \IPS\Content\Hideable && ( ( !$review->hidden() and $review->canHide() ) || ( $review->hidden() and $review->canUnhide() ) ) ) || $review->canDelete()}}
|
||||
<li class='ipsMenu_sep'><hr></li>
|
||||
{{endif}}
|
||||
@@ -2626,8 +2634,9 @@
|
||||
{{endif}}
|
||||
</div>
|
||||
{{endif}}
|
||||
|
||||
{{if ! \IPS\Output::i()->reduceLinks()}}
|
||||
{template="sharemenu" group="global" app="core" params="$review"}
|
||||
{{endif}}
|
||||
</div>]]></template>
|
||||
<template template_group="global" template_name="reviewContainer" template_data="$item, $review" template_location="front" template_app="gallery"><![CDATA[{{$idField = $review::$databaseColumnId;}}
|
||||
{{if $review->isIgnored()}}
|
||||
@@ -2636,6 +2645,7 @@
|
||||
</div>
|
||||
{{else}}
|
||||
<a id='review-{$review->$idField}'></a>
|
||||
<a id='findReview-{$review->$idField}'></a>
|
||||
<article id="elReview_{$review->$idField}" class="ipsBox ipsBox--child ipsComment ipsComment_parent ipsClearfix ipsClear {{if $review->hidden() OR $item->hidden() == -2}}ipsModerated{{endif}}">
|
||||
{template="review" group="global" app="gallery" params="$item, $review, $item::$formLangPrefix . 'review', $item::$application, $item::$module"}
|
||||
</article>
|
||||
@@ -3439,12 +3449,6 @@
|
||||
</li>
|
||||
{{endif}}
|
||||
{{endforeach}}
|
||||
<li class='ipsFieldRow ipsClearfix'>
|
||||
<button type='button' class='ipsButton ipsButton_light ipsButton_fullWidth ipsButton_medium' data-role='saveDetails'>{lang="submit_go_back"}</button>
|
||||
<p class='ipsType_light ipsType_medium ipsType_right ipsSpacer_top ipsSpacer_half ipsHide' data-role='savedMessage'>
|
||||
<i class='fa fa-check'></i> {lang="image_info_saved"}
|
||||
</p>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
@@ -6036,127 +6040,138 @@ html[dir] .cGalleryLightbox_info .ipsRecommendedComments .ipsComment_recommended
|
||||
|
||||
.elGalleryImage .ipsType_pageTitle input[type='text']{
|
||||
color: rgb( var(--theme-text_color) );
|
||||
}]]></css>
|
||||
<css css_location="front" css_app="gallery" css_attributes="" css_path="." css_name="global.css"><![CDATA[.cGalleryAlbums_recent {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
padding-inline-start: 208px;
|
||||
list-style: none;
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fill, minmax(100px, 1fr));
|
||||
gap: 4px;
|
||||
height: 204px;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
|
||||
/* Space out items in vertical Image Feed widget */
|
||||
[data-blockid^="app_gallery_imageFeed_"] .cGalleryWidgetList > li + li{
|
||||
margin-top: 40px;
|
||||
}
|
||||
|
||||
.cGalleryAlbums_recent > li {
|
||||
height: 100px;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.cGalleryAlbums_recent .ipsImageBlock{
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.cGalleryAlbums_recent .ipsImageBlock__footer{
|
||||
justify-self: end;
|
||||
padding: .5em;
|
||||
}
|
||||
|
||||
.cGalleryAlbums_recent .ipsImageBlock__footer::before{
|
||||
display: none;
|
||||
}
|
||||
|
||||
.cGalleryAlbums_recent > li:first-child {
|
||||
width: 204px;
|
||||
height: 204px;
|
||||
overflow: hidden;
|
||||
position: absolute;
|
||||
inset-inline-start: 0;
|
||||
}
|
||||
|
||||
/* Restyle the above for the sidebar */
|
||||
.ipsWidget_vertical .cGalleryAlbums_recent{
|
||||
padding: 0 !important;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
height: auto;
|
||||
}
|
||||
|
||||
.ipsWidget_vertical .cGalleryAlbums_recent > li:first-child,
|
||||
.ipsWidget_vertical .cGalleryAlbums_recent > li:first-child a,
|
||||
.ipsWidget_vertical .cGalleryAlbums_recent > li,
|
||||
.ipsWidget_vertical .cGalleryAlbums_recent > li a{
|
||||
width: auto;
|
||||
height: auto;
|
||||
position: static;
|
||||
}
|
||||
|
||||
.ipsWidget_vertical .cGalleryAlbums_recent > li{
|
||||
flex: 0 0 calc(33.3% - 4px);
|
||||
max-width: 120px; /* Used if a widget stretches to 100% of the viewport one it wraps */
|
||||
}
|
||||
|
||||
/* Since results are unlimited, display a maximum of 12 using css */
|
||||
.ipsWidget_vertical .cGalleryAlbums_recent > li:nth-child(12) ~ li{
|
||||
display: none;
|
||||
}
|
||||
|
||||
|
||||
.ipsWidget_vertical .cGalleryAlbums_recent > li a::before{
|
||||
content: '';
|
||||
display: block;
|
||||
padding-top: 100%;
|
||||
}
|
||||
|
||||
/* General style which creates the square thumb container */
|
||||
.cGalleryTrimmedImage {
|
||||
background-color: #333;
|
||||
background-size: cover;
|
||||
background-position: 50%;
|
||||
background-repeat: no-repeat;
|
||||
overflow: hidden;
|
||||
border: .5px solid #333;
|
||||
}
|
||||
|
||||
.cGalleryTrimmedImage img {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.cGalleryThumb {
|
||||
max-width: 170px;
|
||||
max-height: 170px;
|
||||
}
|
||||
|
||||
.cGalleryAlbumThumb {
|
||||
width: 280px;
|
||||
height: 235px;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 767px) {
|
||||
.ipsApp .cGalleryAlbums_recent {
|
||||
margin-bottom: 3px;
|
||||
}
|
||||
|
||||
.cGalleryAlbums_recent {
|
||||
height: 134px;
|
||||
padding-inline-start: 138px;
|
||||
grid-template-columns: repeat(auto-fill, minmax(65px, 1fr));
|
||||
}
|
||||
|
||||
.cGalleryAlbums_recent > li:first-child {
|
||||
width: 134px;
|
||||
height: 134px;
|
||||
}
|
||||
|
||||
.cGalleryAlbums_recent > li {
|
||||
height: 65px;
|
||||
}
|
||||
|
||||
.cGalleryAlbums_recent + ul.ipsList_inline {
|
||||
padding-inline-start: 4px;
|
||||
}
|
||||
/* Chrome issue: Fix 0px height image in vertical Image Feed widget */
|
||||
[data-blockid^="app_gallery_imageFeed_"] .cGalleryWidgetList .ipsImageBlock__main{
|
||||
display: block;
|
||||
text-align: center;
|
||||
}]]></css>
|
||||
<css css_location="front" css_app="gallery" css_attributes="" css_path="." css_name="global.css"><![CDATA[.cGalleryAlbums_recent {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
padding-inline-start: 208px;
|
||||
list-style: none;
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fill, minmax(100px, 1fr));
|
||||
gap: 4px;
|
||||
height: 204px;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.cGalleryAlbums_recent > li {
|
||||
height: 100px;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.cGalleryAlbums_recent .ipsImageBlock{
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.cGalleryAlbums_recent .ipsImageBlock__footer{
|
||||
justify-self: end;
|
||||
padding: .5em;
|
||||
}
|
||||
|
||||
.cGalleryAlbums_recent .ipsImageBlock__footer::before{
|
||||
display: none;
|
||||
}
|
||||
|
||||
.cGalleryAlbums_recent > li:first-child {
|
||||
width: 204px;
|
||||
height: 204px;
|
||||
overflow: hidden;
|
||||
position: absolute;
|
||||
inset-inline-start: 0;
|
||||
}
|
||||
|
||||
/* Restyle the above for the sidebar */
|
||||
.ipsWidget_vertical .cGalleryAlbums_recent{
|
||||
padding: 0 !important;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
height: auto;
|
||||
}
|
||||
|
||||
.ipsWidget_vertical .cGalleryAlbums_recent > li:first-child,
|
||||
.ipsWidget_vertical .cGalleryAlbums_recent > li:first-child a,
|
||||
.ipsWidget_vertical .cGalleryAlbums_recent > li,
|
||||
.ipsWidget_vertical .cGalleryAlbums_recent > li a{
|
||||
width: auto;
|
||||
height: auto;
|
||||
position: static;
|
||||
}
|
||||
|
||||
.ipsWidget_vertical .cGalleryAlbums_recent > li{
|
||||
flex: 0 0 calc(33.3% - 4px);
|
||||
max-width: 120px; /* Used if a widget stretches to 100% of the viewport one it wraps */
|
||||
}
|
||||
|
||||
/* Since results are unlimited, display a maximum of 12 using css */
|
||||
.ipsWidget_vertical .cGalleryAlbums_recent > li:nth-child(12) ~ li{
|
||||
display: none;
|
||||
}
|
||||
|
||||
|
||||
.ipsWidget_vertical .cGalleryAlbums_recent > li a::before{
|
||||
content: '';
|
||||
display: block;
|
||||
padding-top: 100%;
|
||||
}
|
||||
|
||||
/* General style which creates the square thumb container */
|
||||
.cGalleryTrimmedImage {
|
||||
background-color: #333;
|
||||
background-size: cover;
|
||||
background-position: 50%;
|
||||
background-repeat: no-repeat;
|
||||
overflow: hidden;
|
||||
border: .5px solid #333;
|
||||
}
|
||||
|
||||
.cGalleryTrimmedImage img {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.cGalleryThumb {
|
||||
max-width: 170px;
|
||||
max-height: 170px;
|
||||
}
|
||||
|
||||
.cGalleryAlbumThumb {
|
||||
width: 280px;
|
||||
height: 235px;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 767px) {
|
||||
.ipsApp .cGalleryAlbums_recent {
|
||||
margin-bottom: 3px;
|
||||
}
|
||||
|
||||
.cGalleryAlbums_recent {
|
||||
height: 134px;
|
||||
padding-inline-start: 138px;
|
||||
grid-template-columns: repeat(auto-fill, minmax(65px, 1fr));
|
||||
}
|
||||
|
||||
.cGalleryAlbums_recent > li:first-child {
|
||||
width: 134px;
|
||||
height: 134px;
|
||||
}
|
||||
|
||||
.cGalleryAlbums_recent > li {
|
||||
height: 65px;
|
||||
}
|
||||
|
||||
.cGalleryAlbums_recent + ul.ipsList_inline {
|
||||
padding-inline-start: 4px;
|
||||
}
|
||||
}]]></css>
|
||||
<css css_location="front" css_app="gallery" css_attributes="" css_path="." css_name="profile.css"><![CDATA[/* Styles used to display albums in profiles */
|
||||
|
||||
|
||||
@@ -578,5 +578,69 @@
|
||||
"107704": "4.7.12",
|
||||
"107710": "4.7.13 Beta 1",
|
||||
"107711": "4.7.13 Beta 2",
|
||||
"107712": "4.7.13"
|
||||
"107712": "4.7.13",
|
||||
"107713": "4.7.13",
|
||||
"107714": "4.7.13",
|
||||
"107715": "4.7.13",
|
||||
"107720": "4.7.14 Beta 1",
|
||||
"107721": "4.7.14 Beta 2",
|
||||
"107722": "4.7.14",
|
||||
"107723": "4.7.14",
|
||||
"107724": "4.7.14",
|
||||
"107730": "4.7.15 Beta 1",
|
||||
"107731": "4.7.15 Beta 2",
|
||||
"107732": "4.7.15",
|
||||
"107733": "4.7.15",
|
||||
"107734": "4.7.15",
|
||||
"107740": "4.7.16 Beta 1",
|
||||
"107741": "4.7.16 Beta 2",
|
||||
"107742": "4.7.16 Beta 3",
|
||||
"107743": "4.7.16 Beta 4",
|
||||
"107744": "4.7.16 Beta 5",
|
||||
"107745": "4.7.16",
|
||||
"107746": "4.7.16",
|
||||
"107747": "4.7.16",
|
||||
"107748": "4.7.16",
|
||||
"107749": "4.7.16",
|
||||
"107750": "4.7.16",
|
||||
"107751": "4.7.16",
|
||||
"107760": "4.7.17 Beta 1",
|
||||
"107761": "4.7.17 Beta 2",
|
||||
"107762": "4.7.17 Beta 3",
|
||||
"107763": "4.7.17",
|
||||
"107764": "4.7.17",
|
||||
"107765": "4.7.17",
|
||||
"107770": "4.7.18 Beta 1",
|
||||
"107771": "4.7.18 Beta 2",
|
||||
"107772": "4.7.18 Beta 3",
|
||||
"107773": "4.7.18",
|
||||
"107774": "4.7.18",
|
||||
"107775": "4.7.18",
|
||||
"107780": "4.7.19 Beta 1",
|
||||
"107781": "4.7.19 Beta 2",
|
||||
"107782": "4.7.19 Beta 3",
|
||||
"107783": "4.7.19 Beta 4",
|
||||
"107784": "4.7.19",
|
||||
"107785": "4.7.19",
|
||||
"107786": "4.7.19",
|
||||
"107787": "4.7.19",
|
||||
"107795": "4.7.20 Beta 1",
|
||||
"107796": "4.7.20 Beta 2",
|
||||
"107797": "4.7.20 Beta 3",
|
||||
"107798": "4.7.20 Beta 4",
|
||||
"107799": "4.7.20 Beta 5",
|
||||
"107800": "4.7.20",
|
||||
"107801": "4.7.20",
|
||||
"107802": "4.7.20",
|
||||
"107803": "4.7.20",
|
||||
"107810": "4.7.21 Beta 1",
|
||||
"107811": "4.7.21",
|
||||
"107815": "4.7.22 Beta 1",
|
||||
"107816": "4.7.22 Beta 2",
|
||||
"107817": "4.7.22",
|
||||
"107818": "4.7.22",
|
||||
"107819": "4.7.22",
|
||||
"107820": "4.7.22",
|
||||
"107826": "4.7.23 Beta 1",
|
||||
"107827": "4.7.23"
|
||||
}
|
||||
@@ -31,6 +31,7 @@ try
|
||||
\IPS\Output::i()->sendHeader( "Content-Length: " . $file->filesize() );
|
||||
\IPS\Output::i()->sendHeader( "Content-Security-Policy: default-src 'none'; sandbox" );
|
||||
\IPS\Output::i()->sendHeader( "X-Content-Security-Policy: default-src 'none'; sandbox" );
|
||||
\IPS\Output::i()->sendHeader( "Cross-Origin-Opener-Policy: same-origin" );
|
||||
|
||||
$file->printFile();
|
||||
exit;
|
||||
|
||||
@@ -216,7 +216,7 @@ class _browse extends \IPS\Content\Controller
|
||||
$new = array();
|
||||
if( \IPS\Settings::i()->gallery_show_new_images )
|
||||
{
|
||||
$new = iterator_to_array( \IPS\gallery\Image::getItemsWithPermission( \IPS\gallery\Image::clubImageExclusion(), NULL, \IPS\Settings::i()->gallery_new_images_count, 'read', \IPS\Content\Hideable::FILTER_AUTOMATIC, 0, NULL, !\IPS\Settings::i()->club_nodes_in_apps ) );
|
||||
$new = iterator_to_array( \IPS\gallery\Image::getItemsWithPermission( \IPS\gallery\Image::clubImageExclusion(), NULL, \IPS\Settings::i()->gallery_new_images_count, 'read', \IPS\Content\Hideable::FILTER_AUTOMATIC, 0, NULL, !\IPS\Settings::i()->club_nodes_in_apps, false, false, false, null, false, false, false ) );
|
||||
}
|
||||
|
||||
/* Recently updated albums */
|
||||
@@ -232,7 +232,7 @@ class _browse extends \IPS\Content\Controller
|
||||
{
|
||||
$commentWhere = \IPS\gallery\Image::clubImageExclusion();
|
||||
$commentWhere[] = array( 'image_comments > 0' );
|
||||
$recentComments = \IPS\gallery\Image::getItemsWithPermission( $commentWhere, 'image_last_comment DESC', 10, 'read', \IPS\Content\Hideable::FILTER_PUBLIC_ONLY, 0, NULL, !\IPS\Settings::i()->club_nodes_in_apps );
|
||||
$recentComments = \IPS\gallery\Image::getItemsWithPermission( $commentWhere, 'image_last_comment DESC', 10, 'read', \IPS\Content\Hideable::FILTER_PUBLIC_ONLY, 0, NULL, !\IPS\Settings::i()->club_nodes_in_apps, false, false, false, null, false, false, false );
|
||||
}
|
||||
|
||||
/* Online User Location */
|
||||
|
||||
@@ -734,6 +734,7 @@ class _submit extends \IPS\Dispatcher\Controller
|
||||
}
|
||||
|
||||
/* Get the total number of images now as it will decrease each cycle moving forward */
|
||||
/* @note SELECT_FROM_WRITE_SERVER added in pull #5011 */
|
||||
$totalImages = \IPS\Db::i()->select( 'count(*)', 'gallery_images_uploads', array( 'upload_session=?', session_id() ), NULL, NULL, NULL, NULL, \IPS\Db::SELECT_FROM_WRITE_SERVER )->first();
|
||||
|
||||
$url = $url->setQueryString( 'totalImages', $totalImages );
|
||||
@@ -763,7 +764,8 @@ class _submit extends \IPS\Dispatcher\Controller
|
||||
function( $offset ) use ( $url )
|
||||
{
|
||||
$offset = \intval( $offset );
|
||||
|
||||
|
||||
/* @note SELECT_FROM_WRITE_SERVER added in pull #5011 */
|
||||
$existing = \IPS\Db::i()->select( '*', 'gallery_images_uploads', array( 'upload_session=?', session_id() ), 'upload_order ASC', array( 0, 1 ), NULL, NULL, \IPS\Db::SELECT_FROM_WRITE_SERVER )->setKeyField( 'upload_location' );
|
||||
|
||||
/* Get category and album data */
|
||||
|
||||
@@ -394,6 +394,7 @@ class _view extends \IPS\Content\Controller
|
||||
|
||||
\IPS\Output::i()->sendHeader( "Content-Security-Policy: default-src 'none'; sandbox" );
|
||||
\IPS\Output::i()->sendHeader( "X-Content-Security-Policy: default-src 'none'; sandbox" );
|
||||
\IPS\Output::i()->sendHeader( "Cross-Origin-Opener-Policy: same-origin" );
|
||||
|
||||
if( $image !== NULL )
|
||||
{
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"id": 107713,
|
||||
"name": "4.7.13",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeSettings": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"hooks": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"id": 107714,
|
||||
"name": "4.7.13",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeSettings": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"hooks": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"id": 107715,
|
||||
"name": "4.7.13",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeSettings": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"hooks": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"id": 107720,
|
||||
"name": "4.7.14 Beta 1",
|
||||
"steps": {
|
||||
"queries": true,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeSettings": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"hooks": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
{
|
||||
"1": {
|
||||
"method": "addIndex",
|
||||
"params": [
|
||||
"gallery_images",
|
||||
{
|
||||
"type": "key",
|
||||
"name": "image_file_size",
|
||||
"columns": [
|
||||
"image_file_size"
|
||||
],
|
||||
"length": [
|
||||
null
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"2": {
|
||||
"method": "addIndex",
|
||||
"params": [
|
||||
"gallery_images",
|
||||
{
|
||||
"type": "key",
|
||||
"name": "image_views",
|
||||
"columns": [
|
||||
"image_views"
|
||||
],
|
||||
"length": [
|
||||
null
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"id": 107721,
|
||||
"name": "4.7.14 Beta 2",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeSettings": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"hooks": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"id": 107722,
|
||||
"name": "4.7.14",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeSettings": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"hooks": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"id": 107723,
|
||||
"name": "4.7.14",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeSettings": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"hooks": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"id": 107724,
|
||||
"name": "4.7.14",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeSettings": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"hooks": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"id": 107730,
|
||||
"name": "4.7.15 Beta 1",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": true,
|
||||
"themeSettings": false,
|
||||
"javascript": true,
|
||||
"emailTemplates": false,
|
||||
"hooks": 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,19 @@
|
||||
{
|
||||
"html": {
|
||||
"added": [],
|
||||
"edited": [
|
||||
"front\/submit\/wrapper"
|
||||
],
|
||||
"removed": []
|
||||
},
|
||||
"css": {
|
||||
"added": [],
|
||||
"edited": [],
|
||||
"removed": []
|
||||
},
|
||||
"resources": {
|
||||
"added": [],
|
||||
"edited": [],
|
||||
"removed": []
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"id": 107731,
|
||||
"name": "4.7.15 Beta 2",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeSettings": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"hooks": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"id": 107732,
|
||||
"name": "4.7.15",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeSettings": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"hooks": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"id": 107733,
|
||||
"name": "4.7.15",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeSettings": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"hooks": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"id": 107734,
|
||||
"name": "4.7.15",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": true,
|
||||
"themeSettings": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"hooks": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"html": {
|
||||
"added": [],
|
||||
"edited": [],
|
||||
"removed": []
|
||||
},
|
||||
"css": {
|
||||
"added": [],
|
||||
"edited": [
|
||||
"front\/gallery.css"
|
||||
],
|
||||
"removed": []
|
||||
},
|
||||
"resources": {
|
||||
"added": [],
|
||||
"edited": [],
|
||||
"removed": []
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"id": 107740,
|
||||
"name": "4.7.16 Beta 1",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeSettings": false,
|
||||
"javascript": true,
|
||||
"emailTemplates": false,
|
||||
"hooks": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": true,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"files": {
|
||||
"added": [],
|
||||
"edited": [],
|
||||
"removed": []
|
||||
},
|
||||
"orders": {
|
||||
"added": [],
|
||||
"edited": [
|
||||
"global\/\/dev\/js\/\/library\/\/jquery"
|
||||
],
|
||||
"removed": []
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"id": 107741,
|
||||
"name": "4.7.16 Beta 2",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeSettings": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"hooks": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"id": 107742,
|
||||
"name": "4.7.16 Beta 3",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeSettings": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"hooks": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"id": 107743,
|
||||
"name": "4.7.16 Beta 4",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeSettings": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"hooks": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"id": 107744,
|
||||
"name": "4.7.16 Beta 5",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeSettings": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"hooks": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"id": 107745,
|
||||
"name": "4.7.16",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeSettings": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"hooks": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"id": 107746,
|
||||
"name": "4.7.16",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeSettings": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"hooks": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"id": 107747,
|
||||
"name": "4.7.16",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeSettings": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"hooks": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"id": 107748,
|
||||
"name": "4.7.16",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeSettings": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"hooks": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"id": 107749,
|
||||
"name": "4.7.16",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeSettings": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"hooks": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"id": 107750,
|
||||
"name": "4.7.16",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeSettings": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"hooks": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"id": 107751,
|
||||
"name": "4.7.16",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeSettings": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"hooks": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"id": 107760,
|
||||
"name": "4.7.17 Beta 1",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeSettings": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"hooks": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"id": 107761,
|
||||
"name": "4.7.17 Beta 2",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeSettings": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"hooks": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"id": 107762,
|
||||
"name": "4.7.17 Beta 3",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeSettings": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"hooks": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"id": 107763,
|
||||
"name": "4.7.17",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeSettings": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"hooks": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"id": 107764,
|
||||
"name": "4.7.17",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeSettings": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"hooks": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"id": 107765,
|
||||
"name": "4.7.17",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeSettings": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"hooks": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"id": 107770,
|
||||
"name": "4.7.18 Beta 1",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeSettings": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"hooks": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"id": 107771,
|
||||
"name": "4.7.18 Beta 2",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeSettings": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"hooks": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"id": 107772,
|
||||
"name": "4.7.18 Beta 3",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeSettings": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"hooks": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"id": 107773,
|
||||
"name": "4.7.18",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeSettings": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"hooks": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"id": 107774,
|
||||
"name": "4.7.18",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeSettings": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"hooks": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"id": 107775,
|
||||
"name": "4.7.18",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeSettings": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"hooks": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"id": 107780,
|
||||
"name": "4.7.19 Beta 1",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": true,
|
||||
"themeSettings": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"hooks": 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 @@
|
||||
{
|
||||
"html": {
|
||||
"added": [],
|
||||
"edited": [
|
||||
"front\/global\/comment",
|
||||
"front\/global\/commentContainer",
|
||||
"front\/global\/review",
|
||||
"front\/global\/reviewContainer"
|
||||
],
|
||||
"removed": []
|
||||
},
|
||||
"css": {
|
||||
"added": [],
|
||||
"edited": [],
|
||||
"removed": []
|
||||
},
|
||||
"resources": {
|
||||
"added": [],
|
||||
"edited": [],
|
||||
"removed": []
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"id": 107781,
|
||||
"name": "4.7.19 Beta 2",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeSettings": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"hooks": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"id": 107782,
|
||||
"name": "4.7.19 Beta 3",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeSettings": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"hooks": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"id": 107783,
|
||||
"name": "4.7.19 Beta 4",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeSettings": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"hooks": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"id": 107784,
|
||||
"name": "4.7.19",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeSettings": false,
|
||||
"javascript": true,
|
||||
"emailTemplates": false,
|
||||
"hooks": 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,23 @@
|
||||
{
|
||||
"id": 107785,
|
||||
"name": "4.7.19",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeSettings": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"hooks": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"id": 107786,
|
||||
"name": "4.7.19",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeSettings": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"hooks": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"id": 107787,
|
||||
"name": "4.7.19",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeSettings": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"hooks": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"id": 107795,
|
||||
"name": "4.7.20 Beta 1",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeSettings": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"hooks": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"id": 107796,
|
||||
"name": "4.7.20 Beta 2",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeSettings": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"hooks": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"id": 107797,
|
||||
"name": "4.7.20 Beta 3",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeSettings": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"hooks": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"id": 107798,
|
||||
"name": "4.7.20 Beta 4",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeSettings": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"hooks": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"id": 107799,
|
||||
"name": "4.7.20 Beta 5",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeSettings": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"hooks": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"id": 107800,
|
||||
"name": "4.7.20",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeSettings": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"hooks": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"id": 107801,
|
||||
"name": "4.7.20",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeSettings": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"hooks": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"id": 107802,
|
||||
"name": "4.7.20",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeSettings": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"hooks": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"id": 107803,
|
||||
"name": "4.7.20",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": true,
|
||||
"themeSettings": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"hooks": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"html": {
|
||||
"added": [],
|
||||
"edited": [],
|
||||
"removed": []
|
||||
},
|
||||
"css": {
|
||||
"added": [],
|
||||
"edited": [
|
||||
"front\/global.css"
|
||||
],
|
||||
"removed": []
|
||||
},
|
||||
"resources": {
|
||||
"added": [],
|
||||
"edited": [],
|
||||
"removed": []
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"id": 107810,
|
||||
"name": "4.7.21 Beta 1",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": true,
|
||||
"themeSettings": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"hooks": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"html": {
|
||||
"added": [],
|
||||
"edited": [],
|
||||
"removed": []
|
||||
},
|
||||
"css": {
|
||||
"added": [],
|
||||
"edited": [
|
||||
"front\/global.css"
|
||||
],
|
||||
"removed": []
|
||||
},
|
||||
"resources": {
|
||||
"added": [],
|
||||
"edited": [],
|
||||
"removed": []
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"id": 107811,
|
||||
"name": "4.7.21",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": true,
|
||||
"themeSettings": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"hooks": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"html": {
|
||||
"added": [],
|
||||
"edited": [],
|
||||
"removed": []
|
||||
},
|
||||
"css": {
|
||||
"added": [],
|
||||
"edited": [
|
||||
"front\/global.css"
|
||||
],
|
||||
"removed": []
|
||||
},
|
||||
"resources": {
|
||||
"added": [],
|
||||
"edited": [],
|
||||
"removed": []
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"id": 107815,
|
||||
"name": "4.7.22 Beta 1",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": true,
|
||||
"themeSettings": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"hooks": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"html": {
|
||||
"added": [],
|
||||
"edited": [],
|
||||
"removed": []
|
||||
},
|
||||
"css": {
|
||||
"added": [],
|
||||
"edited": [
|
||||
"front\/global.css"
|
||||
],
|
||||
"removed": []
|
||||
},
|
||||
"resources": {
|
||||
"added": [],
|
||||
"edited": [],
|
||||
"removed": []
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"id": 107816,
|
||||
"name": "4.7.22 Beta 2",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": true,
|
||||
"themeSettings": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"hooks": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"html": {
|
||||
"added": [],
|
||||
"edited": [],
|
||||
"removed": []
|
||||
},
|
||||
"css": {
|
||||
"added": [],
|
||||
"edited": [
|
||||
"front\/global.css"
|
||||
],
|
||||
"removed": []
|
||||
},
|
||||
"resources": {
|
||||
"added": [],
|
||||
"edited": [],
|
||||
"removed": []
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"id": 107817,
|
||||
"name": "4.7.22",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": true,
|
||||
"themeSettings": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"hooks": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"html": {
|
||||
"added": [],
|
||||
"edited": [],
|
||||
"removed": []
|
||||
},
|
||||
"css": {
|
||||
"added": [],
|
||||
"edited": [
|
||||
"front\/global.css"
|
||||
],
|
||||
"removed": []
|
||||
},
|
||||
"resources": {
|
||||
"added": [],
|
||||
"edited": [],
|
||||
"removed": []
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"id": 107818,
|
||||
"name": "4.7.22",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": true,
|
||||
"themeSettings": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"hooks": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"html": {
|
||||
"added": [],
|
||||
"edited": [],
|
||||
"removed": []
|
||||
},
|
||||
"css": {
|
||||
"added": [],
|
||||
"edited": [
|
||||
"front\/global.css"
|
||||
],
|
||||
"removed": []
|
||||
},
|
||||
"resources": {
|
||||
"added": [],
|
||||
"edited": [],
|
||||
"removed": []
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"id": 107819,
|
||||
"name": "4.7.22",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": true,
|
||||
"themeSettings": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"hooks": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"html": {
|
||||
"added": [],
|
||||
"edited": [],
|
||||
"removed": []
|
||||
},
|
||||
"css": {
|
||||
"added": [],
|
||||
"edited": [
|
||||
"front\/global.css"
|
||||
],
|
||||
"removed": []
|
||||
},
|
||||
"resources": {
|
||||
"added": [],
|
||||
"edited": [],
|
||||
"removed": []
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"id": 107820,
|
||||
"name": "4.7.22",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": true,
|
||||
"themeSettings": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"hooks": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"html": {
|
||||
"added": [],
|
||||
"edited": [],
|
||||
"removed": []
|
||||
},
|
||||
"css": {
|
||||
"added": [],
|
||||
"edited": [
|
||||
"front\/global.css"
|
||||
],
|
||||
"removed": []
|
||||
},
|
||||
"resources": {
|
||||
"added": [],
|
||||
"edited": [],
|
||||
"removed": []
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"id": 107826,
|
||||
"name": "4.7.23 Beta 1",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": true,
|
||||
"themeSettings": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"hooks": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"html": {
|
||||
"added": [],
|
||||
"edited": [],
|
||||
"removed": []
|
||||
},
|
||||
"css": {
|
||||
"added": [],
|
||||
"edited": [
|
||||
"front\/global.css"
|
||||
],
|
||||
"removed": []
|
||||
},
|
||||
"resources": {
|
||||
"added": [],
|
||||
"edited": [],
|
||||
"removed": []
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"id": 107827,
|
||||
"name": "4.7.23",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": true,
|
||||
"themeSettings": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"hooks": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"html": {
|
||||
"added": [],
|
||||
"edited": [],
|
||||
"removed": []
|
||||
},
|
||||
"css": {
|
||||
"added": [],
|
||||
"edited": [
|
||||
"front\/global.css"
|
||||
],
|
||||
"removed": []
|
||||
},
|
||||
"resources": {
|
||||
"added": [],
|
||||
"edited": [],
|
||||
"removed": []
|
||||
}
|
||||
}
|
||||
@@ -12,6 +12,9 @@
|
||||
namespace IPS\gallery;
|
||||
|
||||
/* To prevent PHP errors (extending class does not exist) revealing path */
|
||||
|
||||
use IPS\Content\Comment;
|
||||
|
||||
if ( !\defined( '\IPS\SUITE_UNIQUE_KEY' ) )
|
||||
{
|
||||
header( ( isset( $_SERVER['SERVER_PROTOCOL'] ) ? $_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.0' ) . ' 403 Forbidden' );
|
||||
@@ -20,9 +23,13 @@ if ( !\defined( '\IPS\SUITE_UNIQUE_KEY' ) )
|
||||
|
||||
/**
|
||||
* Album Node
|
||||
*
|
||||
* @note SELECT_FROM_WRITE_SERVER all instances added in 214656fad607b29fb87e99be2bf5e3099108d661 "One common reproduction of this is being able to see a topic title and link for a topic that has been deleted."
|
||||
*/
|
||||
class _Album extends \IPS\Node\Model implements \IPS\Node\Ratings, \IPS\Content\Embeddable
|
||||
{
|
||||
use \IPS\Node\DelayedCount;
|
||||
|
||||
/**
|
||||
* @brief Define view access levels
|
||||
*/
|
||||
@@ -884,13 +891,19 @@ class _Album extends \IPS\Node\Model implements \IPS\Node\Ratings, \IPS\Content\
|
||||
/**
|
||||
* Set last comment
|
||||
*
|
||||
* @param \IPS\Content\Comment|NULL $comment The latest comment or NULL to work it out
|
||||
* @return int
|
||||
* @note We actually want to set the last image info, not the last comment, so we ignore $comment
|
||||
* @param Comment|null $comment The latest comment or NULL to work it out
|
||||
* @param Item|null $updatedItem We sometimes run setLastComment() when an item has been edited, if so, that item will be here
|
||||
* @return void
|
||||
*/
|
||||
public function setLastComment( \IPS\Content\Comment $comment=NULL )
|
||||
public function _setLastComment( \IPS\Content\Comment $comment=NULL, \IPS\Content\Item $updatedItem=NULL )
|
||||
{
|
||||
$this->setLastImage();
|
||||
/* If this updated comment is older than the last shown on the node, do nothing */
|
||||
if( $updatedItem !== NULL AND $updatedItem->mapped('last_comment') < $this->last_img_date )
|
||||
{
|
||||
$updatedItem = null;
|
||||
}
|
||||
|
||||
$this->setLastImage( $updatedItem );
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -915,42 +928,55 @@ class _Album extends \IPS\Node\Model implements \IPS\Node\Ratings, \IPS\Content\
|
||||
*/
|
||||
public function setLastImage( \IPS\gallery\Image $image=NULL, $sortBy='image_date DESC' )
|
||||
{
|
||||
/* Figure out our latest images in this album */
|
||||
$_latestImages = array();
|
||||
|
||||
$this->last_img_date = 0;
|
||||
$this->last_img_id = 0;
|
||||
foreach( \IPS\Db::i()->select( '*', 'gallery_images', array( 'image_album_id=? AND image_approved=1', $this->id ), $sortBy, array( 0, 20 ), NULL, NULL, \IPS\Db::SELECT_FROM_WRITE_SERVER ) as $image )
|
||||
/* Make sure the image is actually the latest */
|
||||
if( $image !== null and $image->date < $this->last_img_date )
|
||||
{
|
||||
if( $image['image_date'] > $this->last_img_date )
|
||||
{
|
||||
$this->last_img_date = $image['image_date'];
|
||||
$this->last_img_id = $image['image_id'];
|
||||
}
|
||||
|
||||
$_latestImages[] = $image['image_id'];
|
||||
$image = null;
|
||||
}
|
||||
|
||||
$this->last_x_images = json_encode( $_latestImages );
|
||||
/* If we have one, just use it */
|
||||
if( $image !== null )
|
||||
{
|
||||
$this->last_img_date = $image->date;
|
||||
$this->last_img_id = $image->id;
|
||||
|
||||
/* Now get the counts and set them for our images */
|
||||
$this->_items = \IPS\Db::i()->select( 'COUNT(*) as total', 'gallery_images', array( 'image_album_id=? AND image_approved=1', $this->id ), NULL, NULL, NULL, NULL, \IPS\Db::SELECT_FROM_WRITE_SERVER )->first();
|
||||
$this->_unapprovedItems = \IPS\Db::i()->select( 'COUNT(*) as total', 'gallery_images', array( 'image_album_id=? AND image_approved=0', $this->id ), NULL, NULL, NULL, NULL, \IPS\Db::SELECT_FROM_WRITE_SERVER )->first();
|
||||
$_latestImages = json_decode( $this->last_x_images, true );
|
||||
if( !is_array($_latestImages ) )
|
||||
{
|
||||
$_latestImages = [];
|
||||
}
|
||||
if( !in_array( $image->id, $_latestImages ) )
|
||||
{
|
||||
array_unshift( $_latestImages, $image->id );
|
||||
if( count( $_latestImages ) > 20 )
|
||||
{
|
||||
array_pop( $_latestImages );
|
||||
}
|
||||
$this->last_x_images = json_encode( $_latestImages );
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Figure out our latest images in this album */
|
||||
$_latestImages = array();
|
||||
|
||||
$this->_comments = \IPS\Db::i()->select( 'COUNT(*) as total', 'gallery_comments', array( 'gallery_images.image_album_id=? AND comment_approved=1 AND gallery_images.image_approved=1', $this->id ), NULL, NULL, NULL, NULL, \IPS\Db::SELECT_FROM_WRITE_SERVER )->join( 'gallery_images', 'image_id=comment_img_id' )->first();
|
||||
$this->_unapprovedComments = \IPS\Db::i()->select( 'COUNT(*) as total', 'gallery_comments', array( 'gallery_images.image_album_id=? AND comment_approved=0', $this->id ), NULL, NULL, NULL, NULL, \IPS\Db::SELECT_FROM_WRITE_SERVER )->join( 'gallery_images', 'image_id=comment_img_id' )->first();
|
||||
|
||||
$this->_reviews = \IPS\Db::i()->select( 'COUNT(*) as total', 'gallery_reviews', array( 'gallery_images.image_album_id=? AND review_approved=1', $this->id ), NULL, NULL, NULL, NULL, \IPS\Db::SELECT_FROM_WRITE_SERVER )->join( 'gallery_images', 'image_id=review_image_id' )->first();
|
||||
$this->_unapprovedReviews = \IPS\Db::i()->select( 'COUNT(*) as total', 'gallery_reviews', array( 'gallery_images.image_album_id=? AND review_approved=0', $this->id ), NULL, NULL, NULL, NULL, \IPS\Db::SELECT_FROM_WRITE_SERVER )->join( 'gallery_images', 'image_id=review_image_id' )->first();
|
||||
$this->last_img_date = 0;
|
||||
$this->last_img_id = 0;
|
||||
foreach( \IPS\Db::i()->select( '*', 'gallery_images', array( 'image_album_id=? AND image_approved=1', $this->id ), $sortBy, array( 0, 20 ) ) as $image )
|
||||
{
|
||||
if( $image['image_date'] > $this->last_img_date )
|
||||
{
|
||||
$this->last_img_date = $image['image_date'];
|
||||
$this->last_img_id = $image['image_id'];
|
||||
}
|
||||
|
||||
/* And then get counts/latest data for the direct comments/reviews */
|
||||
$this->comments = (int) \IPS\Db::i()->select( 'COUNT(*) as total', 'gallery_album_comments', array( 'comment_album_id=? AND comment_approved=1', $this->id ), NULL, NULL, NULL, NULL, \IPS\Db::SELECT_FROM_WRITE_SERVER )->first();
|
||||
$this->comments_unapproved = (int) \IPS\Db::i()->select( 'COUNT(*) as total', 'gallery_album_comments', array( 'comment_album_id=? AND comment_approved=0', $this->id ), NULL, NULL, NULL, NULL, \IPS\Db::SELECT_FROM_WRITE_SERVER )->first();
|
||||
$this->comments_hidden = (int) \IPS\Db::i()->select( 'COUNT(*) as total', 'gallery_album_comments', array( 'comment_album_id=? AND comment_approved=-1', $this->id ), NULL, NULL, NULL, NULL, \IPS\Db::SELECT_FROM_WRITE_SERVER )->first();
|
||||
|
||||
$this->reviews = (int) \IPS\Db::i()->select( 'COUNT(*) as total', 'gallery_album_reviews', array( 'review_album_id=? AND review_approved=1', $this->id ), NULL, NULL, NULL, NULL, \IPS\Db::SELECT_FROM_WRITE_SERVER )->first();
|
||||
$this->reviews_unapproved = (int) \IPS\Db::i()->select( 'COUNT(*) as total', 'gallery_album_reviews', array( 'review_album_id=? AND review_approved=0', $this->id ), NULL, NULL, NULL, NULL, \IPS\Db::SELECT_FROM_WRITE_SERVER )->first();
|
||||
$this->reviews_hidden = (int) \IPS\Db::i()->select( 'COUNT(*) as total', 'gallery_album_reviews', array( 'review_album_id=? AND review_approved=-1', $this->id ), NULL, NULL, NULL, NULL, \IPS\Db::SELECT_FROM_WRITE_SERVER )->first();
|
||||
$_latestImages[] = $image['image_id'];
|
||||
}
|
||||
|
||||
$this->last_x_images = json_encode( $_latestImages );
|
||||
}
|
||||
|
||||
$this->save();
|
||||
|
||||
/* Save and then make sure search index is updated */
|
||||
\IPS\Content\Search\Index::i()->index( $this->asItem() );
|
||||
@@ -1558,4 +1584,43 @@ class _Album extends \IPS\Node\Model implements \IPS\Node\Ratings, \IPS\Content\
|
||||
{
|
||||
return $this->name;
|
||||
}
|
||||
|
||||
/**
|
||||
* Count all comments, items, etc
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
protected function recount()
|
||||
{
|
||||
/* Now get the counts and set them for our images */
|
||||
$this->_items = \IPS\Db::i()->select( 'COUNT(*) as total', 'gallery_images', array( 'image_album_id=? AND image_approved=1', $this->id ) )->first();
|
||||
$this->_unapprovedItems = \IPS\Db::i()->select( 'COUNT(*) as total', 'gallery_images', array( 'image_album_id=? AND image_approved=0', $this->id ) )->first();
|
||||
|
||||
if( $this->allow_comments )
|
||||
{
|
||||
$this->_comments = \IPS\Db::i()->select( 'COUNT(*) as total', 'gallery_comments', array( 'gallery_images.image_album_id=? AND comment_approved=1 AND gallery_images.image_approved=1', $this->id ) )->join( 'gallery_images', 'image_id=comment_img_id' )->first();
|
||||
$this->_unapprovedComments = \IPS\Db::i()->select( 'COUNT(*) as total', 'gallery_comments', array( 'gallery_images.image_album_id=? AND comment_approved=0', $this->id ) )->join( 'gallery_images', 'image_id=comment_img_id' )->first();
|
||||
}
|
||||
|
||||
if( $this->use_comments )
|
||||
{
|
||||
/* And then get counts/latest data for the direct comments/reviews */
|
||||
$this->comments = (int) \IPS\Db::i()->select( 'COUNT(*) as total', 'gallery_album_comments', array( 'comment_album_id=? AND comment_approved=1', $this->id ) )->first();
|
||||
$this->comments_unapproved = (int) \IPS\Db::i()->select( 'COUNT(*) as total', 'gallery_album_comments', array( 'comment_album_id=? AND comment_approved=0', $this->id ) )->first();
|
||||
$this->comments_hidden = (int) \IPS\Db::i()->select( 'COUNT(*) as total', 'gallery_album_comments', array( 'comment_album_id=? AND comment_approved=-1', $this->id ) )->first();
|
||||
}
|
||||
|
||||
if( $this->allow_reviews )
|
||||
{
|
||||
$this->_reviews = \IPS\Db::i()->select( 'COUNT(*) as total', 'gallery_reviews', array( 'gallery_images.image_album_id=? AND review_approved=1', $this->id ) )->join( 'gallery_images', 'image_id=review_image_id' )->first();
|
||||
$this->_unapprovedReviews = \IPS\Db::i()->select( 'COUNT(*) as total', 'gallery_reviews', array( 'gallery_images.image_album_id=? AND review_approved=0', $this->id ) )->join( 'gallery_images', 'image_id=review_image_id' )->first();
|
||||
}
|
||||
|
||||
if( $this->use_reviews )
|
||||
{
|
||||
$this->reviews = (int) \IPS\Db::i()->select( 'COUNT(*) as total', 'gallery_album_reviews', array( 'review_album_id=? AND review_approved=1', $this->id ) )->first();
|
||||
$this->reviews_unapproved = (int) \IPS\Db::i()->select( 'COUNT(*) as total', 'gallery_album_reviews', array( 'review_album_id=? AND review_approved=0', $this->id ) )->first();
|
||||
$this->reviews_hidden = (int) \IPS\Db::i()->select( 'COUNT(*) as total', 'gallery_album_reviews', array( 'review_album_id=? AND review_approved=-1', $this->id ) )->first();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -701,6 +701,12 @@ class _Item extends \IPS\Content\Item implements
|
||||
return $lastMod;
|
||||
}
|
||||
|
||||
/**
|
||||
* Store club node IDs so we can save on queries
|
||||
* @var array|null
|
||||
*/
|
||||
protected static ?array $_clubNodeIds = null;
|
||||
|
||||
/**
|
||||
* Return query WHERE clause to use for getItemsWithPermission when excluding club content
|
||||
*
|
||||
@@ -708,16 +714,23 @@ class _Item extends \IPS\Content\Item implements
|
||||
*/
|
||||
public static function clubAlbumExclusion(): array
|
||||
{
|
||||
if( \IPS\Settings::i()->club_nodes_in_apps )
|
||||
if( !\IPS\Settings::i()->club_nodes_in_apps )
|
||||
{
|
||||
return array();
|
||||
}
|
||||
else
|
||||
{
|
||||
return array( array(
|
||||
'gallery_albums.album_category_id NOT IN(?)',
|
||||
\IPS\Db::i()->select( 'node_id', 'core_clubs_node_map', array( 'node_class=?', 'IPS\gallery\Category' ) )
|
||||
) );
|
||||
if( static::$_clubNodeIds === null )
|
||||
{
|
||||
static::$_clubNodeIds = iterator_to_array(
|
||||
\IPS\Db::i()->select( 'node_id', 'core_clubs_node_map', array( 'node_class=?', 'IPS\gallery\Category' ) )
|
||||
);
|
||||
}
|
||||
|
||||
if( \count( static::$_clubNodeIds ) )
|
||||
{
|
||||
return array(
|
||||
array( \IPS\Db::i()->in( 'gallery_albums.album_category_id', static::$_clubNodeIds, true ) )
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
return array();
|
||||
}
|
||||
}
|
||||
@@ -12,6 +12,9 @@
|
||||
namespace IPS\gallery;
|
||||
|
||||
/* To prevent PHP errors (extending class does not exist) revealing path */
|
||||
|
||||
use IPS\Content\Comment;
|
||||
|
||||
if ( !\defined( '\IPS\SUITE_UNIQUE_KEY' ) )
|
||||
{
|
||||
header( ( isset( $_SERVER['SERVER_PROTOCOL'] ) ? $_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.0' ) . ' 403 Forbidden' );
|
||||
@@ -23,7 +26,7 @@ if ( !\defined( '\IPS\SUITE_UNIQUE_KEY' ) )
|
||||
*/
|
||||
class _Category extends \IPS\Node\Model implements \IPS\Node\Permissions
|
||||
{
|
||||
use \IPS\Content\ClubContainer, \IPS\Content\ViewUpdates;
|
||||
use \IPS\Content\ClubContainer, \IPS\Content\ViewUpdates, \IPS\Node\DelayedCount;
|
||||
|
||||
/**
|
||||
* @brief [ActiveRecord] Multiton Store
|
||||
@@ -284,6 +287,7 @@ class _Category extends \IPS\Node\Model implements \IPS\Node\Permissions
|
||||
$class = \get_called_class();
|
||||
|
||||
$form->add( new \IPS\Helpers\Form\Node( 'gcategory_parent_id', $this->id ? $this->parent_id : ( \IPS\Request::i()->parent ?: 0 ), FALSE, array(
|
||||
'disableCopy' => true,
|
||||
'class' => '\IPS\gallery\Category',
|
||||
'disabled' => false,
|
||||
'zeroVal' => 'node_no_parentg',
|
||||
@@ -558,17 +562,23 @@ class _Category extends \IPS\Node\Model implements \IPS\Node\Permissions
|
||||
\IPS\Lang::deleteCustom( 'gallery', "gallery_category_{$this->id}_rules" );
|
||||
\IPS\Lang::deleteCustom( 'gallery', "gallery_category_{$this->id}_permerror" );
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Set last comment
|
||||
*
|
||||
* @param \IPS\Content\Comment|NULL $comment The latest comment or NULL to work it out
|
||||
* @return int
|
||||
* @note We actually want to set the last image info, not the last comment, so we ignore $comment
|
||||
* @param Comment|null $comment The latest comment or NULL to work it out
|
||||
* @param Item|null $updatedItem We sometimes run setLastComment() when an item has been edited, if so, that item will be here
|
||||
* @return void
|
||||
*/
|
||||
public function setLastComment( \IPS\Content\Comment $comment=NULL )
|
||||
public function _setLastComment( \IPS\Content\Comment $comment=NULL, \IPS\Content\Item $updatedItem=NULL )
|
||||
{
|
||||
$this->setLastImage();
|
||||
/* If this updated comment is older than the last shown on the node, do nothing */
|
||||
if( $updatedItem !== NULL AND $updatedItem->mapped('last_comment') < $this->last_img_date )
|
||||
{
|
||||
$updatedItem = null;
|
||||
}
|
||||
|
||||
$this->setLastImage( $updatedItem );
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -579,37 +589,44 @@ class _Category extends \IPS\Node\Model implements \IPS\Node\Permissions
|
||||
*/
|
||||
public function setLastImage( \IPS\gallery\Image $image=NULL )
|
||||
{
|
||||
/* Reset counts */
|
||||
$this->resetCommentCounts();
|
||||
$this->commentCountsReset = TRUE;
|
||||
/* Make sure the image is actually the latest */
|
||||
if( $image !== null and $image->date < $this->last_img_date )
|
||||
{
|
||||
$image = null;
|
||||
}
|
||||
|
||||
/* Reset last image */
|
||||
if( $image === NULL )
|
||||
/* If we have one, just use it */
|
||||
if( $image !== null )
|
||||
{
|
||||
$this->last_img_date = $image->date;
|
||||
$this->last_img_id = $image->id;
|
||||
}
|
||||
else
|
||||
{
|
||||
try
|
||||
{
|
||||
$result = \IPS\Db::i()->select( '*', 'gallery_images', array( 'image_category_id=? AND image_approved=1 AND ( image_album_id = 0 OR album_type NOT IN ( 2, 3 ) )', $this->id ), 'image_date DESC', 1, NULL, NULL, \IPS\Db::SELECT_FROM_WRITE_SERVER )->join(
|
||||
$result = \IPS\Db::i()->select( '*', 'gallery_images', array( 'image_category_id=? AND image_approved=1 AND ( image_album_id = 0 OR album_type NOT IN ( 2, 3 ) )', $this->id ), 'image_date DESC', 1 )->join(
|
||||
'gallery_albums',
|
||||
"image_album_id=album_id"
|
||||
)->first();
|
||||
|
||||
$image = \IPS\gallery\Image::constructFromData( $result );
|
||||
$this->last_img_id = $image->id;
|
||||
$this->last_img_date = $image->date;
|
||||
}
|
||||
catch ( \UnderflowException $e )
|
||||
{
|
||||
$this->last_img_id = 0;
|
||||
$this->last_img_date = 0;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
$this->last_img_id = $image->id;
|
||||
$this->last_img_date = $image->date;
|
||||
|
||||
$this->save();
|
||||
|
||||
if( $image->album_id )
|
||||
{
|
||||
$album = \IPS\gallery\Album::constructFromData( $result );
|
||||
$album->setLastImage();
|
||||
$album = isset( $result ) ? \IPS\gallery\Album::constructFromData( $result ) : $image->directContainer();
|
||||
$album->setLastImage( $image );
|
||||
$album->save();
|
||||
}
|
||||
}
|
||||
@@ -638,7 +655,7 @@ class _Category extends \IPS\Node\Model implements \IPS\Node\Permissions
|
||||
{
|
||||
try
|
||||
{
|
||||
$consolidated = \IPS\Db::i()->select( 'SUM(album_comments) as comments, SUM(album_comments_unapproved) as unapproved_comments', 'gallery_albums', array( 'album_category_id=?', $this->_id ), NULL, NULL, NULL, NULL, \IPS\Db::SELECT_FROM_WRITE_SERVER )->first();
|
||||
$consolidated = \IPS\Db::i()->select( 'SUM(album_comments) as comments, SUM(album_comments_unapproved) as unapproved_comments', 'gallery_albums', array( 'album_category_id=?', $this->_id ) )->first();
|
||||
|
||||
$this->_comments = $this->count_comments + $consolidated['comments'];
|
||||
$this->_unapprovedComments = $this->count_comments_hidden + $consolidated['unapproved_comments'];
|
||||
@@ -1070,4 +1087,34 @@ class _Category extends \IPS\Node\Model implements \IPS\Node\Permissions
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Count all comments, items, etc
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
protected function recount()
|
||||
{
|
||||
/* Now get the counts and set them for our images */
|
||||
$this->_items = \IPS\Db::i()->select( 'COUNT(*) as total', 'gallery_images', array( 'image_category_id=? AND image_approved=1', $this->id ) )->first();
|
||||
$this->_unapprovedItems = \IPS\Db::i()->select( 'COUNT(*) as total', 'gallery_images', array( 'image_category_id=? AND image_approved=0', $this->id ) )->first();
|
||||
|
||||
if( $this->allow_comments )
|
||||
{
|
||||
$this->_comments = \IPS\Db::i()->select( 'COUNT(*) as total', 'gallery_comments', array( 'gallery_images.image_category_id=? AND comment_approved=1 AND gallery_images.image_approved=1', $this->id ) )->join( 'gallery_images', 'image_id=comment_img_id' )->first();
|
||||
$this->_unapprovedComments = \IPS\Db::i()->select( 'COUNT(*) as total', 'gallery_comments', array( 'gallery_images.image_category_id=? AND comment_approved=0', $this->id ) )->join( 'gallery_images', 'image_id=comment_img_id' )->first();
|
||||
|
||||
/* And then get counts/latest data for the direct comments/reviews */
|
||||
$this->_comments += (int) \IPS\Db::i()->select( 'sum(album_comments)', 'gallery_albums', array( 'album_category_id=?', $this->id ) )->first();
|
||||
$this->_unapprovedComments += (int) \IPS\Db::i()->select( 'sum(album_comments_unapproved)', 'gallery_albums', array( 'album_category_id=?', $this->id ) )->first();
|
||||
}
|
||||
|
||||
if( $this->allow_reviews )
|
||||
{
|
||||
$this->_reviews = \IPS\Db::i()->select( 'COUNT(*) as total', 'gallery_reviews', array( 'gallery_images.image_category_id=? AND review_approved=1', $this->id ) )->join( 'gallery_images', 'image_id=review_image_id' )->first();
|
||||
$this->_unapprovedReviews = \IPS\Db::i()->select( 'COUNT(*) as total', 'gallery_reviews', array( 'gallery_images.image_category_id=? AND review_approved=0', $this->id ) )->join( 'gallery_images', 'image_id=review_image_id' )->first();
|
||||
|
||||
$this->_reviews += (int) \IPS\Db::i()->select( 'sum(album_reviews)', 'gallery_albums', array( 'album_category_id=?', $this->id ) )->first();
|
||||
$this->_unapprovedReviews += (int) \IPS\Db::i()->select( 'sum(album_reviews_unapproved)', 'gallery_albums', array( 'album_category_id=?', $this->id ) )->first();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -143,8 +143,66 @@ class _Comment extends \IPS\Content\Comment implements \IPS\Content\EditHistory,
|
||||
|
||||
if( $item->album_id )
|
||||
{
|
||||
\IPS\gallery\Album::load( $item->album_id )->setLastComment();
|
||||
\IPS\gallery\Album::load( $item->album_id )->save();
|
||||
$album = $item->directContainer();
|
||||
$album->setLastComment( $this, $item );
|
||||
|
||||
/* We need to increment the counters here because the parent method will increment
|
||||
the category but not the album */
|
||||
if ( !$item->hidden() and ! $item->approvedButHidden() and !$item->isFutureDate() )
|
||||
{
|
||||
$album->_comments = ( $album->_comments + 1 );
|
||||
}
|
||||
elseif ( !$item->approvedButHidden() AND $this->hidden() == 1 )
|
||||
{
|
||||
$album->_unapprovedComments = ( $album->_unapprovedComments >= 0 ) ? ( $album->_unapprovedComments + 1 ) : 0;
|
||||
}
|
||||
|
||||
$album->save();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Syncing to run when hiding
|
||||
*
|
||||
* @param \IPS\Member|NULL|FALSE $member The member doing the action (NULL for currently logged in member, FALSE for no member)
|
||||
* @return void
|
||||
*/
|
||||
public function onHide( $member )
|
||||
{
|
||||
parent::onHide( $member );
|
||||
|
||||
$item = $this->item();
|
||||
if( $item->album_id )
|
||||
{
|
||||
$album = $item->directContainer();
|
||||
$album->setLastComment();
|
||||
$album->_comments = ( $album->_comments - 1 );
|
||||
$album->save();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Syncing to run when unhiding
|
||||
*
|
||||
* @param bool $approving If true, is being approved for the first time
|
||||
* @param \IPS\Member|NULL|FALSE $member The member doing the action (NULL for currently logged in member, FALSE for no member)
|
||||
* @return void
|
||||
*/
|
||||
public function onUnhide( $approving, $member )
|
||||
{
|
||||
parent::onUnhide( $approving, $member );
|
||||
|
||||
$item = $this->item();
|
||||
if( $item->album_id )
|
||||
{
|
||||
$album = $item->directContainer();
|
||||
$album->setLastComment( $this );
|
||||
$album->_comments = ( $album->_comments + 1 );
|
||||
if( $approving )
|
||||
{
|
||||
$album->_unapprovedComments = ( $album->_unapprovedComments > 0 ) ? ( $album->_unapprovedComments - 1 ) : 0;
|
||||
}
|
||||
$album->save();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -987,22 +987,24 @@ class _Image extends \IPS\Content\Item implements
|
||||
|
||||
/* We need to sort on a unique value */
|
||||
$sortValue = $this->$sortBy . $this->updated;
|
||||
$sortBy = 'CONCAT(image_' . $sortBy . ',image_updated)';
|
||||
$where['date'] = array( "CONCAT(image_{$sortBy},image_updated) {$dir}= ?", $sortValue );
|
||||
$sortBy = 'image_' . $sortBy . ' ' . $direction. ',image_updated';
|
||||
}
|
||||
elseif( in_array( $sortBy, array( 'date', 'updated' ) ) )
|
||||
{
|
||||
/* We need to sort on a unique value */
|
||||
$sortValue = $this->$sortBy . $this->id;
|
||||
$sortBy = 'CONCAT(image_' . $sortBy . ',image_id)';
|
||||
$where['date'] = array( "CONCAT(image_{$sortBy},image_id) {$dir}= ?", $sortValue );
|
||||
$sortBy = 'image_' . $sortBy . ' ' . $direction. ',image_id';
|
||||
}
|
||||
else
|
||||
{
|
||||
$sortValue = $this->$sortBy;
|
||||
$sortBy = static::$databasePrefix . $sortBy;
|
||||
$where['date'] = array( $sortBy . " {$dir}= ?", $sortValue );
|
||||
}
|
||||
|
||||
$where['date'] = array( $sortBy . " {$dir}= ?", $sortValue );
|
||||
return iterator_to_array( \IPS\gallery\Image::getItemsWithPermission( $where, $sortBy . ' ' . $direction . ', image_id ' . $direction, $count ) );
|
||||
return iterator_to_array( \IPS\gallery\Image::getItemsWithPermission( $where, $sortBy . ' ' . $direction, $count, 'read', null, 0, null, false, false, false, false, null, false, false, false, false ) );
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1231,6 +1233,31 @@ class _Image extends \IPS\Content\Item implements
|
||||
return $return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Process created object AFTER the object has been created
|
||||
*
|
||||
* @param \IPS\Content\Comment|NULL $comment The first comment
|
||||
* @param array $values Values from form
|
||||
* @return void
|
||||
*/
|
||||
protected function processAfterCreate( $comment, $values )
|
||||
{
|
||||
parent::processAfterCreate( $comment, $values );
|
||||
|
||||
if( $this->album_id and !$this->isFutureDate() )
|
||||
{
|
||||
if( $this->hidden() === 0 and !$this->isFutureDate() )
|
||||
{
|
||||
$this->directContainer()->_items = ( $this->directContainer()->_items + 1 );
|
||||
}
|
||||
elseif( $this->hidden() === 1 )
|
||||
{
|
||||
$this->directContainer()->_unapprovedItems = ( $this->directContainer()->_unapprovedItems + 1 );
|
||||
}
|
||||
$this->directContainer()->save();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Process after the object has been edited on the front-end
|
||||
*
|
||||
@@ -1292,7 +1319,7 @@ class _Image extends \IPS\Content\Item implements
|
||||
|
||||
/* Get the file... */
|
||||
$file = NULL;
|
||||
if( isset( $values['imageLocation'] ) AND $values['imageLocation'] )
|
||||
if( isset( $values['imageLocation'] ) AND $values['imageLocation'] and $values['imageLocation'] != $this->original_file_name)
|
||||
{
|
||||
$file = \IPS\File::get( 'gallery_Images', $values['imageLocation'] );
|
||||
if ( isset( $values['imageRequiresModeration'] ) )
|
||||
@@ -1907,6 +1934,7 @@ class _Image extends \IPS\Content\Item implements
|
||||
if( $previousAlbum )
|
||||
{
|
||||
$album = \IPS\gallery\Album::load( $previousAlbum );
|
||||
$album->_items = $album->_items -1;
|
||||
$album->setLastImage();
|
||||
$album->save();
|
||||
}
|
||||
@@ -1915,6 +1943,7 @@ class _Image extends \IPS\Content\Item implements
|
||||
if( $this->album_id )
|
||||
{
|
||||
$album = \IPS\gallery\Album::load( $this->album_id );
|
||||
$album->_items = $album->_items +1;
|
||||
$album->setLastImage();
|
||||
$album->save();
|
||||
}
|
||||
@@ -2084,37 +2113,51 @@ class _Image extends \IPS\Content\Item implements
|
||||
*/
|
||||
public static function getItemsWithPermissionWhere( $where, $member, &$joins )
|
||||
{
|
||||
/* Then we need to make sure we can access the album the image is in, if applicable */
|
||||
$member = $member ?: \IPS\Member::loggedIn();
|
||||
$restricted = $member->socialGroups();
|
||||
|
||||
/* If you can edit images in a category you can see images in private albums in that category. We can only really check globally at this stage, however. */
|
||||
if( \IPS\gallery\Image::modPermission( 'edit', $member ) )
|
||||
/* If we already filtered by a specific album, we can stop right here */
|
||||
if( array_key_exists( 'album', $where ) )
|
||||
{
|
||||
return array();
|
||||
}
|
||||
|
||||
if( \count( $restricted ) )
|
||||
/* Then we need to make sure we can access the album the image is in, if applicable */
|
||||
$member = $member ?: \IPS\Member::loggedIn();
|
||||
|
||||
/* Skip permissions for guests */
|
||||
if( !$member->member_id )
|
||||
{
|
||||
$subQuery = array( "( album_type=1 OR ( album_type=2 AND album_owner_id=? ) OR ( album_type=3 AND ( album_owner_id=? OR album_allowed_access IN (" . implode( ',', $restricted ) . ") ) ) )", $member->member_id, $member->member_id );
|
||||
$subQuery = array( "album_type=1 AND album_hidden=0" );
|
||||
}
|
||||
else
|
||||
{
|
||||
$subQuery = array( "( album_type=1 OR ( album_type=2 AND album_owner_id=? ) )", $member->member_id );
|
||||
}
|
||||
|
||||
/* Make sure the images aren't in hidden albums, unless we can view hidden albums */
|
||||
$hiddenContainers = \IPS\gallery\Album\Item::canViewHiddenItemsContainers( $member );
|
||||
|
||||
if( $hiddenContainers !== TRUE )
|
||||
{
|
||||
if( \is_array( $hiddenContainers ) AND \count( $hiddenContainers ) )
|
||||
/* If you can edit images in a category you can see images in private albums in that category. We can only really check globally at this stage, however. */
|
||||
if( \IPS\gallery\Image::modPermission( 'edit', $member ) )
|
||||
{
|
||||
$subQuery[0] .= " AND ( album_hidden=0 OR album_category_id IN(" . implode( ',', $hiddenContainers ) . ") )";
|
||||
return array();
|
||||
}
|
||||
|
||||
$restricted = $member->socialGroups();
|
||||
if( \count( $restricted ) )
|
||||
{
|
||||
$subQuery = array( "( album_type=1 OR ( album_type=2 AND album_owner_id=? ) OR ( album_type=3 AND ( album_owner_id=? OR album_allowed_access IN (" . implode( ',', $restricted ) . ") ) ) )", $member->member_id, $member->member_id );
|
||||
}
|
||||
else
|
||||
{
|
||||
$subQuery[0] .= " AND album_hidden=0";
|
||||
$subQuery = array( "( album_type=1 OR ( album_type=2 AND album_owner_id=? ) )", $member->member_id );
|
||||
}
|
||||
|
||||
/* Make sure the images aren't in hidden albums, unless we can view hidden albums */
|
||||
$hiddenContainers = \IPS\gallery\Album\Item::canViewHiddenItemsContainers( $member );
|
||||
|
||||
if( $hiddenContainers !== TRUE )
|
||||
{
|
||||
if( \is_array( $hiddenContainers ) AND \count( $hiddenContainers ) )
|
||||
{
|
||||
$subQuery[0] .= " AND ( album_hidden=0 OR album_category_id IN(" . implode( ',', $hiddenContainers ) . ") )";
|
||||
}
|
||||
else
|
||||
{
|
||||
$subQuery[0] .= " AND album_hidden=0";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2470,6 +2513,12 @@ class _Image extends \IPS\Content\Item implements
|
||||
return $member->group['g_download_original'];
|
||||
}
|
||||
|
||||
/**
|
||||
* Store club node IDs so we can save on queries
|
||||
* @var array|null
|
||||
*/
|
||||
protected static ?array $_clubNodeIds = null;
|
||||
|
||||
/**
|
||||
* Return query WHERE clause to use for getItemsWithPermission when excluding club content
|
||||
*
|
||||
@@ -2477,17 +2526,22 @@ class _Image extends \IPS\Content\Item implements
|
||||
*/
|
||||
public static function clubImageExclusion(): array
|
||||
{
|
||||
if( \IPS\Settings::i()->club_nodes_in_apps )
|
||||
if( !\IPS\Settings::i()->club_nodes_in_apps )
|
||||
{
|
||||
return array();
|
||||
}
|
||||
else
|
||||
{
|
||||
return array( array(
|
||||
'gallery_images.image_category_id NOT IN(?)',
|
||||
\IPS\Db::i()->select( 'node_id', 'core_clubs_node_map', array( 'node_class=?', 'IPS\gallery\Category' ) )
|
||||
) );
|
||||
if( static::$_clubNodeIds === null )
|
||||
{
|
||||
static::$_clubNodeIds = iterator_to_array( \IPS\Db::i()->select( 'node_id', 'core_clubs_node_map', array( 'node_class=?', 'IPS\gallery\Category' ) ) );
|
||||
}
|
||||
|
||||
if( \count( static::$_clubNodeIds ) )
|
||||
{
|
||||
return array(
|
||||
array( \IPS\Db::i()->in( 'gallery_images.image_category_id', static::$_clubNodeIds, true ) )
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
return array();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in new issue
Block a user