Fossil SCM

Remove the use of in-line javascript from the submenu controls.

drh 2017-12-06 01:38 trunk
Commit 3969757f3735b05ac22bf8ad6e54d7a447bf7e1f775ca869f1792ac41c56ca68
+1 -8
--- src/diff.c
+++ src/diff.c
@@ -2423,11 +2423,11 @@
24232423
}
24242424
url_add_parameter(&url, "w", ignoreWs ? "1" : "0");
24252425
url_add_parameter(&url, "log", showLog ? "1" : "0");
24262426
url_add_parameter(&url, "filevers", fileVers ? "1" : "0");
24272427
style_submenu_checkbox("w", "Ignore Whitespace", 0, 0);
2428
- style_submenu_checkbox("log", "Log", 0, "toggle_annotation_log()");
2428
+ style_submenu_checkbox("log", "Log", 0, "toggle_annotation_log");
24292429
style_submenu_checkbox("filevers", "Link to Files", 0, 0);
24302430
if( ann.bMoreToDo ){
24312431
style_submenu_element("All Ancestors", "%s",
24322432
url_render(&url, "limit", "none", 0, 0));
24332433
}
@@ -2458,17 +2458,10 @@
24582458
@ </span>
24592459
}
24602460
@ </ol>
24612461
@ <hr />
24622462
@ </div>
2463
- @ <script>
2464
- @ function toggle_annotation_log(){
2465
- @ var w = gebi("annotation_log");
2466
- @ var x = document.forms["f01"].elements["log"].checked
2467
- @ w.style.display = x ? "block" : "none";
2468
- @ }
2469
- @ </script>
24702463
24712464
if( !ann.bMoreToDo ){
24722465
assert( ann.origId==0 ); /* bMoreToDo always set for a point-to-point */
24732466
@ <h2>Origin for each line in
24742467
@ %z(href("%R/finfo?name=%h&ci=%!S", zFilename, zCI))%h(zFilename)</a>
24752468
--- src/diff.c
+++ src/diff.c
@@ -2423,11 +2423,11 @@
2423 }
2424 url_add_parameter(&url, "w", ignoreWs ? "1" : "0");
2425 url_add_parameter(&url, "log", showLog ? "1" : "0");
2426 url_add_parameter(&url, "filevers", fileVers ? "1" : "0");
2427 style_submenu_checkbox("w", "Ignore Whitespace", 0, 0);
2428 style_submenu_checkbox("log", "Log", 0, "toggle_annotation_log()");
2429 style_submenu_checkbox("filevers", "Link to Files", 0, 0);
2430 if( ann.bMoreToDo ){
2431 style_submenu_element("All Ancestors", "%s",
2432 url_render(&url, "limit", "none", 0, 0));
2433 }
@@ -2458,17 +2458,10 @@
2458 @ </span>
2459 }
2460 @ </ol>
2461 @ <hr />
2462 @ </div>
2463 @ <script>
2464 @ function toggle_annotation_log(){
2465 @ var w = gebi("annotation_log");
2466 @ var x = document.forms["f01"].elements["log"].checked
2467 @ w.style.display = x ? "block" : "none";
2468 @ }
2469 @ </script>
2470
2471 if( !ann.bMoreToDo ){
2472 assert( ann.origId==0 ); /* bMoreToDo always set for a point-to-point */
2473 @ <h2>Origin for each line in
2474 @ %z(href("%R/finfo?name=%h&ci=%!S", zFilename, zCI))%h(zFilename)</a>
2475
--- src/diff.c
+++ src/diff.c
@@ -2423,11 +2423,11 @@
2423 }
2424 url_add_parameter(&url, "w", ignoreWs ? "1" : "0");
2425 url_add_parameter(&url, "log", showLog ? "1" : "0");
2426 url_add_parameter(&url, "filevers", fileVers ? "1" : "0");
2427 style_submenu_checkbox("w", "Ignore Whitespace", 0, 0);
2428 style_submenu_checkbox("log", "Log", 0, "toggle_annotation_log");
2429 style_submenu_checkbox("filevers", "Link to Files", 0, 0);
2430 if( ann.bMoreToDo ){
2431 style_submenu_element("All Ancestors", "%s",
2432 url_render(&url, "limit", "none", 0, 0));
2433 }
@@ -2458,17 +2458,10 @@
2458 @ </span>
2459 }
2460 @ </ol>
2461 @ <hr />
2462 @ </div>
 
 
 
 
 
 
 
