add preview support for wiki editor when disable simpleMDE (#14757)

Signed-off-by: a1012112796 <1012112796@qq.com>
release/v1.15
a1012112796 2021-03-01 00:48:29 +08:00 committed by GitHub
parent dc081959db
commit 5de76965a1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 28 additions and 6 deletions

View File

@ -16,12 +16,14 @@
<div class="field {{if .Err_Title}}error{{end}}"> <div class="field {{if .Err_Title}}error{{end}}">
<input name="title" value="{{.title}}" autofocus required> <input name="title" value="{{.title}}" autofocus required>
</div> </div>
<div class="ui top attached tabular menu previewtabs"> <div class="ui top attached tabular menu previewtabs" data-write="write" data-preview="preview">
<a class="active item" data-tab="write">{{.i18n.Tr "write"}}</a> <a class="active item" data-tab="write">{{.i18n.Tr "write"}}</a>
<a class="item" data-tab="preview">{{.i18n.Tr "preview"}}</a> <a class="item" data-tab="preview" data-url="{{$.Repository.APIURL}}/markdown" data-context="{{$.RepoLink}}">{{$.i18n.Tr "preview"}}</a>
</div> </div>
<div class="field"> <div class="field content" data-loading="{{.i18n.Tr "loading"}}">
<textarea class="js-quick-submit" id="edit_area" name="content" data-id="wiki-{{.title}}" data-url="{{.Repository.APIURL}}/markdown" data-context="{{.RepoLink}}" required>{{if .PageIsWikiEdit}}{{.content}}{{else}}{{.i18n.Tr "repo.wiki.welcome"}}{{end}}</textarea> <div class="ui bottom active tab" data-tab="write">
<textarea class="js-quick-submit" id="edit_area" name="content" data-id="wiki-{{.title}}" data-url="{{.Repository.APIURL}}/markdown" data-context="{{.RepoLink}}" required>{{if .PageIsWikiEdit}}{{.content}}{{else}}{{.i18n.Tr "repo.wiki.welcome"}}{{end}}</textarea>
</div>
</div> </div>
<div class="field"> <div class="field">
<input name="message" placeholder="{{.i18n.Tr "repo.wiki.default_commit_message"}}"> <input name="message" placeholder="{{.i18n.Tr "repo.wiki.default_commit_message"}}">

View File

@ -1414,6 +1414,7 @@ function initWikiForm() {
const $editArea = $('.repository.wiki textarea#edit_area'); const $editArea = $('.repository.wiki textarea#edit_area');
let sideBySideChanges = 0; let sideBySideChanges = 0;
let sideBySideTimeout = null; let sideBySideTimeout = null;
let hasSimpleMDE = true;
if ($editArea.length > 0) { if ($editArea.length > 0) {
const simplemde = new SimpleMDE({ const simplemde = new SimpleMDE({
autoDownloadFontAwesome: false, autoDownloadFontAwesome: false,
@ -1510,6 +1511,12 @@ function initWikiForm() {
name: 'revert-to-textarea', name: 'revert-to-textarea',
action(e) { action(e) {
e.toTextArea(); e.toTextArea();
hasSimpleMDE = false;
const $form = $('.repository.wiki.new .ui.form');
const $root = $form.find('.field.content');
const loading = $root.data('loading');
$root.append(`<div class="ui bottom tab markdown" data-tab="preview">${loading}</div>`);
initCommentPreviewTab($form);
}, },
className: 'fa fa-file', className: 'fa fa-file',
title: 'Revert to simple textarea', title: 'Revert to simple textarea',
@ -1524,15 +1531,26 @@ function initWikiForm() {
const $toolbar = $('.editor-toolbar'); const $toolbar = $('.editor-toolbar');
const $bPreview = $('.editor-toolbar button.preview'); const $bPreview = $('.editor-toolbar button.preview');
const $bSideBySide = $('.editor-toolbar a.fa-columns'); const $bSideBySide = $('.editor-toolbar a.fa-columns');
$bEdit.on('click', () => { $bEdit.on('click', (e) => {
if (!hasSimpleMDE) {
return false;
}
e.stopImmediatePropagation();
if ($toolbar.hasClass('disabled-for-preview')) { if ($toolbar.hasClass('disabled-for-preview')) {
$bPreview.trigger('click'); $bPreview.trigger('click');
} }
return false;
}); });
$bPrev.on('click', () => { $bPrev.on('click', (e) => {
if (!hasSimpleMDE) {
return false;
}
e.stopImmediatePropagation();
if (!$toolbar.hasClass('disabled-for-preview')) { if (!$toolbar.hasClass('disabled-for-preview')) {
$bPreview.trigger('click'); $bPreview.trigger('click');
} }
return false;
}); });
$bPreview.on('click', () => { $bPreview.on('click', () => {
setTimeout(() => { setTimeout(() => {
@ -1552,6 +1570,8 @@ function initWikiForm() {
} }
} }
}, 0); }, 0);
return false;
}); });
$bSideBySide.on('click', () => { $bSideBySide.on('click', () => {
sideBySideChanges = 10; sideBySideChanges = 10;