Changed internal parser selection value from integers to a string enum.

This commit is contained in:
flash 2025-02-08 17:51:18 +00:00
parent 4d53565139
commit d9f35594e7
32 changed files with 301 additions and 213 deletions
assets/misuzu.js

View file

@ -55,17 +55,16 @@ const MszForumEditor = function(form) {
uploadElemProgressText.textContent = '';
const insertTheLinkIntoTheBoxEx2 = () => {
const parserMode = parseInt(parserElem.value);
let insertText = location.protocol + fileInfo.url;
if(parserMode == 1) { // bbcode
if(parserElem.value == 'bb') { // bbcode
if(fileInfo.isImage())
insertText = `[img]${fileInfo.url}[/img]`;
else if(fileInfo.isAudio())
insertText = `[audio]${fileInfo.url}[/audio]`;
else if(fileInfo.isVideo())
insertText = `[video]${fileInfo.url}[/video]`;
} else if(parserMode == 2) { // markdown
} else if(parserElem.value == 'md') { // markdown
if(fileInfo.isMedia())
insertText = `![](${fileInfo.url})`;
}
@ -181,13 +180,16 @@ const MszForumEditor = function(form) {
const renderPreview = async (parser, text) => {
if(typeof text !== 'string')
return '';
if(typeof parser !== 'string')
return '';
const formData = new FormData;
formData.append('post[mode]', 'preview');
formData.append('post[text]', text);
formData.append('post[parser]', parseInt(parser));
formData.append('preview', '1');
formData.append('text', text);
formData.append('format', parser);
return (await $xhr.post('/forum/posting.php', { authed: true }, formData)).body;
const { body } = await $xhr.post('/forum/posting.php', { authed: true }, formData);
return body;
};
const previewBtn = <button class="input__button" type="button" value="preview">Preview</button>;
@ -200,8 +202,8 @@ const MszForumEditor = function(form) {
modeElem.textContent = modeElem.dataset.original;
modeElem.dataset.original = null;
} else {
const postText = textElem.value,
postParser = parseInt(parserElem.value);
const postText = textElem.value;
const postParser = parserElem.value;
if(lastPostText === postText && lastPostParser === postParser) {
previewElem.removeAttribute('hidden');
@ -223,7 +225,7 @@ const MszForumEditor = function(form) {
MszShowMessageBox('Failed to render preview.');
})
.then(body => {
previewElem.classList.toggle('markdown', postParser === 2);
previewElem.classList.toggle('markdown', postParser === 'md');
lastPostText = postText;
lastPostParser = postParser;
@ -248,28 +250,27 @@ const MszForumEditor = function(form) {
switchButtons(parserElem.value);
parserElem.addEventListener('change', () => {
const postParser = parseInt(parserElem.value);
switchButtons(postParser);
switchButtons(parserElem.value);
if(previewElem.hasAttribute('hidden'))
return;
// dunno if this would even be possible, but ech
if(postParser === lastPostParser)
if(parserElem.value === lastPostParser)
return;
parserElem.setAttribute('disabled', 'disabled');
previewBtn.setAttribute('disabled', 'disabled');
previewBtn.classList.add('input__button--busy');
renderPreview(postParser, lastPostText)
renderPreview(parserElem.value, lastPostText)
.catch(() => {
previewElem.innerHTML = '';
MszShowMessageBox('Failed to render preview.');
})
.then(body => {
previewElem.classList.add('markdown', postParser === 2);
lastPostParser = postParser;
previewElem.classList.add('markdown', parserElem.value === 'md');
lastPostParser = parserElem.value;
previewElem.innerHTML = body;
MszEmbed.handle($queryAll('.js-msz-embed-media'));

View file

@ -29,11 +29,11 @@ const MszMessages = () => {
return false;
};
const msgsCreate = async (title, text, parser, draft, recipient, replyTo) => {
const msgsCreate = async (title, text, format, draft, recipient, replyTo) => {
const formData = new FormData;
formData.append('title', title);
formData.append('body', text);
formData.append('parser', parser);
formData.append('format', format);
formData.append('draft', draft);
formData.append('recipient', recipient);
formData.append('reply', replyTo);
@ -45,11 +45,11 @@ const MszMessages = () => {
return body;
};
const msgsUpdate = async (messageId, title, text, parser, draft) => {
const msgsUpdate = async (messageId, title, text, format, draft) => {
const formData = new FormData;
formData.append('title', title);
formData.append('body', text);
formData.append('parser', parser);
formData.append('format', format);
formData.append('draft', draft);
const { body } = await $xhr.post(`/messages/${encodeURIComponent(messageId)}`, { type: 'json', csrf: true }, formData);
@ -139,14 +139,14 @@ const MszMessages = () => {
form.message,
form.title,
form.body,
form.parser,
form.format,
form.draft
);
} else {
result = await msgsCreate(
form.title,
form.body,
form.parser,
form.format,
form.draft,
form.recipient,
form.reply || ''

View file

@ -36,12 +36,9 @@ const MszParsing = (() => {
];
const getTagsFor = parser => {
if(typeof parser !== 'number')
parser = parseInt(parser);
if(parser === 1)
if(parser === 'bb')
return bbTags;
if(parser === 2)
if(parser === 'md')
return mdTags;
return [];