Version 4.6.0

This commit is contained in:
Neo committed 2025-12-19 05:55:31 -08:00
1 parent f79dcf067a
commit 517a5e1f70
2036 files changed
+110041 -26162

No files matched your search

+2 -1
View File
@@ -4,5 +4,6 @@
"app_directory": "gallery",
"app_protected": 0,
"app_website": null,
"app_update_check": null
"app_update_check": null,
"app_hide_tab": 0
}
+1 -1
View File
@@ -5,7 +5,7 @@
<module key="front/gallery"><![CDATA[{"default_controller":"browse","protected":0,"default":1}]]></module>
<task frequency="P0Y0M1DT0H0M0S">clearBandwidthLog</task>
<task frequency="P0Y0M1DT0H0M0S">clearUploads</task>
<setting key="gallery_bandwidth_period"><![CDATA[{"key":"gallery_bandwidth_period","default":"-1","report":"full"}]]></setting>
<setting key="gallery_bandwidth_period"><![CDATA[{"key":"gallery_bandwidth_period","default":"8760","report":"full"}]]></setting>
<setting key="gallery_detailed_bandwidth"><![CDATA[{"key":"gallery_detailed_bandwidth","default":"1","report":"full"}]]></setting>
<setting key="gallery_large_dims"><![CDATA[{"key":"gallery_large_dims","default":"1600x1200","report":"full"}]]></setting>
<setting key="gallery_maps_default"><![CDATA[{"key":"gallery_maps_default","default":"0","report":"full"}]]></setting>
+13 -13
View File
@@ -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.lightbox.js" javascript_type="controller" javascript_version="105100" javascript_position="1000200"><![CDATA[/**
<file javascript_app="gallery" javascript_location="front" javascript_path="controllers/browse" javascript_name="ips.browse.lightbox.js" javascript_type="controller" javascript_version="106107" javascript_position="1000200"><![CDATA[/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -193,7 +193,7 @@
}
});
}(jQuery, _));]]></file>
<file javascript_app="gallery" javascript_location="front" javascript_path="controllers/browse" javascript_name="ips.browse.list.js" javascript_type="controller" javascript_version="105100" javascript_position="1000200">/**
<file javascript_app="gallery" javascript_location="front" javascript_path="controllers/browse" javascript_name="ips.browse.list.js" javascript_type="controller" javascript_version="106107" javascript_position="1000200">/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -241,7 +241,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="105100" 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="106107" javascript_position="1000050">/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -298,7 +298,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="105100" javascript_position="1000100"><![CDATA[/**
<file javascript_app="gallery" javascript_location="front" javascript_path="controllers/submit" javascript_name="ips.submit.chooseCategory.js" javascript_type="controller" javascript_version="106107" javascript_position="1000100"><![CDATA[/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -498,7 +498,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="105100" javascript_position="1000100"><![CDATA[/**
<file javascript_app="gallery" javascript_location="front" javascript_path="controllers/submit" javascript_name="ips.submit.existingAlbums.js" javascript_type="controller" javascript_version="106107" javascript_position="1000100"><![CDATA[/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -545,7 +545,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="105100" javascript_position="1000100"><![CDATA[/**
<file javascript_app="gallery" javascript_location="front" javascript_path="controllers/submit" javascript_name="ips.submit.uploadImages.js" javascript_type="controller" javascript_version="106107" javascript_position="1000100"><![CDATA[/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -676,7 +676,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="105100" javascript_position="1000100"><![CDATA[/**
<file javascript_app="gallery" javascript_location="front" javascript_path="controllers/submit" javascript_name="ips.submit.wrapper.js" javascript_type="controller" javascript_version="106107" javascript_position="1000100"><![CDATA[/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -1409,7 +1409,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="105100" javascript_position="1000150"><![CDATA[/**
<file javascript_app="gallery" javascript_location="front" javascript_path="controllers/view" javascript_name="ips.view.image.js" javascript_type="controller" javascript_version="106107" javascript_position="1000150"><![CDATA[/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -2184,7 +2184,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="105100" javascript_position="1000150"><![CDATA[/**
<file javascript_app="gallery" javascript_location="front" javascript_path="controllers/view" javascript_name="ips.view.note.js" javascript_type="controller" javascript_version="106107" javascript_position="1000150"><![CDATA[/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -2650,7 +2650,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="105100" javascript_position="1000150"><![CDATA[/**
<file javascript_app="gallery" javascript_location="front" javascript_path="controllers/view" javascript_name="ips.view.notes.js" javascript_type="controller" javascript_version="106107" javascript_position="1000150"><![CDATA[/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -2733,7 +2733,7 @@
}
});
}(jQuery, _));]]></file>
<file javascript_app="gallery" javascript_location="front" javascript_path="templates" javascript_name="ips.templates.browse.js" javascript_type="template" javascript_version="105100" javascript_position="1000050"><![CDATA[ips.templates.set('gallery.patchwork.indexItem', " \
<file javascript_app="gallery" javascript_location="front" javascript_path="templates" javascript_name="ips.templates.browse.js" javascript_type="template" javascript_version="106107" javascript_position="1000050"><![CDATA[ips.templates.set('gallery.patchwork.indexItem', " \
{{#showThumb}}\
<span class='cGalleryPatchwork_item' style='width: {{dims.width}}px; height: {{dims.height}}px; margin: {{dims.margin}}px {{dims.marginRight}}px {{dims.margin}}px {{dims.marginLeft}}px'>\
{{/showThumb}}\
@@ -2848,7 +2848,7 @@ ips.templates.set('gallery.lightbox.wrapper', " \
<div class='cLightboxBack'></div>\
</div>\
");]]></file>
<file javascript_app="gallery" javascript_location="front" javascript_path="templates" javascript_name="ips.templates.submit.js" javascript_type="template" javascript_version="105100" javascript_position="1000050"><![CDATA[ips.templates.set('gallery.submit.imageItem', " \
<file javascript_app="gallery" javascript_location="front" javascript_path="templates" javascript_name="ips.templates.submit.js" javascript_type="template" javascript_version="106107" 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>\
@@ -2875,7 +2875,7 @@ ips.templates.set('gallery.lightbox.wrapper', " \
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="105100" javascript_position="1000050"><![CDATA[ips.templates.set('gallery.notes.wrapper', " \
<file javascript_app="gallery" javascript_location="front" javascript_path="templates" javascript_name="ips.templates.view.js" javascript_type="template" javascript_version="106107" 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'>\
+12 -2
View File
@@ -1,21 +1,27 @@
<?xml version="1.0" encoding="UTF-8"?>
<language>
<app key="gallery" version="105100">
<app key="gallery" version="106107">
<word key="__app_gallery" js="0">Gallery</word>
<word key="frontnavigation_gallery" js="0">Gallery</word>
<word key="gallery_title" js="0">Gallery</word>
<word key="__indefart_gallery_image_comment" js="0">a comment on a gallery image</word>
<word key="__indefart_gallery_image" js="0">a gallery image</word>
<word key="__defart_gallery_image_comment" js="0">comment on a gallery image</word>
<word key="__defart_gallery_image_comment_plural" js="0">{!#[1:comment][?:comments]} on a gallery image</word>
<word key="__defart_gallery_image" js="0">gallery image</word>
<word key="__defart_gallery_image_plural" js="0">gallery {!#[1:image][?:images]}</word>
<word key="__indefart_gallery_album_comment" js="0">a comment on a gallery album</word>
<word key="__indefart_gallery_album" js="0">a gallery album</word>
<word key="__defart_gallery_album_comment" js="0">comment on a gallery album</word>
<word key="__defart_gallery_album_comment_plural" js="0">{!#[1:comment][?:comments]} on a gallery album</word>
<word key="__defart_gallery_album" js="0">gallery album</word>
<word key="__defart_gallery_album_plural" js="0">gallery {!#[1:album][?:albums]}</word>
<word key="__indefart_gallery_image_review" js="0">a review on a gallery image</word>
<word key="__defart_gallery_image_review" js="0">review on a gallery image</word>
<word key="__defart_gallery_image_review_plural" js="0">{!#[1:review][?:reviews]} on a gallery image</word>
<word key="__indefart_gallery_album_review" js="0">a review on a gallery album</word>
<word key="__defart_gallery_album_review" js="0">review on a gallery album</word>
<word key="__defart_gallery_album_review_plural" js="0">{!#[1:review][?:reviews]} on a gallery album</word>
<word key="module__gallery_stats" js="0">Statistics</word>
<word key="search_contextual_item_gallery_image" js="0">This Image</word>
<word key="album_user_own_activity_item" js="0">%2$s added images to %1$s in </word>
@@ -244,7 +250,8 @@
<word key="gallery_bandwidth" js="0">Bandwidth Logging</word>
<word key="gallery_detailed_bandwidth" js="0">Store detailed bandwidth logs</word>
<word key="gallery_detailed_bandwidth_desc" js="0">Enabling this setting will cause Gallery image views to tracked. You can then use the bandwidth logs to see how much bandwidth image views consume over periods of time, and you can view bandwidth statistics on a per-member basis when editing members.</word>
<word key="gallery_bandwidth_period" js="0">Number of hours to keep bandwidth logs</word>
<word key="gallery_bandwidth_period" js="0">Keep logs for</word>
<word key="gallery_bandwidth_period_desc" js="0">Detailed bandwidth logs older than this timeframe will be pruned to improve performance. Certain statistics requiring these logs will no longer be available once the bandwidth logs are pruned.</word>
<word key="gallery_options" js="0">General Options</word>
<word key="gallery_rss_enabled" js="0">Enable latest images RSS feed</word>
<word key="gallery_rebuildimages" js="0">Rebuilding images</word>
@@ -438,6 +445,9 @@
<word key="image_tools" js="0">Image Tools</word>
<word key="image_share" js="0">Share</word>
<word key="cannot_download_original_image" js="0">You do not have permission to download images</word>
<word key="gallery_unset_cover" js="0">Remove cover photo</word>
<word key="gallery_unset_cover_error" js="0">You do not have permission to remove the cover photo</word>
<word key="gallery_cover_photo_isunset" js="0">The cover photo has been removed</word>
<word key="cat_img_count" js="0">{# [1:image][?:images]}</word>
<word key="cat_album_count" js="0">{# [1:album][?:albums]}</word>
<word key="cat_comment_count" js="0">{# [1:comment][?:comments]}</word>
+122 -4
View File
@@ -647,6 +647,20 @@
"album_type",
"album_name"
]
},
"album_type": {
"type": "key",
"name": "album_type",
"columns": [
"album_type",
"album_owner_id",
"album_hidden"
],
"length": [
null,
null,
null
]
}
},
"comment": "",
@@ -1219,6 +1233,30 @@
"zerofill": false,
"auto_increment": false,
"binary": false
},
"category_allow_anonymous": {
"name": "category_allow_anonymous",
"type": "TINYINT",
"length": null,
"decimals": null,
"values": null,
"allow_null": false,
"default": "0",
"comment": "",
"unsigned": true,
"auto_increment": false
},
"category_last_poster_anon": {
"name": "category_last_poster_anon",
"type": "TINYINT",
"length": null,
"decimals": null,
"values": null,
"allow_null": false,
"default": "0",
"comment": "",
"unsigned": true,
"auto_increment": false
}
},
"indexes": {
@@ -1443,6 +1481,18 @@
"unsigned": false,
"values": [],
"zerofill": false
},
"comment_is_anon": {
"name": "comment_is_anon",
"type": "TINYINT",
"length": null,
"decimals": null,
"values": null,
"allow_null": false,
"default": "0",
"comment": "",
"unsigned": true,
"auto_increment": false
}
},
"indexes": {
@@ -2184,6 +2234,30 @@
"comment": "",
"unsigned": true,
"auto_increment": false
},
"image_last_poster_anon": {
"name": "image_last_poster_anon",
"type": "TINYINT",
"length": null,
"decimals": null,
"values": null,
"allow_null": false,
"default": "",
"comment": "",
"unsigned": true,
"auto_increment": false
},
"image_is_anon": {
"name": "image_is_anon",
"type": "TINYINT",
"length": null,
"decimals": null,
"values": null,
"allow_null": false,
"default": "0",
"comment": "",
"unsigned": true,
"auto_increment": false
}
},
"indexes": {
@@ -2200,11 +2274,15 @@
"member_id": {
"type": "key",
"name": "member_id",
"length": [
null
],
"columns": [
"image_member_id"
"image_member_id",
"image_approved",
"image_date"
],
"length": [
null,
null,
null
]
},
"im_select": {
@@ -2328,6 +2406,34 @@
"image_pinned",
"image_updated"
]
},
"image_comments": {
"type": "key",
"name": "image_comments",
"columns": [
"image_category_id",
"image_approved",
"image_comments"
],
"length": [
null,
null,
null
]
},
"image_comments_unapproved": {
"type": "key",
"name": "image_comments_unapproved",
"columns": [
"image_category_id",
"image_approved",
"image_unapproved_comments"
],
"length": [
null,
null,
null
]
}
},
"collation": "utf8mb4_unicode_ci",
@@ -2952,6 +3058,18 @@
"unsigned": false,
"values": [],
"zerofill": false
},
"comment_is_anon": {
"name": "comment_is_anon",
"type": "TINYINT",
"length": null,
"decimals": null,
"values": null,
"allow_null": false,
"default": "0",
"comment": "",
"unsigned": false,
"auto_increment": false
}
},
"indexes": {
+1 -1
View File
@@ -1,7 +1,7 @@
[
{
"key": "gallery_bandwidth_period",
"default": "-1",
"default": "8760",
"report": "full"
},
{
+239 -77
View File
@@ -105,12 +105,12 @@
<ul id='elAlbumActions_menu' class='ipsMenu ipsMenu_auto ipsHide'>
{{if $album->asItem()->canReportOrRevoke() === TRUE}}
<li class='ipsMenu_item'>
<a href='{$album->url()->setQueryString('do', 'report')}' data-ipsDialog data-ipsDialog-size='medium' data-ipsDialog-title="{lang="report_album"}" data-ipsDialog-remoteSubmit data-ipsDialog-flashMessage="{lang="report_submit_success"}" title="{lang="report_album"}">{lang="report_album"}</a>
<a href='{$album->url()->setQueryString('do', 'report')}' {{if member.member_id or \IPS\Helpers\Form\Captcha::supportsModal()}}data-ipsDialog data-ipsDialog-size='medium' data-ipsDialog-title="{lang="report_album"}" data-ipsDialog-remoteSubmit data-ipsDialog-flashMessage="{lang="report_submit_success"}"{{endif}} title="{lang="report_album"}">{lang="report_album"}</a>
</li>
<li class='ipsMenu_sep'><hr></li>
{{endif}}
{{if $album->asItem()->canEdit() }}
<li class='ipsMenu_item'><a href='{$album->url()->setQueryString( array( 'do' => 'editAlbum', 'csrfKey' => \IPS\Session::i()->csrfKey ) )}' title="{lang="edit_album"}" data-ipsDialog data-ipsDialog-title="{lang="edit_album"}">{lang="edit_album"}</a></li>
<li class='ipsMenu_item'><a href='{$album->url()->setQueryString( array( 'do' => 'editAlbum' ) )}' title="{lang="edit_album"}" data-ipsDialog data-ipsDialog-title="{lang="edit_album"}">{lang="edit_album"}</a></li>
{{endif}}
{{if $album->asItem()->canFeature()}}
@@ -120,7 +120,7 @@
<li class='ipsMenu_item'><a href='{$album->url()->csrf()->setQueryString( array( 'do' => 'moderate', 'action' => 'unfeature' ) )}' title="{lang="unfeature_title_album"}">{lang="unfeature"}</a></li>
{{endif}}
{{if $album->asItem()->canHide()}}
<li class='ipsMenu_item'><a href='{$album->url()->csrf()->setQueryString( array( 'do' => 'moderate', 'action' => 'hide' ) )}' title="{lang="hide_title_album"}" data-ipsDialog data-ipsDialog-title="{lang="hide"}">{lang="hide"}</a></li>
<li class='ipsMenu_item'><a href='{$album->url()->setQueryString( array( 'do' => 'moderate', 'action' => 'hide' ) )}' title="{lang="hide_title_album"}" data-ipsDialog data-ipsDialog-title="{lang="hide"}">{lang="hide"}</a></li>
{{endif}}
{{if $album->asItem()->canUnhide()}}
<li class='ipsMenu_item'><a href='{$album->url()->csrf()->setQueryString( array( 'do' => 'moderate', 'action' => 'unhide' ) )}' title="{{if $album->asItem()->hidden() === 1}}{lang="approve_title_album"}{{else}}{lang="unhide_title_album"}{{endif}}">{{if $album->asItem()->hidden() === 1}}{lang="approve"}{{else}}{lang="unhide"}{{endif}}</a></li>
@@ -136,17 +136,21 @@
{{endif}}
{{if $album->canDelete() }}
<li class='ipsMenu_item'><a href='{$album->url()->setQueryString( array( 'do' => 'deleteAlbum', 'csrfKey' => \IPS\Session::i()->csrfKey ) )}' data-ipsDialog data-ipsDialog-title="{lang="delete_album"}" title="{lang="delete_album"}">{lang="delete_album"}</a></li>
<li class='ipsMenu_item'><a href='{$album->url()->csrf()->setQueryString( array( 'do' => 'deleteAlbum' ) )}' data-ipsDialog data-ipsDialog-title="{lang="delete_album"}" title="{lang="delete_album"}">{lang="delete_album"}</a></li>
{{endif}}
{{if $album->cover_img_id AND \IPS\gallery\Image::modPermission( 'edit', \IPS\Member::loggedIn(), $album )}}
<li class='ipsMenu_item'><a href='{$album->url()->setQueryString( array( 'do' => 'unsetCoverPhoto', 'csrfKey' => \IPS\Session::i()->csrfKey ) )}' title='{lang="gallery_unset_cover"}'>{lang="gallery_unset_cover"}</a></li>
{{endif}}
{{if $album->asItem()->canOnMessage( 'add' )}}
<li class='ipsMenu_item'><a href='{$album->url()->csrf()->setQueryString( array( 'do' => 'messageForm' ) )}' data-ipsDialog data-ipsDialog-title='{lang="add_message"}'>{lang="add_message"}</a></li>
<li class='ipsMenu_item'><a href='{$album->url()->setQueryString( array( 'do' => 'messageForm' ) )}' data-ipsDialog data-ipsDialog-title='{lang="add_message"}'>{lang="add_message"}</a></li>
{{endif}}
</ul>
</li>
{{elseif $album->asItem()->canReportOrRevoke() === TRUE}}
<li>
<a href='{$album->url()->setQueryString('do', 'report')}' class='ipsButton ipsButton_link ipsButton_verySmall ipsButton_fullWidth' data-ipsDialog data-ipsDialog-size='medium' data-ipsDialog-title="{lang="report_album"}" data-ipsDialog-remoteSubmit data-ipsDialog-flashMessage="{lang="report_submit_success"}" title="{lang="report_album"}">{lang="report_album"}</a>
<a href='{$album->url()->setQueryString('do', 'report')}' class='ipsButton ipsButton_link ipsButton_verySmall ipsButton_fullWidth' {{if member.member_id or \IPS\Helpers\Form\Captcha::supportsModal()}}data-ipsDialog data-ipsDialog-size='medium' data-ipsDialog-title="{lang="report_album"}" data-ipsDialog-remoteSubmit data-ipsDialog-flashMessage="{lang="report_submit_success"}"{{endif}} title="{lang="report_album"}">{lang="report_album"}</a>
</li>
{{endif}}
</ul>
@@ -511,7 +515,7 @@
</div>
</div>
{{if $category->can('add')}}
{{if $category->can('add') and ( $category->allow_albums != 2 or member.group['g_create_albums'] or \IPS\gallery\Album::loadForSubmit( $category ) )}}
<ul class="ipsToolList ipsToolList_horizontal ipsClearfix ipsSpacer_bottom">
{template="categoryButtons" group="browse" params="$category->can('add'), $category, NULL"}
</ul>
@@ -545,7 +549,13 @@
{{endif}}]]></template>
<template template_group="browse" template_name="categoryButtons" template_data="$canSubmitImages, $currentCategory=NULL, $currentAlbum=NULL" template_location="front" template_app="gallery"><![CDATA[<li class='ipsToolList_primaryAction'>
<a class="ipsButton ipsButton_medium ipsButton_important ipsButton_fullWidth" data-ipsDialog data-ipsDialog-close='false' data-ipsDialog-size='medium' data-ipsDialog-extraClass='cGalleryDialog_outer' data-ipsDialog-destructOnClose='true' data-ipsDialog-remoteSubmit='true' {{if $currentAlbum}}href="{url="app=gallery&module=gallery&controller=submit&category={$currentCategory->id}&album={$currentAlbum->id}&_new=1" seoTemplate="gallery_submit"}" {{elseif $currentCategory}} href="{url="app=gallery&module=gallery&controller=submit&category={$currentCategory->id}&_new=1" seoTemplate="gallery_submit"}" {{else}} href="{url="app=gallery&module=gallery&controller=submit&_new=1" seoTemplate="gallery_submit"}" {{endif}}>{lang="add_gallery_image"}</a>
</li>]]></template>
</li>
{{if $currentCategory AND $currentCategory->cover_img_id AND \IPS\gallery\Image::modPermission( 'edit', \IPS\Member::loggedIn(), $currentCategory )}}
<li>
<a href="{$currentCategory->url()->setQueryString( array( 'do' => 'unsetCoverPhoto' ) )->csrf()}" title='{lang="gallery_unset_cover"}' class='ipsButton ipsButton_medium ipsButton_fullWidth ipsButton_link'>{lang="gallery_unset_cover"}</a>
</li>
{{endif}}]]></template>
<template template_group="browse" template_name="categoryGrid" template_data="$categories" template_location="front" template_app="gallery"><![CDATA[
{{if \count( $categories )}}
<div class='cGalleryCats ipsBox_alt ipsClear ipsClearfix'>
@@ -569,7 +579,11 @@
{{if $category->allow_albums}}
<li class='ipsPos_right' data-ipsTooltip title='{lang="cat_album_count" pluralize="$category->public_albums"}'><i class='fa fa-th-large'></i> {$category->public_albums}</li>
{{endif}}
<li class='ipsPos_right' data-ipsTooltip title='{lang="cat_img_count" pluralize="\IPS\gallery\Image::contentCount( $category )"}'><i class='fa fa-camera'></i> {expression="\IPS\gallery\Image::contentCount( $category )"}</li>
{{$imageCount = $category->count_imgs;}}
{{if $category->_items === NULL AND $imageCount < 1000}}
{{$imageCount = \IPS\gallery\Image::contentCount( $category );}}
{{endif}}
<li class='ipsPos_right' data-ipsTooltip title='{lang="cat_img_count" pluralize="$imageCount"}'><i class='fa fa-camera'></i> {expression="$imageCount"}</li>
</ul>
</a>
</li>
@@ -700,11 +714,9 @@
</ul>
</form>
{{if $table->pages > 1}}
<div data-role="tablePagination">
{template="pagination" group="global" app="core" location="global" params="$table->baseUrl, $table->pages, $table->page, $table->limit"}
</div>
{{endif}}
<div data-role="tablePagination" {{if $table->pages <= 1}}class='ipsHide'{{endif}}>
{template="pagination" group="global" app="core" location="global" params="$table->baseUrl, $table->pages, $table->page, $table->limit"}
</div>
</div>
{{endif}}
@@ -799,14 +811,10 @@
</div>
</form>
{{endif}}
{{if $table->pages > 1}}
<div class="ipsButtonBar ipsPad_half ipsClearfix ipsClear">
<div data-role="tablePagination">
{template="pagination" group="global" app="core" location="global" params="$table->baseUrl, $table->pages, $table->page, $table->limit"}
</div>
</div>
{{endif}}
<div class="ipsButtonBar ipsPad_half ipsClearfix ipsClear {{if $table->pages <= 1}}ipsHide{{endif}}" data-role="tablePagination">
{template="pagination" group="global" app="core" location="global" params="$table->baseUrl, $table->pages, $table->page, $table->limit"}
</div>
</div>]]></template>
<template template_group="browse" template_name="index" template_data="$featured, $new" template_location="front" template_app="gallery"><![CDATA[<div class="ipsPageHeader ipsClearfix ipsMargin_bottom ipsHeaderButtons ipsFlex ipsFlex-ai:center ipsFlex-jc:between">
<h1 class="ipsType_pageTitle ipsFlex-flex:11 ipsType_break">{lang="gallery_title"}</h1>
@@ -1169,6 +1177,162 @@
</div>
</div>
</div>]]></template>
<template template_group="forms" template_name="imageUpload" template_data="$name, $value, $minimize, $maxFileSize, $maxFiles, $maxChunkSize, $totalMaxSize, $allowedFileTypes, $pluploadKey, $multiple=FALSE, $editor=FALSE, $forceNoscript=FALSE, $template='core.attachments.fileItem', $existing=array(), $default=NULL, $supportsDelete = TRUE, $maxImageDims = NULL, $allowStockPhotos=FALSE" template_location="front" template_app="gallery"><![CDATA[<input name="{$name}" type="hidden" value="{$pluploadKey}">
{{if $forceNoscript}}
<input name="{$name}_noscript[]" type="file" {{if $multiple}}multiple{{endif}}>
<span class="ipsType_light ipsType_small">
{{if $allowedFileTypes !== NULL}}
<strong>{lang="form_upload_accepted"}</strong>
{expression="implode( ', ', $allowedFileTypes )"}
{{endif}}
{{if $multiple and $totalMaxSize}}
{{if $allowedFileTypes !== NULL}}
&middot;
{{endif}}
<strong>{lang="form_upload_total_max"}</strong>
{filesize="$totalMaxSize * 1048576"}
{{endif}}
{{if !$multiple or !$totalMaxSize or $maxChunkSize < $totalMaxSize}}
{{if $allowedFileTypes !== NULL or ( $multiple and $totalMaxSize )}}
&middot;
{{endif}}
<strong>{lang="form_upload_max"}</strong>
{$maxChunkSize}MB
{{endif}}
{{if $maxFiles}}
<br>{lang="form_upload_max_files" pluralize="$maxFiles"}
{{endif}}
</span>
{{else}}
<noscript>
<input name="{$name}_noscript[]" type="file" {{if $multiple}}multiple{{endif}}>
<span class="ipsType_light ipsType_small">
{{if $allowedFileTypes !== NULL}}
<strong>{lang="form_upload_accepted"}</strong>
{expression="implode( ', ', $allowedFileTypes )"}
{{endif}}
{{if $multiple and $totalMaxSize}}
{{if $allowedFileTypes !== NULL}}
&middot;
{{endif}}
<strong>{lang="form_upload_total_max"}</strong>
{filesize="$totalMaxSize * 1048576"}
{{endif}}
{{if !$multiple or !$totalMaxSize or $maxChunkSize < $totalMaxSize}}
{{if $allowedFileTypes !== NULL or ( $multiple and $totalMaxSize )}}
&middot;
{{endif}}
<strong>{lang="form_upload_max"}</strong>
{$maxChunkSize}MB
{{endif}}
{{if $maxFiles}}
<br>{lang="form_upload_max_files" pluralize="$maxFiles"}
{{endif}}
</span>
</noscript>
{{if $value}}
{{foreach $value as $id => $file}}
<input type="hidden" name="{$name}_existing[{$id}]" value="{$file->tempId}">
{{endforeach}}
{{endif}}
<div id="{$name}_drop_{expression="md5( mt_rand() )"}"
data-ipsUploader
{{if $maxFileSize}}data-ipsUploader-maxFileSize="{expression="number_format( $maxFileSize, 3, '.', '' )"}"{{endif}}
{{if $maxFiles}}data-ipsUploader-maxFiles="{$maxFiles}"{{endif}}
data-ipsUploader-maxChunkSize="{expression="number_format( $maxChunkSize, 3, '.', '' )"}"
{{if $allowedFileTypes}}data-ipsUploader-allowedFileTypes='{expression="json_encode( $allowedFileTypes )"}'{{endif}}
data-ipsUploader-name="{$name}"
data-ipsUploader-key="{$pluploadKey}"
{{if $multiple}}data-ipsUploader-multiple {{if $totalMaxSize}}data-ipsUploader-maxTotalSize="{expression="number_format( $totalMaxSize, 3, '.', '' )"}"{{endif}}{{endif}}
{{if $minimize}}data-ipsUploader-minimized{{endif}}
{{if $editor}}data-ipsUploader-insertable{{endif}}
data-ipsUploader-template='{$template}'
data-ipsUploader-existingFiles='{expression="json_encode( $existing )"}'
{{if isset( $default )}}data-ipsUploader-default='{$default}'{{endif}}
{{if $supportsDelete}}data-ipsUploader-supportsDelete{{else}}data-ipsUploader-supportsDelete='false'{{endif}}
{{if $maxImageDims}}data-ipsUploader-maxImageDims="{$maxImageDims}"{{endif}}
{{if $allowStockPhotos}}data-ipsUploader-allowStockPhotos="{$allowStockPhotos}"{{endif}}
>
<div class="ipsAttachment_dropZone {{if $minimize}}ipsAttachment_dropZoneSmall{{endif}} ipsClearfix">
{{if $minimize}}
<a href="#" data-action='uploadFile' class="ipsButton ipsButton_small ipsButton_primary ipsPos_left" id="{$name}_browse_{expression="md5( mt_rand() )"}">{{if $multiple}}{lang="form_upload_choose"}{{else}}{lang="form_upload_choose_one"}{{endif}}</a>
{{if $allowStockPhotos}}
<a href="#" data-action='stockPhoto' class="ipsButton ipsButton_small ipsButton_veryLight ipsPos_left" id="{$name}_stockphoto_{expression="md5( mt_rand() )"}">{lang="form_upload_stockart_choose"}</a>
{{endif}}
<div class="ipsAttachment_loading ipsLoading_small ipsPos_left ipsHide"><i class='fa fa-circle-o-notch fa-spin fa-fw'></i></div>
<div class='ipsAttachment_dropZoneSmall_info'>
<span class="ipsAttachment_supportDrag">{{if $multiple}}{lang="form_upload_dad_mini"}{{else}}{lang="form_upload_dad_mini_one"}{{endif}}<br></span>
<span class="ipsType_light ipsType_small">
{{if $allowedFileTypes !== NULL}}
<strong>{lang="form_upload_accepted"}</strong>
{expression="implode( ', ', $allowedFileTypes )"}
{{endif}}
{{if $multiple and $totalMaxSize}}
{{if $allowedFileTypes !== NULL}}
&middot;
{{endif}}
<strong>{lang="form_upload_total_max"}</strong>
{filesize="$totalMaxSize * 1048576"}
{{endif}}
{{if $maxFileSize and ( !$multiple or !$totalMaxSize or $maxFileSize < $totalMaxSize )}}
{{if $allowedFileTypes !== NULL or ( $multiple and $totalMaxSize )}}
&middot;
{{endif}}
<strong>{lang="form_upload_max"}</strong>
{expression="round($maxFileSize,2)"}MB
{{endif}}
{{if $maxFiles}}
<br>{lang="form_upload_max_files" pluralize="$maxFiles"}
{{endif}}
</span>
</div>
{{else}}
<i class="fa fa-cloud-upload"></i>
<span class="ipsAttachment_supportDrag">{{if $multiple}}{lang="form_upload_dad"}{{else}}{lang="form_upload_dad_one"}{{endif}}<br></span>
<a href="#" data-action='uploadFile' class="ipsButton ipsButton_verySmall ipsButton_primary" id="{$name}_browse_{expression="md5( mt_rand() )"}">{{if $multiple}}{lang="form_upload_choose"}{{else}}{lang="form_upload_choose_one"}{{endif}}</a>
{{if $allowStockPhotos}}
<a href="#" data-action='stockPhoto' class="ipsButton ipsButton_verySmall ipsButton_light" id="{$name}_stockphoto_{expression="md5( mt_rand() )"}">{lang="form_upload_stockart_choose"}</a>
{{endif}}
<div class="ipsAttachment_loading ipsLoading_small ipsHide"><i class='fa fa-circle-o-notch fa-spin fa-fw'></i></div>
<br>
<span class="ipsType_light ipsType_small">
{{if $allowedFileTypes !== NULL}}
<strong>{lang="form_upload_accepted"}</strong>
{expression="implode( ', ', $allowedFileTypes )"}
{{endif}}
{{if $multiple and $totalMaxSize}}
{{if $allowedFileTypes !== NULL}}
&middot;
{{endif}}
<strong>{lang="form_upload_total_max"}</strong>
{filesize="$totalMaxSize * 1048576"}
{{endif}}
{{if $maxFileSize and ( !$multiple or !$totalMaxSize or $maxFileSize < $totalMaxSize )}}
{{if $allowedFileTypes !== NULL or ( $multiple and $totalMaxSize )}}
&middot;
{{endif}}
<strong>{lang="form_upload_max"}</strong>
{expression="round($maxFileSize,2)"}MB
{{endif}}
{{if $maxFiles}}
<br>{lang="form_upload_max_files" pluralize="$maxFiles"}
{{endif}}
</span>
{{endif}}
</div>
<div class="ipsAttachment_fileList ipsScrollbar">
<div data-role='fileList'></div>
<noscript>
{{if $value}}
{{foreach $value as $id => $file}}
{template="uploadFile" group="forms" location="global" app="core" params="$id, $file, $name, $editor, ( $template === 'core.attachments.imageItem' )"}
{{endforeach}}
{{endif}}
</noscript>
</div>
</div>
{{endif}}]]></template>
<template template_group="forms" template_name="reviewTemplate" template_data="$id, $action, $elements, $hiddenValues, $actionButtons, $uploadField, $class=''" template_location="front" template_app="gallery"><![CDATA[<div class='ipsClearfix' data-controller='core.front.core.reviewForm'>
<div>
<form accept-charset='utf-8' class="ipsForm" action="{$action->setQueryString( '_review', 1 )}" method="post" {{if $uploadField}}enctype="multipart/form-data"{{endif}}>
@@ -1292,7 +1456,10 @@
{template="userPhoto" app="core" group="global" params="$comment->author(), 'mini', $comment->warningRef()"}
<div>
<h3 class='ipsComment_author ipsType_blendLinks'>
<strong class='ipsType_normal'>{template="userLink" app="core" group="global" params="$comment->author(), $comment->warningRef()"}</strong>
<strong class='ipsType_normal'>{template="userLink" app="core" group="global" params="$comment->author(), $comment->warningRef(), NULL, $comment->isAnonymous()"}</strong>
{{if $comment instanceof \IPS\Content\Anonymous and $comment->isAnonymous() and \IPS\Member::loggedIn()->modPermission('can_view_anonymous_posters')}}
<a data-ipsHover data-ipsHover-width="370" data-ipsHover-onClick href="{$comment->url( 'reveal' )->csrf()}"><span class="cAuthorPane_badge cAuthorPane_badge_small cAuthorPane_badge--anon" data-ipsTooltip title="{lang="post_anonymously_reveal"}"></span></a>
{{endif}}
{template="reputationBadge" group="global" app="core" params="$comment->author()"}
</h3>
<p class='ipsComment_meta ipsType_light ipsType_medium'>
@@ -1319,14 +1486,12 @@
{{if $comment->hidden() !== 1 && ( $comment->canReportOrRevoke() === TRUE || \count( $comment->sharelinks() ) || $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') ) || \count( $item->commentMultimodActions() ) )}}
<ul class='ipsList_reset ipsComment_tools'>
<li>
<a href='#elControls_{$comment->$idField}_menu' class='ipsComment_ellipsis' id='elControls_{$comment->$idField}' data-ipsMenu data-ipsMenu-appendTo='#comment-{$comment->$idField}_wrap'><i class='fa fa-ellipsis-h'></i></a>
<ul id='elControls_{$comment->$idField}_menu' class='ipsMenu ipsMenu_narrow ipsHide'>
<a href='#elControlsComments_{$comment->$idField}_menu' class='ipsComment_ellipsis' id='elControlsComments_{$comment->$idField}' data-ipsMenu data-ipsMenu-appendTo='#comment-{$comment->$idField}_wrap'><i class='fa fa-ellipsis-h'></i></a>
<ul id='elControlsComments_{$comment->$idField}_menu' class='ipsMenu ipsMenu_narrow ipsHide'>
{{if $comment->canReportOrRevoke() === TRUE}}
<li class='ipsMenu_item'><a href='{$comment->url('report')}' data-ipsDialog data-ipsDialog-remoteSubmit data-ipsDialog-size='medium' data-ipsDialog-flashMessage='{lang="report_submit_success"}' data-ipsDialog-title="{lang="report"}" data-action='reportComment' title='{lang="report_content"}'>{lang="report"}</a></li>
<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}}
{{if \count( $comment->sharelinks() )}}
<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>
{{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>
@@ -1346,7 +1511,7 @@
{{else}}
{{if $comment instanceof \IPS\Content\Hideable}}
{{if !$comment->hidden() and $comment->canHide()}}
<li class='ipsMenu_item'><a href='{$comment->url('hide')->csrf()}' data-ipsDialog data-ipsDialog-title="{lang="hide"}">{lang="hide"}</a></li>
<li class='ipsMenu_item'><a href='{$comment->url('hide')}' data-ipsDialog data-ipsDialog-title="{lang="hide"}">{lang="hide"}</a></li>
{{elseif $comment->hidden() and $comment->canUnhide()}}
<li class='ipsMenu_item'><a href='{$comment->url('unhide')->csrf()}'>{lang="unhide"}</a></li>
{{endif}}
@@ -1361,7 +1526,7 @@
<li class='ipsMenu_item'><a href='{$comment->url('unfeature')->csrf()->setPage('page',\IPS\Request::i()->page)}' data-action="unrecommendComment">{lang="unrecommend_content"}</a></li>
{{endif}}
{{if !$comment->isFeatured() AND $item->canFeatureComment()}}
<li class='ipsMenu_item'><a href='{$comment->url('feature')->csrf()->setPage('page', \IPS\Request::i()->page)}' data-ipsDialog data-ipsDialog-title='{lang="recommend_comment"}' data-ipsDialog-remoteSubmit data-ipsDialog-size='narrow' data-action="recommendComment">{lang="recommend_content"}</a></li>
<li class='ipsMenu_item'><a href='{$comment->url('feature')->setPage('page', \IPS\Request::i()->page)}' data-ipsDialog data-ipsDialog-title='{lang="recommend_comment"}' data-ipsDialog-remoteSubmit data-ipsDialog-size='narrow' data-action="recommendComment">{lang="recommend_content"}</a></li>
{{endif}}
{{if $comment->canPromoteToSocialMedia()}}
<li class='ipsMenu_item'>{template="promoteLink" app="core" group="global" params="$comment"}</li>
@@ -1406,8 +1571,8 @@
{{endif}}
{{if $comment->canEdit() || $comment->canSplit() || $comment->canHide()}}
<li>
<a href='#elControls_{$comment->$idField}_menu' id='elControls_{$comment->$idField}' data-ipsMenu data-ipsMenu-appendTo='#comment-{$comment->$idField}_wrap'>{lang="moderator_tools"} &nbsp;<i class='fa fa-caret-down'></i></a>
<ul id='elControls_{$comment->$idField}_menu' class='ipsMenu ipsMenu_narrow ipsHide'>
<a href='#elControlsCommentsSub_{$comment->$idField}_menu' id='elControlsCommentsSub_{$comment->$idField}' data-ipsMenu data-ipsMenu-appendTo='#comment-{$comment->$idField}_wrap'>{lang="moderator_tools"} &nbsp;<i class='fa fa-caret-down'></i></a>
<ul id='elControlsCommentsSub_{$comment->$idField}_menu' class='ipsMenu ipsMenu_narrow ipsHide'>
{{if $comment->canEdit()}}
{{if $comment->mapped('first') and $comment->item()->canEdit()}}
<li class='ipsMenu_item'><a href='{$comment->item()->url()->setQueryString( 'do', 'edit' )}'>{lang="edit"}</a></li>
@@ -1448,14 +1613,7 @@
<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}}
<div class='ipsPadding ipsHide cPostShareMenu' id='elShareComment_{$comment->id}_menu'>
<h5 class='ipsType_normal ipsType_reset'>{lang="link_to_comment"}</h5>
<input type='text' value='{$comment->item()->url()->setQueryString( array( 'do' => 'findComment', 'comment' => $comment->id ) )}' class='ipsField_fullWidth'>
{{if \count( $comment->sharelinks() )}}
<h5 class='ipsType_normal ipsType_reset ipsSpacer_top'>{lang="share_externally"}</h5>
{template="sharelinks" group="global" app="core" params="$comment"}
{{endif}}
</div>
{template="sharemenu" group="global" app="core" params="$comment"}
</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 ) );}}
@@ -2006,12 +2164,9 @@
</div>]]></template>
<template template_group="global" template_name="profileAlbumTable" template_data="$table, $headers, $rows, $quickSearch" template_location="front" template_app="gallery"><![CDATA[
<div data-baseurl='{$table->baseUrl}' data-resort='{$table->resortKey}' data-pageParam='albumPage' data-controller='core.global.core.table{{if $table->canModerate()}},core.front.core.moderation{{endif}}'>
{{if $table->pages > 1}}
<div data-role="tablePagination">
{template="pagination" group="global" app="core" location="global" params="$table->baseUrl, $table->pages, $table->page, $table->limit, TRUE, 'albumPage'"}
</div>
<br>
{{endif}}
<div data-role="tablePagination" class='ipsSpacer_bottom {{if $table->pages <= 1}}ipsHide{{endif}}'>
{template="pagination" group="global" app="core" location="global" params="$table->baseUrl, $table->pages, $table->page, $table->limit, TRUE, 'albumPage'"}
</div>
<ol class='ipsList_reset ipsClear ipsGrid ipsGrid_collapsePhone' data-role='tableRows' data-controller='gallery.front.browse.list' id='elTable_{$table->uniqueId}'>
{template="$table->rowsTemplate[1]" params="$table, $headers, $rows" object="$table->rowsTemplate[0]"}
@@ -2054,11 +2209,11 @@
<div class='ipsType_reset ipsType_light ipsType_blendLinks ipsComment_toolWrap'>
<ul class='ipsList_reset ipsComment_tools'>
<li>
<a href='#elControls_{$review->id}_menu' class='ipsComment_ellipsis' id='elControls_{$review->id}' title='{lang="more_options"}' data-ipsMenu data-ipsMenu-appendTo='#review-{$review->id}_wrap'><i class='fa fa-ellipsis-h'></i></a>
<ul id='elControls_{$review->id}_menu' class='ipsMenu ipsMenu_narrow ipsHide'>
<a href='#elControlsReviews_{$review->id}_menu' class='ipsComment_ellipsis' id='elControlsReviews_{$review->id}' title='{lang="more_options"}' data-ipsMenu data-ipsMenu-appendTo='#review-{$review->id}_wrap'><i class='fa fa-ellipsis-h'></i></a>
<ul id='elControlsReviews_{$review->id}_menu' class='ipsMenu ipsMenu_narrow ipsHide'>
{{if $review->canReportOrRevoke() === TRUE}}
<li class='ipsMenu_item'>
<a href='{$review->url('report')}' data-ipsDialog data-ipsDialog-remoteSubmit data-ipsDialog-size='medium' data-ipsDialog-flashMessage='{lang="report_submit_success"}' data-ipsDialog-title="{lang="report"}" data-action='reportComment' title='{lang="report"}'>{lang="report"}</a>
<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}}
<li class='ipsMenu_item'>
@@ -2080,7 +2235,7 @@
{{else}}
{{if $review instanceof \IPS\Content\Hideable}}
{{if !$review->hidden() and $review->canHide()}}
<li class='ipsMenu_item'><a href='{$review->url('hide')->csrf()}' data-ipsDialog data-ipsDialog-title="{lang="hide"}">{lang="hide"}</a></li>
<li class='ipsMenu_item'><a href='{$review->url('hide')}' data-ipsDialog data-ipsDialog-title="{lang="hide"}">{lang="hide"}</a></li>
{{elseif $review->hidden() and $review->canUnhide()}}
<li class='ipsMenu_item'><a href='{$review->url('unhide')->csrf()}'>{lang="unhide"}</a></li>
{{endif}}
@@ -2129,8 +2284,8 @@
{{endif}}
{{if $review->canEdit() || $review->canSplit()}}
<li>
<a href='#elControls_{$review->id}_menu' id='elControls_{$review->id}' data-ipsMenu data-ipsMenu-appendTo='#review-{$review->id}_wrap'>{lang="options"} &nbsp;<i class='fa fa-caret-down'></i></a>
<ul id='elControls_{$review->id}_menu' class='ipsMenu ipsMenu_narrow ipsHide'>
<a href='#elControlsReviewsSub_{$review->id}_menu' id='elControlsReviewsSub_{$review->id}' data-ipsMenu data-ipsMenu-appendTo='#review-{$review->id}_wrap'>{lang="options"} &nbsp;<i class='fa fa-caret-down'></i></a>
<ul id='elControlsReviewsSub_{$review->id}_menu' class='ipsMenu ipsMenu_narrow ipsHide'>
{{if $review->canEdit()}}
{{if $review->mapped('first') and $review->item()->canEdit()}}
<li class='ipsMenu_item'><a href='{$review->item()->url()->setQueryString( 'do', 'edit' )}'>{lang="edit"}</a></li>
@@ -2152,11 +2307,8 @@
{{endif}}
</div>
{{endif}}
<div class='ipsPadding ipsHide cPostShareMenu' id='elShareReview_{$review->id}_menu'>
<h5 class='ipsType_normal ipsType_reset'>{lang="link_to_comment"}</h5>
<input type='text' value='{$review->item()->url()->setQueryString( array( 'do' => 'findReview', 'review' => $review->id ) )}' class='ipsField_fullWidth'>
</div>
{template="sharemenu" group="global" app="core" params="$review"}
</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()}}
@@ -2462,7 +2614,7 @@
</div>
{{endif}}
</div>]]></template>
<template template_group="submit" template_name="chooseCategory" template_data="$id, $action, $elements, $hiddenValues, $actionButtons, $uploadField, $class='', $attributes=array(), $sidebar, $form=NULL" template_location="front" template_app="gallery"><![CDATA[<div data-controller='gallery.front.submit.chooseCategory' data-preselected-album="{expression="\IPS\Request::i()->album"}" class='cGallerySubmit_chooseCategory'>
<template template_group="submit" template_name="chooseCategory" template_data="$id, $action, $elements, $hiddenValues, $actionButtons, $uploadField, $class='', $attributes=array(), $sidebar=NULL, $form=NULL" template_location="front" template_app="gallery"><![CDATA[<div data-controller='gallery.front.submit.chooseCategory' data-preselected-album="{expression="\IPS\Request::i()->album"}" class='cGallerySubmit_chooseCategory'>
<form accept-charset='utf-8' class="ipsForm {$class}" action="{$action}" method="post" {{if $uploadField}}enctype="multipart/form-data"{{endif}} {{foreach $attributes as $k => $v}}{$k}="{$v}"{{endforeach}} data-ipsForm data-role='categoryForm'>
<input type="hidden" name="{$id}_submitted" value="1">
{{foreach $hiddenValues as $k => $v}}
@@ -2491,7 +2643,7 @@
{lang="gallery_submit_prefix_cat" sprintf="$container['category']->_title"}
{{endif}}
</div>]]></template>
<template template_group="submit" template_name="createAlbum" template_data="$id, $action, $elements, $hiddenValues, $actionButtons, $uploadField, $class='', $attributes=array(), $sidebar, $form=NULL" template_location="front" template_app="gallery"><![CDATA[<form accept-charset='utf-8' class="ipsForm {$class}" action="{$action}" method="post" {{if $uploadField}}enctype="multipart/form-data"{{endif}} {{foreach $attributes as $k => $v}}{$k}="{$v}"{{endforeach}} data-ipsForm>
<template template_group="submit" template_name="createAlbum" template_data="$id, $action, $elements, $hiddenValues, $actionButtons, $uploadField, $class='', $attributes=array(), $sidebar=NULL, $form=NULL" template_location="front" template_app="gallery"><![CDATA[<form accept-charset='utf-8' class="ipsForm {$class}" action="{$action}" method="post" {{if $uploadField}}enctype="multipart/form-data"{{endif}} {{foreach $attributes as $k => $v}}{$k}="{$v}"{{endforeach}} data-ipsForm>
<input type="hidden" name="{$id}_submitted" value="1">
{{foreach $hiddenValues as $k => $v}}
{{if \is_array($v)}}
@@ -2581,7 +2733,7 @@
</div>
</div>
</form>]]></template>
<template template_group="submit" template_name="existingAlbumForm" template_data="$category, $id, $action, $elements, $hiddenValues, $actionButtons, $uploadField, $class='', $attributes=array(), $sidebar, $form=NULL" template_location="front" template_app="gallery"><![CDATA[
<template template_group="submit" template_name="existingAlbumForm" template_data="$category, $id, $action, $elements, $hiddenValues, $actionButtons, $uploadField, $class='', $attributes=array(), $sidebar=NULL, $form=NULL" template_location="front" template_app="gallery"><![CDATA[
{{$existingAlbums = \IPS\gallery\Album::loadForSubmit( $category );}}
<form accept-charset='utf-8' class="ipsForm {$class}" action="{$action}" method="post" {{if $uploadField}}enctype="multipart/form-data"{{endif}} {{foreach $attributes as $k => $v}}{$k}="{$v}"{{endforeach}} data-ipsForm data-ipsFormSubmit data-controller='gallery.front.submit.existingAlbums'>
@@ -3287,7 +3439,7 @@
<ul id='elImageActions_menu' class='ipsMenu ipsMenu_auto ipsHide'>
{{if $image->canReportOrRevoke() === TRUE}}
<li class='ipsMenu_item'>
<a href='{$image->url('report')}' data-ipsDialog data-ipsDialog-size='medium' data-ipsDialog-title="{lang="report_image"}" data-ipsDialog-remoteSubmit data-ipsDialog-flashMessage="{lang="report_submit_success"}" title="{lang="report_image"}">{lang="report_image"}</a>
<a href='{$image->url('report')}' {{if member.member_id or \IPS\Helpers\Form\Captcha::supportsModal()}}data-ipsDialog data-ipsDialog-size='medium' data-ipsDialog-title="{lang="report_image"}" data-ipsDialog-remoteSubmit data-ipsDialog-flashMessage="{lang="report_submit_success"}"{{endif}} title="{lang="report_image"}">{lang="report_image"}</a>
</li>
<li class='ipsMenu_sep'><hr></li>
{{endif}}
@@ -3315,7 +3467,7 @@
<li class='ipsMenu_item'><a href='{$image->url()->csrf()->setQueryString( array( 'do' => 'moderate', 'action' => 'unpin' ) )}' title="{lang="unpin_title_image"}">{lang="unpin"}</a></li>
{{endif}}
{{if $image->canHide()}}
<li class='ipsMenu_item'><a href='{$image->url()->csrf()->setQueryString( array( 'do' => 'moderate', 'action' => 'hide' ) )}' title="{lang="hide_title_image"}" data-ipsDialog data-ipsDialog-title="{lang="hide"}">{lang="hide"}</a></li>
<li class='ipsMenu_item'><a href='{$image->url()->setQueryString( array( 'do' => 'moderate', 'action' => 'hide' ) )}' title="{lang="hide_title_image"}" data-ipsDialog data-ipsDialog-title="{lang="hide"}">{lang="hide"}</a></li>
{{endif}}
{{if $image->canUnhide()}}
<li class='ipsMenu_item'><a href='{$image->url()->csrf()->setQueryString( array( 'do' => 'moderate', 'action' => 'unhide' ) )}' title="{{if $image->hidden() === 1}}{lang="approve_title_image"}{{else}}{lang="unhide_title_image"}{{endif}}">{{if $image->hidden() === 1}}{lang="approve"}{{else}}{lang="unhide"}{{endif}}</a></li>
@@ -3333,18 +3485,18 @@
<li class='ipsMenu_item'><a href='{$image->url()->csrf()->setQueryString( array( 'do' => 'moderate', 'action' => 'delete' ) )}' data-confirm title="{lang="delete_title_image"}">{lang="delete"}</a></li>
{{endif}}
{{if $image->canOnMessage( 'add' )}}
<li class='ipsMenu_item'><a href='{$image->url()->csrf()->setQueryString( array( 'do' => 'messageForm' ) )}' data-ipsDialog data-ipsDialog-title='{lang="add_message"}'>{lang="add_message"}</a></li>
<li class='ipsMenu_item'><a href='{$image->url()->setQueryString( array( 'do' => 'messageForm' ) )}' data-ipsDialog data-ipsDialog-title='{lang="add_message"}'>{lang="add_message"}</a></li>
{{endif}}
{{if \IPS\Member::loggedIn()->modPermission('can_view_moderation_log')}}
<li class='ipsMenu_sep'><hr></li>
<li class="ipsMenu_item"><a href='{$image->url()->csrf()->setQueryString( array( 'do' => 'modLog' ) )}' data-ipsDialog data-ipsDialog-title='{lang="moderation_history"}'>{lang="moderation_history"}</a></li>
<li class="ipsMenu_item"><a href='{$image->url()->setQueryString( array( 'do' => 'modLog' ) )}' data-ipsDialog data-ipsDialog-title='{lang="moderation_history"}'>{lang="moderation_history"}</a></li>
{{endif}}
{{endif}}
</ul>
</li>
{{elseif $image->canReportOrRevoke() === TRUE}}
<li>
<a href='{$image->url('report')}' class='ipsButton ipsButton_link ipsButton_verySmall ipsButton_fullWidth' data-ipsDialog data-ipsDialog-size='medium' data-ipsDialog-title="{lang="report_image"}" data-ipsDialog-remoteSubmit data-ipsDialog-flashMessage="{lang="report_submit_success"}" title="{lang="report_image"}">{lang="report_image"}</a>
<a href='{$image->url('report')}' class='ipsButton ipsButton_link ipsButton_verySmall ipsButton_fullWidth' {{if member.member_id or \IPS\Helpers\Form\Captcha::supportsModal()}}data-ipsDialog data-ipsDialog-size='medium' data-ipsDialog-title="{lang="report_image"}" data-ipsDialog-remoteSubmit data-ipsDialog-flashMessage="{lang="report_submit_success"}"{{endif}} title="{lang="report_image"}">{lang="report_image"}</a>
</li>
{{endif}}
</ul>
@@ -3723,7 +3875,7 @@
<li class='ipsMenu_item'><a href='{$image->url()->csrf()->setQueryString( array( 'do' => 'moderate', 'action' => 'unpin' ) )}' title="{lang="unpin_title_image"}">{lang="unpin"}</a></li>
{{endif}}
{{if $image->canHide()}}
<li class='ipsMenu_item'><a href='{$image->url()->csrf()->setQueryString( array( 'do' => 'moderate', 'action' => 'hide' ) )}' title="{lang="hide_title_image"}" data-ipsDialog data-ipsDialog-title="{lang="hide"}">{lang="hide"}</a></li>
<li class='ipsMenu_item'><a href='{$image->url()->setQueryString( array( 'do' => 'moderate', 'action' => 'hide' ) )}' title="{lang="hide_title_image"}" data-ipsDialog data-ipsDialog-title="{lang="hide"}">{lang="hide"}</a></li>
{{endif}}
{{if $image->canUnhide()}}
<li class='ipsMenu_item'><a href='{$image->url()->csrf()->setQueryString( array( 'do' => 'moderate', 'action' => 'unhide' ) )}' title="{{if $image->hidden() === 1}}{lang="approve_title_image"}{{else}}{lang="unhide_title_image"}{{endif}}">{{if $image->hidden() === 1}}{lang="approve"}{{else}}{lang="unhide"}{{endif}}</a></li>
@@ -3741,11 +3893,11 @@
<li class='ipsMenu_item'><a href='{$image->url()->csrf()->setQueryString( array( 'do' => 'moderate', 'action' => 'delete' ) )}' data-confirm title="{lang="delete_title_image"}">{lang="delete"}</a></li>
{{endif}}
{{if $image->canOnMessage( 'add' )}}
<li class='ipsMenu_item'><a href='{$image->url()->csrf()->setQueryString( array( 'do' => 'messageForm' ) )}' data-ipsDialog data-ipsDialog-title='{lang="add_message"}'>{lang="add_message"}</a></li>
<li class='ipsMenu_item'><a href='{$image->url()->setQueryString( array( 'do' => 'messageForm' ) )}' data-ipsDialog data-ipsDialog-title='{lang="add_message"}'>{lang="add_message"}</a></li>
{{endif}}
{{if \IPS\Member::loggedIn()->modPermission('can_view_moderation_log')}}
<li class='ipsMenu_sep'><hr></li>
<li class="ipsMenu_item"><a href='{$image->url()->csrf()->setQueryString( array( 'do' => 'modLog' ) )}' data-ipsDialog data-ipsDialog-title='{lang="moderation_history"}'>{lang="moderation_history"}</a></li>
<li class="ipsMenu_item"><a href='{$image->url()->setQueryString( array( 'do' => 'modLog' ) )}' data-ipsDialog data-ipsDialog-title='{lang="moderation_history"}'>{lang="moderation_history"}</a></li>
{{endif}}
{{endif}}
</ul>
@@ -3758,7 +3910,7 @@
<li>{lang="num_views_with_number" pluralize="$image->views"}</li>
{{if $image->canReportOrRevoke() === TRUE}}
<li>
<a href='{$image->url('report')}' data-ipsDialog data-ipsDialog-size='medium' data-ipsDialog-title="{lang="report_image"}" data-ipsDialog-remoteSubmit data-ipsDialog-flashMessage="{lang="report_submit_success"}" title="{lang="report_image"}">{lang="report_image"}</a>
<a href='{$image->url('report')}' {{if member.member_id or \IPS\Helpers\Form\Captcha::supportsModal()}}data-ipsDialog data-ipsDialog-size='medium' data-ipsDialog-title="{lang="report_image"}" data-ipsDialog-remoteSubmit data-ipsDialog-flashMessage="{lang="report_submit_success"}"{{endif}} title="{lang="report_image"}">{lang="report_image"}</a>
</li>
{{endif}}
</ul>
@@ -3864,14 +4016,14 @@
<strong>{lang="map_not_being_shown"}</strong>
<a href='#' id='elMapLightboxForm' data-ipsMenu data-ipsMenu-closeOnClick='false'>{lang="map_privacy"} <i class='fa fa-caret-down'></i></a>
<div class='ipsMenu ipsMenu_auto ipsHide ipsPad' id='elMapLightboxForm_menu'>
{$image->enableMapForm()|raw}
{$image->enableMapForm( TRUE )|raw}
</div>
</div>
</div>
{{endif}}
</div>
<div data-role='imageComments'>
<div data-role='imageComments' data-commentsContainer="lightbox">
{{if $commentsAndReviews}}
{{if ( $image->directContainer()->allow_reviews && $image->container()->allow_reviews ) && ( $image->directContainer()->allow_comments && $image->container()->allow_comments ) }}
<a id="replies"></a>
@@ -4031,7 +4183,7 @@
<strong>{lang="total_images_front_v" pluralize="$stats['totalImages']"}</strong>
</div>
<div class='ipsDataItem_stats ipsDataItem_statsLarge'>
<span class='ipsDataItem_stats_number'>{number="$stats['totalImages']"}</span>
<span class='ipsDataItem_stats_number'>{number="$stats['totalImages']" format="short"}</span>
</div>
</li>
{{if $stats['totalComments']}}
@@ -4040,7 +4192,7 @@
<strong>{lang="stats_total_comments_v" pluralize="$stats['totalComments']"}</strong>
</div>
<div class='ipsDataItem_stats ipsDataItem_statsLarge'>
<span class='ipsDataItem_stats_number'>{number="$stats['totalComments']"}</span>
<span class='ipsDataItem_stats_number'>{number="$stats['totalComments']" format="short"}</span>
</div>
</li>
{{endif}}
@@ -4050,7 +4202,7 @@
<strong>{lang="total_albums_v" pluralize="$stats['totalAlbums']"}</strong>
</div>
<div class='ipsDataItem_stats ipsDataItem_statsLarge'>
<span class='ipsDataItem_stats_number'>{number="$stats['totalAlbums']"}</span>
<span class='ipsDataItem_stats_number'>{number="$stats['totalAlbums']" format="short"}</span>
</div>
</li>
{{endif}}
@@ -4067,18 +4219,18 @@
{{$span = 12 / $columns;}}
<div class='ipsGrid ipsGrid_collapsePhone ipsWidget_stats'>
<div class='ipsGrid_span{$span} ipsType_center'>
<span class='ipsType_large ipsWidget_statsCount'>{number="$stats['totalImages']"}</span><br>
<span class='ipsType_large ipsWidget_statsCount'>{number="$stats['totalImages']" format="short"}</span><br>
<span class='ipsType_light ipsType_medium'>{lang="total_images_front_h" pluralize="$stats['totalImages']"}</span>
</div>
{{if $stats['totalComments']}}
<div class='ipsGrid_span{$span} ipsType_center'>
<span class='ipsType_large ipsWidget_statsCount'>{number="$stats['totalComments']"}</span><br>
<span class='ipsType_large ipsWidget_statsCount'>{number="$stats['totalComments']" format="short"}</span><br>
<span class='ipsType_light ipsType_medium'>{lang="stats_total_comments_h" pluralize="$stats['totalComments']"}</span>
</div>
{{endif}}
{{if $stats['totalAlbums']}}
<div class='ipsGrid_span{$span} ipsType_center'>
<span class='ipsType_large ipsWidget_statsCount'>{number="$stats['totalAlbums']"}</span><br>
<span class='ipsType_large ipsWidget_statsCount'>{number="$stats['totalAlbums']" format="short"}</span><br>
<span class='ipsType_light ipsType_medium'>{lang="total_albums_h" pluralize="$stats['totalAlbums']"}</span>
</div>
{{endif}}
@@ -6093,6 +6245,7 @@ html[dir="rtl"] .cGallerySubmit_albumInfo {
/* Step 2: Upload files */
.cGallerySubmit_uploadImages {
overflow-y: auto;
height: 100%;
}
.cGallerySubmit_details {
padding-bottom: 20px;
@@ -6140,6 +6293,10 @@ html[dir="rtl"] .cGallerySubmit_albumInfo {
overflow: auto;
}
#elGallerySubmit {
height: 100%;
}
#elGallerySubmit > .ipsGrid {
position: absolute;
top: 30px;
@@ -6178,6 +6335,11 @@ html[dir="rtl"] .cGallerySubmit_albumInfo {
#elGallerySubmit_imageUploader {
position: relative;
min-height: 200px;
height: 100%;
}
.cGallerySubmit_uploadForm {
height: calc( 100% - 20px );
}
#elGallerySubmit_imageUploader .ipsAttachment_dropZone {
+39 -1
View File
@@ -354,6 +354,7 @@
"104067": "4.4.10",
"104068": "4.4.10",
"104069": "4.4.10",
"104070": "4.4.11",
"105013": "4.5.0 Beta 1",
"105014": "4.5.0 Beta 1",
"105015": "4.5.0 Beta 2",
@@ -374,5 +375,42 @@
"105030": "4.5.0 Beta 11",
"105031": "4.5.0 Beta 11",
"105032": "4.5.0 Beta 12",
"105100": "4.5.0"
"105100": "4.5.0",
"105101": "4.5.0",
"105102": "4.5.1 Beta 1",
"105103": "4.5.1 Beta 1",
"105104": "4.5.1 Beta 2",
"105105": "4.5.1 Beta 3",
"105106": "4.5.1",
"105107": "4.5.2",
"105108": "4.5.2",
"105109": "4.5.2",
"105110": "4.5.2",
"105111": "4.5.2",
"105112": "4.5.3",
"105113": "4.5.3",
"105114": "4.5.3",
"105115": "4.5.3",
"105116": "4.5.4",
"105117": "4.5.4",
"105118": "4.5.4",
"105119": "4.5.4",
"105120": "4.5.4",
"105121": "4.5.4",
"105122": "4.5.4",
"105123": "4.5.4",
"105124": "4.5.4.1",
"105125": "4.5.4.2",
"105126": "4.5.4.2",
"105127": "4.5.4.2",
"105128": "4.5.4.2",
"105129": "4.5.4.2",
"105130": "4.5.4.2",
"106100": "4.6.0 Beta 1",
"106101": "4.6.0 Beta 1.1",
"106103": "4.6.0 Beta 2",
"106104": "4.6.0 Beta 3",
"106105": "4.6.0 Beta 3.1",
"106106": "4.6.0 Beta 4",
"106107": "4.6.0"
}