Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Hamburger menu enhancements: (1) Rename the JS to src/hbmenu.js (2) Make the JS independent of TH1 so that it can be loaded using builtin_request_js(). (3) Add a new TH1 command that invokes builtin_request_js(). (4) Revise the default and plain_gray skins to make use of the previous. |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
9cd74289c0a76606becb4bf66cac55f6 |
User & Date: | drh 2021-01-25 18:57:08 |
Context
2021-01-25
| ||
19:11 | Add the hamburger menu to the ardoise skin. ... (check-in: b2065466 user: drh tags: trunk) | |
18:57 | Hamburger menu enhancements: (1) Rename the JS to src/hbmenu.js (2) Make the JS independent of TH1 so that it can be loaded using builtin_request_js(). (3) Add a new TH1 command that invokes builtin_request_js(). (4) Revise the default and plain_gray skins to make use of the previous. ... (check-in: 9cd74289 user: drh tags: trunk) | |
18:54 | Fix the makefile in the previous check-in. ... (Closed-Leaf check-in: 5fbc3b30 user: drh tags: standard-hbmenu) | |
18:29 | Fix the selector for the CSS rules on the hamburger menu so that "hddrop" can be outside of "mainmenu". ... (check-in: 18e2f533 user: drh tags: trunk) | |
Changes
Changes to skins/default/footer.txt.
1 2 3 4 5 | <div class="footer"> This page was generated in about <th1>puts [expr {([utime]+[stime]+1000)/1000*0.001}]</th1>s by Fossil $release_version $manifest_version $manifest_date </div> | < < < | 1 2 3 4 5 | <div class="footer"> This page was generated in about <th1>puts [expr {([utime]+[stime]+1000)/1000*0.001}]</th1>s by Fossil $release_version $manifest_version $manifest_date </div> |
Changes to skins/default/header.txt.
︙ | ︙ | |||
16 17 18 19 20 21 22 23 24 25 26 27 28 29 | if {[string range $url 0 [string length $current]] eq "/$current"} { html "<a href='$home$url' class='active $cls'>$name</a>\n" } else { html "<a href='$home$url' class='$cls'>$name</a>\n" } } html "<a id='hbbtn' href='$home/sitemap' aria-label='Site Map'>☰</a>" menulink $index_page Home {} if {[anycap jor]} { menulink /timeline Timeline {} } if {[hascap oh]} { if {![info exists current_checkin]} {set current_checkin tip} menulink /dir?ci=$current_checkin Files desktoponly | > | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | if {[string range $url 0 [string length $current]] eq "/$current"} { html "<a href='$home$url' class='active $cls'>$name</a>\n" } else { html "<a href='$home$url' class='$cls'>$name</a>\n" } } html "<a id='hbbtn' href='$home/sitemap' aria-label='Site Map'>☰</a>" builtin_request_js hbmenu.js menulink $index_page Home {} if {[anycap jor]} { menulink /timeline Timeline {} } if {[hascap oh]} { if {![info exists current_checkin]} {set current_checkin tip} menulink /dir?ci=$current_checkin Files desktoponly |
︙ | ︙ |
Changes to skins/plain_gray/header.txt.
1 2 3 4 5 6 7 8 9 10 11 12 13 | <div class="header"> <div class="title">$<project_name>: $<title></div> </div> <div class="mainmenu"> <th1> html "<a id='hbbtn' href='$home/sitemap' aria-label='Site Map'>☰</a>" html "<a href='$home$index_page'>Home</a>\n" if {[anycap jor]} { html "<a href='$home/timeline'>Timeline</a>\n" } if {[anoncap oh]} { html "<a href='$home/tree?ci=tip'>Files</a>\n" } | > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <div class="header"> <div class="title">$<project_name>: $<title></div> </div> <div class="mainmenu"> <th1> html "<a id='hbbtn' href='$home/sitemap' aria-label='Site Map'>☰</a>" builtin_request_js hbmenu.js html "<a href='$home$index_page'>Home</a>\n" if {[anycap jor]} { html "<a href='$home/timeline'>Timeline</a>\n" } if {[anoncap oh]} { html "<a href='$home/tree?ci=tip'>Files</a>\n" } |
︙ | ︙ | |||
30 31 32 33 34 35 36 | if {[info exists login]} { html "<a href='$home/login'>Logout</a>\n" } else { html "<a href='$home/login'>Login</a>\n" } </th1></div> <div id='hbdrop' class='hbdrop'></div> | < < < | 31 32 33 34 35 36 37 | if {[info exists login]} { html "<a href='$home/login'>Logout</a>\n" } else { html "<a href='$home/login'>Login</a>\n" } </th1></div> <div id='hbdrop' class='hbdrop'></div> |
Name change from skins/default/js.txt to src/hbmenu.js.
1 | /* | | > | < | > > > > > > > > > > > > > > > > > > > > > > > > | < < < < | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 | /* ** Originally: Copyright © 2018 Warren Young ** ** This program is free software; you can redistribute it and/or ** modify it under the terms of the Simplified BSD License (also ** known as the "2-Clause License" or "FreeBSD License".) ** ** This program is distributed in the hope that it will be useful, ** but without any warranty; without even the implied warranty of ** merchantability or fitness for a particular purpose. ** ** Contact: wyoung on the Fossil forum, https://fossil-scm.org/forum/ ** Modified by others. ** ******************************************************************************* ** ** This file contains the JS code used to implement the expanding hamburger ** menu on various skins. ** ** This was original the "js.txt" file for the default skin. It was subsequently ** moved into src/hbmenu.js so that it could be more easily reused by other skins ** using the "builtin_request_js" TH1 command. ** ** Operation: ** ** This script request that the HTML contain two elements: ** ** <a id="hbbtn"> <--- The hamburger menu button ** <div id="hbdrop"> <--- Container for the hamburger menu ** ** Bindings are made on hbbtn so that when it is clicked, the following ** happens: ** ** 1. An XHR is made to /sitemap?popup to fetch the HTML for the ** popup menu. ** ** 2. The HTML for the popup is inserted into hddrop. ** ** 3. The hddrop container is made visible. ** ** CSS rules are also needed to cause the hddrop to be initially invisible, ** and to correctly style and position the hddrop container. */ (function() { var hbButton = document.getElementById("hbbtn"); if (!hbButton) return; // no hamburger button if (!document.addEventListener) return; // Incompatible browser var panel = document.getElementById("hbdrop"); if (!panel) return; // site admin might've nuked it if (!panel.style) return; // shouldn't happen, but be sure var panelBorder = panel.style.border; var panelInitialized = false; // reset if browser window is resized var panelResetBorderTimerID = 0; // used to cancel post-animation tasks |
︙ | ︙ | |||
218 219 220 221 222 223 224 | panel.innerHTML = sm.outerHTML; // Display the panel showPanel(); } } // else, can't parse response as HTML or XML } | | | 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 | panel.innerHTML = sm.outerHTML; // Display the panel showPanel(); } } // else, can't parse response as HTML or XML } xhr.open("GET", hbButton.href + "?popup"); xhr.responseType = "document"; xhr.send(); } else { showPanel(); // just show what we built above } } } })(); |
Changes to src/main.mk.
︙ | ︙ | |||
188 189 190 191 192 193 194 | $(SRCDIR)/../skins/bootstrap/details.txt \ $(SRCDIR)/../skins/bootstrap/footer.txt \ $(SRCDIR)/../skins/bootstrap/header.txt \ $(SRCDIR)/../skins/default/css.txt \ $(SRCDIR)/../skins/default/details.txt \ $(SRCDIR)/../skins/default/footer.txt \ $(SRCDIR)/../skins/default/header.txt \ | < | 188 189 190 191 192 193 194 195 196 197 198 199 200 201 | $(SRCDIR)/../skins/bootstrap/details.txt \ $(SRCDIR)/../skins/bootstrap/footer.txt \ $(SRCDIR)/../skins/bootstrap/header.txt \ $(SRCDIR)/../skins/default/css.txt \ $(SRCDIR)/../skins/default/details.txt \ $(SRCDIR)/../skins/default/footer.txt \ $(SRCDIR)/../skins/default/header.txt \ $(SRCDIR)/../skins/eagle/css.txt \ $(SRCDIR)/../skins/eagle/details.txt \ $(SRCDIR)/../skins/eagle/footer.txt \ $(SRCDIR)/../skins/eagle/header.txt \ $(SRCDIR)/../skins/enhanced1/css.txt \ $(SRCDIR)/../skins/enhanced1/details.txt \ $(SRCDIR)/../skins/enhanced1/footer.txt \ |
︙ | ︙ | |||
244 245 246 247 248 249 250 251 252 253 254 255 256 257 | $(SRCDIR)/fossil.page.wikiedit.js \ $(SRCDIR)/fossil.pikchr.js \ $(SRCDIR)/fossil.popupwidget.js \ $(SRCDIR)/fossil.storage.js \ $(SRCDIR)/fossil.tabs.js \ $(SRCDIR)/fossil.wikiedit-wysiwyg.js \ $(SRCDIR)/graph.js \ $(SRCDIR)/href.js \ $(SRCDIR)/login.js \ $(SRCDIR)/markdown.md \ $(SRCDIR)/menu.js \ $(SRCDIR)/sbsdiff.js \ $(SRCDIR)/scroll.js \ $(SRCDIR)/skin.js \ | > | 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 | $(SRCDIR)/fossil.page.wikiedit.js \ $(SRCDIR)/fossil.pikchr.js \ $(SRCDIR)/fossil.popupwidget.js \ $(SRCDIR)/fossil.storage.js \ $(SRCDIR)/fossil.tabs.js \ $(SRCDIR)/fossil.wikiedit-wysiwyg.js \ $(SRCDIR)/graph.js \ $(SRCDIR)/hbmenu.js \ $(SRCDIR)/href.js \ $(SRCDIR)/login.js \ $(SRCDIR)/markdown.md \ $(SRCDIR)/menu.js \ $(SRCDIR)/sbsdiff.js \ $(SRCDIR)/scroll.js \ $(SRCDIR)/skin.js \ |
︙ | ︙ |
Changes to src/th_main.c.
︙ | ︙ | |||
1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 | } /* ** TH1 command: styleScript ?BUILTIN-FILENAME? ** ** Render the js.txt file from the current skin. Or, if an argument ** is supplied, render the built-in filename given. */ static int styleScriptCmd( Th_Interp *interp, void *p, int argc, const char **argv, int *argl | > > > > > | 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 | } /* ** TH1 command: styleScript ?BUILTIN-FILENAME? ** ** Render the js.txt file from the current skin. Or, if an argument ** is supplied, render the built-in filename given. ** ** By "rendering" we mean that the script is loaded and run through ** TH1 to expand variables and process <th1>...</th1> script. Contrast ** with the "builtin_request_js BUILTIN-FILENAME" command which just ** loads the file as-is without interpretation. */ static int styleScriptCmd( Th_Interp *interp, void *p, int argc, const char **argv, int *argl |
︙ | ︙ | |||
1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 | return TH_OK; }else{ Th_SetResult(interp, "repository unavailable", -1); return TH_ERROR; } } /* ** TH1 command: artifact ID ?FILENAME? ** ** Attempts to locate the specified artifact and return its contents. An ** error is generated if the repository is not open or the artifact cannot ** be found. | > > > > > > > > > > > > > > > > > > > > > | 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 | return TH_OK; }else{ Th_SetResult(interp, "repository unavailable", -1); return TH_ERROR; } } /* ** TH1 command: builtin_request_js NAME ** ** Request that the built-in javascript file called NAME be added to the ** end of the generated page. ** ** See also: styleScript */ static int builtinRequestJsCmd( Th_Interp *interp, void *p, int argc, const char **argv, int *argl ){ if( argc!=2 ){ return Th_WrongNumArgs(interp, "builtin_request_js NAME"); } builtin_request_js(argv[1]); return TH_OK; } /* ** TH1 command: artifact ID ?FILENAME? ** ** Attempts to locate the specified artifact and return its contents. An ** error is generated if the repository is not open or the artifact cannot ** be found. |
︙ | ︙ | |||
2235 2236 2237 2238 2239 2240 2241 2242 2243 2244 2245 2246 2247 2248 | const char *zName; Th_CommandProc xProc; void *pContext; } aCommand[] = { {"anoncap", hascapCmd, (void*)&anonFlag}, {"anycap", anycapCmd, 0}, {"artifact", artifactCmd, 0}, {"captureTh1", captureTh1Cmd, 0}, {"cgiHeaderLine", cgiHeaderLineCmd, 0}, {"checkout", checkoutCmd, 0}, {"combobox", comboboxCmd, 0}, {"copybtn", copybtnCmd, 0}, {"date", dateCmd, 0}, {"decorate", wikiCmd, (void*)&aFlags[2]}, | > | 2261 2262 2263 2264 2265 2266 2267 2268 2269 2270 2271 2272 2273 2274 2275 | const char *zName; Th_CommandProc xProc; void *pContext; } aCommand[] = { {"anoncap", hascapCmd, (void*)&anonFlag}, {"anycap", anycapCmd, 0}, {"artifact", artifactCmd, 0}, {"builtin_request_js", builtinRequestJsCmd, 0}, {"captureTh1", captureTh1Cmd, 0}, {"cgiHeaderLine", cgiHeaderLineCmd, 0}, {"checkout", checkoutCmd, 0}, {"combobox", comboboxCmd, 0}, {"copybtn", copybtnCmd, 0}, {"date", dateCmd, 0}, {"decorate", wikiCmd, (void*)&aFlags[2]}, |
︙ | ︙ |
Changes to win/Makefile.mingw.
︙ | ︙ | |||
600 601 602 603 604 605 606 | $(SRCDIR)/../skins/bootstrap/details.txt \ $(SRCDIR)/../skins/bootstrap/footer.txt \ $(SRCDIR)/../skins/bootstrap/header.txt \ $(SRCDIR)/../skins/default/css.txt \ $(SRCDIR)/../skins/default/details.txt \ $(SRCDIR)/../skins/default/footer.txt \ $(SRCDIR)/../skins/default/header.txt \ | < | 600 601 602 603 604 605 606 607 608 609 610 611 612 613 | $(SRCDIR)/../skins/bootstrap/details.txt \ $(SRCDIR)/../skins/bootstrap/footer.txt \ $(SRCDIR)/../skins/bootstrap/header.txt \ $(SRCDIR)/../skins/default/css.txt \ $(SRCDIR)/../skins/default/details.txt \ $(SRCDIR)/../skins/default/footer.txt \ $(SRCDIR)/../skins/default/header.txt \ $(SRCDIR)/../skins/eagle/css.txt \ $(SRCDIR)/../skins/eagle/details.txt \ $(SRCDIR)/../skins/eagle/footer.txt \ $(SRCDIR)/../skins/eagle/header.txt \ $(SRCDIR)/../skins/enhanced1/css.txt \ $(SRCDIR)/../skins/enhanced1/details.txt \ $(SRCDIR)/../skins/enhanced1/footer.txt \ |
︙ | ︙ | |||
656 657 658 659 660 661 662 663 664 665 666 667 668 669 | $(SRCDIR)/fossil.page.wikiedit.js \ $(SRCDIR)/fossil.pikchr.js \ $(SRCDIR)/fossil.popupwidget.js \ $(SRCDIR)/fossil.storage.js \ $(SRCDIR)/fossil.tabs.js \ $(SRCDIR)/fossil.wikiedit-wysiwyg.js \ $(SRCDIR)/graph.js \ $(SRCDIR)/href.js \ $(SRCDIR)/login.js \ $(SRCDIR)/markdown.md \ $(SRCDIR)/menu.js \ $(SRCDIR)/sbsdiff.js \ $(SRCDIR)/scroll.js \ $(SRCDIR)/skin.js \ | > | 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 | $(SRCDIR)/fossil.page.wikiedit.js \ $(SRCDIR)/fossil.pikchr.js \ $(SRCDIR)/fossil.popupwidget.js \ $(SRCDIR)/fossil.storage.js \ $(SRCDIR)/fossil.tabs.js \ $(SRCDIR)/fossil.wikiedit-wysiwyg.js \ $(SRCDIR)/graph.js \ $(SRCDIR)/hbmenu.js \ $(SRCDIR)/href.js \ $(SRCDIR)/login.js \ $(SRCDIR)/markdown.md \ $(SRCDIR)/menu.js \ $(SRCDIR)/sbsdiff.js \ $(SRCDIR)/scroll.js \ $(SRCDIR)/skin.js \ |
︙ | ︙ |
Changes to win/Makefile.msc.
︙ | ︙ | |||
521 522 523 524 525 526 527 | "$(SRCDIR)\..\skins\bootstrap\details.txt" \ "$(SRCDIR)\..\skins\bootstrap\footer.txt" \ "$(SRCDIR)\..\skins\bootstrap\header.txt" \ "$(SRCDIR)\..\skins\default\css.txt" \ "$(SRCDIR)\..\skins\default\details.txt" \ "$(SRCDIR)\..\skins\default\footer.txt" \ "$(SRCDIR)\..\skins\default\header.txt" \ | < | 521 522 523 524 525 526 527 528 529 530 531 532 533 534 | "$(SRCDIR)\..\skins\bootstrap\details.txt" \ "$(SRCDIR)\..\skins\bootstrap\footer.txt" \ "$(SRCDIR)\..\skins\bootstrap\header.txt" \ "$(SRCDIR)\..\skins\default\css.txt" \ "$(SRCDIR)\..\skins\default\details.txt" \ "$(SRCDIR)\..\skins\default\footer.txt" \ "$(SRCDIR)\..\skins\default\header.txt" \ "$(SRCDIR)\..\skins\eagle\css.txt" \ "$(SRCDIR)\..\skins\eagle\details.txt" \ "$(SRCDIR)\..\skins\eagle\footer.txt" \ "$(SRCDIR)\..\skins\eagle\header.txt" \ "$(SRCDIR)\..\skins\enhanced1\css.txt" \ "$(SRCDIR)\..\skins\enhanced1\details.txt" \ "$(SRCDIR)\..\skins\enhanced1\footer.txt" \ |
︙ | ︙ | |||
577 578 579 580 581 582 583 584 585 586 587 588 589 590 | "$(SRCDIR)\fossil.page.wikiedit.js" \ "$(SRCDIR)\fossil.pikchr.js" \ "$(SRCDIR)\fossil.popupwidget.js" \ "$(SRCDIR)\fossil.storage.js" \ "$(SRCDIR)\fossil.tabs.js" \ "$(SRCDIR)\fossil.wikiedit-wysiwyg.js" \ "$(SRCDIR)\graph.js" \ "$(SRCDIR)\href.js" \ "$(SRCDIR)\login.js" \ "$(SRCDIR)\markdown.md" \ "$(SRCDIR)\menu.js" \ "$(SRCDIR)\sbsdiff.js" \ "$(SRCDIR)\scroll.js" \ "$(SRCDIR)\skin.js" \ | > | 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 | "$(SRCDIR)\fossil.page.wikiedit.js" \ "$(SRCDIR)\fossil.pikchr.js" \ "$(SRCDIR)\fossil.popupwidget.js" \ "$(SRCDIR)\fossil.storage.js" \ "$(SRCDIR)\fossil.tabs.js" \ "$(SRCDIR)\fossil.wikiedit-wysiwyg.js" \ "$(SRCDIR)\graph.js" \ "$(SRCDIR)\hbmenu.js" \ "$(SRCDIR)\href.js" \ "$(SRCDIR)\login.js" \ "$(SRCDIR)\markdown.md" \ "$(SRCDIR)\menu.js" \ "$(SRCDIR)\sbsdiff.js" \ "$(SRCDIR)\scroll.js" \ "$(SRCDIR)\skin.js" \ |
︙ | ︙ | |||
1134 1135 1136 1137 1138 1139 1140 | echo "$(SRCDIR)\../skins/bootstrap/details.txt" >> $@ echo "$(SRCDIR)\../skins/bootstrap/footer.txt" >> $@ echo "$(SRCDIR)\../skins/bootstrap/header.txt" >> $@ echo "$(SRCDIR)\../skins/default/css.txt" >> $@ echo "$(SRCDIR)\../skins/default/details.txt" >> $@ echo "$(SRCDIR)\../skins/default/footer.txt" >> $@ echo "$(SRCDIR)\../skins/default/header.txt" >> $@ | < | 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 | echo "$(SRCDIR)\../skins/bootstrap/details.txt" >> $@ echo "$(SRCDIR)\../skins/bootstrap/footer.txt" >> $@ echo "$(SRCDIR)\../skins/bootstrap/header.txt" >> $@ echo "$(SRCDIR)\../skins/default/css.txt" >> $@ echo "$(SRCDIR)\../skins/default/details.txt" >> $@ echo "$(SRCDIR)\../skins/default/footer.txt" >> $@ echo "$(SRCDIR)\../skins/default/header.txt" >> $@ echo "$(SRCDIR)\../skins/eagle/css.txt" >> $@ echo "$(SRCDIR)\../skins/eagle/details.txt" >> $@ echo "$(SRCDIR)\../skins/eagle/footer.txt" >> $@ echo "$(SRCDIR)\../skins/eagle/header.txt" >> $@ echo "$(SRCDIR)\../skins/enhanced1/css.txt" >> $@ echo "$(SRCDIR)\../skins/enhanced1/details.txt" >> $@ echo "$(SRCDIR)\../skins/enhanced1/footer.txt" >> $@ |
︙ | ︙ | |||
1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 | echo "$(SRCDIR)\fossil.page.wikiedit.js" >> $@ echo "$(SRCDIR)\fossil.pikchr.js" >> $@ echo "$(SRCDIR)\fossil.popupwidget.js" >> $@ echo "$(SRCDIR)\fossil.storage.js" >> $@ echo "$(SRCDIR)\fossil.tabs.js" >> $@ echo "$(SRCDIR)\fossil.wikiedit-wysiwyg.js" >> $@ echo "$(SRCDIR)\graph.js" >> $@ echo "$(SRCDIR)\href.js" >> $@ echo "$(SRCDIR)\login.js" >> $@ echo "$(SRCDIR)\markdown.md" >> $@ echo "$(SRCDIR)\menu.js" >> $@ echo "$(SRCDIR)\sbsdiff.js" >> $@ echo "$(SRCDIR)\scroll.js" >> $@ echo "$(SRCDIR)\skin.js" >> $@ | > | 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 | echo "$(SRCDIR)\fossil.page.wikiedit.js" >> $@ echo "$(SRCDIR)\fossil.pikchr.js" >> $@ echo "$(SRCDIR)\fossil.popupwidget.js" >> $@ echo "$(SRCDIR)\fossil.storage.js" >> $@ echo "$(SRCDIR)\fossil.tabs.js" >> $@ echo "$(SRCDIR)\fossil.wikiedit-wysiwyg.js" >> $@ echo "$(SRCDIR)\graph.js" >> $@ echo "$(SRCDIR)\hbmenu.js" >> $@ echo "$(SRCDIR)\href.js" >> $@ echo "$(SRCDIR)\login.js" >> $@ echo "$(SRCDIR)\markdown.md" >> $@ echo "$(SRCDIR)\menu.js" >> $@ echo "$(SRCDIR)\sbsdiff.js" >> $@ echo "$(SRCDIR)\scroll.js" >> $@ echo "$(SRCDIR)\skin.js" >> $@ |
︙ | ︙ |