Update has_separator field in civicrm_navigation
authorColeman Watts <coleman@civicrm.org>
Thu, 11 Jun 2020 15:55:05 +0000 (11:55 -0400)
committerColeman Watts <coleman@civicrm.org>
Thu, 11 Jun 2020 15:55:11 +0000 (11:55 -0400)
This field was incorrectly marked as a boolean;
it's actually an int with an option list.

CRM/Admin/Form/Navigation.php
CRM/Core/CodeGen/Specification.php
CRM/Core/DAO/Navigation.php
CRM/Core/SelectValues.php
CRM/Upgrade/Incremental/sql/5.28.alpha1.mysql.tpl
css/crm-menubar.css
xml/schema/Core/Navigation.xml

index 510d039c13722d28cd9ee39d80f16f9f17aa6401..0b21a818d970c1838ee40b4c32d2161e36a0aff9 100644 (file)
@@ -67,7 +67,7 @@ class CRM_Admin_Form_Navigation extends CRM_Admin_Form {
     $this->add('select', 'permission_operator', NULL, $operators);
 
     //make separator location configurable
-    $separator = [ts('None'), ts('After menu element'), ts('Before menu element')];
+    $separator = CRM_Core_SelectValues::navigationMenuSeparator();
     $this->add('select', 'has_separator', ts('Separator'), $separator);
 
     $active = $this->add('advcheckbox', 'is_active', ts('Enabled'));
index ed531ab538ac70e01aa2fe2ee876008bff4964f2..5bca8cb225346a9c0dc04cd203a9a8be8af0e244 100644 (file)
@@ -341,7 +341,7 @@ class CRM_Core_CodeGen_Specification {
       default:
         $field['phpType'] = $this->value('phpType', $fieldXML, $type);
         $field['sqlType'] = $type;
-        if ($type == 'int unsigned') {
+        if ($type == 'int unsigned' || $type == 'tinyint') {
           $field['phpType'] = 'int';
           $field['crmType'] = 'CRM_Utils_Type::T_INT';
         }
index 06c322c4bd79ab58c95309e5d8a4ee324e09fac7..80179999f1c7eead87c148bc4aad3403bbe77b8e 100644 (file)
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Core/Navigation.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:3819d9a3e40bfbc36a06809c1f4bd98c)
+ * (GenCodeChecksum:8d6052b04bcd4a7bdfff07ecfa14e60b)
  */
 
 /**
@@ -97,9 +97,9 @@ class CRM_Core_DAO_Navigation extends CRM_Core_DAO {
   public $is_active;
 
   /**
-   * If separator needs to be added after this menu item
+   * Place a separator either before or after this menu item.
    *
-   * @var bool
+   * @var int
    */
   public $has_separator;
 
@@ -289,14 +289,18 @@ class CRM_Core_DAO_Navigation extends CRM_Core_DAO {
         ],
         'has_separator' => [
           'name' => 'has_separator',
-          'type' => CRM_Utils_Type::T_BOOLEAN,
-          'title' => ts('Use separator'),
-          'description' => ts('If separator needs to be added after this menu item'),
+          'type' => CRM_Utils_Type::T_INT,
+          'title' => ts('Separator'),
+          'description' => ts('Place a separator either before or after this menu item.'),
           'where' => 'civicrm_navigation.has_separator',
+          'default' => '0',
           'table_name' => 'civicrm_navigation',
           'entity' => 'Navigation',
           'bao' => 'CRM_Core_BAO_Navigation',
           'localizable' => 0,
+          'pseudoconstant' => [
+            'callback' => 'CRM_Core_SelectValues::navigationMenuSeparator',
+          ],
         ],
         'weight' => [
           'name' => 'weight',
index b2c515867e89ed7db981754c3165b46a974f454f..02d654549993febffbd88ba6e8b56fb5629ddec3 100644 (file)
@@ -1172,6 +1172,9 @@ class CRM_Core_SelectValues {
     return $ret;
   }
 
+  /**
+   * @return string[]
+   */
   public static function fieldSerialization() {
     return [
       CRM_Core_DAO::SERIALIZE_SEPARATOR_BOOKEND => 'separator_bookend',
@@ -1182,4 +1185,15 @@ class CRM_Core_SelectValues {
     ];
   }
 
+  /**
+   * @return array
+   */
+  public static function navigationMenuSeparator() {
+    return [
+      ts('None'),
+      ts('After menu element'),
+      ts('Before menu element'),
+    ];
+  }
+
 }
index a82693b7f0a36e85ca0941a2270d7746a326bb68..13a26cf3e67babf03e12b7c5b73db5f4fd66c8ec 100644 (file)
@@ -1,5 +1,9 @@
 {* file to handle db changes in 5.28.alpha1 during upgrade *}
 
+-- https://github.com/civicrm/civicrm-core/pull/17579
+ALTER TABLE `civicrm_navigation` CHANGE `has_separator`
+`has_separator` tinyint   DEFAULT 0 COMMENT 'Place a separator either before or after this menu item.';
+
 -- https://github.com/civicrm/civicrm-core/pull/17450
 ALTER TABLE `civicrm_activity` CHANGE `activity_date_time` `activity_date_time` datetime NULL  DEFAULT CURRENT_TIMESTAMP COMMENT 'Date and time this activity is scheduled to occur. Formerly named scheduled_date_time.';
 ALTER TABLE `civicrm_activity` CHANGE `created_date` `created_date` timestamp NULL  DEFAULT CURRENT_TIMESTAMP COMMENT 'When was the activity was created.';
index 63f421f12183f6c77ec19bf111e40b20f0fb8d83..f4428a4fad77212e6bda5c4c834328a1173f6afc 100644 (file)
 #civicrm-menu li li a {
   padding: 6px 36px 6px 10px;
 }
-#civicrm-menu li.crm-menu-border-bottom:not(:last-child) {
-  border-bottom: 1px solid #bbb;
-}
-#civicrm-menu li:not(.crm-menu-border-bottom) + li.crm-menu-border-top {
+#civicrm-menu li.crm-menu-border-bottom + li,
+#civicrm-menu li + li.crm-menu-border-top {
   border-top: 1px solid #bbb;
 }
 #civicrm-menu li a:focus,
index 8a60e331656812d737daac4eb6de596e7b349d13..5de7ea9d379a7ca98191ca087f2e894adb607fa3 100644 (file)
   </field>
   <field>
     <name>has_separator</name>
-    <title>Use separator</title>
-    <type>boolean</type>
-    <comment>If separator needs to be added after this menu item</comment>
+    <title>Separator</title>
+    <type>tinyint</type>
+    <comment>Place a separator either before or after this menu item.</comment>
+    <default>0</default>
     <add>3.0</add>
+    <pseudoconstant>
+      <callback>CRM_Core_SelectValues::navigationMenuSeparator</callback>
+    </pseudoconstant>
   </field>
   <field>
     <name>weight</name>