diff --git a/README.md b/README.md
index 65f5858..cd39b9b 100644
--- a/README.md
+++ b/README.md
@@ -1,37 +1,40 @@
-# phpBB Number of Active Topics
+# phpBB Active Topics
## Description
-If you configure a forum as a category, the active topics of the sub-forums can be displayed there. This extension allows you to set the number of topics.
+If you configure a forum as a category, the active topics of the sub-forums can be displayed there. This extension allows you to define the position of the active topics and the number of topics displayed.
+
#### Settings in Administration Control Panel
In "Manage Forums" -> "Edit Forum"
+- Display active topics above the forums
- Topics per page
## Screenshots
-- [ACP](https://raw.githubusercontent.com/IMC-GER/images/main/screenshots/numberactivetopics/en/acp-edit-forum.png)
+- [ACP](https://raw.githubusercontent.com/IMC-GER/images/main/screenshots/activetopics/acp_en.png)
+- [Forum](https://raw.githubusercontent.com/IMC-GER/images/main/screenshots/activetopics/forum.png)
## Requirements
- phpBB 3.3.0 or higher
## Installation
-Copy the extension to `phpBB3/ext/imcger/numberactivetopics`.
-Go to "ACP" > "Customise" > "Manage extensions" and enable the "Number of Active Topics" extension.
+Copy the extension to `phpBB3/ext/imcger/activetopics`.
+Go to "ACP" > "Customise" > "Manage extensions" and enable the "Active Topics" extension.
## Update
- Navigate in the ACP to `Customise -> Manage extensions`.
-- Click the `Disable` link for "Number of Active Topics".
-- Delete the `numberactivetopics` folder from `phpBB3/ext/imcger/`.
-- Copy the extension to `phpBB3/ext/imcger/numberactivetopics`.
-- Go to "ACP" > "Customise" > "Manage extensions" and enable the "Number of Active Topics" extension.
+- Click the `Disable` link for "Active Topics".
+- Delete the `activetopics` folder from `phpBB3/ext/imcger/`.
+- Copy the extension to `phpBB3/ext/imcger/activetopics`.
+- Go to "ACP" > "Customise" > "Manage extensions" and enable the "Active Topics" extension.
## Changelog
-### v1.0.0 (29-07-2023)
+### v1.1.0 (15-12-2023)
- Published
## Uninstallation
- Navigate in the ACP to `Customise -> Manage extensions`.
-- Click the `Disable` link for "Number of Active Topics".
-- To permanently uninstall, click `Delete Data`, then delete the `numberactivetopics` folder from `phpBB3/ext/imcger/`.
+- Click the `Disable` link for "Active Topics".
+- To permanently uninstall, click `Delete Data`, then delete the `activetopics` folder from `phpBB3/ext/imcger/`.
## License
[GPLv2](https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html)
diff --git a/numberactivetopics_version.json b/activetopics_version.json
similarity index 61%
rename from numberactivetopics_version.json
rename to activetopics_version.json
index 2c2091c..9095ff6 100644
--- a/numberactivetopics_version.json
+++ b/activetopics_version.json
@@ -1,9 +1,9 @@
{
"stable": {
"1.0": {
- "current": "1.0.0",
+ "current": "1.1.0",
"announcement": "https://www.phpbb.de/community/viewtopic.php?t=246827",
- "download": "https://github.com/IMC-GER/phpBB-Number-of-Active-Topics/tags",
+ "download": "https://github.com/IMC-GER/phpBB-Active-Topics/tags",
"eol": null,
"security": false
}
diff --git a/imcger/numberactivetopics/README.md b/imcger/activetopics/README.md
similarity index 50%
rename from imcger/numberactivetopics/README.md
rename to imcger/activetopics/README.md
index 65f5858..eccf08a 100644
--- a/imcger/numberactivetopics/README.md
+++ b/imcger/activetopics/README.md
@@ -1,37 +1,41 @@
-# phpBB Number of Active Topics
+# phpBB Active Topics
## Description
-If you configure a forum as a category, the active topics of the sub-forums can be displayed there. This extension allows you to set the number of topics.
+If you configure a forum as a category, the active topics of the sub-forums can be displayed there.
+This extension allows you to define the position of the active topics and the number of topics displayed.
+
#### Settings in Administration Control Panel
In "Manage Forums" -> "Edit Forum"
+- Display active topics above the forums
- Topics per page
## Screenshots
-- [ACP](https://raw.githubusercontent.com/IMC-GER/images/main/screenshots/numberactivetopics/en/acp-edit-forum.png)
+- [ACP](https://raw.githubusercontent.com/IMC-GER/images/main/screenshots/activetopics/acp_en.png)
+- [Forum](https://raw.githubusercontent.com/IMC-GER/images/main/screenshots/activetopics/forum.png)
## Requirements
- phpBB 3.3.0 or higher
## Installation
-Copy the extension to `phpBB3/ext/imcger/numberactivetopics`.
-Go to "ACP" > "Customise" > "Manage extensions" and enable the "Number of Active Topics" extension.
+Copy the extension to `phpBB3/ext/imcger/activetopics`.
+Go to "ACP" > "Customise" > "Manage extensions" and enable the "Active Topics" extension.
## Update
- Navigate in the ACP to `Customise -> Manage extensions`.
-- Click the `Disable` link for "Number of Active Topics".
-- Delete the `numberactivetopics` folder from `phpBB3/ext/imcger/`.
-- Copy the extension to `phpBB3/ext/imcger/numberactivetopics`.
-- Go to "ACP" > "Customise" > "Manage extensions" and enable the "Number of Active Topics" extension.
+- Click the `Disable` link for "Active Topics".
+- Delete the `activetopics` folder from `phpBB3/ext/imcger/`.
+- Copy the extension to `phpBB3/ext/imcger/activetopics`.
+- Go to "ACP" > "Customise" > "Manage extensions" and enable the "Active Topics" extension.
## Changelog
-### v1.0.0 (29-07-2023)
+### v1.1.0 (15-12-2023)
- Published
## Uninstallation
- Navigate in the ACP to `Customise -> Manage extensions`.
-- Click the `Disable` link for "Number of Active Topics".
-- To permanently uninstall, click `Delete Data`, then delete the `numberactivetopics` folder from `phpBB3/ext/imcger/`.
+- Click the `Disable` link for "Active Topics".
+- To permanently uninstall, click `Delete Data`, then delete the `activetopics` folder from `phpBB3/ext/imcger/`.
## License
[GPLv2](https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html)
diff --git a/imcger/activetopics/adm/style/event/acp_overall_footer_after.html b/imcger/activetopics/adm/style/event/acp_overall_footer_after.html
new file mode 100644
index 0000000..1377bf4
--- /dev/null
+++ b/imcger/activetopics/adm/style/event/acp_overall_footer_after.html
@@ -0,0 +1,36 @@
+{#
+ Active Topics
+ An extension for the phpBB Forum Software package.
+
+ @copyright (c) 2023, Thorsten Ahlers
+ @license GNU General Public License, version 2 (GPL-2.0)
+#}
+{% if FORUM_POST || FORUM_LINK || FORUM_CAT %}
+
+{% endif %}
diff --git a/imcger/numberactivetopics/composer.json b/imcger/activetopics/composer.json
similarity index 57%
rename from imcger/numberactivetopics/composer.json
rename to imcger/activetopics/composer.json
index 7f8d438..c3be245 100644
--- a/imcger/numberactivetopics/composer.json
+++ b/imcger/activetopics/composer.json
@@ -1,10 +1,10 @@
{
- "name": "imcger/numberactivetopics",
+ "name": "imcger/activetopics",
"type": "phpbb-extension",
- "description": "This extension enables the setting, topics per page for active topics.",
+ "description": "This extension enables settings for active topics.",
"homepage": "",
- "version": "1.0.0",
- "time": "2023-07-29",
+ "version": "1.1.0",
+ "time": "2023-12-15",
"license": "GPL-2.0-only",
"authors": [{
"name": "Thorsten Ahlers",
@@ -16,14 +16,14 @@
"php": ">=7.1.3"
},
"extra": {
- "display-name": "Number of Active Topics",
+ "display-name": "Active Topics",
"soft-require": {
"phpbb/phpbb": ">=3.3.0"
},
"version-check": {
"host": "raw.githubusercontent.com",
- "directory": "/IMC-GER/phpBB-Number-of-Active-Topics/master",
- "filename": "numberactivetopics_version.json",
+ "directory": "/IMC-GER/phpBB-Active-Topics/master",
+ "filename": "activetopics_version.json",
"ssl": true
}
}
diff --git a/imcger/activetopics/config/services.yml b/imcger/activetopics/config/services.yml
new file mode 100644
index 0000000..3e6366a
--- /dev/null
+++ b/imcger/activetopics/config/services.yml
@@ -0,0 +1,19 @@
+services:
+ imcger.activetopics.acp_listener:
+ class: imcger\activetopics\event\acp_listener
+ arguments:
+ - '@request'
+ - '@language'
+ tags:
+ - { name: event.listener }
+
+ imcger.activetopics.main_listener:
+ class: imcger\activetopics\event\main_listener
+ arguments:
+ - '@template'
+ - '@dbal.conn'
+ - '%core.root_path%'
+ - '%core.php_ext%'
+ tags:
+ - { name: event.listener }
+
diff --git a/imcger/activetopics/event/acp_listener.php b/imcger/activetopics/event/acp_listener.php
new file mode 100644
index 0000000..6fcaa93
--- /dev/null
+++ b/imcger/activetopics/event/acp_listener.php
@@ -0,0 +1,103 @@
+request = $request;
+ $this->language = $language;
+ }
+
+ /**
+ * Get subscribed events
+ *
+ * @return array
+ * @static
+ */
+ public static function getSubscribedEvents()
+ {
+ return [
+ 'core.acp_manage_forums_request_data' => 'acp_manage_forums_request_data',
+ 'core.acp_manage_forums_initialise_data' => 'acp_manage_forums_initialise_data',
+ 'core.acp_manage_forums_display_form' => 'acp_manage_forums_display_form',
+ ];
+ }
+
+ /**
+ * Submit form (add/update)
+ *
+ * @param \phpbb\event\data $event The event object
+ * @return null
+ * @access public
+ */
+ public function acp_manage_forums_request_data($event)
+ {
+ $array = $event['forum_data'];
+ $array['imcger_display_active_position'] = $this->request->variable('imcger_display_active_position', 0);
+ $event['forum_data'] = $array;
+ }
+
+ /**
+ * Default settings for new forums
+ *
+ * @param \phpbb\event\data $event The event object
+ * @return null
+ * @access public
+ */
+ public function acp_manage_forums_initialise_data($event)
+ {
+ if ($event['action'] == 'add')
+ {
+ $array = $event['forum_data'];
+ $array['imcger_display_active_position'] = '0';
+ $event['forum_data'] = $array;
+ }
+ }
+
+ /**
+ * ACP forums template output
+ *
+ * @param \phpbb\event\data $event The event object
+ * @return null
+ * @access public
+ */
+ public function acp_manage_forums_display_form($event)
+ {
+ $this->language->add_lang('common', 'imcger/activetopics');
+
+ $array = $event['template_data'];
+ $array['IMCGER_DISPLAY_ACTIVE_POSITION'] = $event['forum_data']['imcger_display_active_position'];
+ $event['template_data'] = $array;
+ }
+}
diff --git a/imcger/activetopics/event/main_listener.php b/imcger/activetopics/event/main_listener.php
new file mode 100644
index 0000000..8108a6b
--- /dev/null
+++ b/imcger/activetopics/event/main_listener.php
@@ -0,0 +1,123 @@
+template = $template;
+ $this->db = $db;
+ $this->phpbb_root_path = $root_path;
+ $this->php_ext = $php_ext;
+ }
+
+ /**
+ * Get subscribed events
+ *
+ * @return array
+ * @static
+ */
+ public static function getSubscribedEvents()
+ {
+ return [
+ 'core.viewforum_modify_page_title' => 'set_template_vars',
+ 'core.viewforum_modify_topicrow' => 'set_template_vars_forum_name',
+ ];
+ }
+
+ /**
+ * Set template vars
+ *
+ * @return null
+ * @access public
+ */
+ public function set_template_vars($event)
+ {
+ $this->forum_id = $event['forum_id'];
+
+ $sql = 'SELECT imcger_display_active_position FROM ' . FORUMS_TABLE . '
+ WHERE forum_id = ' . $this->forum_id;
+
+ $result = $this->db->sql_query($sql);
+ $row = $this->db->sql_fetchrow($result);
+ $this->db->sql_freeresult($result);
+
+ $this->template->assign_vars([
+ 'IMCGER_DISPLAY_ACTIVE_POSITION' => (int) $row['imcger_display_active_position'],
+ ]);
+ }
+
+ /**
+ * Set template vars
+ *
+ * @return null
+ * @access public
+ */
+ public function set_template_vars_forum_name($event)
+ {
+ $topic_row = $event['topic_row'];
+ $links_forum = '';
+ $topic_forum_id = $topic_row['FORUM_ID'];
+
+ do {
+ $sql = 'SELECT forum_name, parent_id FROM ' . FORUMS_TABLE . '
+ WHERE forum_id = ' . (int) $topic_forum_id;
+
+ $result = $this->db->sql_query($sql);
+ $row = $this->db->sql_fetchrow($result);
+ $this->db->sql_freeresult($result);
+
+ $u_view_forum = append_sid("{$this->phpbb_root_path}viewforum.$this->php_ext", 'f=' . $topic_forum_id);
+ $link_forum = '' . $row['forum_name'] . '';
+
+ $links_forum = strlen($links_forum) == 0 ? $link_forum : $link_forum . ' » ' . $links_forum;
+ $topic_forum_id = $row['parent_id'];
+
+ } while ($row['parent_id'] != 0 && $row['parent_id'] != $this->forum_id);
+
+ $topic_row['IMCGER_LINKS_FORUM'] = $links_forum;
+ $event['topic_row'] = $topic_row;
+ }
+}
diff --git a/imcger/activetopics/ext.php b/imcger/activetopics/ext.php
new file mode 100644
index 0000000..feed4f9
--- /dev/null
+++ b/imcger/activetopics/ext.php
@@ -0,0 +1,22 @@
+=') && phpbb_version_compare(PHPBB_VERSION, '4.0.0-dev', '<');
+ $valid_php = phpbb_version_compare(PHP_VERSION, '7.1.3', '>=');
+
+ return ($valid_phpbb && $valid_php);
+ }
+}
diff --git a/imcger/activetopics/language/de/common.php b/imcger/activetopics/language/de/common.php
new file mode 100644
index 0000000..b331753
--- /dev/null
+++ b/imcger/activetopics/language/de/common.php
@@ -0,0 +1,40 @@
+ 'Aktive Themen oberhalb anzeigen',
+ 'IMCGER_DISPLAY_ACTIVE_POSITION_DESC' => 'Wenn diese Einstellung auf „Ja“ gesetzt wird, werden aktive Themen der gewählten Unterforen auf der Seite oberhalb dieser Kategorie angezeigt.',
+]);
diff --git a/imcger/activetopics/language/de_x_sie/common.php b/imcger/activetopics/language/de_x_sie/common.php
new file mode 100644
index 0000000..b331753
--- /dev/null
+++ b/imcger/activetopics/language/de_x_sie/common.php
@@ -0,0 +1,40 @@
+ 'Aktive Themen oberhalb anzeigen',
+ 'IMCGER_DISPLAY_ACTIVE_POSITION_DESC' => 'Wenn diese Einstellung auf „Ja“ gesetzt wird, werden aktive Themen der gewählten Unterforen auf der Seite oberhalb dieser Kategorie angezeigt.',
+]);
diff --git a/imcger/activetopics/language/en/common.php b/imcger/activetopics/language/en/common.php
new file mode 100644
index 0000000..0104243
--- /dev/null
+++ b/imcger/activetopics/language/en/common.php
@@ -0,0 +1,40 @@
+ 'Display active topics above',
+ 'IMCGER_DISPLAY_ACTIVE_POSITION_DESC' => 'If this setting is set to "Yes", active topics of the selected sub-forums are displayed on the page above this category.',
+]);
diff --git a/imcger/numberactivetopics/license.txt b/imcger/activetopics/license.txt
similarity index 100%
rename from imcger/numberactivetopics/license.txt
rename to imcger/activetopics/license.txt
diff --git a/imcger/activetopics/migrations/activetopics_01.php b/imcger/activetopics/migrations/activetopics_01.php
new file mode 100644
index 0000000..34941fe
--- /dev/null
+++ b/imcger/activetopics/migrations/activetopics_01.php
@@ -0,0 +1,59 @@
+db_tools->sql_column_exists(FORUMS_TABLE, 'imcger_display_active_position');
+ }
+
+ public function update_schema()
+ {
+ return [
+ 'add_columns' => [
+ FORUMS_TABLE => [
+ 'imcger_display_active_position' => ['UINT:2', 0],
+ ],
+ ],
+ ];
+ }
+
+ public function revert_schema()
+ {
+ return [
+ 'drop_columns' => [
+ FORUMS_TABLE => [
+ 'imcger_display_active_position',
+ ],
+ ],
+ ];
+ }
+
+ public function revert_data()
+ {
+ return [
+ ['custom', [[$this, 'reset_topics_per_page']]],
+ ];
+ }
+
+ public function reset_topics_per_page()
+ {
+ $sql = 'UPDATE ' . FORUMS_TABLE . ' SET forum_topics_per_page = 0 WHERE forum_type = ' . FORUM_CAT;
+ $this->db->sql_query($sql);
+ }
+}
diff --git a/imcger/activetopics/styles/prosilver/template/activetopics.js b/imcger/activetopics/styles/prosilver/template/activetopics.js
new file mode 100644
index 0000000..19a64f8
--- /dev/null
+++ b/imcger/activetopics/styles/prosilver/template/activetopics.js
@@ -0,0 +1,18 @@
+/*
+ * Active Topics
+ * An extension for the phpBB Forum Software package.
+ *
+ * @copyright (c) 2023, Thorsten Ahlers
+ * @license GNU General Public License, version 2 (GPL-2.0)
+ *
+ */
+
+(function($) { // Avoid conflicts with other libraries
+
+ 'use strict';
+
+ // Move active topics to the top of forumlist
+ if ($('.forumbg dt#active_topics').length) {
+ $('.forabg').first().before($('.forumbg'));
+ }
+})(jQuery); // Avoid conflicts with other libraries
diff --git a/imcger/activetopics/styles/prosilver/template/event/topiclist_row_topic_by_author_after.html b/imcger/activetopics/styles/prosilver/template/event/topiclist_row_topic_by_author_after.html
new file mode 100644
index 0000000..7153f99
--- /dev/null
+++ b/imcger/activetopics/styles/prosilver/template/event/topiclist_row_topic_by_author_after.html
@@ -0,0 +1 @@
+{% if S_DISPLAY_ACTIVE %} » {{ lang('IN') }} {{ topicrow.IMCGER_LINKS_FORUM }}{% endif %}
diff --git a/imcger/activetopics/styles/prosilver/template/event/viewforum_forum_title_before.html b/imcger/activetopics/styles/prosilver/template/event/viewforum_forum_title_before.html
new file mode 100644
index 0000000..46cb5b8
--- /dev/null
+++ b/imcger/activetopics/styles/prosilver/template/event/viewforum_forum_title_before.html
@@ -0,0 +1,3 @@
+{% if IMCGER_DISPLAY_ACTIVE_POSITION %}
+ {% INCLUDEJS '@imcger_activetopics/activetopics.js' %}
+{% endif %}
diff --git a/imcger/numberactivetopics/adm/style/event/acp_forums_custom_settings.html b/imcger/numberactivetopics/adm/style/event/acp_forums_custom_settings.html
deleted file mode 100644
index f11a6fd..0000000
--- a/imcger/numberactivetopics/adm/style/event/acp_forums_custom_settings.html
+++ /dev/null
@@ -1,28 +0,0 @@
-{#
- Number of Active Topics
- An extension for the phpBB Forum Software package.
-
- @copyright (c) 2023, Thorsten Ahlers
- @license GNU General Public License, version 2 (GPL-2.0)
-#}
-