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

+7
View File
@@ -37,6 +37,13 @@
"controller": "submitters",
"do": "",
"restriction": "submitters_manage"
},
"topdownloads": {
"tab": "stats",
"controller": "topdownloads",
"do": "",
"restriction": "topdownloads_manage",
"subcontrollers": ""
}
}
}
@@ -5,7 +5,6 @@
"categories_add": "categories_add",
"categories_edit": "categories_edit",
"categories_permissions": "categories_permissions",
"categories_permissions": "categories_permissions",
"categories_massManageContent": "categories_massManageContent",
"categories_recount_downloads": "categories_recount_downloads"
},
@@ -23,7 +22,8 @@
"downloads": {
"downloads_manage": "downloads_manage",
"downloaders_manage": "downloaders_manage",
"submitters_manage": "submitters_manage"
"submitters_manage": "submitters_manage",
"topdownloads_manage": "topdownloads_manage"
}
}
}
@@ -66,6 +66,14 @@
"downloads category"
]
},
"app=downloads&module=downloads&controller=categories&searchResult=form_1_allow_anonymous": {
"lang_key": "allow_anonymous",
"restriction": "categories_manage",
"keywords": [
"anonymous",
"anonymously"
]
},
"app=downloads&module=downloads&controller=categories&do=permissions": {
"lang_key": "menu__downloads_downloads_categories",
"restriction": "categories_manage",
@@ -803,5 +811,12 @@
"keywords": [
"top submitters"
]
},
"app=downloads&module=stats&controller=topdownloads": {
"lang_key": "menu__downloads_stats_topdownloads",
"restriction": "topdownloads_manage",
"keywords": [
"top files"
]
}
}
+2 -1
View File
@@ -4,5 +4,6 @@
"app_directory": "downloads",
"app_protected": 0,
"app_website": null,
"app_update_check": null
"app_update_check": null,
"app_hide_tab": 0
}
+3
View File
@@ -30,6 +30,7 @@
<acpsearch key="app=core&amp;module=members&amp;controller=members&amp;searchResult=form_idm_block_submissions"><![CDATA[{"lang_key":"idm_block_submissions","restriction":null,"keywords":["Files","Submit"]}]]></acpsearch>
<acpsearch key="app=downloads&amp;module=downloads&amp;controller=categories"><![CDATA[{"lang_key":"menu__downloads_downloads_categories","restriction":"categories_manage","keywords":["categories","download categories"]}]]></acpsearch>
<acpsearch key="app=downloads&amp;module=downloads&amp;controller=categories&amp;do=form"><![CDATA[{"lang_key":"menu__downloads_downloads_categories","restriction":"categories_manage","keywords":["add category","downloads category"]}]]></acpsearch>
<acpsearch key="app=downloads&amp;module=downloads&amp;controller=categories&amp;searchResult=form_1_allow_anonymous"><![CDATA[{"lang_key":"allow_anonymous","restriction":"categories_manage","keywords":["anonymous","anonymously"]}]]></acpsearch>
<acpsearch key="app=downloads&amp;module=downloads&amp;controller=categories&amp;do=permissions"><![CDATA[{"lang_key":"menu__downloads_downloads_categories","restriction":"categories_manage","keywords":["category permissions"]}]]></acpsearch>
<acpsearch key="app=downloads&amp;module=downloads&amp;controller=categories&amp;searchResult=cbitoptions_allowss"><![CDATA[{"lang_key":"cbitoptions_allowss","restriction":"categories_manage","keywords":["allow screenshots","screenshots"]}]]></acpsearch>
<acpsearch key="app=downloads&amp;module=downloads&amp;controller=categories&amp;searchResult=cbitoptions_comment_moderation"><![CDATA[{"lang_key":"cbitoptions_comment_moderation","restriction":"categories_manage","keywords":["comments approved","comments must","must approved"]}]]></acpsearch>
@@ -120,8 +121,10 @@
<acpsearch key="app=downloads&amp;module=stats&amp;controller=downloaders"><![CDATA[{"lang_key":"menu__downloads_stats_downloaders","restriction":"downloaders_manage","keywords":["download statistics","downloads stats","top downloaders"]}]]></acpsearch>
<acpsearch key="app=downloads&amp;module=stats&amp;controller=downloads"><![CDATA[{"lang_key":"menu__downloads_stats_downloads","restriction":"downloads_manage","keywords":["download statistics","downloads stats"]}]]></acpsearch>
<acpsearch key="app=downloads&amp;module=stats&amp;controller=submitters"><![CDATA[{"lang_key":"menu__downloads_stats_submitters","restriction":"submitters_manage","keywords":["top submitters"]}]]></acpsearch>
<acpsearch key="app=downloads&amp;module=stats&amp;controller=topdownloads"><![CDATA[{"lang_key":"menu__downloads_stats_topdownloads","restriction":"topdownloads_manage","keywords":["top files"]}]]></acpsearch>
<hook key="Forums"><![CDATA[{"type":"C","class":"\\IPS\\forums\\Forum"}]]></hook>
<hook key="nexusPackage"><![CDATA[{"type":"C","class":"\\IPS\\nexus\\Package\\Item"}]]></hook>
<hook key="frontModcp"><![CDATA[{"type":"C","class":"\\IPS\\core\\modules\\front\\modcp\\modcp"}]]></hook>
<hook key="Forum"><![CDATA[{"type":"C","class":"\\IPS\\forums\\modules\\admin\\forums\\forums"}]]></hook>
<hook key="apiForum"><![CDATA[{"type":"C","class":"\\IPS\\forums\\api\\forums"}]]></hook>
</build>
+2 -2
View File
@@ -2,7 +2,7 @@
<emails><template><template_app>downloads</template_app><template_name>digests__comment</template_name><template_content_html><![CDATA[<tr style='border-bottom: 1px solid #eeeeee'>
<td dir='{dir}' width='120' align='center' valign='top'>
{{if $comment->item()->primary_screenshot_thumb}}
<img src='{$comment->item()->primary_screenshot_thumb}' style='border: 1px solid #000; vertical-align: middle;' width='100' height='100'>
<img src='{file="$comment->item()->primary_screenshot_thumb" extension="downloads_Screenshots"}' style='border: 1px solid #000; vertical-align: middle;' width='100' height='100'>
{{else}}
<div style='width: 100px; height: 100px; background: #f5f5f5'>&nbsp;</div>
{{endif}}
@@ -104,7 +104,7 @@
-- {setting="board_name"}]]></template_content_plaintext><template_pinned>0</template_pinned></template><template><template_app>downloads</template_app><template_name>digests__item</template_name><template_content_html><![CDATA[<tr style='border-bottom: 1px solid #eeeeee'>
<td dir='{dir}' width='120' align='center' valign='top'>
{{if $file->primary_screenshot_thumb}}
<img src='{$file->primary_screenshot_thumb}' style='border: 1px solid #000; vertical-align: middle;' width='100' height='100'>
<img src='{file="$file->primary_screenshot_thumb" extension="downloads_Screenshots"}' style='border: 1px solid #000; vertical-align: middle;' width='100' height='100'>
{{else}}
<div style='width: 100px; height: 100px; background: #f5f5f5'>&nbsp;</div>
{{endif}}
+4
View File
@@ -14,5 +14,9 @@
"Forum": {
"type": "C",
"class": "\\IPS\\forums\\modules\\admin\\forums\\forums"
},
"apiForum": {
"type": "C",
"class": "\\IPS\\forums\\api\\forums"
}
}
+52 -41
View File
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<javascript app="downloads">
<file javascript_app="downloads" javascript_location="front" javascript_path="controllers/downloads" javascript_name="ips.downloads.browse.js" javascript_type="controller" javascript_version="105100" javascript_position="1000200">/**
<file javascript_app="downloads" javascript_location="front" javascript_path="controllers/downloads" javascript_name="ips.downloads.browse.js" javascript_type="controller" javascript_version="106107" javascript_position="1000200">/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -59,7 +59,7 @@
}
});
}(jQuery, _));</file>
<file javascript_app="downloads" 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="downloads" 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
*
@@ -112,7 +112,7 @@
});
}(jQuery, _));</file>
<file javascript_app="downloads" javascript_location="front" javascript_path="controllers/submit" javascript_name="ips.submit.linkedScreenshots.js" javascript_type="controller" javascript_version="105100" javascript_position="1000100">/**
<file javascript_app="downloads" javascript_location="front" javascript_path="controllers/submit" javascript_name="ips.submit.linkedScreenshots.js" javascript_type="controller" javascript_version="106107" javascript_position="1000100">/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -184,7 +184,7 @@
}
});
}(jQuery, _));</file>
<file javascript_app="downloads" javascript_location="front" javascript_path="controllers/submit" javascript_name="ips.submit.main.js" javascript_type="controller" javascript_version="105100" javascript_position="1000100"><![CDATA[/**
<file javascript_app="downloads" javascript_location="front" javascript_path="controllers/submit" javascript_name="ips.submit.main.js" javascript_type="controller" javascript_version="106107" javascript_position="1000100"><![CDATA[/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -275,8 +275,6 @@
if( !this.scope.find('input[name^="files_existing"]').length ){
hideProgressBar();
} else {
this.scope.find('#elDownloadsSubmit_uploader .ipsAttachment_dropZone').hide();
this.scope.find('#elDownloadsSubmit_uploader [data-action="uploadMore"]').show();
this._hiddenUploader = true;
}
@@ -344,8 +342,6 @@
uploadMore: function (e) {
e.preventDefault();
this.scope.find('#elDownloadsSubmit_uploader .ipsAttachment_dropZone').show();
this.scope.find('#elDownloadsSubmit_uploader [data-action="uploadMore"]').hide();
this._hiddenUploader = false;
this._overriddenUploader = true;
},
@@ -389,9 +385,6 @@
});
this._ui.progressBar.hide();
this.scope.find('#elDownloadsSubmit_uploader .ipsAttachment_dropZone').show();
this.scope.find('#elDownloadsSubmit_uploader [data-action="uploadMore"]').hide();
this.scope.find('#elDownloadsSingleMessage').hide();
this._hiddenUploader = false;
this._overriddenUploader = true;
}
@@ -603,9 +596,6 @@
_showProgress: function () {
if( !this._hiddenUploader && !this._overriddenUploader ){
this._ui.progressBar.show().find('.ipsProgressBar').addClass('ipsProgressBar_animated');
this.scope.find('#elDownloadsSubmit_uploader .ipsAttachment_dropZone').hide();
this.scope.find('#elDownloadsSubmit_uploader [data-action="uploadMore"]').show();
this.scope.find('#elDownloadsSubmit_uploader #elDownloadsSingleMessage').show();
this._hiddenUploader = true;
}
},
@@ -621,17 +611,15 @@
}
this.scope.find('a[data-action="stackAdd"]').hide();
if( this._hasExistingFiles() || force ) {
this.scope.find('[data-role="stackItem"] input[name^="url_files"], [data-role="stackItem"] input[name^="import_files"]').each( function() {
if( $(this).val() == "" ) {
$(this).prop( 'disabled', true );
}
});
this.scope.find('#elDownloadsSubmit_uploader .ipsAttachment_dropZone').hide();
this.scope.find('#elDownloadsSubmit_uploader #elDownloadsSingleMessage').show();
}
else {
this.scope.find('#elDownloadsSubmit_uploader .ipsAttachment_dropZone').show();
this.scope.find('[data-role="stackItem"] input[name^="url_files"], [data-role="stackItem"] input[name^="import_files"]').each( function() {
$(this).prop( 'disabled', false );
});
@@ -639,7 +627,7 @@
}
});
}(jQuery, _));]]></file>
<file javascript_app="downloads" javascript_location="front" javascript_path="controllers/view" javascript_name="ips.view.changeLog.js" javascript_type="controller" javascript_version="105100" javascript_position="1000150"><![CDATA[/**
<file javascript_app="downloads" javascript_location="front" javascript_path="controllers/view" javascript_name="ips.view.changeLog.js" javascript_type="controller" javascript_version="106107" javascript_position="1000150"><![CDATA[/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -762,7 +750,7 @@
});
}(jQuery, _));]]></file>
<file javascript_app="downloads" javascript_location="front" javascript_path="controllers/view" javascript_name="ips.view.download.js" javascript_type="controller" javascript_version="105100" javascript_position="1000150">/**
<file javascript_app="downloads" javascript_location="front" javascript_path="controllers/view" javascript_name="ips.view.download.js" javascript_type="controller" javascript_version="106107" javascript_position="1000150">/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -887,7 +875,7 @@
});
}(jQuery, _));</file>
<file javascript_app="downloads" javascript_location="front" javascript_path="controllers/view" javascript_name="ips.view.subscribe.js" javascript_type="controller" javascript_version="105100" javascript_position="1000150">/**
<file javascript_app="downloads" javascript_location="front" javascript_path="controllers/view" javascript_name="ips.view.subscribe.js" javascript_type="controller" javascript_version="106107" javascript_position="1000150">/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -950,34 +938,57 @@
}
});
}(jQuery, _));</file>
<file javascript_app="downloads" javascript_location="front" javascript_path="templates" javascript_name="ips.templates.submit.js" javascript_type="template" javascript_version="105100" javascript_position="1000050"><![CDATA[/* VIEW TEMPLATES */
<file javascript_app="downloads" javascript_location="front" javascript_path="templates" javascript_name="ips.templates.submit.js" javascript_type="template" javascript_version="106107" javascript_position="1000050"><![CDATA[/* VIEW TEMPLATES */
ips.templates.set('downloads.submit.screenshot', " \
<div class='ipsGrid_span3 ipsAttach ipsImageAttach ipsPad_half ipsAreaBackground_light' id='{{id}}' data-role='file' data-fileid='{{id}}' data-fullsizeurl='{{imagesrc}}' data-thumbnailurl='{{thumbnail}}' data-fileType='image'>\
<ul class='ipsList_inline ipsImageAttach_controls'>\
<li><input type='radio' name='{{field_name}}_primary_screenshot' id='{{field_name}}_primary_screenshot_{{id}}' value='{{id}}' title='{{#lang}}makePrimaryScreenshot{{/lang}}' {{#default}}checked{{/default}}></li>\
<li class='ipsPos_right' data-role='deleteFileWrapper'>\
<input type='hidden' name='{{field_name}}_keep[{{id}}]' value='1'>\
<a href='#' data-role='deleteFile' class='ipsButton ipsButton_verySmall ipsButton_light' data-ipsTooltip title='{{#lang}}removeScreenshot{{/lang}}'><i class='fa fa-trash-o'></i></a>\
</li>\
</ul>\
<label for='{{field_name}}_primary_screenshot_{{id}}' class='ipsCursor_pointer'>\
<div class='ipsImageAttach_thumb ipsType_center' data-role='preview' data-grid-ratio='65' data-action='insertFile' {{#thumb}}style='background-image: url( \"{{thumbnail_for_css}}\" )'{{/thumb}}>\
{{#status}}\
<span class='ipsImageAttach_status ipsType_light' data-role='status'>{{{status}}}</span>\
<span class='ipsAttachment_progress'><span data-role='progressbar'></span></span>\
{{/status}}\
{{#thumb}}\
{{{thumb}}}\
{{/thumb}}\
<div class='ipsUploader__row ipsUploader__row--withBorder ipsUploader__row--image ipsAttach ipsContained {{#done}}ipsAttach_done{{/done}}' id='{{id}}' data-role='file' data-fileid='{{id}}' data-filesize='{{sizeRaw}}' data-fullsizeurl='{{imagesrc}}' data-thumbnailurl='{{thumbnail}}' data-fileType='image'>\
<div class='ipsUploader__rowPreview ipsType_center' data-role='preview'>\
<label for='{{field_name}}_primary_screenshot_{{id}}' class='ipsCursor_pointer'>\
{{#thumb}}\
{{{thumb}}}\
{{/thumb}}\
<div class='ipsUploader__rowPreview__generic ipsFlex ipsFlex-ai:center ipsFlex-jc:center' {{#thumb}}style='display: none'{{/thumb}}>\
<i class='fa fa-{{extIcon}} ipsType_large'></i>\
</div>\
</label>\
</div>\
<div class='ipsUploader_rowMeta ipsFlex ipsFlex-fd:column ipsFlex-jc:center ipsFlex-ai:start'>\
<h2 class='ipsUploader_rowTitle ipsMargin:none ipsType_reset ipsAttach_title ipsTruncate ipsTruncate_line' data-role='title'>{{title}}</h2>\
<p class='ipsDataItem_meta ipsType_medium ipsType_light'>\
{{size}} {{#statusText}}&middot; <span class='ipsType_light' data-role='status'>{{statusText}}</span>{{/statusText}}\
</p>\
{{#status}}<span class='ipsAttachment_progress'><span data-role='progressbar'></span></span>{{/status}}\
</div>\
<span data-role='insert' {{#insertable}}style='display: none'{{/insertable}}>\
<a href='#' class='ipsAttach_selection' data-ipsTooltip title='{{#lang}}insertIntoPost{{/lang}}'>\
<i class='fa fa-plus'></i>\
</a>\
</span>\
{{#supportsDelete}}\
<div data-role='deleteFileWrapper' {{#newUpload}}style='display: none'{{/newUpload}}>\
<input type='hidden' name='{{field_name}}_keep[{{id}}]' value='1'>\
<a href='#' data-role='deleteFile' class='ipsUploader__rowDelete' data-ipsTooltip title='{{#lang}}attachRemove{{/lang}}'>\
&times;\
</a>\
</div>\
{{/supportsDelete}}\
{{^supportsDelete}}\
<div data-role='deleteFileWrapper' style='display: none'>\
<input type='hidden' name='{{field_name}}_keep[{{id}}]' value='1'>\
<a href='#' class='ipsUploader__rowDelete' data-role='deleteFile' data-ipsTooltip title='{{#lang}}attachRemove{{/lang}}'>&times;</a>\
</div>\
{{/supportsDelete}}\
<label for='{{field_name}}_primary_screenshot_{{id}}' class='cDownloadsPrimaryRadio' data-ipsTooltip title='{{#lang}}makePrimaryScreenshot{{/lang}}'>\
<span class='ipsCustomInput'>\
<input type='radio' name='{{field_name}}_primary_screenshot' id='{{field_name}}_primary_screenshot_{{id}}' value='{{id}}' {{#default}}checked{{/default}}>\
<span></span>\
</span>\
{{#lang}}makePrimary{{/lang}}\
</label>\
<h2 class='ipsType_reset ipsAttach_title ipsType_medium ipsTruncate ipsTruncate_line' data-role='title'>{{title}}</h2>\
<p class='ipsType_light'>{{size}} &middot; <span data-role='status'>{{statusText}}</span></p>\
</div>\
");
ips.templates.set('downloads.submit.screenshotWrapper', " \
<div class='ipsGrid ipsGrid_collapsePhone' data-ipsGrid data-ipsGrid-minItemSize='150' data-ipsGrid-maxItemSize='250'>{{{content}}}</div>\
<div class='ipsUploader__container ipsUploader__container--images'>{{{content}}}</div>\
");
ips.templates.set('downloads.submit.linkedScreenshot', " \
+10 -3
View File
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<language>
<app key="downloads" version="105100">
<app key="downloads" version="106107">
<word key="__app_downloads" js="0">Downloads</word>
<word key="frontnavigation_downloads" js="0">Downloads</word>
<word key="__indefart_downloads_file_comment" js="0">a comment on a file</word>
@@ -8,8 +8,11 @@
<word key="__indefart_downloads_file_review" js="0">a review on a file</word>
<word key="__indefart_downloads_file_pending" js="0">a new version</word>
<word key="__defart_downloads_file_comment" js="0">comment on a file</word>
<word key="__defart_downloads_file_comment_plural" js="0">{!#[1:comment][?:comments]} on a file</word>
<word key="__defart_downloads_file" js="0">file</word>
<word key="__defart_downloads_file_plural" js="0">{!#[1:file][?:files]}</word>
<word key="__defart_downloads_file_review" js="0">review on a file</word>
<word key="__defart_downloads_file_review_plural" js="0">{!#[1:review][?:reviews]} on a file</word>
<word key="menu__downloads_downloads" js="0">Downloads</word>
<word key="module__downloads_downloads" js="0">Downloads</word>
<word key="menu__downloads_stats" js="0">Downloads</word>
@@ -91,6 +94,7 @@
<word key="cversioning_on" js="0">Keep previous versions?</word>
<word key="cversioning_on_desc" js="0">If enabled, when a new version of a file is uploaded, the previous version is stored and remains available.</word>
<word key="cversioning" js="0">Number of revisions to keep</word>
<word key="crequire_changelog" js="0">Require Changelog?</word>
<word key="category_moderation" js="0">Moderation</word>
<word key="category_downloading" js="0">Downloading</word>
<word key="category_comments_and_reviews" js="0">Comments</word>
@@ -395,7 +399,6 @@
<word key="submit_bulk_information" js="0">Enter File Information</word>
<word key="bulk_upload_button" js="0">I want to add multiple records at once</word>
<word key="upload_more_files" js="0">Upload more files</word>
<word key="downloads_single_upload" js="0">This category allows a single file upload. To upload a new file, delete the existing file then upload the new file.</word>
<word key="featured_downloads" js="0">Featured Downloads</word>
<word key="next_file" js="0">Next File</word>
<word key="prev_file" js="0">Previous File</word>
@@ -468,10 +471,12 @@
<word key="menu__downloads_stats_downloads" js="0">Downloads</word>
<word key="menu__downloads_stats_downloaders" js="0">Top Downloaders</word>
<word key="menu__downloads_stats_submitters" js="0">Top Submitters</word>
<word key="menu__downloads_stats_topdownloads" js="0">Top Files</word>
<word key="r__downloads" js="0">Download Statistics</word>
<word key="r__downloads_manage" js="0">Can view Download Statistics?</word>
<word key="r__downloaders_manage" js="0">Can view Top Downloaders?</word>
<word key="r__submitters_manage" js="0">Can view Top Submitters?</word>
<word key="r__topdownloads_manage" js="0">Can view Top Files?</word>
<word key="stats_overview_downloads" js="0">File Downloads</word>
<word key="stats_overview_downloads_desc" js="0">Logging of downloads and the retention period for logs can be adjusted on a per-category basis</word>
<word key="ipAddresses__downloads_DownloadLog" js="0">Downloads</word>
@@ -554,6 +559,7 @@
<word key="email_new_file_version_guest" js="0">%s (Guest) has uploaded a new version of %s,</word>
<word key="mailsub__downloads_notification_new_file_version" js="0"><![CDATA[{$content->author()->name|raw} has uploaded a new version of {$content->mapped("title")|raw}]]></word>
<word key="notification__new_file_version" js="0">%s uploaded a new version of %s</word>
<word key="notification__new_file_version_title" js="0">A file was updated</word>
<word key="notification__new_file_version_with" js="0">%s uploaded version %s of %s</word>
<word key="emailtpl_notification_new_file_version" js="0">New file version notification</word>
<word key="emailstats__notification_new_file_version" js="0">New file version notification</word>
@@ -591,7 +597,8 @@
<word key="pending_version_reject_title" js="0">Reject this version?</word>
<word key="pending_version_reject_desc" js="0">This will delete this pending version and leave the current version of the file visible</word>
<word key="file_new_version_date" js="0">New Version Submitted: %s</word>
<word key="makePrimaryScreenshot" js="1">Make this the primary screenshot</word>
<word key="makePrimaryScreenshot" js="1">Make this the primary screenshot for this file</word>
<word key="makePrimary" js="1">Primary</word>
<word key="removeScreenshot" js="1">Remove this screenshot</word>
<word key="markCategoryAsReadConfirm" js="1">Are you sure you want to mark all files as read?</word>
<word key="categoryMarkedRead" js="1">The category has been marked as read</word>
+120 -134
View File
@@ -5,7 +5,6 @@
"cid": {
"allow_null": false,
"auto_increment": true,
"binary": false,
"comment": "",
"decimals": null,
"default": null,
@@ -13,13 +12,11 @@
"name": "cid",
"type": "INT",
"unsigned": false,
"values": [],
"zerofill": false
"values": []
},
"cparent": {
"allow_null": false,
"auto_increment": false,
"binary": false,
"comment": "",
"decimals": null,
"default": "0",
@@ -27,13 +24,11 @@
"name": "cparent",
"type": "INT",
"unsigned": false,
"values": [],
"zerofill": false
"values": []
},
"copen": {
"allow_null": false,
"auto_increment": false,
"binary": false,
"comment": "",
"decimals": null,
"default": "1",
@@ -41,13 +36,11 @@
"name": "copen",
"type": "TINYINT",
"unsigned": false,
"values": [],
"zerofill": false
"values": []
},
"cposition": {
"allow_null": false,
"auto_increment": false,
"binary": false,
"comment": "",
"decimals": null,
"default": "0",
@@ -55,13 +48,11 @@
"name": "cposition",
"type": "INT",
"unsigned": false,
"values": [],
"zerofill": false
"values": []
},
"ccfields": {
"allow_null": true,
"auto_increment": false,
"binary": false,
"comment": "",
"decimals": null,
"default": null,
@@ -69,13 +60,11 @@
"name": "ccfields",
"type": "TEXT",
"unsigned": false,
"values": [],
"zerofill": false
"values": []
},
"cname_furl": {
"allow_null": true,
"auto_increment": false,
"binary": false,
"comment": "",
"decimals": null,
"default": null,
@@ -83,13 +72,11 @@
"name": "cname_furl",
"type": "VARCHAR",
"unsigned": false,
"values": [],
"zerofill": false
"values": []
},
"ctags_disabled": {
"allow_null": true,
"auto_increment": false,
"binary": false,
"comment": "",
"decimals": null,
"default": null,
@@ -97,13 +84,11 @@
"name": "ctags_disabled",
"type": "TINYINT",
"unsigned": false,
"values": [],
"zerofill": false
"values": []
},
"ctags_noprefixes": {
"allow_null": true,
"auto_increment": false,
"binary": false,
"comment": "",
"decimals": null,
"default": null,
@@ -111,13 +96,11 @@
"name": "ctags_noprefixes",
"type": "TINYINT",
"unsigned": false,
"values": [],
"zerofill": false
"values": []
},
"ctags_predefined": {
"allow_null": true,
"auto_increment": false,
"binary": false,
"comment": "",
"decimals": null,
"default": null,
@@ -125,13 +108,11 @@
"name": "ctags_predefined",
"type": "TEXT",
"unsigned": false,
"values": [],
"zerofill": false
"values": []
},
"cbitoptions": {
"allow_null": false,
"auto_increment": false,
"binary": false,
"comment": "Bitwise options",
"decimals": null,
"default": "0",
@@ -139,13 +120,11 @@
"name": "cbitoptions",
"type": "INT",
"unsigned": true,
"values": [],
"zerofill": false
"values": []
},
"ctypes": {
"allow_null": true,
"auto_increment": false,
"binary": false,
"comment": "JSON array of allowed file extensions or NULL for no restriction.",
"decimals": null,
"default": null,
@@ -153,13 +132,11 @@
"name": "ctypes",
"type": "TEXT",
"unsigned": false,
"values": [],
"zerofill": false
"values": []
},
"csortorder": {
"allow_null": false,
"auto_increment": false,
"binary": false,
"comment": "The default sort order",
"decimals": null,
"default": "updated DESC",
@@ -167,13 +144,11 @@
"name": "csortorder",
"type": "VARCHAR",
"unsigned": false,
"values": [],
"zerofill": false
"values": []
},
"cmaxfile": {
"allow_null": true,
"auto_increment": false,
"binary": false,
"comment": "Maximum file size",
"decimals": null,
"default": "512000",
@@ -181,13 +156,11 @@
"name": "cmaxfile",
"type": "INT",
"unsigned": true,
"values": [],
"zerofill": false
"values": []
},
"cmaxss": {
"allow_null": true,
"auto_increment": false,
"binary": false,
"comment": "Maximum screenshot size",
"decimals": null,
"default": "512",
@@ -195,13 +168,11 @@
"name": "cmaxss",
"type": "INT",
"unsigned": true,
"values": [],
"zerofill": false
"values": []
},
"cmaxdims": {
"allow_null": true,
"auto_increment": false,
"binary": false,
"comment": "Maximum screenshot dimensions",
"decimals": null,
"default": null,
@@ -209,13 +180,11 @@
"name": "cmaxdims",
"type": "VARCHAR",
"unsigned": false,
"values": [],
"zerofill": false
"values": []
},
"cversioning": {
"allow_null": true,
"auto_increment": false,
"binary": false,
"comment": "Number of versions of files to keep. 0 means disabled, NULL means keep all versions.",
"decimals": null,
"default": null,
@@ -223,13 +192,11 @@
"name": "cversioning",
"type": "INT",
"unsigned": true,
"values": [],
"zerofill": false
"values": []
},
"clog": {
"allow_null": true,
"auto_increment": false,
"binary": false,
"comment": "Number of days to keep download logs. 0 means disables, NULL means never delete logs.",
"decimals": null,
"default": null,
@@ -237,13 +204,11 @@
"name": "clog",
"type": "INT",
"unsigned": true,
"values": [],
"zerofill": false
"values": []
},
"cforum_id": {
"allow_null": true,
"auto_increment": false,
"binary": false,
"comment": "IP.Board integration: forum ID",
"decimals": null,
"default": null,
@@ -251,13 +216,11 @@
"name": "cforum_id",
"type": "SMALLINT",
"unsigned": true,
"values": [],
"zerofill": false
"values": []
},
"ctopic_prefix": {
"allow_null": true,
"auto_increment": false,
"binary": false,
"comment": "IP.Board integration: topic prefix",
"decimals": null,
"default": null,
@@ -265,13 +228,11 @@
"name": "ctopic_prefix",
"type": "VARCHAR",
"unsigned": false,
"values": [],
"zerofill": false
"values": []
},
"ctopic_suffix": {
"allow_null": true,
"auto_increment": false,
"binary": false,
"comment": "IP.Board integration: topic suffix",
"decimals": null,
"default": null,
@@ -279,13 +240,11 @@
"name": "ctopic_suffix",
"type": "VARCHAR",
"unsigned": false,
"values": [],
"zerofill": false
"values": []
},
"clast_file_id": {
"allow_null": false,
"auto_increment": false,
"binary": false,
"comment": "Latest file ID in this category or any sub-category",
"decimals": null,
"default": "0",
@@ -293,13 +252,11 @@
"name": "clast_file_id",
"type": "BIGINT",
"unsigned": true,
"values": [],
"zerofill": false
"values": []
},
"clast_file_date": {
"allow_null": false,
"auto_increment": false,
"binary": false,
"comment": "Latest file date in this category or any sub-category",
"decimals": null,
"default": "0",
@@ -307,48 +264,55 @@
"name": "clast_file_date",
"type": "INT",
"unsigned": true,
"values": [],
"zerofill": false
"values": []
},
"cclub_id": {
"allow_null": true,
"auto_increment": false,
"comment": "The club ID if this category belongs to a club, or NULL",
"decimals": null,
"default": null,
"length": 20,
"name": "cclub_id",
"type": "BIGINT",
"length": 20,
"decimals": null,
"values": null,
"allow_null": true,
"default": null,
"comment": "The club ID if this category belongs to a club, or NULL",
"unsigned": true,
"zerofill": false,
"auto_increment": false,
"binary": false
"values": []
},
"cversion_numbers": {
"allow_null": false,
"auto_increment": false,
"comment": "0 = Disable version numbers, 1 = Allow version numbers, 2 = Require version numbers",
"decimals": null,
"default": "1",
"length": 1,
"name": "cversion_numbers",
"type": "TINYINT",
"length": 1,
"decimals": null,
"values": null,
"allow_null": false,
"default": "1",
"comment": "0 = Disable version numbers, 1 = Allow version numbers, 2 = Require version numbers",
"unsigned": false,
"zerofill": false,
"auto_increment": false,
"binary": false
"values": []
},
"cmultiple_files": {
"allow_null": false,
"auto_increment": false,
"comment": "Allow multiple files to be uploaded",
"decimals": null,
"default": "1",
"length": 4,
"name": "cmultiple_files",
"type": "TINYINT",
"length": null,
"decimals": null,
"values": null,
"allow_null": false,
"default": "1",
"comment": "Allow multiple files to be uploaded",
"unsigned": false,
"auto_increment": false
"values": []
},
"callow_anonymous": {
"allow_null": false,
"auto_increment": false,
"comment": "",
"decimals": null,
"default": "0",
"length": 3,
"name": "callow_anonymous",
"type": "TINYINT",
"unsigned": true,
"values": []
},
"cdisclaimer_location": {
"name": "cdisclaimer_location",
@@ -365,6 +329,18 @@
"comment": "",
"unsigned": false,
"auto_increment": false
},
"crequire_changelog": {
"name": "crequire_changelog",
"type": "TINYINT",
"length": null,
"decimals": null,
"values": null,
"allow_null": false,
"default": "0",
"comment": "Is changelog required?",
"unsigned": false,
"auto_increment": false
}
},
"indexes": {
@@ -403,16 +379,17 @@
"category_open": {
"type": "key",
"name": "category_open",
"columns": [
"copen",
"cposition"
],
"length": [
null,
null
],
"columns": [
"copen",
"cposition"
]
}
},
"collation": "utf8mb4_unicode_ci",
"inserts": [
{
"cid": "1",
@@ -439,7 +416,6 @@
"clast_file_date": "0"
}
],
"comment": "",
"reporting": "count"
},
"downloads_cfields": {
@@ -502,18 +478,16 @@
"zerofill": false
},
"cf_max_input": {
"allow_null": false,
"auto_increment": false,
"binary": false,
"comment": "",
"decimals": null,
"default": "0",
"length": 6,
"name": "cf_max_input",
"type": "SMALLINT",
"unsigned": false,
"type": "MEDIUMINT",
"length": 6,
"decimals": null,
"values": [],
"zerofill": false
"allow_null": false,
"default": "0",
"comment": "",
"unsigned": false,
"auto_increment": false
},
"cf_input_format": {
"allow_null": true,
@@ -1369,6 +1343,30 @@
"zerofill": false,
"auto_increment": false,
"binary": false
},
"file_author_name": {
"name": "file_author_name",
"type": "VARCHAR",
"length": 255,
"decimals": null,
"values": null,
"allow_null": true,
"default": null,
"comment": "",
"unsigned": false,
"auto_increment": false
},
"file_is_anon": {
"name": "file_is_anon",
"type": "TINYINT",
"length": null,
"decimals": null,
"values": null,
"allow_null": false,
"default": "0",
"comment": "",
"unsigned": true,
"auto_increment": false
}
},
"indexes": {
@@ -1904,6 +1902,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": {
@@ -2652,20 +2662,6 @@
"unsigned": false,
"values": [],
"zerofill": false
},
"field_14": {
"allow_null": true,
"auto_increment": false,
"binary": false,
"comment": "",
"decimals": null,
"default": null,
"length": 255,
"name": "field_14",
"type": "VARCHAR",
"unsigned": false,
"values": [],
"zerofill": false
}
},
"indexes": {
@@ -2678,16 +2674,6 @@
"columns": [
"file_id"
]
},
"field_14": {
"type": "key",
"name": "field_14",
"length": [
null
],
"columns": [
"field_14"
]
}
}
},
@@ -2909,7 +2895,7 @@
"decimals": null,
"values": null,
"allow_null": false,
"default": "",
"default": 0,
"comment": "",
"unsigned": false,
"auto_increment": false
@@ -2933,7 +2919,7 @@
"decimals": null,
"values": null,
"allow_null": false,
"default": "",
"default": 0,
"comment": "",
"unsigned": false,
"auto_increment": false
@@ -2957,7 +2943,7 @@
"decimals": null,
"values": null,
"allow_null": false,
"default": "",
"default": 0,
"comment": "",
"unsigned": false,
"auto_increment": false
@@ -2988,7 +2974,7 @@
},
"pending_form_values": {
"name": "pending_form_values",
"type": "TEXT",
"type": "MEDIUMTEXT",
"length": null,
"decimals": null,
"values": null,
+125 -63
View File
@@ -112,7 +112,7 @@
{template="categoryMenu" group="browse" params="$category->children()"}
<ul class="ipsToolList ipsToolList_horizontal ipsResponsive_hidePhone ipsClearfix ipsSpacer_both">
{template="categoryButtons" group="browse" params="\IPS\downloads\Category::canOnAny('add') or $category->can('add'), $category, FALSE"}
{template="categoryButtons" group="browse" params="$category->can('add'), $category, FALSE"}
</ul>
<div class='ipsBox ipsResponsive_pull cDownloadsCategoryTable'>
@@ -120,7 +120,7 @@
</div>
<ul class="ipsToolList ipsToolList_horizontal ipsResponsive_showPhone ipsResponsive_block ipsClearfix ipsSpacer_top">
{template="categoryButtons" group="browse" params="\IPS\downloads\Category::canOnAny('add') or $category->can('add'), $category, TRUE"}
{template="categoryButtons" group="browse" params="$category->can('add'), $category, TRUE"}
</ul>
</div>
@@ -205,11 +205,11 @@
{{if $lastPost = $category->lastFile()}}
<li>{template="userPhoto" app="core" group="global" params="$lastPost->author(), 'tiny'"}</li>
<li><a href="{$lastPost->url()}" class='ipsType_break ipsContained'>{$lastPost->name}</a></li>
<li class='ipsType_blendLinks'>{lang="byline_nodate" htmlsprintf="$lastPost->author()->link()"}</li>
<li class='ipsType_blendLinks'>{lang="byline_nodate" htmlsprintf="$lastPost->author()->link( NULL, NULL, $lastPost->isAnonymous() )"}</li>
<li data-short="1 dy" class="ipsType_light">{datetime="$lastPost->submitted"}</li>
{{endif}}
</ul>
{{if method_exists( $table, 'canModerate' ) AND $table->canModerate()}}
{{if $table AND method_exists( $table, 'canModerate' ) AND $table->canModerate()}}
<div class='ipsDataItem_modCheck'>
<span class='ipsCustomInput'>
<input type='checkbox' data-role='moderation' name="moderate[{$category->_id}]" data-actions="{expression="implode( ' ', $table->multimodActions( $category ) )"}" data-state=''>
@@ -247,7 +247,7 @@
{{endif}}
</span>
{{endif}}
<span class='ipsType_large ipsType_light ipsType_unbold ipsType_noBreak'>{lang="byline_nodate" htmlsprintf="$file->author()->link()"}</span>
<span class='ipsType_large ipsType_light ipsType_unbold ipsType_noBreak'>{lang="byline_nodate" htmlsprintf="$file->author()->link( NULL, NULL, $file->isAnonymous() )"}</span>
</h2>
<ul class='ipsList_inline ipsSpacer_top ipsSpacer_half'>
{{if $price = $file->price()}}
@@ -310,11 +310,11 @@
</li>
{{if ( $file->canDownload() or ( $file->container()->message('npd') and !$file->canBuy() ) ) && !$file->canBuy()}}
<li class='ipsToolList_primaryAction ipsPos_left'>
<a href='{{if settings.idm_antileech}}{$file->url('download')->csrf()}{{else}}{$file->url('download')}{{endif}}' class='ipsButton ipsButton_light ipsButton_fullWidth ipsButton_small' {{if $file->container()->message('disclaimer') or \count( $file->files() ) > 1 or member.group['idm_wait_period']}}data-ipsDialog{{endif}}>{lang="download"}</a>
<a href='{{if settings.idm_antileech AND !$file->requiresDownloadConfirmation()}}{$file->url('download')->csrf()}{{else}}{$file->url('download')}{{endif}}' class='ipsButton ipsButton_light ipsButton_fullWidth ipsButton_small' {{if $file->requiresDownloadConfirmation()}}data-ipsDialog{{endif}}>{lang="download"}</a>
</li>
{{elseif $file->canBuy()}}
<li class='ipsToolList_primaryAction ipsPos_left'>
<a href='{$file->url('buy')->csrf()}' class='ipsButton ipsButton_small ipsButton_fullWidth ipsButton_important'><i class='fa fa-shopping-cart'></i> &nbsp;{lang="buy_now"}{{if $price}} - {expression="strip_tags($price)"}{{endif}}</a>
<a href='{{if !$file->container()->message('disclaimer') OR !\in_array( $file->container()->disclaimer_location, [ 'purchase', 'both' ] )}}{$file->url('buy')->csrf()}{{else}}{$file->url('buy')}{{endif}}' class='ipsButton ipsButton_small ipsButton_fullWidth ipsButton_important'><i class='fa fa-shopping-cart'></i> &nbsp;{lang="buy_now"}{{if $price}} - {expression="strip_tags($price)"}{{endif}}</a>
</li>
{{endif}}
</ul>
@@ -465,7 +465,7 @@
<a href='{$file->url( "getPrefComment" )}' title='{lang="view_this_file" sprintf="$file->name"}'>{$file->name}</a>
</h3>
<p class='ipsType_medium ipsType_reset ipsType_blendLinks ipsTruncate ipsTruncate_line'>{lang="byline_nodate" htmlsprintf="$file->author()->link()"}</p>
<p class='ipsType_medium ipsType_reset ipsType_blendLinks ipsTruncate ipsTruncate_line'>{lang="byline_nodate" htmlsprintf="$file->author()->link( NULL, NULL, $file->isAnonymous() )"}</p>
{{if $file->container()->bitoptions['reviews']}}
{template="rating" group="global" location="front" app="core" params="'medium', $file->averageReviewRating(), \IPS\Settings::i()->reviews_rating_out_of"}
{{endif}}
@@ -555,7 +555,7 @@
<span class='ipsType_break ipsContained'><a href='{$file->url( "getPrefComment" )}' title='{lang="view_this_file" sprintf="$file->name"} {{if $file->canEdit()}}{lang="click_hold_edit"}{{endif}}' {{if $file->canEdit()}}data-role="editableTitle"{{endif}}>{$file->name}</a></span>
</h4>
<p class='ipsType_reset ipsType_light ipsType_blendLinks'>
{lang="byline_nodate" htmlsprintf="$file->author()->link()"}
{lang="byline_nodate" htmlsprintf="$file->author()->link( NULL, NULL, $file->isAnonymous() )"}
{{if \IPS\Request::i()->app != 'downloads'}}
{lang="in"} <a href="{$file->container()->url()}">{$file->container()->_title}</a>
{{endif}}
@@ -594,7 +594,7 @@
{{endif}}
<p class='ipsType_medium'><strong>{{if $file->updated == $file->submitted}}{lang="submitted"} {datetime="$file->submitted" lowercase="true"}{{else}}{lang="updated"} {datetime="$file->updated" lowercase="true"}{{endif}}</strong></p>
</div>
{{if method_exists( $table, 'canModerate' ) AND $table->canModerate()}}
{{if $table AND method_exists( $table, 'canModerate' ) AND $table->canModerate()}}
<div class='ipsDataItem_modCheck'>
<span class='ipsCustomInput'>
<input type='checkbox' data-role='moderation' name="moderate[{$file->id}]" data-actions="{expression="implode( ' ', $table->multimodActions( $file ) )"}" data-state='{{if $file->tableStates()}}{$file->tableStates()}{{endif}}'>
@@ -689,15 +689,15 @@
<div class='ipsSpacer_top ipsSpacer_half'>
{{if $item->canBuy() AND $item->isPurchasable()}}
{{if $item->canDownload()}}
<a href='{{if settings.idm_antileech}}{$item->url('download')->csrf()}{{else}}{$item->url('download')}{{endif}}' class='ipsButton ipsButton_fullWidth ipsButton_small ipsButton_primary' {{if $item->container()->message('disclaimer') or \count( $item->files() ) > 1 or member.group['idm_wait_period']}}data-dialog{{endif}}>{lang="download_now"}</a>
<a href='{{if settings.idm_antileech AND !$item->requiresDownloadConfirmation()}}{$item->url('download')->csrf()}{{else}}{$item->url('download')}{{endif}}' class='ipsButton ipsButton_fullWidth ipsButton_small ipsButton_primary' {{if $item->requiresDownloadConfirmation()}}data-dialog{{endif}}>{lang="download_now"}</a>
{{else}}
<a href='{$item->url('buy')->csrf()}' class='ipsButton ipsButton_fullWidth ipsButton_small ipsButton_primary'><i class='fa fa-shopping-cart'></i> &nbsp;{lang="buy_now"}{{if $price = $item->price()}} - {$price|raw}{{endif}}</a>
<a href='{{if !$item->container()->message('disclaimer') OR !\in_array( $item->container()->disclaimer_location, [ 'purchase', 'both' ] )}}{$item->url('buy')->csrf()}{{else}}{$item->url('buy')}{{endif}}' class='ipsButton ipsButton_fullWidth ipsButton_small ipsButton_primary'><i class='fa fa-shopping-cart'></i> &nbsp;{lang="buy_now"}{{if $price = $item->price()}} - {$price|raw}{{endif}}</a>
{{endif}}
{{elseif !$item->isPurchasable( FALSE )}}
{lang="purchasing_disabled"}
{{else}}
{{if $item->canDownload() or !$item->downloadTeaser()}}
<a href='{{if settings.idm_antileech}}{$item->url('download')->csrf()}{{else}}{$item->url('download')}{{endif}}' class='ipsButton ipsButton_fullWidth ipsButton_small ipsButton_primary' {{if $item->container()->message('disclaimer') or \count( $item->files() ) > 1 or member.group['idm_wait_period']}}data-dialog{{endif}}>{lang="download_now"}</a>
<a href='{{if settings.idm_antileech AND !$item->requiresDownloadConfirmation()}}{$item->url('download')->csrf()}{{else}}{$item->url('download')}{{endif}}' class='ipsButton ipsButton_fullWidth ipsButton_small ipsButton_primary' {{if $item->requiresDownloadConfirmation()}}data-dialog{{endif}}>{lang="download_now"}</a>
{{else}}
<span class="ipsButton ipsButton_light ipsButton_fullWidth ipsButton_small ipsButton_disable">{lang="download_teaser"}</span>
{{endif}}
@@ -1068,12 +1068,19 @@
</div>
</div>]]></template>
<template template_group="nexus" template_name="fileInfo" template_data="$file" template_location="front" template_app="downloads"></template>
<template template_group="nexus" template_name="filePurchaseInfo" template_data="$file" template_location="front" template_app="downloads"><![CDATA[{{if $file->container()->can( 'download' )}}
<a {{if $file->canView() }}href='{{if settings.idm_antileech}}{$file->url('download')->csrf()}{{else}}{$file->url('download')}{{endif}}'{{endif}} class='ipsButton ipsButton_medium {{if $file->canView()}}ipsButton_primary{{else}}ipsButton_disabled{{endif}}' {{if $file->container()->message('disclaimer') or \count( $file->files() ) > 1 or member.group['idm_wait_period']}}data-ipsDialog{{endif}}>{lang="download_now"}</a>
{{endif}}
{{if $file->container()->can( 'view' )}}
<a {{if $file->canView() }}href='{$file->url( "getPrefComment" )}'{{endif}} class='ipsButton ipsButton_medium {{if $file->canView()}}ipsButton_alternate{{else}}ipsButton_disabled{{endif}}'>{lang="file_view_details"}</a>
{{endif}}
<template template_group="nexus" template_name="filePurchaseInfo" template_data="$file, $reactivateUrl=NULL" template_location="front" template_app="downloads"><![CDATA[
<ul class='ipsList_inline'>
{{if $reactivateUrl}}
<li><a href="{$reactivateUrl}" class='ipsButton ipsButton_light'>{lang="reactivate_package"}</a></li>
{{endif}}
{{if $file->canDownload()}}
<li><a {{if $file->canView()}}href='{{if settings.idm_antileech AND !$file->requiresDownloadConfirmation()}}{$file->url('download')->csrf()}{{else}}{$file->url('download')}{{endif}}'{{endif}} class='ipsButton ipsButton_medium {{if $file->canView()}}ipsButton_primary{{else}}ipsButton_disabled{{endif}}' {{if $file->requiresDownloadConfirmation()}}data-ipsDialog{{endif}}>{lang="download_now"}</a></li>
{{endif}}
{{if $file->container()->can( 'view' )}}
<li><a {{if $file->canView() }}href='{$file->url( "getPrefComment" )}'{{endif}} class='ipsButton ipsButton_medium {{if $file->canView()}}ipsButton_alternate{{else}}ipsButton_disabled{{endif}}'>{lang="file_view_details"}</a></li>
{{endif}}
</ul>
{{if !$file->canView()}}
<p class='ipsType_light'>{lang="nexus_file_no_longer_available"}</p>
{{endif}}]]></template>
@@ -1150,6 +1157,38 @@
{$pagination|raw}
{{else}}
<p class="ipsPad">{lang="no_results"}</p>
{{endif}}]]></template>
<template template_group="stats" template_name="topDownloadsTable" template_data="$downloads, $pagination" template_location="admin" template_app="downloads"><![CDATA[
{{if trim( $pagination )}}
{$pagination|raw}
<br><br>
{{endif}}
{{if \count( $downloads )}}
<table class="ipsTable ipsTable_zebra">
<thead>
<tr>
<th>{lang="dfid"}</th>
<th>{lang="downloads"}</th>
</tr>
</thead>
<tbody>
{{foreach $downloads as $row}}
<tr>
<td>
{$row['file']|raw}
</td>
<td>
{$row['downloads']}
</td>
</tr>
{{endforeach}}
</tbody>
</table>
<br>
{$pagination|raw}
{{else}}
<p class="ipsPad">{lang="no_results"}</p>
{{endif}}]]></template>
<template template_group="submit" template_name="bulkForm" template_data="$form, $category" template_location="front" template_app="downloads"><![CDATA[
{template="pageHeader" group="global" app="core" params="\IPS\Member::loggedIn()->language()->addToStack('submit_bulk_information')"}
@@ -1290,8 +1329,6 @@
{$form->elements['']['files']->html( $form )|raw}
{{if $category->multiple_files}}
<button type='button' class='ipsButton ipsButton_light ipsButton_verySmall ipsHide ipsMargin_top' data-action='uploadMore'>{lang="upload_more_files"}</button>
{{else}}
<p id='elDownloadsSingleMessage' class='ipsHide'><i class="fa fa-exclamation-circle"></i> {lang="downloads_single_upload"}</p>
{{endif}}
</div>
</div>
@@ -1453,7 +1490,7 @@
<strong>{lang="file_submitter"}</strong>
</div>
<div class='ipsDataItem_main'>
{$file->author()->link()|raw}
{$file->author()->link( NULL, NULL, $file->isAnonymous() )|raw}
</div>
</li>
<li class='ipsDataItem'>
@@ -1508,7 +1545,7 @@
<ul class='ipsList_inline'>
<li><img src='{resource="subitem_stem.png" app="core"}' alt=''> <strong>{lang="with_version" sprintf="$versionNumber"}</strong></li>
{{if $file->canDownload()}}
<li><a href='{$file->url()->setQueryString( array( 'do' => 'download', 'version' => $version['b_id'] ) )->csrf()}' {{if $file->container()->message('disclaimer') or \count( $file->files( $version['b_id'] ) ) > 1}}data-ipsDialog{{endif}}>{lang="download"}</a></li>
<li><a href='{{if settings.idm_antileech AND !$file->requiresDownloadConfirmation()}}{$file->url('download')->setQueryString( array( 'version' => $version['b_id'] ) )->csrf()}{{else}}{$file->url('download')->setQueryString( array( 'version' => $version['b_id'] ) )}{{endif}}' {{if $file->requiresDownloadConfirmation()}}data-ipsDialog{{endif}}>{lang="download"}</a></li>
{{endif}}
{{if $file->canEdit() and member.group['idm_bypass_revision']}}
<li><a href="{$file->url()->setQueryString( array( 'do' => 'restorePreviousVersion', 'version' => $version['b_id'] ) )->csrf()}" data-confirm data-confirmMessage="{lang="version_restore_confirm"}" data-confirmSubMessage="{lang="version_restore_confirm_desc" sprintf="$versionNumber"}">{lang="restore"}</a></li>
@@ -1603,7 +1640,7 @@
</div>
{{endif}}
</div>]]></template>
<template template_group="view" template_name="download" template_data="$file, $terms = NULL, $download = NULL, $confirmUrl, $multipleFiles, $waitingOn=NULL, $waitingFor=0" template_location="front" template_app="downloads"><![CDATA[<div data-controller='downloads.front.view.download'>
<template template_group="view" template_name="download" template_data="$file, $terms=NULL, $download=NULL, $confirmUrl=NULL, $multipleFiles=NULL, $waitingOn=NULL, $waitingFor=0" template_location="front" template_app="downloads"><![CDATA[<div data-controller='downloads.front.view.download'>
{{if $terms}}
{template="downloadTerms" group="view" app="downloads" params="$file, $terms, $confirmUrl, $multipleFiles"}
{{else}}
@@ -1620,7 +1657,7 @@
<span class="ipsType_light ipsType_blendLinks ipsResponsive_hidePhone ipsResponsive_inline"><i class="fa fa-info-circle"></i> {lang="download_no_permission"}</span>
{{endif}}
{{else}}
<a href='{{if settings.idm_antileech}}{$file->url('download')->csrf()}{{else}}{$file->url('download')}{{endif}}' class='ipsButton ipsButton_fullWidth ipsButton_large ipsButton_important' {{if $file->container()->message('disclaimer') or \count( $file->files() ) > 1 or ( member.group['idm_wait_period'] AND ( !$file->isPaid() OR member.group['idm_paid_restrictions'] ) )}}data-ipsDialog{{endif}}>{lang="download_now"}</a>
<a href='{{if settings.idm_antileech AND !$file->requiresDownloadConfirmation()}}{$file->url('download')->csrf()}{{else}}{$file->url('download')}{{endif}}' class='ipsButton ipsButton_fullWidth ipsButton_large ipsButton_important' {{if $file->requiresDownloadConfirmation()}}data-ipsDialog{{endif}}>{lang="download_now"}</a>
{{endif}}
</li>
]]></template>
@@ -1656,14 +1693,9 @@
{{endforeach}}]]></template>
<template template_group="view" template_name="logTable" template_data="$table, $headers, $rows, $quickSearch" template_location="front" template_app="downloads"><![CDATA[<div data-baseurl='{$table->baseUrl}' data-resort='{$table->resortKey}' data-controller='core.global.core.table' {{if $table->getPaginationKey() != 'page'}}data-pageParam='{$table->getPaginationKey()}'{{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, TRUE, $table->getPaginationKey()"}
</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, TRUE, $table->getPaginationKey()"}
</div>
{{if \count( $rows )}}
<ol class='ipsGrid ipsGrid_collapsePhone ipsPad ipsClear {{foreach $table->classes as $class}}{$class} {{endforeach}}' id='elTable_{$table->uniqueId}' data-role="tableRows">
@@ -1682,13 +1714,9 @@
</div>
{{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, TRUE, $table->getPaginationKey()"}
</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, TRUE, $table->getPaginationKey()"}
</div>
</div>]]></template>
<template template_group="view" template_name="multipleFiles" template_data="$fileObject, $files, $waitingOn, $waitingFor" template_location="front" template_app="downloads"><![CDATA[<div class='ipsPad'>
<h1 class='ipsType_pageTitle'>{lang="download_your_files"}</h1>
@@ -1709,7 +1737,7 @@
{{endif}}
<div class='ipsDataItem_generic ipsDataItem_size4 ipsType_right'>
<span class="ipsHide" data-role="downloadCounterContainer">{lang="download_begins_in"} <span data-role="downloadCounter"></span> {lang="seconds"}</span>
<a href='{$fileObject->url()->setQueryString( array( 'do' => 'download', 'r' => $k, 'confirm' => 1, 't' => 1, 'version' => isset( \IPS\Request::i()->version ) ? \IPS\Request::i()->version : NULL ) )->csrf()}' class='ipsButton ipsButton_primary ipsButton_small' data-action="download" {{if member.group['idm_wait_period']}}data-wait='true'{{endif}}>{lang="download"}</a>
<a href='{$fileObject->url('download')->setQueryString( array( 'r' => $k, 'confirm' => 1, 't' => 1, 'version' => isset( \IPS\Request::i()->version ) ? \IPS\Request::i()->version : NULL ) )->csrf()}' class='ipsButton ipsButton_primary ipsButton_small' data-action="download" {{if member.group['idm_wait_period']}}data-wait='true'{{endif}}>{lang="download"}</a>
</div>
</li>
{{endforeach}}
@@ -1733,7 +1761,7 @@
{lang="file_notify_none"}
{{endif}}
<br>
<a href="{url='app=core&module=system&controller=notifications&do=options&type=new_file_version'}">Change how the notification is sent</a>
<a href="{url='app=core&module=system&controller=notifications&do=options&type=new_file_version'}">{lang="follow_type_immediate_change"}</a>
</div>]]></template>
<template template_group="view" template_name="pendingView" template_data="$file, $pendingVersion" template_location="front" template_app="downloads"><![CDATA[
{{if $club = $file->container()->club()}}
@@ -1778,7 +1806,7 @@
{template="userPhoto" app="core" group="global" params="$file->author(), 'tiny', $file->warningRef()"}
<div>
<p class='ipsType_reset ipsType_large ipsType_blendLinks'>
{lang="byline_nodate_itemprop" htmlsprintf="$file->author()->link( $file->warningRef() )"}{{if member.group['idm_view_approvers'] and $file->approver}} {lang="file_approved_by" sprintf="\IPS\Member::load( $file->approver )->name" htmlsprintf="\IPS\DateTime::ts( $file->approvedon )->html()"}{{endif}}
{lang="byline_nodate_itemprop" htmlsprintf="$file->author()->link( $file->warningRef(), NULL, $file->isAnonymous() )"}{{if member.group['idm_view_approvers'] and $file->approver}} {lang="file_approved_by" sprintf="\IPS\Member::load( $file->approver )->name" htmlsprintf="\IPS\DateTime::ts( $file->approvedon )->html()"}{{endif}}
</p>
{{if $file->author()->member_id}}
<ul class='ipsList_inline'>
@@ -1854,12 +1882,12 @@
{{$data = $files->data();}}
<li class='ipsDataItem'>
<div class='ipsDataItem_main'>
<h4 class='ipsDataItem_title ipsContained_container'><a href="{$pendingVersion->url('download')->csrf()->setQueryString( 'fileId', $data['record_id'] )}">{$f->originalFilename}</a></h4>
<h4 class='ipsDataItem_title ipsContained_container'><a href="{{if settings.idm_antileech AND !$file->requiresDownloadConfirmation()}}{$pendingVersion->url('download')->csrf()->setQueryString( 'fileId', $data['record_id'] )}{{else}}{$pendingVersion->url('download')->setQueryString( 'fileId', $data['record_id'] )}{{endif}}">{$f->originalFilename}</a></h4>
{{if $data['record_size']}}<p class='ipsType_reset ipsDataItem_meta'>{filesize="$data['record_size']"}</p>{{endif}}
</div>
<div class='ipsDataItem_generic ipsDataItem_size4'>
<span class="ipsHide" data-role="downloadCounterContainer">{lang="download_begins_in"} <span data-role="downloadCounter"></span> {lang="seconds"}</span>
<a href="{$pendingVersion->url('download')->csrf()->setQueryString( 'fileId', $data['record_id'] )}" class='ipsButton ipsButton_primary ipsButton_small'>{lang="download"}</a>
<a href="{{if settings.idm_antileech AND !$file->requiresDownloadConfirmation()}}{$pendingVersion->url('download')->csrf()->setQueryString( 'fileId', $data['record_id'] )}{{else}}{$pendingVersion->url('download')->setQueryString( 'fileId', $data['record_id'] )}{{endif}}" class='ipsButton ipsButton_primary ipsButton_small'>{lang="download"}</a>
</div>
</li>
{{endforeach}}
@@ -2054,7 +2082,10 @@
{template="userPhoto" app="core" group="global" params="$file->author(), 'tiny', $file->warningRef()"}
<div>
<p class='ipsType_reset ipsType_large ipsType_blendLinks'>
{lang="byline_nodate_itemprop" htmlsprintf="$file->author()->link( $file->warningRef() )"}{{if member.group['idm_view_approvers'] and $file->approver}} {lang="file_approved_by" sprintf="\IPS\Member::load( $file->approver )->name" htmlsprintf="\IPS\DateTime::ts( $file->approvedon )->html()"}{{endif}}
{lang="byline_nodate_itemprop" htmlsprintf="$file->author()->link( $file->warningRef(), NULL, $file->isAnonymous() )"}{{if member.group['idm_view_approvers'] and $file->approver}} {lang="file_approved_by" sprintf="\IPS\Member::load( $file->approver )->name" htmlsprintf="\IPS\DateTime::ts( $file->approvedon )->html()"}{{endif}}
{{if $file->isAnonymous() and \IPS\Member::loggedIn()->modPermission('can_view_anonymous_posters')}}
<a data-ipsHover data-ipsHover-width="370" data-ipsHover-onClick href="{$file->url( 'reveal' )->csrf()}"><span class="cAuthorPane_badge cAuthorPane_badge_small cAuthorPane_badge--anon" data-ipsTooltip title="{lang="post_anonymously_reveal"}"></span></a>
{{endif}}
</p>
{{if $file->author()->member_id OR $file->canChangeAuthor()}}
<ul class='ipsList_inline ipsType_light ipsType_blendLinks'>
@@ -2087,11 +2118,11 @@
{template="contentItemMessages" group="global" app="core" params="$file->getMessages(), $file"}
{{if ( \IPS\Member::loggedIn()->member_id == $file->author()->member_id OR $file->canUnhide() OR $file->canHide() ) AND $file->hasPendingVersion()}}
<div class="ipsMessage ipsMessage_warning ipsSpacer_both">
<div class="ipsMessage ipsMessage_warning ipsSpacer_both ipsClearfix">
<p class="ipsType_reset">
{lang="file_pending_approval_version"}
{{if $file->canUnhide() OR $file->canHide()}}
<a href="{expression="\IPS\downloads\File\PendingVersion::load($file->id, 'pending_file_id')->url()"}" class="ipsPos_right ipsButton ipsButton_positive ipsButton_verySmall" title='{lang="file_pending_version_button"}'>{lang="file_pending_version_button"}</a>
<a href="{expression="\IPS\downloads\File\PendingVersion::load($file->id, 'pending_file_id')->url()"}" class="ipsPos_right ipsButton ipsButton_positive ipsButton_verySmall sm:ipsMargin_top:half sm:ipsPos_left" title='{lang="file_pending_version_button"}'>{lang="file_pending_version_button"}</a>
{{endif}}
</p>
</div>
@@ -2233,7 +2264,7 @@
{{if !$file->isPurchasable( FALSE )}}
<span class="ipsType_light ipsType_blendLinks ipsResponsive_hidePhone ipsResponsive_inline"><i class="fa fa-info-circle"></i> {lang="purchasing_disabled"}</span>
{{else}}
<a href='{$file->url('buy')->csrf()}' class='ipsButton ipsButton_fullWidth ipsButton_large ipsButton_important' {{if $file->container()->message('disclaimer') AND \in_array( $file->container()->disclaimer_location, [ 'purchase', 'both'])}}data-ipsDialog{{endif}}><i class='fa fa-shopping-cart'></i> &nbsp;{lang="buy_now"}{{if $price = $file->price()}} - {$price|raw}{{endif}}</a>
<a href='{{if !$file->container()->message('disclaimer') OR !\in_array( $file->container()->disclaimer_location, [ 'purchase', 'both' ] )}}{$file->url('buy')->csrf()}{{else}}{$file->url('buy')}{{endif}}' class='ipsButton ipsButton_fullWidth ipsButton_large ipsButton_important' {{if $file->container()->message('disclaimer') AND \in_array( $file->container()->disclaimer_location, [ 'purchase', 'both'])}}data-ipsDialog{{endif}}><i class='fa fa-shopping-cart'></i> &nbsp;{lang="buy_now"}{{if $price = $file->price()}} - {$price|raw}{{endif}}</a>
{{endif}}
</li>
{{else}}
@@ -2332,7 +2363,7 @@
<ul id='elFileActions_menu' class='ipsMenu ipsMenu_auto ipsHide'>
{{if $file->canReportOrRevoke() === TRUE}}
<li class='ipsMenu_item'>
<a href='{$file->url('report')}' data-ipsDialog data-ipsDialog-size='medium' data-ipsDialog-title="{lang="report_file"}" data-ipsDialog-remoteSubmit data-ipsDialog-flashMessage="{lang="report_submit_success"}" title="{lang="report_file"}" >{lang="report"}</a>
<a href='{$file->url('report')}' {{if member.member_id or \IPS\Helpers\Form\Captcha::supportsModal()}}data-ipsDialog data-ipsDialog-size='medium' data-ipsDialog-title="{lang="report_file"}" data-ipsDialog-remoteSubmit data-ipsDialog-flashMessage="{lang="report_submit_success"}"{{endif}} title="{lang="report_file"}" >{lang="report"}</a>
</li>
<li class='ipsMenu_sep'><hr></li>
{{endif}}
@@ -2341,12 +2372,14 @@
<li class='ipsMenu_item'><a href='{$file->url()->csrf()->setQueryString( array( 'do' => 'moderate', 'action' => 'restoreAsHidden' ) )}' data-confirm data-confirmSubMessage='{lang="restore_as_hidden_desc"}'>{lang="restore_as_hidden"}</a></li>
<li class='ipsMenu_item'><a href='{$file->url()->csrf()->setQueryString( array( 'do' => 'moderate', 'action' => 'delete', 'immediate' => 1 ) )}' data-confirm data-confirmSubMessage='{lang="delete_immediately_desc"}'>{lang="delete_immediately"}</a></li>
{{else}}
{{if $file->canEdit()}}
{{if $file->canEdit() AND $file->container()->can('add')}}
{{if $file->hasPendingVersion()}}
<li class='ipsMenu_item ipsMenu_itemDisabled'><a href='#'>{lang="upload_new_version_pending"}</a></li>
{{else}}
<li class='ipsMenu_item'><a href='{$file->url()->setQueryString( array( 'do' => 'newVersion' ) )}' title='{lang="upload_new_version_title"}'>{lang="upload_new_version"}</a></li>
{{endif}}
{{endif}}
{{if $file->canEdit()}}
<li class='ipsMenu_item'><a href='{$file->url()->setQueryString( array( 'do' => 'edit' ) )}' title='{lang="downloads_edit_details_title"}'>{lang="downloads_edit_details"}</a></li>
{{endif}}
{{if $file->canFeature()}}
@@ -2362,7 +2395,7 @@
<li class='ipsMenu_item'><a href='{$file->url()->csrf()->setQueryString( array( 'do' => 'moderate', 'action' => 'unpin' ) )}' title='{lang="unpin_title_file"}'>{lang="unpin"}</a></li>
{{endif}}
{{if $file->canHide()}}
<li class='ipsMenu_item'><a href='{$file->url()->csrf()->setQueryString( array( 'do' => 'moderate', 'action' => 'hide' ) )}' title='{lang="hide_title_file"}' data-ipsDialog data-ipsDialog-title="{lang="hide"}">{lang="hide"}</a></li>
<li class='ipsMenu_item'><a href='{$file->url()->setQueryString( array( 'do' => 'moderate', 'action' => 'hide' ) )}' title='{lang="hide_title_file"}' data-ipsDialog data-ipsDialog-title="{lang="hide"}">{lang="hide"}</a></li>
{{endif}}
{{if $file->canUnhide()}}
<li class='ipsMenu_item'><a href='{$file->url()->csrf()->setQueryString( array( 'do' => 'moderate', 'action' => 'unhide' ) )}' title='{{if $file->hidden() === 1}}{lang="approve_title_file"}{{else}}{lang="unhide_title_file"}{{endif}}'>{{if $file->hidden() === 1}}{lang="approve"}{{else}}{lang="unhide"}{{endif}}</a></li>
@@ -2380,7 +2413,7 @@
<li class='ipsMenu_item'><a href='{$file->url()->csrf()->setQueryString( array( 'do' => 'moderate', 'action' => 'delete' ) )}' data-confirm title='{lang="downloads_delete_title"}'>{lang="delete"}</a></li>
{{endif}}
{{if $file->canOnMessage( 'add' )}}
<li class='ipsMenu_item'><a href='{$file->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='{$file->url()->setQueryString( array( 'do' => 'messageForm' ) )}' data-ipsDialog data-ipsDialog-title='{lang="add_message"}'>{lang='add_message'}</a></li>
{{endif}}
{{if $file->isPurchasable() AND $file->canDisablePurchases()}}
<li class='ipsMenu_item'><a href='{$file->url()->csrf()->setQueryString( array( 'do' => 'purchaseStatus', 'value' => 0 ) )}' data-confirm>{lang="disable_purchases"}</a></li>
@@ -2390,14 +2423,14 @@
{{endif}}
{{if \IPS\Member::loggedIn()->modPermission('can_view_moderation_log')}}
<li class='ipsMenu_sep'><hr></li>
<li class="ipsMenu_item"><a href='{$file->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='{$file->url()->setQueryString( array( 'do' => 'modLog' ) )}' data-ipsDialog data-ipsDialog-title='{lang="moderation_history"}'>{lang="moderation_history"}</a></li>
{{endif}}
{{endif}}
</ul>
</li>
{{elseif $file->canReportOrRevoke() === TRUE}}
<li>
<a href='{$file->url('report')}' data-ipsDialog data-ipsDialog-size='medium' data-ipsDialog-title="{lang="report_file"}" data-ipsDialog-remoteSubmit data-ipsDialog-flashMessage="{lang="report_submit_success"}" title="{lang="report_file"}" class='ipsButton ipsButton_link ipsButton_verySmall ipsButton_fullWidth'>{lang="report"}</a>
<a href='{$file->url('report')}' {{if member.member_id or \IPS\Helpers\Form\Captcha::supportsModal()}}data-ipsDialog data-ipsDialog-size='medium' data-ipsDialog-title="{lang="report_file"}" data-ipsDialog-remoteSubmit data-ipsDialog-flashMessage="{lang="report_submit_success"}"{{endif}} title="{lang="report_file"}" class='ipsButton ipsButton_link ipsButton_verySmall ipsButton_fullWidth'>{lang="report"}</a>
</li>
{{endif}}
</ul>
@@ -2469,7 +2502,7 @@
</div>
<div class='ipsDataItem_main'>
<div class='ipsType_break ipsContained'><a href="{$comment->url()}" class='ipsType_medium ipsTruncate ipsTruncate_line'>{$comment->item()->name}</a></div>
<p class='ipsType_reset ipsType_light ipsType_medium ipsType_blendLinks'>{lang="byline_nodate" htmlsprintf="$comment->author()->link()"} &middot; <a href='{$comment->item()->url()->setQueryString( array( 'do' => 'findComment', 'comment' => $comment->id ) )}' class='ipsType_blendLinks'>{$comment->dateLine()|raw}</a></p>
<p class='ipsType_reset ipsType_light ipsType_medium ipsType_blendLinks'>{lang="byline_nodate" htmlsprintf="$comment->author()->link( NULL, NULL, $comment->isAnonymous() )"} &middot; <a href='{$comment->item()->url()->setQueryString( array( 'do' => 'findComment', 'comment' => $comment->id ) )}' class='ipsType_blendLinks'>{$comment->dateLine()|raw}</a></p>
<div class='ipsType_medium ipsType_textBlock ipsType_richText ipsType_break ipsContained ipsSpacer_top ipsSpacer_half' data-ipsTruncate data-ipsTruncate-type='remove' data-ipsTruncate-size='{{if $orientation == 'vertical'}}6 lines{{else}}2 lines{{endif}}' data-ipsTruncate-watch='false'>
{$comment->truncated( true )|raw}
</div>
@@ -2501,7 +2534,7 @@
</div>
{{endif}}
<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>
{template="reputationBadge" group="global" app="core" params="$comment->author()"}
</h3>
<p class='ipsComment_meta ipsType_light ipsType_medium'>
@@ -2536,7 +2569,7 @@
<div class='ipsItemControls'>
<ul class='ipsComment_controls ipsClearfix ipsItemControls_left' data-role="commentControls">
{{if $comment->canReportOrRevoke() === TRUE}}
<li><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><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}}
</ul>
{{if $comment->hidden() !== 1 && \IPS\IPS::classUsesTrait( $comment, 'IPS\Content\Reactable' ) and settings.reputation_enabled}}
@@ -2619,7 +2652,7 @@
<div class='ipsItemControls'>
<ul class='ipsComment_controls ipsClearfix ipsItemControls_left' data-role="commentControls">
{{if $comment->canReportOrRevoke() === TRUE}}
<li><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><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><a href='{$comment->item()->url()->setQueryString( array( 'do' => 'findReview', 'review' => $comment->id ) )}' data-ipsMenu data-ipsMenu-closeOnClick='false' id='elShareComment_{$comment->id}'>{lang="share_this_comment"}</a></li>
@@ -2676,7 +2709,7 @@
<div class='ipsWidget_latestItem'>
<strong class='ipsType_small ipsType_uppercase'>{lang="latest_file"}</strong><br>
<div class='ipsType_break ipsContained'><a href="{$latestFile->url( "getPrefComment" )}" title='{lang="view_this_file" sprintf="$latestFile->name"}' class='ipsTruncate ipsTruncate_line'>{$latestFile->name}</a></div>
<span class='ipsType_light ipsType_medium'>{lang="byline_nodate" htmlsprintf="$latestFile->author()->link()"}</span>
<span class='ipsType_light ipsType_medium'>{lang="byline_nodate" htmlsprintf="$latestFile->author()->link( NULL, NULL, $latestFile->isAnonymous() )"}</span>
<p class='ipsType_medium ipsType_reset'>{{if !$latestFile->downloads}}<span class='ipsType_light'>{{endif}}<i class='fa fa-arrow-circle-down'></i> {number="$latestFile->downloads"}{{if !$latestFile->downloads}}</span>{{endif}} {{if $latestFile->container()->bitoptions['comments']}}&nbsp;&nbsp;{{if !$latestFile->comments}}<span class='ipsType_light'>{{endif}}<i class='fa fa-comment'></i> {$latestFile->comments}{{endif}}{{if !$latestFile->comments}}</span>{{endif}}</p>
</div>
</div>
@@ -2771,7 +2804,7 @@
</div>
<div class='ipsDataItem_main'>
<div class='ipsType_break ipsContained'><a href="{$file->url( "getPrefComment" )}" title='{lang="view_this_file" sprintf="$file->name"}' class='ipsTruncate ipsTruncate_line'>{$file->name}</a></div>
<span class='ipsType_light ipsType_medium ipsType_blendLinks'>{lang="byline_nodate" htmlsprintf="$file->author()->link()"}</span><br>
<span class='ipsType_light ipsType_medium ipsType_blendLinks'>{lang="byline_nodate" htmlsprintf="$file->author()->link( NULL, NULL, $file->isAnonymous() )"}</span><br>
{{if $file->container()->bitoptions['reviews']}}
{template="rating" group="global" location="front" app="core" params="'small', $file->rating, \IPS\Settings::i()->reviews_rating_out_of"} &nbsp;&nbsp;
{{endif}}
@@ -3209,11 +3242,40 @@ html[dir="rtl"] #elDownloadStatsLatest > .ipsWidget_latestItem {
}
#elDownloadsSubmit .ipsAttachment_dropZone {
background: rgb( var(--theme-area_background_reset) );
border: 3px dashed rgba( var(--theme-text_color), 0.15 );
margin-top: 7px;
background: rgb( var(--theme-area_background_light) );
border: 2px dashed rgba( var(--theme-text_light), 0.3 );
background-clip: padding-box;
}
#elDownloadsSubmit .ipsUploader__row {
border: 1px solid rgba(var(--theme-text_light), 0.2);
}
.cDownloadsPrimaryRadio {
background: rgb(var(--theme-area_background_reset));
border-radius: 40px;
position: absolute;
top: 110px;
left: var(--sp-3);
padding: var(--sp-1) var(--sp-2) var(--sp-1) var(--sp-1);
font-size: {fontsize="11"} !important;
}
.cDownloadsPrimaryRadio .ipsCustomInput {
margin-right: 2px;
}
.ipsUploader__row.ipsAttach_error .cDownloadsPrimaryRadio {
display: none;
}
/*#elDownloadsSubmit .ipsUploader__container {
background: rgb(var(--theme-area_background));
margin: var(--sp-6) calc(var(--sp-4) * -1) calc(var(--sp-4) * -1);
padding: var(--sp-2) var(--sp-2) var(--sp-2);
}*/
.cDownloadsSubmit_step {
display: block;
width: 40px;
+39 -1
View File
@@ -349,6 +349,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",
@@ -369,5 +370,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"
}