Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
| Comment: | Ajaxy animated drop-down menu on clicking a new hamburger button in the default skin, as requested by drh on the forum: https://fossil-scm.org/forum/forumpost/40a18bd742 Initial version uses jQuery loaded from Google Hosted APIs for ease of development. |
|---|---|
| Downloads: | Tarball | ZIP archive |
| Timelines: | family | ancestors | descendants | both | js-hamburger-menu |
| Files: | files | file ages | folders |
| SHA3-256: |
d7c43c5aa7761cbc1ab4ce04fed48e48 |
| User & Date: | wyoung 2018-09-05 23:08:48.183 |
| Original Comment: | Ajaxy animated hamburger button as requested by drh on the forum: https://fossil-scm.org/forum/forumpost/40a18bd742 |
Context
|
2018-09-05
| ||
| 23:45 | Fixed a bug in the onclick handler for the new hamburger button which allowed the browser to follow our empty 'a href="#"' link. For some reason, Chrome only did this sometimes, not always, which lead to me thinking it was some kind of race condition. ... (check-in: e806e5c4df user: wyoung tags: js-hamburger-menu) | |
| 23:08 | Ajaxy animated drop-down menu on clicking a new hamburger button in the default skin, as requested by drh on the forum: https://fossil-scm.org/forum/forumpost/40a18bd742 Initial version uses jQuery loaded from Google Hosted APIs for ease of development. ... (check-in: d7c43c5aa7 user: wyoung tags: js-hamburger-menu) | |
| 15:16 | Avoid column breaks inside a top-level bullet in the /sitemap. ... (check-in: dc5e06ff71 user: drh tags: trunk) | |
Changes
Changes to skins/default/css.txt.
| ︙ | ︙ | |||
81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 |
clear:both;
background:#eaeaea linear-gradient(#fafafa, #eaeaea) repeat-x;
border:1px solid #eaeaea;
border-radius:5px;
overflow-x: auto;
overflow-y: hidden;
white-space: nowrap;
}
.mainmenu a {
text-decoration:none;
color: #777;
border-right:1px solid #eaeaea;
}
.mainmenu a.active,
.mainmenu a:hover {
color: #000;
border-bottom:2px solid #D26911;
}
.submenu {
font-size: .7em;
padding: 10px;
border-bottom: 1px solid #ccc;
}
| > > > > > > > > > > > > > > | 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 |
clear:both;
background:#eaeaea linear-gradient(#fafafa, #eaeaea) repeat-x;
border:1px solid #eaeaea;
border-radius:5px;
overflow-x: auto;
overflow-y: hidden;
white-space: nowrap;
z-index: 21; /* just above hbdrop */
}
.mainmenu a {
text-decoration:none;
color: #777;
border-right:1px solid #eaeaea;
}
.mainmenu a.active,
.mainmenu a:hover {
color: #000;
border-bottom:2px solid #D26911;
}
div#hbdrop {
background-color: white;
border: 1px solid black;
border-top: white;
border-radius: 0 0 0.5em 0.5em;
display: none;
font-size: 80%;
left: 2em;
max-width: 33%;
position: absolute;
z-index: 20; /* just below mainmenu, but above timeline bubbles */
}
.submenu {
font-size: .7em;
padding: 10px;
border-bottom: 1px solid #ccc;
}
|
| ︙ | ︙ |
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 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 |
<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>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<th1>
html "<script nonce='$nonce'>"
html " (function() { var home='$home'; "
</th1>
var panel = $("div#hbdrop");
function hidePanel() { panel.slideUp() }
function showPanel() { panel.slideDown() }
panel.on('click', hidePanel);
var needSitemapHTML = true;
$("div.mainmenu > a").first().on('click', function() {
if (panel.is(":visible")) {
// Hamburger button clicked a second time.
hidePanel();
}
else if (needSitemapHTML) {
// Only get it once per page load: it isn't likely to
// change on us.
$.get(home + '/sitemap', function(reply) {
panel.html($("ul#sitemap", reply));
needSitemapHTML = false;
showPanel();
});
}
else {
showPanel(); // just show what we built above
}
});
})();
</script>
|
Changes to skins/default/header.txt.
| ︙ | ︙ | |||
15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
upvar home home
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"
}
}
menulink $index_page Home {}
if {[anycap jor]} {
menulink /timeline Timeline {}
}
if {[hascap oh]} {
menulink /dir?ci=tip Files desktoponly
}
| > | 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
upvar home home
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 href='#'>☰</a>"
menulink $index_page Home {}
if {[anycap jor]} {
menulink /timeline Timeline {}
}
if {[hascap oh]} {
menulink /dir?ci=tip Files desktoponly
}
|
| ︙ | ︙ | |||
37 38 39 40 41 42 43 |
menulink /ticket Tickets wideonly
}
if {[hascap j]} {
menulink /wiki Wiki wideonly
}
if {[hascap s]} {
menulink /setup Admin {}
| < < < < > | 38 39 40 41 42 43 44 45 46 47 48 49 |
menulink /ticket Tickets wideonly
}
if {[hascap j]} {
menulink /wiki Wiki wideonly
}
if {[hascap s]} {
menulink /setup Admin {}
} elseif {[hascap a]} {
menulink /setup_ulist Users {}
}
</th1></div>
<div id='hbdrop'></div>
|
Changes to src/sitemap.c.
| ︙ | ︙ | |||
44 45 46 47 48 49 50 |
};
login_check_credentials();
srchFlags = search_restrict(SRCH_ALL);
style_header("Site Map");
style_adunit_config(ADUNIT_RIGHT_OK);
@ <div class="columns" style="column-width:20em">
| | | 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
};
login_check_credentials();
srchFlags = search_restrict(SRCH_ALL);
style_header("Site Map");
style_adunit_config(ADUNIT_RIGHT_OK);
@ <div class="columns" style="column-width:20em">
@ <ul id="sitemap">
@ <li>%z(href("%R/home"))Home Page</a>
for(i=0; i<sizeof(aExtra)/sizeof(aExtra[0]); i++){
char *z = db_get(aExtra[i].zProperty,0);
if( z==0 || z[0]==0 ) continue;
if( !inSublist ){
@ <ul>
inSublist = 1;
|
| ︙ | ︙ |
Changes to src/style.c.
| ︙ | ︙ | |||
389 390 391 392 393 394 395 | */ static char zDfltHeader[] = @ <html> @ <head> @ <base href="$baseurl/$current_page" /> @ <meta http-equiv="Content-Security-Policy" \ @ content="default-src 'self' data: ; \ | | | 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 | */ static char zDfltHeader[] = @ <html> @ <head> @ <base href="$baseurl/$current_page" /> @ <meta http-equiv="Content-Security-Policy" \ @ content="default-src 'self' data: ; \ @ script-src 'self' 'nonce-$<nonce>' ajax.googleapis.com ;\ @ style-src 'self' 'unsafe-inline'" /> @ <meta name="viewport" content="width=device-width, initial-scale=1.0"> @ <title>$<project_name>: $<title></title> @ <link rel="alternate" type="application/rss+xml" title="RSS Feed" \ @ href="$home/timeline.rss" /> @ <link rel="stylesheet" href="$stylesheet_url" type="text/css" \ @ media="screen" /> |
| ︙ | ︙ |