From 96cc878d927210ecdd490296d251220aa202c5ed Mon Sep 17 00:00:00 2001
From: Elmar Ludwig <elmar.ludwig@uni-osnabrueck.de>
Date: Tue, 10 May 2022 19:09:09 +0000
Subject: [PATCH] add option ACTION_MENU_THRESHOLD, re #1033

Merge request studip/studip!600
---
 .../5.2.3_add_action_menu_threshold.php       | 31 +++++++++++++++++++
 lib/classes/ActionMenu.php                    |  3 +-
 2 files changed, 32 insertions(+), 2 deletions(-)
 create mode 100644 db/migrations/5.2.3_add_action_menu_threshold.php

diff --git a/db/migrations/5.2.3_add_action_menu_threshold.php b/db/migrations/5.2.3_add_action_menu_threshold.php
new file mode 100644
index 00000000000..fd6c1ce881a
--- /dev/null
+++ b/db/migrations/5.2.3_add_action_menu_threshold.php
@@ -0,0 +1,31 @@
+<?php
+
+class AddActionMenuThreshold extends Migration
+{
+    public function description()
+    {
+        return 'add option for when to render action menu as separate icons';
+    }
+
+    public function up()
+    {
+        $query = 'INSERT INTO `config` (`field`, `value`, `type`, `section`, `mkdate`, `chdate`, `description`)
+                  VALUES (:name, :value, :type, :section, UNIX_TIMESTAMP(), UNIX_TIMESTAMP(), :description)';
+        $statement = DBManager::get()->prepare($query);
+        $statement->execute([
+            'name'        => 'ACTION_MENU_THRESHOLD',
+            'description' => 'Obergrenze an Einträgen, bis zu der ein Aktionsmenü als Icons dargestellt wird',
+            'section'     => 'global',
+            'type'        => 'integer',
+            'value'       => '1'
+        ]);
+    }
+
+    public function down()
+    {
+        $query = "DELETE `config`, `config_values`
+                  FROM `config` LEFT JOIN `config_values` USING (`field`)
+                  WHERE `field` = 'ACTION_MENU_THRESHOLD'";
+        DBManager::get()->exec($query);
+    }
+}
diff --git a/lib/classes/ActionMenu.php b/lib/classes/ActionMenu.php
index e90c77309c4..ed6b36a157a 100644
--- a/lib/classes/ActionMenu.php
+++ b/lib/classes/ActionMenu.php
@@ -8,7 +8,6 @@
  */
 class ActionMenu
 {
-    const THRESHOLD = 1;
     const TEMPLATE_FILE_SINGLE   = 'shared/action-menu-single.php';
     const TEMPLATE_FILE_MULTIPLE = 'shared/action-menu.php';
 
@@ -242,7 +241,7 @@ class ActionMenu
             return '';
         }
 
-        $template_file = count($this->actions) <= self::THRESHOLD
+        $template_file = count($this->actions) <= Config::get()->ACTION_MENU_THRESHOLD
                        ? self::TEMPLATE_FILE_SINGLE
                        : self::TEMPLATE_FILE_MULTIPLE;
 
-- 
GitLab