From ad8bfcc54af41b4d54c893b096152a7cb8dccd4f Mon Sep 17 00:00:00 2001
From: Hangzhi Yu <hangzhi@protonmail.com>
Date: Wed, 18 Jan 2023 21:55:35 +0100
Subject: [PATCH 1/5] Add SPA support

---
 aleksis/apps/hjelp/frontend/index.js         | 84 ++++++++++++++++++++
 aleksis/apps/hjelp/frontend/messages/de.json |  5 ++
 aleksis/apps/hjelp/frontend/messages/en.json | 15 ++++
 aleksis/apps/hjelp/views.py                  |  2 +
 4 files changed, 106 insertions(+)
 create mode 100644 aleksis/apps/hjelp/frontend/index.js
 create mode 100644 aleksis/apps/hjelp/frontend/messages/de.json
 create mode 100644 aleksis/apps/hjelp/frontend/messages/en.json

diff --git a/aleksis/apps/hjelp/frontend/index.js b/aleksis/apps/hjelp/frontend/index.js
new file mode 100644
index 0000000..04ab0ae
--- /dev/null
+++ b/aleksis/apps/hjelp/frontend/index.js
@@ -0,0 +1,84 @@
+export default
+  {
+    meta: {
+      inMenu: true,
+      titleKey: "hjelp.menu_title",
+      icon: "mdi-help-circle-outline",
+    },
+    children: [
+      {
+        path: "issues/report/",
+        component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"),
+        name: "hjelp.reportIssue",
+        meta: {
+          inMenu: true,
+          titleKey: "hjelp.issues.menu_title",
+          icon: "mdi-bug-outline",
+          permission: "hjelp.report_issue_rule",
+        },
+      },
+      {
+        path: "feedback/",
+        component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"),
+        name: "hjelp.feedback",
+        meta: {
+          inMenu: true,
+          titleKey: "hjelp.feedback.menu_title",
+          icon: "mdi-message-text-outline",
+          permission: "hjelp.send_feedback_rule",
+        },
+      },
+      {
+        path: "faq/",
+        component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"),
+        name: "hjelp.faq",
+        meta: {
+          inMenu: true,
+          titleKey: "hjelp.faq.menu_title_list",
+          icon: "mdi-forum-outline",
+          permission: "hjelp.view_faq_rule",
+        },
+      },
+      {
+        path: "faq/ask/",
+        component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"),
+        name: "hjelp.askFaq",
+      },
+      {
+        path: "faq/order/",
+        component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"),
+        name: "hjelp.orderFaq",
+        meta: {
+          inMenu: true,
+          titleKey: "hjelp.faq.menu_title_manage",
+          icon: "mdi-priority-low",
+          permission: "hjelp.change_faq_rule",
+        },
+      },
+      {
+        path: "faq/section/create/",
+        component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"),
+        name: "hjelp.createFaqSection",
+      },
+      {
+        path: "faq/section/:pk/delete/",
+        component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"),
+        name: "hjelp.deleteFaqSection",
+      },
+      {
+        path: "faq/question/create/",
+        component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"),
+        name: "hjelp.createFaqQuestion",
+      },
+      {
+        path: "faq/question/:pk/update/",
+        component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"),
+        name: "hjelp.updateFaqQuestion",
+      },
+      {
+        path: "faq/question/:pk/delete/",
+        component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"),
+        name: "hjelp.deleteFaqQuestion",
+      },
+    ],
+  }
diff --git a/aleksis/apps/hjelp/frontend/messages/de.json b/aleksis/apps/hjelp/frontend/messages/de.json
new file mode 100644
index 0000000..f3a78a6
--- /dev/null
+++ b/aleksis/apps/hjelp/frontend/messages/de.json
@@ -0,0 +1,5 @@
+{
+  "hjelp": {
+    "menu_title": "Support"
+  }
+}
diff --git a/aleksis/apps/hjelp/frontend/messages/en.json b/aleksis/apps/hjelp/frontend/messages/en.json
new file mode 100644
index 0000000..2e63596
--- /dev/null
+++ b/aleksis/apps/hjelp/frontend/messages/en.json
@@ -0,0 +1,15 @@
+{
+  "hjelp": {
+    "menu_title": "Support",
+    "issues": {
+      "menu_title": "Report an issue"
+    },
+    "feedback": {
+      "menu_title": "Give feedback"
+    },
+    "faq": {
+      "menu_title_list": "FAQ",
+      "menu_title_manage": "Manage FAQ"
+    }
+  }
+}
diff --git a/aleksis/apps/hjelp/views.py b/aleksis/apps/hjelp/views.py
index 20e9a26..4da079d 100644
--- a/aleksis/apps/hjelp/views.py
+++ b/aleksis/apps/hjelp/views.py
@@ -14,6 +14,7 @@ from material import Layout, Row
 from rules.contrib.views import permission_required
 from templated_email import send_templated_mail
 
