Fossil SCM

/forumthread: dynamically determine which posts have scrollbars (i.e. are taller than div.forumPostBody's max-height) and only add the expand/collapse toggle to those posts.

stephan 2020-07-09 17:36 forum-expand-poc
Commit 1d467dcb71edb7cefcf318b6a25031dacc7e965f57b15862ca0f34e5735a2931
+5 -5
--- src/default.css
+++ src/default.css
@@ -769,11 +769,14 @@
769769
div.forumHier, div.forumTime, div.forumHierRoot {
770770
display: flex;
771771
flex-direction: column;
772772
}
773773
div.forumPostBody {
774
- max-height: 100em;
774
+ max-height: 20em /* Posts which overflow this value get an
775
+ Expand/Collapse toggle injected at page-load.
776
+ It's currently intentionally set low for
777
+ demonstration purposes. */;
775778
overflow: auto;
776779
}
777780
div.forumSel {
778781
background-color: #cef;
779782
}
@@ -796,15 +799,12 @@
796799
align-self: flex-start;
797800
padding: 0.1em 0.5em;
798801
border: 1px outset;
799802
border-radius: 0.25em;
800803
}
801
-input[type=checkbox].forum-post-collapser:not(:checked) ~ div.forumPostBody {
802
- max-height: 10em;
803
-}
804804
input[type=checkbox].forum-post-collapser:checked ~ div.forumPostBody {
805
- max-height: 200em;
805
+ max-height: 10000em /* some "absurdly large" value */;
806806
}
807807
808808
#capabilitySummary {
809809
text-align: center;
810810
}
811811
--- src/default.css
+++ src/default.css
@@ -769,11 +769,14 @@
769 div.forumHier, div.forumTime, div.forumHierRoot {
770 display: flex;
771 flex-direction: column;
772 }
773 div.forumPostBody {
774 max-height: 100em;
 
 
 
775 overflow: auto;
776 }
777 div.forumSel {
778 background-color: #cef;
779 }
@@ -796,15 +799,12 @@
796 align-self: flex-start;
797 padding: 0.1em 0.5em;
798 border: 1px outset;
799 border-radius: 0.25em;
800 }
801 input[type=checkbox].forum-post-collapser:not(:checked) ~ div.forumPostBody {
802 max-height: 10em;
803 }
804 input[type=checkbox].forum-post-collapser:checked ~ div.forumPostBody {
805 max-height: 200em;
806 }
807
808 #capabilitySummary {
809 text-align: center;
810 }
811
--- src/default.css
+++ src/default.css
@@ -769,11 +769,14 @@
769 div.forumHier, div.forumTime, div.forumHierRoot {
770 display: flex;
771 flex-direction: column;
772 }
773 div.forumPostBody {
774 max-height: 20em /* Posts which overflow this value get an
775 Expand/Collapse toggle injected at page-load.
776 It's currently intentionally set low for
777 demonstration purposes. */;
778 overflow: auto;
779 }
780 div.forumSel {
781 background-color: #cef;
782 }
@@ -796,15 +799,12 @@
799 align-self: flex-start;
800 padding: 0.1em 0.5em;
801 border: 1px outset;
802 border-radius: 0.25em;
803 }
 
 
 
