| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- /**
- * 升级文档模板内容。
- * Upgrade doc template content.
- *
- * @param int $docID
- * @param object $options
- * @access public
- * @return bool|string
- */
- async function upgradeTemplateContent(docID, options)
- {
- const template = await zui.fetchData(options.processUrl, [{docID}]);
- if(!template || !template.data) return false;
- const oldContent = template.data.content;
- const snap = await zui.Editor.htmlToSnap(oldContent);
- if(!snap) return false;
- let result;
- await $.post(zui.formatString(options.processUrl, {docID: docID}), {type: 'html'}, (res) =>
- {
- result = res.result === 'success' ? true : res.message;
- }, 'json');
- return result;
- }
- /**
- * 处理wiki类型的文档模板。
- * Process templates of wiki.
- *
- * @param object $idList
- * @access public
- * @return object
- */
- async function upgradeWikiTemplates(idList)
- {
- let result;
- await $.post($.createLink('upgrade', 'ajaxUpgradeWikiTemplates'), {wikis: idList.join(',')}, (res) =>
- {
- result = res.result === 'success' ? true : res.message;
- }, 'json');
- return result;
- }
- /**
- * 依次处理文档模板内容。
- * Process doc template content.
- *
- * @param object $idList
- * @param object $options
- * @access public
- * @return object
- */
- async function upgradeDocTemplates(idList, options)
- {
- await zui.Editor.loadModule();
- const {onProgress} = options || {};
- let current = 0;
- const total = idList.html.length + idList.wiki.length;
- for(const id of idList['html'])
- {
- await upgradeTemplateContent(id, {processUrl: $.createLink('upgrade', 'ajaxUpgradeDocTemplate', 'docID={docID}')});
- await zui.delay(50);
- current++;
- onProgress(current, total);
- }
- if(idList.wiki.length)
- {
- await upgradeWikiTemplates(idList.wiki);
- current += idList.wiki.length;
- }
- onProgress(current, total);
- return idList;
- }
- /**
- * 开始升级文档模板。
- * Start upgrade doc templates.
- *
- * @param object $event
- * @param object $idList
- * @param string $upgradingDocTemplatesText
- * @param string $nextText
- * @access public
- * @return void
- */
- window.startUpgradeDocTemplates = function(event, idList, upgradingDocTemplatesText, nextText)
- {
- const $btn = $('#upgradeDocTemplatesBtn');
- if($btn.hasClass('is-finished')) return;
- event.preventDefault();
- const $progressBar = $('#upgradeDocTemplatesProgress').addClass('active').find('.progress-bar');
- $btn.attr('disabled', 'disabled').addClass('disabled').removeClass('primary').find('.text').text(upgradingDocTemplatesText);
- upgradeDocTemplates(idList,
- {
- onProgress: (current, total) =>
- {
- $progressBar.css('width', (100 * current / total) + '%');
- $btn.find('.text').text(`${upgradingDocTemplatesText} (${current}/${total})`);
- }
- }).then(() =>
- {
- $btn.removeAttr('disabled').removeClass('disabled').addClass('primary is-finished').find('.text').text(nextText);
- $('#upgradeDocTemplatesProgress').removeClass('active')
- });
- };
|