Version 4.3.0

This commit is contained in:
Neo committed 2025-12-19 05:47:12 -08:00
1 parent 96997ddd8e
commit fe1acf984a
1349 files changed
+116159 -67711

No files matched your search

+2 -2
View File
@@ -19,7 +19,7 @@
</div>
</td>
</tr>]]></template_content_html><template_data>$comment, $email</template_data><template_content_plaintext><![CDATA[{{if $comment->item()->isQuestion()}}{$email->language->addToStack("x_answered_a_question", FALSE, array( 'sprintf' => array( $comment->author()->name ) ) )}{{else}}{$email->language->addToStack("x_replied_to_a_topic", FALSE, array( 'sprintf' => array( $comment->author()->name ) ) )}{{endif}}: {$comment->item()->mapped('title')} ({$comment->url()})
]]></template_content_plaintext></template><template><template_app>forums</template_app><template_name>digests__item</template_name><template_content_html><![CDATA[<tr style='border-bottom: 1px solid #eeeeee'>
]]></template_content_plaintext><template_pinned>0</template_pinned></template><template><template_app>forums</template_app><template_name>digests__item</template_name><template_content_html><![CDATA[<tr style='border-bottom: 1px solid #eeeeee'>
<td dir='{dir}' width='40' align='center' valign='top' class=' '>
<img src='{$topic->author()->get_photo( true, true )}' width='32' height='32' style='border: 1px solid #000; vertical-align: middle;'>
</td>
@@ -60,4 +60,4 @@
</p>
</td>
</tr>]]></template_content_html><template_data>$topic, $email</template_data><template_content_plaintext><![CDATA[{{if $topic->isQuestion()}}{$email->language->addToStack("x_asked_new_question", FALSE, array( 'sprintf' => array( $topic->author()->name, $topic->container()->_title ) ) )}{{else}}{$email->language->addToStack("x_created_topic_in", FALSE, array( 'sprintf' => array( $topic->author()->name, $topic->container()->_title ) ) )}{{endif}}: {$topic->title} ({$topic->url()})
]]></template_content_plaintext></template></emails>
]]></template_content_plaintext><template_pinned>0</template_pinned></template></emails>
+4
View File
@@ -33,6 +33,10 @@
"real": "app=forums&module=forums&controller=forums",
"verify": "\\IPS\\forums\\Forum"
},
"forums_clubs": {
"friendly": "forum/clubs",
"real": "app=forums&module=forums&controller=forums&do=clubs"
},
"topic_copy": {
"friendly": "topic/{#id}-{?}/copy",
"real": "app=cms&module=database&controller=topic"
+31 -36
View File
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<javascript app="forums">
<file javascript_app="forums" javascript_location="front" javascript_path="controllers/forum" javascript_name="ips.forum.flow.js" javascript_type="controller" javascript_version="102002" javascript_position="1000050"><![CDATA[/**
<file javascript_app="forums" javascript_location="front" javascript_path="controllers/forum" javascript_name="ips.forum.flow.js" javascript_type="controller" javascript_version="103005" javascript_position="1000100"><![CDATA[/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -29,20 +29,22 @@
/* Populate forum IDs */
var _ids = ips.utils.url.getParam( 'forumId' );
var self = this;
if ( ! _.isUndefined( _ids ) ) {
/* Check URL */
this._ids = decodeURIComponent( ips.utils.url.getParam( 'forumId' ) ).split(',');
this._ids = decodeURIComponent( _ids ).split(',');
} else if( ! _.isUndefined( ips.utils.cookie.get('forums_flowIds') ) ) {
/* Check local storage */
var _ids = ips.utils.cookie.get('forums_flowIds').split(',');
var self = this;
if( _.isObject( _ids ) && _.size( _ids ) ){
_.each( _ids, function (val, key) {
if ( val ) {
self.childSelect( val );
}
});
}
this._ids = ips.utils.cookie.get('forums_flowIds').split(',');
}
if( _.isObject( this._ids ) && _.size( this._ids ) ){
_.each( this._ids, function (val, key) {
if ( val ) {
self.childSelect( val, true );
}
});
}
this._button = $('body').find('[data-role="fluidForumMobileDesc"]');
@@ -64,7 +66,7 @@
if ( _.indexOf( this._ids, id ) == -1 ) {
/* Does not exist, so add it */
this.childSelect( id );
this.childSelect( id, false );
} else {
/* Exists, so remove it */
@@ -73,7 +75,7 @@
this._updateButtonText();
$( document ).trigger( 'updateTableURL', { forumId: this._ids.join(',') } );
$( document ).trigger( 'updateTableURL', { forumId: _.uniq( _.values( this._ids ) ).join(',') } );
},
/**
@@ -88,32 +90,25 @@
* Select a child
*
*/
childSelect: function(id) {
childSelect: function(id, skipChildren) {
Debug.log("Select child: " + id );
this._ids.push( id );
var node = this.scope.find('[data-node-id="' + id + '"]');
node.addClass('cForumMiniList_selected');
var parentId = node.attr('data-parent-id');
this.updateCookie();
/* Now unselect any parents */
if ( id != parentId ) {
this.parentUnselect( parentId );
}
/* Mark any children, but we do not need to keep individual row markings */
if ( node.attr('data-has-children') || id == parentId ) {
node.closest('li').addClass('cForumMiniList_categorySelected');
if ( skipChildren === false && ( node.attr('data-has-children') || id == parentId ) ) {
var self = this;
_.each( this.scope.find('[data-parent-id="' + id + '"]'), function( v, k ) {
var _cId = $(v).attr('data-node-id');
if ( _cId != id ) {
self.childUnselect( _cId );
self.childSelect( _cId, false );
}
} );
}
this.updateCookie();
},
/**
@@ -124,7 +119,6 @@
Debug.log("UNselect child: " + id );
/* Remove marking */
this.scope.find('[data-node-id="' + id + '"]').removeClass('cForumMiniList_selected');
this.scope.find('[data-node-id="' + id + '"]').closest('li').removeClass('cForumMiniList_categorySelected');
/* Remove from local storage and id stack */
this._ids = _.without( this._ids, id );
@@ -138,6 +132,9 @@
self.childUnselect( _cId );
}
} );
/* And we always need to unselect the category */
this.parentUnselect( this.scope.find('[data-node-id="' + id + '"]').closest('[data-category]').find('[data-node-id]').first().attr('data-node-id') );
},
/**
@@ -148,7 +145,6 @@
Debug.log("Select parent: " + parentId );
/* Mark category and children as selected */
this.scope.find('[data-node-id="' + parentId + '"]').addClass('cForumMiniList_selected');
this.scope.find('[data-node-id="' + parentId + '"]').closest('li').addClass('cForumMiniList_categorySelected');
/* Remove children from the arrays as PHP handles this */
var self = this;
@@ -170,7 +166,6 @@
/* Unselect parent as marked */
var node = this.scope.find('[data-node-id="' + parentId + '"]');
node.removeClass('cForumMiniList_selected');
node.closest('li').removeClass('cForumMiniList_categorySelected');
this._ids = _.without( this._ids, parentId );
this.updateCookie();
@@ -207,7 +202,7 @@
_updateButtonText: function () {
var blobs = this.scope.find('.cForumMiniList_blob');
var selectedBlobRows = blobs.filter( function () {
if( $( this ).closest('.cForumMiniList_selected, .cForumMiniList_categorySelected').length ){
if( $( this ).closest('.cForumMiniList_selected').length ){
return true;
}
return false;
@@ -225,7 +220,7 @@
}
});
}(jQuery, _));]]></file>
<file javascript_app="forums" javascript_location="front" javascript_path="controllers/forum" javascript_name="ips.forum.forumList.js" javascript_type="controller" javascript_version="102002" javascript_position="1000050"><![CDATA[/**
<file javascript_app="forums" javascript_location="front" javascript_path="controllers/forum" javascript_name="ips.forum.forumList.js" javascript_type="controller" javascript_version="103005" javascript_position="1000100"><![CDATA[/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -292,7 +287,7 @@
}
});
}(jQuery, _));]]></file>
<file javascript_app="forums" javascript_location="front" javascript_path="controllers/forum" javascript_name="ips.forum.forumPage.js" javascript_type="controller" javascript_version="102002" javascript_position="1000050">/**
<file javascript_app="forums" javascript_location="front" javascript_path="controllers/forum" javascript_name="ips.forum.forumPage.js" javascript_type="controller" javascript_version="103005" javascript_position="1000100">/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -351,7 +346,7 @@
}
});
}(jQuery, _));</file>
<file javascript_app="forums" javascript_location="front" javascript_path="controllers/forum" javascript_name="ips.forum.hovercard.js" javascript_type="controller" javascript_version="102002" javascript_position="1000050">/**
<file javascript_app="forums" javascript_location="front" javascript_path="controllers/forum" javascript_name="ips.forum.hovercard.js" javascript_type="controller" javascript_version="103005" javascript_position="1000100">/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -401,7 +396,7 @@
}
});
}(jQuery, _));</file>
<file javascript_app="forums" javascript_location="admin" javascript_path="controllers/settings" javascript_name="ips.settings.archiveRules.js" javascript_type="controller" javascript_version="102002" javascript_position="1000050"><![CDATA[/**
<file javascript_app="forums" javascript_location="admin" javascript_path="controllers/settings" javascript_name="ips.settings.archiveRules.js" javascript_type="controller" javascript_version="103005" javascript_position="1000050"><![CDATA[/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -466,7 +461,7 @@
});
}(jQuery, _));
]]></file>
<file javascript_app="forums" javascript_location="front" javascript_path="controllers/topic" javascript_name="ips.topic.answers.js" javascript_type="controller" javascript_version="102002" javascript_position="1000100"><![CDATA[/**
<file javascript_app="forums" javascript_location="front" javascript_path="controllers/topic" javascript_name="ips.topic.answers.js" javascript_type="controller" javascript_version="103005" javascript_position="1000050"><![CDATA[/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -564,7 +559,7 @@
}
});
}(jQuery, _));]]></file>
<file javascript_app="forums" javascript_location="front" javascript_path="controllers/topic" javascript_name="ips.topic.reply.js" javascript_type="controller" javascript_version="102002" javascript_position="1000100">/**
<file javascript_app="forums" javascript_location="front" javascript_path="controllers/topic" javascript_name="ips.topic.reply.js" javascript_type="controller" javascript_version="103005" javascript_position="1000050">/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -593,7 +588,7 @@
}
});
}(jQuery, _));</file>
<file javascript_app="forums" javascript_location="front" javascript_path="controllers/topic" javascript_name="ips.topic.view.js" javascript_type="controller" javascript_version="102002" javascript_position="1000100">/**
<file javascript_app="forums" javascript_location="front" javascript_path="controllers/topic" javascript_name="ips.topic.view.js" javascript_type="controller" javascript_version="103005" javascript_position="1000050">/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
+9 -3
View File
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<language>
<app key="forums" version="102002">
<app key="forums" version="103005">
<word key="__app_forums" js="0">Forums</word>
<word key="frontnavigation_forums" js="0">Forums</word>
<word key="__indefart_post" js="0">a post in a topic</word>
@@ -63,7 +63,7 @@
<word key="can_unhide_topic" js="0">Can unhide topics/questions?</word>
<word key="can_view_hidden_topic" js="0">Can view hidden topics/questions?</word>
<word key="can_move_topic" js="0">Can move topics/questions?</word>
<word key="can_move_topic_desc" js="0">Will be able to move topics/questions only between the forums they have permission to moderate, not to any other forum.</word>
<word key="can_move_topic_desc" js="0">Will be able to move topics/questions only between the forums they can create new content within.</word>
<word key="can_lock_topic" js="0">Can lock topics/questions?</word>
<word key="can_unlock_topic" js="0">Can unlock topics/questions?</word>
<word key="can_reply_to_locked_topic" js="0">Can reply to locked topics/questions?</word>
@@ -218,7 +218,6 @@
<word key="archive_topic_state" js="0">Locked/Unlocked</word>
<word key="unlocked" js="0">Unlocked</word>
<word key="archive_topic_approved" js="0">Hidden/Unhidden</word>
<word key="unhidden" js="0">Unhidden</word>
<word key="archive_topic_poll" js="0">Poll</word>
<word key="topic_has_poll" js="0">Has poll</word>
<word key="topic_does_not_have_poll" js="0">Does not have poll</word>
@@ -502,6 +501,7 @@
<word key="topic_unlocks_at_short" js="0">Unlocks %s</word>
<word key="topic_locks_at" js="0">Topic will be automatically locked %s at %s</word>
<word key="topic_locks_at_short" js="0">Locks %s</word>
<word key="club_node_forums" js="0">Club Forums</word>
<word key="saved_actions" js="0">Saved Actions</word>
<word key="saved_actions_sg" js="0">Saved Action</word>
<word key="mm_title" js="0">Name</word>
@@ -563,8 +563,14 @@
<word key="ad_fluid_index_view_repeat_suffix" js="0">times</word>
<word key="stats_new_topics" js="0">New Topics</word>
<word key="stats_new_posts" js="0">New Posts</word>
<word key="stats_topics_tab_total" js="0">All New Topics</word>
<word key="stats_topics_tab_byforum" js="0">New Topics By Forum</word>
<word key="stats_topics_title" js="0">New topics by time period</word>
<word key="stats_topics_title_byforum" js="0">New topics by forum</word>
<word key="stats_posts_tab_total" js="0">All New Posts</word>
<word key="stats_posts_tab_byforum" js="0">New Posts By Forum</word>
<word key="stats_posts_title" js="0">New posts by time period</word>
<word key="stats_posts_title_byforum" js="0">New posts by forum</word>
<word key="widget_feed_container_topic" js="0">Forums</word>
<word key="block_topicFeed_title" js="0">Topics</word>
<word key="block_postFeed_title" js="0">Posts</word>
+123 -97
View File
@@ -17,29 +17,29 @@
"zerofill": false
},
"topics": {
"name": "topics",
"type": "MEDIUMINT",
"length": 6,
"decimals": null,
"values": [],
"allow_null": false,
"default": "0",
"comment": "",
"unsigned": false,
"zerofill": false,
"auto_increment": false,
"binary": false
"binary": false,
"comment": "",
"decimals": null,
"default": "0",
"length": 10,
"name": "topics",
"type": "INT",
"unsigned": true,
"values": [],
"zerofill": false
},
"posts": {
"name": "posts",
"type": "MEDIUMINT",
"length": 6,
"type": "INT",
"length": 10,
"decimals": null,
"values": [],
"allow_null": false,
"default": "0",
"comment": "",
"unsigned": false,
"unsigned": true,
"zerofill": false,
"auto_increment": false,
"binary": false
@@ -129,18 +129,18 @@
"zerofill": false
},
"last_title": {
"allow_null": true,
"auto_increment": false,
"binary": false,
"comment": "",
"decimals": null,
"default": null,
"length": 255,
"name": "last_title",
"type": "VARCHAR",
"length": 255,
"decimals": null,
"values": [],
"allow_null": true,
"default": null,
"comment": "",
"unsigned": false,
"zerofill": false,
"auto_increment": false,
"binary": false
"values": [],
"zerofill": false
},
"last_id": {
"allow_null": true,
@@ -325,32 +325,32 @@
"zerofill": false
},
"queued_topics": {
"allow_null": false,
"auto_increment": false,
"binary": false,
"comment": "",
"decimals": null,
"default": "0",
"length": 6,
"name": "queued_topics",
"type": "MEDIUMINT",
"unsigned": false,
"type": "INT",
"length": 10,
"decimals": null,
"values": [],
"zerofill": false
"allow_null": false,
"default": "0",
"comment": "",
"unsigned": false,
"zerofill": false,
"auto_increment": false,
"binary": false
},
"queued_posts": {
"allow_null": false,
"auto_increment": false,
"binary": false,
"comment": "",
"decimals": null,
"default": "0",
"length": 6,
"name": "queued_posts",
"type": "MEDIUMINT",
"unsigned": false,
"type": "INT",
"length": 10,
"decimals": null,
"values": [],
"zerofill": false
"allow_null": false,
"default": "0",
"comment": "",
"unsigned": false,
"zerofill": false,
"auto_increment": false,
"binary": false
},
"forum_allow_rating": {
"allow_null": false,
@@ -367,32 +367,32 @@
"zerofill": false
},
"min_posts_post": {
"allow_null": false,
"auto_increment": false,
"binary": false,
"comment": "",
"decimals": null,
"default": "0",
"length": 10,
"name": "min_posts_post",
"type": "INT",
"length": 10,
"decimals": null,
"values": [],
"allow_null": false,
"default": "0",
"comment": "",
"unsigned": true,
"zerofill": false,
"auto_increment": false,
"binary": false
"values": [],
"zerofill": false
},
"min_posts_view": {
"allow_null": false,
"auto_increment": false,
"binary": false,
"comment": "",
"decimals": null,
"default": "0",
"length": 10,
"name": "min_posts_view",
"type": "INT",
"length": 10,
"decimals": null,
"values": [],
"allow_null": false,
"default": "0",
"comment": "",
"unsigned": true,
"zerofill": false,
"auto_increment": false,
"binary": false
"values": [],
"zerofill": false
},
"can_view_others": {
"allow_null": false,
@@ -591,46 +591,46 @@
"zerofill": false
},
"icon": {
"allow_null": true,
"auto_increment": false,
"binary": false,
"comment": "",
"decimals": null,
"default": null,
"length": 0,
"name": "icon",
"type": "TEXT",
"length": null,
"decimals": null,
"values": [],
"allow_null": true,
"default": null,
"comment": "",
"unsigned": false,
"zerofill": false,
"auto_increment": false,
"binary": false
"values": [],
"zerofill": false
},
"club_id": {
"allow_null": true,
"auto_increment": false,
"binary": false,
"comment": "The club ID if this forum belongs to a club, or NULL",
"decimals": null,
"default": null,
"length": 20,
"name": "club_id",
"type": "BIGINT",
"length": 20,
"decimals": null,
"values": null,
"allow_null": true,
"default": null,
"comment": "The club ID if this forum belongs to a club, or NULL",
"unsigned": true,
"zerofill": false,
"auto_increment": false,
"binary": false
"values": [],
"zerofill": false
},
"feature_color": {
"allow_null": true,
"auto_increment": false,
"binary": false,
"comment": "Feature color",
"decimals": null,
"default": null,
"length": 15,
"name": "feature_color",
"type": "VARCHAR",
"length": 15,
"decimals": null,
"values": null,
"allow_null": true,
"default": null,
"comment": "Feature color",
"unsigned": false,
"zerofill": false,
"auto_increment": false,
"binary": false
"values": [],
"zerofill": false
}
},
"indexes": {
@@ -647,16 +647,28 @@
"position": {
"type": "key",
"name": "position",
"length": [
null,
null
],
"columns": [
"parent_id",
"position"
]
},
"min_posts_view": {
"type": "key",
"name": "min_posts_view",
"columns": [
"min_posts_view"
],
"length": [
null,
null
]
}
},
"collation": "utf8mb4_unicode_ci",
"engine": "InnoDB",
"inserts": [
{
"id": 1,
@@ -748,7 +760,9 @@
"qa_rate_answers": "*",
"icon": null
}
]
],
"comment": "",
"reporting": "count"
},
"forums_topics": {
"name": "forums_topics",
@@ -1451,7 +1465,9 @@
"featured": "0",
"question_rating": "0"
}
]
],
"comment": "",
"reporting": "count"
},
"forums_posts": {
"name": "forums_posts",
@@ -1845,7 +1861,6 @@
"post_date": "<%TIME%>",
"post": "<p>Welcome to your new Invision Community!<\/p> <br \/><p> Congratulations on your purchase of our software and setting up your community. Please take some time and read through the Getting Started Guide and Administrator Documentation. The Getting Started Guide will walk you through some of the necessary steps to setting up an IP.Board and starting your community. The Administrator Documentation takes you through the details of the capabilities of IP.Board.<\/p> <br \/><p> You can remove this message, topic, forum or even category at any time.<\/p> <br \/><p><a href='https:\/\/remoteservices.invisionpower.com\/docs\/getting-started' rel='external'>Go to the documentation now...<\/a><br \/><p>Nulled by IPBMafia.ru<\/p>",
"queued": "0",
"queued": "0",
"topic_id": "1",
"new_topic": "1",
"edit_name": "",
@@ -1858,7 +1873,9 @@
"post_field_t1": null,
"post_field_t2": null
}
]
],
"comment": "",
"reporting": "count"
},
"forums_answer_ratings": {
"name": "forums_answer_ratings",
@@ -1993,7 +2010,9 @@
"member"
]
}
}
},
"comment": "",
"reporting": "count"
},
"forums_question_ratings": {
"name": "forums_question_ratings",
@@ -2114,7 +2133,9 @@
null
]
}
}
},
"comment": "",
"reporting": "count"
},
"forums_archive_rules": {
"name": "forums_archive_rules",
@@ -2259,7 +2280,8 @@
"archive_unit": "",
"archive_skip": 0
}
]
],
"reporting": "count"
},
"forums_archive_posts": {
"name": "forums_archive_posts",
@@ -2833,7 +2855,9 @@
"mm_id"
]
}
}
},
"comment": "",
"reporting": "count"
},
"forums_rss_import": {
"name": "forums_rss_import",
@@ -3100,7 +3124,9 @@
"rss_import_last_import"
]
}
}
},
"comment": "",
"reporting": "count"
},
"forums_rss_imported": {
"name": "forums_rss_imported",
+36 -18
View File
@@ -1,74 +1,92 @@
[
{
"key": "archive_on",
"default": "0"
"default": "0",
"report": "full"
},
{
"key": "archive_remote_sql_database",
"default": ""
"default": "",
"report": "none"
},
{
"key": "archive_remote_sql_host",
"default": ""
"default": "",
"report": "none"
},
{
"key": "archive_remote_sql_pass",
"default": ""
"default": "",
"report": "none"
},
{
"key": "archive_remote_sql_user",
"default": ""
"default": "",
"report": "none"
},
{
"key": "archive_sql_port",
"default": ""
"default": "",
"report": "none"
},
{
"key": "archive_sql_socket",
"default": ""
"default": "",
"report": "none"
},
{
"key": "archive_sql_tbl_prefix",
"default": ""
"default": "",
"report": "none"
},
{
"key": "forums_answers_downvote",
"default": "1"
"default": "1",
"report": "full"
},
{
"key": "forums_default_view",
"default": "table"
"default": "table",
"report": "full"
},
{
"key": "forums_default_view_choose",
"default": "0"
"default": "0",
"report": "full"
},
{
"key": "forums_fluid_pinned",
"default": "1"
"default": "1",
"report": "full"
},
{
"key": "forums_new_questions",
"default": "0"
"default": "0",
"report": "full"
},
{
"key": "forums_popular_now",
"default": "{\"posts\":\"10\",\"minutes\":\"60\"}"
"default": "{\"posts\":\"10\",\"minutes\":\"60\"}",
"report": "bool"
},
{
"key": "forums_posts_per_page",
"default": "25"
"default": "25",
"report": "full"
},
{
"key": "forums_questions_downvote",
"default": "0"
"default": "0",
"report": "full"
},
{
"key": "forums_rss",
"default": "1"
"default": "1",
"report": "full"
},
{
"key": "forums_topics_per_page",
"default": "25"
"default": "25",
"report": "full"
}
]
+289 -125
View File
@@ -1,6 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<theme name="Default" author_name="Invision Power Services, Inc" author_url="https://www.invisioncommunity.com">
<field sc_key="forum_layout" sc_type="Select" sc_multiple="0" sc_updated="1494930618" sc_app="forums" sc_default="traditional" sc_tab_key="custom" sc_show_in_vse="1" sc_title="themesetting_forum_layout" sc_order="5" sc_condition="">[{&quot;key&quot;:&quot;grid&quot;,&quot;value&quot;:&quot;Grid View&quot;},{&quot;key&quot;:&quot;traditional&quot;,&quot;value&quot;:&quot;Traditional List&quot;}]</field>
<template template_group="feeds" template_name="importPreview" template_data="$feed" template_location="admin" template_app="forums"><![CDATA[<form method="post">
<input type="hidden" name="continue" value="1">
<ol class='ipsDataList ipsClear'>
@@ -19,6 +18,31 @@
<button type="submit" class="ipsButton ipsButton_primary">{lang="continue"}</button>
</div>
</form>]]></template>
<template template_group="forums" template_name="clubForums" template_data="" template_location="front" template_app="forums"><![CDATA[
<div class="ipsPageHeader ipsClearfix">
<header class='ipsSpacer_bottom'>
<h1 class="ipsType_pageTitle">{lang="club_node_forums"}</h1>
</header>
</div>
<div class='ipsList_reset cForumList ipsBox ipsSpacer_bottom' data-controller='forums.front.forum.forumList' data-baseURL=''>
<h2 class='ipsType_sectionTitle ipsType_reset'>{lang="subforums_header_category"}</h2>
{{if \IPS\forums\Forum::getMemberView() === 'grid'}}
<div class='ipsAreaBackground ipsPad' data-role="forums">
<div class='ipsGrid ipsGrid_collapsePhone' data-ipsGrid data-ipsGrid-minItemSize='300' data-ipsGrid-maxItemSize='400' data-ipsGrid-equalHeights='row'>
{{foreach \IPS\forums\Forum::clubNodes() as $childforum}}
{template="forumGridItem" group="index" app="forums" params="$childforum"}
{{endforeach}}
</div>
</div>
{{else}}
<ol class="ipsDataList ipsDataList_zebra ipsDataList_large ipsAreaBackground_reset">
{{foreach \IPS\forums\Forum::clubNodes() as $childforum}}
{template="forumRow" group="index" app="forums" params="$childforum, TRUE"}
{{endforeach}}
</ol>
{{endif}}
</div>]]></template>
<template template_group="forums" template_name="forumButtons" template_data="$forum" template_location="front" template_app="forums"><![CDATA[{{if $forum->can('add')}}
<li class='ipsToolList_primaryAction'>
{{if $forum->forums_bitoptions['bw_enable_answers']}}
@@ -75,7 +99,7 @@
</div>
{{if $forum->children()}}
<div class='ipsList_reset cForumList ipsBox ipsSpacer_bottom' data-controller='forums.front.forum.forumList' data-baseURL=''>
<div class='ipsList_reset cForumList ipsBox ipsSpacer_bottom' data-controller='core.global.core.table, forums.front.forum.forumList' data-baseURL=''>
<h2 class='ipsType_sectionTitle ipsType_reset'>{{if $forum->sub_can_post}}{lang="subforums_header"}{{else}}{lang="subforums_header_category"}{{endif}}</h2>
{{if \IPS\forums\Forum::getMemberView() === 'grid'}}
<div class='ipsAreaBackground ipsPad' data-role="forums">
@@ -249,7 +273,7 @@
<ul class="ipsMenu ipsMenu_auto ipsMenu_withStem ipsMenu_selectable ipsHide" id="elSortByMenu_{$table->uniqueId}_menu">
{{$custom = TRUE;}}
{{foreach $table->sortOptions as $k => $col}}
<li class="ipsMenu_item {{if $col === $table->getSortByColumn()}}{{$custom = FALSE;}}ipsMenu_itemChecked{{endif}}" data-ipsMenuValue="{$col}" data-sortDirection='{{if $col == 'title'}}asc{{else}}desc{{endif}}'><a href="{$table->baseUrl->setQueryString( array( 'filter' => $table->filter, 'sortby' => $col, 'sortdirection' => ( $col == 'title' ) ? 'asc' : 'desc', 'page' => '1' ) )}">{lang="{$table->langPrefix}sort_{$k}"}</a></li>
<li class="ipsMenu_item {{if $col === $table->getSortByColumn()}}{{$custom = FALSE;}}ipsMenu_itemChecked{{endif}}" data-ipsMenuValue="{$col}" data-sortDirection='{$table->getSortDirection( $col )}'><a href="{$table->baseUrl->setQueryString( array( 'filter' => $table->filter, 'sortby' => $col, 'sortdirection' => $table->getSortDirection( $col ), 'page' => '1' ) )}">{lang="{$table->langPrefix}sort_{$k}"}</a></li>
{{endforeach}}
{{if $table->advancedSearch}}
<li class="ipsMenu_item {{if $custom}}ipsMenu_itemChecked{{endif}}" data-noSelect="true">
@@ -398,7 +422,7 @@
{{endif}}
</div>
<div class='ipsDataItem_main'>
<h4 class='ipsDataItem_title ipsType_break'>
<h4 class='ipsDataItem_title ipsType_break ipsContained_container'>
<span class='ipsType_break ipsContained'>
{{if $question->locked()}}
<i class='fa fa-lock' data-ipsTooltip title='{lang="topic_locked"}'></i>
@@ -547,8 +571,15 @@
{{$rowIds[] = $row->$idField;}}
{{endforeach}}
{{if count( $rows )}}
{{$rowCount=0;}}
{{foreach $rows as $row}}
{{$idField = $row::$databaseColumnId;}}
{{if $rowCount == 1 AND $advertisement = \IPS\core\Advertisement::loadByLocation( 'ad_forum_listing' )}}
<li class="ipsDataItem">
{$advertisement|raw}
</li>
{{endif}}
{{$rowCount++;}}
{{$idField = $row::$databaseColumnId;}}
{{if $row->mapped('moved_to')}}
{{if $movedTo = $row->movedTo()}}
<li class="ipsDataItem">
@@ -716,7 +747,7 @@
{{if $tabData[1]->item()->unread() }}
&middot; <a href='{$tabData[1]->item()->url('markRead')->csrf()}' title='{lang="mark_topic_read"}' data-action='markTopicRead'><i class='fa fa-check'></i> {lang="mark_topic_read"}</a>
{{endif}}
{{if $tabData[1]->canReport()}}
{{if $tabData[1]->canReportOrRevoke() === TRUE}}
&middot; <a href='{$tabData[1]->url('report')}' data-ipsDialog data-ipsDialog-remoteSubmit data-ipsDialog-size='medium' data-ipsDialog-flashMessage='{lang="report_submit_success"}' data-ipsDialog-title="{lang="report_post"}" data-action='reportComment' title='{lang="report_post"}'><span class='ipsResponsive_showPhone ipsResponsive_inline'><i class='fa fa-flag'></i></span><span class='ipsResponsive_hidePhone ipsResponsive_inline'>{lang="report_post"}</span></a>
{{endif}}
</p>
@@ -812,6 +843,10 @@
{{elseif !$row->locked() && $row->topic_close_time && $row->topic_close_time > time()}}
<span><strong class='ipsType_small ipsType_noBreak' data-ipsTooltip title='{lang="topic_locks_at" sprintf="\IPS\DateTime::ts( $row->topic_close_time )->relative(), \IPS\DateTime::ts( $row->topic_close_time )->localeTime( FALSE )"}'><i class='fa fa-clock-o'></i> {lang="topic_locks_at_short" sprintf="\IPS\DateTime::ts($row->topic_close_time)->relative(1)"}</strong>&nbsp;&nbsp;</span>
{{endif}}
{{if $row->mapped('poll')}}
<span><span class="ipsBadge ipsBadge_icon ipsBadge_small ipsBadge_neutral" data-ipsTooltip title='{lang="topic_has_poll"}'><i class='fa fa-question'></i></span></span>
{{endif}}
{{if $row->mapped('pinned') || $row->mapped('featured') || $row->hidden() === -1 || $row->hidden() === 1}}
{{if $row->hidden() === -1}}
@@ -926,8 +961,8 @@
</div>]]></template>
<template template_group="global" template_name="embedPost" template_data="$comment, $item, $url" template_location="front" template_app="forums"><![CDATA[
<div data-embedInfo-maxSize='500' class='ipsRichEmbed'>
{template="embedHeader" group="embed" app="core" params="$comment, \IPS\Member::loggedIn()->language()->addToStack( 'x_replied_to_a_topic', FALSE, array( 'sprintf' => array( $comment->author()->name ) ) ), $comment->mapped('date')"}
<div class='ipsPad'>
{template="embedHeader" group="embed" app="core" params="$comment, \IPS\Member::loggedIn()->language()->addToStack( 'x_replied_to_a_topic', FALSE, array( 'sprintf' => array( $comment->author()->name ) ) ), $comment->mapped('date'), $url"}
<div class='ipsPad_double'>
<div class='ipsRichEmbed_originalItem ipsAreaBackground_reset ipsPad ipsSpacer_bottom ipsType_blendLinks'>
<div>
{template="embedOriginalItem" group="embed" app="core" params="$item, TRUE"}
@@ -938,7 +973,7 @@
{$comment->truncated(TRUE)|raw}
</div>
{{if \IPS\IPS::classUsesTrait( $comment, 'IPS\Content\Reactable' ) and count( $comment->reactions() ) and settings.reputation_enabled}}
{{if settings.reputation_enabled and \IPS\IPS::classUsesTrait( $comment, 'IPS\Content\Reactable' ) and count( $comment->reactions() )}}
<ul class='ipsList_inline ipsSpacer_top ipsSpacer_half'>
<li>
{template="reactionOverview" app="core" group="global" params="$comment, TRUE, 'small'"}
@@ -949,19 +984,19 @@
</div>]]></template>
<template template_group="global" template_name="embedTopic" template_data="$item, $url" template_location="front" template_app="forums"><![CDATA[
<div data-embedInfo-maxSize='500' class='ipsRichEmbed'>
{template="embedHeader" group="embed" app="core" params="$item, \IPS\Member::loggedIn()->language()->addToStack( 'x_created_topic_in', FALSE, array( 'sprintf' => array( $item->author()->name, $item->container()->_title ) ) ), $item->mapped('date')"}
{{if count( $item->contentImages() )}}
{{$attachType = key( $item->contentImages()[0] );}}
{{$firstPhoto = \IPS\File::get( $attachType, $item->contentImages()[0][ $attachType ] );}}
{template="embedHeader" group="embed" app="core" params="$item, \IPS\Member::loggedIn()->language()->addToStack( 'x_created_topic_in', FALSE, array( 'sprintf' => array( $item->author()->name, $item->container()->_title ) ) ), $item->mapped('date'), $url"}
{{if $contentImage = $item->contentImages()}}
{{$attachType = key( $contentImage[0] );}}
{{$firstPhoto = \IPS\File::get( $attachType, $contentImage[0][ $attachType ] );}}
<div class='ipsRichEmbed_masthead ipsRichEmbed_mastheadBg ipsType_center'>
<a href='{$item->url()}' style='background-image: url( "{expression="str_replace( array( '(', ')' ), array( '\(', '\)' ), $firstPhoto->url )"}" )'>
<a href='{$url}' style='background-image: url( "{expression="str_replace( array( '(', ')' ), array( '\(', '\)' ), $firstPhoto->url )"}" )'>
<img src='{$firstPhoto->url}' class='ipsHide' alt=''>
</a>
</div>
{{endif}}
<div class='ipsPad'>
<div class='ipsPad_double'>
<h3 class='ipsRichEmbed_itemTitle ipsTruncate ipsTruncate_line ipsType_blendLinks'>
<a href='{$item->url()}' title="{$item->mapped('title')}">{$item->mapped('title')}</a>
<a href='{$url}' title="{$item->mapped('title')}">{$item->mapped('title')}</a>
</h3>
<div class='ipsType_richText ipsType_medium ipsSpacer_top ipsSpacer_half' data-truncate='3'>
{$item->truncated(TRUE)|raw}
@@ -1055,6 +1090,9 @@
<span><span class="ipsBadge ipsBadge_icon ipsBadge_small ipsBadge_positive" data-ipsTooltip title='{lang="featured"}'><i class='fa fa-star'></i></span></span>
{{endif}}
{{endif}}
{{if $topic->prefix()}}
<span>{template="prefix" group="global" app="core" params="$topic->prefix( TRUE ), $topic->prefix()"}</span>
{{endif}}
<span class='ipsType_break ipsContained'>
<a href='{$topic->url()}' {{if $topic->canView()}}data-ipsHover data-ipsHover-target='{$topic->url()->setQueryString('preview', 1)}' data-ipsHover-timeout='1.5' {{endif}}>
@@ -1085,6 +1123,10 @@
{{endif}}
{{endif}}
</ul>
{{if count( $topic->tags() )}}
&nbsp;&nbsp;
{template="tags" group="global" app="core" params="$topic->tags(), true, true"}
{{endif}}
</div>
<ul class='ipsDataItem_stats'>
{{if $topic->isQuestion()}}
@@ -1157,21 +1199,21 @@
<ul class='ipsButton_split'>
{{if $chooseable == '*' OR in_array('table', $chooseable )}}
<li>
<a href="{url="app=forums&module=forums&controller=index&do=setMethod&method=table" seoTemplate="forums"}" class='ipsButton {{if $chosen == 'table'}}ipsButton_primary{{else}}ipsButton_link{{endif}} ipsButton_narrow ipsButton_medium' data-ipsTooltip data-ipsTooltip-safe title='{lang="forums_default_view_table"}'>
<a href="{url="app=forums&module=forums&controller=index&do=setMethod&method=table" seoTemplate="forums" csrf="true"}" class='ipsButton {{if $chosen == 'table'}}ipsButton_primary{{else}}ipsButton_link{{endif}} ipsButton_narrow ipsButton_medium' data-ipsTooltip data-ipsTooltip-safe title='{lang="forums_default_view_table"}'>
<i class='fa fa-align-justify'></i>
</a>
</li>
{{endif}}
{{if $chooseable == '*' OR in_array('grid', $chooseable )}}
<li>
<a href="{url="app=forums&module=forums&controller=index&do=setMethod&method=grid" seoTemplate="forums"}" class='ipsButton {{if $chosen == 'grid'}}ipsButton_primary{{else}}ipsButton_link{{endif}} ipsButton_narrow ipsButton_medium' data-ipsTooltip data-ipsTooltip-safe title='{lang="forums_default_view_grid"}'>
<a href="{url="app=forums&module=forums&controller=index&do=setMethod&method=grid" seoTemplate="forums" csrf="true"}" class='ipsButton {{if $chosen == 'grid'}}ipsButton_primary{{else}}ipsButton_link{{endif}} ipsButton_narrow ipsButton_medium' data-ipsTooltip data-ipsTooltip-safe title='{lang="forums_default_view_grid"}'>
<i class='fa fa-th-large'></i>
</a>
</li>
{{endif}}
{{if $chooseable == '*' OR in_array('fluid', $chooseable )}}
<li>
<a href="{url="app=forums&module=forums&controller=index&do=setMethod&method=fluid" seoTemplate="forums"}" class='ipsButton {{if $chosen == 'fluid'}}ipsButton_primary{{else}}ipsButton_link{{endif}} ipsButton_narrow ipsButton_medium' data-ipsTooltip data-ipsTooltip-safe title='{lang="forums_default_view_fluid"}'>
<a href="{url="app=forums&module=forums&controller=index&do=setMethod&method=fluid" seoTemplate="forums" csrf="true"}" class='ipsButton {{if $chosen == 'fluid'}}ipsButton_primary{{else}}ipsButton_link{{endif}} ipsButton_narrow ipsButton_medium' data-ipsTooltip data-ipsTooltip-safe title='{lang="forums_default_view_fluid"}'>
<i class='fa fa-th-list'></i>
</a>
</li>
@@ -1181,6 +1223,7 @@
{{endif}}]]></template>
<template template_group="index" template_name="forumGridItem" template_data="$forum" template_location="front" template_app="forums"><![CDATA[{{if $forum->can('view')}}
{{$lastPost = $forum->lastPost();}}
{{$club = $forum->club();}}
<div class="ipsDataItem ipsGrid_span4 ipsAreaBackground_reset cForumGrid {{if \IPS\forums\Topic::containerUnread( $forum ) && !$forum->redirect_on}}cForumGrid_unread ipsDataItem_unread{{endif}} ipsClearfix" data-forumID="{$forum->_id}">
<div class='ipsPhotoPanel ipsPhotoPanel_mini ipsClearfix ipsPad cForumGrid_forumInfo'>
@@ -1188,8 +1231,10 @@
{{if !$forum->redirect_on AND \IPS\forums\Topic::containerUnread( $forum ) AND \IPS\Member::loggedIn()->member_id}}
<a href="{$forum->url()->setQueryString( 'do', 'markRead' )->csrf()}" data-action='markAsRead'>
{{endif}}
{{if $forum->icon}}
<img src="{file="$forum->icon" extension="forums_Icons"}" class='ipsItemStatus ipsItemStatus_custom {{if !\IPS\forums\Topic::containerUnread( $forum ) && !$forum->redirect_on}}ipsItemStatus_read{{endif}}'>
{{if $club}}
<img src="{{if $club->profile_photo}}{file="$club->profile_photo" extension="core_Clubs"}{{else}}{resource="default_club.png" app="core" location="global"}{{endif}}" alt='' class='ipsItemStatus ipsItemStatus_large {{if !\IPS\forums\Topic::containerUnread( $forum ) && !$forum->redirect_on}}ipsItemStatus_read{{endif}}'>
{{elseif $forum->icon}}
<img src="{file="$forum->icon" extension="forums_Icons"}" alt='' class='ipsItemStatus ipsItemStatus_custom {{if !\IPS\forums\Topic::containerUnread( $forum ) && !$forum->redirect_on}}ipsItemStatus_read{{endif}}'>
{{else}}
{{if $forum->redirect_on}}
<span class='ipsItemStatus ipsItemStatus_large cForumIcon_redirect {{if !\IPS\forums\Topic::containerUnread( $forum ) && !$forum->redirect_on}}ipsItemStatus_read{{endif}}' {template="formattedInlineStyle" params="$forum" app="core" group="global" location="front"}>
@@ -1222,7 +1267,7 @@
{{if $forum->password && !$forum->loggedInMemberHasPasswordAccess()}}
<a href="{$forum->url()->setQueryString( 'passForm', '1' )}" data-ipsDialog data-ipsDialog-size='narrow' data-ipsDialog-title='{lang="forum_requires_password" sprintf="$forum->_title"}'>{$forum->_title}</a>
{{else}}
<a href="{$forum->url()}">{$forum->_title}</a>
<a href="{$forum->url()}">{{if $club}}{lang="club_node" sprintf="$club->name, $forum->_title"}{{else}}{$forum->_title}{{endif}}</a>
{{endif}}
</h3>
{{if !$forum->redirect_on}}
@@ -1299,13 +1344,16 @@
{{endif}}]]></template>
<template template_group="index" template_name="forumRow" template_data="$forum, $isSubForum=FALSE, $table=NULL" template_location="front" template_app="forums"><![CDATA[{{if $forum->can('view')}}
{{$lastPost = $forum->lastPost();}}
{{$club = $forum->club();}}
<li class="cForumRow ipsDataItem ipsDataItem_responsivePhoto {{if \IPS\forums\Topic::containerUnread( $forum ) && !$forum->redirect_on}}ipsDataItem_unread{{endif}} ipsClearfix" data-forumID="{$forum->_id}">
<div class="ipsDataItem_icon ipsDataItem_category">
{{if !$forum->redirect_on}}
{{if \IPS\forums\Topic::containerUnread( $forum ) AND \IPS\Member::loggedIn()->member_id}}<a href="{{if $isSubForum}}{$forum->url()->setQueryString( array( 'do' => 'markRead', 'return' => $forum->parent_id ) )->csrf()}{{else}}{$forum->url()->setQueryString( 'do', 'markRead' )->csrf()}{{endif}}" data-action='markAsRead' title='{lang="mark_forum_read"}' data-ipsTooltip>{{endif}}
{{endif}}
{{if $forum->icon}}
<img src="{file="$forum->icon" extension="forums_Icons"}" class='ipsItemStatus ipsItemStatus_custom {{if !\IPS\forums\Topic::containerUnread( $forum ) && !$forum->redirect_on}}ipsItemStatus_read{{endif}}'>
{{if $club}}
<img src="{{if $club->profile_photo}}{file="$club->profile_photo" extension="core_Clubs"}{{else}}{resource="default_club.png" app="core" location="global"}{{endif}}" alt='' class='ipsItemStatus ipsItemStatus_large {{if !\IPS\forums\Topic::containerUnread( $forum ) && !$forum->redirect_on}}ipsItemStatus_read{{endif}}'>
{{elseif $forum->icon}}
<img src="{file="$forum->icon" extension="forums_Icons"}" alt='' class='ipsItemStatus ipsItemStatus_custom {{if !\IPS\forums\Topic::containerUnread( $forum ) && !$forum->redirect_on}}ipsItemStatus_read{{endif}}'>
{{else}}
{{if $forum->redirect_on}}
<span class='ipsItemStatus ipsItemStatus_large cForumIcon_redirect {{if !\IPS\forums\Topic::containerUnread( $forum ) && !$forum->redirect_on}}ipsItemStatus_read{{endif}}' {template="formattedInlineStyle" params="$forum" app="core" group="global" location="front"}>
@@ -1338,7 +1386,7 @@
{{if $forum->password && !$forum->loggedInMemberHasPasswordAccess()}}
<a href="{$forum->url()->setQueryString( 'passForm', '1' )}" data-ipsDialog data-ipsDialog-size='narrow' data-ipsDialog-title='{lang="forum_requires_password" sprintf="$forum->_title"}'>{$forum->_title}</a>
{{else}}
<a href="{$forum->url()}">{$forum->_title}</a>
<a href="{$forum->url()}">{{if $club}}{lang="club_node" sprintf="$club->name, $forum->_title"}{{else}}{$forum->_title}{{endif}}</a>
{{endif}}
{{if $forum->redirect_on}}
&nbsp;&nbsp;<span class='ipsType_light ipsType_medium'>({lang="redirect_hits" pluralize="$forum->redirect_hits"})</span>
@@ -1412,7 +1460,7 @@
{template=&quot;forumRow&quot; group=&quot;index&quot; app=&quot;forums&quot; params=&quot;$forum, FALSE, $table&quot;}
{{endforeach}}</template>
<template template_group="index" template_name="index" template_data="" template_location="front" template_app="forums"><![CDATA[<div class='ipsPageHeader ipsClearfix ipsSpacer_bottom cForumHeader'>
{{if \IPS\Member::loggedIn()->member_id}}
{{if \IPS\forums\Forum::canOnAny( 'add' ) }}
<ul class='ipsToolList ipsToolList_horizontal ipsClearfix ipsPos_right'>
<li class='ipsToolList_primaryAction ipsResponsive_hidePhone'>
<a class="ipsButton ipsButton_medium ipsButton_important" href="{url="app=forums&module=forums&controller=forums&do=add" seoTemplate="topic_non_forum_add_button"}" data-ipsDialog data-ipsDialog-size='narrow' data-ipsDialog-title='{lang="select_forum"}'>{lang="start_new_topic"}</a>
@@ -1457,6 +1505,29 @@
</li>
{{endif}}
{{endforeach}}
{{if settings.club_nodes_in_apps and $clubForums = \IPS\forums\Forum::clubNodes()}}
<li data-categoryID='clubs' class='cForumRow ipsBox ipsSpacer_bottom'>
<h2 class="ipsType_sectionTitle ipsType_reset cForumTitle">
<a href='#' class='ipsPos_right ipsJS_show ipsType_noUnderline cForumToggle' data-action='toggleCategory' data-ipsTooltip title='{lang="toggle_this_category"}'></a>
<a href='{url="app=forums&module=forums&controller=forums&do=clubs" seoTemplate="forums_clubs"}'>{lang="club_node_forums"}</a>
</h2>
{{if \IPS\forums\Forum::getMemberView() === 'grid'}}
<div class='ipsAreaBackground ipsPad' data-role="forums">
<div class='ipsGrid ipsGrid_collapsePhone' data-ipsGrid data-ipsGrid-minItemSize='250' data-ipsGrid-maxItemSize='500' data-ipsGrid-equalHeights='row'>
{{foreach $clubForums as $forum}}
{template="forumGridItem" group="index" app="forums" params="$forum"}
{{endforeach}}
</div>
</div>
{{else}}
<ol class="ipsDataList ipsDataList_large ipsDataList_zebra ipsAreaBackground_reset" data-role="forums">
{{foreach $clubForums as $forum}}
{template="forumRow" group="index" app="forums" params="$forum"}
{{endforeach}}
</ol>
{{endif}}
</li>
{{endif}}
</ol>
</section>]]></template>
<template template_group="index" template_name="indexButtons" template_data="$showViewButtons=TRUE, $showFilterButton=FALSE" template_location="front" template_app="forums"><![CDATA[
@@ -1466,9 +1537,11 @@
<span data-role='fluidForumMobileDesc'>{lang="forums_simple_filter_by"}</span> <i class='fa fa-angle-down'></i></a>
</li>
{{endif}}
{{if \IPS\forums\Forum::canOnAny('add')}}
<li class='ipsToolList_primaryAction ipsResponsive_hideTablet'>
<a class="ipsButton ipsButton_medium ipsButton_important ipsButton_fullWidth" href="{url="app=forums&module=forums&controller=forums&do=add"}" data-ipsDialog data-ipsDialog-size='narrow' data-ipsDialog-title='{lang="select_forum"}'>{lang="start_new_topic"}</a>
</li>
{{endif}}
{{if $showViewButtons}}
{template="viewChange" group="global" app="forums" params=""}
@@ -1508,7 +1581,7 @@
<ul class="ipsMenu ipsMenu_auto ipsMenu_withStem ipsMenu_selectable ipsHide" id="elSortByMenu_{$table->uniqueId}_menu">
{{$custom = TRUE;}}
{{foreach $table->sortOptions as $k => $col}}
<li class="ipsMenu_item {{if $col === $table->getSortByColumn()}}{{$custom = FALSE;}}ipsMenu_itemChecked{{endif}}" data-ipsMenuValue="{$col}" data-sortDirection='{{if $col == 'title'}}asc{{else}}desc{{endif}}'><a href="{$table->baseUrl->setQueryString( array( 'filter' => $table->filter, 'sortby' => $col, 'sortdirection' => ( $col == 'title' ) ? 'asc' : 'desc', 'page' => '1' ) )}">{lang="{$table->langPrefix}sort_{$k}"}</a></li>
<li class="ipsMenu_item {{if $col === $table->getSortByColumn()}}{{$custom = FALSE;}}ipsMenu_itemChecked{{endif}}" data-ipsMenuValue="{$col}" data-sortDirection='{$table->getSortDirection( $col )}'><a href="{$table->baseUrl->setQueryString( array( 'filter' => $table->filter, 'sortby' => $col, 'sortdirection' => $table->getSortDirection( $col ), 'page' => '1' ) )}">{lang="{$table->langPrefix}sort_{$k}"}</a></li>
{{endforeach}}
{{if $table->advancedSearch}}
<li class="ipsMenu_item {{if $custom}}ipsMenu_itemChecked{{endif}}" data-noSelect="true">
@@ -1713,6 +1786,10 @@
{{elseif !$row->locked() && $row->topic_close_time && $row->topic_close_time > time()}}
<span><strong class='ipsType_small ipsType_noBreak' data-ipsTooltip title='{lang="topic_locks_at" sprintf="\IPS\DateTime::ts( $row->topic_close_time )->relative(), \IPS\DateTime::ts( $row->topic_close_time )->localeTime( FALSE )"}'><i class='fa fa-clock-o'></i> {lang="topic_locks_at_short" sprintf="\IPS\DateTime::ts($row->topic_close_time)->relative(1)"}</strong>&nbsp;&nbsp;</span>
{{endif}}
{{if $row->mapped('poll')}}
<span><span class="ipsBadge ipsBadge_icon ipsBadge_small ipsBadge_neutral" data-ipsTooltip title='{lang="topic_has_poll"}'><i class='fa fa-question'></i></span></span>
{{endif}}
{{if $row->mapped('pinned') || $row->mapped('featured') || $row->hidden() === -1 || $row->hidden() === 1}}
{{if $row->hidden() === -1}}
@@ -1748,7 +1825,7 @@
<span>
{lang="byline_itemprop" htmlsprintf="$row->author()->link()"}
</span>{datetime="$row->mapped('date')" lowercase="true"}
{lang="in"} <a href="{$row->container()->url()}">{$row->container()->_formattedTitle|raw}</a>
{lang="in"} <a href="{$row->container()->url()}">{{if $club = $row->container()->club()}}{lang="club_node" sprintf="$club->name, $row->container()->_title"}{{else}}{$row->container()->_formattedTitle|raw}{{endif}}</a>
{{if count( $row->tags() )}}
&nbsp;&nbsp;
@@ -1805,7 +1882,7 @@
{{endforeach}}
{{endif}}]]></template>
<template template_group="index" template_name="simplifiedView" template_data="$table" template_location="front" template_app="forums"><![CDATA[<div class="ipsPageHeader ipsClearfix ipsSpacer_bottom cForumHeader">
{{if \IPS\Member::loggedIn()->member_id}}
{{if \IPS\forums\Forum::canOnAny( 'add' )}}
<ul class='ipsToolList ipsToolList_horizontal ipsClearfix ipsPos_right'>
<li class='ipsToolList_primaryAction ipsResponsive_hidePhone'>
<a class="ipsButton ipsButton_medium ipsButton_important" href="{url="app=forums&module=forums&controller=forums&do=add" seoTemplate="topic_non_forum_add_button"}" data-ipsDialog data-ipsDialog-size='narrow' data-ipsDialog-title='{lang="select_forum"}'>{lang="start_new_topic"}</a>
@@ -1825,28 +1902,54 @@
{{endif}}
{$table|raw}]]></template>
<template template_group="index" template_name="simplifiedViewSidebar" template_data="$forumIds, $parentIds" template_location="front" template_app="forums"><![CDATA[<div data-controller="forums.front.forum.flow" class='ipsBox cForumMiniList_wrapper' id='elFluidFormFilters'>
<template template_group="index" template_name="simplifiedViewSidebar" template_data="$forumIds" template_location="front" template_app="forums"><![CDATA[<div data-controller="forums.front.forum.flow" class='ipsBox cForumMiniList_wrapper' id='elFluidFormFilters'>
<div class='ipsSideMenu'>
{{if count( \IPS\forums\Forum::roots() ) === 1}}
<ul class='ipsSideMenu_list cForumMiniList cForumMiniList_singleRoot'>
{{foreach \IPS\forums\Forum::roots() as $category}}
{template="simplifiedViewSidebar_children" app="forums" location="front" group="index" params="$forumIds, $parentIds, $category, 0"}
{template="simplifiedViewSidebar_children" app="forums" location="front" group="index" params="$forumIds, $category, 0"}
{{endforeach}}
</ul>
{{else}}
<ul class='ipsSideMenu_list cForumMiniList cForumMiniList_multiRoot'>
{{foreach \IPS\forums\Forum::roots() as $category}}
{{if $category->hasChildren()}}
<li class="{{if in_array( $category->_id, $parentIds )}}cForumMiniList_categorySelected{{endif}}">
<a href="{$category->url()}" data-parent-id="{$category->_id}" data-node-id="{$category->_id}" class='{{if in_array( $category->_id, $parentIds )}}cForumMiniList_selected{{endif}} ipsSideMenu_item ipsTruncate ipsTruncate_line'>{$category->_title}</a>
<li class="" data-category>
<a href="{$category->url()}" data-parent-id="{$category->_id}" data-node-id="{$category->_id}" class='ipsSideMenu_item ipsTruncate ipsTruncate_line'>{$category->_title}</a>
{{if $category->hasChildren()}}
<ul class='ipsSideMenu_list cForumMiniList'>
{template="simplifiedViewSidebar_children" app="forums" location="front" group="index" params="$forumIds, $parentIds, $category, 0"}
{template="simplifiedViewSidebar_children" app="forums" location="front" group="index" params="$forumIds, $category, 0"}
</ul>
{{endif}}
</li>
{{endif}}
{{endforeach}}
{{if settings.club_nodes_in_apps and $clubForums = \IPS\forums\Forum::clubNodes()}}
<li class="{{if in_array( 'clubs', $parentIds )}}cForumMiniList_categorySelected{{endif}}">
<a href="{url="app=forums&module=forums&controller=index&forumId=clubs" seoTemplate="forums"}" data-parent-id="clubs" data-node-id="clubs" class='{{if in_array( 'clubs', $parentIds )}}cForumMiniList_selected{{endif}} ipsSideMenu_item ipsTruncate ipsTruncate_line'>{lang="club_node_forums"}</a>
<ul class='ipsSideMenu_list cForumMiniList'>
{{foreach $clubForums as $idx => $forum}}
{{$lastPost = $forum->lastPost();}}
{{$unread = \IPS\forums\Topic::containerUnread( $forum );}}
{{$children = $forum->children();}}
{{if ! $forum->redirect_on and $forum->can('read') }}
<li class="{{if $children}}cForumMiniList_category{{endif}} {{if in_array( $forum->_id, $parentIds )}}cForumMiniList_categorySelected{{endif}}">
<a href="{$forum->url()}" data-parent-id="clubs" data-node-id="{$forum->_id}" data-has-children="{{if $children}}1{{else}}0{{endif}}" class='{{if in_array( $forum->_id, $forumIds )}}cForumMiniList_selected{{endif}} ipsSideMenu_item {{if !$unread}}cForumMiniList_unread{{endif}}'>
<span class='cForumMiniList_blob' {{if $forum->feature_color}}style="background-color: {$forum->feature_color}; color: {$forum->_featureTextColor};"{{endif}} {{if $lastPost['date']}}title="{lang="forum_simple_view_last_post"} {datetime="$lastPost['date']"}" data-ipsTooltip data-ipsTooltip-safe{{endif}}>
<span></span>
<i class='fa fa-check'></i>
</span>
<span class='cForumMiniList_title ipsTruncate ipsTruncate_line'>
{{if $unread}}<strong>{{endif}}{lang="club_node" sprintf="$forum->club()->name, $forum->_title"}{{if $unread}}</strong>{{endif}}
</span>
<span class='ipsType_small ipsType_light cForumMiniList_count'>{expression="\IPS\forums\Topic::contentCount( $forum )"}</span>
</a>
</li>
{{endif}}
{{endforeach}}
</ul>
</li>
{{endif}}
</ul>
{{endif}}
</div>
@@ -1855,14 +1958,14 @@
<a href='#' class='ipsButton ipsButton_fullWidth ipsButton_primary ipsButton_medium' data-action='dialogClose'>{lang="done_forum_filtering"}</a>
</div>
</div>]]></template>
<template template_group="index" template_name="simplifiedViewSidebar_children" template_data="$forumIds, $parentIds, $parent, $depth" template_location="front" template_app="forums"><![CDATA[{{if $parent->hasChildren()and $depth < 5}}
<template template_group="index" template_name="simplifiedViewSidebar_children" template_data="$forumIds, $parent, $depth" template_location="front" template_app="forums"><![CDATA[{{if $parent->hasChildren()and $depth < 5}}
{{foreach $parent->children() as $idx => $forum}}
{{$lastPost = $forum->lastPost();}}
{{$unread = \IPS\forums\Topic::containerUnread( $forum );}}
{{$children = $forum->children();}}
{{if ! $forum->redirect_on and $forum->can('read') }}
<li class="{{if $children}}cForumMiniList_category{{endif}} {{if in_array( $forum->_id, $parentIds )}}cForumMiniList_categorySelected{{endif}}">
<a href="{$forum->url()}" data-parent-id="{$parent->_id}" data-node-id="{$forum->_id}" data-has-children="{{if $children}}1{{else}}0{{endif}}" class='{{if in_array( $forum->_id, $forumIds )}}cForumMiniList_selected{{endif}} ipsSideMenu_item {{if !$unread}}cForumMiniList_unread{{endif}}'>
{{if ! $forum->redirect_on and $forum->can('read') or !$forum->sub_can_post }}
<li class="{{if $children}}cForumMiniList_category{{endif}}">
<a href="{$forum->url()}" data-parent-id="{$parent->_id}" data-node-id="{$forum->_id}" data-has-children="{{if $children}}1{{else}}0{{endif}}" class='ipsSideMenu_item {{if !$unread}}cForumMiniList_unread{{endif}}'>
<span class='cForumMiniList_blob' {{if $forum->feature_color}}style="background-color: {$forum->feature_color}; color: {$forum->_featureTextColor};"{{endif}} {{if $lastPost['date']}}title="{lang="forum_simple_view_last_post"} {datetime="$lastPost['date']"}" data-ipsTooltip data-ipsTooltip-safe{{endif}}>
<span></span>
<i class='fa fa-check'></i>
@@ -1874,7 +1977,7 @@
</a>
{{if $children}}
<ul class='ipsSideMenu_list cForumMiniList'>
{template="simplifiedViewSidebar_children" app="forums" location="front" group="index" params="$forumIds, $parentIds, $forum, $depth+1"}
{template="simplifiedViewSidebar_children" app="forums" location="front" group="index" params="$forumIds, $forum, $depth+1"}
</ul>
{{endif}}
</li>
@@ -1920,7 +2023,7 @@
<input type="checkbox" name="{$name}[3]" id='el{$name}_3' data-control="unlimited" {{if isset( $value[3] ) and $value[3]}}checked{{endif}}>
<span></span>
</span> <label for='el{$name}_3' class='ipsField_unlimited'>{{if mb_strpos( $name, 'not' )}}{lang="no_restriction"}{{else}}{lang="any_time"}{{endif}}</label>]]></template>
<template template_group="settings" template_name="popularNow" template_data="$name, $value" template_location="admin" template_app="forums"><![CDATA[<input type="number" name="{$name}[posts]" value="{$value['posts']}" class="ipsField_short"> {lang="posts_in_the_last"} <input type="number" name="{$name}[minutes]" value="{$value['minutes']}" class="ipsField_short"> {lang="minutes"} {lang="or"}
<template template_group="settings" template_name="popularNow" template_data="$name, $value, $popularNowMaximum" template_location="admin" template_app="forums"><![CDATA[<input type="number" name="{$name}[posts]" value="{$value['posts']}" class="ipsField_short"> {lang="posts_in_the_last"} <input type="number" name="{$name}[minutes]" value="{$value['minutes']}" max="{$popularNowMaximum}" class="ipsField_short"> {lang="minutes"} {lang="or"}
<span class='ipsCustomInput'>
<input type="checkbox" name="{$name}[never]" id='el{$name}_never' data-control="unlimited" {{if !$value['posts']}}checked{{endif}}>
<span></span>
@@ -1942,14 +2045,14 @@
{{endif}}]]></template>
<template template_group="submit" template_name="createTopicForm" template_data="$forum, $hasModOptions, $topic, $id, $action, $elements, $hiddenValues, $actionButtons, $uploadField, $class='', $attributes=array(), $sidebar=NULL, $form=NULL, $errorTabs=array()" template_location="front" template_app="forums"><![CDATA[{{$modOptions = array( 'topic_create_state', 'create_topic_locked', 'create_topic_pinned', 'create_topic_hidden', 'create_topic_featured', 'topic_open_time', 'topic_close_time');}}
<form accept-charset='utf-8' class="ipsForm {$class}" action="{$action}" method="post" {{if $uploadField}}enctype="multipart/form-data"{{endif}} data-ipsForm>
<form accept-charset='utf-8' class="ipsForm {$class}" action="{$action}" method="post" {{if $uploadField}}enctype="multipart/form-data"{{endif}} data-ipsForm data-ipsFormSubmit>
<input type="hidden" name="{$id}_submitted" value="1">
{{foreach $hiddenValues as $k => $v}}
<input type="hidden" name="{$k}" value="{$v}">
{{endforeach}}
{{if $uploadField}}
<input type="hidden" name="MAX_FILE_SIZE" value="{$uploadField}">
<input type="hidden" name="plupload" value="{expression="md5( uniqid() )"}">
<input type="hidden" name="plupload" value="{expression="md5( mt_rand() )"}">
{{endif}}
{{if $form->error}}
@@ -2065,7 +2168,7 @@
</div>]]></template>
<template template_group="topics" template_name="post" template_data="$item, $comment, $editorName, $app, $type, $class=''" template_location="front" template_app="forums"><![CDATA[{{$idField = $comment::$databaseColumnId;}}
<div id='comment-{$comment->$idField}_wrap' data-controller='core.front.core.comment' data-commentApp='{$app}' data-commentType='{$type}' data-commentID="{$comment->$idField}" data-quoteData='{expression="json_encode( array('userid' => $comment->author()->member_id, 'username' => $comment->author()->name, 'timestamp' => $comment->mapped('date'), 'contentapp' => $comment::$application, 'contenttype' => $type, 'contentid' => $item->tid, 'contentclass' => $class, 'contentcommentid' => $comment->$idField) )"}' class='ipsComment_content ipsType_medium {{if $comment->hidden()}}ipsModerated{{endif}} ipsFaded_withHover'>
{{if ( settings.reputation_highlight and $comment->reactionCount() >= settings.reputation_highlight and settings.reputation_enabled ) OR $comment->isFeatured()}}
{{if ( settings.reputation_enabled and settings.reputation_highlight and $comment->reactionCount() >= settings.reputation_highlight ) OR $comment->isFeatured()}}
{{if $comment->isFeatured()}}
<strong class='ipsComment_popularFlag' data-ipsTooltip title='{lang="this_is_a_featured_post"}'><i class='fa fa-star'></i></strong>
{{else}}
@@ -2076,7 +2179,7 @@
<div class='ipsComment_meta ipsType_light'>
<div class='ipsPos_right ipsType_light ipsType_reset ipsFaded ipsFaded_more ipsType_blendLinks'>
<ul class='ipsList_inline ipsComment_tools'>
{{if $comment->canReport()}}
{{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_post"}" data-action='reportComment' title='{lang="report_content"}' class='ipsFaded ipsFaded_more'><span class='ipsResponsive_showPhone ipsResponsive_inline'><i class='fa fa-flag'></i></span><span class='ipsResponsive_hidePhone ipsResponsive_inline'>{lang="report_post"}</span></a></li>
{{endif}}
{{if \IPS\Member::loggedIn()->modPermission('can_use_ip_tools') and \IPS\Member::loggedIn()->canAccessModule( \IPS\Application\Module::get( 'core', 'modcp' ) )}}
@@ -2184,7 +2287,7 @@
<li><a href='{$comment->url('edit')}' data-action='editComment'>{lang="edit"}</a></li>
{{endif}}
{{endif}}
{{if ( ! $comment->mapped('first') and $comment->canPromoteToSocialMedia() ) || $comment->canDelete() || $comment->canHide() || $comment->canUnhide() || $comment->canSplit() || ( $comment->hidden() == -2 AND \IPS\Member::loggedIn()->modPermission('can_manage_deleted_content') )}}
{{if !$comment->mapped('first') and ( $comment->canPromoteToSocialMedia() || $comment->canDelete() || $comment->canHide() || $comment->canUnhide() || $comment->canSplit() || $item->canFeatureComment() || $item->canUnfeatureComment() || ( $comment->hidden() == -2 AND \IPS\Member::loggedIn()->modPermission('can_manage_deleted_content') ) )}}
<li>
<a href='#elControls_{$comment->$idField}_menu' id='elControls_{$comment->$idField}' data-ipsMenu data-ipsMenu-appendTo='#comment-{$comment->$idField}_wrap'>{lang="options"} &nbsp;<i class='fa fa-caret-down'></i></a>
<ul id='elControls_{$comment->$idField}_menu' class='ipsMenu ipsMenu_narrow ipsHide'>
@@ -2264,16 +2367,16 @@
{{endif}}
<a id='comment-{$comment->$idField}'></a>
<article {{if $comment->author()->hasHighlightedReplies()}}data-memberGroup="{$comment->author()->member_group_id}" {{endif}} id='elComment_{$comment->$idField}' class='cPost ipsBox {{if $otherClasses}}{$otherClasses}{{endif}} ipsComment {{if ( settings.reputation_highlight and $comment->reactionCount() >= settings.reputation_highlight and settings.reputation_enabled ) OR $comment->isFeatured()}}ipsComment_popular{{endif}} ipsComment_parent ipsClearfix ipsClear ipsColumns ipsColumns_noSpacing ipsColumns_collapsePhone {{if $comment->author()->hasHighlightedReplies()}}ipsComment_highlighted{{endif}}{{if $comment->isIgnored()}}ipsHide{{endif}} {{if $comment->hidden() OR $item->hidden() === -2}}ipsModerated{{endif}}'>
<article {{if $comment->author()->hasHighlightedReplies()}}data-memberGroup="{$comment->author()->member_group_id}" {{endif}} id='elComment_{$comment->$idField}' class='cPost ipsBox {{if $otherClasses}}{$otherClasses}{{endif}} ipsComment {{if ( settings.reputation_enabled and settings.reputation_highlight and $comment->reactionCount() >= settings.reputation_highlight ) OR $comment->isFeatured()}}ipsComment_popular{{endif}} ipsComment_parent ipsClearfix ipsClear ipsColumns ipsColumns_noSpacing ipsColumns_collapsePhone {{if $comment->author()->hasHighlightedReplies()}}ipsComment_highlighted{{endif}}{{if $comment->isIgnored()}}ipsHide{{endif}} {{if $comment->hidden() OR $item->hidden() === -2}}ipsModerated{{endif}}'>
{{if $item->isQuestion() and !$comment->new_topic}}
{template="postRating" group="topics" app="forums" params="$item, $comment, $votes"}
{{endif}}
<div class='cAuthorPane cAuthorPane_mobile ipsResponsive_showPhone ipsResponsive_block'>
<span class='ipsType_sectionHead cAuthorPane_author ipsResponsive_showPhone ipsResponsive_inlineBlock ipsType_break ipsType_blendLinks ipsTruncate ipsTruncate_line'>
<h3 class='ipsType_sectionHead cAuthorPane_author ipsResponsive_showPhone ipsResponsive_inlineBlock ipsType_break ipsType_blendLinks ipsTruncate ipsTruncate_line'>
{template="userLink" group="global" app="core" params="$comment->author(), $comment->warningRef(), $comment->author()->group['g_id']"}
<span class='ipsResponsive_showPhone ipsResponsive_inline'>&nbsp;&nbsp;{template="reputationBadge" group="global" app="core" params="$comment->author()"}</span>
</span>
</h3>
<div class='cAuthorPane_photo'>
{template="userPhoto" app="core" group="global" params="$comment->author(), 'large', $comment->warningRef()"}
</div>
@@ -2402,12 +2505,12 @@
<li><span data-role="voteCount" data-voteCount="{expression="intval( $topic->question_rating )"}" class='cAnswerRating {{if isset( $topicVotes[ \IPS\Member::loggedIn()->member_id ] ) && $topicVotes[ \IPS\Member::loggedIn()->member_id ] === 1}}ipsType_positive{{elseif isset( $topicVotes[ \IPS\Member::loggedIn()->member_id ] ) && $topicVotes[ \IPS\Member::loggedIn()->member_id ] === -1}}ipsType_negative{{endif}}'>{expression="intval( $topic->question_rating )"}</span></li>
{{if $topic->canVote() && \IPS\Settings::i()->forums_answers_downvote}}
{{if $topic->canVote() && \IPS\Settings::i()->forums_questions_downvote}}
<li>
<a href='{$topic->url()->setQueryString( array( 'do' => 'rateQuestion', 'rating' => -1 ) )->csrf()}' class='{{if !$topic->canVote(-1)}}ipsHide{{endif}} cAnswerRate cAnswerRate_down {{if isset( $topicVotes[ \IPS\Member::loggedIn()->member_id ] ) && $topicVotes[ \IPS\Member::loggedIn()->member_id ] === -1}}ipsType_negative{{endif}}' title='{lang="vote_question_down"}' data-ipsTooltip><i class='fa fa-caret-down'></i></a>
<span class='{{if $topic->canVote(-1)}}ipsHide{{endif}} cAnswerRate cAnswerRate_down {{if isset( $topicVotes[ \IPS\Member::loggedIn()->member_id ] ) && $topicVotes[ \IPS\Member::loggedIn()->member_id ] === -1}}ipsType_negative{{endif}}'><i class='fa fa-caret-down'></i></span>
</li>
{{elseif \IPS\Settings::i()->forums_answers_downvote}}
{{elseif \IPS\Settings::i()->forums_questions_downvote}}
<li>
<span class='cAnswerRate cAnswerRate_down cAnswerRate_noPermission' {{if !\IPS\Member::loggedIn()->member_id}}data-ipsTooltip title='{lang="sign_in_rate_question"}'{{endif}}><i class='fa fa-caret-down'></i></span>
</li>
@@ -2606,17 +2709,34 @@
{$poll|raw}
<br>
{{endif}}
<div data-controller='core.front.core.commentFeed,forums.front.topic.view, core.front.core.ignoredComments' {{if settings.auto_polling_enabled}}data-autoPoll{{endif}} data-baseURL='{$topic->url()}' {{if $topic->isLastPage() and !$topic->isQuestion()}}data-lastPage{{endif}} data-feedID='topic-{$topic->tid}' class='cTopic ipsClear ipsSpacer_top'>
<div data-controller='core.front.core.commentFeed,forums.front.topic.view, core.front.core.ignoredComments' {{if settings.auto_polling_enabled}}data-autoPoll{{endif}} data-baseURL='{$topic->url()}' {{if $topic->isLastPage()}}data-lastPage{{endif}} data-feedID='topic-{$topic->tid}' class='cTopic ipsClear ipsSpacer_top'>
{{if $topic->isQuestion() && $question}}
<div class='ipsAreaBackground ipsPad'>
<h2 class='ipsType_sectionHead ipsType_reset ipsSpacer_bottom'>{lang="question_title"}</h2>
{template="postContainer" group="topics" app="forums" params="$topic, $question, $votes, 'cPostQuestion'"}
</div>
<div class='ipsBox ipsSpacer_top'>
<div class='ipsSpacer_both'>
<h2 class='ipsType_sectionTitle ipsType_reset ipsType_medium ipsHide'>{lang="answer_count" pluralize="( $topic->posts ) ? $topic->posts - 1 : 0"}</h2>
<div class="ipsButtonBar ipsPad_half ipsClearfix ipsClear">
<div class="ipsClearfix ipsClear">
<ul class="ipsPos_right ipsButtonRow ipsClearfix">
{{if ( count( $topic->commentMultimodActions() ) && ( $topic->posts > 1 OR $topic->mapped('unapproved_comments') > 0 OR $topic->mapped('hidden_comments') > 0 ) ) || $pagination}}
<li>
<a class="ipsJS_show" href="#elCheck_menu" id="elCheck" title='{lang="select_rows_tooltip"}' data-ipsTooltip data-ipsAutoCheck data-ipsAutoCheck-context="#elPostFeed" data-ipsMenu data-ipsMenu-activeClass="ipsButtonRow_active">
<span class="cAutoCheckIcon ipsType_medium"><i class="fa fa-square-o"></i></span> <i class="fa fa-caret-down"></i>
<span class='ipsNotificationCount' data-role='autoCheckCount'>0</span>
</a>
<ul class="ipsMenu ipsMenu_auto ipsMenu_withStem ipsHide" id="elCheck_menu">
<li class="ipsMenu_title">{lang="select_rows"}</li>
<li class="ipsMenu_item" data-ipsMenuValue="all"><a href="#">{lang="all"}</a></li>
<li class="ipsMenu_item" data-ipsMenuValue="none"><a href="#">{lang="none"}</a></li>
<li class="ipsMenu_sep"><hr></li>
<li class="ipsMenu_item" data-ipsMenuValue="hidden"><a href="#">{lang="hidden"}</a></li>
<li class="ipsMenu_item" data-ipsMenuValue="unhidden"><a href="#">{lang="unhidden"}</a></li>
<li class="ipsMenu_item" data-ipsMenuValue="unapproved"><a href="#">{lang="unapproved"}</a></li>
</ul>
</li>
{{endif}}
<li>
<a href='{$topic->url()}' id="elSortBy_answers" {{if !isset( request.sortby )}}class='ipsButtonRow_active{{endif}}'>{lang="sort_by_answers"}</a>
</li>
@@ -2628,17 +2748,40 @@
{$pagination|raw}
{{endif}}
</div>
</div>
{{else}}
{{if $pagination}}
<div class="ipsClearfix ipsClear ipsSpacer_bottom">
{$pagination|raw}
</div>
{{endif}}
{{if ( count( $topic->commentMultimodActions() ) && ( $topic->posts > 1 OR $topic->mapped('unapproved_comments') > 0 OR $topic->mapped('hidden_comments') > 0 ) ) || $pagination}}
<div class="ipsClearfix ipsClear ipsSpacer_bottom">
{{if count( $topic->commentMultimodActions() )}}
<ul class="ipsButtonRow ipsPos_right ipsClearfix">
<li>
<a class="ipsJS_show" href="#elCheck_menu" id="elCheck" title='{lang="select_rows_tooltip"}' data-ipsTooltip data-ipsAutoCheck data-ipsAutoCheck-context="#elPostFeed" data-ipsMenu data-ipsMenu-activeClass="ipsButtonRow_active">
<span class="cAutoCheckIcon ipsType_medium"><i class="fa fa-square-o"></i></span> <i class="fa fa-caret-down"></i>
<span class='ipsNotificationCount' data-role='autoCheckCount'>0</span>
</a>
<ul class="ipsMenu ipsMenu_auto ipsMenu_withStem ipsHide" id="elCheck_menu">
<li class="ipsMenu_title">{lang="select_rows"}</li>
<li class="ipsMenu_item" data-ipsMenuValue="all"><a href="#">{lang="all"}</a></li>
<li class="ipsMenu_item" data-ipsMenuValue="none"><a href="#">{lang="none"}</a></li>
<li class="ipsMenu_sep"><hr></li>
<li class="ipsMenu_item" data-ipsMenuValue="hidden"><a href="#">{lang="hidden"}</a></li>
<li class="ipsMenu_item" data-ipsMenuValue="unhidden"><a href="#">{lang="unhidden"}</a></li>
<li class="ipsMenu_item" data-ipsMenuValue="unapproved"><a href="#">{lang="unapproved"}</a></li>
</ul>
</li>
</ul>
{{endif}}
{{if $pagination}}
{$pagination|raw}
{{endif}}
</div>
{{endif}}
{{endif}}
{template="featuredComments" group="global" app="core" params="$topic->featuredComments(), $topic->url()->setQueryString( 'recommended', 'comments' ), 'recommended_posts', 'post_lc'"}
<div data-role='commentFeed' data-controller='core.front.core.moderation' {{if $topic->isQuestion()}}class='ipsPad ipsAreaBackground'{{endif}}>
<div id="elPostFeed" data-role='commentFeed' data-controller='core.front.core.moderation' {{if $topic->isQuestion()}}class='ipsPad ipsAreaBackground'{{endif}}{{if $topic->isQuestion() AND $topic->topic_answered_pid}} data-topicAnswerID="{$topic->topic_answered_pid}"{{endif}}>
<form action="{$topic->url()->csrf()->setQueryString( 'do', 'multimodComment' )}" method="post" data-ipsPageAction data-role='moderationTools'>
{{$postCount=0; $timeLastRead = $topic->timeLastRead(); $lined = FALSE;}}
{{if count( $comments )}}
@@ -2665,16 +2808,13 @@
</form>
</div>
{{if $topic->isQuestion()}}
</div>
{{endif}}
{{if $pagination}}
<div class="ipsClearfix ipsClear ipsSpacer_top">
<div class='ipsSpacer_top ipsClearfix ipsClear'>
{$pagination|raw}
</div>
{{endif}}
{{if $topic->commentForm() || $topic->locked() || \IPS\Member::loggedIn()->restrict_post || \IPS\Member::loggedIn()->members_bitoptions['unacknowledged_warnings']}}
{{if $topic->commentForm() || $topic->locked() || \IPS\Member::loggedIn()->restrict_post || \IPS\Member::loggedIn()->members_bitoptions['unacknowledged_warnings'] || !\IPS\Member::loggedIn()->checkPostsPerDay()}}
<a id='replyForm'></a>
<div data-role='replyArea' class='cTopicPostArea ipsAreaBackground ipsPad {{if !$topic->canComment()}}cTopicPostArea_noSize{{endif}} ipsSpacer_top'>
{{if $topic->commentForm()}}
@@ -2691,6 +2831,8 @@
{template="commentUnavailable" group="forms" location="front" app="core" params="'restricted_cannot_comment', \IPS\Member::loggedIn()->warnings(5,NULL,'rpa'), \IPS\Member::loggedIn()->restrict_post"}
{{elseif \IPS\Member::loggedIn()->members_bitoptions['unacknowledged_warnings']}}
{template="commentUnavailable" group="forms" location="front" app="core" params="'unacknowledged_warning_cannot_post', \IPS\Member::loggedIn()->warnings( 1, FALSE )"}
{{elseif !\IPS\Member::loggedIn()->checkPostsPerDay()}}
{template="commentUnavailable" group="forms" location="front" app="core" params="'member_exceeded_posts_per_day'"}
{{endif}}
{{endif}}
</div>
@@ -2706,56 +2848,68 @@
{{endif}}
</div>
{{if $topic->canPin() or $topic->canUnpin() or $topic->canFeature() or $topic->canUnfeature() or $topic->canHide() or $topic->canUnhide() or $topic->canMove() or $topic->canLock() or $topic->canUnlock() or $topic->canDelete() or $topic->availableSavedActions()}}
{{if ( $topic->canPin() or $topic->canUnpin() or $topic->canFeature() or $topic->canUnfeature() or $topic->canHide() or $topic->canUnhide() or $topic->canMove() or $topic->canLock() or $topic->canUnlock() or $topic->canDelete() or $topic->availableSavedActions() or $topic->canMerge() or $topic->canUnarchive() or $topic->canRemoveArchiveExcludeFlag() or \IPS\Member::loggedIn()->modPermission('can_view_moderation_log') ) or ( $topic->hidden() == -2 AND \IPS\Member::loggedIn()->modPermission('can_manage_deleted_content') )}}
<ul class="ipsToolList ipsToolList_horizontal ipsClearfix ipsSpacer_top ipsResponsive_hidePhone">
<li>
<a href='#elTopicActions_menu' id='elTopicActions' class='ipsButton ipsButton_link ipsButton_medium ipsButton_fullWidth' data-ipsMenu>{lang="moderator_actions"} <i class='fa fa-caret-down'></i></a>
<ul id='elTopicActions_menu' class='ipsMenu ipsMenu_auto ipsHide'>
{{if $topic->canFeature()}}
<li class='ipsMenu_item'><a href='{$topic->url()->csrf()->setQueryString( array( 'do' => 'moderate', 'action' => 'feature' ) )}'>{lang="feature"}</a></li>
{{endif}}
{{if $topic->canUnfeature()}}
<li class='ipsMenu_item'><a href='{$topic->url()->csrf()->setQueryString( array( 'do' => 'moderate', 'action' => 'unfeature' ) )}' >{lang="unfeature"}</a></li>
{{endif}}
{{if $topic->canPin()}}
<li class='ipsMenu_item'><a href='{$topic->url()->csrf()->setQueryString( array( 'do' => 'moderate', 'action' => 'pin' ) )}' >{lang="pin"}</a></li>
{{endif}}
{{if $topic->canUnpin()}}
<li class='ipsMenu_item'><a href='{$topic->url()->csrf()->setQueryString( array( 'do' => 'moderate', 'action' => 'unpin' ) )}' >{lang="unpin"}</a></li>
{{endif}}
{{if $topic->canHide()}}
<li class='ipsMenu_item'><a href='{$topic->url()->csrf()->setQueryString( array( 'do' => 'moderate', 'action' => 'hide' ) )}' data-ipsDialog data-ipsDialog-title="{lang="hide"}">{lang="hide"}</a></li>
{{endif}}
{{if $topic->canUnhide()}}
<li class='ipsMenu_item'><a href='{$topic->url()->csrf()->setQueryString( array( 'do' => 'moderate', 'action' => 'unhide' ) )}' >{{if $topic->hidden() === 1}}{lang="approve"}{{else}}{lang="unhide"}{{endif}}</a></li>
{{endif}}
{{if $topic->canLock()}}
<li class='ipsMenu_item'><a href='{$topic->url()->csrf()->setQueryString( array( 'do' => 'moderate', 'action' => 'lock' ) )}' >{lang="lock"}</a></li>
{{endif}}
{{if $topic->canUnlock()}}
<li class='ipsMenu_item'><a href='{$topic->url()->csrf()->setQueryString( array( 'do' => 'moderate', 'action' => 'unlock' ) )}' >{lang="unlock"}</a></li>
{{endif}}
{{if $topic->canMove()}}
<li class='ipsMenu_item'><a href='{$topic->url()->csrf()->setQueryString( array( 'do' => 'move' ) )}' data-ipsDialog data-ipsDialog-size='narrow' data-ipsDialog-title="{lang="move"}" >{lang="move"}</a></li>
{{endif}}
{{if $topic->canMerge()}}
<li class='ipsMenu_item'><a href='{$topic->url()->csrf()->setQueryString( array( 'do' => 'merge' ) )}' data-ipsDialog data-ipsDialog-size='narrow' data-ipsDialog-title="{lang="merge"}" >{lang="merge"}</a></li>
{{endif}}
{{if $topic->canUnarchive()}}
<li class='ipsMenu_item'><a href='{$topic->url()->csrf()->setQueryString( array( 'do' => 'unarchive' ) )}' data-confirm data-confirmSubMessage="{$topic->unarchiveBlurb()}" >{lang="unarchive"}</a></li>
{{endif}}
{{if $topic->canDelete()}}
<li class='ipsMenu_item'><a href='{$topic->url()->csrf()->setQueryString( array( 'do' => 'moderate', 'action' => 'delete' ) )}' data-confirm >{lang="delete"}</a></li>
{{endif}}
{{if !$topic->isArchived() and $topic->availableSavedActions()}}
<li class='ipsMenu_sep'><hr></li>
{{foreach $topic->availableSavedActions() as $action}}
<li class="ipsMenu_item"><a href='{$topic->url()->csrf()->setQueryString( array( 'do' => 'savedAction', 'action' => $action->_id ) )}' data-confirm>{$action->_title}</a></li>
{{endforeach}}
{{endif}}
{{if \IPS\Member::loggedIn()->modPermission('can_view_moderation_log')}}
<li class='ipsMenu_sep'><hr></li>
<li class="ipsMenu_item"><a href='{$topic->url()->csrf()->setQueryString( array( 'do' => 'modLog' ) )}' data-ipsDialog data-ipsDialog-title='{lang="moderation_history"}'>{lang="moderation_history"}</a></li>
<a href='#elTopicActionsBottom_menu' id='elTopicActionsBottom' class='ipsButton ipsButton_link ipsButton_medium ipsButton_fullWidth' data-ipsMenu>{lang="moderator_actions"} <i class='fa fa-caret-down'></i></a>
<ul id='elTopicActionsBottom_menu' class='ipsMenu ipsMenu_auto ipsHide'>
{{if \IPS\Member::loggedIn()->modPermission('can_manage_deleted_content') AND $topic->hidden() == -2}}
<li class='ipsMenu_item'><a href='{$topic->url()->csrf()->setQueryString( array( 'do' => 'moderate', 'action' => 'restore' ) )}' data-confirm data-confirmSubMessage='{lang="restore_as_visible_desc"}'>{lang="restore_as_visible"}</a></li>
<li class='ipsMenu_item'><a href='{$topic->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='{$topic->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 $topic->canFeature()}}
<li class='ipsMenu_item'><a href='{$topic->url()->csrf()->setQueryString( array( 'do' => 'moderate', 'action' => 'feature' ) )}'>{lang="feature"}</a></li>
{{endif}}
{{if $topic->canUnfeature()}}
<li class='ipsMenu_item'><a href='{$topic->url()->csrf()->setQueryString( array( 'do' => 'moderate', 'action' => 'unfeature' ) )}' >{lang="unfeature"}</a></li>
{{endif}}
{{if $topic->canPin()}}
<li class='ipsMenu_item'><a href='{$topic->url()->csrf()->setQueryString( array( 'do' => 'moderate', 'action' => 'pin' ) )}' >{lang="pin"}</a></li>
{{endif}}
{{if $topic->canUnpin()}}
<li class='ipsMenu_item'><a href='{$topic->url()->csrf()->setQueryString( array( 'do' => 'moderate', 'action' => 'unpin' ) )}' >{lang="unpin"}</a></li>
{{endif}}
{{if $topic->canHide()}}
<li class='ipsMenu_item'><a href='{$topic->url()->csrf()->setQueryString( array( 'do' => 'moderate', 'action' => 'hide' ) )}' data-ipsDialog data-ipsDialog-title="{lang="hide"}">{lang="hide"}</a></li>
{{endif}}
{{if $topic->canUnhide()}}
<li class='ipsMenu_item'><a href='{$topic->url()->csrf()->setQueryString( array( 'do' => 'moderate', 'action' => 'unhide' ) )}' >{{if $topic->hidden() === 1}}{lang="approve"}{{else}}{lang="unhide"}{{endif}}</a></li>
{{endif}}
{{if $topic->canLock()}}
<li class='ipsMenu_item'><a href='{$topic->url()->csrf()->setQueryString( array( 'do' => 'moderate', 'action' => 'lock' ) )}' >{lang="lock"}</a></li>
{{endif}}
{{if $topic->canUnlock()}}
<li class='ipsMenu_item'><a href='{$topic->url()->csrf()->setQueryString( array( 'do' => 'moderate', 'action' => 'unlock' ) )}' >{lang="unlock"}</a></li>
{{endif}}
{{if $topic->canMove()}}
<li class='ipsMenu_item'><a href='{$topic->url()->csrf()->setQueryString( array( 'do' => 'move' ) )}' data-ipsDialog data-ipsDialog-size='narrow' data-ipsDialog-title="{lang="move"}" >{lang="move"}</a></li>
{{endif}}
{{if $topic->canMerge()}}
<li class='ipsMenu_item'><a href='{$topic->url()->csrf()->setQueryString( array( 'do' => 'merge' ) )}' data-ipsDialog data-ipsDialog-size='narrow' data-ipsDialog-title="{lang="merge"}" >{lang="merge"}</a></li>
{{endif}}
{{if $topic->canUnarchive()}}
<li class='ipsMenu_item'><a href='{$topic->url()->csrf()->setQueryString( array( 'do' => 'unarchive' ) )}' data-confirm data-confirmSubMessage="{$topic->unarchiveBlurb()}" >{lang="unarchive"}</a></li>
{{endif}}
{{if $topic->canRemoveArchiveExcludeFlag()}}
<li class='ipsMenu_item'><a href='{$topic->url()->csrf()->setQueryString( array( 'do' => 'removeArchiveExclude' ) )}' >{lang="remove_archive_exlude"}</a></li>
{{endif}}
{{if $topic->canDelete()}}
<li class='ipsMenu_item'><a href='{$topic->url()->csrf()->setQueryString( array( 'do' => 'moderate', 'action' => 'delete' ) )}' data-confirm >{lang="delete"}</a></li>
{{endif}}
{{if $topic->canOnMessage( 'add' )}}
<li class='ipsMenu_item'><a href='{$topic->url()->csrf()->setQueryString( array( 'do' => 'messageForm' ) )}' data-ipsDialog data-ipsDialog-title='{lang="add_message"}'>{lang="add_message"}</a></li>
{{endif}}
{{if !$topic->isArchived() and $topic->availableSavedActions()}}
<li class='ipsMenu_sep'><hr></li>
{{foreach $topic->availableSavedActions() as $action}}
<li class="ipsMenu_item"><a href='{$topic->url()->csrf()->setQueryString( array( 'do' => 'savedAction', 'action' => $action->_id ) )}' data-confirm>{$action->_title}</a></li>
{{endforeach}}
{{endif}}
{{if \IPS\Member::loggedIn()->modPermission('can_view_moderation_log')}}
<li class='ipsMenu_sep'><hr></li>
<li class="ipsMenu_item"><a href='{$topic->url()->csrf()->setQueryString( array( 'do' => 'modLog' ) )}' data-ipsDialog data-ipsDialog-title='{lang="moderation_history"}'>{lang="moderation_history"}</a></li>
{{endif}}
{{endif}}
</ul>
</li>
@@ -2924,7 +3078,7 @@
<div class='ipsPad_half ipsWidget_inner ipsClearfix' data-role='pollContents'>
{$pollForm->customTemplate( array( \IPS\Theme::i()->getTemplate( 'widgets', 'forums', 'front' ), 'pollFormWidget' ), $url )|raw}
</div>
{{elseif !$poll->canVote() or $poll->getVote() or ( request._poll == 'results' and settings.allow_result_view )}}
{{elseif ( $poll->canViewResults() and !$poll->canVote() ) or $poll->getVote() or ( request._poll == 'results' and settings.allow_result_view )}}
<h3 class='ipsWidget_title ipsType_reset'>
<span class='ipsType_break ipsContained'>
{$poll->poll_question}&nbsp;&nbsp;
@@ -2957,10 +3111,20 @@
{{if $poll->canVote() || !member.member_id}}
<hr class='ipsHr'>
{{if $poll->canVote()}}<a href="{$url->setQueryString( '_poll', 'form' )}" title='{lang="show_vote_options"}' class='ipsButton ipsButton_verySmall ipsButton_light' data-action='viewResults'><i class='fa fa-caret-left'></i> {lang="show_vote_options"}</a>{{endif}}
{{if !member.member_id}}{lang="poll_guest" htmlsprintf="\IPS\Http\Url::internal( 'app=core&module=system&controller=login', 'front', 'login', NULL, \IPS\Settings::i()->logins_over_https ), \IPS\Http\Url::internal( 'app=core&module=system&controller=register', 'front', 'register', NULL, \IPS\Settings::i()->logins_over_https )"}{{endif}}
{{if !member.member_id}}{lang="poll_guest" htmlsprintf="\IPS\Http\Url::internal( 'app=core&module=system&controller=login', 'front', 'login' ), \IPS\Http\Url::internal( 'app=core&module=system&controller=register', 'front', 'register' )"}{{endif}}
{{endif}}
<a class='ipsPos_right ipsType_light ipsType_small ipsType_break' href="{$url}">{lang="poll_view_topic"}</a>
</div>
{{else}}
<h3 class='ipsWidget_title ipsType_reset'>
<span class='ipsType_break ipsContained'>
{$poll->poll_question}&nbsp;&nbsp;
<span class='ipsType_small ipsType_light'>{lang="poll_num_votes" pluralize="$poll->votes"}</span>
</span>
</h3>
<div class='ipsPad_half ipsWidget_inner ipsClearfix' data-role='pollContents'>
{lang="no_permission_poll"}{{if !\IPS\Member::loggedIn()->member_id}} {lang="poll_guest" htmlsprintf="\IPS\Http\Url::internal( 'app=core&module=system&controller=login', 'front', 'login' ), \IPS\Http\Url::internal( 'app=core&module=system&controller=register', 'front', 'register' )"}{{endif}}
</div>
{{endif}}
{{if !isset( \IPS\Request::i()->fetchPoll )}}
</section>
@@ -2995,7 +3159,7 @@
{template="userPhoto" app="core" group="global" params="$comment->author(), 'mini', $comment->warningRef()"}
<div>
<p class='ipsPos_right ipsType_reset'>
{{if $comment->canReport()}}
{{if $comment->canReportOrRevoke() === TRUE}}
<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> &middot;
{{endif}}
@@ -3222,12 +3386,18 @@
@media screen and (min-width: 768px) and (max-width: 979px) {
.cForumQuestion .ipsDataItem_main {
width: 100%;
padding-left: 5px !important;
}
.cForumQuestion .ipsDataItem_main,
.cForumQuestion .cForumQuestion_stat {
display: table-cell;
}
.cForumQuestions .cForumQuestion .cForumQuestion_stat + .ipsDataItem_modCheck {
position: absolute;
top: 40px;
padding: 0 4px;
}
}
/* PHONES */
@@ -4048,17 +4218,14 @@ html[dir="rtl"] .cForumMiniList .cForumMiniList_blob {
margin-top: 1px;
}
.cForumMiniList .cForumMiniList_selected .cForumMiniList_blob,
.cForumMiniList .cForumMiniList_categorySelected .cForumMiniList_blob {
.cForumMiniList .cForumMiniList_selected > .cForumMiniList_blob {
opacity: 1;
}
.cForumMiniList .cForumMiniList_selected .cForumMiniList_blob .fa,
.cForumMiniList .cForumMiniList_categorySelected .cForumMiniList_blob .fa {
.cForumMiniList .cForumMiniList_selected > .cForumMiniList_blob .fa {
display: block;
}
.cForumMiniList .cForumMiniList_selected .cForumMiniList_blob > span,
.cForumMiniList .cForumMiniList_categorySelected .cForumMiniList_blob > span {
.cForumMiniList .cForumMiniList_selected > .cForumMiniList_blob > span {
display: none;
}
@@ -4082,12 +4249,9 @@ html[dir="rtl"] .cForumMiniList .cForumMiniList_blob {
margin-top: -4px;
}
.cForumMiniList.cForumMiniList_multiRoot > li > a.cForumMiniList_selected {
.cForumMiniList > li > a.cForumMiniList_selected {
background: #e5e5e5;
}
.cForumMiniList_categorySelected {
background: #f5f5f5;
}
/* Loading styles */
.cForumFluidTable .ipsDataItem_loading > div > span:last-child:after {
+52 -1
View File
@@ -159,5 +159,56 @@
"101117": "4.2.0 Beta 8",
"102000": "4.2.0",
"102001": "4.2.0",
"102002": "4.2.0"
"102002": "4.2.0",
"102003": "4.2.0",
"102004": "4.2.1",
"102005": "4.2.2 Beta 1",
"102006": "4.2.2 Beta 2",
"102007": "4.2.2",
"102008": "4.2.2",
"102009": "4.2.2",
"102010": "4.2.3 Beta 1",
"102011": "4.2.3",
"102012": "4.2.3",
"102013": "4.2.3",
"102014": "4.2.4 Beta 1",
"102015": "4.2.4 Beta 2",
"102016": "4.2.4",
"102017": "4.2.4",
"102018": "4.2.4",
"102019": "4.2.4",
"102020": "4.2.4",
"102021": "4.2.5 Beta 1",
"102022": "4.2.5 Beta 2",
"102023": "4.2.5 Beta 3",
"102024": "4.2.5",
"102025": "4.2.5",
"102026": "4.2.5",
"102027": "4.2.5",
"102028": "4.2.5",
"102029": "4.2.5",
"102030": "4.2.6 Beta 1",
"102031": "4.2.6 Beta 1",
"102032": "4.2.6 Beta 2",
"102033": "4.2.6 Beta 3",
"102034": "4.2.6",
"102035": "4.2.6",
"102036": "4.2.6",
"102037": "4.2.7 Beta 1",
"102038": "4.2.7 Beta 2",
"102039": "4.2.7 Beta 3",
"102040": "4.2.7 Beta 4",
"102041": "4.2.7 Beta 5",
"102042": "4.2.7",
"102043": "4.2.7",
"102044": "4.2.7",
"102045": "4.2.7",
"102046": "4.2.7",
"102047": "4.2.8",
"102048": "4.2.8",
"103000": "4.3.0 Beta 1",
"103002": "4.3.0 Beta 2",
"103003": "4.3.0 Beta 3",
"103004": "4.3.0 Beta 4",
"103005": "4.3.0"
}