804 input[type=checkbox].forum-post-collapser:checked ~ div.forumPostBody {
805 max-height: 10000em /* some "absurdly large" value */;
806 }
807
808 #capabilitySummary {
809 text-align: center;
810 }
811
+19 -21
--- src/forum.c
+++ src/forum.c
@@ -402,27 +402,10 @@
402402
}
403403
db_reset(&q);
404404
return zResult;
405405
}
406406
407
-/*
408
-** Emits a checkbox and label for implementing a CSS-only
409
-** collapse/expand button on posts. It should be passed the UUID of
410
-** the current post, but that value is only used for constructing a
411
-** unique ID for the (invisible) checkbox so that the label can be
412
-** bound to it via its 'for' attribute. Thus it doesn't really matter
413
-** whether the UUID refers to the current (edited) instance of the
414
-** post or an ancestor version, so long as the UUID is unique within
415
-** the current page.
416
-*/
417
-static void forum_emit_post_toggle(const char * zUuid){
418
- @ <input type='checkbox' id='cb-post-%S(zUuid)' \
419
- @ class='forum-post-collapser'>
420
- @ <label for='cb-post-%S(zUuid)' \
421
- @ class='forum-post-collapser'></label>
422
-}
423
-
424407
/*
425408
** Display all posts in a forum thread in chronological order
426409
*/
427410
static void forum_display_chronological(int froot, int target, int bRawMode){
428411
ForumThread *pThread = forumthread_create(froot, 0);
@@ -485,11 +468,10 @@
485468
@ %z(href("%R/forumpost/%S?raw",zUuid))[source]</a>
486469
}
487470
isPrivate = content_is_private(p->fpid);
488471
sameUser = notAnon && fossil_strcmp(pPost->zUser, g.zLogin)==0;
489472
@ </h3>
490
- forum_emit_post_toggle(p->zUuid);
491473
if( isPrivate && !g.perm.ModForum && !sameUser ){
492474
@ <p><span class="modpending">Awaiting Moderator Approval</span></p>
493475
}else{
494476
const char *zMimetype;
495477
if( bRawMode ){
@@ -601,11 +583,10 @@
601583
@ %z(href("%R/forumpost/%S?raw",zUuid))[source]</a>
602584
}
603585
isPrivate = content_is_private(p->fpid);
604586
sameUser = notAnon && fossil_strcmp(pPost->zUser, g.zLogin)==0;
605587
@ </h3>
606
- forum_emit_post_toggle(zUuid);
607588
if( isPrivate && !g.perm.ModForum && !sameUser ){
608589
@ <p><span class="modpending">Awaiting Moderator Approval</span></p>
609590
}else{
610591
forum_render(0, bRawMode?"text/plain":pPost->zMimetype, pPost->zWiki,
611592
0, 1);
@@ -729,11 +710,10 @@
729710
@ in reply to %z(href("%R/forumpost/%S?t=h",pIrt->zUuid))\
730711
@ %d(pIrt->sid)</a>
731712
}
732713
}
733714
@ </h3>
734
- forum_emit_post_toggle(zUuid);
735715
isPrivate = content_is_private(fpid);
736716
sameUser = notAnon && fossil_strcmp(pPost->zUser, g.zLogin)==0;
737717
if( isPrivate && !g.perm.ModForum && !sameUser ){
738718
@ <p><span class="modpending">Awaiting Moderator Approval</span></p>
739719
}else{
@@ -767,10 +747,28 @@
767747
@ </div>
768748
}
769749
forumthread_delete(pThread);
770750
return target;
771751
}
752
+
753
+/*
754
+** The first time this is called, it emits SCRIPT tags to load various
755
+** forum-related JavaScript. Ideally it should be called near the end
756
+** of the page, immediately before the call to style_footer() (which
757
+** closes the document's <BODY> and <HTML> tags). Calls after the first
758
+** are a no-op.
759
+*/
760
+static void forum_emit_page_js(){
761
+ static int once = 0;
762
+ if(0==once){
763
+ once = 1;
764
+ style_load_js("forum.js");
765
+ style_emit_script_fossil_bootstrap(0);
766
+ style_emit_script_dom(0);
767
+ style_emit_script_builtin(0, "fossil.page.forumpost.js");
768
+ }
769
+}
772770
773771
/*
774772
** WEBPAGE: forumpost
775773
**
776774
** Show a single forum posting. The posting is shown in context with
@@ -896,11 +894,11 @@
896894
}else{
897895
style_submenu_element("Chronological", "%R/%s/%s?t=c", g.zPath, zName);
898896
style_submenu_element("Unformatted", "%R/%s/%s?t=r", g.zPath, zName);
899897
forum_display_hierarchical(froot, fpid);
900898
}
901
- style_load_js("forum.js");
899
+ forum_emit_page_js();
902900
style_footer();
903901
}
904902
905903
/*
906904
** Return true if a forum post should be moderated.
907905
--- src/forum.c
+++ src/forum.c
@@ -402,27 +402,10 @@
402 }
403 db_reset(&q);
404 return zResult;
405 }
406
407 /*
408 ** Emits a checkbox and label for implementing a CSS-only
409 ** collapse/expand button on posts. It should be passed the UUID of
410 ** the current post, but that value is only used for constructing a
411 ** unique ID for the (invisible) checkbox so that the label can be
412 ** bound to it via its 'for' attribute. Thus it doesn't really matter
413 ** whether the UUID refers to the current (edited) instance of the
414 ** post or an ancestor version, so long as the UUID is unique within
415 ** the current page.
416 */
417 static void forum_emit_post_toggle(const char * zUuid){
418 @ <input type='checkbox' id='cb-post-%S(zUuid)' \
419 @ class='forum-post-collapser'>
420 @ <label for='cb-post-%S(zUuid)' \
421 @ class='forum-post-collapser'></label>
422 }
423
424 /*
425 ** Display all posts in a forum thread in chronological order
426 */
427 static void forum_display_chronological(int froot, int target, int bRawMode){
428 ForumThread *pThread = forumthread_create(froot, 0);
@@ -485,11 +468,10 @@
485 @ %z(href("%R/forumpost/%S?raw",zUuid))[source]</a>
486 }
487 isPrivate = content_is_private(p->fpid);
488 sameUser = notAnon && fossil_strcmp(pPost->zUser, g.zLogin)==0;
489 @ </h3>
490 forum_emit_post_toggle(p->zUuid);
491 if( isPrivate && !g.perm.ModForum && !sameUser ){
492 @ <p><span class="modpending">Awaiting Moderator Approval</span></p>
493 }else{
494 const char *zMimetype;
495 if( bRawMode ){
@@ -601,11 +583,10 @@
601 @ %z(href("%R/forumpost/%S?raw",zUuid))[source]</a>
602 }
603 isPrivate = content_is_private(p->fpid);
604 sameUser = notAnon && fossil_strcmp(pPost->zUser, g.zLogin)==0;
605 @ </h3>
606 forum_emit_post_toggle(zUuid);
607 if( isPrivate && !g.perm.ModForum && !sameUser ){
608 @ <p><span class="modpending">Awaiting Moderator Approval</span></p>
609 }else{
610 forum_render(0, bRawMode?"text/plain":pPost->zMimetype, pPost->zWiki,
611 0, 1);
@@ -729,11 +710,10 @@
729 @ in reply to %z(href("%R/forumpost/%S?t=h",pIrt->zUuid))\
730 @ %d(pIrt->sid)</a>
731 }
732 }
733 @ </h3>
734 forum_emit_post_toggle(zUuid);
735 isPrivate = content_is_private(fpid);
736 sameUser = notAnon && fossil_strcmp(pPost->zUser, g.zLogin)==0;
737 if( isPrivate && !g.perm.ModForum && !sameUser ){
738 @ <p><span class="modpending">Awaiting Moderator Approval</span></p>
739 }else{
@@ -767,10 +747,28 @@
767 @ </div>
768 }
769 forumthread_delete(pThread);
770 return target;
771 }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
772
773 /*
774 ** WEBPAGE: forumpost
775 **
776 ** Show a single forum posting. The posting is shown in context with
@@ -896,11 +894,11 @@
896 }else{
897 style_submenu_element("Chronological", "%R/%s/%s?t=c", g.zPath, zName);
898 style_submenu_element("Unformatted", "%R/%s/%s?t=r", g.zPath, zName);
899 forum_display_hierarchical(froot, fpid);
900 }
901 style_load_js("forum.js");
902 style_footer();
903 }
904
905 /*
906 ** Return true if a forum post should be moderated.
907
--- src/forum.c
+++ src/forum.c
@@ -402,27 +402,10 @@
402 }
403 db_reset(&q);
404 return zResult;
405 }
406
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
407 /*
408 ** Display all posts in a forum thread in chronological order
409 */
410 static void forum_display_chronological(int froot, int target, int bRawMode){
411 ForumThread *pThread = forumthread_create(froot, 0);
@@ -485,11 +468,10 @@
468 @ %z(href("%R/forumpost/%S?raw",zUuid))[source]</a>
469 }
470 isPrivate = content_is_private(p->fpid);
471 sameUser = notAnon && fossil_strcmp(pPost->zUser, g.zLogin)==0;
472 @ </h3>
 
