PATH:
root
/
mbmcustom
<?php $data->deps["header"]["js"][1000] = ["js/main.js"]; // TUTAJ DODAJEMY DANE DO UŻYCIA W TEMPLATKACH NA KAŻDEJ STRONIE, // RÓWNIEŻ PO STRONIE ZAWARTOŚCI POBIERANEJ Z CMSA // ZAPISUJEMY TEKSTY I WARTOŚCI DO $data->tplData["NAZWA_TAGU"] // POTEM UŻYWAMY W TEMPLATCE JAKO {%NAZWA_TAGU%} // JAKO WARTOŚĆ MOŻNA ZAPISAĆ FUNKCJĘ - TAG JEST ZAMIENIANY NA // STRING ZWRÓCONY PRZEZ FUNKCJĘ. DODATKOWO FUNKCJA MOŻE // WPŁYWAĆ NA DALSZE DANE TEMPLATKI: // // $data->tplData["MAP"] = function() use (&$data) { // $data->tplData["TITLE"] .= " - MAPA"; // }; // // W TEN SPOSÓB, JEŻELI NA STRONIE ZOSTANIE UŻYTY TAG {%MAP%} // WTEDY ZOSTANIE PRZEEDYTOWANY TAG {%TITLE%} I ZOSTANIE // DODANY MU STRING " - MAPA" I TAG {%MAP%} ZOSTANIE ZASTĄPIONY // WYNIKIEM ZWROTNYM FUNKCJI // // JEŻELI WYWOŁAMY TAG Z PARAMETREM keep: {%MAP|keep%} // WTEDY TAG ZOSTANIE PRZEEDYTOWANY, ALE NADAL BĘDZIE WYKONWAŁ // FUNKCJĘ PONOWNIE, CO BĘDZIE SKUTKOWAŁO PONOWNYM DODANIEM // WAŻNA JEST KOLEJNOŚĆ WYWOŁYWANIA TAGÓW, PONIEWAŻ PIERWSZE // WYWOŁANIE BEZ keep USUNIE FUNKCJĘ PO PIERWSZYM WYWOŁANIU // MOŻNA ROZPOCZYNAĆ BUFOR ob_start(), WYPISYWAĆ NA EKRAN // POTEM ZAPISYWAĆ DO TEMPLATKI PRZEZ ob_get_clean() // NIE ZAMYKAĆ OSTATNIEGO BUFORA, BO NIC NIE WYŚWIETLI // TO ZNACZY 1 ob_start() WYMAGA 1 ob_get_clean()/ob_end_clean() // MAP $data->tplData["GOOGLE_MAPS_SEARCH"] = function() use (&$data) { $args = func_get_args(); $list = []; array_walk_recursive($args, function($item) use (&$data, &$list) { try { $item = (string)$item; } catch (Exception $err) { void(null); } if (gettype($item) == "string" && $item != "") array_push($list, $item); }); return "https://www.google.com/maps/search/" . urlencode(implode(" ", $list)); }; $data->tplData["MAP_LAT"] = isset($data->tplData["MAP_LAT"]) && $data->tplData["MAP_LAT"] != "" && $data->tplData["MAP_LAT"] >= 0 ? $data->tplData["MAP_LAT"] : 50.811509; $data->tplData["MAP_LNG"] = isset($data->tplData["MAP_LNG"]) && $data->tplData["MAP_LNG"] != "" && $data->tplData["MAP_LNG"] >= 0 ? $data->tplData["MAP_LNG"] : 19.105838; $data->tplData["MAP_ZOOM"] = isset($data->tplData["MAP_ZOOM"]) && $data->tplData["MAP_ZOOM"] != "" && $data->tplData["MAP_ZOOM"] >= 0 ? $data->tplData["MAP_ZOOM"] : 15; $data->tplData["MAP_POPUP_TEXT"] = isset($data->tplData["MAP_POPUP_TEXT"]) ? $data->tplData["MAP_POPUP_TEXT"] : "{%COMPANY%}"; $data->tplData["MAP"] = function() use (&$data) { $data->deps["header"]["css"][1000] = "vendor/leaflet/leaflet.css"; $data->deps["header"]["js"][1000] = "vendor/leaflet/leaflet.js"; $data->tplData["JS_MAP_CUSTOM_PINS"] = ""; $data->tplData["MAP_PIN"] = function() use (&$data) { $args = func_get_args(); $pName = array_shift($args); $pLat = isset($args[0]) ? $args[0] : ""; $pLng = isset($args[1]) ? $args[1] : ""; $pIcon = isset($args[2]) ? $args[2] : ""; $pText = isset($args[3]) ? $args[3] : ""; if ($pLat == "") $pLat = $data->tplData["MAP_LAT"]; if ($pLng == "") $pLng = $data->tplData["MAP_LNG"]; if ($pIcon == "") $pIcon = "userfiles/icons/pin.png"; $pIconSize = @getimagesize($pIcon); if (!$pIconSize) { $pIcon = "userfiles/icons/pin.png"; $pIconSize = @getimagesize($pIcon); } if (!$pIconSize) $pIconSize = ""; $pTxt = str_replace("\"", "\\\"", $pText != "" ? $pText : $pName); if ($pIcon != "userfiles/icons/pin.png") { // CUSTOM ICON $data->tplData["JS_MAP_CUSTOM_PINS"] .= <<<JS JS; } else { // DEFAULT ICON $data->tplData["JS_MAP_CUSTOM_PINS"] .= <<<JS LeafletMaps.markers.push(L.marker([{$pLat}, {$pLng}]).bindPopup("{$pTxt}").addTo(newMap)); JS; return ["content" => ($pName != "" ? "<a data-lat=\"{$pLat}\" data-lng=\"{$pLng}\" href=\"https://www.google.com/maps/search/" . rawurlencode(constant("CITY_NAME") . " " . $pName) . "\" target=\"_blank\">{$pName}</a>" : ""), "keep" => true]; } }; if (!strpos($data->tplData["FOOTER_JS"], "newMap = L.map")) $data->tplData["FOOTER_JS"] .= <<<JS <script type="text/javascript"> var LeafletMaps = typeof(LeafletMaps) !== "undefined" ? LeafletMaps : {maps: [], markers: []}; $(document).ready(function() { var map = $(".leaflet_map"); if (map.length > 0) { map.wrapAll("<div class=\"leaflet_map--container\"></div>"); var mapContainer = map.closest(".leaflet_map--container"); map.css("background-image", "none"); try { // L.Map.addInitHook(function() { // LeafletMaps.push(this); // }); var newMap = L.map(map[0], { center: [{%MAP_LAT%}, {%MAP_LNG%}], zoom: {%MAP_ZOOM%} }); var pin = L.icon({ iconUrl: 'userfiles/icons/pin.png', iconSize: [106 / 3, 154 / 3], iconAnchor: [53 / 3, 154 / 3], popupAnchor: [0, -53] }); L.tileLayer('https://api.tiles.mapbox.com/v4/{id}/{z}/{x}/{y}.png?access_token=pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4NXVycTA2emYycXBndHRqcmZ3N3gifQ.rJcFIG214AriISLbB6B5aw', { maxZoom: 18, attribution: 'Map data © <a href="https://www.openstreetmap.org/">OpenStreetMap</a> contributors, ' + '<a href="https://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>, ' + 'Imagery © <a href="https://www.mapbox.com/">Mapbox</a>', id: 'mapbox.streets' }).addTo(newMap); LeafletMaps.markers.push(L.marker([{%MAP_LAT%}, {%MAP_LNG%}], {icon: pin}).bindPopup("{%MAP_POPUP_TEXT%}").addTo(newMap)); {%JS_MAP_CUSTOM_PINS%} LeafletMaps.maps.push(newMap); var links = mapContainer.parent(); links.on("click", "a[href*=\"google\"][href*=\"search\"][data-lat][data-lng]", function(e) { e.preventDefault(); e.stopPropagation(); var index = $(e.delegateTarget).find("a[href*=\"google\"][href*=\"search\"][data-lat][data-lng]").index(this) + 1; var lat = (typeof(this.dataset) == "undefined") ? this.getAttribute("data-lat") : this.dataset.lat; var lng = (typeof(this.dataset) == "undefined") ? this.getAttribute("data-lng") : this.dataset.lng; LeafletMaps.maps[0].flyTo([lat, lng]); LeafletMaps.markers[index].fire("click"); $(window).scrollTop(mapContainer.offset().top); }); } catch(err) { console.error("Leaflet not loaded!", err); } } }); </script> JS; return <<<HTML <div class="leaflet_map"></div> HTML; }; $data->tplData["PHONE_LINK"] = preg_replace("/(?<!^)+[^0-9+]/", "", $data->tplData["PHONE"]); /* $data->tplData["HEADER_JS"] .= <<<"JS" <script type="text/javascript"> $(document).ready(function() { var hamburger = $(".hamburger"); if (hamburger.length > 0) { hamburger.on("click touch", function() { $(this).toggleClass("is-active"); }); } }); </script> JS; */ $menuTree = Utils::buildMenuIDsTree($menu, ["rodzic" => 2], []); // reset($menuTree); // $item = $menu[key($menuTree)]; // unset($menuTree[key($menuTree)]); // reset($menuTree); $data->tplData["NAV_LANG"] = function() use (&$data, $lang, $langs) { ob_start(); $cLang = $lang; if ($cLang == "") $cLang = $langs[0]; echo "<li class=\"active\">" . mb_strtoupper($cLang) . "</li>"; foreach ($langs as $l) { if ($l == $cLang) continue; echo "<li><a href=\"{%STATIC_ROOT%}" . mb_strtolower($l) . "/\">" . mb_strtoupper($l) . "</a></li>"; } $data->tplData["NAV_LANG"] = ob_get_clean(); return $data->tplData["NAV_LANG"]; }; if (!isset($categories)) $categories = $data->db->select("kategorie{$lang}", "*", NULL, "WHERE `aktywny` = 1"); $data->tplData["NAV_MAIN"] = function() use (&$data, $menu, $menuTree, $categories, $lang) { return Utils::renderMenuTree($menu, $menuTree, [], [ "categoriesTree" => function() use (&$data, $categories) { return ""; }, "itemHTML" => function($list, $isParent, $menuKey) use ($data) { $hasChildren = Utils::hasChildren($list, $menuKey, ["active" => "pokaz"]); if ($hasChildren === true) $hasChildren = " class=\"dropdown corner-arrow bottom right\""; return "<li{$hasChildren}><a {#itemActive#}href=\"{%link%}\">{%nazwa%}</a>{{listHTML}}" . ($menuKey == 5 ? "{#categoriesTree#}" : "") . "</li>"; }, "itemActive" => function($list, $isParent, $menuKey) use ($data) { if (strtolower($list[$menuKey]["nazwa"]) == "start" && $data->requestUri == "") return "class=\"active\""; if ($menuKey == $data->currentMenu["id"]) return "class=\"active\""; $found = false; $id = $data->currentMenu["id"]; while(isset($list[$id])) { if ($menuKey == $id) { $found = true; break; } $id = $list[$id]["rodzic"]; } if ($found === true) return "class=\"active\""; return ""; } ]); }; $data->tplData["OUR_CLIENTS"] = <<<'HTML' <div class="container container--default footer-clients">{%TEXT_5%} </div> HTML; $data->tplData["REGENERATE_BREADCRUMBS"] = function() use (&$data) { ob_start(); ?> <a class="breadcrumbs__home" href="{%STATIC_ROOT%}" title="{%TEXT_HOMEPAGE%}">Home</a><?php array_shift($data->bread); foreach ($data->bread as $breadKey => $bread) { ?> <span class="breadcrumbs__separator"> / </span> <?php if ($breadKey != count($data->bread) - 1) { ?><a class="breadcrumbs__item" href="{%STATIC_ROOT%}<?php echo $bread["link"]; ?>" title="<?php echo $bread["nazwa"]; ?>"><?php echo $bread["nazwa"]; ?></a><?php } else echo "<span class=\"breadcrumbs__item\">{$bread['nazwa']}</span>"; } $data->tplData["BREADCRUMBS"] = ob_get_clean(); }; $data->tplData["REGENERATE_BREADCRUMBS"](); $data->tplData["CATEGORIES_TREE"] = function() use (&$data, $lang, $categories, $menu) { $queue = []; $data->categories = $tmp = isset($categories) && count($categories) > 0 ? $categories : $data->db->select("kategorie{$lang}", "*", NULL, "WHERE `aktywny` = 1"); foreach ($tmp as $t) { $categories[$t['id']] = $t; if (!isset($categories[$t['id']]['poziom'])) $categories[$t['id']]['poziom'] = 1; if (!isset($categories[$t['id']]['dzieci'])) $categories[$t['id']]['dzieci'] = []; if (!isset($categories[$t['rodzic']])) $categories[$t['rodzic']] = []; if (!isset($categories[$t['rodzic']]['dzieci'])) $categories[$t['rodzic']]['dzieci'] = []; if ($t['rodzic'] == 0) $queue[] = &$categories[$t['id']]; else { $categories[$t['rodzic']]['dzieci'][] = &$categories[$t['id']]; } } $tmp = []; foreach ($data->categories as $t) $tmp[$t['id']] = $t; $data->categories = $tmp; $catLink = $menu[5]["link"]; ob_start(); $r = function(&$arr, $level = 1) use (&$r, $catLink, &$data) { echo "<ul>"; usort($arr, function($a, $b) { $order = 1; $orderColumn = "kol"; return ($a[$orderColumn] < $b[$orderColumn] ? -$order : $order); }); foreach ($arr as &$a) { if (isset($a["flink"]) && $a["flink"] != "") $aLink = $a["flink"]; else $aLink = "{$catLink}/{$a['id']}-" . Utils::makeLink(mb_strtolower($a["nazwa"])); $liClass = []; $aClass = []; $dropdown = (isset($a["dzieci"]) && gettype($a["dzieci"]) == "array" && count($a["dzieci"]) > 0); if ($dropdown === true) { $liClass[] = "dropdown"; $aClass[] = "corner-arrow bottom right"; } $found = false; foreach ($data->bread as $breadItem) { if ($breadItem["id"] == $a["id"]) { $found = true; break; } } if ($found !== false) { $liClass[] = "expanded"; $aClass[] = "active"; } $liClass = implode(" ", $liClass); if ($liClass != "") $liClass = " class=\"{$liClass}\""; $aClass = implode(" ", $aClass); if ($aClass != "") $aClass = " class=\"{$aClass}\""; echo "<li{$liClass}><a{$aClass} href=\"{%STATIC_ROOT%}{$aLink}\" title=\"{$a['nazwa']}\">{$a['nazwa']}</a>"; $a["poziom"] = $level; if (isset($a["dzieci"]) && gettype($a["dzieci"]) == "array" && count($a["dzieci"]) > 0) $r($a["dzieci"], $level + 1); echo "</li>"; } echo "</ul>"; }; $r($queue); echo "</li>"; $data->tplData["CATEGORIES_TREE"] = ob_get_clean(); return $data->tplData["CATEGORIES_TREE"]; }; // UŻYTECZNE FUNKCJE DLA UŻYTKOWNIKA CMS $data->tplData["CLEAR_PHONE_NUMBER"] = function($str) { return preg_replace("/(?<!^)+[^0-9+]/", "", $str); };
[+]
..
[-] tplData.php
[edit]
[-] routes.php
[edit]