##// END OF EJS Templates
hgweb: code selection without line numbers in file source view...
hgweb: code selection without line numbers in file source view All the source lines are put in a <pre> tag, which gives correct display and copy&paste in both Chromium (WebKit) and FireFox: line numbers are not copied, all the tabs and spaces are kept. This doesn't change the visual appearance of the view compared to current hgweb version and doesn't use any JS code. Also, stripes in this view are now generated clientside with CSS. This implementation is chosen because other variants have important issues: Strategy FF Chrome current D,LT,E,T,L D,L pre S,NW S,NW pre/div/nbsp LT,E,T,TS,NW TS,NW pre/div/br LT,E,T,NW NW ol/li/nbsp LT,E,T,TS,AJ TS,AJ ol/li/br LT,E,T,AJ AJ pre/span LV LV Legend Strategies: - current: implemented in hgweb before this patch, i.e. divs for each line, and line numbers links in the div too - pre: the whole code in one pre tag with newlines, all line numbers in another one with 'float: left' - pre/div/{nbsp,br}: same as just 'pre', but separate divs for each line and   or <br> instead of empty lines (otherwise they are not copied at all) - ol/li/{nbsp,br}: a single ol with li's and divs for each line,   or <br> same as in previous strategy - pre/span: this patch Problems: D = (very minor) display problems, like wrong width of leading tabs LT = loses leading/trailing whitespace E = loses embedded whitespace B = loses blank lines T = loses tabs L = selects line numbers LV = (only) visually selects line numbers LVE = (only) visually selects line numbers at empty lines S = no stripes (and no ability to easily highlight lines-which-are-linked-at in the future) TS = space copied instead of empty line AJ = get anchor links only with JS (they work even without) NW = no linewrap easily possible (in future) As for browser versions compatibility, the CSS tricks used are supported in (according to caniuse.com): a) line numbers generation with 'content:' property and CSS counters: IE 8+, all other popular browsers (in pre-WebKit Opera numbers are being copied) b) stripes ('nth-child' selector): IE 8+, FF 3.5+, Safari 3.2+, Opera 9.5+, all other popular browsers c) line numbers are not visually selected ('user-select:' property): IE 10+, Opera 15.0+, all other popular browsers This patch is based on a demo implementation by Martin Geisler <martin@geisler.net>.

File last commit:

