✏️ 正在编辑: consult-schedule-admin.js
路径:
/home/h359620/public_html/wp-content/themes/datis/inc/assets/js/consult-schedule-admin.js
提示:
您可以编辑任何文件(包括二进制文件),但请注意不当修改可能导致文件损坏。
(function ($) { "use strict"; function hasJalaliMoment() { try { return !!(window.moment && window.moment.fn && typeof window.moment.fn.jYear === "function"); } catch (e) { return false; } } function formatGregorianYMD(dateObj) { try { if (window.moment) return moment(dateObj).format("YYYY-MM-DD"); } catch (e) {} var d = (dateObj instanceof Date) ? dateObj : new Date(dateObj); if (isNaN(d.getTime())) return ""; var y = d.getFullYear(); var m = String(d.getMonth() + 1).padStart(2, "0"); var day = String(d.getDate()).padStart(2, "0"); return y + "-" + m + "-" + day; } function formatDisplay(dateObj, mode) { if (!dateObj) return ""; if (mode === "jalali") { // Prefer moment-jalaali if it is actually patched if (window.moment) { try { if (typeof window.moment.loadPersian === "function") { window.moment.loadPersian({ usePersianDigits: false }); } if (hasJalaliMoment()) { return moment(dateObj).format("jYYYY/jMM/jDD"); } } catch (e) {} } // Intl fallback (Persian calendar) try { var d = (dateObj instanceof Date) ? dateObj : new Date(dateObj); if (!isNaN(d.getTime())) { return new Intl.DateTimeFormat("fa-IR-u-ca-persian", { year: "numeric", month: "2-digit", day: "2-digit" }).format(d).replace(/-/g, "/"); } } catch (e) {} return formatGregorianYMD(dateObj); } return formatGregorianYMD(dateObj); } function parseGregorianYMD(ymd) { ymd = (ymd || "").trim(); if (!ymd) return null; var m = /^(\d{4})-(\d{2})-(\d{2})$/.exec(ymd); if (!m) return null; var y = parseInt(m[1], 10); var mo = parseInt(m[2], 10) - 1; var d = parseInt(m[3], 10); var dt = new Date(y, mo, d); return isNaN(dt.getTime()) ? null : dt; } function getFieldContainer($input) { var $c = $input.closest("div"); return $c.length ? $c : $input.parent(); } function applyOverrideVisibility($group) { var type = ($group.find(".datis-cs-ov-type").val() || "closed").toString(); var $startField = getFieldContainer($group.find(".datis-cs-ov-start")); var $endField = getFieldContainer($group.find(".datis-cs-ov-end")); var $capField = getFieldContainer($group.find(".datis-cs-ov-cap")); var $capdField = getFieldContainer($group.find(".datis-cs-ov-capday")); if (type === "closed") { $startField.hide(); $endField.hide(); $capField.hide(); $capdField.hide(); return; } if (type === "open_custom") { $startField.show(); $endField.show(); $capField.show(); $capdField.hide(); return; } if (type === "capacity_only") { $startField.hide(); $endField.hide(); $capField.hide(); $capdField.show(); return; } $startField.hide(); $endField.hide(); $capField.hide(); $capdField.hide(); } function initOverrideRows($context) { $context = $context || $(document); $context.find(".cmb-repeatable-grouping, .datis-repeater-item").each(function () { var $group = $(this); if ($group.find(".datis-cs-ov-type").length) { applyOverrideVisibility($group); $group.off("change.datisCS").on("change.datisCS", ".datis-cs-ov-type", function () { applyOverrideVisibility($group); }); } }); } function ensureDateDisplayInput($input) { var $display = $input.prev(".datis-cs-date-display"); if ($display.length) return $display; $display = $('<input type="text" class="datis-cs-date-display" readonly autocomplete="off" />'); $display.css({ width: "100%", maxWidth: "260px", cursor: "pointer" }); $input.before($display); // Hide stored field (Gregorian Y-m-d) $input.css({ position: "absolute", left: "-9999px", width: "1px", height: "1px" }); return $display; } function syncDisplayFromStored($display, storedGregorian, mode) { var dt = parseGregorianYMD(storedGregorian); if (!dt) { $display.val(""); return; } $display.val(formatDisplay(dt, mode)); } function initDatePickers($context) { $context = $context || $(document); var mode = (window.DATIS_CS_ADMIN && DATIS_CS_ADMIN.calendar) ? DATIS_CS_ADMIN.calendar : "gregorian"; mode = (mode === "jalali") ? "jalali" : "gregorian"; $context.find("input.datis-cs-date").each(function () { var $input = $(this); if ($input.data("datisInited")) return; $input.data("datisInited", true); $input.attr("autocomplete", "off").prop("readonly", true); var $display = ensureDateDisplayInput($input); // If a value exists in DB, show it as Jalali (if mode == jalali) syncDisplayFromStored($display, ($input.val() || "").trim(), mode); // ✅ BS5 picker: always Jalali UI, always Gregorian storage if (window.mds && typeof window.mds.MdsPersianDateTimePicker === "function") { new window.mds.MdsPersianDateTimePicker($display[0], { placement: "bottom", modalMode: false, enableTimePicker: false, // Picker UI: Jalali isGregorian: false, textFormat: "YYYY/MM/DD", dateFormat: "YYYY/MM/DD", onDayClick: function (setting) { try { if (setting && setting.selectedDate) { // Always store Gregorian YYYY-MM-DD var g = formatGregorianYMD(setting.selectedDate); $input.val(g).trigger("change"); // Display depends on mode (jalali recommended) var dt = parseGregorianYMD(g) || new Date(setting.selectedDate); $display.val(formatDisplay(dt, mode)); } } catch (e) { $input.val(""); $display.val(""); } } }); $display.off("click.datisCS").on("click.datisCS", function () { $display.trigger("focus"); }); return; } // Fallback: old jQuery plugin if (typeof $display.MdPersianDateTimePicker === "function") { $display.MdPersianDateTimePicker({ targetTextSelector: $display, targetDateSelector: $display, enableTimePicker: false, englishNumber: true, modalMode: false, isGregorian: (mode !== "jalali"), dateFormat: (mode !== "jalali") ? "YYYY-MM-DD" : "YYYY/MM/DD" }); return; } $display.prop("readonly", false); }); } $(function () { initOverrideRows($(document)); initDatePickers($(document)); // Re-init for rows added by our custom repeater (PHP metabox script triggers this) $(document).on("datis_cs_reinit", function (e, $row) { var $ctx = ($row && $row.length) ? $row : $(document); initOverrideRows($ctx); initDatePickers($ctx); }); // Backward compatibility if any old CMB2 events still fire $(document).on("cmb2_add_row cmb2_add_group_row", function (e, row) { var $row = row ? $(row) : $(document); initOverrideRows($row); initDatePickers($row); }); }); })(jQuery);
💾 保存文件
← 返回文件管理器