2463
2464 if( !ann.bMoreToDo ){
2465 assert( ann.origId==0 ); /* bMoreToDo always set for a point-to-point */
2466 @ <h2>Origin for each line in
2467 @ %z(href("%R/finfo?name=%h&ci=%!S", zFilename, zCI))%h(zFilename)</a>
2468
--- src/main.mk
+++ src/main.mk
@@ -197,10 +197,11 @@
197197
$(SRCDIR)/../skins/xekri/header.txt \
198198
$(SRCDIR)/diff.tcl \
199199
$(SRCDIR)/graph.js \
200200
$(SRCDIR)/href.js \
201201
$(SRCDIR)/markdown.md \
202
+ $(SRCDIR)/menu.js \
202203
$(SRCDIR)/sbsdiff.js \
203204
$(SRCDIR)/wiki.wiki
204205
205206
TRANS_SRC = \
206207
$(OBJDIR)/add_.c \
207208
208209
ADDED src/menu.js
--- src/main.mk
+++ src/main.mk
@@ -197,10 +197,11 @@
197 $(SRCDIR)/../skins/xekri/header.txt \
198 $(SRCDIR)/diff.tcl \
199 $(SRCDIR)/graph.js \
200 $(SRCDIR)/href.js \
201 $(SRCDIR)/markdown.md \
 
202 $(SRCDIR)/sbsdiff.js \
203 $(SRCDIR)/wiki.wiki
204
205 TRANS_SRC = \
206 $(OBJDIR)/add_.c \
207
208 DDED src/menu.js
--- src/main.mk
+++ src/main.mk
@@ -197,10 +197,11 @@
197 $(SRCDIR)/../skins/xekri/header.txt \
198 $(SRCDIR)/diff.tcl \
199 $(SRCDIR)/graph.js \
200 $(SRCDIR)/href.js \
201 $(SRCDIR)/markdown.md \
202 $(SRCDIR)/menu.js \
203 $(SRCDIR)/sbsdiff.js \
204 $(SRCDIR)/wiki.wiki
205
206 TRANS_SRC = \
207 $(OBJDIR)/add_.c \
208
209 DDED src/menu.js
+29
--- a/src/menu.js
+++ b/src/menu.js
@@ -0,0 +1,29 @@
1
+/* This script runs when the submenu contains controls created by routines
2
+** like style_submenu_checkbox() or style_submenu_multichoice() - controls
3
+** that require javascript support.
4
+*/
5
+
6
+function toggle_annotation_log(){
7
+ var w = document.getElementById("annotation_log");
8
+ var x = document.forms["f01"].elements["log"].checked
9
+ w.style.display = x ? "block" : "none";
10
+}
11
+function submenu_onchange_submit(){
12
+ var w = document.getElementById("f01");
13
+ w.submit();
14
+}
15
+
16
+(function (){
17
+ for(var i=0; 1; i++){
18
+ var x = document.getElementById("submenuctrl-"+i);
19
+ if(!x) break;
20
+ if( !x.hasAttribute('data-ctrl') ){
21
+ x.onchange = submenu_onchange_submit;
22
+ }else{
23
+ var cx = x.getAttribute('data-ctrl');
24
+ if( cx=="toggle_annotation_log" ){
25
+ x.onchange = toggle_annotation_log;
26
+ }
27
+ }
28
+ }
29
+})();
--- a/src/menu.js
+++ b/src/menu.js
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
--- a/src/menu.js
+++ b/src/menu.js
@@ -0,0 +1,29 @@
1 /* This script runs when the submenu contains controls created by routines
2 ** like style_submenu_checkbox() or style_submenu_multichoice() - controls
3 ** that require javascript support.
4 */
5
6 function toggle_annotation_log(){
7 var w = document.getElementById("annotation_log");
8 var x = document.forms["f01"].elements["log"].checked
9 w.style.display = x ? "block" : "none";
10 }
11 function submenu_onchange_submit(){
12 var w = document.getElementById("f01");
13 w.submit();
14 }
15
16 (function (){
17 for(var i=0; 1; i++){
18 var x = document.getElementById("submenuctrl-"+i);
19 if(!x) break;
20 if( !x.hasAttribute('data-ctrl') ){
21 x.onchange = submenu_onchange_submit;
22 }else{
23 var cx = x.getAttribute('data-ctrl');
24 if( cx=="toggle_annotation_log" ){
25 x.onchange = toggle_annotation_log;
26 }
27 }
28 }
29 })();
+7 -7
--- src/style.c
+++ src/style.c
@@ -573,11 +573,11 @@
573573
@ size='%d(-aSubmenuCtrl[i].iSize)' \
574574
}else if( aSubmenuCtrl[i].iSize>0 ){
575575
@ size='%d(aSubmenuCtrl[i].iSize)' \
576576
@ maxlength='%d(aSubmenuCtrl[i].iSize)' \
577577
}
578
- @ onchange='gebi("f01").submit();'%s(zDisabled)></span>
578
+ @ id='submenuctrl-%d(i)'%s(zDisabled)></span>
579579
break;
580580
case FF_MULTI: {
581581
int j;
582582
const char *zVal = P(zQPN);
583583
if( zXtraClass[0] ){
@@ -585,11 +585,11 @@
585585
}
586586
if( aSubmenuCtrl[i].zLabel ){
587587
@ &nbsp;%h(aSubmenuCtrl[i].zLabel)\
588588
}
589589
@ <select class='submenuctrl' size='1' name='%s(zQPN)' \
590
- @ onchange='gebi("f01").submit();'%s(zDisabled)>
590
+ @ id='submenuctrl-%d(i)'%s(zDisabled)>
591591
for(j=0; j<aSubmenuCtrl[i].iSize*2; j+=2){
592592
const char *zQPV = aSubmenuCtrl[i].azChoice[j];
593593
@ <option value='%h(zQPV)'\
594594
if( fossil_strcmp(zVal, zQPV)==0 ){
595595
@ selected\
@@ -603,12 +603,11 @@
603603
break;
604604
}
605605
case FF_BINARY: {
606606
int isTrue = PB(zQPN);
607607
@ <select class='submenuctrl%s(zXtraClass)' size='1' \
608
- @ name='%s(zQPN)' \
609
- @ onchange='gebi("f01").submit();'%s(zDisabled)>
608
+ @ name='%s(zQPN)' id='submenuctrl-%d(i)'%s(zDisabled)>
610609
@ <option value='1'\
611610
if( isTrue ){
612611
@ selected\
613612
}
614613
@ >%h(aSubmenuCtrl[i].zLabel)</option>
@@ -620,18 +619,18 @@
620619
@ </select>
621620
break;
622621
}
623622
case FF_CHECKBOX: {
624623
@ <label class='submenuctrl submenuckbox%s(zXtraClass)'>\
625
- @ <input type='checkbox' name='%s(zQPN)' \
624
+ @ <input type='checkbox' name='%s(zQPN)' id='submenuctrl-%d(i)' \
626625
if( PB(zQPN) ){
627626
@ checked \
628627
}
629628
if( aSubmenuCtrl[i].zJS ){
630
- @ onchange='%s(aSubmenuCtrl[i].zJS)'%s(zDisabled)>\
629
+ @ data-ctrl='%s(aSubmenuCtrl[i].zJS)'%s(zDisabled)>\
631630
}else{
632
- @ onchange='gebi("f01").submit();'%s(zDisabled)>\
631
+ @ %s(zDisabled)>\
633632
}
634633
@ %h(aSubmenuCtrl[i].zLabel)</label>
635634
break;
636635
}
637636
}
@@ -639,10 +638,11 @@
639638
@ </div>
640639
if( nSubmenuCtrl ){
641640
cgi_query_parameters_to_hidden();
642641
cgi_tag_query_parameter(0);
643642
@ </form>
643
+ style_load_one_js_file("menu.js");
644644
}
645645
}
646646
647647
zAd = style_adunit_text(&mAdFlags);
648648
if( (mAdFlags & ADUNIT_RIGHT_OK)!=0 ){
649649
--- src/style.c
+++ src/style.c
@@ -573,11 +573,11 @@
573 @ size='%d(-aSubmenuCtrl[i].iSize)' \
574 }else if( aSubmenuCtrl[i].iSize>0 ){
575 @ size='%d(aSubmenuCtrl[i].iSize)' \
576 @ maxlength='%d(aSubmenuCtrl[i].iSize)' \
577 }
578 @ onchange='gebi("f01").submit();'%s(zDisabled)></span>
579 break;
580 case FF_MULTI: {
581 int j;
582 const char *zVal = P(zQPN);
583 if( zXtraClass[0] ){
@@ -585,11 +585,11 @@
585 }
586 if( aSubmenuCtrl[i].zLabel ){
587 @ &nbsp;%h(aSubmenuCtrl[i].zLabel)\
588 }
589 @ <select class='submenuctrl' size='1' name='%s(zQPN)' \
590 @ onchange='gebi("f01").submit();'%s(zDisabled)>
591 for(j=0; j<aSubmenuCtrl[i].iSize*2; j+=2){
592 const char *zQPV = aSubmenuCtrl[i].azChoice[j];
593 @ <option value='%h(zQPV)'\
594 if( fossil_strcmp(zVal, zQPV)==0 ){
595 @ selected\
@@ -603,12 +603,11 @@
603 break;
604 }
605 case FF_BINARY: {
606 int isTrue = PB(zQPN);
607 @ <select class='submenuctrl%s(zXtraClass)' size='1' \
608 @ name='%s(zQPN)' \
609 @ onchange='gebi("f01").submit();'%s(zDisabled)>
610 @ <option value='1'\
611 if( isTrue ){
612 @ selected\
613 }
614 @ >%h(aSubmenuCtrl[i].zLabel)</option>
@@ -620,18 +619,18 @@
620 @ </select>
621 break;
622 }
623 case FF_CHECKBOX: {
624 @ <label class='submenuctrl submenuckbox%s(zXtraClass)'>\
625 @ <input type='checkbox' name='%s(zQPN)' \
626 if( PB(zQPN) ){
627 @ checked \
628 }
629 if( aSubmenuCtrl[i].zJS ){
630 @ onchange='%s(aSubmenuCtrl[i].zJS)'%s(zDisabled)>\
631 }else{
632 @ onchange='gebi("f01").submit();'%s(zDisabled)>\
633 }
634 @ %h(aSubmenuCtrl[i].zLabel)</label>
635 break;
636 }
637 }
@@ -639,10 +638,11 @@
639 @ </div>
640 if( nSubmenuCtrl ){
641 cgi_query_parameters_to_hidden();
642 cgi_tag_query_parameter(0);
643 @ </form>
 
644 }
645 }
646
647 zAd = style_adunit_text(&mAdFlags);
648 if( (mAdFlags & ADUNIT_RIGHT_OK)!=0 ){
649
--- src/style.c
+++ src/style.c
@@ -573,11 +573,11 @@
573 @ size='%d(-aSubmenuCtrl[i].iSize)' \
574 }else if( aSubmenuCtrl[i].iSize>0 ){
575 @ size='%d(aSubmenuCtrl[i].iSize)' \
576 @ maxlength='%d(aSubmenuCtrl[i].iSize)' \
577 }
578 @ id='submenuctrl-%d(i)'%s(zDisabled)></span>
579 break;
580 case FF_MULTI: {
581 int j;
582 const char *zVal = P(zQPN);
583 if( zXtraClass[0] ){
@@ -585,11 +585,11 @@
585 }
586 if( aSubmenuCtrl[i].zLabel ){
587 @ &nbsp;%h(aSubmenuCtrl[i].zLabel)\
588 }
589 @ <select class='submenuctrl' size='1' name='%s(zQPN)' \
590 @ id='submenuctrl-%d(i)'%s(zDisabled)>
591 for(j=0; j<aSubmenuCtrl[i].iSize*2; j+=2){
592 const char *zQPV = aSubmenuCtrl[i].azChoice[j];
593 @ <option value='%h(zQPV)'\
594 if( fossil_strcmp(zVal, zQPV)==0 ){
595 @ selected\
@@ -603,12 +603,11 @@
603 break;
604 }
605 case FF_BINARY: {
606 int isTrue = PB(zQPN);
607 @ <select class='submenuctrl%s(zXtraClass)' size='1' \
608 @ name='%s(zQPN)' id='submenuctrl-%d(i)'%s(zDisabled)>
 
609 @ <option value='1'\
610 if( isTrue ){
611 @ selected\
612 }
613 @ >%h(aSubmenuCtrl[i].zLabel)</option>
@@ -620,18 +619,18 @@
619 @ </select>
620 break;
621 }
622 case FF_CHECKBOX: {
623 @ <label class='submenuctrl submenuckbox%s(zXtraClass)'>\
624 @ <input type='checkbox' name='%s(zQPN)' id='submenuctrl-%d(i)' \
625 if( PB(zQPN) ){
626 @ checked \
627 }
628 if( aSubmenuCtrl[i].zJS ){
629 @ data-ctrl='%s(aSubmenuCtrl[i].zJS)'%s(zDisabled)>\
630 }else{
631 @ %s(zDisabled)>\
632 }
633 @ %h(aSubmenuCtrl[i].zLabel)</label>
634 break;
635 }
636 }
@@ -639,10 +638,11 @@
638 @ </div>
639 if( nSubmenuCtrl ){
640 cgi_query_parameters_to_hidden();
641 cgi_tag_query_parameter(0);
642 @ </form>
643 style_load_one_js_file("menu.js");
644 }
645 }
646
647 zAd = style_adunit_text(&mAdFlags);
648 if( (mAdFlags & ADUNIT_RIGHT_OK)!=0 ){
649
--- win/Makefile.mingw
+++ win/Makefile.mingw
@@ -606,10 +606,11 @@
606606
$(SRCDIR)/../skins/xekri/header.txt \
607607
$(SRCDIR)/diff.tcl \
608608
$(SRCDIR)/graph.js \
609609
$(SRCDIR)/href.js \
610610
$(SRCDIR)/markdown.md \
611
+ $(SRCDIR)/menu.js \
611612
$(SRCDIR)/sbsdiff.js \
612613
$(SRCDIR)/wiki.wiki
613614
614615
TRANS_SRC = \
615616
$(OBJDIR)/add_.c \
616617
--- win/Makefile.mingw
+++ win/Makefile.mingw
@@ -606,10 +606,11 @@
606 $(SRCDIR)/../skins/xekri/header.txt \
607 $(SRCDIR)/diff.tcl \
608 $(SRCDIR)/graph.js \
609 $(SRCDIR)/href.js \
610 $(SRCDIR)/markdown.md \
 
611 $(SRCDIR)/sbsdiff.js \
612 $(SRCDIR)/wiki.wiki
613
614 TRANS_SRC = \
615 $(OBJDIR)/add_.c \
616
--- win/Makefile.mingw
+++ win/Makefile.mingw
@@ -606,10 +606,11 @@
606 $(SRCDIR)/../skins/xekri/header.txt \
607 $(SRCDIR)/diff.tcl \
608 $(SRCDIR)/graph.js \
609 $(SRCDIR)/href.js \
610 $(SRCDIR)/markdown.md \
611 $(SRCDIR)/menu.js \
612 $(SRCDIR)/sbsdiff.js \
613 $(SRCDIR)/wiki.wiki
614
615 TRANS_SRC = \
616 $(OBJDIR)/add_.c \
617
--- win/Makefile.msc
+++ win/Makefile.msc
@@ -532,10 +532,11 @@
532532
$(SRCDIR)\../skins/xekri/header.txt \
533533
$(SRCDIR)\diff.tcl \
534534
$(SRCDIR)\graph.js \
535535
$(SRCDIR)\href.js \
536536
$(SRCDIR)\markdown.md \
537
+ $(SRCDIR)\menu.js \
537538
$(SRCDIR)\sbsdiff.js \
538539
$(SRCDIR)\wiki.wiki
539540
540541
OBJ = $(OX)\add$O \
541542
$(OX)\allrepo$O \
542543
--- win/Makefile.msc
+++ win/Makefile.msc
@@ -532,10 +532,11 @@
532 $(SRCDIR)\../skins/xekri/header.txt \
533 $(SRCDIR)\diff.tcl \
534 $(SRCDIR)\graph.js \
535 $(SRCDIR)\href.js \
536 $(SRCDIR)\markdown.md \
 
537 $(SRCDIR)\sbsdiff.js \
538 $(SRCDIR)\wiki.wiki
539
540 OBJ = $(OX)\add$O \
541 $(OX)\allrepo$O \
542
--- win/Makefile.msc
+++ win/Makefile.msc
@@ -532,10 +532,11 @@
532 $(SRCDIR)\../skins/xekri/header.txt \
533 $(SRCDIR)\diff.tcl \
534 $(SRCDIR)\graph.js \
535 $(SRCDIR)\href.js \
536 $(SRCDIR)\markdown.md \
537 $(SRCDIR)\menu.js \
538 $(SRCDIR)\sbsdiff.js \
539 $(SRCDIR)\wiki.wiki
540
541 OBJ = $(OX)\add$O \
542 $(OX)\allrepo$O \
543

Keyboard Shortcuts

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