| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- async function upgradeDoc(docID, options)
- {
- const newData = await zui.fetchData(options.docFetcher, [{docID, version: 0}]);
- if(!newData || !newData.data) return false;
- const oldContent = newData.data.content;
- let content = '';
- if(options.type === 'html')
- {
- const snap = await zui.Editor.htmlToSnap(oldContent);
- if(!snap) return false;
- }
- else
- {
- try
- {
- content = await zui.Editor.convertToHtml(oldContent, undefined, options.downloadUrl);
- }
- catch(error)
- {
- console.warn('Convert doc to html failed:', error);
- }
- }
- const docData = {content};
- let result;
- await $.post(zui.formatString(options.migrateUrl, {docID: docID}), docData, (res) =>
- {
- result = res.result === 'success' ? true : res.message;
- }, 'json');
- return result;
- }
- async function upgradeWikis(idList, options)
- {
- let result;
- await $.post(options.wikiUrl, {wikis: idList.join(',')}, (res) =>
- {
- result = res.result === 'success' ? true : res.message;
- }, 'json');
- return result;
- }
- async function upgradeDocs(idList, options)
- {
- await zui.Editor.loadModule();
- const {
- onProgress,
- wikiUrl = $.createLink('upgrade', 'ajaxUpgradeWikis'),
- migrateUrl = $.createLink('upgrade', 'ajaxUpgradeDoc', 'docID={docID}'),
- docFetcher = $.createLink('upgrade', 'ajaxUpgradeDoc', 'docID={docID}'),
- downloadUrl = $.createLink('file', 'ajaxQuery', 'fileID={gid}'),
- } = options || {};
- const migrateOptions =
- {
- migrateUrl: migrateUrl,
- docFetcher: docFetcher,
- downloadUrl: downloadUrl,
- };
- let current = 0;
- const total = idList.doc.length + idList.html.length + idList.wiki.length;
- const types = ['doc', 'html'];
- for (const type of types)
- {
- for(const id of idList[type])
- {
- onProgress(current, total);
- await upgradeDoc(id, $.extend({type: type}, migrateOptions));
- await zui.delay(50);
- current++;
- }
- }
- if(idList.wiki.length)
- {
- await upgradeWikis(idList.wiki, {wikiUrl: wikiUrl});
- current += idList.wiki.length;
- }
- onProgress(current, total);
- return idList;
- }
- window.startUpgradeDocs = function(event, idList, upgradingDocsText, nextText)
- {
- const $btn = $('#upgradeDocsBtn');
- if($btn.hasClass('is-finished')) return;
- event.preventDefault();
- const $progressBar = $('#upgradeDocsProgress').addClass('active').find('.progress-bar');
- $btn.attr('disabled', 'disabled').addClass('disabled').removeClass('primary').find('.text').text(upgradingDocsText);
- upgradeDocs(idList,
- {
- onProgress: (current, total) =>
- {
- $progressBar.css('width', (100 * current / total) + '%');
- $btn.find('.text').text(`${upgradingDocsText} (${current}/${total})`);
- }
- }).then(() =>
- {
- $btn.removeAttr('disabled').removeClass('disabled').addClass('primary is-finished').find('.text').text(nextText);
- $('#upgradeDocsProgress').removeClass('active')
- });
- };
|