+from aleksis.core.decorators import pwa_cache
 from aleksis.core.mixins import AdvancedCreateView, AdvancedDeleteView, AdvancedEditView
 from aleksis.core.models import Activity
 from aleksis.core.util.core_helpers import get_site_preferences
@@ -22,6 +23,7 @@ from .forms import FAQForm, FAQOrderFormSet, FAQQuestionForm, FeedbackForm, Issu
 from .models import FAQQuestion, FAQSection, IssueCategory
 
 
+@pwa_cache
 @permission_required("hjelp.view_faq_rule")
 def faq(request):
     """Show the FAQ page."""
-- 
GitLab


From 704ffb1d7fbed34f837cf66d2673c2765ea275dc Mon Sep 17 00:00:00 2001
From: Hangzhi Yu <hangzhi@protonmail.com>
Date: Thu, 26 Jan 2023 12:54:21 +0100
Subject: [PATCH 2/5] Bow to the almighty Aleksolotl in order to gain consent
 for using the LegacyBaseTemplate

---
 aleksis/apps/hjelp/frontend/index.js | 33 ++++++++++++++++++++++++++++
 1 file changed, 33 insertions(+)

diff --git a/aleksis/apps/hjelp/frontend/index.js b/aleksis/apps/hjelp/frontend/index.js
index 04ab0ae..22f72f5 100644
--- a/aleksis/apps/hjelp/frontend/index.js
+++ b/aleksis/apps/hjelp/frontend/index.js
@@ -5,6 +5,9 @@ export default
       titleKey: "hjelp.menu_title",
       icon: "mdi-help-circle-outline",
     },
+    props: {
+      byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true,
+    },
     children: [
       {
         path: "issues/report/",
@@ -16,6 +19,9 @@ export default
           icon: "mdi-bug-outline",
           permission: "hjelp.report_issue_rule",
         },
+        props: {
+          byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true,
+        },
       },
       {
         path: "feedback/",
@@ -27,6 +33,9 @@ export default
           icon: "mdi-message-text-outline",
           permission: "hjelp.send_feedback_rule",
         },
+        props: {
+          byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true,
+        },
       },
       {
         path: "faq/",
@@ -38,11 +47,17 @@ export default
           icon: "mdi-forum-outline",
           permission: "hjelp.view_faq_rule",
         },
+        props: {
+          byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true,
+        },
       },
       {
         path: "faq/ask/",
         component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"),
         name: "hjelp.askFaq",
+        props: {
+          byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true,
+        },
       },
       {
         path: "faq/order/",
@@ -54,31 +69,49 @@ export default
           icon: "mdi-priority-low",
           permission: "hjelp.change_faq_rule",
         },
+        props: {
+          byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true,
+        },
       },
       {
         path: "faq/section/create/",
         component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"),
         name: "hjelp.createFaqSection",
+        props: {
+          byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true,
+        },
       },
       {
         path: "faq/section/:pk/delete/",
         component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"),
         name: "hjelp.deleteFaqSection",
+        props: {
+          byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true,
+        },
       },
       {
         path: "faq/question/create/",
         component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"),
         name: "hjelp.createFaqQuestion",
+        props: {
+          byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true,
+        },
       },
       {
         path: "faq/question/:pk/update/",
         component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"),
         name: "hjelp.updateFaqQuestion",
+        props: {
+          byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true,
+        },
       },
       {
         path: "faq/question/:pk/delete/",
         component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"),
         name: "hjelp.deleteFaqQuestion",
+        props: {
+          byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true,
+        },
       },
     ],
   }
-- 
GitLab


From fb926204b34e06e56a95b8ae003bfc46f8c19d33 Mon Sep 17 00:00:00 2001
From: Hangzhi Yu <hangzhi@protonmail.com>
Date: Thu, 26 Jan 2023 12:54:31 +0100
Subject: [PATCH 3/5] Add changelog entry

---
 CHANGELOG.rst | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/CHANGELOG.rst b/CHANGELOG.rst
index 37b0837..c36f7e9 100644
--- a/CHANGELOG.rst
+++ b/CHANGELOG.rst
@@ -9,6 +9,11 @@ and this project adheres to `Semantic Versioning`_.
 Unreleased
 ----------
 
+Added
+~~~~~
+
+* Add SPA support.
+
 
 `2.1`_ - 2022-06-25
 -------------------
