/** * Layout-2 navbar search — zibll remote-box + search-input panel. * Loads menu_search panel (.dropdown-menu.hover-show-con > .search-input), * fills guest history from localStorage, live suggestions optional. */ (function () { "use strict"; var HISTORY_KEY = "aksrt-mobile-search-history"; function ajaxUrl() { return (window.aksrtData && aksrtData.ajaxUrl) || ""; } function nonce() { return (window.aksrtData && aksrtData.nonce) || ""; } function readLocalHistory() { try { var raw = localStorage.getItem(HISTORY_KEY); var list = raw ? JSON.parse(raw) : []; if (!Array.isArray(list)) return []; return list .map(function (it) { if (typeof it === "string") return it; return it && it.keyword ? String(it.keyword) : ""; }) .filter(Boolean) .slice(0, 10); } catch (e) { return []; } } function writeLocalHistory(keywords) { try { var items = (keywords || []).slice(0, 10).map(function (k) { return { keyword: k, type: "post" }; }); localStorage.setItem(HISTORY_KEY, JSON.stringify(items)); } catch (e) {} } function keywordChips(list) { return (list || []) .map(function (kw) { return ( '' + kw + " " ); }) .join(""); } function loadRemote(box) { if (!box || box.getAttribute("data-loaded") === "1") return; var url = box.getAttribute("remote-box") || box.getAttribute("data-url"); if (!url) return; box.setAttribute("data-loaded", "1"); var sep = url.indexOf("?") >= 0 ? "&" : "?"; if (nonce()) { url = url + sep + "nonce=" + encodeURIComponent(nonce()); } fetch(url, { credentials: "same-origin" }) .then(function (r) { return r.text(); }) .then(function (html) { if (!html || html === "0") { box.innerHTML = ""; return; } var parent = box.parentNode; box.outerHTML = html; var form = parent ? parent.closest("form") : document.querySelector('form[data-aksrt-search-form="inline"]'); if (form) enhancePanel(form); initSwiperScroll(form || document); }) .catch(function () { box.removeAttribute("data-loaded"); }); } function initSwiperScroll(root) { if (!root || typeof window.Swiper === "undefined") return; root.querySelectorAll(".relates-thumb .swiper-container:not(.swiper-initialized)").forEach(function (el) { try { new window.Swiper(el, { slidesPerView: "auto", freeMode: true, navigation: { nextEl: el.querySelector(".swiper-button-next"), prevEl: el.querySelector(".swiper-button-prev"), }, }); } catch (e) {} }); } function enhancePanel(form) { if (!form || form._aksrtMenuSearchEnhanced) return; form._aksrtMenuSearchEnhanced = 1; var input = form.querySelector(".search-input, input[name='s']"); var histList = form.querySelector(".history-search-list, .history-search > div:last-child"); // Guest local history → panel. if (histList && !(window.aksrtData && aksrtData.isLoggedIn)) { var local = readLocalHistory(); if (local.length) { histList.innerHTML = keywordChips(local); } } // Clear history (zibll .trash-history-search). form.querySelectorAll(".trash-history-search, [data-aksrt-clear-menu-history]").forEach(function (clearBtn) { if (clearBtn._bound) return; clearBtn._bound = 1; clearBtn.addEventListener("click", function (e) { e.preventDefault(); writeLocalHistory([]); if (histList) { histList.innerHTML = '暂无历史'; } }); }); // Type chips inside panel (if any). form.querySelectorAll("[data-for='type'], [data-aksrt-menu-search-type]").forEach(function (chip) { chip.addEventListener("click", function (e) { e.preventDefault(); var v = chip.getAttribute("data-value") || chip.getAttribute("data-aksrt-menu-search-type") || "post"; var tin = form.querySelector('input[name="aksrt_search_type"], input[name="type"]'); if (tin) tin.value = v; form.querySelectorAll("[data-for='type'], [data-aksrt-menu-search-type]").forEach(function (c) { c.classList.toggle("active", c === chip); }); }); }); var suggestMount = form.querySelector("[data-aksrt-menu-suggest]"); var timer = null; var searchConfig = (window.aksrtData && aksrtData.search) || {}; function typeValue() { var t = form.querySelector('input[name="aksrt_search_type"], input[name="type"]'); return (t && t.value) || searchConfig.defaultType || "post"; } function requestSuggest(q) { if (!suggestMount || !ajaxUrl() || q.length < 2) { if (suggestMount) { suggestMount.hidden = true; suggestMount.innerHTML = ""; } return; } var xhr = new XMLHttpRequest(); xhr.open("POST", ajaxUrl(), true); xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8"); xhr.onload = function () { if (xhr.status < 200 || xhr.status >= 300) return; try { var json = JSON.parse(xhr.responseText); var items = (json.success && json.data && json.data.items) || []; if (!items.length) { suggestMount.hidden = true; suggestMount.innerHTML = ""; return; } var html = '