console.log('legacy Widget'); (function ($, document) { function aksrt__(key) { var map = window.aksrt_widget_set_var && window.aksrt_widget_set_var.i18n; if (map && Object.prototype.hasOwnProperty.call(map, key)) { return map[key]; } return key; } /** 带图片上传的小工具 repeater 行(幻灯片 / 友情链接等) */ function buildMediaRepeaterRow(labelPrefix, index, nameAttr, labels) { var i1 = index + 1; var titleLabel = labelPrefix + i1 + (labels.title || '-标题:'); var decLabel = labelPrefix + i1 + (labels.dec || '-简介'); var hrefLabel = labelPrefix + i1 + (labels.href || '-链接'); var linkLabel = labelPrefix + i1 + (labels.link || '-图片'); return ( '
' ); } /** 消息 repeater 行 */ function buildNoticeRepeaterRow(index, nameAttr) { var i1 = index + 1; return ( '' ); } /** WIE:导入模式单选 HTML */ function getImportModeHtml(radioName, replaceSpanClass, appendSpanClass) { return ( '' + (aksrt__('reloadPage') || '刷新页面') + '
' ); } /** * WIE:渲染导入成功/失败结果 * @param {jQuery} $result * @param {object} res - WP ajax 响应 * @param {object} [opts] * @param {string} [opts.failKey] * @param {boolean} [opts.autoReload] * @param {Function} [opts.onSuccess] */ function renderImportResult($result, res, opts) { opts = opts || {}; var failKey = opts.failKey || 'admin_import_failed'; clearWieResult($result); if (res.success && res.data) { var reloadBtn = getReloadBtnHtml(); var lines = [res.data.message || aksrt__('admin_import_success')]; if (res.data.warnings && res.data.warnings.length) { lines = lines.concat(res.data.warnings); $result.addClass('is-warn').html(lines.join('' + '' + '' + '' + '
', onInit: function ($modal) { $modal.find('.aksrt-wie-modal__copy').on('click', function () { var ta = $modal.find('.aksrt-wie-modal__textarea')[0]; if (!ta) { return; } ta.select(); ta.setSelectionRange(0, ta.value.length); try { document.execCommand('copy'); $(this).text(aksrt__('copyDone')); } catch (err) { alert(aksrt__('copyFail')); } }); $modal.find('.aksrt-wie-modal__submit').on('click', doImportSubmit); }, }); var tplModal = createWieModal({ id: 'aksrt-wie-template-modal', extraClass: 'aksrt-wie-template-layer', closeAttr: 'data-aksrt-wie-tpl-close', closeBtnClass: 'aksrt-wie-tpl-close', cancelSelector: '.aksrt-wie-template-cancel', resultExtraClass: 'aksrt-wie-template-result', importMode: { replaceSelector: '.aksrt-wie-tpl-txt-replace', appendSelector: '.aksrt-wie-tpl-txt-append', }, bodyHtml: '' + '' + '' + '' + '' + '
', onInit: function ($modal) { $modal.find('.aksrt-wie-template-head-title').text(aksrt__('templateModalTitle')); $modal.find('.aksrt-wie-template-head-hint').html(aksrt__('templateHint')); $modal.find('.aksrt-wie-template-submit').text(aksrt__('templateSubmit')); $modal.find('.aksrt-wie-template-cancel').text(aksrt__('close')); var $tplDialog = $modal.find('.aksrt-wie-modal__dialog'); $modal.find('.aksrt-wie-template-submit').on('click', doTemplateImportSubmit); $tplDialog.on('click', '.aksrt-wie-template-item-expand', function (e) { e.preventDefault(); e.stopPropagation(); var $btn = $(this); var expanded = $btn.hasClass('is-expanded'); var $item = $btn.closest('.aksrt-wie-template-item'); var $mods = $item.find('.aksrt-wie-template-item-modules'); if (expanded) { $btn.removeClass('is-expanded').attr('aria-expanded', 'false'); $btn.attr('aria-label', aksrt__('templateExpandModules')); $mods.hide(); } else { $btn.addClass('is-expanded').attr('aria-expanded', 'true'); $btn.attr('aria-label', aksrt__('templateCollapseModules')); $mods.show(); } }); }, }); function setModeUi(mode) { var $modal = ioModal.$el(); var $copy = $modal.find('.aksrt-wie-modal__copy'); var $sub = $modal.find('.aksrt-wie-modal__submit'); if (mode === 'export') { $copy.show().text(aksrt__('copy')); $sub.hide(); $modal.find('.aksrt-wie-modal__import-mode').hide(); } else { $copy.hide(); $sub.show().text(aksrt__('submitImport')).prop('disabled', false); $modal.find('.aksrt-wie-modal__import-mode').show(); } $modal.find('.aksrt-wie-modal__cancel').text(aksrt__('close')); } function openModal(mode, sidebarId) { state.mode = mode; state.sidebarId = sidebarId; var $modal = ioModal.ensure(); clearWieResult(ioModal.$result()); $modal .find('.aksrt-wie-modal__textarea') .prop('readonly', mode === 'export') .val(''); if (mode === 'export') { $modal.find('.aksrt-wie-modal__title').text(aksrt__('exportTitle')); $modal.find('.aksrt-wie-modal__hint').text(aksrt__('exportHint')); setModeUi('export'); fetchExport(); } else { $modal.find('.aksrt-wie-modal__title').text(aksrt__('importTitle')); $modal.find('.aksrt-wie-modal__hint').text(aksrt__('importHint')); ioModal.setImportModeDefault('aksrt-wie-import-mode', 'append'); setModeUi('import'); } ioModal.open(); } function fetchExport() { var $modal = ioModal.$el(); var $ta = $modal.find('.aksrt-wie-modal__textarea'); $ta.val(aksrt__('loadingExport')); wiePost(_zib, 'aksrt_wie_export_sidebar', { sidebar_id: state.sidebarId, }) .done(function (res) { if (res.success && res.data && res.data.json_text) { $ta.val(res.data.json_text); } else { $ta.val(''); showWieError(ioModal.$result(), getWieMessage(res, 'admin_export_failed')); } }) .fail(function () { $ta.val(''); showNetworkError(ioModal.$result()); }); } function doImportSubmit() { var $modal = ioModal.$el(); var importMode = $modal.find('input[name="aksrt-wie-import-mode"]:checked').val() || 'replace'; var confirmMsg = importMode === 'append' ? aksrt__('confirmImportAppend') || aksrt__('confirmImport') : aksrt__('confirmImportReplace') || aksrt__('confirmImport'); if (!window.confirm(confirmMsg)) { return; } var raw = $.trim($modal.find('.aksrt-wie-modal__textarea').val()); if (!raw) { showWieError(ioModal.$result(), aksrt__('admin_paste_json_first')); return; } var $sub = $modal.find('.aksrt-wie-modal__submit'); withButtonLoading($sub, aksrt__('loadingImport'), aksrt__('submitImport'), function () { return wiePost(_zib, 'aksrt_wie_import_sidebar', { sidebar_id: state.sidebarId, json: raw, import_mode: importMode, }) .done(function (res) { if (res.success && res.data) { $modal.find('.aksrt-wie-modal__textarea').val(''); } renderImportResult(ioModal.$result(), res); }) .fail(function () { showNetworkError(ioModal.$result()); }); }); } function openTemplatePicker(sidebarId) { tplState.sidebarId = sidebarId; var $modal = tplModal.ensure(); tplModal.setImportModeDefault('aksrt-wie-template-import-mode', 'append'); var $list = $modal.find('.aksrt-wie-template-list').empty(); var $st = $modal.find('.aksrt-wie-template-list-status').text(aksrt__('templateLoadingList')); tplModal.open(); wiePost(_zib, 'aksrt_wie_list_templates', {}) .done(function (res) { $st.text(''); if (!res.success || !res.data || !res.data.templates || !res.data.templates.length) { $list.empty(); $st.text(aksrt__('templateEmpty')); return; } res.data.templates.forEach(function (t) { appendTemplateListItem($list, t); }); }) .fail(function () { $st.text(aksrt__('admin_network_error')); }); } function doTemplateImportSubmit() { var $modal = tplModal.$el(); var tid = $modal.find('input[name="aksrt-wie-template-id"]:checked').val(); if (!tid) { alert(aksrt__('templatePick')); return; } var importMode = $modal.find('input[name="aksrt-wie-template-import-mode"]:checked').val() || 'replace'; var titleText = $.trim( $modal .find('input[name="aksrt-wie-template-id"]:checked') .closest('.aksrt-wie-template-item') .find('.aksrt-wie-template-item-title') .first() .text() ) || tid; var modeLabel = importMode === 'append' ? aksrt__('importModeAppend') || '追加' : aksrt__('importModeReplace') || '覆盖'; var cmsg = (aksrt__('confirmTemplate') || '确定导入?').replace('{title}', titleText).replace('{mode}', modeLabel); if (!window.confirm(cmsg)) { return; } var $sub = $modal.find('.aksrt-wie-template-submit'); withButtonLoading($sub, aksrt__('loadingImport'), aksrt__('templateSubmit'), function () { return wiePost(_zib, 'aksrt_wie_import_template', { sidebar_id: tplState.sidebarId, template_id: tid, import_mode: importMode, }) .done(function (res) { renderImportResult(tplModal.$result(), res, { autoReload: true }); }) .fail(function () { showNetworkError(tplModal.$result()); }); }); } function injectToolbarAfter($anchor, sidebarId) { if (!$anchor || !$anchor.length || !sidebarId) { return; } if ($anchor.next('.aksrt-wie-toolbar').length) { return; } var $tb = $( '' ); $tb.find('.aksrt-wie-btn-export').data('zibWieSid', sidebarId); $tb.find('.aksrt-wie-btn-import').data('zibWieSid', sidebarId); $tb.find('.aksrt-wie-btn-template').data('zibWieSid', sidebarId); $anchor.after($tb); } function scanWidgetsScreen() { $('.widgets-holder-wrap:not(#available-widgets):not(.inactive-sidebar):not(.is-wid-load)').each(function () { var $wrap = $(this); var $sort = $wrap.find('.widgets-sortables').first(); var sid = $sort.attr('id'); if (!sid) { return; } var $desc = $sort.find('.sidebar-description .description').first(); var $anchor = $desc.length ? $desc : $sort.find('.description').first(); $wrap.addClass('is-wid-load'); injectToolbarAfter($anchor, sid); }); } function scanCustomize() { $('.control-section-sidebar:not(.aksrt-is-load)').each(function () { var $sec = $(this); var accId = $sec.attr('id') || ''; var prefix = 'sub-accordion-section-sidebar-widgets-'; if (accId.indexOf(prefix) !== 0) { return; } var sid = accId.slice(prefix.length); if (!sid) { return; } $sec.addClass('aksrt-is-load'); var $desc = $sec.find('.section-meta .description').first(); var $anchor = $desc.length ? $desc : $sec.find('.accordion-section-title, .customize-section-title').first(); injectToolbarAfter($anchor, sid); }); $('.customize-control-widget_form:not(.aksrt-is-load)').each(function () { var $form = $(this); var $nav = $form.find('.widget-reorder-nav'); if ($nav.length) { var $delete = $('' + aksrt__('admin_remove_module') + ''); $form.find('.widget-reorder-nav').append($delete); $form.addClass('aksrt-is-load'); } }); } _body.on('click', '.aksrt-wie-btn_delete', function () { var $this = $(this); var $form = $this.closest('.customize-control-widget_form'); $form.find('.widget-control-remove').click(); }); _body.on('click', '.aksrt-wie-modal__reload', function () { window.location.reload(); }); _body.on('click', '.aksrt-wie-btn-export', function () { var sid = $(this).data('zibWieSid'); if (sid) { openModal('export', sid); } }); _body.on('click', '.aksrt-wie-btn-import', function () { var sid = $(this).data('zibWieSid'); if (sid) { openModal('import', sid); } }); _body.on('click', '.aksrt-wie-btn-template', function () { var sid = $(this).data('zibWieSid'); if (sid) { openTemplatePicker(sid); } }); if (_body.hasClass('widgets-php')) { scanWidgetsScreen(); } if (_body.hasClass('wp-customizer')) { if (typeof wp !== 'undefined' && wp.customize) { wp.customize.bind('ready', function () { setTimeout(scanCustomize, 300); }); } _body.on('click', '.control-panel-widgets .control-section-sidebar', function () { setTimeout(scanCustomize, 100); }); } })(); }); })(jQuery, document);