-- 
GitLab


From 62bdc7bb3011a91f55c02a6d3da61cb3876199cb Mon Sep 17 00:00:00 2001
From: Julian Leucker <leuckerj@gmail.com>
Date: Tue, 31 Jan 2023 19:49:33 +0100
Subject: [PATCH 4/5] Bump version of Hjelp and core requirement

---
 docs/conf.py   | 4 ++--
 pyproject.toml | 4 ++--
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/docs/conf.py b/docs/conf.py
index f010a10..55f206f 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -29,9 +29,9 @@ copyright = "2018-2022 The AlekSIS team"
 author = "The AlekSIS Team"
 
 # The short X.Y version
-version = "2.1"
+version = "3.0"
 # The full version, including alpha/beta/rc tags
-release = "2.1.1.dev0"
+release = "3.0.0.dev0"
 
 
 # -- General configuration ---------------------------------------------------
diff --git a/pyproject.toml b/pyproject.toml
index d1a4c77..ae37216 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -1,6 +1,6 @@
 [tool.poetry]
 name = "AlekSIS-App-Hjelp"
-version = "2.1.1.dev0"
+version = "3.0.0.dev0"
 packages = [
     { include = "aleksis" }
 ]
@@ -38,7 +38,7 @@ secondary = true
 
 [tool.poetry.dependencies]
 python = "^3.9"
-aleksis-core = "^2.10"
+aleksis-core = "^3.0.dev3"
 
 [tool.poetry.dev-dependencies]
 aleksis-builddeps = "*"
-- 
GitLab


From 2eed677339e0c8ad90809d8cefde7003516a6a81 Mon Sep 17 00:00:00 2001
From: Hangzhi Yu <hangzhi@protonmail.com>
Date: Wed, 1 Feb 2023 21:42:29 +0000
Subject: [PATCH 5/5] Remove unused legacy menus.py file

---
 CHANGELOG.rst               |  8 +++++
 aleksis/apps/hjelp/menus.py | 64 -------------------------------------
 2 files changed, 8 insertions(+), 64 deletions(-)
 delete mode 100644 aleksis/apps/hjelp/menus.py

diff --git a/CHANGELOG.rst b/CHANGELOG.rst
index c36f7e9..b5b44a5 100644
--- a/CHANGELOG.rst
+++ b/CHANGELOG.rst
@@ -6,6 +6,14 @@ All notable changes to this project will be documented in this file.
 The format is based on `Keep a Changelog`_,
 and this project adheres to `Semantic Versioning`_.
 
+Breaking changes
+----------------
+
+Removed
+~~~~~~~
+
+* Remove legacy menu entries.
+
 Unreleased
 ----------
 
diff --git a/aleksis/apps/hjelp/menus.py b/aleksis/apps/hjelp/menus.py
deleted file mode 100644
index 1f27f11..0000000
--- a/aleksis/apps/hjelp/menus.py
+++ /dev/null
@@ -1,64 +0,0 @@
-from django.utils.translation import gettext_lazy as _
-
-MENUS = {
-    "NAV_MENU_CORE": [
-        {
-            "name": _("Support"),
-            "url": "#",
-            "icon": "help",
-            "root": True,
-            "validators": [
-                (
-                    "aleksis.core.util.predicates.permission_validator",
-                    "hjelp.show_menu_rule",
-                ),
-            ],
-            "submenu": [
-                {
-                    "name": _("Report an issue"),
-                    "url": "report_issue",
-                    "icon": "bug_report",
-                    "validators": [
-                        (
-                            "aleksis.core.util.predicates.permission_validator",
-                            "hjelp.report_issue_rule",
-                        ),
-                    ],
-                },
-                {
-                    "name": _("Give feedback"),
-                    "url": "feedback",
-                    "icon": "message_alert",
-                    "validators": [
-                        (
-                            "aleksis.core.util.predicates.permission_validator",
-                            "hjelp.send_feedback_rule",
-                        ),
-                    ],
-                },
-                {
-                    "name": _("FAQ"),
-                    "url": "faq",
-                    "icon": "question_answer",
-                    "validators": [
-                        (
-                            "aleksis.core.util.predicates.permission_validator",
-                            "hjelp.view_faq_rule",
-                        ),
-                    ],
-                },
-                {
-                    "name": _("Manage FAQ"),
-                    "url": "order_faq",
-                    "icon": "low_priority",
-                    "validators": [
-                        (
-                            "aleksis.core.util.predicates.permission_validator",
-                            "hjelp.change_faq_rule",
-                        ),
-                    ],
-                },
-            ],
-        }
-    ]
-}
-- 
GitLab