From 06fd8de000a445b66cb356d5528f5ac31486fc62 Mon Sep 17 00:00:00 2001 From: "Hahn Axel (hahn)" <axel.hahn@unibe.ch> Date: Mon, 20 Nov 2023 14:38:21 +0100 Subject: [PATCH] right top nav; no footer nav --- .../classes/render-adminlte.class.php | 20 ++++++--- public_html/deployment/inc_functions.php | 44 ++++++++++++++++++- public_html/deployment/index.php | 43 ++++++++++-------- public_html/deployment/main.css | 9 ++-- public_html/deployment/main_new_ui.css | 25 +---------- 5 files changed, 89 insertions(+), 52 deletions(-) diff --git a/public_html/deployment/classes/render-adminlte.class.php b/public_html/deployment/classes/render-adminlte.class.php index 7ee43120..0c4dc7a2 100755 --- a/public_html/deployment/classes/render-adminlte.class.php +++ b/public_html/deployment/classes/render-adminlte.class.php @@ -670,9 +670,16 @@ class renderadminlte { * @param array $aUlOptions array of html attrubutes for wrapping UL tag * @return string */ - public function getTopNavigation($aNavItems, $aUlOptions=['class'=>'navbar-nav']){ + public function getTopNavigation($aNavItems, $aUlOptions=false, $aNavItemsRight=[], $aUlOptionsRight=false){ // array_unshift($aNavItems, ['class'=>'nav-link', 'data-widget'=>'pushmenu', 'href'=>'#', 'role'=>'button', 'label'=>'<i class="fa-solid fa-bars"></i>']); - return $this->addWrapper('ul', $aUlOptions, $this->getNavItems($aNavItems)); + $aUlOptLeft=$aUlOptions ? $aUlOptions : ['class'=>'navbar-nav']; + $aUlOptRight=$aUlOptionsRight ? $aUlOptionsRight : ['class'=>'navbar-nav ml-auto']; + return $this->addWrapper('ul', $aUlOptLeft, $this->getNavItems($aNavItems)) + .(count($aNavItemsRight) + ? $this->addWrapper('ul', $aUlOptRight, $this->getNavItems($aNavItemsRight)) + : '' + ) + ; } // ---------------------------------------------------------------------- @@ -1085,7 +1092,7 @@ class renderadminlte { // print_r($aOptions); - $sVariantPrefix=$aVariants[$aOptions['variant']] ? $aVariants[$aOptions['variant']] : $aVariants['default']; + $sVariantPrefix=isset($aVariants[$aOptions['variant']]) ? $aVariants[$aOptions['variant']] : $aVariants['default']; $sClass='card' . $this->_addClassValue($aOptions['type'], $sVariantPrefix) .($aOptions['shadow'] && isset($this->_aValueMappings['shadow'][$aOptions['shadow']]) @@ -1106,10 +1113,13 @@ class renderadminlte { $aOptions['tools'].=($aOptions[$sTool] ? $sHtml : ''); } // build parts of the card - $sCardHeader=$this->addWrapper('div', ['class'=>'card-header'], + $sCardHeader=$aOptions['title'] + ? $this->addWrapper('div', ['class'=>'card-header'], $this->_tag('h3', ['class'=>'card-title', 'label'=>$aOptions['title']]) . ($aOptions['tools'] ? $this->_tag('div', ['class'=>'card-tools', 'label'=>$aOptions['tools']]) : '') - ); + ) + : '' + ; $sCardBody=$this->_tag('div', ['class'=>'card-body', 'label'=>$aOptions['text']]); $sCardFooter=$aOptions['footer'] ? $this->_tag('div', ['class'=>'card-footer', 'label'=>$aOptions['footer']]) : ''; diff --git a/public_html/deployment/inc_functions.php b/public_html/deployment/inc_functions.php index 987ddef0..480b8985 100644 --- a/public_html/deployment/inc_functions.php +++ b/public_html/deployment/inc_functions.php @@ -273,6 +273,48 @@ function getTopNavLeft($aEmbed=[]) { return $aReturn; } +/** + * get array top left navigation + * @return array + */ +function getTopNavRight() { + global $aParams, $oHtml; + $aReturn = []; + require_once("./classes/project.class.php"); + require_once("./classes/user.class.php"); + $oUser = new user(); + + $sBaseUrl = '/deployment/'; + $sWikiBaseUrl = 'https://intranet.iml.unibe.ch/wiki/doku.php'; + $sCurrentProject=(array_key_exists("prj", $aParams) && $aParams["prj"] <> "all") ? $aParams["prj"] : false; + $sCurrentAction=(array_key_exists("action", $aParams) && $aParams["action"]) ? $aParams["action"] : false; + $sCurrentPar3=(array_key_exists("par3", $aParams) && $aParams["par3"]) ? $aParams["par3"] : false; + $sLiActive=' class="active"'; + + if($oUser->getUsername()){ + $aReturn=[ + ['href'=>'#', 'label'=>$oUser->getUsername(), 'icon'=>'fa-solid fa-user', + 'class'=>($sCurrentAction=='login' ? 'active' :''), + 'children'=>[ + ['href'=>$sBaseUrl . 'all/login/', 'label'=>t("login"), 'icon'=>'fa-solid fa-right-to-bracket' ], + ] + ], + ['href'=>'#', 'label'=>t('menu-help'), 'icon'=>'fa-solid fa-life-ring', 'class'=>'', + 'children'=>[ + ['href'=>$sWikiBaseUrl . '/it/entwicklung/continuous_deployment', 'target'=>'_help', 'label'=>'WIKI: Übersicht Continous Deployment', 'icon'=>'' ], + ['href'=>$sWikiBaseUrl . '/it/entwicklung/continuous_deployment#konventionen', 'target'=>'_help', 'label'=>'WIKI: Konventionen für Entwickler', 'icon'=>'' ], + ['href'=>$sWikiBaseUrl . '/it/infrastruktur/se/snippets/iml.deployment_profile', 'target'=>'_help', 'label'=>'WIKI (Admin): Snippets für den Sysadmin', 'icon'=>'' ], + ['href'=>$sWikiBaseUrl . '/it/infrastruktur/dienste/imldeployment', 'target'=>'_help', 'label'=>'WIKI (Admin): Verzeichnisse und Dateien', 'icon'=>'' ], + ] + ] + ] + ; + + } + // echo '<pre>'.print_r($aReturn, 1); die(__FUNCTION__); + return $aReturn; +} + /** * auto generate upper part of the page with header and navigation * @global type $aParams @@ -567,7 +609,7 @@ function getBreadcrumb() { } $sClass='action '.$aParams["action"]; if (array_key_exists("par3", $aParams)) { - $sLabel.=' :: ' . $oHtml->getIcon($aParams["par3"]). $aParams["par3"]; + $sLabel=$oHtml->getIcon($aParams["par3"]). $aParams["par3"]; $sClass='action ' . $aParams["action"]; } // $sReturn.='<h2 class="action ' . $aParams["action"] . '">' . $sLabel . '</h2>'; diff --git a/public_html/deployment/index.php b/public_html/deployment/index.php index e39ddbd6..985c5b87 100644 --- a/public_html/deployment/index.php +++ b/public_html/deployment/index.php @@ -107,8 +107,8 @@ $aReplace=include("./ui/page_replacements.php"); // ---------------------------------------------------------------------- // html body // ---------------------------------------------------------------------- - $BODY="WARNING: $sAction did not set \$BODY"; - $TITLE="WARNING: $sAction did not set \$TITLE"; + $BODY=""; + $TITLE=""; $sTopArea=getTopArea(['right'=>$sTopRight]); $sBanner=isset($aConfig['banner']) && $aConfig['banner'] ? '<div class="alert alert-info">'.$aConfig['banner'].'</div>' : ''; @@ -138,10 +138,26 @@ $aReplace=include("./ui/page_replacements.php"); if (!@include($sActionFile)) { include("./pages/error_404.php"); } - $BODY = ob_get_contents(); + $OUT = ob_get_contents(); ob_end_clean(); $oCLog->add("including done $sActionFile"); - + + // echo "BODY is $BODY"; + // echo "OUT is $OUT"; + if(!$BODY){ + $BODY="" + // ."INFO: $sActionFile did not set \$BODY<br><br>" + .$renderAdminLTE->getCard([ + // 'title'=>'Hello', + 'type'=>'gray', + 'variant'=>'outline', + 'text'=>$OUT, + ]) + ; + } + if(!$TITLE){ + $TITLE="WARNING: $sActionFile did not set \$TITLE"; + } $oCLog->add("adding actionlog.class"); if ($oUser->getUsername()){ @@ -170,13 +186,12 @@ $aReplace=include("./ui/page_replacements.php"); $BODY = ' ' . $sHeader - // . $sTopArea . $sShellOuptut .' ' . $sBanner . getBreadcrumb() . ' - <div id="content"> + ' . $BODY . ' - </div> + <!-- <div id="footer"> @@ -207,24 +222,13 @@ if(!$sTabApp && !$sPpage){ return true; } - -$aTopnav = [ - ['href'=>'#', 'label'=>'Menu A', 'icon'=>'fa-solid fa-home' ], - ['href'=>'#', 'label'=>'Menu B', 'icon'=>'fa-solid fa-tv'], - ['href'=>'#', 'label'=>'Menu C', 'icon'=>'fa-solid fa-truck-pickup', 'class'=>'active', - 'children'=>[ - ['href'=>'#', 'label'=>'FAQ' , 'icon'=>'fa-solid fa-truck-monster'], - ['href'=>'#', 'label'=>'Support' , 'icon'=>'fa-solid fa-truck-moving'], - ] - ] -]; */ $aTopnav=getTopNavLeft(); $aReplace['{{NAVI_TOP}}']='' . $renderAdminLTE->addWrapper( 'nav', ['class'=>'main-header navbar navbar-expand navbar-white navbar-light'], - $renderAdminLTE->getTopNavigation($aTopnav) + $renderAdminLTE->getTopNavigation($aTopnav,false, getTopNavRight(), false) // add 2nd navbar if needed ) ; @@ -249,6 +253,7 @@ if(!file_exists($sIncfile)){ $aReplace['{{PAGE_BODY}}']=$BODY; $aReplace['{{PAGE_BODY}}']=$BODY; $aReplace['{{PAGE_HEADER_LEFT}}']='<h2>'.$TITLE.'</h2>'; +$aReplace['{{PAGE_HEADER_RIGHT}}']='TODO: small breadcrumb'; $sTemplate=file_get_contents('ui/page.tpl.php'); echo $renderAdminLTE->render($sTemplate,$aReplace); diff --git a/public_html/deployment/main.css b/public_html/deployment/main.css index 52d6bc3f..e1f767a3 100644 --- a/public_html/deployment/main.css +++ b/public_html/deployment/main.css @@ -1,5 +1,5 @@ body{padding-top: 0; - background: linear-gradient(-20deg, #fff 10%,#dde,#fff 90%) fixed; + /* background: linear-gradient(-20deg, #fff 10%,#dde,#fff 90%) fixed; */ } #header,#footer{ background:#eee; @@ -57,6 +57,7 @@ body{padding-top: 0; */ } +/* TODO div#navbuttom wurde auskommentiert */ div#navtop, div#navbuttom{background: rgba(0,50,100,0.1); padding: 0.2em;} div#navtop{margin-bottom: 1em;} div#navtop .current{font-size: 170%; color: #667; padding: 0 0.2em; position: absolute;} @@ -130,7 +131,7 @@ thead{font-size: 130%;} #tbloverview th{} #tbloverview td{} -th{/*border-radius: 0.7em 0.7em 0 0; */ background:#f0f0f0; text-align: center; border-right: 1px solid #fff; } +th{/*border-radius: 0.7em 0.7em 0 0; background:#f0f0f0; */ text-align: center; border-right: 1px solid #fff; } thead tr th.prj{border-bottom: none;} th.versioncontrol{background: #eee; } tr{ } @@ -147,9 +148,9 @@ div.progressinprogress{color: #6a9;} tr.progresshasqueue{border-left:0.5em solid #f81;} div.progresshasqueue{color: #d61;} -.filterbar{border-bottom: 1px solid #ccc; ;} +.filterbar{border-bottom: 0px solid #ccc; ;} button.prjprogress>span{font-size: 130%;} -button.prjprogress.selected{background:#f4f4f4; box-shadow: 0 0 1em #ddd inset; border: 1px solid #aaa;} +button.prjprogress.selected{box-shadow: 0 0 1em #ddd inset; border: 0px solid #aaa;} /* .trproject-textfilter {border-right: 3px solid #f00;} diff --git a/public_html/deployment/main_new_ui.css b/public_html/deployment/main_new_ui.css index 4e6499f5..63b4cde1 100644 --- a/public_html/deployment/main_new_ui.css +++ b/public_html/deployment/main_new_ui.css @@ -10,26 +10,5 @@ pre.config{background:#f4f4f4; color:#448; border-radius: 0.5em; max-height: aut a.topbrand{font-size: 150%; margin-top: -0.2em; margin-right: 1em;} -.dropdown-menu { - /* - position: absolute; - top: 100%; - left: 0; - z-index: 1000; - display: none; - float: left; - min-width: 10rem; - padding: .5rem 0; - margin: .125rem 0 0; - font-size: 1rem; - color: #212529; - text-align: left; - list-style: none; - background-color: #fff; - background-clip: padding-box; - border: 1px solid rgba(0,0,0,.15); - border-radius: .25rem; - box-shadow: 0 .5rem 1rem rgba(0,0,0,.175); - */ - min-width: 15rem; -} \ No newline at end of file +/* no line break in top menu */ +.dropdown-menu a{white-space: nowrap;} \ No newline at end of file -- GitLab