1: <?php
2: //permissions system is not implemented, only menu ban works
3: class BootstrapFooterMenu extends \Sphp\tools\MenuGen{
4: private $navmenuClasses = "nav col-md-4 justify-content-end";
5: private $navmenuitemClasses = "nav-link px-2 text-body-secondary";
6: private $fixedPos = "";
7: private $rootMenu = "root";
8: private $blnAjaxLink = false;
9: private $bootstrapversion = 5; // set bootstrap version
10:
11: protected function onrun() {
12:
13: $this->genMenus();
14: }
15: public function setPosition($val="sticky-top") {
16: // fixed-bottom fixed-top sticky-top
17: $this->fixedPos = $val;
18: }
19: public function setBootstrapVersion($val) {
20: $this->bootstrapversion = $val;
21: }
22: public function setRootMenu($val) {
23: $this->rootMenu = $val;
24: }
25: public function getRootMenu() {
26: return $this->rootMenu;
27: }
28: public function setNavMenuCss($val) {
29: $this->navmenuClasses = $val;
30: }
31: public function setNavMenuItemCss($val) {
32: $this->navmenuitemClasses = $val;
33: }
34:
35: public function genMenus() {
36: $strmbar = $this->genMenuBar();
37: $mnuroot = $this->sphp_api->getMenuList($this->rootMenu);
38: // generate bootstrap menu
39: $str1 = "";
40: foreach ($mnuroot as $mnuName => $lstMenu) {
41: $str1 .= $this->genMenu($lstMenu);
42: }
43: $this->htmlout = $strmbar[0] . $str1 . $strmbar[1];
44: }
45: public function genMenu($lstMenu,$submenu=0){
46: $mnuroot = $this->sphp_api->getMenuList($lstMenu[0]);
47: $stra = array();
48: $str = "";
49: $str1 = "";
50: if($mnuroot != null){
51: foreach ($mnuroot as $mnuName => $lstMenu2) {
52: $str .= $this->genMenu($lstMenu2,1);
53: }
54: $str1 = $this->genMenuLinks($this->sphp_api->getMenuLinkList($lstMenu[0]));
55: if($str1 != ""){
56: $stra = $this->getB4Menu($lstMenu[0],$lstMenu[1],$lstMenu[3],$submenu);
57: }else{
58: $stra = $this->getB4Menu($lstMenu[0],$lstMenu[1],$lstMenu[3],$submenu);
59: }
60: return $stra[0] . $str . $str1 . $stra[1];
61:
62: }else{
63: $str = $this->genMenuLinks($this->sphp_api->getMenuLinkList($lstMenu[0]));
64: if($str != ""){
65: $stra = $this->getB4Menu($lstMenu[0],$lstMenu[1],$lstMenu[3],$submenu);
66: }else{
67: $stra = $this->getB4Menu($lstMenu[0],$lstMenu[1],$lstMenu[3],2);
68: }
69: return $stra[0] . $str . $stra[1];
70: }
71:
72: }
73: private function genMenuLinks($mnuroot){
74: $str = "";
75: if($mnuroot != null){
76: foreach ($mnuroot as $mnuLinkName => $lstMenuLink) {
77: $str .= $this->getB4MenuLink($lstMenuLink);
78: }
79: }
80: return $str;
81: }
82: private function setAjax(){
83: $this->blnAjaxLink = true;
84: SphpBase::JSServer()->getAJAX();
85: addHeaderJSFunction('menu_ajax', "function menu_ajax(url){
86: ", " getURL(url); }");
87: }
88: private function getB4Menu($mnutext,$mnuhref="",$blnAjaxLink2=false,$mnuSub=0){
89: /*
90: $mnutitle = $mnutext;
91: if($mnuhref==''){
92: $mnuhref = "#";
93: }else if($blnAjaxLink2){
94: if(!$this->blnAjaxLink){
95: $this->setAjax();
96: }
97: $mnuhref = "javascript: menu_ajax('$mnuhref');";
98: }
99: $stro = array();
100: if($mnuSub==0){
101: if($this->bootstrapversion == 5){
102: $stro[0] = '<li class="nav-item dropdown nav-dli"><a class="nav-link dropdown-toggle nav-dlink" role="button" data-bs-toggle="dropdown" aria-expanded="false" href="'.$mnuhref.'" >'.$mnutitle.'</a><ul class="dropdown-menu">';
103: }else{
104: $stro[0] = '<li class="nav-item dropdown nav-dli"><a class="nav-link dropdown-toggle nav-dlink" data-toggle="dropdown" href="'.$mnuhref.'" >'.$mnutitle.'</a><ul class="dropdown-menu">';
105: }
106: $stro[1] = '</ul></li>';
107: }else if($mnuSub==1){
108: if($this->bootstrapversion == 5){
109: $stro[0] = '<li class="dropdown-submenu nav-dli"><a class="dropdown-item dropdown-toggle nav-dlink2" role="button" data-bs-toggle="dropdown" aria-expanded="false" href="'.$mnuhref.'" >'.$mnutitle.'</a><ul class="dropdown-menu">';
110: }else{
111: $stro[0] = '<li class="dropdown-submenu nav-dli"><a class="dropdown-item dropdown-toggle nav-dlink2" data-toggle="dropdown" href="'.$mnuhref.'" >'.$mnutitle.'</a><ul class="dropdown-menu">';
112: }
113: $stro[1] = '</ul></li>';
114: }else{
115: $stro[0] = '<li class="nav-item"><a class="nav-link" href="'.$mnuhref.'" >'.$mnutitle.'</a>';
116: $stro[1] = '</li>';
117: }
118: return $stro;
119: *
120: */
121: return array('','');
122: }
123: private function getB4MenuLink($lstMenuLink){
124: $mnuitemtext = $lstMenuLink[0];
125: $mnuitemhref = $lstMenuLink[1];
126: $blnAjaxLink2 = $lstMenuLink[3];
127: $mkey = "";
128: $mkeychar = "";
129: if($lstMenuLink[5] !== ""){
130: $mkeya = $this->setKey($mnuitemtext,$lstMenuLink[5]);
131: $mkey = $mkeya[1];
132: $mkeychar = $mkeya[0];
133: }
134: $mnuitemtext = $mnuitemtext . $mkeychar;
135: $tfun = "menu_ajax";
136: if($mnuitemhref==''){
137: $mnuitemhref = "#";
138: }else if($blnAjaxLink2){
139: if(!$this->blnAjaxLink){
140: $this->setAjax();
141: }
142: if(strpos($mnuitemhref,"avascript:")<1){
143: $mnuitemhref = "javascript: $tfun('$mnuitemhref');";
144: }
145: }
146: return '<li class="nav-item"><a class="'. $this->navmenuitemClasses .'" data-mkey="'. $mkey .'" href="'.$mnuitemhref.'">'.$mnuitemtext.'</a></li>';
147: }
148: public function genMenuBar() {
149: return array('<ul class="'. $this->navmenuClasses .'">','</ul>');
150: }
151:
152:
153: }
154: