@@ -52,18 +52,19 @@
52 52 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
53 53 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
opt.hiddenFields: an optional list of input elements to
54 54 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
incorporate into the form for requests which request the
55 55 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
preview or save the post.
56 56 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
57 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- TODO:
58 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
59 57 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
opt.inReplyTo=uuid: if this is a response to a post, this
60 58 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
is the full forum post uuid of the being-replied-to post.
61 59 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
62 60 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
opt.edit=artifactObject: if this is an edit of an existing
63 61 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
post, this is the full JSON-format artifact of the forum post
64 62 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
the being-edited post, as returned by /ajax/artifact.json.
63 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
64 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ opt.status: optional current status tag value for opt.edit,
65 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if known. This is used for pre-selecting a status value.
65 66 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
66 67 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
constructor(opt){
67 68 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
opt = this.#opt = F.nu({
68 69 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
// todo: defaults once we determine the options
69 70 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
// inReplyTo: hash
@@ -109,11 +110,11 @@
109 110 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
{ /* Mimetype... */
110 111 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
e.mimetype.wrapper = D.addClass(D.div(), 'mimetype-wrapper');
111 112 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const sel = e.mimetype.select = D.addClass(D.select(), 'mimetype-select');
112 113 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
this.#toDisable.push(sel);
113 114 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
let i = 0;
114 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- D.option(sel, '', 'Markup format').disabled = true;
115 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ D.option(sel, '', '- Markup format -').disabled = true;
115 116 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(const [k,v] of Object.entries({
116 117 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
'text/x-markdown': 'Markdown',
117 118 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
'text/x-fossil-wiki': 'Fossil Wiki',
118 119 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
'text/plain': 'Plain text'
119 120 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
})) {
@@ -209,11 +210,12 @@
209 210 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
D.addClass(D.textarea(), 'editor'),
210 211 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
'placeholder',
211 212 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
'Your message to other forum-goers...'
212 213 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
);
213 214 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
e.tabEdit.append(e.editor);
214 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- e.tabEdit.dataset.tabLabel = 'Edit';
215 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ e.tabEdit.dataset.tabLabel = (opt.edit || !opt.inReplyTo)
216 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ? 'Edit' : 'Reply';
215 217 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
this.#tabs.addTab( e.tabEdit );
216 218 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
this.#tabs.switchToTab( e.tabEdit );
217 219 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( this.#draft ){
218 220 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
this.editorContent = this.#draft.content || opt.edit?.W || '';
219 221 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
e.editor.addEventListener(
@@ -247,11 +249,13 @@
247 249 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
248 250 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
this.#tabs.addTab(e.debug);
249 251 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
250 252 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
e.buttons.append(e.mimetype.wrapper);
251 253 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
252 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( 0 && F.config.forumStatuses?.length>0 ){
254 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( opt.edit
255 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && !opt.inReplyTo
256 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && F.config.forumStatuses?.length>0 ){
253 257 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Status selection. We probably don't _really_ want this in
254 258 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
the editor because people will open the editor, change the
255 259 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
status, and tap submit, resulting in a whole new, unedited
256 260 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
copy of the post, differing only in the new 'status' tag
257 261 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
added to it. */
@@ -448,10 +452,18 @@
448 452 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
D.append(
449 453 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
D.li(list),
450 454 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
D.attr(D.a(F.repoUrl('markup_help'), 'Markup styles'),
451 455 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
'target', '_new')
452 456 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
);
457 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( this.#e.status ){
458 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ D.append(
459 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ D.li(list),
460 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "Trip: to change just the status, use the widget which appears in ",
461 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "the post, not the editor. That will save only a single tag instead of ",
462 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "a new edit of the post."
463 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ );
464 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
453 465 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
eh.append(list);
454 466 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
455 467 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
456 468 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#initAttacherTab(){
457 469 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
this.#att = new F.Attacher({
@@ -585,11 +597,11 @@
585 597 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( this.#e.status ){
586 598 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Send the status only if it was modified, otherwise we may
587 599 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
add a superfluous tag. */
588 600 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const v = this.#e.status.value;
589 601 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( this.#e.status.dataset.originalValue !== v ){
590 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- fd.append( "status", v );
602 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fd.append("status", v);
591 603 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
592 604 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
593 605 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( e.debug ){
594 606 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
e.debug.querySelectorAll('input[type=checkbox]').forEach(cb=>{
595 607 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( cb.checked ){
@@ -978,17 +990,22 @@
978 990 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( fpe.widget.parentNode ){
979 991 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fpe.widget.remove();
980 992 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
981 993 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
982 994 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
};
995 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const eStatusSelect = ePost.querySelector(
996 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ':scope > fieldset.forum-status-selection select[name=status]'
997 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ );
998 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
983 999 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const fpe = new F.ForumPostEditor({
984 1000 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
hiddenFields: form.querySelectorAll('input[type=hidden]'),
985 1001 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ondiscard: ondone,
986 1002 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
onsubmit: ondone,
987 1003 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
draftKey: 'draft-forumedit-'+(fEditHead || fpid).substr(0,12),
988 1004 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
hideTitle: true/*fixme: only show if this is the root post*/,
989 1005 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
edit: artifact,
1006 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ status: eStatusSelect?.value,
990 1007 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
inReplyTo: firt
991 1008 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
});
992 1009 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const w = fpe.widget;
993 1010 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
w.style.borderTop = '2px dotted';
994 1011 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Adding an "Editing..." <h3> here adds way too much space */
@@ -1023,14 +1040,24 @@
1023 1040 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
b.type = 'button';
1024 1041 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
eToDisable.push(b);
1025 1042 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
btnEdit.parentElement.insertBefore(b, btnEdit);
1026 1043 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
btnEdit.remove();
1027 1044 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1045 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Problem: we really need to disable the status-selection
1046 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ button because it would redirect mid-edit. We wouldn't lose
1047 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ the edits but would lose any pending attachments. We work
1048 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ around this by disabling this selection and adding a new
1049 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ status selection widget in the editor, inheriting this
1050 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ one's value. */
1051 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const eStatusChange = eThePost.querySelector(
1052 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ':scope > fieldset.forum-status-selection'
1053 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ );
1054 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( eStatusChange ) eToDisable.push(eStatusChange);
1028 1055 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
})/*for-each form*/;
1029 1056 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}/* /forumpost and /forumthread */
1030 1057 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1031 1058 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( Date.now() % 17 === 0 ){
1032 1059 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Purge old drafts only every now and then. */
1033 1060 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
F.ForumPostEditor.purgeOldDrafts(/^draft-forum.*/);
1034 1061 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1035 1062 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
})/*F.onPageLoad callback*/;
1036 1063 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
})(window.fossil);
1037 1064 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!