r18526:9409aeaa stable
r19387:f2e4fdb3 default
Show More
map
184 lines | 7.2 KiB | text/plain | TextLexer
Dan Villiom Podlaski Christiansen
setup: install translation files as package data...
r9999 default = 'shortlog'
mimetype = 'text/html; charset={encoding}'
header = header.tmpl
footer = footer.tmpl
search = search.tmpl
changelog = changelog.tmpl
shortlog = shortlog.tmpl
shortlogentry = shortlogentry.tmpl
graph = graph.tmpl
Thomas Arendsen Hein
hgweb: urlescape all urls, HTML escape repo/tag/branch/... names...
r18526 naventry = '<a href="{url|urlescape}log/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
navshortentry = '<a href="{url|urlescape}shortlog/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
navgraphentry = '<a href="{url|urlescape}graph/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
filenaventry = '<a href="{url|urlescape}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{label|escape}</a> '
filedifflink = '<a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a> '
filenodelink = '<a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a> '
Dan Villiom Podlaski Christiansen
setup: install translation files as package data...
r9999 filenolink = '{file|escape} '
fileellipses = '...'
changelogentry = changelogentry.tmpl
searchentry = changelogentry.tmpl
changeset = changeset.tmpl
manifest = manifest.tmpl
Nicolas Dumazet
hgweb: changenav: separate pages before and after the current position...
r10254 nav = '{before%naventry} {after%naventry}'
navshort = '{before%navshortentry}{after%navshortentry}'
navgraph = '{before%navgraphentry}{after%navgraphentry}'
filenav = '{before%filenaventry}{after%filenaventry}'
Dan Villiom Podlaski Christiansen
setup: install translation files as package data...
r9999 direntry = '
<tr class="parity{parity}">
<td><tt>drwxr-xr-x</tt>&nbsp;
<td>&nbsp;
<td>&nbsp;
<td>
Thomas Arendsen Hein
hgweb: urlescape all urls, HTML escape repo/tag/branch/... names...
r18526 <a href="{url|urlescape}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">{basename|escape}/</a>
<a href="{url|urlescape}file/{node|short}{path|urlescape}/{emptydirs|urlescape}{sessionvars%urlparameter}">
Dan Villiom Podlaski Christiansen
setup: install translation files as package data...
r9999 {emptydirs|urlescape}
</a>'
fileentry = '
<tr class="parity{parity}">
<td><tt>{permissions|permissions}</tt>&nbsp;
<td align=right><tt class="date">{date|isodate}</tt>&nbsp;
<td align=right><tt>{size}</tt>&nbsp;
Thomas Arendsen Hein
hgweb: urlescape all urls, HTML escape repo/tag/branch/... names...
r18526 <td><a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{basename|escape}</a>'
Dan Villiom Podlaski Christiansen
setup: install translation files as package data...
r9999
filerevision = filerevision.tmpl
fileannotate = fileannotate.tmpl
filediff = filediff.tmpl
filelog = filelog.tmpl
fileline = '<div class="parity{parity}"><a class="lineno" href="#{lineid}" id="{lineid}">{linenumber}</a>&nbsp;{line|escape}</div>'
filelogentry = filelogentry.tmpl
# The &nbsp; ensures that all table cells have content (even if there
# is an empty line in the annotated file), which in turn ensures that
# all table rows have equal height.
annotateline = '
<tr class="parity{parity}">
<td class="annotate">
Thomas Arendsen Hein
hgweb: urlescape all urls, HTML escape repo/tag/branch/... names...
r18526 <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}#l{targetline}"
Dan Villiom Podlaski Christiansen
setup: install translation files as package data...
r9999 title="{node|short}: {desc|escape|firstline}">{author|user}@{rev}</a>
</td>
<td>
<a class="lineno" href="#{lineid}" id="{lineid}">{linenumber}</a>
</td>
<td><pre>&nbsp;{line|escape}</pre></td>
</tr>'
difflineplus = '<span class="plusline"><a class="lineno" href="#{lineid}" id="{lineid}">{linenumber}</a>{line|escape}</span>'
difflineminus = '<span class="minusline"><a class="lineno" href="#{lineid}" id="{lineid}">{linenumber}</a>{line|escape}</span>'
difflineat = '<span class="atline"><a class="lineno" href="#{lineid}" id="{lineid}">{linenumber}</a>{line|escape}</span>'
diffline = '<a class="lineno" href="#{lineid}" id="{lineid}">{linenumber}</a>{line|escape}'
changelogparent = '
<tr>
<th class="parent">parent {rev}:</th>
<td class="parent">
Thomas Arendsen Hein
hgweb: urlescape all urls, HTML escape repo/tag/branch/... names...
r18526 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>
Dan Villiom Podlaski Christiansen
setup: install translation files as package data...
r9999 </td>
</tr>'
changesetparent = '
<tr>
<th class="parent">parent {rev}:</th>
Thomas Arendsen Hein
hgweb: urlescape all urls, HTML escape repo/tag/branch/... names...
r18526 <td class="parent"><a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
Dan Villiom Podlaski Christiansen
setup: install translation files as package data...
r9999 </tr>'
filerevparent = '
<tr>
<td class="metatag">parent:</td>
<td>
Thomas Arendsen Hein
hgweb: urlescape all urls, HTML escape repo/tag/branch/... names...
r18526 <a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
Dan Villiom Podlaski Christiansen
setup: install translation files as package data...
r9999 {rename%filerename}{node|short}
</a>
</td>
</tr>'
filerename = '{file|escape}@'
filelogrename = '
<tr>
<th>base:</th>
<td>
Thomas Arendsen Hein
hgweb: urlescape all urls, HTML escape repo/tag/branch/... names...
r18526 <a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
Dan Villiom Podlaski Christiansen
setup: install translation files as package data...
r9999 {file|escape}@{node|short}
</a>
</td>
</tr>'
fileannotateparent = '
<tr>
<td class="metatag">parent:</td>
<td>
Thomas Arendsen Hein
hgweb: urlescape all urls, HTML escape repo/tag/branch/... names...
r18526 <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
Dan Villiom Podlaski Christiansen
setup: install translation files as package data...
r9999 {rename%filerename}{node|short}
</a>
</td>
</tr>'
changesetchild = '
<tr>
<th class="child">child {rev}:</th>
Thomas Arendsen Hein
hgweb: urlescape all urls, HTML escape repo/tag/branch/... names...
r18526 <td class="child"><a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
Dan Villiom Podlaski Christiansen
setup: install translation files as package data...
r9999 </tr>'
changelogchild = '
<tr>
<th class="child">child {rev}:</th>
Thomas Arendsen Hein
hgweb: urlescape all urls, HTML escape repo/tag/branch/... names...
r18526 <td class="child"><a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
Dan Villiom Podlaski Christiansen
setup: install translation files as package data...
r9999 </tr>'
filerevchild = '
<tr>
<td class="metatag">child:</td>
Thomas Arendsen Hein
hgweb: urlescape all urls, HTML escape repo/tag/branch/... names...
r18526 <td><a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
Dan Villiom Podlaski Christiansen
setup: install translation files as package data...
r9999 </tr>'
fileannotatechild = '
<tr>
<td class="metatag">child:</td>
Thomas Arendsen Hein
hgweb: urlescape all urls, HTML escape repo/tag/branch/... names...
r18526 <td><a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
Dan Villiom Podlaski Christiansen
setup: install translation files as package data...
r9999 </tr>'
tags = tags.tmpl
tagentry = '
<li class="tagEntry parity{parity}">
<tt class="node">{node}</tt>
Thomas Arendsen Hein
hgweb: urlescape all urls, HTML escape repo/tag/branch/... names...
r18526 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{tag|escape}</a>
Dan Villiom Podlaski Christiansen
setup: install translation files as package data...
r9999 </li>'
branches = branches.tmpl
branchentry = '
<li class="tagEntry parity{parity}">
<tt class="node">{node}</tt>
Thomas Arendsen Hein
hgweb: urlescape all urls, HTML escape repo/tag/branch/... names...
r18526 <a href="{url|urlescape}shortlog/{node|short}{sessionvars%urlparameter}" class="{status}">{branch|escape}</a>
Dan Villiom Podlaski Christiansen
setup: install translation files as package data...
r9999 </li>'
diffblock = '<pre class="parity{parity}">{lines}</pre>'
changelogtag = '<tr><th class="tag">tag:</th><td class="tag">{tag|escape}</td></tr>'
changesettag = '<tr><th class="tag">tag:</th><td class="tag">{tag|escape}</td></tr>'
filediffparent = '
<tr>
<th class="parent">parent {rev}:</th>
Thomas Arendsen Hein
hgweb: urlescape all urls, HTML escape repo/tag/branch/... names...
r18526 <td class="parent"><a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
Dan Villiom Podlaski Christiansen
setup: install translation files as package data...
r9999 </tr>'
filelogparent = '
<tr>
<th>parent {rev}:</th>
Thomas Arendsen Hein
hgweb: urlescape all urls, HTML escape repo/tag/branch/... names...
r18526 <td><a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
Dan Villiom Podlaski Christiansen
setup: install translation files as package data...
r9999 </tr>'
filediffchild = '
<tr>
<th class="child">child {rev}:</th>
Thomas Arendsen Hein
hgweb: urlescape all urls, HTML escape repo/tag/branch/... names...
r18526 <td class="child"><a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
Dan Villiom Podlaski Christiansen
setup: install translation files as package data...
r9999 </tr>'
filelogchild = '
<tr>
<th>child {rev}:</th>
Thomas Arendsen Hein
hgweb: urlescape all urls, HTML escape repo/tag/branch/... names...
r18526 <td><a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
Dan Villiom Podlaski Christiansen
setup: install translation files as package data...
r9999 </tr>'
indexentry = '
<tr class="parity{parity}">
Thomas Arendsen Hein
hgweb: urlescape all urls, HTML escape repo/tag/branch/... names...
r18526 <td><a href="{url|urlescape}{sessionvars%urlparameter}">{name|escape}</a></td>
Dan Villiom Podlaski Christiansen
setup: install translation files as package data...
r9999 <td>{description}</td>
<td>{contact|obfuscate}</td>
Brodie Rao
hgweb: fix dynamic date calculation not working under Safari...
r15375 <td class="age">{lastchange|rfc822date}</td>
Dan Villiom Podlaski Christiansen
setup: install translation files as package data...
r9999 <td class="indexlinks">
Thomas Arendsen Hein
hgweb: urlescape all urls, HTML escape repo/tag/branch/... names...
r18526 <a href="{url|urlescape}rss-log">RSS</a>
<a href="{url|urlescape}atom-log">Atom</a>
Dan Villiom Podlaski Christiansen
setup: install translation files as package data...
r9999 {archives%archiveentry}
</td>
</tr>'
index = index.tmpl
Thomas Arendsen Hein
hgweb: urlescape all urls, HTML escape repo/tag/branch/... names...
r18526 archiveentry = '<a href="{url|urlescape}archive/{node|short}{extension|urlescape}">{type|escape}</a> '
Dan Villiom Podlaski Christiansen
setup: install translation files as package data...
r9999 notfound = notfound.tmpl
error = error.tmpl
urlparameter = '{separator}{name}={value|urlescape}'
hiddenformentry = '<input type="hidden" name="{name}" value="{value|escape}" />'
Thomas Arendsen Hein
hgweb: urlescape all urls, HTML escape repo/tag/branch/... names...
r18526 breadcrumb = '&gt; <a href="{url|urlescape}">{name|escape}</a> '