473 if( isPrivate && !g.perm.ModForum && !sameUser ){
474 @ <p><span class="modpending">Awaiting Moderator Approval</span></p>
475 }else{
476 const char *zMimetype;
477 if( bRawMode ){
@@ -601,11 +583,10 @@
583 @ %z(href("%R/forumpost/%S?raw",zUuid))[source]</a>
584 }
585 isPrivate = content_is_private(p->fpid);
586 sameUser = notAnon && fossil_strcmp(pPost->zUser, g.zLogin)==0;
587 @ </h3>
 
588 if( isPrivate && !g.perm.ModForum && !sameUser ){
589 @ <p><span class="modpending">Awaiting Moderator Approval</span></p>
590 }else{
591 forum_render(0, bRawMode?"text/plain":pPost->zMimetype, pPost->zWiki,
592 0, 1);
@@ -729,11 +710,10 @@
710 @ in reply to %z(href("%R/forumpost/%S?t=h",pIrt->zUuid))\
711 @ %d(pIrt->sid)</a>
712 }
713 }
714 @ </h3>
 
715 isPrivate = content_is_private(fpid);
716 sameUser = notAnon && fossil_strcmp(pPost->zUser, g.zLogin)==0;
717 if( isPrivate && !g.perm.ModForum && !sameUser ){
718 @ <p><span class="modpending">Awaiting Moderator Approval</span></p>
719 }else{
@@ -767,10 +747,28 @@
747 @ </div>
748 }
749 forumthread_delete(pThread);
750 return target;
751 }
752
753 /*
754 ** The first time this is called, it emits SCRIPT tags to load various
755 ** forum-related JavaScript. Ideally it should be called near the end
756 ** of the page, immediately before the call to style_footer() (which
757 ** closes the document's <BODY> and <HTML> tags). Calls after the first
758 ** are a no-op.
759 */
760 static void forum_emit_page_js(){
761 static int once = 0;
762 if(0==once){
763 once = 1;
764 style_load_js("forum.js");
765 style_emit_script_fossil_bootstrap(0);
766 style_emit_script_dom(0);
767 style_emit_script_builtin(0, "fossil.page.forumpost.js");
768 }
769 }
770
771 /*
772 ** WEBPAGE: forumpost
773 **
774 ** Show a single forum posting. The posting is shown in context with
@@ -896,11 +894,11 @@
894 }else{
895 style_submenu_element("Chronological", "%R/%s/%s?t=c", g.zPath, zName);
896 style_submenu_element("Unformatted", "%R/%s/%s?t=r", g.zPath, zName);
897 forum_display_hierarchical(froot, fpid);
898 }
899 forum_emit_page_js();
900 style_footer();
901 }
902
903 /*
904 ** Return true if a forum post should be moderated.
905
--- src/fossil.dom.js
+++ src/fossil.dom.js
@@ -72,10 +72,11 @@
7272
dom.footer = dom.createElemFactory('footer');
7373
dom.section = dom.createElemFactory('section');
7474
dom.span = dom.createElemFactory('span');
7575
dom.strong = dom.createElemFactory('strong');
7676
dom.em = dom.createElemFactory('em');
77
+ dom.label = dom.createElemFactory('label');
7778
dom.img = function(src){
7879
const e = dom.create('img');
7980
if(src) e.setAttribute('src',src);
8081
return e;
8182
};
8283
8384
ADDED src/fossil.page.forumpost.js
--- src/fossil.dom.js
+++ src/fossil.dom.js
@@ -72,10 +72,11 @@
72 dom.footer = dom.createElemFactory('footer');
73 dom.section = dom.createElemFactory('section');
74 dom.span = dom.createElemFactory('span');
75 dom.strong = dom.createElemFactory('strong');
76 dom.em = dom.createElemFactory('em');
 
77 dom.img = function(src){
78 const e = dom.create('img');
79 if(src) e.setAttribute('src',src);
80 return e;
81 };
82
83 DDED src/fossil.page.forumpost.js
--- src/fossil.dom.js
+++ src/fossil.dom.js
@@ -72,10 +72,11 @@
72 dom.footer = dom.createElemFactory('footer');
73 dom.section = dom.createElemFactory('section');
74 dom.span = dom.createElemFactory('span');
75 dom.strong = dom.createElemFactory('strong');
76 dom.em = dom.createElemFactory('em');
77 dom.label = dom.createElemFactory('label');
78 dom.img = function(src){
79 const e = dom.create('img');
80 if(src) e.setAttribute('src',src);
81 return e;
82 };
83
84 DDED src/fossil.page.forumpost.js
--- a/src/fossil.page.forumpost.js
+++ b/src/fossil.page.forumpost.js
@@ -0,0 +1,10 @@
1
+(function(F/*the fossil object*/){
2
+ "use strict";
3
+ /* JS code for /HierRootfossil.page, D = fossilwidget = D.div(classList.add();
4
+ject*/){
5
+ "use stri(func tion(F//** A double-click toggle will select "the current word" on the
6
+ post, which is minorconst er)
7
+ fid = forumPostWrapper.getAttribute('id');
8
+ const cb = D.input('checkbox'), lbl = D.label(),
9
+ period
10
+ cbId = fid+'-expand'D.addClass([cb,lbl], cb.setAttribute('id',cbIdef periodlbl.setAttribute('for', cbId) periodcb, contentef periodlbl, content
--- a/src/fossil.page.forumpost.js
+++ b/src/fossil.page.forumpost.js
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
--- a/src/fossil.page.forumpost.js
+++ b/src/fossil.page.forumpost.js
@@ -0,0 +1,10 @@
1 (function(F/*the fossil object*/){
2 "use strict";
3 /* JS code for /HierRootfossil.page, D = fossilwidget = D.div(classList.add();
4 ject*/){
5 "use stri(func tion(F//** A double-click toggle will select "the current word" on the
6 post, which is minorconst er)
7 fid = forumPostWrapper.getAttribute('id');
8 const cb = D.input('checkbox'), lbl = D.label(),
9 period
10 cbId = fid+'-expand'D.addClass([cb,lbl], cb.setAttribute('id',cbIdef periodlbl.setAttribute('for', cbId) periodcb, contentef periodlbl, content
--- src/main.mk
+++ src/main.mk
@@ -226,10 +226,11 @@
226226
$(SRCDIR)/fossil.bootstrap.js \
227227
$(SRCDIR)/fossil.confirmer.js \
228228
$(SRCDIR)/fossil.dom.js \
229229
$(SRCDIR)/fossil.fetch.js \
230230
$(SRCDIR)/fossil.page.fileedit.js \
231
+ $(SRCDIR)/fossil.page.forumpost.js \
231232
$(SRCDIR)/fossil.storage.js \
232233
$(SRCDIR)/fossil.tabs.js \
233234
$(SRCDIR)/graph.js \
234235
$(SRCDIR)/href.js \
235236
$(SRCDIR)/login.js \
236237
--- src/main.mk
+++ src/main.mk
@@ -226,10 +226,11 @@
226 $(SRCDIR)/fossil.bootstrap.js \
227 $(SRCDIR)/fossil.confirmer.js \
228 $(SRCDIR)/fossil.dom.js \
229 $(SRCDIR)/fossil.fetch.js \
230 $(SRCDIR)/fossil.page.fileedit.js \
 
231 $(SRCDIR)/fossil.storage.js \
232 $(SRCDIR)/fossil.tabs.js \
233 $(SRCDIR)/graph.js \
234 $(SRCDIR)/href.js \
235 $(SRCDIR)/login.js \
236
--- src/main.mk
+++ src/main.mk
@@ -226,10 +226,11 @@
226 $(SRCDIR)/fossil.bootstrap.js \
227 $(SRCDIR)/fossil.confirmer.js \
228 $(SRCDIR)/fossil.dom.js \
229 $(SRCDIR)/fossil.fetch.js \
230 $(SRCDIR)/fossil.page.fileedit.js \
231 $(SRCDIR)/fossil.page.forumpost.js \
232 $(SRCDIR)/fossil.storage.js \
233 $(SRCDIR)/fossil.tabs.js \
234 $(SRCDIR)/graph.js \
235 $(SRCDIR)/href.js \
236 $(SRCDIR)/login.js \
237
--- win/Makefile.mingw
+++ win/Makefile.mingw
@@ -638,10 +638,11 @@
638638
$(SRCDIR)/fossil.bootstrap.js \
639639
$(SRCDIR)/fossil.confirmer.js \
640640
$(SRCDIR)/fossil.dom.js \
641641
$(SRCDIR)/fossil.fetch.js \
642642
$(SRCDIR)/fossil.page.fileedit.js \
643
+ $(SRCDIR)/fossil.page.forumpost.js \
643644
$(SRCDIR)/fossil.storage.js \
644645
$(SRCDIR)/fossil.tabs.js \
645646
$(SRCDIR)/graph.js \
646647
$(SRCDIR)/href.js \
647648
$(SRCDIR)/login.js \
648649
--- win/Makefile.mingw
+++ win/Makefile.mingw
@@ -638,10 +638,11 @@
638 $(SRCDIR)/fossil.bootstrap.js \
639 $(SRCDIR)/fossil.confirmer.js \
640 $(SRCDIR)/fossil.dom.js \
641 $(SRCDIR)/fossil.fetch.js \
642 $(SRCDIR)/fossil.page.fileedit.js \
 
643 $(SRCDIR)/fossil.storage.js \
644 $(SRCDIR)/fossil.tabs.js \
645 $(SRCDIR)/graph.js \
646 $(SRCDIR)/href.js \
647 $(SRCDIR)/login.js \
648
--- win/Makefile.mingw
+++ win/Makefile.mingw
@@ -638,10 +638,11 @@
638 $(SRCDIR)/fossil.bootstrap.js \
639 $(SRCDIR)/fossil.confirmer.js \
640 $(SRCDIR)/fossil.dom.js \
641 $(SRCDIR)/fossil.fetch.js \
642 $(SRCDIR)/fossil.page.fileedit.js \
643 $(SRCDIR)/fossil.page.forumpost.js \
644 $(SRCDIR)/fossil.storage.js \
645 $(SRCDIR)/fossil.tabs.js \
646 $(SRCDIR)/graph.js \
647 $(SRCDIR)/href.js \
648 $(SRCDIR)/login.js \
649
--- win/Makefile.msc
+++ win/Makefile.msc
@@ -559,10 +559,11 @@
559559
"$(SRCDIR)\fossil.bootstrap.js" \
560560
"$(SRCDIR)\fossil.confirmer.js" \
561561
"$(SRCDIR)\fossil.dom.js" \
562562
"$(SRCDIR)\fossil.fetch.js" \
563563
"$(SRCDIR)\fossil.page.fileedit.js" \
564
+ "$(SRCDIR)\fossil.page.forumpost.js" \
564565
"$(SRCDIR)\fossil.storage.js" \
565566
"$(SRCDIR)\fossil.tabs.js" \
566567
"$(SRCDIR)\graph.js" \
567568
"$(SRCDIR)\href.js" \
568569
"$(SRCDIR)\login.js" \
@@ -1147,10 +1148,11 @@
11471148
echo "$(SRCDIR)\fossil.bootstrap.js" >> $@
11481149
echo "$(SRCDIR)\fossil.confirmer.js" >> $@
11491150
echo "$(SRCDIR)\fossil.dom.js" >> $@
11501151
echo "$(SRCDIR)\fossil.fetch.js" >> $@
11511152
echo "$(SRCDIR)\fossil.page.fileedit.js" >> $@
1153
+ echo "$(SRCDIR)\fossil.page.forumpost.js" >> $@
11521154
echo "$(SRCDIR)\fossil.storage.js" >> $@
11531155
echo "$(SRCDIR)\fossil.tabs.js" >> $@
11541156
echo "$(SRCDIR)\graph.js" >> $@
11551157
echo "$(SRCDIR)\href.js" >> $@
11561158
echo "$(SRCDIR)\login.js" >> $@
11571159
--- win/Makefile.msc
+++ win/Makefile.msc
@@ -559,10 +559,11 @@
559 "$(SRCDIR)\fossil.bootstrap.js" \
560 "$(SRCDIR)\fossil.confirmer.js" \
561 "$(SRCDIR)\fossil.dom.js" \
562 "$(SRCDIR)\fossil.fetch.js" \
563 "$(SRCDIR)\fossil.page.fileedit.js" \
 
564 "$(SRCDIR)\fossil.storage.js" \
565 "$(SRCDIR)\fossil.tabs.js" \
566 "$(SRCDIR)\graph.js" \
567 "$(SRCDIR)\href.js" \
568 "$(SRCDIR)\login.js" \
@@ -1147,10 +1148,11 @@
1147 echo "$(SRCDIR)\fossil.bootstrap.js" >> $@
1148 echo "$(SRCDIR)\fossil.confirmer.js" >> $@
1149 echo "$(SRCDIR)\fossil.dom.js" >> $@
1150 echo "$(SRCDIR)\fossil.fetch.js" >> $@
1151 echo "$(SRCDIR)\fossil.page.fileedit.js" >> $@
 
1152 echo "$(SRCDIR)\fossil.storage.js" >> $@
1153 echo "$(SRCDIR)\fossil.tabs.js" >> $@
1154 echo "$(SRCDIR)\graph.js" >> $@
1155 echo "$(SRCDIR)\href.js" >> $@
1156 echo "$(SRCDIR)\login.js" >> $@
1157
--- win/Makefile.msc
+++ win/Makefile.msc
@@ -559,10 +559,11 @@
559 "$(SRCDIR)\fossil.bootstrap.js" \
560 "$(SRCDIR)\fossil.confirmer.js" \
561 "$(SRCDIR)\fossil.dom.js" \
562 "$(SRCDIR)\fossil.fetch.js" \
563 "$(SRCDIR)\fossil.page.fileedit.js" \
564 "$(SRCDIR)\fossil.page.forumpost.js" \
565 "$(SRCDIR)\fossil.storage.js" \
566 "$(SRCDIR)\fossil.tabs.js" \
567 "$(SRCDIR)\graph.js" \
568 "$(SRCDIR)\href.js" \
569 "$(SRCDIR)\login.js" \
@@ -1147,10 +1148,11 @@
1148 echo "$(SRCDIR)\fossil.bootstrap.js" >> $@
1149 echo "$(SRCDIR)\fossil.confirmer.js" >> $@
1150 echo "$(SRCDIR)\fossil.dom.js" >> $@
1151 echo "$(SRCDIR)\fossil.fetch.js" >> $@
1152 echo "$(SRCDIR)\fossil.page.fileedit.js" >> $@
1153 echo "$(SRCDIR)\fossil.page.forumpost.js" >> $@
1154 echo "$(SRCDIR)\fossil.storage.js" >> $@
1155 echo "$(SRCDIR)\fossil.tabs.js" >> $@
1156 echo "$(SRCDIR)\graph.js" >> $@
1157 echo "$(SRCDIR)\href.js" >> $@
1158 echo "$(SRCDIR)\login.js" >> $@
1159

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button