##// END OF EJS Templates
hgweb: re-implement followlines UI selection using buttons...
hgweb: re-implement followlines UI selection using buttons This changeset attempts to solve two issues with the "followlines" UI in hgweb. First the "followlines" action is currently not easily discoverable (one has to hover on a line for some time, wait for the invite message to appear and then perform some action). Second, it gets in the way of natural line selection, especially in filerevision view. This changeset introduces an additional markup element (a <button class="btn-followlines">) alongside each content line of the view. This button now holds events for line selection that were previously plugged onto content lines directly. Consequently, there's no more action on content lines, hence restoring the "natural line selection" behavior (solving the second problem). These buttons are hidden by default and get displayed upon hover of content lines; then upon hover of a button itself, a text inviting followlines section shows up. This solves the first problem (discoverability) as we now have a clear visual element indicating that "some action could be perform" (i.e. a button) and that is self-documented. In followlines.js, all event listeners are now attached to these <button> elements. The custom "floating tooltip" element is dropped as <button> elements are now self-documented through a "title" attribute that changes depending on preceding actions (selection started or not, in particular). The new <button> element is inserted in followlines.js script (thus only visible if JavaScript is activated); it contains a "+" and "-" with a "diff-semantics" style; upon hover, it scales up. To find the parent element under which to insert the <button> we either rely on the "data-selectabletag" attribute (which defines the HTML tag of children of class="sourcelines" element e.g. <span> for filerevision view and <tr> for annotate view) or use a child of the latter elements if we find an element with class="followlines-btn-parent" (useful for annotate view, for which we have to find the <td> in which to insert the <button>). On noticeable change in CSS concerns the "margin-left" of span:before pseudo-elements in filelog view that has been increased a bit in order to leave space for the new button to appear between line number column and line content one. Also note the "z-index" addition for "annotate-info" box so that the latter appears on top of new buttons (instead of getting hidden). In some respect, the UI similar to line commenting feature that is implemented in popular code hosting site like GitHub, BitBucket or Kallithea.

File last commit:

r33390:32331f54 default
r33390:32331f54 default
Show More
test-hgweb.t
873 lines | 21.7 KiB | text/troff | Tads3Lexer
Matt Mackall
tests: replace exit 80 with #require
r22046 #require serve
Mads Kiilerich
tests: use 'hghave serve' to guard tests that requires serve daemon management
r15446
Matt Mackall
tests: unify test-hgweb
r12432 Some tests for hgweb. Tests static files, plain files and different 404's.
$ hg init test
$ cd test
$ mkdir da
$ echo foo > da/foo
$ echo foo > foo
$ hg ci -Ambase
adding da/foo
adding foo
av6
hgweb: allow symbolic revisions with forward slashes in urls...
r25777 $ hg bookmark -r0 '@'
$ hg bookmark -r0 'a b c'
$ hg bookmark -r0 'd/e/f'
Matt Mackall
tests: unify test-hgweb
r12432 $ hg serve -n test -p $HGPORT -d --pid-file=hg.pid -A access.log -E errors.log
$ cat hg.pid >> $DAEMON_PIDS
manifest
Matt Mackall
tests: drop explicit $TESTDIR from executables...
r25472 $ (get-with-headers.py localhost:$HGPORT 'file/tip/?style=raw')
Matt Mackall
tests: unify test-hgweb
r12432 200 Script output follows
drwxr-xr-x da
-rw-r--r-- 4 foo
Matt Mackall
tests: drop explicit $TESTDIR from executables...
r25472 $ (get-with-headers.py localhost:$HGPORT 'file/tip/da?style=raw')
Matt Mackall
tests: unify test-hgweb
r12432 200 Script output follows
-rw-r--r-- 4 foo
plain file
Matt Mackall
tests: drop explicit $TESTDIR from executables...
r25472 $ get-with-headers.py localhost:$HGPORT 'file/tip/foo?style=raw'
Matt Mackall
tests: unify test-hgweb
r12432 200 Script output follows
foo
should give a 404 - static file that does not exist
Matt Mackall
tests: drop explicit $TESTDIR from executables...
r25472 $ get-with-headers.py localhost:$HGPORT 'static/bogus'
Matt Mackall
tests: unify test-hgweb
r12432 404 Not Found
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
<head>
<link rel="icon" href="/static/hgicon.png" type="image/png" />
<meta name="robots" content="index, nofollow" />
<link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
Benoit Allard
web: Made elapsed time calculation dynamic (javascript)....
r14046 <script type="text/javascript" src="/static/mercurial.js"></script>
Matt Mackall
tests: unify test-hgweb
r12432
<title>test: error</title>
</head>
<body>
<div class="container">
<div class="menu">
<div class="logo">
Matt Mackall
urls: bulk-change primary website URLs
r26421 <a href="https://mercurial-scm.org/">
Matt Mackall
tests: unify test-hgweb
r12432 <img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial" /></a>
</div>
<ul>
<li><a href="/shortlog">log</a></li>
<li><a href="/graph">graph</a></li>
<li><a href="/tags">tags</a></li>
Alexander Solovyov
hgweb: add separate page with bookmarks listing
r13597 <li><a href="/bookmarks">bookmarks</a></li>
Matt Mackall
tests: unify test-hgweb
r12432 <li><a href="/branches">branches</a></li>
Ross Lagerwall
hgweb: make paper:error consistent with template...
r17290 </ul>
<ul>
Augie Fackler
hgweb: add help link to templates missed in ead4e21f49f1
r12680 <li><a href="/help">help</a></li>
Matt Mackall
tests: unify test-hgweb
r12432 </ul>
</div>
<div class="main">
Bryan O'Sullivan
tests: update hgweb tests to include breadcrumbs
r18264 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
Matt Mackall
tests: unify test-hgweb
r12432 <h3>error</h3>
Gregory Szorc
hgweb: consolidate search form for paper...
r32758
Matt Mackall
tests: unify test-hgweb
r12432 <form class="search" action="/log">
Gregory Szorc
hgweb: consolidate search form for paper...
r32758 <p><input name="rev" id="search1" type="text" size="30" value="" /></p>
Alexander Plavin
paper: edit search hint to include new feature description
r19796 <div id="hint">Find changesets by keywords (author, files, the commit message), revision
number or hash, or <a href="/help/revsets">revset expression</a>.</div>
Matt Mackall
tests: unify test-hgweb
r12432 </form>
<div class="description">
<p>
An error occurred while processing your request:
</p>
<p>
Not Found
</p>
</div>
</div>
</div>
</body>
</html>
[1]
should give a 404 - bad revision
Matt Mackall
tests: drop explicit $TESTDIR from executables...
r25472 $ get-with-headers.py localhost:$HGPORT 'file/spam/foo?style=raw'
Matt Mackall
tests: unify test-hgweb
r12432 404 Not Found
error: revision not found: spam
[1]
should give a 400 - bad command
Matt Mackall
tests: drop explicit $TESTDIR from executables...
r25472 $ get-with-headers.py localhost:$HGPORT 'file/tip/foo?cmd=spam&style=raw'
Matt Mackall
tests: unify test-hgweb
r12432 400* (glob)
error: no such method: spam
[1]
Matt Mackall
tests: drop explicit $TESTDIR from executables...
r25472 $ get-with-headers.py --headeronly localhost:$HGPORT '?cmd=spam'
Anton Shestakov
hgweb: fail if an invalid command was supplied in url path (issue4071)...
r22506 400 no such method: spam
[1]
should give a 400 - bad command as a part of url path (issue4071)
Matt Mackall
tests: drop explicit $TESTDIR from executables...
r25472 $ get-with-headers.py --headeronly localhost:$HGPORT 'spam'
Anton Shestakov
hgweb: fail if an invalid command was supplied in url path (issue4071)...
r22506 400 no such method: spam
[1]
Matt Mackall
tests: drop explicit $TESTDIR from executables...
r25472 $ get-with-headers.py --headeronly localhost:$HGPORT 'raw-spam'
Anton Shestakov
hgweb: fail if an invalid command was supplied in url path (issue4071)...
r22506 400 no such method: spam
[1]
Matt Mackall
tests: drop explicit $TESTDIR from executables...
r25472 $ get-with-headers.py --headeronly localhost:$HGPORT 'spam/tip/foo'
Anton Shestakov
hgweb: fail if an invalid command was supplied in url path (issue4071)...
r22506 400 no such method: spam
[1]
Matt Mackall
tests: unify test-hgweb
r12432 should give a 404 - file does not exist
Matt Mackall
tests: drop explicit $TESTDIR from executables...
r25472 $ get-with-headers.py localhost:$HGPORT 'file/tip/bork?style=raw'
Matt Mackall
tests: unify test-hgweb
r12432 404 Not Found
error: bork@2ef0ac749a14: not found in manifest
[1]
Matt Mackall
tests: drop explicit $TESTDIR from executables...
r25472 $ get-with-headers.py localhost:$HGPORT 'file/tip/bork'
Matt Mackall
tests: unify test-hgweb
r12432 404 Not Found
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
<head>
<link rel="icon" href="/static/hgicon.png" type="image/png" />
<meta name="robots" content="index, nofollow" />
<link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
Benoit Allard
web: Made elapsed time calculation dynamic (javascript)....
r14046 <script type="text/javascript" src="/static/mercurial.js"></script>
Matt Mackall
tests: unify test-hgweb
r12432
<title>test: error</title>
</head>
<body>
<div class="container">
<div class="menu">
<div class="logo">
Matt Mackall
urls: bulk-change primary website URLs
r26421 <a href="https://mercurial-scm.org/">
Matt Mackall
tests: unify test-hgweb
r12432 <img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial" /></a>
</div>
<ul>
<li><a href="/shortlog">log</a></li>
<li><a href="/graph">graph</a></li>
<li><a href="/tags">tags</a></li>
Alexander Solovyov
hgweb: add separate page with bookmarks listing
r13597 <li><a href="/bookmarks">bookmarks</a></li>
Matt Mackall
tests: unify test-hgweb
r12432 <li><a href="/branches">branches</a></li>
Ross Lagerwall
hgweb: make paper:error consistent with template...
r17290 </ul>
<ul>
Augie Fackler
hgweb: add help link to templates missed in ead4e21f49f1
r12680 <li><a href="/help">help</a></li>
Matt Mackall
tests: unify test-hgweb
r12432 </ul>
</div>
<div class="main">
Bryan O'Sullivan
tests: update hgweb tests to include breadcrumbs
r18264 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
Matt Mackall
tests: unify test-hgweb
r12432 <h3>error</h3>
Gregory Szorc
hgweb: consolidate search form for paper...
r32758
Matt Mackall
tests: unify test-hgweb
r12432 <form class="search" action="/log">
Gregory Szorc
hgweb: consolidate search form for paper...
r32758 <p><input name="rev" id="search1" type="text" size="30" value="" /></p>
Alexander Plavin
paper: edit search hint to include new feature description
r19796 <div id="hint">Find changesets by keywords (author, files, the commit message), revision
number or hash, or <a href="/help/revsets">revset expression</a>.</div>
Matt Mackall
tests: unify test-hgweb
r12432 </form>
<div class="description">
<p>
An error occurred while processing your request:
</p>
<p>
bork@2ef0ac749a14: not found in manifest
</p>
</div>
</div>
</div>
</body>
</html>
[1]
Matt Mackall
tests: drop explicit $TESTDIR from executables...
r25472 $ get-with-headers.py localhost:$HGPORT 'diff/tip/bork?style=raw'
Matt Mackall
tests: unify test-hgweb
r12432 404 Not Found
error: bork@2ef0ac749a14: not found in manifest
[1]
try bad style
Matt Mackall
tests: drop explicit $TESTDIR from executables...
r25472 $ (get-with-headers.py localhost:$HGPORT 'file/tip/?style=foobar')
Matt Mackall
tests: unify test-hgweb
r12432 200 Script output follows
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
<head>
<link rel="icon" href="/static/hgicon.png" type="image/png" />
<meta name="robots" content="index, nofollow" />
<link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
Benoit Allard
web: Made elapsed time calculation dynamic (javascript)....
r14046 <script type="text/javascript" src="/static/mercurial.js"></script>
Matt Mackall
tests: unify test-hgweb
r12432
<title>test: 2ef0ac749a14 /</title>
</head>
<body>
<div class="container">
<div class="menu">
<div class="logo">
Matt Mackall
urls: bulk-change primary website URLs
r26421 <a href="https://mercurial-scm.org/">
Matt Mackall
tests: unify test-hgweb
r12432 <img src="/static/hglogo.png" alt="mercurial" /></a>
</div>
<ul>
av6
hgweb: don't dereference symbolic revision in paper & coal style (issue2296)...
r25606 <li><a href="/shortlog/tip">log</a></li>
<li><a href="/graph/tip">graph</a></li>
Matt Mackall
tests: unify test-hgweb
r12432 <li><a href="/tags">tags</a></li>
Alexander Solovyov
hgweb: add separate page with bookmarks listing
r13597 <li><a href="/bookmarks">bookmarks</a></li>
Matt Mackall
tests: unify test-hgweb
r12432 <li><a href="/branches">branches</a></li>
</ul>
<ul>
av6
hgweb: don't dereference symbolic revision in paper & coal style (issue2296)...
r25606 <li><a href="/rev/tip">changeset</a></li>
Matt Mackall
tests: unify test-hgweb
r12432 <li class="active">browse</li>
</ul>
<ul>
</ul>
Augie Fackler
web: add a help view for getting hg help output
r12666 <ul>
<li><a href="/help">help</a></li>
</ul>
Matt Mackall
tests: unify test-hgweb
r12432 </div>
<div class="main">
Bryan O'Sullivan
tests: update hgweb tests to include breadcrumbs
r18264 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
av6
hgweb: link to revision by node hash in paper & coal...
r25617 <h3>
directory / @ 0:<a href="/rev/2ef0ac749a14">2ef0ac749a14</a>
av6
hgweb: allow symbolic revisions with forward slashes in urls...
r25777 <span class="tag">tip</span> <span class="tag">@</span> <span class="tag">a b c</span> <span class="tag">d/e/f</span>
av6
hgweb: link to revision by node hash in paper & coal...
r25617 </h3>
Matt Mackall
tests: unify test-hgweb
r12432
Gregory Szorc
hgweb: consolidate search form for paper...
r32758
Matt Mackall
tests: unify test-hgweb
r12432 <form class="search" action="/log">
Gregory Szorc
hgweb: consolidate search form for paper...
r32758 <p><input name="rev" id="search1" type="text" size="30" value="" /></p>
Alexander Plavin
paper: edit search hint to include new feature description
r19796 <div id="hint">Find changesets by keywords (author, files, the commit message), revision
number or hash, or <a href="/help/revsets">revset expression</a>.</div>
Matt Mackall
tests: unify test-hgweb
r12432 </form>
<table class="bigtable">
Anton Shestakov
hgweb: replace implicit <tbody> with explicit <thead> where appropriate...
r24054 <thead>
Matt Mackall
tests: unify test-hgweb
r12432 <tr>
<th class="name">name</th>
<th class="size">size</th>
<th class="permissions">permissions</th>
</tr>
Anton Shestakov
hgweb: replace implicit <tbody> with explicit <thead> where appropriate...
r24054 </thead>
Alexander Plavin
hgweb: make stripes in directory view with CSS
r19447 <tbody class="stripes2">
<tr class="fileline">
av6
hgweb: don't dereference symbolic revision in paper & coal style (issue2296)...
r25606 <td class="name"><a href="/file/tip/">[up]</a></td>
Matt Mackall
tests: unify test-hgweb
r12432 <td class="size"></td>
<td class="permissions">drwxr-xr-x</td>
</tr>
Alexander Plavin
hgweb: make stripes in directory view with CSS
r19447 <tr class="fileline">
Matt Mackall
tests: unify test-hgweb
r12432 <td class="name">
av6
hgweb: don't dereference symbolic revision in paper & coal style (issue2296)...
r25606 <a href="/file/tip/da">
Matt Mackall
tests: unify test-hgweb
r12432 <img src="/static/coal-folder.png" alt="dir."/> da/
</a>
av6
hgweb: don't dereference symbolic revision in paper & coal style (issue2296)...
r25606 <a href="/file/tip/da/">
Matt Mackall
tests: unify test-hgweb
r12432
</a>
</td>
<td class="size"></td>
<td class="permissions">drwxr-xr-x</td>
</tr>
Alexander Plavin
hgweb: make stripes in directory view with CSS
r19447 <tr class="fileline">
Matt Mackall
tests: unify test-hgweb
r12432 <td class="filename">
av6
hgweb: don't dereference symbolic revision in paper & coal style (issue2296)...
r25606 <a href="/file/tip/foo">
Matt Mackall
tests: unify test-hgweb
r12432 <img src="/static/coal-file.png" alt="file"/> foo
</a>
</td>
<td class="size">4</td>
<td class="permissions">-rw-r--r--</td>
</tr>
Alexander Plavin
hgweb: make stripes in directory view with CSS
r19447 </tbody>
Matt Mackall
tests: unify test-hgweb
r12432 </table>
</div>
</div>
</body>
</html>
stop and restart
Matt Mackall
tests: drop DAEMON_PIDS from killdaemons calls
r25474 $ killdaemons.py
Matt Mackall
tests: unify test-hgweb
r12432 $ hg serve -p $HGPORT -d --pid-file=hg.pid -A access.log
$ cat hg.pid >> $DAEMON_PIDS
Test the access/error files are opened in append mode
Augie Fackler
tests: use $PYTHON instead of hardcoding python...
r22947 $ $PYTHON -c "print len(file('access.log').readlines()), 'log lines written'"
Anton Shestakov
hgweb: fail if an invalid command was supplied in url path (issue4071)...
r22506 14 log lines written
Matt Mackall
tests: unify test-hgweb
r12432
static file
Matt Mackall
tests: drop explicit $TESTDIR from executables...
r25472 $ get-with-headers.py --twice localhost:$HGPORT 'static/style-gitweb.css' - date etag server
Matt Mackall
tests: unify test-hgweb
r12432 200 Script output follows
Denis Laxalde
hgweb: re-implement followlines UI selection using buttons...
r33390 content-length: 8985
Mads Kiilerich
serve: don't send any content headers with 304 responses...
r18380 content-type: text/css
Matt Mackall
tests: unify test-hgweb
r12432
Gijs Kruitbosch
hgweb: ensure both foreground and background colors are specified (issue4872)...
r26536 body { font-family: sans-serif; font-size: 12px; border:solid #d9d8d1; border-width:1px; margin:10px; background: white; color: black; }
Matt Mackall
tests: unify test-hgweb
r12432 a { color:#0000cc; }
a:hover, a:visited, a:active { color:#880000; }
div.page_header { height:25px; padding:8px; font-size:18px; font-weight:bold; background-color:#d9d8d1; }
div.page_header a:visited { color:#0000cc; }
div.page_header a:hover { color:#880000; }
Gregory Szorc
hgweb: refresh styling of gitweb's search form...
r32762 div.page_nav {
padding:8px;
display: flex;
justify-content: space-between;
align-items: center;
}
Matt Mackall
tests: unify test-hgweb
r12432 div.page_nav a:visited { color:#0000cc; }
Gregory Szorc
hgweb: use separate CSS class for navigation links in footer...
r32990 div.extra_nav {
padding: 8px;
}
div.extra_nav a:visited {
color: #0000cc;
}
Matt Mackall
tests: unify test-hgweb
r12432 div.page_path { padding:8px; border:solid #d9d8d1; border-width:0px 0px 1px}
div.page_footer { padding:4px 8px; background-color: #d9d8d1; }
div.page_footer_text { float:left; color:#555555; font-style:italic; }
div.page_body { padding:8px; }
div.title, a.title {
display:block; padding:6px 8px;
font-weight:bold; background-color:#edece6; text-decoration:none; color:#000000;
}
a.title:hover { background-color: #d9d8d1; }
div.title_text { padding:6px 0px; border: solid #d9d8d1; border-width:0px 0px 1px; }
div.log_body { padding:8px 8px 8px 150px; }
.age { white-space:nowrap; }
span.age { position:relative; float:left; width:142px; font-style:italic; }
div.log_link {
padding:0px 8px;
font-size:10px; font-family:sans-serif; font-style:normal;
position:relative; float:left; width:136px;
}
div.list_head { padding:6px 8px 4px; border:solid #d9d8d1; border-width:1px 0px 0px; font-style:italic; }
a.list { text-decoration:none; color:#000000; }
a.list:hover { text-decoration:underline; color:#880000; }
table { padding:8px 4px; }
th { padding:2px 5px; font-size:12px; text-align:left; }
av6
gitweb: make different blocks of annotated lines have different colors
r29573 .parity0 { background-color:#ffffff; }
av6
gitweb: visually highlight source lines when hovering over line numbers...
r26670 tr.dark, .parity1, pre.sourcelines.stripes > :nth-child(4n+4) { background-color:#f6f6f0; }
tr.light:hover, .parity0:hover, tr.dark:hover, .parity1:hover,
pre.sourcelines.stripes > :nth-child(4n+2):hover,
pre.sourcelines.stripes > :nth-child(4n+4):hover,
pre.sourcelines.stripes > :nth-child(4n+1):hover + :nth-child(4n+2),
pre.sourcelines.stripes > :nth-child(4n+3):hover + :nth-child(4n+4) { background-color:#edece6; }
Matt Mackall
tests: unify test-hgweb
r12432 td { padding:2px 5px; font-size:12px; vertical-align:top; }
td.closed { background-color: #99f; }
td.link { padding:2px 5px; font-family:sans-serif; font-size:10px; }
td.indexlinks { white-space: nowrap; }
td.indexlinks a {
padding: 2px 5px; line-height: 10px;
border: 1px solid;
color: #ffffff; background-color: #7777bb;
border-color: #aaaadd #333366 #333366 #aaaadd;
font-weight: bold; text-align: center; text-decoration: none;
font-size: 10px;
}
td.indexlinks a:hover { background-color: #6666aa; }
div.pre { font-family:monospace; font-size:12px; white-space:pre; }
div.diff_info { font-family:monospace; color:#000099; background-color:#edece6; font-style:italic; }
div.index_include { border:solid #d9d8d1; border-width:0px 0px 1px; padding:12px 8px; }
Gregory Szorc
hgweb: refresh styling of gitweb's search form...
r32762
.search {
margin-right: 8px;
}
div#hint {
position: absolute;
display: none;
width: 250px;
padding: 5px;
background: #ffc;
border: 1px solid yellow;
border-radius: 5px;
}
#searchform:hover div#hint { display: block; }
Denis Laxalde
hgweb: highlight data of the current revision in annotate view...
r29387 tr.thisrev a { color:#999999; text-decoration: none; }
tr.thisrev pre { color:#009900; }
Tooru Fujisawa
hgweb: avoid line wrap between revision and annotate-info (issue5398)...
r30074 td.annotate {
white-space: nowrap;
}
Denis Laxalde
hgweb: add link to parents of annotated revision in annotate view...
r29522 div.annotate-info {
Denis Laxalde
hgweb: re-implement followlines UI selection using buttons...
r33390 z-index: 5;
Denis Laxalde
hgweb: add link to parents of annotated revision in annotate view...
r29522 display: none;
position: absolute;
background-color: #FFFFFF;
av6
gitweb: make annotate popup use theme colors
r29626 border: 1px solid #d9d8d1;
Denis Laxalde
hgweb: add link to parents of annotated revision in annotate view...
r29522 text-align: left;
color: #000000;
padding: 5px;
}
div.annotate-info a { color: #0000FF; text-decoration: underline; }
td.annotate:hover div.annotate-info { display: inline; }
Matt Mackall
tests: unify test-hgweb
r12432 .linenr { color:#999999; text-decoration:none }
div.rss_logo { float: right; white-space: nowrap; }
div.rss_logo a {
padding:3px 6px; line-height:10px;
border:1px solid; border-color:#fcc7a5 #7d3302 #3e1a01 #ff954e;
color:#ffffff; background-color:#ff6600;
font-weight:bold; font-family:sans-serif; font-size:10px;
text-align:center; text-decoration:none;
}
div.rss_logo a:hover { background-color:#ee5500; }
pre { margin: 0; }
span.logtags span {
padding: 0px 4px;
font-size: 10px;
font-weight: normal;
border: 1px solid;
background-color: #ffaaff;
border-color: #ffccff #ff00ee #ff00ee #ffccff;
}
span.logtags span.tagtag {
background-color: #ffffaa;
border-color: #ffffcc #ffee00 #ffee00 #ffffcc;
}
span.logtags span.branchtag {
background-color: #aaffaa;
border-color: #ccffcc #00cc33 #00cc33 #ccffcc;
}
span.logtags span.inbranchtag {
background-color: #d5dde6;
border-color: #e3ecf4 #9398f4 #9398f4 #e3ecf4;
}
Yuya Nishihara
hgweb: add bookmark labels to gitweb theme (based on 270f57d35525)
r13863 span.logtags span.bookmarktag {
background-color: #afdffa;
border-color: #ccecff #46ace6 #46ace6 #ccecff;
}
Gregory Szorc
templates: use CSS classes for diff styling...
r23744 span.difflineplus { color:#008800; }
span.difflineminus { color:#cc0000; }
span.difflineat { color:#990099; }
av6
gitweb: port code selection without line numbers from paper...
r26288 div.diffblocks { counter-reset: lineno; }
div.diffblock { counter-increment: lineno; }
pre.sourcelines { position: relative; counter-reset: lineno; }
pre.sourcelines > span {
display: inline-block;
box-sizing: border-box;
width: 100%;
padding: 0 0 0 5em;
counter-increment: lineno;
av6
gitweb, monoblue: fix vertical align of spans in .sourcelines...
r26362 vertical-align: top;
av6
gitweb: port code selection without line numbers from paper...
r26288 }
pre.sourcelines > span:before {
-moz-user-select: -moz-none;
-khtml-user-select: none;
-webkit-user-select: none;
-ms-user-select: none;
user-select: none;
display: inline-block;
Denis Laxalde
hgweb: re-implement followlines UI selection using buttons...
r33390 margin-left: -6em;
av6
gitweb: port code selection without line numbers from paper...
r26288 width: 4em;
color: #999;
text-align: right;
content: counters(lineno,".");
float: left;
}
pre.sourcelines > a {
display: inline-block;
position: absolute;
left: 0px;
width: 4em;
height: 1em;
}
av6
gitweb, monoblue: port highlighting linked lines from paper...
r26363 tr:target td,
pre.sourcelines > span:target,
pre.sourcelines.stripes > span:target {
background-color: #bfdfff;
}
Matt Mackall
tests: unify test-hgweb
r12432
Gregory Szorc
gitweb: use monospace font for commit messages...
r31625 .description {
font-family: monospace;
}
Denis Laxalde
gitweb: plug followlines UI in filerevision view...
r31949 /* Followlines */
Denis Laxalde
hgweb: plug followlines action in annotate view...
r32994 tbody.sourcelines > tr.followlines-selected,
Denis Laxalde
gitweb: plug followlines UI in filerevision view...
r31949 pre.sourcelines > span.followlines-selected {
background-color: #99C7E9 !important;
}
div#followlines {
background-color: #B7B7B7;
border: 1px solid #CCC;
border-radius: 5px;
padding: 4px;
position: fixed;
}
div.followlines-cancel {
text-align: right;
}
div.followlines-cancel > button {
line-height: 80%;
padding: 0;
border: 0;
border-radius: 2px;
background-color: inherit;
font-weight: bold;
}
div.followlines-cancel > button:hover {
color: #FFFFFF;
background-color: #CF1F1F;
}
div.followlines-link {
margin: 2px;
margin-top: 4px;
font-family: sans-serif;
}
Denis Laxalde
hgweb: re-implement followlines UI selection using buttons...
r33390 .btn-followlines {
Denis Laxalde
gitweb: plug followlines UI in filerevision view...
r31949 display: none;
Denis Laxalde
hgweb: re-implement followlines UI selection using buttons...
r33390 cursor: pointer;
box-sizing: content-box;
font-size: 11px;
width: 13px;
height: 13px;
border-radius: 3px;
margin: 0px;
margin-top: -2px;
padding: 0px;
background-color: #E5FDE5;
border: 1px solid #9BC19B;
font-family: monospace;
text-align: center;
line-height: 5px;
}
tr .btn-followlines {
position: absolute;
Denis Laxalde
gitweb: plug followlines UI in filerevision view...
r31949 }
Denis Laxalde
hgweb: re-implement followlines UI selection using buttons...
r33390 span .btn-followlines {
float: left;
}
span.followlines-select .btn-followlines {
margin-left: -1.6em;
}
.btn-followlines:hover {
transform: scale(1.1, 1.1);
}
.btn-followlines .followlines-plus {
color: green;
}
.btn-followlines .followlines-minus {
color: red;
}
.btn-followlines-end {
background-color: #ffdcdc;
}
.sourcelines tr:hover .btn-followlines,
.sourcelines span.followlines-select:hover > .btn-followlines {
Denis Laxalde
gitweb: plug followlines UI in filerevision view...
r31949 display: inline;
}
Denis Laxalde
hgweb: re-implement followlines UI selection using buttons...
r33390 .btn-followlines-hidden,
.sourcelines tr:hover .btn-followlines-hidden {
Denis Laxalde
gitweb: plug followlines UI in filerevision view...
r31949 display: none;
}
Denis Laxalde
hgweb: re-implement followlines UI selection using buttons...
r33390
Matt Mackall
tests: unify test-hgweb
r12432 /* Graph */
div#wrapper {
position: relative;
margin: 0;
padding: 0;
margin-top: 3px;
}
canvas {
position: absolute;
z-index: 5;
top: -0.9em;
margin: 0;
}
ul#nodebgs {
list-style: none inside none;
padding: 0;
margin: 0;
top: -0.7em;
}
ul#graphnodes li, ul#nodebgs li {
height: 39px;
}
ul#graphnodes {
position: absolute;
z-index: 10;
top: -0.8em;
list-style: none inside none;
padding: 0;
}
ul#graphnodes li .info {
display: block;
font-size: 100%;
position: relative;
top: -3px;
font-style: italic;
}
wujek srujek
hgweb: side-by-side comparison functionality...
r17202
/* Comparison */
.legend {
padding: 1.5% 0 1.5% 0;
}
.legendinfo {
border: 1px solid #d9d8d1;
font-size: 80%;
text-align: center;
padding: 0.5%;
}
.equal {
background-color: #ffffff;
}
.delete {
Matt Mackall
hgweb: improve colors for comparison page...
r17243 background-color: #faa;
color: #333;
wujek srujek
hgweb: side-by-side comparison functionality...
r17202 }
.insert {
Matt Mackall
hgweb: improve colors for comparison page...
r17243 background-color: #ffa;
wujek srujek
hgweb: side-by-side comparison functionality...
r17202 }
.replace {
Matt Mackall
hgweb: improve colors for comparison page...
r17243 background-color: #e8e8e8;
wujek srujek
hgweb: side-by-side comparison functionality...
r17202 }
.comparison {
overflow-x: auto;
}
.header th {
text-align: center;
}
.block {
border-top: 1px solid #d9d8d1;
}
Augie Fackler
test-hgweb-*: output change fixes from b1d65cb8
r20256
.scroll-loading {
-webkit-animation: change_color 1s linear 0s infinite alternate;
-moz-animation: change_color 1s linear 0s infinite alternate;
-o-animation: change_color 1s linear 0s infinite alternate;
animation: change_color 1s linear 0s infinite alternate;
}
@-webkit-keyframes change_color {
from { background-color: #A0CEFF; } to { }
}
@-moz-keyframes change_color {
from { background-color: #A0CEFF; } to { }
}
@-o-keyframes change_color {
from { background-color: #A0CEFF; } to { }
}
@keyframes change_color {
from { background-color: #A0CEFF; } to { }
}
.scroll-loading-error {
background-color: #FFCCCC !important;
}
av6
tests: fix css-related test-hgweb.t breakage from 93258d53ec35
r26175
#doc {
margin: 0 8px;
}
Matt Mackall
tests: unify test-hgweb
r12432 304 Not Modified
Anton Shestakov
hgweb: refresh hgweb.repo on phase change (issue4061)...
r22577 phase changes are refreshed (issue4061)
$ echo bar >> foo
$ hg ci -msecret --secret
Matt Mackall
tests: drop explicit $TESTDIR from executables...
r25472 $ get-with-headers.py localhost:$HGPORT 'log?style=raw'
Anton Shestakov
hgweb: refresh hgweb.repo on phase change (issue4061)...
r22577 200 Script output follows
# HG changelog
# Node ID 2ef0ac749a14e4f57a5a822464a0902c6f7f448f
changeset: 2ef0ac749a14e4f57a5a822464a0902c6f7f448f
revision: 0
user: test
date: Thu, 01 Jan 1970 00:00:00 +0000
summary: base
branch: default
tag: tip
av6
hgweb: allow symbolic revisions with forward slashes in urls...
r25777 bookmark: @
bookmark: a b c
bookmark: d/e/f
Anton Shestakov
hgweb: refresh hgweb.repo on phase change (issue4061)...
r22577
$ hg phase --draft tip
Matt Mackall
tests: drop explicit $TESTDIR from executables...
r25472 $ get-with-headers.py localhost:$HGPORT 'log?style=raw'
Anton Shestakov
hgweb: refresh hgweb.repo on phase change (issue4061)...
r22577 200 Script output follows
# HG changelog
# Node ID a084749e708a9c4c0a5b652a2a446322ce290e04
changeset: a084749e708a9c4c0a5b652a2a446322ce290e04
revision: 1
user: test
date: Thu, 01 Jan 1970 00:00:00 +0000
summary: secret
branch: default
tag: tip
changeset: 2ef0ac749a14e4f57a5a822464a0902c6f7f448f
revision: 0
user: test
date: Thu, 01 Jan 1970 00:00:00 +0000
summary: base
av6
hgweb: allow symbolic revisions with forward slashes in urls...
r25777 bookmark: @
bookmark: a b c
bookmark: d/e/f
Anton Shestakov
hgweb: refresh hgweb.repo on phase change (issue4061)...
r22577
av6
hgweb: allow symbolic revisions with forward slashes in urls...
r25777 access bookmarks
$ get-with-headers.py localhost:$HGPORT 'rev/@?style=paper' | egrep '^200|changeset 0:'
200 Script output follows
changeset 0:<a href="/rev/2ef0ac749a14?style=paper">2ef0ac749a14</a>
$ get-with-headers.py localhost:$HGPORT 'rev/%40?style=paper' | egrep '^200|changeset 0:'
200 Script output follows
changeset 0:<a href="/rev/2ef0ac749a14?style=paper">2ef0ac749a14</a>
$ get-with-headers.py localhost:$HGPORT 'rev/a%20b%20c?style=paper' | egrep '^200|changeset 0:'
200 Script output follows
changeset 0:<a href="/rev/2ef0ac749a14?style=paper">2ef0ac749a14</a>
$ get-with-headers.py localhost:$HGPORT 'rev/d%252Fe%252Ff?style=paper' | egrep '^200|changeset 0:'
200 Script output follows
changeset 0:<a href="/rev/2ef0ac749a14?style=paper">2ef0ac749a14</a>
Yuya Nishihara
hgweb: prevent loading style map from directories other than specified paths...
r24296 no style can be loaded from directories other than the specified paths
$ mkdir -p x/templates/fallback
$ cat <<EOF > x/templates/fallback/map
> default = 'shortlog'
> shortlog = 'fall back to default\n'
> mimetype = 'text/plain'
> EOF
$ cat <<EOF > x/map
> default = 'shortlog'
> shortlog = 'access to outside of templates directory\n'
> mimetype = 'text/plain'
> EOF
Matt Mackall
tests: drop DAEMON_PIDS from killdaemons calls
r25474 $ killdaemons.py
Yuya Nishihara
hgweb: prevent loading style map from directories other than specified paths...
r24296 $ hg serve -p $HGPORT -d --pid-file=hg.pid -A access.log -E errors.log \
> --config web.style=fallback --config web.templates=x/templates
$ cat hg.pid >> $DAEMON_PIDS
Matt Mackall
tests: drop explicit $TESTDIR from executables...
r25472 $ get-with-headers.py localhost:$HGPORT "?style=`pwd`/x"
Yuya Nishihara
hgweb: prevent loading style map from directories other than specified paths...
r24296 200 Script output follows
fall back to default
Matt Mackall
tests: drop explicit $TESTDIR from executables...
r25472 $ get-with-headers.py localhost:$HGPORT '?style=..'
Yuya Nishihara
hgweb: prevent loading style map from directories other than specified paths...
r24296 200 Script output follows
fall back to default
Matt Mackall
tests: drop explicit $TESTDIR from executables...
r25472 $ get-with-headers.py localhost:$HGPORT '?style=./..'
Yuya Nishihara
hgweb: prevent loading style map from directories other than specified paths...
r24296 200 Script output follows
fall back to default
Matt Mackall
tests: drop explicit $TESTDIR from executables...
r25472 $ get-with-headers.py localhost:$HGPORT '?style=.../.../'
Yuya Nishihara
hgweb: prevent loading style map from directories other than specified paths...
r24296 200 Script output follows
fall back to default
Matt Mackall
tests: unify test-hgweb
r12432 errors
$ cat errors.log
Mads Kiilerich
tests: add missing trailing 'cd ..'...
r16913
Gregory Szorc
hgweb: send proper HTTP response after uncaught exception...
r23409 Uncaught exceptions result in a logged error and canned HTTP response
Matt Mackall
tests: drop DAEMON_PIDS from killdaemons calls
r25474 $ killdaemons.py
Jun Wu
tests: reorder hg serve commands...
r28549 $ hg serve --config extensions.hgweberror=$TESTDIR/hgweberror.py -p $HGPORT -d --pid-file=hg.pid -A access.log -E errors.log
Gregory Szorc
hgweb: send proper HTTP response after uncaught exception...
r23409 $ cat hg.pid >> $DAEMON_PIDS
Matt Mackall
tests: drop explicit $TESTDIR from executables...
r25472 $ get-with-headers.py localhost:$HGPORT 'raiseerror' transfer-encoding content-type
Gregory Szorc
hgweb: send proper HTTP response after uncaught exception...
r23409 500 Internal Server Error
transfer-encoding: chunked
Internal Server Error (no-eol)
[1]
Matt Mackall
tests: drop DAEMON_PIDS from killdaemons calls
r25474 $ killdaemons.py
Gregory Szorc
hgweb: send proper HTTP response after uncaught exception...
r23409 $ head -1 errors.log
.* Exception happened during processing request '/raiseerror': (re)
Uncaught exception after partial content sent
Jun Wu
tests: reorder hg serve commands...
r28549 $ hg serve --config extensions.hgweberror=$TESTDIR/hgweberror.py -p $HGPORT -d --pid-file=hg.pid -A access.log -E errors.log
Matt Mackall
test-hgweb: fix shutdown race...
r23952 $ cat hg.pid >> $DAEMON_PIDS
Matt Mackall
tests: drop explicit $TESTDIR from executables...
r25472 $ get-with-headers.py localhost:$HGPORT 'raiseerror?partialresponse=1' transfer-encoding content-type
Gregory Szorc
hgweb: send proper HTTP response after uncaught exception...
r23409 200 Script output follows
transfer-encoding: chunked
content-type: text/plain
partial content
Internal Server Error (no-eol)
Matt Mackall
tests: drop DAEMON_PIDS from killdaemons calls
r25474 $ killdaemons.py
Mads Kiilerich
tests: add missing trailing 'cd ..'...
r16913 $ cd ..