From 1646c97b11045496e8808434d690ea94551ccf95 Mon Sep 17 00:00:00 2001 From: "Hahn Axel (hahn)" <axel.hahn@unibe.ch> Date: Fri, 3 May 2024 16:29:43 +0200 Subject: [PATCH] add line in sidebar menu; add getFormSelect --- public_html/classes/render-adminlte.class.php | 75 +++++++++++++++++-- 1 file changed, 70 insertions(+), 5 deletions(-) diff --git a/public_html/classes/render-adminlte.class.php b/public_html/classes/render-adminlte.class.php index 72f2e76..1035af9 100755 --- a/public_html/classes/render-adminlte.class.php +++ b/public_html/classes/render-adminlte.class.php @@ -11,6 +11,7 @@ require_once 'htmlelements.class.php'; * 2023-09-11 <axel.hahn@unibe.ch> add shadows on card + callout * 2023-09-27 <axel.hahn@unibe.ch> add form input fields * 2023-11-17 <axel.hahn@unibe.ch> add tabbed content; "=" renders hamburger item + * 2024-05-03 <axel.hahn@unibe.ch> add line in sidebar menu; add getFormSelect * ====================================================================== * * @author Axel @@ -669,7 +670,12 @@ class renderadminlte { /** - * get a navigation items for sidebar + * Get a navigation items for sidebar + * Links can be nested with the key "children". + * + * Remark: for a horizontal line ($aLink['label']='-') this css is required + * .nav-item hr{color: #505860; border-top: 1px solid; height: 1px; padding: 0; margin: 0; } + * * @param array $aLinks list of link items */ public function getNavi2Items($aLinks){ @@ -677,7 +683,14 @@ class renderadminlte { if (!$aLinks || !is_array($aLinks) || !count($aLinks)){ return false; } + foreach($aLinks as $aLink){ + + if ($aLink['label']=='-') { + // TODO: draw a nice line + $sReturn.='<li class="nav-item"><hr></li>'; + continue; + } // to render active or open links: $aLink['class']='nav-link' . (isset($aLink['class']) ? ' '.$aLink['class'] : ''); @@ -1117,7 +1130,7 @@ class renderadminlte { * A colored box with large icon, text and a value. * https://adminlte.io/docs/3.2/components/boxes.html * - * @param type $aOptions hash with keys for all options + * @param array $aOptions hash with keys for all options * styling: * - type - color of the box; one of [none]|danger|dark|info|primary|secondary|success|warning * - iconbg - background color or type of icon; use it for default type (type="") @@ -1242,7 +1255,7 @@ class renderadminlte { * return a text input field: * https://adminlte.io/themes/v3/pages/forms/general.html * - * @param type $aOptions hash with keys for all options + * @param array $aOptions hash with keys for all options * styling: * - type - field type: text, email, password, hidden and all other html 5 input types * content @@ -1310,8 +1323,8 @@ class renderadminlte { } /** - * return a textare field .. or html editor using summernote - * @param type $aOptions hash with keys for all options + * return a textarea field .. or html editor using summernote + * @param array $aOptions hash with keys for all options * styling: * - type - field type: [none]|html * content @@ -1348,6 +1361,58 @@ class renderadminlte { } + /** + * return a select box field + * @param array $aOptions hash with keys for all options + * styling: + * - class - css class + * option fields + * - options - array of options with keys per item: + * - value - value in the option + * - label - visible text in the option + * other keys are attributes in the option + * select tag + * - label - label tag + * - name - name attribute for sending form + * other keys are attributes in the select + * @return string + */ + public function getFormSelect($aOptions){ + $aElement=$aOptions; + $aElement['class']='' + . 'form-control ' + . (isset($aOptions['class']) ? $aOptions['class']: '') + ; + + $sLabel=isset($aOptions['label']) ? $aOptions['label'] : ''; + $sFormid=(isset($aOptions['id']) + + ? $aOptions['id'] + : (isset($aOptions['name']) ? $aOptions['name'] : 'field' ).'-'.md5(microtime(true)) + ); + + $sOptionTags=''; + foreach($aOptions['options'] as $aField){ + $optionText=$aField['label']; + unset($aField['label']); + $sOptionTags.=$this->_tag('option', $aField, $optionText )."\n"; + } + + foreach(['_infos', 'label', 'debug','type', 'value', 'options'] as $sDeleteKey){ + if(isset($aElement[$sDeleteKey])){ + unset($aElement[$sDeleteKey]); + } + } + return $this->getHorizontalFormElement( + $this->_tag('div', ['class'=>'form-group'], + $this->_tag('select', $aElement, $sOptionTags) + ), + $sLabel, + $sFormid + ); + + } + // ---------------------------------------------------------------------- // // PUBLIC FUNCTIONS :: CONTENT - TABBED CONTENT -- GitLab