Changeset 3034


Ignore:
Timestamp:
10/26/05 19:41:16 (8 years ago)
Author:
moschny
Message:

Load . into trac/vendor/current.

Location:
trac/vendor/current
Files:
6 added
1 deleted
34 edited

Legend:

Unmodified
Added
Removed
  • trac/vendor/current/htdocs/css/browser.css

    r2581 r3034  
    1 @import url(code.css); 
     1#prefs { margin-top: -1.6em } 
     2* html #prefs { width: 34em } /* Set width only for IE */ 
     3#prefs fieldset label { display: block } 
     4#prefs .buttons { margin-top: -1.6em } 
     5#prefs .choice { margin-top: -0.6em } 
     6 
     7#legend { clear: right; } 
    28 
    39/* Browser */ 
    4 h1 { font-size: 16px; letter-spacing: -0.028em; margin: 0; padding: 0 0 .5em } 
     10h1 { margin: 0; padding: 0 0 .5em } 
    511h1 :link, h1 :visited, h1 .filename { border: none; padding: 0 .2em } 
    612h1 :link, h1 :visited { color: #b00 } 
     
    1925 white-space: nowrap; 
    2026} 
     27#dirlist td.size {   
     28 color: #888; 
     29 white-space: nowrap; 
     30 text-align: right; 
     31 vertical-align: middle; 
     32 font-size: 70%; 
     33} 
    2134#dirlist td.name { width: 100% } 
    2235#dirlist td.name a, #dirlist td.name span { 
     
    3144#dirlist td.name span.file { background-image: url(../filedeny.png) } 
    3245#dirlist td.name a, #dirlist td.rev a { border-bottom: none; display: block } 
    33 #dirlist td.change * { font-size: 9px } 
     46#dirlist td.rev { text-align: right } 
     47#dirlist td.change { font-size: 85%; vertical-align: middle; white-space: nowrap } 
    3448 
    3549/* Styles for the revision log table 
    3650   (extends the styles for "table.listing") */ 
    3751#chglist { margin-top: 0 } 
    38 #chglist td.date { white-space: nowrap } 
    39 #chglist td.rev, #chglist td.chgset { text-align: center } 
     52#chglist td.change span {  
     53 border: 1px solid #999; 
     54 display: block; 
     55 margin: .2em .5em 0 0; 
     56 width: .8em; height: .8em; 
     57} 
     58#chglist td.change .comment { display: none } 
     59#chglist td.old_path { font-style: italic } 
     60#chglist td.date { font-size: 85%; vertical-align: top; padding-top: 0.55em; white-space: nowrap } 
     61#chglist td.author { font-size: 85%; vertical-align: top; padding-top: 0.55em } 
     62#chglist td.rev, #chglist td.chgset { text-align: right } 
    4063#chglist td.rev a, #chglist td.chgset a { border-bottom: none } 
    41 #chglist td.summary { width: 100% } 
     64#chglist td.summary { width: 100%; font-size: 85%; vertical-align: middle; white-space: nowrap } 
     65#chglist td.summary * { margin-top: 0; margin-bottom: 0 } 
    4266 
    43 /* Styles for the revision info in the file module */ 
     67#paging { margin: 1em 0 } 
     68 
     69/* Styles for the revision info in the file view */ 
    4470#info { 
    4571 background: #f7f7f0; 
     
    5076 width: 100%; 
    5177} 
    52 #info th { 
    53  font-size: 11px; 
    54  font-weight: bold; 
    55  padding: 2px .5em; 
    56  white-space: nowrap; 
    57  vertical-align: top; 
    58 } 
    59 #info td.message { 
    60  font-size: 11px; 
    61  padding: 2px .5em; 
    62  vertical-align: top; 
    63  width: 100%; 
    64 } 
     78#info th, #info td { font-size: 85%; padding: 2px .5em; vertical-align: top } 
     79#info th { font-weight: bold; white-space: nowrap; } 
     80#info td.message { width: 100%; } 
    6581#info .message ul { padding: 0; margin: 0 2em } 
    6682#info .message p { margin: 0; padding: 0 } 
     83#info .props { 
     84 color: #666; 
     85 list-style: square; 
     86 margin: 0 0 .4em 1.6em; 
     87 padding: 0; 
     88} 
     89#info .props li { padding: 0 } 
    6790 
    6891/* Styles for the HTML preview */ 
  • trac/vendor/current/htdocs/css/changeset.css

    r2581 r3034  
    1 @import url(diff.css); 
    2  
    31/* Changeset overview */ 
    42#overview .files { padding-top: 1em } 
     
    1311 width: .8em; height: .8em; 
    1412} 
     13#overview div.add div, #overview div.cp div, #overview div.mv div { 
     14 border: 0; 
     15 margin: 0; 
     16 float: right; 
     17 width: .35em;  
     18} 
     19 
    1520#overview .message { padding: 1em 0 1px } 
    1621#overview dd.message p, #overview dd.message ul, #overview dd.message ol { 
     
    1924} 
    2025#overview .files { padding: 1px 0 } 
     26 
     27.diff ul.props { font-size: 90%; list-style: disc; margin: .5em 0 0; padding: 0 .5em 1em 2em } 
     28.diff ul.props li { margin: 0; padding: 0 } 
  • trac/vendor/current/htdocs/css/code.css

    r2581 r3034  
    1 .code-block { 
    2  border: 1px dotted #d7d7d7; 
    3  margin: 1em 0; 
    4  padding: .3em; 
     1div.code { 
     2 background: #f7f7f7; 
     3 border: 1px solid #d7d7d7; 
     4 margin: 1em 1.75em; 
     5 padding: .25em; 
    56 overflow: auto 
    67} 
     8 
     9table.code { 
     10 border: 1px solid #ddd; 
     11 border-spacing: 0; 
     12 border-top: 0; 
     13 empty-cells: show; 
     14 font-size: 12px; 
     15 line-height: 130%; 
     16 padding: 0; 
     17 margin: 0 auto; 
     18 table-layout: fixed; 
     19 width: 100%; 
     20} 
     21table.code th { 
     22 border-right: 1px solid #d7d7d7; 
     23 border-bottom: 1px solid #998; 
     24 font-size: 11px; 
     25} 
     26table.code th.lineno { width: 4em } 
     27table.code thead th { 
     28 background: #eee; 
     29 border-top: 1px solid #d7d7d7; 
     30 color: #999; 
     31 padding: 0 .25em; 
     32 text-align: center; 
     33 white-space: nowrap; 
     34} 
     35table.code tbody th { 
     36 background: #eed; 
     37 color: #886; 
     38 font-weight: normal; 
     39 padding: 0 .5em; 
     40 text-align: right; 
     41 vertical-align: top; 
     42} 
     43table.code tbody th :link, table.code tbody th :visited { 
     44 border: none; 
     45 color: #886; 
     46 text-decoration: none; 
     47} 
     48table.code tbody th :link:hover, table.code tbody th :visited:hover { 
     49 color: #000; 
     50} 
     51table.code tbody td { 
     52 background: #fff; 
     53 font: normal 11px monospace; 
     54 overflow: hidden; 
     55 padding: 1px 2px; 
     56 vertical-align: top; 
     57} 
     58 
    759.image-file { background: #eee; padding: .3em } 
    860.image-file img { background: url(../imggrid.png) } 
    961 
    1062/* Default */ 
    11 .css_default, .c_default, .code_default, .pl_default, .p_default,  
    12 .hphp_default, .yaml_default, .code-block span { 
     63.code-block span { 
    1364 font-family: monospace; 
    1465} 
  • trac/vendor/current/htdocs/css/diff.css

    r2581 r3034  
    1919 
    2020/* Colors for change types */ 
    21 #overview .mod, .diff #legend .mod { background: #fd8 } 
    22 #overview .rem, .diff #legend .rem { background: #f88 } 
    23 #overview .add, .diff #legend .add { background: #dfd } 
     21#chglist .edit, #overview .mod, .diff #legend .mod { background: #fd8 } 
     22#chglist .delete, #overview .rem, .diff #legend .rem { background: #f88 } 
     23#chglist .add, #overview .add, .diff #legend .add { background: #bfb } 
     24#chglist .copy, #overview .cp, .diff #legend .cp { background: #88f } 
     25#chglist .move, #overview .mv, .diff #legend .mv { background: #ccc } 
     26#chglist .unknown { background: #fff } 
    2427 
    2528/* Legend for diff colors */ 
     
    4952 
    5053/* Styles for the list of diffs */ 
    51 .diff ul { clear: both; margin: 0; padding: 0 } 
    52 .diff li { 
     54.diff ul.entries { clear: both; margin: 0; padding: 0 } 
     55.diff li.entry { 
    5356 background: #f7f7f7; 
    5457 border: 1px solid #d7d7d7; 
     
    6366 letter-spacing: normal; 
    6467 margin: 0 auto; 
    65  padding: .1em 0 .25em; 
    66  text-align: center; 
     68 padding: .1em 0 .25em .5em; 
    6769} 
    6870 
     
    109111 vertical-align: top; 
    110112} 
    111 .diff table tbody.skippedlines td { 
     113.diff table tbody.skipped td { 
    112114 background: #f7f7f7; 
    113115 border: 1px solid #d7d7d7; 
     
    118120 
    119121/* Styles for the inline diff */ 
    120 .diff table.inline tbody.mod td.base, .diff table.inline tbody.rem td.base { 
     122.diff table.inline tbody.mod td.l, .diff table.inline tbody.rem td.l { 
    121123 background: #fdd; 
    122124 border-color: #c00; 
     
    124126 border-width: 0 1px 0 1px; 
    125127} 
    126 .diff table.inline tbody.mod td.chg, .diff table.inline tbody.add td.chg { 
     128.diff table.inline tbody.mod td.r, .diff table.inline tbody.add td.r { 
    127129 background: #dfd; 
    128130 border-color: #0a0; 
     
    130132 border-width: 0 1px 0 1px; 
    131133} 
    132 .diff table.inline tbody.mod tr.first td.base, 
    133 .diff table.inline tbody.rem tr.first td.base { border-top-width: 1px } 
    134 .diff table.inline tbody.mod tr.last td.base, 
    135 .diff table.inline tbody.rem tr.last td.base { border-bottom-width: 1px } 
    136 .diff table.inline tbody.mod tr.first td.chg, 
    137 .diff table.inline tbody.add tr.first td.chg { border-top-width: 1px } 
    138 .diff table.inline tbody.mod tr.last td.chg, 
    139 .diff table.inline tbody.add tr.last td.chg { border-bottom-width: 1px } 
     134.diff table.inline tbody.mod tr.first td.l, 
     135.diff table.inline tbody.rem tr.first td.l { border-top-width: 1px } 
     136.diff table.inline tbody.mod tr.last td.l, 
     137.diff table.inline tbody.rem tr.last td.l { border-bottom-width: 1px } 
     138.diff table.inline tbody.mod tr.first td.r, 
     139.diff table.inline tbody.add tr.first td.r { border-top-width: 1px } 
     140.diff table.inline tbody.mod tr.last td.r, 
     141.diff table.inline tbody.add tr.last td.r { border-bottom-width: 1px } 
    140142.diff table.inline tbody.mod td del { background: #e99; color: #000 } 
    141143.diff table.inline tbody.mod td ins { background: #9e9; color: #000 } 
     
    143145/* Styles for the side-by-side diff */ 
    144146.diff table.sidebyside colgroup.content { width: 50% } 
    145 .diff table.sidebyside tbody.mod td.base { background: #fe9 } 
    146 .diff table.sidebyside tbody.mod td.chg { background: #fd8 } 
    147 .diff table.sidebyside tbody.add td.base { background: #dfd } 
    148 .diff table.sidebyside tbody.add td.chg { background: #cfc } 
    149 .diff table.sidebyside tbody.rem td.base { background: #f88 } 
    150 .diff table.sidebyside tbody.rem td.chg { background: #faa } 
     147.diff table.sidebyside tbody.mod td.l { background: #fe9 } 
     148.diff table.sidebyside tbody.mod td.r { background: #fd8 } 
     149.diff table.sidebyside tbody.add td.l { background: #dfd } 
     150.diff table.sidebyside tbody.add td.r { background: #cfc } 
     151.diff table.sidebyside tbody.rem td.l { background: #f88 } 
     152.diff table.sidebyside tbody.rem td.r { background: #faa } 
    151153.diff table.sidebyside tbody.mod del, .diff table.sidebyside tbody.mod ins { 
    152154 background: #fc0; 
  • trac/vendor/current/htdocs/css/report.css

    r2581 r3034  
    1 h1 .numrows { font-size: 65%; color: #999; font-weight: normal } 
     1@import url(code.css); 
     2 
     3h1 .numrows { color: #999; font-size: 65%; font-weight: normal } 
    24h2 { 
    35 background: #f7f7f7; 
     
    911#report-notfound { margin: 2em; font-size: 110% } 
    1012 
     13#query { clear: right } 
     14#query fieldset, #query fieldset input, #query fieldset select { font-size: 11px } 
     15#query fieldset { margin-top: 1em } 
     16#query .option, #query .option input, #query .option select { font-size: 11px } 
     17#query .option { float: left; line-height: 2em; margin: .9em 2.5em 0 .5em; padding: 0 0 .1em } 
     18#query .buttons { float: right; margin-top: .5em } 
     19#query .buttons input { margin: .5em } 
     20#query hr { clear: both; margin: 0; visibility: hidden } 
     21 
     22#filters table { width: 100% } 
     23#filters tr { height: 2em } 
     24#filters th, #filters td { padding: 0 .2em; vertical-align: middle } 
     25#filters th { font-size: 11px; text-align: right; white-space: nowrap; } 
     26#filters td label { font-size: 11px } 
     27#filters td.mode { text-align: right } 
     28#filters td.filter { width: 100% } 
     29#filters td.filter label { padding-right: 1em } 
     30#filters td.actions { text-align: right; white-space: nowrap } 
     31 
    1132/* Styles for the report list and the report results table 
    1233   (extends the styles for "table.listing") */ 
    13 #reportlist td.title { width: 100% } 
    14 #reportlist tbody td :link, #reportlist tbody td :visited, 
    15 #tktlist tbody td :link, #tktlist tbody td :visited { display: block } 
    16 #tktlist { border-bottom: none } 
    17 #tktlist thead th { text-transform: capitalize } 
    18 #tktlist tbody td, #reportlist tbody td { padding: .1em .5em } 
    19 #tktlist tbody td a, #reportlist tbody td a { border-bottom: none } 
    20 #tktlist tbody td.ticket :link, #tktlist tbody td.ticket :visited { 
     34.reports td.title { width: 100% } 
     35.reports tbody td :link, .reports tbody td :visited, 
     36.tickets tbody td :link, .tickets tbody td :visited { display: block } 
     37.tickets { border-bottom: none } 
     38.tickets thead th { text-transform: capitalize } 
     39.tickets tbody td, .reports tbody td { padding: .1em .5em !important } 
     40.tickets tbody td a, .reports tbody td a { border-bottom: none } 
     41.tickets tbody td.id :link, .tickets tbody td.id :visited { 
    2142 font-weight: bold; 
    2243} 
    23 #tktlist tbody tr:hover { background: #eed; color: #000 } 
    24 #tktlist tr.color1-odd  { background: #fdc; border-color: #e88; color: #a22 } 
    25 #tktlist tr.color1-even { background: #fed; border-color: #e99; color: #a22 } 
    26 #tktlist tr.color2-odd  { background: #ffb; border-color: #eea; color: #880 } 
    27 #tktlist tr.color2-even { background: #ffd; border-color: #dd8; color: #880 } 
    28 #tktlist tr.color3-odd  { background: #fbfbfb; border-color: #ddd; color: #444 } 
    29 #tktlist tr.color3-even { background: #f6f6f6; border-color: #ccc; color: #333 } 
    30 #tktlist tr.color4-odd { background: #e7ffff; border-color: #cee; color: #099 } 
    31 #tktlist tr.color4-even { background: #dff; border-color: #bee; color: #099 } 
    32 #tktlist tr.color5-odd { background: #e7eeff; border-color: #cde; color: #469 } 
    33 #tktlist tr.color5-even { background: #dde7ff; border-color: #cde; color: #469 } 
    34 #tktlist tr.color6-odd  { background: #f0f0f0; border-color: #ddd; color: #888 } 
    35 #tktlist tr.color6-even { background: #f7f7f7; border-color: #ddd; color: #888 } 
    36 #tktlist tr.color6-odd a, .color6-even a { color: #b66 } 
    37 #tktlist tbody td.fullrow { 
     44.tickets tbody tr:hover { background: #eed; color: #000 } 
     45.tickets tr.color1-odd  { background: #fdc; border-color: #e88; color: #a22 } 
     46.tickets tr.color1-even { background: #fed; border-color: #e99; color: #a22 } 
     47.tickets tr.color2-odd  { background: #ffb; border-color: #eea; color: #880 } 
     48.tickets tr.color2-even { background: #ffd; border-color: #dd8; color: #880 } 
     49.tickets tr.color3-odd  { background: #fbfbfb; border-color: #ddd; color: #444 } 
     50.tickets tr.color3-even { background: #f6f6f6; border-color: #ccc; color: #333 } 
     51.tickets tr.color4-odd { background: #e7ffff; border-color: #cee; color: #099 } 
     52.tickets tr.color4-even { background: #dff; border-color: #bee; color: #099 } 
     53.tickets tr.color5-odd { background: #e7eeff; border-color: #cde; color: #469 } 
     54.tickets tr.color5-even { background: #dde7ff; border-color: #cde; color: #469 } 
     55.tickets tr.color6-odd  { background: #f0f0f0; border-color: #ddd; color: #888 } 
     56.tickets tr.color6-even { background: #f7f7f7; border-color: #ddd; color: #888 } 
     57.tickets tr.color6-odd a, .color6-even a { color: #b66 } 
     58.tickets tbody tr.fullrow td, .tickets tbody td.fullrow { 
    3859 border: none; 
    3960 color: #333; 
    40  background: #fff; 
    41  padding-bottom: 2.5em !important; 
    42  font-size: 90%; 
     61 background: transparent; 
     62 padding: 0 1em 2em 2em !important; 
     63 font-size: 85%; 
    4364} 
    44 #tktlist td.fullrow :link, #tktlist td.fullrow :visited { display: inline } 
    45 #tktlist td.fullrow p { margin: 0; padding: .25em 1em } 
    46 #tktlist td.fullrow hr { display: none } 
     65.tickets tbody tr.fullrow:hover { background: transparent !important } 
     66.tickets .fullrow :link, .tickets .fullrow :visited { display: inline } 
     67.tickets .fullrow .meta { color: #999; margin-bottom: -.5em; margin-left: -1em } 
     68.tickets .fullrow hr { display: none } 
    4769 
    48 #tktlist tr.odd.highest { background: #fdc; border-color: #e88; color: #a22 } 
    49 #tktlist tr.even.highest { background: #fed; border-color: #e99; color: #a22 } 
    50 #tktlist tr.odd.high { background: #ffb; border-color: #eea; color: #880 } 
    51 #tktlist tr.even.high { background: #ffd; border-color: #dd8; color: #880 } 
    52 #tktlist tr.odd.normal  { background: #fbfbfb; border-color: #ddd; color: #444 } 
    53 #tktlist tr.even.normal { background: #f6f6f6; border-color: #ccc; color: #333 } 
    54 #tktlist tr.odd.low { background: #e7ffff; border-color: #cee; color: #099 } 
    55 #tktlist tr.even.low { background: #dff; border-color: #bee; color: #099 } 
    56 #tktlist tr.odd.lowest { background: #e7eeff; border-color: #cde; color: #469 } 
    57 #tktlist tr.even.lowest { background: #dde7ff; border-color: #cde; color: #469 } 
    58  
    59 .field { margin-top: 1.3em } 
    60  
    61 #query fieldset { margin: 1em 0 } 
    62 #query fieldset div { float: left; margin: .5em 2em .5em 0 } 
    63 #query fieldset label { display: block } 
    64 #query fieldset select { width: 10em } 
    65 #query br, #query .buttons { clear: left } 
     70/* Query results table */ 
     71table.tickets tbody tr.added td { font-weight: bold } 
     72table.tickets tbody tr.changed td { font-style: italic } 
     73table.tickets tbody tr.removed td { color: #999 } 
     74table.tickets tbody tr.prio1 { background: #fdc; border-color: #e88 } 
     75table.tickets tbody tr.even.prio1 { background: #fed; border-color: #e99 } 
     76table.tickets tbody tr.prio2 { background: #ffb; border-color: #eea } 
     77table.tickets tbody tr.even.prio2 { background: #ffd; border-color: #dd8 } 
     78table.tickets tbody tr.prio3  { background: #fbfbfb; border-color: #ddd } 
     79table.tickets tbody tr.even.prio3 { background: #f6f6f6; border-color: #ccc } 
     80table.tickets tbody tr.prio4 { background: #e7ffff; border-color: #cee } 
     81table.tickets tbody tr.even.prio4 { background: #dff; border-color: #bee } 
     82table.tickets tbody tr.prio5 { background: #e7eeff; border-color: #cde } 
     83table.tickets tbody tr.even.prio5 { background: #dde7ff } 
     84table.tickets tbody tr.prio6 { background: #f0f0f0; border-color: #ddd } 
     85table.tickets tbody tr.even.prio6 { background: #f7f7f7 } 
  • trac/vendor/current/htdocs/css/roadmap.css

    r2581 r3034  
    11/* General styles for the progress bars */ 
    2 div.progress { float: left; border: 1px solid #d7d7d7 } 
    3 div.progress div { background: #bae0ba; height: 1.2em } 
     2div.progress { border: 1px solid #d7d7d7; float: left } 
     3div.progress :link, div.progress :visited { 
     4 background: #fff; 
     5 border: none; 
     6 display: block; 
     7 float: left; 
     8 height: 1.2em; 
     9} 
     10div.progress :link:hover, div.progress :visited:hover { background: #fff } 
     11div.progress .closed:link, div.progress .closed:visited { background: #bae0ba } 
    412p.percent { font-size: 10px; line-height: 2.4em; margin: 0.9em 0 0 } 
    513 
     
    715ul.milestones { margin: 2em 0 0; padding: 0 } 
    816li.milestone { list-style: none; margin-bottom: 4em } 
    9 li.milestone .info { white-space: nowrap } 
    10 li.milestone .info h2 { 
     17.milestone .info { white-space: nowrap } 
     18.milestone .info h2 { 
    1119 background: #f7f7f7; 
    1220 border-bottom: 1px solid #d7d7d7; 
    1321 margin: 0; 
    1422} 
    15 li.milestone .info h2 :link, li.milestone .info h2 :visited { 
     23.milestone .info h2 :link, .milestone .info h2 :visited { 
    1624 color: #000; 
    1725 display: block; 
    1826 border-bottom: none; 
    1927} 
    20 li.milestone .info h2 :link:hover, li.milestone .info h2 :visited:hover { 
     28.milestone .info h2 :link:hover, .milestone .info h2 :visited:hover { 
    2129 color: #000; 
    2230} 
    23 li.milestone .info h2 em { color: #b00; font-style: normal } 
    24 li.milestone .info .date { 
     31.milestone .info h2 em { color: #b00; font-style: normal } 
     32.milestone .info .date { 
    2533 color: #888; 
    2634 font-size: 11px; 
     
    2836 margin: 0; 
    2937} 
    30 li.milestone .info .progress { margin: 1em 1em 0; width: 40em; max-width: 80% } 
    31 li.milestone .info dl { 
     38.milestone .info .progress { margin: 1em 1em 0; width: 40em; max-width: 70% } 
     39.milestone .info dl { 
    3240 font-size: 10px; 
    3341 font-style: italic; 
     
    3543 white-space: nowrap; 
    3644} 
    37 li.milestone .info dt { display: inline; margin-left: .5em } 
    38 li.milestone .info dd { display: inline; margin: 0 1em 0 .5em } 
    39 li.milestone .descr { margin-left: 1em } 
     45.milestone .info dt { display: inline; margin-left: .5em } 
     46.milestone .info dd { display: inline; margin: 0 1em 0 .5em } 
     47.milestone .description { margin-left: 1em } 
    4048 
    4149/* Styles for the milestone view */ 
    42 .milestone .date { color: #888; font-style: italic } 
    43 .milestone .descr { margin: 1em 0 2em } 
     50.milestone .date { color: #888; font-style: italic; margin: 0 } 
     51.milestone .description { margin: 1em 0 2em } 
    4452 
    45 /* Milestone view preferences */ 
    46 #prefs fieldset { margin: 1em .5em .5em; padding: .5em 1em 0 } 
    47  
    48 /* Styles for the statistics table */ 
    49 h2.stats { 
    50  background: #f7f7f7; 
    51  border-bottom: 1px solid #d7d7d7; 
    52  clear: right; 
    53  padding: 0 .33em; 
    54 } 
    55 #stats { border-bottom: none; margin-top: 0 } 
    56 #stats td, #stats th { padding: 0 .25em } 
    57 #stats :link, #stats :visited { display: block; border: none } 
    58 #stats th.name { text-transform: capitalize } 
    59 #stats th.tickets { text-align: center; border-bottom: none } 
    60 #stats th.open, #stats th.closed { 
    61  border-top: none; 
    62  font-size: smaller; 
    63  text-align: center; 
    64  width: 6em; 
    65 } 
    66 #stats td.open, #stats td.closed { 
    67  color: #888; 
    68  text-align: right; 
    69  padding-right: 1.5em; 
    70  vertical-align: middle; 
    71 } 
    72 #stats th.progress { padding-left: 6px; width: 60% } 
    73 #stats td.progress { white-space: nowrap } 
    74 #stats td.progress div.progress { margin: 3px .5em 3px 2px } 
    75 #stats td.progress p.percent { font-size: 10px; margin: 0 } 
    76 #stats tbody th { font-weight: normal; text-align: left } 
    77 #stats tbody th.name { line-height: 2em } 
    78 #stats tbody.totals tr { border-bottom: 0 } 
    79 #stats tbody.totals th, #stats tbody.totals td { 
    80  font-weight: bold; 
    81 } 
     53/* Styles for the milestone statistics table */ 
     54#stats { float: right; margin: 0 0 2em 2em; width: 400px; max-width: 40% } 
     55#stats legend { white-space: nowrap } 
     56#stats table { border-collapse: collapse; width: 100% } 
     57#stats th, #stats td { font-size: 10px; padding: 0; white-space: nowrap } 
     58#stats th { text-align: right; text-transform: capitalize } 
     59#stats th :link, #stats th :visited { border: none } 
     60#stats td { padding-left: 0.5em; width: 100% } 
     61#stats td div.progress { margin: 3px 4px 3px 0 } 
     62#stats td p.percent { line-height: 1.2em; margin-top: .4em } 
    8263 
    8364/* Styles for the milestone edit form */ 
     
    8768#edit .field { margin-top: 1.3em } 
    8869#edit label { padding-left: .2em } 
    89 #edit textarea#descr { width: 97% } 
     70#edit textarea#description { width: 97% } 
  • trac/vendor/current/htdocs/css/search.css

    r2581 r3034  
    1010#results .author, #results .date, #results .keywords { color: #090 } 
    1111 
    12 #paging { margin: 0 0 2em } 
    13 #paging ul { text-align: left } 
     12#paging { margin: 0 0 2em; text-align: center } 
  • trac/vendor/current/htdocs/css/ticket.css

    r2581 r3034  
    11@import url(code.css); 
    22 
    3 #content { margin-top: 1.5em; width: 700px; max-width: 100% } 
     3#content { width: 700px; max-width: 100% } 
    44 
    55#newticket #description { width: 100% } 
    66#newticket #properties { width: 100% } 
    77 
    8 #ticket {  
     8#ticket { 
    99 background: #ffd; 
    1010 border: 1px outset #996; 
    11  padding: 1em; 
     11 margin-top: 1em; 
     12 padding: .5em 1em; 
    1213 position: relative; 
    1314} 
    14 #ticket h1, #ticket h2 { margin: 0 } 
    15 #ticket h2 { font-weight: normal; font-size: 150%; margin-bottom: 1em } 
    16 #ticket .date { color: #996; float: right; position: relative } 
     15#ticket h2.summary { margin: 0 } 
     16#ticket h3.status { color: #996; font-size: 90%; font-weight: normal; margin-top: .5em; } 
     17#ticket .date { color: #996; float: right; font-size: 85%; position: relative } 
     18#ticket .date p { margin: 0 } 
    1719 
    18 #ticket table { table-layout: fixed; border-collapse: collapse; width: 100% } 
    19 #ticket tr { border-bottom: 1px dotted #eed } 
    20 #ticket td, #ticket th { font-size: 80%; padding: .5em 1em; vertical-align: top } 
    21 #ticket th { color: #996; font-weight: normal; text-align: left } 
    22 #ticket hr { color: #dd9; border-color: #dd9; border-width: 1px 0 0; height: 1px; margin: .5em 0 0 } 
     20#ticket table.properties { 
     21 border-bottom: 1px solid #dd9; 
     22 border-top: 1px solid #dd9; 
     23 border-collapse: collapse; 
     24 table-layout: fixed; 
     25 width: 100%; 
     26} 
     27#ticket table.properties tr { border-bottom: 1px dotted #eed } 
     28#ticket table.properties td, #ticket table.properties th { 
     29 font-size: 80%; 
     30 padding: .5em 1em; 
     31 vertical-align: top; 
     32} 
     33#ticket table.properties th { 
     34 color: #663; 
     35 font-weight: normal; 
     36 text-align: left; 
     37 width: 20%; 
     38} 
     39#ticket table.properties td { width: 30% } 
     40#ticket table.properties .description { border-top: 1px solid #dd9 } 
    2341 
    2442#attachments { border: 1px outset #996; padding: 1em } 
    25 #attachments .attachments { list-style: square; margin-left: 2em; padding: 0 } 
     43#attachments .attachments { margin-left: 2em; padding: 0 } 
     44#attachments dt { display: list-item; list-style: square; } 
     45#attachments dd { font-style: italic; margin-left: 0; padding-left: 0; } 
    2646 
    2747#changelog { border: 1px outset #996; padding: 1em } 
     
    3959 
    4060#properties { white-space: nowrap; line-height: 160%; padding: .5em } 
    41 #properties .main { margin-bottom: 1em } 
     61/*#properties .main { margin-bottom: 1em } 
    4262#properties .col1 { 
    4363 border-right: 1px dotted #d7d7d7; 
     
    5878 padding-top: 1em 
    5979} 
    60 #properties .custom .field { margin: .25em 0 } 
     80#properties .custom .field { margin: .25em 0 }*/ 
     81 
     82#properties table { border-spacing: 0; width: 100%; } 
     83#properties table th { 
     84 padding: .4em; 
     85 text-align: right; 
     86 width: 20%; 
     87 vertical-align: top; 
     88} 
     89#properties table th.col2 { border-left: 1px dotted #d7d7d7 } 
     90#properties table td { vertical-align: middle; width: 30% } 
     91#properties table td.fullrow { vertical-align: middle; width: 80% } 
    6192 
    6293#action { line-height: 2em } 
  • trac/vendor/current/htdocs/css/timeline.css

    r2588 r3034  
    22 
    33* html #prefs { width: 34em } /* Set width only for IE */ 
     4#prefs fieldset label { display: block } 
    45#prefs .buttons { margin-top: -1.6em } 
    56 
     
    4142dt.changeset, dt.changeset a { background-image: url(../changeset.png) !important } 
    4243dt.newticket, dt.newticket a { background-image: url(../newticket.png) !important } 
     44dt.editedticket, dt.editedticket a { background-image: url(../editedticket.png) !important } 
    4345dt.closedticket, dt.closedticket a { background-image: url(../closedticket.png) !important } 
    4446dt.wiki, dt.wiki a { background-image: url(../wiki.png) !important } 
    4547dt.milestone, dt.milestone a { background-image: url(../milestone.png) !important } 
    4648 
    47 .diff-unmod { color: #000 } 
    48 .diff-rem { color: #e00 } 
    49 .diff-add { color: #2e2 } 
    50 .diff-mod { color: #e84 } 
     49/* Styles for the 'changeset_show_files' option */ 
     50dd.changeset .changes .add { color: #2e2 } 
     51dd.changeset .changes .delete { color: #e00 } 
     52dd.changeset .changes .edit, dd.changeset .changes .copy, 
     53dd.changeset .changes .move { 
     54 color: #e84; 
     55} 
  • trac/vendor/current/htdocs/css/trac.css

    r2588 r3034  
    44 color: #000; 
    55 margin: 10px; 
     6 padding: 0; 
    67} 
    78body, th, td { 
     
    2021img { border: none } 
    2122 
    22 .underline { text-decoration: underline; } 
     23.underline { text-decoration: underline } 
    2324ol.loweralpha { list-style-type: lower-alpha } 
    2425ol.upperalpha { list-style-type: upper-alpha } 
     
    4243} 
    4344 
    44 .ext-link { background: url(../extlink.gif) no-repeat 0 58%; padding-left: 16px } 
    45 * html .ext-link { background-position: 0 .35em } /* IE hack, see #937 */ 
     45@media screen { 
     46 a.ext-link .icon { 
     47  background: url(../extlink.gif) left center no-repeat; 
     48  padding-left: 16px; 
     49 } 
     50 * html a.ext-link .icon { display: inline-block; } 
     51} 
    4652 
    4753/* Forms */ 
    4854input, textarea, select { margin: 2px } 
    4955input, select { vertical-align: middle } 
    50 input[type=submit], input[type=reset] { 
     56input[type=button], input[type=submit], input[type=reset] { 
    5157 background: #eee; 
    5258 color: #222; 
     
    5460 padding: .1em .5em; 
    5561} 
    56 input[type=submit]:hover, input[type=reset]:hover { background: #ccb } 
    57 input[type=text], input.textwidget, textarea { 
    58  background: #fff; 
    59  color: #000; 
    60  border: 1px solid #d7d7d7; 
    61 } 
     62input[type=button]:hover, input[type=submit]:hover, input[type=reset]:hover { 
     63 background: #ccb; 
     64} 
     65input[type=button][disabled], input[type=submit][disabled], 
     66input[type=reset][disabled] { 
     67 background: #f6f6f6; 
     68 border-style: solid; 
     69 color: #999; 
     70} 
     71input[type=text], input.textwidget, textarea { border: 1px solid #d7d7d7 } 
    6272input[type=text], input.textwidget { padding: .25em .5em } 
    6373input[type=text]:focus, textarea:focus { border: 1px solid #886 } 
    6474option { border-bottom: 1px dotted #d7d7d7 } 
    6575fieldset { border: 1px solid #d7d7d7; padding: .5em; margin: 0 } 
    66 fieldset.iefix { border: none; padding: 0; margin: 0 } 
     76fieldset.iefix { background: transparent; border: none; padding: 0; margin: 0 } 
    6777* html fieldset.iefix { width: 98% } 
    6878fieldset.iefix p { margin: 0 } 
     
    7585/* Header */ 
    7686#header hr { display: none } 
     87#header h1 { margin: 1.5em 0 -1.5em; } 
    7788#header img { border: none; margin: 0 0 -3em } 
    7889#header :link, #header :visited, #header :link:hover, #header :visited:hover { 
    7990 background: transparent; 
     91 color: #555; 
    8092 margin-bottom: 2px; 
    8193 border: none; 
    8294} 
     95#header h1 :link:hover, #header h1 :visited:hover { color: #000 } 
    8396 
    8497/* Quick search */ 
     
    126139 border-right: 1px solid #ddd; 
    127140} 
    128 #mainnav .active:link, #mainnav .active:visited { 
     141#mainnav .active :link, #mainnav .active :visited { 
    129142 background: #333 url(../topbar_gradient2.png) 0 0 repeat-x; 
    130143 border-top: none; 
     
    133146 font-weight: bold; 
    134147} 
    135 #mainnav .active:link:hover, #mainnav .active:visited:hover { 
     148#mainnav .active :link:hover, #mainnav .active :visited:hover { 
    136149 border-right: 1px solid #000; 
    137150} 
     
    225238* html #prefs { width: 26em } /* Set width only for IE */ 
    226239#prefs input, #prefs select { font-size: 9px; vertical-align: middle } 
    227 #prefs fieldset { border: none; margin: .5em; padding: 0 } 
     240#prefs fieldset { 
     241 background: transparent; 
     242 border: none; 
     243 margin: .5em; 
     244 padding: 0; 
     245} 
    228246#prefs fieldset legend { 
    229247 background: transparent; 
     
    237255 
    238256/* Wiki */ 
    239 a.missing:link,a.missing:visited { background: #fafaf0; color: #998 } 
     257.wikipage { padding-left: 18px } 
     258.wikipage h1, .wikipage h2, .wikipage h3 { margin-left: -18px } 
     259 
     260a.missing:link, a.missing:visited { background: #fafaf0; color: #998 } 
    240261a.missing:hover { color: #000; } 
    241  
    242 #content.wiki { line-height: 140% } 
     262a.closed:link, a.closed:visited { text-decoration: line-through } 
     263 
     264dl.wiki dt { font-weight: bold } 
     265dl.compact dt { float: left; padding-right: .5em } 
     266dl.compact dd { margin: 0; padding: 0 } 
     267 
     268pre.wiki, pre.literal-block { 
     269 background: #f7f7f7; 
     270 border: 1px solid #d7d7d7; 
     271 margin: 1em 1.75em; 
     272 padding: .25em; 
     273 overflow: auto; 
     274} 
     275table.wiki { 
     276 border: 2px solid #ccc; 
     277 border-collapse: collapse; 
     278 border-spacing: 0; 
     279} 
     280table.wiki td { border: 1px solid #ccc;  padding: .1em .25em; } 
     281 
    243282.wikitoolbar { 
    244283 border: solid #d7d7d7; 
    245284 border-width: 1px 1px 1px 0; 
    246  float: left; 
    247285 height: 18px; 
     286 width: 156px; 
    248287} 
    249288.wikitoolbar :link, .wikitoolbar :visited { 
     
    273312#attachment fieldset { margin-top: 2em } 
    274313#attachment fieldset .field { float: left; margin: 0 1em .5em 0 } 
     314#attachment .options { float: left; padding: 0 0 1em 1em } 
    275315#attachment br { clear: left } 
     316.attachment #preview { margin-top: 1em } 
    276317 
    277318/* Styles for tabular listings such as those used for displaying directory 
     
    319360table.listing tbody tr:hover { background: #eed !important } 
    320361 
    321 .wikipage p { margin-left: 1em } 
    322 pre.wiki, pre.literal-block { 
    323  background: #f7f7f7; 
    324  border: 1px solid #d7d7d7; 
    325  margin: 1em 1.75em; 
    326  padding: .25em; 
    327  overflow: auto; 
    328 } 
    329 table.wiki { 
    330  border: 2px solid #ccc; 
    331  border-collapse: collapse; 
    332  border-spacing: 0; 
    333 } 
    334 table.wiki td { border: 1px solid #ccc;  padding: .1em .25em; } 
    335  
    336362/* Styles for the error page (and rst errors) */ 
    337363#content.error .message, div.system-message { 
  • trac/vendor/current/htdocs/css/wiki.css

    r2581 r3034  
    11@import url(code.css); 
    2 @import url(diff.css); 
    32 
    43/* Styles for the page editing form */ 
     
    65#edit #rows select { font-size: 90% } 
    76#edit #text { clear: both; width: 100% } 
     7#edit .wikitoolbar { float: left; } 
    88#changeinfo { padding: .5em } 
    99#changeinfo .field { float: left; margin: 0 1em .5em 0 } 
     
    1212#changeinfo .options, #changeinfo .buttons { clear: left } 
    1313#delete { margin-left: 6em } 
    14 #preview { background: #f4f4f4 url(../draft.png); margin-top: 2em } 
     14#preview { 
     15 background: #f4f4f4 url(../draft.png); 
     16 margin: 1em 0 2em; 
     17 overflow: auto; 
     18} 
     19 
     20/* Diff view */ 
     21#overview .multi { color: #999 } 
     22#overview .ipnr { color: #999; font-size: 80% } 
     23#overview .comment { padding: 1em 0 0 } 
     24 
     25/* Heading anchors */ 
     26.anchor:link, .anchor:visited { 
     27 border: none; 
     28 color: #d7d7d7; 
     29 font-size: .8em; 
     30 vertical-align: text-top; 
     31 visibility: hidden; 
     32} 
     33h1:hover .anchor, h2:hover .anchor, h3:hover .anchor, 
     34h4:hover .anchor, h5:hover .anchor, h6:hover .anchor { 
     35 visibility: visible; 
     36} 
    1537 
    1638/* Styles for the page history table 
    1739   (extends the styles for "table.listing") */ 
    1840#wikihist td { padding: 0 .5em } 
    19 #wikihist td.date, #wikihist td.version, #wikihist td.author { 
     41#wikihist td.date, #wikihist td.diff, #wikihist td.version, 
     42#wikihist td.author { 
    2043 white-space: nowrap; 
    2144} 
     
    2548/* Styles for the TracGuideToc wikimacro */ 
    2649.wiki-toc { 
    27  padding: .5em 0; 
     50 padding: .5em 1em; 
    2851 margin: 0 0 2em 1em; 
    2952 float: right; 
     
    3356 position: relative; 
    3457} 
    35 .wiki-toc h4 { font-size: 12px; margin: 0 1em; } 
    36 .wiki-toc ul { list-style: none; padding: 0; margin: 0; } 
    37 .wiki-toc li { margin: 0; padding: 0 1em; } 
    38 .wiki-toc .active { background: #ff9; } 
     58.wiki-toc h4 { font-size: 12px; margin: 0 } 
     59.wiki-toc ul, .wiki-toc ol { list-style: none; padding: 0; margin: 0 } 
     60.wiki-toc ul ul, .wiki-toc ol ol { padding-left: 1.2em } 
     61.wiki-toc li { margin: 0; padding: 0 } 
     62.wiki-toc .active { background: #ff9; position: relative; } 
  • trac/vendor/current/htdocs/js/trac.js

    r3033 r3034  
    1515  } 
    1616  return false; 
     17} 
     18 
     19// Convenience function for the nearest ancestor element with a specific tag 
     20// name 
     21function getAncestorByTagName(e, tagName) { 
     22  tagName = tagName.toLowerCase(); 
     23  do { 
     24    e = e.parentNode; 
     25  } while ((e.nodeType == 1) && (e.tagName.toLowerCase() != tagName)); 
     26  return (e.nodeType == 1) ? e : null; 
    1727} 
    1828 
     
    7686  if (!control) return; 
    7787  control.disabled = !enabled; 
    78   var labels = document.getElementsByTagName("label"); 
    79   for (var i = 0; i < labels.length; i++) { 
    80     if (labels[i].htmlFor == id) { 
    81       labels[i].className = enabled ? "enabled" : "disabled"; 
     88  var label = getAncestorByTagName(control, "label"); 
     89  if (label) { 
     90    label.className = enabled ? "enabled" : "disabled"; 
     91  } else { 
     92    var labels = document.getElementsByTagName("label"); 
     93    for (var i = 0; i < labels.length; i++) { 
     94      if (labels[i].htmlFor == id) { 
     95        labels[i].className = enabled ? "enabled" : "disabled"; 
     96        break; 
     97      } 
    8298    } 
    8399  } 
    84100} 
    85101 
    86 function addWikiFormattingToolbar(textarea) { 
    87   if ((typeof(document["selection"]) == "undefined") 
    88    && (typeof(textarea["setSelectionRange"]) == "undefined")) { 
    89     return; 
    90   } 
    91    
    92   var toolbar = document.createElement("div"); 
    93   toolbar.className = "wikitoolbar"; 
    94  
    95   function addButton(id, title, fn) { 
    96     var a = document.createElement("a"); 
    97     a.href = "#"; 
    98     a.id = id; 
    99     a.title = title; 
    100     a.onclick = function() { try { fn() } catch (e) { } return false }; 
    101     a.tabIndex = 400; 
    102     toolbar.appendChild(a); 
    103   } 
    104  
    105   function encloseSelection(prefix, suffix) { 
    106     textarea.focus(); 
    107     var start, end, sel, scrollPos, subst; 
    108     if (typeof(document["selection"]) != "undefined") { 
    109       sel = document.selection.createRange().text; 
    110     } else if (typeof(textarea["setSelectionRange"]) != "undefined") { 
    111       start = textarea.selectionStart; 
    112       end = textarea.selectionEnd; 
    113       scrollPos = textarea.scrollTop; 
    114       sel = textarea.value.substring(start, end); 
    115     } 
    116     if (sel.match(/ $/)) { // exclude ending space char, if any 
    117       sel = sel.substring(0, sel.length - 1); 
    118       suffix = suffix + " "; 
    119     } 
    120     subst = prefix + sel + suffix; 
    121     if (typeof(document["selection"]) != "undefined") { 
    122       var range = document.selection.createRange().text = subst; 
    123       textarea.caretPos -= suffix.length; 
    124     } else if (typeof(textarea["setSelectionRange"]) != "undefined") { 
    125       textarea.value = textarea.value.substring(0, start) + subst + 
    126                        textarea.value.substring(end); 
    127       if (sel) { 
    128         textarea.setSelectionRange(start + subst.length, start + subst.length); 
    129       } else { 
    130         textarea.setSelectionRange(start + prefix.length, start + prefix.length); 
     102function addHeadingLinks(container) { 
     103  var base = document.location.pathname; 
     104  function addLinks(elems) { 
     105    for (var i = 0; i < elems.length; i++) { 
     106      var hn = elems[i]; 
     107      if (hn.id) { 
     108        var link = document.createElement('a'); 
     109        link.href = base + '#' + hn.id; 
     110        link.className = 'anchor'; 
     111        link.title = "Link to this section"; 
     112        link.appendChild(document.createTextNode(" \u00B6")); 
     113        hn.appendChild(link); 
    131114      } 
    132       textarea.scrollTop = scrollPos; 
    133115    } 
    134116  } 
    135  
    136   addButton("strong", "Bold text: '''Example'''", function() { 
    137     encloseSelection("'''", "'''"); 
    138   }); 
    139   addButton("em", "Italic text: ''Example''", function() { 
    140     encloseSelection("''", "''"); 
    141   }); 
    142   addButton("heading", "Heading: == Example ==", function() { 
    143     encloseSelection("\n== ", " ==\n", "Heading"); 
    144   }); 
    145   addButton("link", "Link: [http://www.example.com/ Example]", function() { 
    146     encloseSelection("[", "]"); 
    147   }); 
    148   addButton("code", "Code block: {{{ example }}}", function() { 
    149     encloseSelection("\n{{{\n", "\n}}}\n"); 
    150   }); 
    151   addButton("hr", "Horizontal rule: ----", function() { 
    152     encloseSelection("\n----\n", ""); 
    153   }); 
    154  
    155   textarea.parentNode.insertBefore(toolbar, textarea); 
    156   var br = document.createElement("br"); 
    157   br.style.clear = "left"; 
    158   textarea.parentNode.insertBefore(br, textarea); 
     117  for (var lvl = 0; lvl <= 6; lvl++) { 
     118    addLinks(container.getElementsByTagName('h' + lvl)); 
     119  } 
    159120} 
  • trac/vendor/current/templates/attachment.cs

    r2581 r3034  
    1 <?cs set:html.stylesheet = 'css/code.css' ?> 
    21<?cs include "header.cs" ?> 
    32<?cs include "macros.cs" ?> 
     
    76<div id="content" class="attachment"> 
    87 
    9  <h3>Add Attachment to <a href="<?cs 
    10    var:file.attachment_parent_href?>"><?cs var:file.attachment_parent?></a></h3> 
    11  <form id="attachment" method="post" enctype="multipart/form-data" action="<?cs 
    12    var:cgi_location ?>"> 
     8<?cs if:attachment.mode == 'new' ?> 
     9 <h1>Add Attachment to <a href="<?cs var:attachment.parent.href?>"><?cs 
     10   var:attachment.parent.name ?></a></h1> 
     11 <form id="attachment" method="post" enctype="multipart/form-data" action=""> 
    1312  <div class="field"> 
    14    <label for="file">File:</label> 
    15    <input type="file" id="file" name="attachment" /> 
     13   <label>File:<br /><input type="file" name="attachment" /></label> 
    1614  </div> 
    1715  <fieldset> 
    1816   <legend>Attachment Info</legend> 
    1917   <div class="field"> 
    20     <label for="author">Your email or username:</label><br /> 
    21     <input type="text" id="author" name="author" class="textwidget" size="30" 
    22         value="<?cs var:attachment.author?>" /> 
     18    <label>Your email or username:<br /> 
     19    <input type="text" name="author" size="30" value="<?cs 
     20      var:attachment.author?>" /></label> 
    2321   </div> 
    2422   <div class="field"> 
    25     <label for="description">Description of the file (optional):</label><br /> 
    26     <input type="text" id="description" name="description" class="textwidget" 
    27         size="60" /> 
    28    </div><br /> 
     23    <label>Description of the file (optional):<br /> 
     24    <input type="text" name="description" size="60" /></label 
     25   </div> 
     26   <br /> 
     27   <div class="options"> 
     28    <label><input type="checkbox" name="replace" checked="checked" /> 
     29    Replace existing attachment of the same name</label> 
     30   </div> 
     31   <br /> 
    2932  </fieldset> 
    3033  <div class="buttons"> 
    31    <input type="hidden" name="mode" value="attachment" /> 
    32    <input type="hidden" name="type" value="<?cs var:attachment.type ?>" /> 
    33    <input type="hidden" name="id" value="<?cs var:attachment.id ?>" /> 
    34    <input type="submit" value="Add Attachment" /> 
     34   <input type="hidden" name="action" value="new" /> 
     35   <input type="hidden" name="type" value="<?cs var:attachment.parent.type ?>" /> 
     36   <input type="hidden" name="id" value="<?cs var:attachment.parent.id ?>" /> 
     37   <input type="submit" value="Add attachment" /> 
    3538   <input type="submit" name="cancel" value="Cancel" /> 
    3639  </div> 
    3740 </form> 
     41<?cs elif:attachment.mode == 'delete' ?> 
     42 <h1><a href="<?cs var:attachment.parent.href ?>"><?cs 
     43   var:attachment.parent.name ?></a>: <?cs var:attachment.filename ?></h1> 
     44 <p><strong>Are you sure you want to delete this attachment?</strong><br /> 
     45 This is an irreversible operation.</p> 
     46 <div class="buttons"> 
     47  <form method="post" action=""><div id="delete"> 
     48   <input type="hidden" name="action" value="delete" /> 
     49   <input type="submit" name="cancel" value="Cancel" /> 
     50   <input type="submit" value="Delete attachment" /> 
     51  </div></form> 
     52 </div><?cs else ?> 
     53 <h1><a href="<?cs var:attachment.parent.href ?>"><?cs 
     54   var:attachment.parent.name ?></a>: <?cs var:attachment.filename ?></h1> 
     55 <div id="preview"><?cs 
     56  if:attachment.preview ?> 
     57   <?cs var:attachment.preview ?><?cs 
     58  elif:attachment.max_file_size_reached ?> 
     59   <strong>HTML preview not available</strong>, since the file size exceeds 
     60   <?cs var:attachment.max_file_size  ?> bytes. You may <a href="<?cs 
     61     var:attachment.raw_href ?>">download the file</a> instead.<?cs 
     62  else ?> 
     63   <strong>HTML preview not available</strong>. To view the file, 
     64   <a href="<?cs var:attachment.raw_href ?>">download the file</a>.<?cs 
     65  /if ?> 
     66 </div> 
     67 <?cs if:attachment.can_delete ?><div class="buttons"> 
     68  <form method="get" action=""><div id="delete"> 
     69   <input type="hidden" name="action" value="delete" /> 
     70   <input type="submit" value="Delete attachment" /> 
     71  </div></form> 
     72 </div><?cs /if ?> 
     73<?cs /if ?> 
    3874 
    3975</div> 
  • trac/vendor/current/templates/browser.cs

    r2581 r3034  
    1 <?cs set:html.stylesheet = 'css/browser.css' ?> 
    2 <?cs include: "header.cs"?> 
     1<?cs include "header.cs"?> 
    32<?cs include "macros.cs"?> 
    43 
     
    109 
    1110<div id="content" class="browser"> 
    12  <?cs call:browser_path_links(browser.path, browser) ?> 
     11 <h1><?cs call:browser_path_links(browser.path, browser) ?></h1> 
    1312 
    1413 <div id="jumprev"> 
    15   <form action="<?cs var:browser_current_href ?>" method="get"> 
    16    <div> 
    17     <label for="rev">View revision:</label> 
    18     <input type="text" id="rev" name="rev" value="<?cs 
    19       var:browser.revision?>" size="4" /> 
    20    </div> 
    21   </form> 
     14  <form action="" method="get"><div> 
     15   <label for="rev">View revision:</label> 
     16   <input type="text" id="rev" name="rev" value="<?cs 
     17     var:browser.revision ?>" size="4" /> 
     18  </div></form> 
    2219 </div> 
    2320 
    24  <table class="listing" id="dirlist"> 
    25   <thead> 
    26    <tr> 
    27     <th class="name<?cs if:browser.order == "name" ?> <?cs 
    28       var:browser.order_dir ?><?cs /if ?>"><a title="Sort by name<?cs 
    29       if:browser.order == "name" && browser.order_dir == "asc" ?> (descending)<?cs 
    30       /if ?>" href="<?cs var:browser.current_href?>?order=name<?cs 
    31       if:browser.order == "name" && browser.order_dir == "asc" ?>&desc=1<?cs 
    32       /if ?>">Name</a> 
     21 <?cs if:browser.is_dir ?> 
     22  <table class="listing" id="dirlist"> 
     23   <thead> 
     24    <tr><?cs  
     25     call:sortable_th(browser.order, browser.desc, 'name', 'Name', browser.href) ?><?cs  
     26     call:sortable_th(browser.order, browser.desc, 'size', 'Size', browser.href) ?> 
     27     <th class="rev">Rev</th><?cs  
     28     call:sortable_th(browser.order, browser.desc, 'date', 'Age', browser.href) ?> 
     29     <th class="change">Last Change</th> 
     30    </tr> 
     31   </thead> 
     32   <tbody> 
     33    <?cs if:len(chrome.links.up) ?> 
     34     <tr class="even"> 
     35      <td class="name" colspan="5"> 
     36       <a class="parent" title="Parent Directory" href="<?cs 
     37         var:chrome.links.up.0.href ?>">../</a> 
     38      </td> 
     39     </tr> 
     40    <?cs /if ?> 
     41    <?cs each:item = browser.items ?> 
     42     <?cs set:change = browser.changes[item.rev] ?> 
     43     <tr class="<?cs if:name(item) % #2 ?>even<?cs else ?>odd<?cs /if ?>"> 
     44      <td class="name"><?cs 
     45       if:item.is_dir ?><?cs 
     46        if:item.permission ?> 
     47         <a class="dir" title="Browse Directory" href="<?cs 
     48           var:item.browser_href ?>"><?cs var:item.name ?></a><?cs 
     49        else ?> 
     50         <span class="dir" title="Access Denied" href=""><?cs 
     51           var:item.name ?></span><?cs 
     52        /if ?><?cs 
     53       else ?><?cs 
     54        if:item.permission != '' ?> 
     55         <a class="file" title="View File" href="<?cs 
     56           var:item.browser_href ?>"><?cs var:item.name ?></a><?cs 
     57        else ?> 
     58         <span class="file" title="Access Denied" href=""><?cs 
     59           var:item.name ?></span><?cs 
     60        /if ?><?cs 
     61       /if ?> 
     62      </td> 
     63      <td class="size"><?cs var:item.size ?></td> 
     64      <td class="rev"><?cs if:item.permission != '' ?><a title="View Revision Log" href="<?cs 
     65        var:item.log_href ?>"><?cs var:item.rev ?></a><?cs else ?><?cs var:item.rev ?><?cs /if ?></td> 
     66      <td class="age"><span title="<?cs var:browser.changes[item.rev].date ?>"><?cs 
     67        var:browser.changes[item.rev].age ?></span></td> 
     68      <td class="change"> 
     69       <span class="author"><?cs var:browser.changes[item.rev].author ?>:</span> 
     70       <span class="change"><?cs var:browser.changes[item.rev].message ?></span> 
     71      </td> 
     72     </tr> 
     73    <?cs /each ?> 
     74   </tbody> 
     75  </table><?cs 
     76 /if ?><?cs 
     77 
     78 if:len(browser.props) || !browser.is_dir ?> 
     79  <table id="info" summary="Revision info"><?cs 
     80   if:!browser.is_dir ?><tr> 
     81    <th scope="row"> 
     82     Revision <a href="<?cs var:file.changeset_href ?>"><?cs var:file.rev ?></a> 
     83     (checked in by <?cs var:file.author ?>, <?cs var:file.age ?> ago) 
    3384    </th> 
    34     <th class="rev">Rev</th> 
    35     <th class="age<?cs if:browser.order == "date" ?> <?cs 
    36       var:browser.order_dir ?><?cs /if ?>"><a title="Sort by age<?cs 
    37       if:browser.order == "date" && browser.order_dir == "asc" ?> (descending)<?cs 
    38       /if ?>" href="<?cs var:browser.current_href?>?order=date<?cs 
    39       if:browser.order == "date" && browser.order_dir == "asc" ?>&desc=1<?cs 
    40       /if ?>">Age</a> 
    41     </th> 
    42     <th class="change">Last Change</th> 
    43    </tr> 
    44   </thead> 
    45   <tbody> 
    46    <?cs if:browser.path != "/" ?> 
    47     <tr class="even"> 
    48      <td class="name" colspan="4"> 
    49       <a class="parent" title="Parent Directory" href="<?cs 
    50         var:browser.parent_href ?>">../</a> 
    51      </td> 
    52     </tr> 
    53    <?cs /if ?> 
    54    <?cs each:item = browser.items ?> 
    55     <tr class="<?cs if:name(item) % #2 ?>even<?cs else ?>odd<?cs /if ?>"> 
    56      <td class="name"><?cs 
    57       if:item.is_dir ?><?cs 
    58        if:item.permission ?> 
    59         <a class="dir" title="Browse Directory" href="<?cs 
    60           var:item.browser_href ?>"><?cs var:item.name ?></a><?cs 
    61        else ?> 
    62         <span class="dir" title="Access Denied" href=""><?cs 
    63           var:item.name ?></span><?cs 
    64        /if ?><?cs 
    65       else ?><?cs 
    66        if:item.permission != '' ?>     
    67         <a class="file" title="View File" href="<?cs 
    68           var:item.browser_href ?>"><?cs var:item.name ?></a><?cs 
    69        else ?> 
    70         <span class="file" title="Access Denied" href=""><?cs 
    71           var:item.name ?></span><?cs 
    72        /if ?><?cs 
    73       /if ?> 
    74      </td> 
    75      <td class="rev"><?cs if:item.permission != '' ?><a title="View Revision Log" href="<?cs 
    76        var:item.log_href ?>"><?cs var:item.created_rev ?></a><?cs else ?><?cs var:item.created_rev ?><?cs /if ?></td> 
    77      <td class="age"><span title="<?cs var:item.date ?>"><?cs 
    78        var:item.age ?></span></td> 
    79      <td class="change"> 
    80       <span class="author"><?cs var:item.author ?>:</span> 
    81       <span class="change"><?cs var:item.change ?></span> 
    82      </td> 
    83     </tr> 
    84    <?cs /each ?> 
    85   </tbody> 
    86  </table> 
     85    <td class="message"><?cs var:file.message ?></td> 
     86   </tr><?cs /if ?><?cs 
     87   if:len(browser.props) ?><tr> 
     88    <td colspan="2"><ul class="props"><?cs 
     89     each:prop = browser.props ?> 
     90      <li>Property <strong><?cs var:name(prop) ?></strong> set to <em><code><?cs 
     91      var:prop ?></code></em></li><?cs 
     92     /each ?> 
     93    </ul></td><?cs 
     94   /if ?></tr> 
     95  </table><?cs 
     96 /if ?><?cs 
     97  
     98 if:!browser.is_dir ?> 
     99  <div id="preview"><?cs 
     100   if:file.preview ?><?cs 
     101    var:file.preview ?><?cs 
     102   elif:file.max_file_size_reached ?> 
     103    <strong>HTML preview not available</strong>, since the file size exceeds 
     104    <?cs var:file.max_file_size ?> bytes. Try <a href="<?cs 
     105    var:file.raw_href ?>">downloading</a> the file instead.<?cs 
     106   else ?><strong>HTML preview not available</strong>. To view, <a href="<?cs 
     107    var:file.raw_href ?>">download</a> the file.<?cs 
     108   /if ?> 
     109  </div><?cs 
     110 /if ?> 
    87111 
    88112 <div id="help"> 
  • trac/vendor/current/templates/changeset.cs

    r2581 r3034  
    1 <?cs set:html.stylesheet = 'css/changeset.css' ?> 
    21<?cs include "header.cs"?> 
    32<?cs include "macros.cs"?> 
    43 
    54<div id="ctxtnav" class="nav"> 
    6  <h2>Changeset Navigation</h2> 
    7  <ul><?cs 
    8   if:len(links.prev) ?> 
    9    <li class="first<?cs if:!len(links.next) ?> last<?cs /if ?>"> 
    10     <a class="prev" href="<?cs var:links.prev.0.href ?>" title="<?cs 
    11       var:links.prev.0.title ?>">Previous Changeset</a> 
    12    </li><?cs 
    13   /if ?><?cs 
    14   if:len(links.next) ?> 
    15    <li class="<?cs if:len(links.prev) ?>first <?cs /if ?>last"> 
    16     <a class="next" href="<?cs var:links.next.0.href ?>" title="<?cs 
    17       var:links.next.0.title ?>">Next Changeset</a> 
    18    </li><?cs 
    19   /if ?> 
    20  </ul> 
     5 <h2>Changeset Navigation</h2><?cs 
     6 with:links = chrome.links ?> 
     7  <ul><?cs 
     8   if:len(links.prev) ?> 
     9    <li class="first<?cs if:!len(links.next) ?> last<?cs /if ?>"> 
     10     &larr; <a class="prev" href="<?cs var:links.prev.0.href ?>" title="<?cs 
     11       var:links.prev.0.title ?>">Previous Changeset</a> 
     12    </li><?cs 
     13   /if ?><?cs 
     14   if:len(links.next) ?> 
     15    <li class="<?cs if:len(links.prev) ?>first <?cs /if ?>last"> 
     16     <a class="next" href="<?cs var:links.next.0.href ?>" title="<?cs 
     17       var:links.next.0.title ?>">Next Changeset</a> &rarr; 
     18    </li><?cs 
     19   /if ?> 
     20  </ul><?cs 
     21 /with ?> 
    2122</div> 
    2223 
     
    2425<h1>Changeset <?cs var:changeset.revision ?></h1> 
    2526 
    26 <?cs if:len(changeset.diff.files) ?><form method="post" id="prefs" action=""> 
     27<?cs each:change = changeset.changes ?><?cs 
     28 if:len(change.diff) ?><?cs 
     29  set:has_diffs = 1 ?><?cs 
     30 /if ?><?cs 
     31/each ?><?cs if:has_diffs || diff.options.ignoreblanklines  
     32  || diff.options.ignorecase || diff.options.ignorewhitespace ?> 
     33<form method="post" id="prefs" action=""> 
    2734 <div> 
    2835  <label for="style">View differences</label> 
     
    3744  <div class="field"> 
    3845   Show <input type="text" name="contextlines" id="contextlines" size="2" 
    39      maxlength="2" value="<?cs var:diff.options.contextlines ?>" /> 
     46     maxlength="3" value="<?cs var:diff.options.contextlines ?>" /> 
    4047   <label for="contextlines">lines around each change</label> 
    4148  </div> 
     
    6471</form><?cs /if ?> 
    6572 
     73<?cs def:node_change(item,cl,kind) ?><?cs  
     74  set:ndiffs = len(item.diff) ?><?cs 
     75  set:nprops = len(item.props) ?> 
     76  <div class="<?cs var:cl ?>"></div><?cs  
     77  if:cl == "rem" ?> 
     78   <a title="Show what was removed (rev. <?cs var:item.rev.old ?>)" href="<?cs 
     79     var:item.browser_href.old ?>"><?cs var:item.path.old ?></a><?cs 
     80  else ?> 
     81   <a title="Show entry in browser" href="<?cs 
     82     var:item.browser_href.new ?>"><?cs var:item.path.new ?></a><?cs 
     83  /if ?> 
     84  <span class="comment">(<?cs var:kind ?>)</span><?cs 
     85  if:item.path.old && item.change == 'copy' || item.change == 'move' ?> 
     86   <small><em>(<?cs var:kind ?> from <a href="<?cs 
     87    var:item.browser_href.old ?>" title="Show original file (rev. <?cs 
     88    var:item.rev.old ?>)"><?cs var:item.path.old ?></a>)</em></small><?cs 
     89  /if ?><?cs 
     90  if:$ndiffs + $nprops > #0 ?> 
     91    (<a href="#file<?cs var:name(item) ?>" title="Show differences"><?cs 
     92      if:$ndiffs > #0 ?><?cs var:ndiffs ?>&nbsp;diff<?cs if:$ndiffs > #1 ?>s<?cs /if ?><?cs  
     93      /if ?><?cs 
     94      if:$ndiffs && $nprops ?>, <?cs /if ?><?cs  
     95      if:$nprops > #0 ?><?cs var:nprops ?>&nbsp;prop<?cs if:$nprops > #1 ?>s<?cs /if ?><?cs 
     96      /if ?></a>)<?cs 
     97  elif:cl == "mod" ?> 
     98    (<a href="<?cs var:item.browser_href.old ?>" 
     99        title="Show previous version in browser">previous</a>)<?cs 
     100  /if ?> 
     101<?cs /def ?> 
     102 
    66103<dl id="overview"> 
    67104 <dt class="time">Timestamp:</dt> 
     
    70107 <dd class="author"><?cs var:changeset.author ?></dd> 
    71108 <dt class="message">Message:</dt> 
    72  <dd class="message" id="searchable"><?cs var:changeset.message ?></dd> 
     109 <dd class="message" id="searchable"><?cs 
     110  alt:changeset.message ?>&nbsp;<?cs /alt ?></dd> 
    73111 <dt class="files">Files:</dt> 
    74  <dd class="files"><?cs set:anchor_idx = #0 ?> 
     112 <dd class="files"> 
    75113  <ul><?cs each:item = changeset.changes ?> 
    76    <li> 
    77     <?cs if:item.change == "A" ?> 
    78      <div class="add"></div> 
    79      <a href="<?cs var:item.browser_href ?>" title="Show file in browser"><?cs 
    80        var:item.name ?></a> <span class="comment">(added)</span> 
    81     <?cs elif:item.change == "M" ?> 
    82      <div class="mod"></div> 
    83      <a href="<?cs var:item.browser_href ?>" title="Show file in browser"><?cs 
    84        var:item.name ?></a> <span class="comment">(modified)</span><?cs 
    85      if:len(changeset.diff.files[anchor_idx].changes) ?> 
    86       (<a href="#file<?cs var:anchor_idx ?>" title="Show differences">diff</a>)<?cs 
    87      /if ?><?cs set:anchor_idx = anchor_idx + #1 ?> 
    88     <?cs elif:item.change == "D" ?> 
    89      <div class="rem"></div> 
    90      <?cs var:item.name ?> <span class="comment">(deleted)</span> 
    91     <?cs /if ?> 
     114   <li><?cs 
     115    if:item.change == 'add' ?><?cs 
     116     call:node_change(item, 'add', 'added') ?><?cs 
     117    elif:item.change == 'delete' ?><?cs 
     118     call:node_change(item, 'rem', 'deleted') ?><?cs 
     119    elif:item.change == 'copy' ?><?cs 
     120     call:node_change(item, 'cp', 'copied') ?><?cs 
     121    elif:item.change == 'move' ?><?cs 
     122     call:node_change(item, 'mv', 'moved') ?><?cs 
     123    elif:item.change == 'edit' ?><?cs 
     124     call:node_change(item, 'mod', 'modified') ?><?cs 
     125    /if ?> 
    92126   </li> 
    93127  <?cs /each ?></ul> 
     
    103137   <dt class="rem"></dt><dd>Removed</dd> 
    104138   <dt class="mod"></dt><dd>Modified</dd> 
     139   <dt class="cp"></dt><dd>Copied</dd> 
     140   <dt class="mv"></dt><dd>Moved</dd> 
    105141  </dl> 
    106142 </div> 
    107  <ul> 
    108   <?cs each:file = changeset.diff.files ?> 
    109    <?cs if:len(file.changes) ?> 
    110     <li id="file<?cs var:name(file) ?>"> 
    111      <h2><a href="<?cs 
    112        var:file.browser_href.new ?>" title="Show version <?cs 
    113        var:file.rev.new ?> of this file in browser"><?cs 
    114        var:file.name.new ?></a></h2> 
    115      <?cs if:diff.style == 'sidebyside' ?> 
    116       <table class="sidebyside" summary="Differences" cellspacing="0"> 
    117        <colgroup class="base"> 
    118         <col class="lineno" /><col class="content" /> 
    119        <colgroup class="chg"> 
    120         <col class="lineno" /><col class="content" /> 
    121        </colgroup> 
    122        <thead><tr> 
    123         <th colspan="2"><a href="<?cs var:file.browser_href.old ?>">Revision <?cs 
    124           var:file.rev.old ?></a></th> 
    125         <th colspan="2"><a href="<?cs var:file.browser_href.new ?>">Revision <?cs 
    126           var:file.rev.new ?></a></th> 
    127        </tr></thead> 
    128        <?cs each:change = file.changes ?> 
    129         <tbody> 
    130          <?cs call:diff_display(change, diff.style) ?> 
    131         </tbody> 
    132         <?cs if:name(change) < len(file.changes) - 1 ?> 
    133          <tbody class="skippedlines"> 
    134           <tr><th>&hellip;</th><td>&nbsp;</td> 
    135           <th>&hellip;</th><td>&nbsp;</td></tr> 
    136          </tbody> 
    137         <?cs /if ?> 
    138        <?cs /each ?> 
    139       </table> 
    140      <?cs else ?> 
    141       <table class="inline" summary="Differences" cellspacing="0"> 
    142        <colgroup> 
    143         <col class="lineno" /> 
    144         <col class="lineno" /> 
    145         <col class="content" /> 
    146        </colgroup> 
    147        <thead><tr> 
    148         <th title="Revision <?cs var:file.rev.old ?>"><a href="<?cs 
    149           var:file.browser_href.old ?>" title="Show revision <?cs 
    150           var:file.rev.old ?> of this file in browser">r<?cs 
    151           var:file.rev.old ?></a></th> 
    152         <th title="Revision <?cs var:file.rev.new ?>"><a href="<?cs 
    153           var:file.browser_href.new ?>" title="Show revision <?cs 
    154           var:file.rev.new ?> of this file in browser">r<?cs 
    155           var:file.rev.new ?></a></th> 
    156         <th>&nbsp;</th> 
    157        </tr></thead> 
    158        <?cs each:change = file.changes ?> 
    159         <?cs call:diff_display(change, diff.style) ?> 
    160         <?cs if:name(change) < len(file.changes) - 1 ?> 
    161          <tbody class="skippedlines"> 
    162           <tr><th>&hellip;</th><th>&hellip;</th><td>&nbsp;</td></tr> 
    163          </tbody> 
    164         <?cs /if ?> 
    165        <?cs /each ?> 
    166       </table> 
    167      <?cs /if ?> 
    168     </li> 
    169    <?cs /if ?> 
    170   <?cs /each ?> 
    171  </ul> 
     143 <ul class="entries"><?cs 
     144 each:item = changeset.changes ?><?cs 
     145  if:len(item.diff) || len(item.props) ?><li class="entry" id="file<?cs 
     146   var:name(item) ?>"><h2><a href="<?cs 
     147   var:item.browser_href.new ?>" title="Show new revision <?cs 
     148   var:item.rev.new ?> of this file in browser"><?cs 
     149   var:item.path.new ?></a></h2><?cs 
     150   if:len(item.props) ?><ul class="props"><?cs 
     151    each:prop = item.props ?><li>Property <strong><?cs 
     152     var:name(prop) ?></strong> <?cs 
     153     if:prop.old && prop.new ?>changed from <?cs 
     154     elif:!prop.old ?>set<?cs 
     155     else ?>deleted<?cs 
     156     /if ?><?cs 
     157     if:prop.old && prop.new ?><em><tt><?cs var:prop.old ?></tt></em><?cs /if ?><?cs 
     158     if:prop.new ?> to <em><tt><?cs var:prop.new ?></tt></em><?cs /if ?></li><?cs 
     159    /each ?></ul><?cs 
     160   /if ?><?cs 
     161   if:len(item.diff) ?><table class="<?cs 
     162    var:diff.style ?>" summary="Differences" cellspacing="0"><?cs 
     163    if:diff.style == 'sidebyside' ?> 
     164     <colgroup class="l"><col class="lineno" /><col class="content" /></colgroup> 
     165     <colgroup class="r"><col class="lineno" /><col class="content" /></colgroup> 
     166     <thead><tr> 
     167      <th colspan="2"><a href="<?cs 
     168       var:item.browser_href.old ?>" title="Show old rev. <?cs 
     169       var:item.rev.old ?> of <?cs var:item.path.old ?>">Revision <?cs 
     170       var:item.rev.old ?></a></th> 
     171      <th colspan="2"><a href="<?cs 
     172       var:item.browser_href.new ?>" title="Show new rev. <?cs 
     173       var:item.rev.new ?> of <?cs var:item.path.new ?>">Revision <?cs 
     174       var:item.rev.new ?></a></th> 
     175      </tr> 
     176     </thead><?cs 
     177     each:change = item.diff ?><tbody><?cs 
     178      call:diff_display(change, diff.style) ?></tbody><?cs 
     179      if:name(change) < len(item.diff) - 1 ?><tbody class="skipped"><tr> 
     180       <th>&hellip;</th><td>&nbsp;</td><th>&hellip;</th><td>&nbsp;</td> 
     181      </tr></tbody><?cs /if ?><?cs 
     182     /each ?><?cs 
     183    else ?> 
     184     <colgroup><col class="lineno" /><col class="lineno" /><col class="content" /></colgroup> 
     185     <thead><tr> 
     186      <th title="Revision <?cs var:item.rev.old ?>"><a href="<?cs 
     187       var:item.browser_href.old ?>" title="Show old version of <?cs 
     188       var:item.path.old ?>">r<?cs var:item.rev.old ?></a></th> 
     189      <th title="Revision <?cs var:item.rev.new ?>"><a href="<?cs 
     190       var:item.browser_href.new ?>" title="Show new version of <?cs 
     191       var:item.path.new ?>">r<?cs var:item.rev.new ?></a></th> 
     192      <th>&nbsp;</th></tr> 
     193     </thead><?cs 
     194     each:change = item.diff ?><?cs 
     195      call:diff_display(change, diff.style) ?><?cs 
     196      if:name(change) < len(item.diff) - 1 ?><tbody class="skipped"><tr> 
     197       <th>&hellip;</th><th>&hellip;</th><td>&nbsp;</td> 
     198      </tr></tbody><?cs /if ?><?cs 
     199     /each ?><?cs 
     200    /if ?></table><?cs 
     201   /if ?></li><?cs 
     202  /if ?><?cs 
     203 /each ?></ul> 
    172204</div> 
    173205 
  • trac/vendor/current/templates/error.cs

    r2581 r3034  
    3131  <h3>Permission Denied</h3> 
    3232  <p class="message"> 
    33   This action requires <tt><?cs var:error.action ?></tt> permission. 
     33  <?cs var:error.message ?> 
    3434  </p> 
    3535  <div id="help"> 
  • trac/vendor/current/templates/footer.cs

    r2581 r3034  
    1 <script type="text/javascript">searchHighlight()</script> 
    2  
    3 <?cs if:len(links.alternate) ?> 
    4 <div id="altlinks"> 
    5  <h3>Download in other formats:</h3> 
    6  <ul><?cs each:link = links.alternate ?><?cs 
     1<script type="text/javascript">searchHighlight()</script><?cs 
     2if:len(chrome.links.alternate) ?> 
     3<div id="altlinks"><h3>Download in other formats:</h3><ul><?cs 
     4 each:link = chrome.links.alternate ?><?cs 
    75  set:isfirst = name(link) == 0 ?><?cs 
    8   set:islast = name(link) == len(links.alternate) - 1?> 
    9   <li<?cs 
     6  set:islast = name(link) == len(chrome.links.alternate) - 1?><li<?cs 
    107    if:isfirst || islast ?> class="<?cs 
    118     if:isfirst ?>first<?cs /if ?><?cs 
    129     if:isfirst && islast ?> <?cs /if ?><?cs 
    1310     if:islast ?>last<?cs /if ?>"<?cs 
    14     /if ?>> 
    15    <a href="<?cs var:link.href ?>"<?cs if:link.class ?> class="<?cs 
    16     var:link.class ?>"<?cs /if ?>><?cs var:link.title ?></a> 
    17   </li><?cs /each ?> 
    18  </ul> 
    19 </div> 
    20 <?cs /if ?> 
     11    /if ?>><a href="<?cs var:link.href ?>"<?cs if:link.class ?> class="<?cs 
     12    var:link.class ?>"<?cs /if ?>><?cs var:link.title ?></a></li><?cs 
     13 /each ?></ul></div><?cs 
     14/if ?> 
    2115 
    2216</div> 
     
    2519 <hr /> 
    2620 <a id="tracpowered" href="http://trac.edgewall.com/"><img src="<?cs 
    27      var:$htdocs_location ?>trac_logo_mini.png" height="30" width="107" 
    28      alt="Trac Powered"/></a> 
     21   var:htdocs_location ?>trac_logo_mini.png" height="30" width="107" 
     22   alt="Trac Powered"/></a> 
    2923 <p class="left"> 
    3024  Powered by <a href="<?cs var:trac.href.about ?>"><strong>Trac <?cs 
    31 var:trac.version ?></strong></a><br /> 
     25  var:trac.version ?></strong></a><br /> 
    3226  By <a href="http://www.edgewall.com/">Edgewall Software</a>. 
    3327 </p> 
    3428 <p class="right"> 
    35   <?cs var $project.footer ?> 
     29  <?cs var:project.footer ?> 
    3630 </p> 
    3731</div> 
  • trac/vendor/current/templates/header.cs

    r2588 r3034  
    33    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
    44<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> 
    5  <head><?cs 
    6   if:project.name ?> 
    7   <title><?cs if:title ?><?cs var:title ?> - <?cs /if ?><?cs 
    8     var:project.name?> - Trac</title><?cs 
    9   else ?> 
    10   <title>Trac: <?cs var:title ?></title><?cs 
    11   /if ?><?cs 
    12   if:html.norobots ?> 
    13   <meta name="ROBOTS" content="NOINDEX, NOFOLLOW" /><?cs 
    14   /if ?><?cs 
    15   each:rel = links ?><?cs each:link = rel ?> 
    16   <link rel="<?cs var:name(rel) ?>" href="<?cs var:link.href ?>"<?cs 
     5<head><?cs 
     6 if:project.name_encoded ?> 
     7 <title><?cs if:title ?><?cs var:title ?> - <?cs /if ?><?cs 
     8   var:project.name_encoded ?> - Trac</title><?cs 
     9 else ?> 
     10 <title>Trac: <?cs var:title ?></title><?cs 
     11 /if ?><?cs 
     12 if:html.norobots ?> 
     13 <meta name="ROBOTS" content="NOINDEX, NOFOLLOW" /><?cs 
     14 /if ?><?cs 
     15 each:rel = chrome.links ?><?cs 
     16  each:link = rel ?><link rel="<?cs 
     17   var:name(rel) ?>" href="<?cs var:link.href ?>"<?cs 
    1718   if:link.title ?> title="<?cs var:link.title ?>"<?cs /if ?><?cs 
    1819   if:link.type ?> type="<?cs var:link.type ?>"<?cs /if ?> /><?cs 
    19   /each ?><?cs /each ?> 
    20   <style type="text/css"> 
    21    @import url(<?cs var:htdocs_location ?>css/trac.css); 
    22    <?cs if:html.stylesheet ?>@import url(<?cs var:htdocs_location ?><?cs 
    23      var:html.stylesheet ?>);<?cs /if ?> 
    24    <?cs include "site_css.cs" ?> 
    25   </style> 
    26   <script src="<?cs var:htdocs_location ?>trac.js" type="text/javascript"></script> 
    27  </head> 
     20  /each ?><?cs 
     21 /each ?><style type="text/css"><?cs include:"site_css.cs" ?></style> 
     22 <script type="text/javascript" src="<?cs 
     23   var:htdocs_location ?>js/trac.js"></script> 
     24</head> 
    2825<body> 
    2926<?cs include "site_header.cs" ?> 
    3027<div id="banner"> 
    3128 
    32 <div id="header"> 
    33   <a id="logo" href="<?cs var:header_logo.link ?>"><img src="<?cs var:header_logo.src ?>" 
    34       width="<?cs var:header_logo.width ?>" height="<?cs var:header_logo.height ?>" 
    35       alt="<?cs var:header_logo.alt ?>" /></a> 
    36   <hr /> 
    37 </div> 
     29<div id="header"><?cs 
     30 if:chrome.logo.src ?><a id="logo" href="<?cs 
     31  var:chrome.logo.link ?>"><img src="<?cs var:chrome.logo.src ?>"<?cs 
     32  if:chrome.logo.width ?> width="<?cs var:chrome.logo.width ?>"<?cs /if ?><?cs 
     33  if:chrome.logo.height ?> height="<?cs var:chrome.logo.height ?>"<?cs 
     34  /if ?> alt="<?cs var:chrome.logo.alt ?>" /></a><hr /><?cs 
     35 elif:project.name_encoded ?><h1><a href="<?cs var:chrome.logo.link ?>"><?cs 
     36  var:project.name_encoded ?></a></h1><?cs 
     37 /if ?></div> 
    3838 
    3939<form id="search" action="<?cs var:trac.href.search ?>" method="get"> 
    4040 <?cs if:trac.acl.SEARCH_VIEW ?><div> 
    4141  <label for="proj-search">Search:</label> 
    42   <input type="text" id="proj-search" name="q" size="10" value="" /> 
     42  <input type="text" id="proj-search" name="q" size="10" accesskey="f" value="" /> 
    4343  <input type="submit" value="Search" /> 
    4444  <input type="hidden" name="wiki" value="on" /> 
     
    4848</form> 
    4949 
    50 <div id="metanav" class="nav"> 
    51  <h2>Navigation</h2> 
    52  <ul> 
    53   <li class="first"><?cs if:trac.authname == "anonymous" || !trac.authname ?> 
    54     <a href="<?cs var:trac.href.login ?>">Login</a> 
    55   <?cs else ?> 
    56     logged in as <?cs var:trac.authname ?> </li> 
    57     <li><a href="<?cs var:trac.href.logout ?>">Logout</a> 
    58   <?cs /if ?></li> 
    59   <li><a href="<?cs var:trac.href.settings ?>">Settings</a></li> 
    60   <li><a accesskey="6" href="<?cs var:trac.href.wiki ?>/TracGuide">Help/Guide</a></li> 
    61   <li style="display: none"><a accesskey="5" href="http://projects.edgewall.com/trac/wiki/TracFaq">FAQ</a></li> 
    62   <li style="display: none"><a accesskey="0" href="<?cs var:trac.href.wiki ?>/TracAccessibility">Accessibility</a></li> 
    63   <li class="last"><a accesskey="9" href="<?cs var:trac.href.about ?>">About Trac</a></li> 
    64  </ul> 
    65 </div> 
    66  
    67 </div> 
    68  
    69 <?cs def:navlink(text, href, id, aclname, accesskey) ?><?cs 
    70  if $aclname ?><li><a href="<?cs var:href ?>"<?cs  
    71   if $id == $trac.active_module ?> class="active"<?cs 
    72   /if ?><?cs 
    73   if:$accesskey!="" ?> accesskey="<?cs var:$accesskey ?>"<?cs  
    74   /if ?>><?cs var:text ?></a></li><?cs  
     50<?cs def:nav(items) ?><?cs 
     51 if:len(items) ?><ul><?cs 
     52  set:idx = 0 ?><?cs 
     53  set:max = len(items) - 1 ?><?cs 
     54  each:item = items ?><?cs 
     55   set:first = idx == 0 ?><?cs 
     56   set:last = idx == max ?><li<?cs 
     57   if:first || last || item.active ?> class="<?cs 
     58    if:item.active ?>active<?cs /if ?><?cs 
     59    if:item.active && (first || last) ?> <?cs /if ?><?cs 
     60    if:first ?>first<?cs /if ?><?cs 
     61    if:(item.active || first) && last ?> <?cs /if ?><?cs 
     62    if:last ?>last<?cs /if ?>"<?cs 
     63   /if ?>><?cs var:item ?></li><?cs 
     64   set:idx = idx + 1 ?><?cs 
     65  /each ?></ul><?cs 
    7566 /if ?><?cs 
    7667/def ?> 
    7768 
    78 <?cs if $trac.active_module == "wiki" ?><?cs 
    79   set:$wiki_view="wiki" ?><?cs 
    80  else  ?><?cs 
    81   set:$wiki_view="attachment" ?><?cs 
    82  /if  ?><?cs 
    83  if $trac.active_module == "ticket" ?><?cs 
    84   set:$ticket_view="ticket" ?><?cs 
    85  elif $trac.active_module == "query" ?><?cs 
    86   set:$ticket_view="query" ?><?cs 
    87  else ?><?cs 
    88   set:$ticket_view="report" ?><?cs 
    89  /if  ?><?cs 
    90  if $trac.active_module == "log" ?><?cs 
    91   set:$browser_view="log" ?><?cs 
    92  elif $trac.active_module == "file" ?><?cs 
    93   set:$browser_view="file" ?><?cs 
    94  else  ?><?cs 
    95   set:$browser_view="browser" ?><?cs 
    96  /if  ?><?cs 
    97  if $trac.active_module == "milestone" ?><?cs 
    98   set:$roadmap_view="milestone" ?><?cs 
    99  else ?><?cs 
    100   set:$roadmap_view="roadmap" ?><?cs  
    101  /if ?> 
    102  
    103 <div id="mainnav" class="nav"> 
    104  <ul><?cs 
    105   call:navlink("Wiki", trac.href.wiki, wiki_view, 
    106                trac.acl.WIKI_VIEW, "1") ?><?cs 
    107   call:navlink("Timeline", trac.href.timeline, "timeline", 
    108                trac.acl.TIMELINE_VIEW, "2") ?><?cs 
    109   call:navlink("Roadmap", trac.href.roadmap, roadmap_view, 
    110                trac.acl.ROADMAP_VIEW, "3") ?><?cs 
    111   call:navlink("Browse Source", trac.href.browser, browser_view, 
    112                trac.acl.BROWSER_VIEW, "") ?><?cs 
    113   call:navlink("View Tickets", trac.href.report, ticket_view, 
    114                trac.acl.REPORT_VIEW, "") ?><?cs 
    115   call:navlink("New Ticket", trac.href.newticket, "newticket", 
    116                trac.acl.TICKET_CREATE, "7") ?><?cs 
    117   call:navlink("Search", trac.href.search, "search", 
    118                trac.acl.SEARCH_VIEW, "4") ?></ul> 
     69<div id="metanav" class="nav"><?cs call:nav(chrome.nav.metanav) ?></div> 
    11970</div> 
    12071 
     72<div id="mainnav" class="nav"><?cs call:nav(chrome.nav.mainnav) ?></div> 
    12173<div id="main"> 
  • trac/vendor/current/templates/log.cs

    r2581 r3034  
    1 <?cs set:html.stylesheet = 'css/browser.css' ?> 
    21<?cs include "header.cs"?> 
    32<?cs include "macros.cs"?> 
     
    65 <ul> 
    76  <li class="last"><a href="<?cs 
    8     var:log.items.0.file_href ?>">View Latest Revision</a></li> 
     7    var:log.browser_href ?>">View Latest Revision</a></li><?cs 
     8  if:len(chrome.links.prev) ?> 
     9   <li class="first<?cs if:!len(chrome.links.next) ?> last<?cs /if ?>"> 
     10    &larr; <a href="<?cs var:chrome.links.prev.0.href ?>" title="<?cs 
     11      var:chrome.links.prev.0.title ?>">Newer Revisions</a> 
     12   </li><?cs 
     13  /if ?><?cs 
     14  if:len(chrome.links.next) ?> 
     15   <li class="<?cs if:!len(chrome.links.prev) ?>first <?cs /if ?>last"> 
     16    <a href="<?cs var:chrome.links.next.0.href ?>" title="<?cs 
     17      var:chrome.links.next.0.title ?>">Older Revisions</a> &rarr; 
     18   </li><?cs 
     19  /if ?> 
    920 </ul> 
    1021</div> 
    1122 
     23 
    1224<div id="content" class="log"> 
    13  <?cs call:browser_path_links(log.path, log) ?> 
    14  
    15  <div id="jumprev"> 
    16   <form action="<?cs var:browser_current_href ?>" method="get"> 
    17    <div> 
    18     <label for="rev">View revision:</label> 
    19     <input type="text" id="rev" name="rev" value="<?cs 
    20       var:log.items.0.rev ?>" size="4" /> 
     25 <h1><?cs call:browser_path_links(log.path, log) ?></h1> 
     26 <form id="prefs" action="<?cs var:browser_current_href ?>" method="get"> 
     27  <div> 
     28   <input type="hidden" name="action" value="<?cs var:log.mode ?>" /> 
     29   <label>View log starting at <input type="text" id="rev" name="rev" value="<?cs 
     30    var:log.items.0.rev ?>" size="5" /></label> 
     31   <label>and back to <input type="text" id="stop_rev" name="stop_rev" value="<?cs 
     32    var:log.stop_rev ?>" size="5" /></label> 
     33   <br /> 
     34   <div class="choice"> 
     35    <fieldset> 
     36     <legend>Mode:</legend> 
     37     <label for="stop_on_copy"> 
     38      <input type="radio" id="stop_on_copy" name="mode" value="stop_on_copy" <?cs 
     39       if:log.mode != "follow_copy" || log.mode != "path_history" ?> checked="checked" <?cs 
     40       /if ?> /> 
     41      Stop on copy  
     42     </label> 
     43     <label for="follow_copy"> 
     44      <input type="radio" id="follow_copy" name="mode" value="follow_copy" <?cs 
     45       if:log.mode == "follow_copy" ?> checked="checked" <?cs /if ?> /> 
     46      Follow copies 
     47     </label> 
     48     <label for="path_history"> 
     49      <input type="radio" id="path_history" name="mode" value="path_history" <?cs 
     50       if:log.mode == "path_history" ?> checked="checked" <?cs /if ?> /> 
     51      Show only adds, moves and deletes 
     52     </label> 
     53    </fieldset> 
    2154   </div> 
    22   </form> 
     55   <label><input type="checkbox" name="verbose" <?cs 
     56    if:log.verbose ?> checked="checked" <?cs 
     57    /if ?> /> Show full log messages</label> 
     58  </div> 
     59  <div class="buttons"> 
     60   <input type="submit" value="Update"  
     61          title="Warning: by updating, you will clear the page history" /> 
     62  </div> 
     63 </form> 
     64 <div class="diff"> 
     65  <div id="legend"> 
     66   <h3>Legend:</h3> 
     67   <dl> 
     68    <dt class="add"></dt><dd>Added</dd><?cs 
     69    if:log.mode == "path_history" ?> 
     70     <dt class="rem"></dt><dd>Removed</dd><?cs 
     71    /if ?> 
     72    <dt class="mod"></dt><dd>Modified</dd> 
     73    <dt class="cp"></dt><dd>Copied or renamed</dd> 
     74   </dl> 
     75  </div> 
    2376 </div> 
    24  
    2577 <table id="chglist" class="listing"> 
    2678  <thead> 
    2779   <tr> 
     80    <th class="change"></th> 
    2881    <th class="data">Date</th> 
    2982    <th class="rev">Rev</th> 
     
    3386   </tr> 
    3487  </thead> 
    35   <tbody> 
    36    <?cs each:item = log.items ?> 
     88  <tbody><?cs 
     89   set:indent = #1 ?><?cs 
     90   each:item = log.items ?><?cs 
     91    if:item.copyfrom_path ?> 
     92     <tr class="<?cs if:name(item) % #2 ?>even<?cs else ?>odd<?cs /if ?>"> 
     93      <td class="copyfrom_path" colspan="6" style="padding-left: <?cs var:indent ?>em"> 
     94       copied from <a href="<?cs var:item.browser_href ?>"?><?cs var:item.copyfrom_path ?></a>: 
     95      </td> 
     96     </tr><?cs 
     97     set:indent = indent + #1 ?><?cs 
     98    elif:log.mode == "path_history" ?><?cs 
     99      set:indent = #1 ?><?cs 
     100    /if ?> 
    37101    <tr class="<?cs if:name(item) % #2 ?>even<?cs else ?>odd<?cs /if ?>"> 
    38      <td class="date"><?cs var:item.date ?></td> 
     102     <td class="change" style="padding-left:<?cs var:indent ?>em"> 
     103      <a title="View log starting at this revision" href="<?cs var:item.log_href ?>"> 
     104       <span class="<?cs var:item.change ?>"></span> 
     105       <span class="comment">(<?cs var:item.change ?>)</span> 
     106      </a> 
     107     </td> 
     108     <td class="date"><?cs var:log.changes[item.rev].date ?></td> 
    39109     <td class="rev"> 
    40       <a href="<?cs var:item.file_href ?>"><?cs var:item.rev ?></a> 
     110      <a href="<?cs var:item.browser_href ?>"  
     111         title="Browse at revision <?cs var:item.rev ?>">@<?cs var:item.rev ?></a> 
    41112     </td> 
    42113     <td class="chgset"> 
    43       <a class="block-link" href="<?cs var:item.changeset_href ?>"><?cs var:item.rev ?></a> 
     114      <a href="<?cs var:item.changeset_href ?>" 
     115         title="View changeset [<?cs var:item.rev ?>]">[<?cs var:item.rev ?>]</a> 
    44116     </td> 
    45      <td class="author"><?cs var:item.author ?></td> 
    46      <td class="summary"><?cs var:item.log ?></td> 
    47     </tr> 
    48    <?cs /each ?> 
     117     <td class="author"><?cs var:log.changes[item.rev].author ?></td> 
     118     <td class="summary"><?cs var:log.changes[item.rev].message ?></td> 
     119    </tr><?cs 
     120   /each ?> 
    49121  </tbody> 
    50  </table> 
     122 </table><?cs 
     123 if:len(links.prev) || len(links.next) ?><div id="paging" class="nav"><ul><?cs 
     124  if:len(links.prev) ?><li class="first<?cs 
     125   if:!len(links.next) ?> last<?cs /if ?>">&larr; <a href="<?cs 
     126   var:links.prev.0.href ?>" title="<?cs 
     127   var:links.prev.0.title ?>">Younger Revisions</a></li><?cs 
     128  /if ?><?cs 
     129  if:len(links.next) ?><li class="<?cs 
     130   if:len(links.prev) ?>first <?cs /if ?>last"><a href="<?cs 
     131   var:links.next.0.href ?>" title="<?cs 
     132   var:links.next.0.title ?>">Older Revisions</a> &rarr;</li><?cs 
     133  /if ?></ul></div><?cs 
     134 /if ?> 
    51135 
    52136</div> 
  • trac/vendor/current/templates/log_rss.cs

    r2581 r3034  
    11<?xml version="1.0"?> 
    2 <!-- RSS generated by Trac v<?cs var:$trac.version ?> on <?cs var:$trac.time ?> --> 
     2<!-- RSS generated by Trac v<?cs var:trac.version ?> on <?cs var:trac.time ?> --> 
    33<rss version="2.0"> 
    4    <?cs set base_url = $HTTP.Protocol+'://'+$HTTP.Host ?> 
    5    <?cs if $HTTP.Port ?> 
    6      <?cs set base_url = $base_url + ':' + $HTTP.Port ?> 
    7    <?cs /if ?> 
    8     <channel> 
    9       <?cs if $project.name.encoded ?> 
    10         <title><?cs var:$project.name.encoded ?>: Revisions of <?cs var:$log.path ?></title> 
    11       <?cs else ?> 
    12         <title>Revisions of <?cs var:$log.filename ?></title> 
    13       <?cs /if ?> 
    14       <link><?cs var:$base_url ?><?cs var:$log.href ?></link> 
    15       <description>Trac Log - Revisions of <?cs var:$log.path ?></description> 
    16       <language>en-us</language> 
    17       <generator>Trac v<?cs var:$trac.version ?></generator> 
    18       <?cs each:item = $log.items ?> 
    19        <item> 
    20 <!--  XXX: author element requires email address in rss 2.0. 
    21            maybe we should use the DC rdf stuff for metadata instead? 
    22        <author><?cs var:$item.author ?></author> --> 
    23          <pubDate><?cs var:$item.gmt ?></pubDate> 
    24          <title><?cs var:$item.rev+': '+$item.shortlog ?></title> 
    25          <link><?cs var:$base_url+$item.file_href ?></link> 
    26          <description><?cs var:$item.log.raw ?></description> 
    27          <category>Report</category> 
    28        </item> 
    29       <?cs /each ?> 
    30     </channel> 
     4 <channel><?cs  
     5  if:project.name_encoded ?> 
     6   <title><?cs var:project.name_encoded ?>: Revisions of <?cs var:log.path ?></title><?cs  
     7  else ?> 
     8   <title>Revisions of <?cs var:log.path ?></title><?cs  
     9  /if ?> 
     10  <link><?cs var:base_host ?><?cs var:log.log_href ?></link> 
     11  <description>Trac Log - Revisions of <?cs var:log.path ?></description> 
     12  <language>en-us</language> 
     13  <generator>Trac v<?cs var:trac.version ?></generator><?cs  
     14  each:item = log.items ?><?cs  
     15   with:change = log.changes[item.rev] ?> 
     16    <item> 
     17     <author><?cs var:change.author ?></author>  
     18     <pubDate><?cs var:change.date ?></pubDate> 
     19     <title>Revision <?cs var:item.rev ?>: <?cs var:change.shortlog ?></title> 
     20     <link><?cs var:base_host ?><?cs var:item.changeset_href ?></link> 
     21     <description><?cs var:change.message ?></description> 
     22     <category>Log</category> 
     23    </item><?cs  
     24   /with ?><?cs  
     25  /each ?> 
     26 </channel> 
    3127</rss> 
  • trac/vendor/current/templates/macros.cs

    r2588 r3034  
    1 <?cs def:hdf_select(options, name, selected) ?> 
     1<?cs def:hdf_select(options, name, selected, optional) ?> 
    22 <select size="1" id="<?cs var:name ?>" name="<?cs var:name ?>"><?cs 
    3   each:option = options ?><?cs 
    4    if option.name == $selected ?> 
    5     <option selected="selected"><?cs var:option.name ?></option><?cs 
    6    else ?> 
    7     <option><?cs var:option.name ?></option><?cs 
    8    /if ?><?cs 
     3  if:optional ?><option></option><?cs /if ?><?cs 
     4  each:option = options ?> 
     5   <option<?cs if:option == selected ?> selected="selected"<?cs /if ?>><?cs  
     6     var:option ?></option><?cs 
    97  /each ?> 
    108 </select><?cs 
    11 /def?> 
     9/def?><?cs 
    1210 
    13 <?cs def:hdf_select_multiple(options, name, size) ?> 
    14  <select size="<?cs var:size ?>" id="<?cs var:name ?>" name="<?cs 
    15    var:name ?>" multiple="multiple"><?cs 
    16   each:option = options ?> 
    17    <option<?cs if:option.selected ?> selected="selected"<?cs /if ?>><?cs 
    18     var:option.name ?></option><?cs 
    19   /each ?> 
    20  </select><?cs 
    21 /def ?> 
     11def:labelled_hdf_select(label, options, name, selected, optional) ?><?cs  
     12 if:len(options) > #0 ?> 
     13  <label for="<?cs var:name ?>"><?cs var:label ?></label><?cs 
     14   call:hdf_select(options, name, selected, optional) ?> 
     15  </label> 
     16  <br /><?cs 
     17 /if ?><?cs 
     18/def ?><?cs 
    2219 
    23 <?cs def:browser_path_links(path, file) ?><?cs 
    24  set:first = #1 ?> 
    25  <h1><?cs 
     20def:browser_path_links(path, file) ?><?cs 
     21 set:first = #1 ?><?cs 
    2622  each:part = path ?><?cs 
    2723   set:last = name(part) == len(path) - #1 ?><a<?cs  
    2824   if:first ?> class="first" title="Go to root directory"<?cs  
    2925    set:first = #0 ?><?cs  
    30    else ?> title="Go to directory"<?cs 
    31    /if ?> href="<?cs var:part.url ?>"><?cs var:part ?></a><?cs 
    32    if:file.filename || !last ?><span class="sep">/</span><?cs /if ?><?cs  
     26   else ?> title="View <?cs var:part.name ?>"<?cs 
     27   /if ?> href="<?cs var:part.href ?>"><?cs var:part.name ?></a><?cs 
     28   if:!last ?><span class="sep">/</span><?cs /if ?><?cs  
    3329 /each ?><?cs 
    34  if:file.filename ?><span class="filename"><?cs var:file.filename ?></span><?cs 
    35  /if ?></h1> 
    36 <?cs /def ?> 
     30/def ?><?cs 
    3731 
    38 <?cs def:diff_display(change, style) ?><?cs 
     32def:diff_line_class(block, line) ?><?cs 
     33 set:first = name(line) == 0 ?><?cs 
     34 set:last = name(line) + 1 == len(block.lines) ?><?cs 
     35 if:first || last ?> class="<?cs 
     36  if:first ?>first<?cs /if ?><?cs 
     37  if:first && last ?> <?cs /if ?><?cs 
     38  if:last ?>last<?cs /if ?>"<?cs 
     39 /if ?><?cs 
     40/def ?><?cs 
     41 
     42def:diff_display(diff, style) ?><?cs 
    3943 if:style == 'sidebyside' ?><?cs 
    40   each:block = change.blocks ?><?cs 
    41    if:block.type == 'unmod' ?><tbody class="unmod"><?cs 
    42     each:line = block.base.lines ?><tr> 
    43      <th class="base"><?cs var:#block.base.offset + name(line) + 1 ?></th> 
    44      <td class="base"><span><?cs var:line ?></span>&nbsp;</td> 
    45      <th class="chg"><?cs var:#block.changed.offset + name(line) + 1 ?></th> 
    46      <td class="chg"><span><?cs var:line ?></span>&nbsp;</td> 
    47     </tr><?cs /each ?> 
    48    </tbody><?cs 
     44  each:block = diff ?><?cs 
     45   if:block.type == 'unmod' ?><tbody><?cs 
     46    each:line = block.base.lines ?><tr><th><?cs 
     47     var:#block.base.offset + name(line) + 1 ?></th><td class="l"><span><?cs 
     48     var:line ?></span>&nbsp;</td><th><?cs 
     49     var:#block.changed.offset + name(line) + 1 ?></th><td class="r"><span><?cs 
     50     var:block.changed.lines[name(line)] ?></span>&nbsp;</td></tr><?cs 
     51    /each ?></tbody><?cs 
    4952   elif:block.type == 'mod' ?><tbody class="mod"><?cs 
    5053    if:len(block.base.lines) >= len(block.changed.lines) ?><?cs 
    51      each:line = block.base.lines ?><tr> 
    52       <th class="base"><?cs var:#block.base.offset + name(line) + 1 ?></th> 
    53       <td class="base"><?cs var:line ?>&nbsp;</td><?cs 
     54     each:line = block.base.lines ?><tr><th><?cs 
     55      var:#block.base.offset + name(line) + 1 ?></th><td class="l"><?cs 
     56      var:line ?>&nbsp;</td><?cs 
    5457      if:len(block.changed.lines) >= name(line) + 1 ?><?cs 
    5558       each:changedline = block.changed.lines ?><?cs 
    56         if:name(changedline) == name(line) ?> 
    57          <th class="chg"><?cs var:#block.changed.offset + name(changedline) + 1 ?></th> 
    58          <td class="chg"><?cs var:changedline ?>&nbsp;</td><?cs 
     59        if:name(changedline) == name(line) ?><th><?cs 
     60         var:#block.changed.offset + name(changedline) + 1 ?></th><td class="r"><?cs 
     61         var:changedline ?>&nbsp;</td><?cs 
    5962        /if ?><?cs 
    6063       /each ?><?cs 
    61       else ?> 
    62        <th class="chg">&nbsp;</th> 
    63        <td class="chg">&nbsp;</td><?cs 
    64       /if ?> 
    65      </tr><?cs /each ?><?cs 
     64      else ?><th>&nbsp;</th><td class="r">&nbsp;</td><?cs 
     65      /if ?></tr><?cs 
     66     /each ?><?cs 
    6667    else ?><?cs 
    6768     each:line = block.changed.lines ?><tr><?cs 
    6869      if:len(block.base.lines) >= name(line) + 1 ?><?cs 
    6970       each:baseline = block.base.lines ?><?cs 
    70         if:name(baseline) == name(line) ?> 
    71          <th class="base"><?cs var:#block.base.offset + name(baseline) + 1 ?></th> 
    72          <td class="base"><?cs var:baseline ?>&nbsp;</td><?cs 
     71        if:name(baseline) == name(line) ?><th><?cs 
     72         var:#block.base.offset + name(baseline) + 1 ?></th><td class="l"><?cs 
     73         var:baseline ?>&nbsp;</td><?cs 
    7374        /if ?><?cs 
    7475       /each ?><?cs 
    75       else ?> 
    76        <th class="base">&nbsp;</th> 
    77        <td class="base">&nbsp;</td><?cs 
     76      else ?><th>&nbsp;</th><td class="l">&nbsp;</td><?cs 
    7877      /if ?> 
    79       <th class="chg"><?cs var:#block.changed.offset + name(line) + 1 ?></th> 
    80       <td class="chg"><?cs var:line ?>&nbsp;</td> 
    81      </tr><?cs /each ?><?cs 
    82     /if ?> 
    83    </tbody><?cs 
     78      <th><?cs var:#block.changed.offset + name(line) + 1 ?></th> 
     79      <td class="r"><?cs var:line ?>&nbsp;</td></tr><?cs 
     80     /each ?><?cs 
     81    /if ?></tbody><?cs 
    8482   elif:block.type == 'add' ?><tbody class="add"><?cs 
    85     each:line = block.changed.lines ?><tr> 
    86      <th class="base">&nbsp;</th> 
    87      <td class="base">&nbsp;</td> 
    88      <th class="chg"><?cs var:#block.changed.offset + name(line) + 1 ?></th> 
    89      <td class="chg"><ins><?cs var:line ?></ins>&nbsp;</td> 
    90     </tr><?cs /each ?><?cs 
     83    each:line = block.changed.lines ?><tr><th>&nbsp;</th><td class="l">&nbsp;</td><th><?cs 
     84     var:#block.changed.offset + name(line) + 1 ?></th><td class="r"><ins><?cs 
     85     var:line ?></ins>&nbsp;</td></tr><?cs 
     86    /each ?><?cs 
    9187   elif:block.type == 'rem' ?><tbody class="rem"><?cs 
    92     each:line = block.base.lines ?><tr> 
    93      <th class="base"><?cs var:#block.base.offset + name(line) + 1 ?></th> 
    94      <td class="base"><del><?cs var:line ?></del>&nbsp;</td> 
    95      <th class="chg">&nbsp;</th> 
    96      <td class="chg">&nbsp;</td> 
    97     </tr><?cs /each ?><?cs 
    98    /if ?> 
    99   </tbody><?cs 
     88    each:line = block.base.lines ?><tr><th><?cs 
     89     var:#block.base.offset + name(line) + 1 ?></th><td class="l"><del><?cs 
     90     var:line ?></del>&nbsp;</td><th>&nbsp;</th><td class="r">&nbsp;</td></tr><?cs 
     91    /each ?><?cs 
     92   /if ?></tbody><?cs 
    10093  /each ?><?cs 
    10194 else ?><?cs 
    102   each:block = change.blocks ?> 
    103    <?cs if:block.type == 'unmod' ?><tbody class="unmod"><?cs 
    104     each:line = block.base.lines ?><tr> 
    105      <th class="base"><?cs var:#block.base.offset + name(line) + #1 ?></th> 
    106      <th class="chg"><?cs var:#block.changed.offset + name(line) + #1 ?></th> 
    107      <td class="base"><span><?cs var:line ?></span>&nbsp;</td> 
    108     </tr><?cs /each ?> 
    109    </tbody> 
    110    <?cs elif:block.type == 'mod' ?><tbody class="mod"><?cs 
    111     each:line = block.base.lines ?><tr class="<?cs 
    112       if:name(line) == 0 ?>first<?cs /if ?>"> 
    113      <th class="base"><?cs var:#block.base.offset + name(line) + #1 ?></th> 
    114      <th class="chg">&nbsp;</th> 
    115      <td class="base"><?cs var:line ?>&nbsp;</td> 
    116     </tr><?cs /each ?><?cs 
    117     each:line = block.changed.lines ?><tr class="<?cs 
    118       if:name(line) + 1 == len(block.changed.lines) ?> last<?cs /if ?>"> 
    119      <th class="base">&nbsp;</th> 
    120      <th class="chg"><?cs var:#block.changed.offset + name(line) + #1 ?></th> 
    121      <td class="chg"><?cs var:line ?>&nbsp;</td> 
    122     </tr><?cs /each ?> 
    123    </tbody> 
    124    <?cs elif:block.type == 'add' ?><tbody class="add"><?cs 
    125     each:line = block.changed.lines ?><tr class="<?cs 
    126       if:name(line) == 0 ?>first<?cs /if ?><?cs 
    127       if:name(line) + 1 == len(block.changed.lines) ?> last ?><?cs /if ?>"> 
    128      <th class="base">&nbsp;</th> 
    129      <th class="chg"><?cs var:#block.changed.offset + name(line) + #1 ?></th> 
    130      <td class="chg"><ins><?cs var:line ?></ins>&nbsp;</td> 
    131     </tr><?cs /each ?> 
    132    </tbody> 
    133    <?cs elif:block.type == 'rem' ?><tbody class="rem"><?cs 
    134     each:line = block.base.lines ?><tr class="<?cs 
    135       if:name(line) == 0 ?>first<?cs /if ?><?cs 
    136       if:name(line) + 1 == len(block.base.lines) ?> last ?><?cs /if ?>"> 
    137      <th class="base"><?cs var:#block.base.offset + name(line) + 1 ?></th> 
    138      <th class="chg">&nbsp;</th> 
    139      <td class="base"><del><?cs var:line ?></del>&nbsp;</td> 
    140     </tr><?cs /each ?> 
    141    </tbody> 
    142    <?cs /if ?><?cs 
     95  each:block = diff ?><?cs 
     96   if:block.type == 'unmod' ?><tbody><?cs 
     97    each:line = block.base.lines ?><tr><th><?cs 
     98     var:#block.base.offset + name(line) + #1 ?></th><th><?cs 
     99     var:#block.changed.offset + name(line) + #1 ?></th><td class="l"><span><?cs 
     100     var:line ?></span>&nbsp;</td></tr><?cs 
     101    /each ?></tbody><?cs 
     102   elif:block.type == 'mod' ?><tbody class="mod"><?cs 
     103    each:line = block.base.lines ?><tr<?cs 
     104     if:name(line) == 0 ?> class="first"<?cs /if ?>><th><?cs 
     105     var:#block.base.offset + name(line) + #1 ?></th><th>&nbsp;</th><td class="l"><?cs 
     106     var:line ?>&nbsp;</td></tr><?cs 
     107    /each ?><?cs 
     108    each:line = block.changed.lines ?><tr<?cs 
     109     if:name(line) + 1 == len(block.changed.lines) ?> class="last"<?cs /if ?>><th>&nbsp;</th><th><?cs 
     110     var:#block.changed.offset + name(line) + #1 ?></th><td class="r"><?cs 
     111     var:line ?>&nbsp;</td></tr><?cs 
     112    /each ?></tbody><?cs 
     113   elif:block.type == 'add' ?><tbody class="add"><?cs 
     114    each:line = block.changed.lines ?><tr<?cs 
     115     call:diff_line_class(block.changed, line) ?>><th>&nbsp;</th><th><?cs 
     116     var:#block.changed.offset + name(line) + #1 ?></th><td class="r"><ins><?cs 
     117     var:line ?></ins>&nbsp;</td></tr><?cs 
     118    /each ?></tbody><?cs 
     119   elif:block.type == 'rem' ?><tbody class="rem"><?cs 
     120    each:line = block.base.lines ?><tr<?cs 
     121     call:diff_line_class(block.base, line) ?>><th><?cs 
     122     var:#block.base.offset + name(line) + 1 ?></th><th>&nbsp;</th><td class="l"><del><?cs 
     123     var:line ?></del>&nbsp;</td></tr><?cs 
     124    /each ?></tbody><?cs 
     125   /if ?><?cs 
    143126  /each ?><?cs 
    144127 /if ?><?cs 
    145 /def ?> 
     128/def ?><?cs 
    146129 
    147 <?cs def:session_name_email() ?><?cs 
    148   if trac.authname != "anonymous" ?><?cs  
    149      var:trac.authname ?><?cs  
    150   elif trac.session.var.name && trac.session.var.email ?><?cs 
    151      var:trac.session.var.name ?> &lt;<?cs var:trac.session.var.email ?>&gt;<?cs  
    152   elif !trac.session.var.name && trac.session.var.email ?><?cs  
    153      var:trac.session.var.email ?><?cs  
    154   else ?><?cs 
    155      var:trac.authname ?><?cs  
    156   /if ?><?cs 
    157   /def ?> 
    158  
    159 <?cs def:ticket_custom_props(ticket) ?><?cs 
     130def:ticket_custom_props(ticket) ?><?cs 
    160131 each c=ticket.custom ?> 
    161132  <div class="field custom_<?cs var c.name ?>"><?cs 
    162    if c.type == 'text' || c.type == 'select' ?> 
    163     <label for="custom_<?cs var c.name ?>"><?cs alt c.label ?><?cs 
    164       var c.name ?><?cs /alt ?></label>:<?cs 
    165    /if ?><?cs 
    166133   if c.type == 'text' ?> 
    167     <input type="text" id="custom_<?cs var c.name ?>" name="custom_<?cs 
    168       var c.name ?>" value="<?cs var c.value ?>" /><?cs 
     134    <label> 
     135     <?cs alt c.label ?><?cs var c.name ?><?cs /alt ?>: 
     136     <input type="text" name="custom_<?cs var c.name ?>" value="<?cs var c.value ?>" /> 
     137    </label><?cs 
    169138   elif c.type == 'textarea' ?> 
    170     <label for="custom_<?cs var c.name ?>"><?cs alt c.label ?><?cs 
    171       var c.name ?><?cs /alt ?></label>:<br /> 
    172     <textarea cols="<?cs alt c.width ?>60<?cs /alt ?>" rows="<?cs 
    173       alt c.height ?>12<?cs /alt ?>" name="custom_<?cs var c.name ?>"><?cs 
    174       var c.value ?></textarea><?cs 
     139    <label> 
     140     <?cs alt c.label ?><?cs var c.name ?><?cs /alt ?>:<br /> 
     141     <textarea cols="<?cs alt c.width ?>60<?cs /alt ?>" rows="<?cs 
     142       alt c.height ?>12<?cs /alt ?>" name="custom_<?cs var c.name ?>"><?cs 
     143       var c.value ?></textarea> 
     144    </label><?cs 
    175145   elif c.type == 'checkbox' ?> 
    176     <input type="hidden" name="checkbox_<?cs var c.name ?>" value="custom_<?cs 
    177       var c.name ?>" /> 
    178     <input type="checkbox" id="custom_<?cs var c.name ?>" name="custom_<?cs 
    179       var c.name ?>" value="1" <?cs if c.selected ?>checked="checked"<?cs /if ?> /> 
    180     <label for="custom_<?cs var c.name ?>"><?cs alt c.label ?><?cs 
    181       var c.name ?><?cs /alt ?></label><?cs 
     146    <input type="hidden" name="checkbox_<?cs var c.name ?>" /> 
     147    <label> 
     148     <input type="checkbox" name="custom_<?cs var c.name ?>" value="1"<?cs 
     149       if c.selected ?> checked="checked"<?cs /if ?> /> 
     150     <?cs alt c.label ?><?cs var c.name ?><?cs /alt ?> 
     151    </label><?cs 
    182152   elif c.type == 'select' ?> 
    183     <select name="custom_<?cs var c.name ?>"><?cs each v = c.option ?> 
    184      <option <?cs if v.selected ?>selected="selected"<?cs /if ?>><?cs 
    185        var v ?></option><?cs /each ?> 
    186     </select><?cs 
     153    <label> 
     154     <?cs alt c.label ?><?cs var c.name ?><?cs /alt ?>: 
     155     <select name="custom_<?cs var c.name ?>"><?cs each v = c.option ?> 
     156      <option<?cs if v.selected ?> selected="selected"<?cs /if ?>><?cs 
     157        var v ?></option><?cs /each ?> 
     158     </select> 
     159    </label><?cs 
    187160   elif c.type == 'radio' ?> 
    188161    <fieldset class="radio"> 
    189162     <legend><?cs alt c.label ?><?cs var c.name ?><?cs /alt ?>:</legend><?cs 
    190163     each v = c.option ?> 
    191       <input type="radio" id="custom_<?cs var c.name ?>_<?cs 
    192         var v ?>" name="custom_<?cs var c.name ?>"<?cs 
    193         if v.selected ?> checked="checked"<?cs /if ?> value="<?cs var v ?>"/> 
    194       <label for="custom_<?cs var c.name ?>_<?cs var v ?>"><?cs 
    195         var v ?></label><?cs 
     164      <label><input type="radio" name="custom_<?cs var c.name ?>" value="<?cs 
     165         var v ?>"<?cs if v.selected ?> checked="checked"<?cs /if ?> /> <?cs 
     166         var v ?></label><?cs 
    196167     /each ?> 
    197168    </fieldset><?cs 
     
    199170  </div><?cs 
    200171 /each ?><?cs 
     172/def ?><?cs  
     173 
     174def:sortable_th(order, desc, class, title, href) ?> 
     175 <th class="<?cs var:class ?><?cs if:order == class ?> <?cs 
     176   if:desc ?>desc<?cs else ?>asc<?cs /if ?><?cs /if ?>"> 
     177  <a title="Sort by <?cs var:class ?><?cs 
     178    if:order == class && !desc ?> (descending)<?cs /if ?>" href="<?cs 
     179    var:href ?>&amp;order=<?cs var:class ?><?cs 
     180    if:order == class && !desc ?>&amp;desc=1<?cs /if ?>"><?cs var:title ?></a> 
     181 </th><?cs 
    201182/def ?> 
    202  
    203 <?cs def:wiki_toolbar(textarea_id) ?> 
    204 <script type='text/javascript'> 
    205  addWikiFormattingToolbar(document.getElementById("<?cs var:textarea_id ?>")); 
    206 </script> 
    207 <?cs /def ?> 
  • trac/vendor/current/templates/milestone.cs

    r2588 r3034  
    1 <?cs set:html.stylesheet = 'css/roadmap.css' ?> 
    21<?cs include:"header.cs"?> 
    32<?cs include:"macros.cs"?> 
    43 
    5 <div id="ctxtnav" class="nav"> 
    6  <ul> 
    7   <?cs if:milestone.href.edit ?><li class="first"><a href="<?cs 
    8     var:milestone.href.edit ?>">Edit Milestone Info</a></li><?cs /if ?> 
    9   <?cs if:milestone.href.delete ?><li class="last"><a href="<?cs 
    10     var:milestone.href.delete ?>">Delete Milestone</a></li><?cs /if ?> 
    11  </ul> 
    12 </div> 
     4<div id="ctxtnav" class="nav"></div> 
    135 
    146<div id="content" class="milestone"> 
     
    2113 <?cs else ?> 
    2214 <h1>Milestone <?cs var:milestone.name ?></h1> 
    23  <form action="#stats" id="prefs" method="get"> 
    24   <div> 
    25    <label for="by">View status by</label> 
    26    <select id="by" name="by"><?cs each:group = milestone.stats.available_groups ?> 
    27     <option<?cs 
    28       if:milestone.stats.grouped_by == group?> selected="selected"<?cs 
    29       /if ?>><?cs var:group ?></option> 
    30    <?cs /each ?></select> 
    31    <div> 
    32     <input name="showempty" id="showempty" type="checkbox"<?cs 
    33        if:milestone.stats.show_empty ?> checked="checked"<?cs /if ?>> 
    34     <label for="showempty">Show groups with no assigned tickets</label> 
    35    </div> 
    36    <div class="buttons"> 
    37     <input type="submit" value="Update" /> 
    38    </div> 
    39   </div> 
    40  </form> 
    4115 <?cs /if ?> 
    4216 
     
    4418  <script type="text/javascript"> 
    4519    addEvent(window, 'load', function() { 
    46       document.getElementById('name').focus() } 
    47     ); 
     20      document.getElementById('name').focus(); 
     21    }); 
    4822  </script> 
    49   <form id="edit" action="<?cs var:cgi_location ?>" method="post"> 
    50    <input type="hidden" name="mode" value="milestone" /> 
     23  <form id="edit" action="<?cs var:milestone.href ?>" method="post"> 
    5124   <input type="hidden" name="id" value="<?cs var:milestone.name ?>" /> 
    52    <input type="hidden" name="action" value="commit_changes" /> 
     25   <input type="hidden" name="action" value="edit" /> 
    5326   <div class="field"> 
    54     <label for="name">Name of the milestone:</label><br /> 
     27    <label>Name of the milestone:<br /> 
    5528    <input type="text" id="name" name="name" size="32" value="<?cs 
    56       var:milestone.name ?>" /> 
    57    </div> 
    58    <div class="field"> 
    59     <label for="datemode">Completion date:</label><br /> 
    60     <select name="datemode" id="datemode" 
    61         onchange="enableControl('date',this.value=='manual'); 
    62                   if (this.value=='manual') document.getElementById('date').focus();"> 
    63      <option value="manual">Set manually</option> 
    64      <option value="now">Mark as completed now</option> 
    65     </select> 
    66     <input type="text" id="date" name="date" size="8" value="<?cs 
    67       var:milestone.date ?>" title="Format: <?cs var:milestone.date_hint ?>" /> 
    68     <label for="date"><em>Format: <?cs var:milestone.date_hint ?></em></label> 
    69    </div> 
     29      var:milestone.name ?>" /></label> 
     30   </div> 
     31   <fieldset> 
     32    <legend>Schedule</legend> 
     33    <label>Due:<br /> 
     34     <input type="text" id="duedate" name="duedate" size="<?cs 
     35       var:len(milestone.date_hint) ?>" value="<?cs 
     36       var:milestone.due_date ?>" title="Format: <?cs var:milestone.date_hint ?>" /> 
     37     <em>Format: <?cs var:milestone.date_hint ?></em> 
     38    </label> 
     39    <div class="field"> 
     40     <label> 
     41      <input type="checkbox" id="completed" name="completed"<?cs 
     42        if:milestone.completed ?> checked="checked"<?cs /if ?> /> 
     43      Completed:<br /> 
     44     </label> 
     45     <label> 
     46      <input type="text" id="completeddate" name="completeddate" size="<?cs 
     47        var:len(milestone.date_hint) ?>" value="<?cs 
     48        alt:milestone.completed_date ?><?cs 
     49         var:milestone.datetime_now ?><?cs 
     50        /alt ?>" title="Format: <?cs 
     51        var:milestone.datetime_hint ?>" /> 
     52      <em>Format: <?cs var:milestone.datetime_hint ?></em> 
     53     </label> 
     54     <script type="text/javascript"> 
     55       var completed = document.getElementById("completed"); 
     56       var enableCompletedDate = function() { 
     57         enableControl("completeddate", completed.checked); 
     58       }; 
     59       addEvent(window, "load", enableCompletedDate); 
     60       addEvent(completed, "click", enableCompletedDate); 
     61     </script> 
     62    </div> 
     63   </fieldset> 
    7064   <div class="field"> 
    7165    <fieldset class="iefix"> 
    72      <label for="descr">Description (you may use <a tabindex="42" href="<?cs 
     66     <label for="description">Description (you may use <a tabindex="42" href="<?cs 
    7367       var:trac.href.wiki ?>/WikiFormatting">WikiFormatting</a> here):</label> 
    74      <p><textarea id="descr" name="descr" rows="12" cols="80"><?cs 
    75        var:milestone.descr_source ?></textarea></p> 
    76      <?cs call:wiki_toolbar('descr') ?> 
     68     <p><textarea id="description" name="description" class="wikitext" rows="10" cols="78"><?cs 
     69       var:milestone.description_source ?></textarea></p> 
    7770    </fieldset> 
    7871   </div> 
    7972   <div class="buttons"> 
    8073    <?cs if:milestone.mode == "new" 
    81      ?><input type="submit" name="save" value="Add Milestone" /><?cs 
     74     ?><input type="submit" value="Add milestone" /><?cs 
    8275    else 
    83      ?><input type="submit" name="save" value="Save Changes" /><?cs 
     76     ?><input type="submit" value="Submit changes" /><?cs 
    8477    /if ?> 
    8578    <input type="submit" name="cancel" value="Cancel" /> 
    8679   </div> 
     80   <script type="text/javascript" src="<?cs 
     81     var:htdocs_location ?>js/wikitoolbar.js"></script> 
    8782  </form> 
    8883 <?cs elif:milestone.mode == "delete" ?> 
    89   <form action="<?cs var:cgi_location ?>" method="post"> 
    90    <input type="hidden" name="mode" value="milestone" /> 
     84  <form action="<?cs var:milestone.href ?>" method="post"> 
    9185   <input type="hidden" name="id" value="<?cs var:milestone.name ?>" /> 
    92    <input type="hidden" name="action" value="confirm_delete" /> 
     86   <input type="hidden" name="action" value="delete" /> 
    9387   <p><strong>Are you sure you want to delete this milestone?</strong></p> 
    9488   <input type="checkbox" id="retarget" name="retarget" checked="checked" 
     
    10397   <div class="buttons"> 
    10498    <input type="submit" name="cancel" value="Cancel" /> 
    105     <input type="submit" name="delete" value="Delete Milestone" /> 
     99    <input type="submit" value="Delete milestone" /> 
    106100   </div> 
    107101  </form> 
    108102 <?cs else ?> 
    109   <em class="date"><?cs if:milestone.date ?> 
    110    <?cs var:milestone.date ?><?cs else ?>No date set<?cs /if ?> 
    111   </em> 
    112   <div class="descr"><?cs var:milestone.descr ?></div> 
    113  <?cs /if ?> 
    114  
    115103 <?cs if:milestone.mode == "view" ?> 
    116  <h2 class="stats">Status by <?cs var:milestone.stats.grouped_by ?></h2> 
    117  <table class="listing" id="stats" 
    118    summary="Shows the milestone completion status grouped by <?cs 
    119      var:milestone.stats.grouped_by ?>"> 
    120   <thead><tr> 
    121    <th class="name" rowspan="2"><?cs var:milestone.stats.grouped_by ?></th> 
    122    <th class="tickets" scope="col" colspan="2">Tickets</th> 
    123    <th class="progress" rowspan="2">Percent Resolved</th> 
    124   </tr><tr> 
    125    <th class="open" scope="col">Active</th> 
    126    <th class="closed" scope="col">Closed</th> 
    127   </tr></thead> 
    128   <?cs if:len(milestone.stats.groups) ?><tbody> 
    129    <?cs each:group = milestone.stats.groups ?> 
    130     <tr class="<?cs if:name(group) % 2 ?>odd<?cs else ?>even<?cs /if ?>"> 
    131      <th class="name" scope="row"><a href="<?cs 
    132        var:group.queries.all_tickets ?>"><?cs var:group.name ?></a></th> 
    133      <td class="open tickets"><a href="<?cs 
    134        var:group.queries.active_tickets ?>"><?cs 
    135        var:group.active_tickets ?></a></td> 
    136      <td class="closed tickets"><a href="<?cs 
    137        var:group.queries.closed_tickets ?>"><?cs 
    138        var:group.closed_tickets ?></a></td> 
    139      <td class="progress"> 
    140       <?cs if:#group.total_tickets ?> 
    141        <div class="progress" style="width: <?cs 
    142          var:#group.percent_total * #80 / #100 ?>%"><div style="width: <?cs 
    143          var:#group.percent_complete ?>%"></div> 
    144        </div> 
    145        <p class="percent"><?cs var:#group.percent_complete ?>%</p> 
    146       <?cs /if ?> 
    147      </td> 
    148     </tr> 
    149    <?cs /each ?> 
    150   </tbody><?cs /if ?> 
    151   <tbody class="totals"><tr> 
    152    <th class="name" scope="row"><a href="<?cs 
    153      var:milestone.queries.all_tickets ?>">Total</a></th> 
    154    <td class="open tickets"><a href="<?cs 
    155      var:milestone.queries.active_tickets ?>"><?cs 
    156      var:milestone.stats.active_tickets ?></a></td> 
    157    <td class="closed tickets"><a href="<?cs 
    158      var:milestone.queries.closed_tickets ?>"><?cs 
    159      var:milestone.stats.closed_tickets ?></a></td> 
    160    <td class="progress"> 
    161     <?cs if:#milestone.stats.total_tickets ?> 
    162      <div class="progress" style="width: 80%"> 
    163       <div style="width: <?cs var:#milestone.stats.percent_complete ?>%"></div> 
     104  <div class="info"> 
     105   <p class="date"><?cs 
     106    if:milestone.completed_date ?> 
     107     Completed <?cs var:milestone.completed_delta ?> ago (<?cs var:milestone.completed_date ?>)<?cs 
     108    elif:milestone.due_date ?><?cs 
     109     if:milestone.late ?> 
     110      <strong><?cs var:milestone.due_delta ?> late</strong><?cs 
     111     else ?> 
     112      Due in <?cs var:milestone.due_delta ?><?cs 
     113     /if ?> (<?cs var:milestone.due_date ?>)<?cs 
     114    else ?> 
     115     No date set<?cs 
     116    /if ?> 
     117   </p><?cs 
     118   with:stats = milestone.stats ?><?cs 
     119    if:#stats.total_tickets > #0 ?> 
     120     <div class="progress"> 
     121      <a class="closed" href="<?cs 
     122        var:milestone.queries.closed_tickets ?>" style="width: <?cs 
     123        var:#stats.percent_closed ?>%" title="<?cs 
     124        var:#stats.closed_tickets ?> of <?cs 
     125        var:#stats.total_tickets ?> ticket<?cs 
     126        if:#stats.total_tickets != #1 ?>s<?cs /if ?> closed"></a> 
     127      <a class="open" href="<?cs 
     128        var:milestone.queries.active_tickets ?>" style="width: <?cs 
     129        var:#stats.percent_active - 1 ?>%" title="<?cs 
     130        var:#stats.active_tickets ?> of <?cs 
     131        var:#stats.total_tickets ?> ticket<?cs 
     132        if:#stats.total_tickets != #1 ?>s<?cs /if ?> active"></a> 
    164133     </div> 
    165      <p class="percent"><?cs var:#milestone.stats.percent_complete ?>%</p> 
    166     <?cs /if ?> 
    167    </td> 
    168   </tr></tbody> 
    169  </table><?cs /if ?> 
     134     <p class="percent"><?cs var:#stats.percent_closed ?>%</p> 
     135     <dl> 
     136      <dt>Closed tickets:</dt> 
     137      <dd><a href="<?cs var:milestone.queries.closed_tickets ?>"><?cs 
     138        var:stats.closed_tickets ?></a></dd> 
     139      <dt>Active tickets:</dt> 
     140      <dd><a href="<?cs var:milestone.queries.active_tickets ?>"><?cs 
     141        var:stats.active_tickets ?></a></dd> 
     142     </dl><?cs 
     143    /if ?><?cs 
     144   /with ?> 
     145  </div> 
     146  <form id="stats" action="" method="get"> 
     147   <fieldset> 
     148    <legend> 
     149     <label for="by">Ticket status by</label> 
     150     <select id="by" name="by" onchange="this.form.submit()"><?cs 
     151     each:group = milestone.stats.available_groups ?> 
     152      <option value="<?cs var:group.name ?>" <?cs 
     153        if:milestone.stats.grouped_by == group.name ?> selected="selected"<?cs 
     154        /if ?>><?cs var:group.label ?></option><?cs 
     155     /each ?></select> 
     156     <noscript><input type="submit" value="Update" /></noscript> 
     157    </legend> 
     158    <table summary="Shows the milestone completion status grouped by <?cs 
     159      var:milestone.stats.grouped_by ?>"><?cs 
     160     each:group = milestone.stats.groups ?> 
     161      <tr> 
     162       <th scope="row"><a href="<?cs 
     163         var:group.queries.all_tickets ?>"><?cs var:group.name ?></a></th> 
     164       <td style="white-space: nowrap"><?cs if:#group.total_tickets ?> 
     165        <div class="progress" style="width: <?cs 
     166          var:#group.percent_total * #80 / #milestone.stats.max_percent_total ?>%"> 
     167         <a class="closed" href="<?cs 
     168           var:group.queries.closed_tickets ?>" style="width: <?cs 
     169           var:#group.percent_closed ?>%" title="<?cs 
     170          var:group.closed_tickets ?> of <?cs 
     171          var:group.total_tickets ?> ticket<?cs 
     172          if:group.total_tickets != #1 ?>s<?cs /if ?> closed"></a> 
     173         <a class="open" href="<?cs 
     174           var:group.queries.active_tickets ?>" style="width: <?cs 
     175           var:#group.percent_active - 1 ?>%" title="<?cs 
     176          var:group.active_tickets ?> of <?cs 
     177          var:group.total_tickets ?> ticket<?cs 
     178          if:group.total_tickets != 1 ?>s<?cs /if ?> active"></a> 
     179        </div> 
     180        <p class="percent"><?cs var:group.closed_tickets ?>/<?cs 
     181         var:group.total_tickets ?></p> 
     182       <?cs /if ?></td> 
     183      </tr><?cs 
     184     /each ?> 
     185    </table><?cs /if ?> 
     186   </fieldset> 
     187  </form> 
     188  <div class="description"><?cs var:milestone.description ?></div><?cs 
     189  if:trac.acl.MILESTONE_MODIFY || trac.acl.MILESTONE_DELETE ?> 
     190   <div class="buttons"><?cs 
     191    if:trac.acl.MILESTONE_MODIFY ?> 
     192     <form method="get" action=""><div> 
     193      <input type="hidden" name="action" value="edit" /><?cs 
     194      if:milestone.id_param ?> 
     195       <input type="hidden" name="id" value="<?cs var:milestone.name ?>" /><?cs 
     196      /if ?> 
     197      <input type="submit" value="Edit milestone info" accesskey="e" /> 
     198     </div></form><?cs 
     199    /if ?><?cs 
     200    if:trac.acl.MILESTONE_DELETE ?> 
     201     <form method="get" action=""><div> 
     202      <input type="hidden" name="action" value="delete" /><?cs 
     203      if:milestone.id_param ?> 
     204       <input type="hidden" name="id" value="<?cs var:milestone.name ?>" /><?cs 
     205      /if ?> 
     206      <input type="submit" value="Delete milestone" /> 
     207     </div></form><?cs 
     208    /if ?> 
     209   </div><?cs 
     210  /if ?><?cs 
     211 /if ?> 
    170212 
    171213 <div id="help"> 
  • trac/vendor/current/templates/newticket.cs

    r2581 r3034  
    1 <?cs set:html.stylesheet = 'css/ticket.css' ?> 
    2 <?cs include "header.cs" ?> 
    3 <?cs include "macros.cs" ?> 
     1<?cs include:"header.cs" ?> 
     2<?cs include:"macros.cs" ?> 
    43<script type="text/javascript"> 
    54addEvent(window, 'load', function() { document.getElementById('summary').focus()});  
     
    98 
    109<div id="content" class="ticket"> 
    11  
    12 <h3>Create New Ticket:</h3> 
    13 <form id="newticket" action="<?cs var:cgi_location ?>#preview" method="post"> 
     10<h1>Create New Ticket</h1> 
     11<?cs include:"site_newticket.cs" ?> 
     12<form id="newticket" method="post" action="<?cs 
     13  var:trac.href.newticket ?>#preview"> 
    1414 <div class="field"> 
    1515  <label for="reporter">Your email or username:</label><br /> 
     
    1919 <div class="field"> 
    2020  <label for="summary">Short summary:</label><br /> 
    21   <input id="summary" type="text" name="summary" size="80" value="<?cs var:newticket.summary ?>"/> 
    22  </div> 
     21  <input id="summary" type="text" name="summary" size="80" value="<?cs 
     22    var:newticket.summary ?>"/> 
     23 </div><?cs 
     24 if:len(newticket.fields.type.options) ?> 
     25  <div class="field"><label for="type">Type:</label> <?cs 
     26   call:hdf_select(newticket.fields.type.options, 'type', 
     27                   newticket.type, 0) ?> 
     28  </div><?cs 
     29 /if ?> 
    2330 <div class="field"> 
    2431  <label for="description">Full description (you may use <a tabindex="42" href="<?cs 
    2532    var:$trac.href.wiki ?>/WikiFormatting">WikiFormatting</a> here):</label><br /> 
    26   <textarea id="description" name="description" rows="10" cols="78"><?cs 
     33  <textarea id="description" name="description" class="wikitext" rows="10" cols="78"><?cs 
    2734    var:newticket.description ?></textarea><?cs 
    28   call:wiki_toolbar('description') ?><?cs 
    2935  if:newticket.description_preview ?> 
    3036   <fieldset id="preview"> 
     
    3743 <fieldset id="properties"> 
    3844  <legend>Ticket Properties</legend> 
    39   <input type="hidden" name="mode" value="newticket" /> 
    4045  <input type="hidden" name="action" value="create" /> 
    4146  <input type="hidden" name="status" value="new" /> 
    42   <div class="col1"> 
    43    <label for="component">Component:</label><?cs 
    44    call:hdf_select(newticket.components, "component", newticket.component) ?> 
    45    <br /> 
    46    <label for="version">Version:</label><?cs 
    47    call:hdf_select(newticket.versions, "version", newticket.version) ?> 
    48    <br /> 
    49    <label for="severity">Severity:</label><?cs 
    50    call:hdf_select(enums.severity, "severity", newticket.severity) ?> 
    51    <br /> 
    52    <label for="keywords">Keywords:</label> 
    53    <input type="text" id="keywords" name="keywords" size="20" 
    54        value="<?cs var:newticket.keywords ?>" /> 
    55   </div> 
    56   <div class="col2"> 
    57    <label for="priority">Priority:</label><?cs 
    58    call:hdf_select(enums.priority, "priority", newticket.priority) ?><br /> 
    59    <label for="milestone">Milestone:</label><?cs 
    60    call:hdf_select(newticket.milestones, "milestone", newticket.milestone) ?><br /> 
    61    <label for="owner">Assign to:</label> 
    62    <input type="text" id="owner" name="owner" size="20" value="<?cs 
    63      var:newticket.owner ?>" /><br /> 
    64    <label for="cc">Cc:</label> 
    65    <input type="text" id="cc" name="cc" size="30" value="<?cs var:newticket.cc ?>" /> 
    66   </div> 
    67   <?cs if:len(ticket.custom) ?><div class="custom"> 
    68    <?cs call:ticket_custom_props(ticket) ?> 
    69   </div><?cs /if ?> 
     47  <table><tr><?cs set:num_fields = 0 ?><?cs 
     48  each:field = newticket.fields ?><?cs 
     49   if:!field.skip ?><?cs 
     50    set:num_fields = num_fields + 1 ?><?cs 
     51   /if ?><?cs 
     52  /each ?><?cs set:idx = 0 ?><?cs 
     53   each:field = newticket.fields ?><?cs 
     54    if:!field.skip ?><?cs set:fullrow = field.type == 'textarea' ?><?cs 
     55     if:fullrow && idx % 2 ?><?cs set:idx = idx + 1 ?><th class="col2"></th><td></td></tr><tr><?cs /if ?> 
     56     <th class="col<?cs var:idx % 2 + 1 ?>"><?cs 
     57       if:field.type != 'radio' ?><label for="<?cs var:name(field) ?>"><?cs 
     58       /if ?><?cs alt:field.label ?><?cs var:field.name ?><?cs /alt ?>:<?cs 
     59       if:field.type != 'radio' ?></label><?cs /if ?></th> 
     60     <td<?cs if:fullrow ?> colspan="3"<?cs /if ?>><?cs 
     61      if:field.type == 'text' ?><input type="text" id="<?cs 
     62        var:name(field) ?>" name="<?cs 
     63        var:name(field) ?>" value="<?cs var:newticket[name(field)] ?>" /><?cs 
     64      elif:field.type == 'select' ?><select id="<?cs 
     65        var:name(field) ?>" name="<?cs var:name(field) ?>"><?cs 
     66        if:field.optional ?><option></option><?cs /if ?><?cs 
     67        each:option = field.options ?><option<?cs 
     68         if:option == newticket[name(field)] ?> selected="selected"<?cs /if ?>><?cs 
     69         var:option ?></option><?cs 
     70        /each ?></select><?cs 
     71      elif:field.type == 'checkbox' ?><input type="hidden" name="checkbox_<?cs 
     72        var:name(field) ?>" /><input type="checkbox" id="<?cs 
     73        var:name(field) ?>" name="<?cs 
     74        var:name(field) ?>" value="1"<?cs 
     75        if:newticket[name(field)] ?> checked="checked"<?cs /if ?> /><?cs 
     76      elif:field.type == 'textarea' ?><textarea id="<?cs 
     77        var:name(field) ?>" name="<?cs 
     78        var:name(field) ?>"<?cs 
     79        if:field.height ?> rows="<?cs var:field.height ?>"<?cs /if ?><?cs 
     80        if:field.width ?> cols="<?cs var:field.width ?>"<?cs /if ?>><?cs 
     81        var:newticket[name(field)] ?></textarea><?cs 
     82      elif:field.type == 'radio' ?><?cs set:optidx = 0 ?><?cs 
     83       each:option = field.options ?><label><input type="radio" id="<?cs 
     84         var:name(field) ?>" name="<?cs 
     85         var:name(field) ?>" value="<?cs var:option ?>"<?cs 
     86         if:ticket[name(field)] == option ?> checked="checked"<?cs /if ?> /> <?cs 
     87         var:option ?></label> <?cs set:optidx = optidx + 1 ?><?cs 
     88       /each ?><?cs 
     89      /if ?></td><?cs 
     90     if:idx % 2 || fullrow ?><?cs 
     91      if:idx < num_fields - 1 ?></tr><tr><?cs 
     92      /if ?><?cs  
     93     elif:idx == num_fields - 1 ?><th class="col2"></th><td></td><?cs 
     94     /if ?><?cs set:idx = idx + #fullrow + 1 ?><?cs 
     95    /if ?><?cs 
     96   /each ?></tr> 
     97  </table> 
    7098 </fieldset> 
    7199 
     100 <script type="text/javascript" src="<?cs 
     101   var:htdocs_location ?>js/wikitoolbar.js"></script> 
     102 
    72103 <div class="buttons"> 
    73   <input type="submit" value="Preview" />&nbsp; 
    74   <input type="submit" name="create" value="Submit ticket" /> 
     104  <input type="submit" name="preview" value="Preview" accesskey="r" />&nbsp; 
     105  <input type="submit" value="Submit ticket" /> 
    75106 </div> 
    76107</form> 
    77108 
    78  <div id="help"> 
    79   <strong>Note:</strong> See <a href="<?cs var:$trac.href.wiki 
    80   ?>/TracTickets">TracTickets</a> for help on using tickets. 
    81  </div> 
     109<div id="help"> 
     110 <strong>Note:</strong> See <a href="<?cs 
     111   var:trac.href.wiki ?>/TracTickets">TracTickets</a> for help on using tickets. 
     112</div> 
    82113</div> 
    83114 
  • trac/vendor/current/templates/query.cs

    r2581 r3034  
    1 <?cs set:html.stylesheet = 'css/report.css' ?> 
    21<?cs include:"header.cs" ?> 
    32<?cs include:"macros.cs" ?> 
    43 
    5 <div id="ctxtnav" class="nav"><?cs if:query.edit_href ?> 
    6  <ul> 
    7   <li class="last"><a href="<?cs var:query.edit_href ?>">Refine Query</a></li> 
    8  </ul> 
    9 <?cs /if ?></div> 
     4<div id="ctxtnav" class="nav"><?cs 
     5 if:query.report_href ?><ul> 
     6  <li class="first"><a href="<?cs 
     7    var:query.report_href ?>">Available Reports</a></li> 
     8  <li class="last">Custom Query</li></ul><?cs 
     9 /if ?> 
     10</div> 
    1011 
    1112<div id="content" class="query"> 
    12  <h1><?cs var:title ?></h1> 
    13  
    14 <?cs if:query.action == 'edit' ?> 
    15  
    16 <form id="query" action="<?cs var:cgi_location ?>" method="post"> 
    17  <fieldset> 
    18   <input type="hidden" name="mode" value="query" /> 
     13 <h1><?cs var:title ?> <span class="numrows">(<?cs alt:query.num_matches ?>No<?cs /alt ?> match<?cs 
     14 if:query.num_matches != 1 ?>es<?cs /if ?>)</span></h1> 
     15 
     16<form id="query" method="post" action="<?cs var:trac.href.query ?>"> 
     17 <fieldset id="filters"> 
     18  <legend>Filters</legend> 
     19  <?cs def:checkbox_checked(constraint, option) ?><?cs 
     20   each:value = constraint.values ?><?cs 
     21    if:value == option ?> checked="checked"<?cs 
     22    /if ?><?cs 
     23   /each ?><?cs 
     24  /def ?> 
     25  <table summary="Query filters"><?cs each:field = query.fields ?><?cs 
     26   each:constraint = query.constraints ?><?cs 
     27    if:name(field) == name(constraint) ?> 
     28     <tbody><tr class="<?cs var:name(field) ?>"> 
     29      <th scope="row"><label><?cs var:field.label ?></label></th><?cs 
     30      if:field.type != "radio" && field.type != "checkbox" ?> 
     31       <td class="mode"> 
     32        <select name="<?cs var:name(field) ?>_mode"><?cs 
     33         each:mode = query.modes[field.type] ?> 
     34          <option value="<?cs var:mode.value ?>"<?cs 
     35           if:mode.value == constraint.mode ?> selected="selected"<?cs 
     36           /if ?>><?cs var:mode.name ?></option><?cs 
     37         /each ?> 
     38        </select> 
     39       </td><?cs 
     40      /if ?> 
     41      <td class="filter"<?cs 
     42        if:field.type == "radio" || field.type == "checkbox" ?> colspan="2"<?cs 
     43        /if ?>><?cs 
     44       if:field.type == "select" ?><?cs 
     45        each:value = constraint.values ?> 
     46         <select name="<?cs var:name(constraint) ?>"><option></option><?cs 
     47         each:option = field.options ?> 
     48          <option<?cs if:option == value ?> selected="selected"<?cs /if ?>><?cs 
     49            var:option ?></option><?cs 
     50         /each ?></select><?cs 
     51         if:name(value) != len(constraint.values) - 1 ?> 
     52          </td> 
     53          <td class="actions"><input type="submit" name="rm_filter_<?cs 
     54             var:name(field) ?>_<?cs var:name(value) ?>" value="-" /></td> 
     55         </tr><tr class="<?cs var:name(field) ?>"> 
     56          <th colspan="2"><label>or</label></th> 
     57          <td class="filter"><?cs 
     58         /if ?><?cs 
     59        /each ?><?cs 
     60       elif:field.type == "radio" ?><?cs 
     61        each:option = field.options ?> 
     62         <input type="checkbox" id="<?cs var:name(field) ?>_<?cs 
     63           var:option ?>" name="<?cs var:name(field) ?>" value="<?cs 
     64           var:option ?>"<?cs call:checkbox_checked(constraint, option) ?> /> 
     65         <label for="<?cs var:name(field) ?>_<?cs var:option ?>"><?cs 
     66           alt:option ?>none<?cs /alt ?></label><?cs 
     67        /each ?><?cs 
     68       elif:field.type == "checkbox" ?> 
     69        <input type="radio" id="<?cs var:name(field) ?>_on" name="<?cs 
     70          var:name(field) ?>" value="1"<?cs 
     71          if:constraint.mode != '!' ?> checked="checked"<?cs /if ?> /> 
     72        <label for="<?cs var:name(field) ?>_on">yes</label> 
     73        <input type="radio" id="<?cs var:name(field) ?>_off" name="<?cs 
     74          var:name(field) ?>" value="!1"<?cs 
     75          if:constraint.mode == '!' ?> checked="checked"<?cs /if ?> /> 
     76        <label for="<?cs var:name(field) ?>_off">no</label><?cs 
     77       elif:field.type == "text" ?><?cs 
     78        each:value = constraint.values ?> 
     79        <input type="text" name="<?cs var:name(field) ?>" value="<?cs 
     80          var:value ?>" size="42" /><?cs 
     81         if:name(value) != len(constraint.values) - 1 ?> 
     82          </td> 
     83          <td class="actions"><input type="submit" name="rm_filter_<?cs 
     84             var:name(field) ?>_<?cs var:name(value) ?>" value="-" /></td> 
     85         </tr><tr class="<?cs var:name(field) ?>"> 
     86          <th colspan="2"><label>or</label></th> 
     87          <td class="filter"><?cs 
     88         /if ?><?cs 
     89        /each ?><?cs 
     90       /if ?> 
     91      </td> 
     92      <td class="actions"><input type="submit" name="rm_filter_<?cs 
     93         var:name(field) ?><?cs 
     94         if:field.type != 'radio' ?>_<?cs 
     95          var:len(constraint.values) - 1 ?><?cs 
     96         /if ?>" value="-" /></td> 
     97     </tr></tbody><?cs /if ?><?cs 
     98    /each ?><?cs 
     99   /each ?> 
     100   <tbody><tr class="actions"> 
     101    <td class="actions" colspan="4" style="text-align: right"> 
     102     <label for="add_filter">Add filter</label>&nbsp; 
     103     <select name="add_filter" id="add_filter"> 
     104      <option></option><?cs 
     105      each:field = query.fields ?> 
     106       <option value="<?cs var:name(field) ?>"<?cs 
     107         if:field.type == "radio" ?><?cs 
     108          if:len(query.constraints[name(field)]) != 0 ?> disabled="disabled"<?cs 
     109          /if ?><?cs 
     110         /if ?>><?cs var:field.label ?></option><?cs 
     111      /each ?>   
     112     </select> 
     113     <input type="submit" name="add" value="+" /> 
     114    </td> 
     115   </tr></tbody> 
     116  </table> 
     117 </fieldset> 
     118 <p class="option"> 
     119  <label for="group">Group results by</label> 
     120  <select name="group" id="group"> 
     121   <option></option><?cs 
     122   each:field = query.fields ?><?cs 
     123    if:field.type == 'select' || field.type == 'radio' || 
     124       name(field) == 'owner' ?> 
     125     <option value="<?cs var:name(field) ?>"<?cs 
     126       if:name(field) == query.group ?> selected="selected"<?cs /if ?>><?cs 
     127       var:field.label ?></option><?cs 
     128    /if ?><?cs 
     129   /each ?> 
     130  </select> 
     131  <input type="checkbox" name="groupdesc" id="groupdesc"<?cs 
     132    if:query.groupdesc ?> checked="checked"<?cs /if ?> /> 
     133  <label for="groupdesc">descending</label> 
     134  <script type="text/javascript"> 
     135    var group = document.getElementById("group"); 
     136    var updateGroupDesc = function() { 
     137      enableControl('groupdesc', group.selectedIndex > 0); 
     138    } 
     139    addEvent(window, 'load', updateGroupDesc); 
     140    addEvent(group, 'change', updateGroupDesc); 
     141  </script> 
     142 </p> 
     143 <p class="option"> 
     144  <input type="checkbox" name="verbose" id="verbose"<?cs 
     145    if:query.verbose ?> checked="checked"<?cs /if ?> /> 
     146  <label for="verbose">Show full description under each result</label> 
     147 </p> 
     148 <div class="buttons"> 
    19149  <input type="hidden" name="order" value="<?cs var:query.order ?>" /> 
    20150  <?cs if:query.desc ?><input type="hidden" name="desc" value="1" /><?cs /if ?> 
    21   <legend>Ticket Properties</legend> 
    22   <div> 
    23    <label for="component" accesskey="c">Component:</label> 
    24    <?cs call:hdf_select_multiple(query.options.component, 'component', 4) ?> 
    25   </div> 
    26   <div> 
    27    <label for="version" accesskey="v">Version:</label> 
    28    <?cs call:hdf_select_multiple(query.options.version, 'version', 4) ?> 
    29   </div> 
    30   <div> 
    31    <label for="severity" accesskey="e">Severity:</label> 
    32    <?cs call:hdf_select_multiple(query.options.severity, 'severity', 4) ?> 
    33   </div> 
    34   <br /> 
    35   <div> 
    36    <label for="keywords">Keywords contain:</label> 
    37    <input type="text" name="keywords" id="keywords" accesskey="k" value="<?cs 
    38      var:query.constraints.keywords.0 ?>" /> 
    39   </div> 
    40   <br /> 
    41   <div> 
    42    <label for="status" accesskey="s">Status:</label> 
    43    <?cs call:hdf_select_multiple(query.options.status, 'status', 4) ?> 
    44   </div> 
    45   <div> 
    46    <label for="resolution" accesskey="r">Resolution:</label> 
    47    <?cs call:hdf_select_multiple(query.options.resolution, 'resolution', 4) ?> 
    48    <script type="text/javascript"> 
    49      var status = document.getElementById("status"); 
    50      var updateResolution = function() { 
    51        enableControl('resolution', status.selectedIndex == -1 || 
    52                                    status.selectedIndex >= 3); 
    53      }; 
    54      addEvent(window, 'load', updateResolution); 
    55      addEvent(status, 'change', updateResolution); 
    56    </script> 
    57   </div> 
    58   <div> 
    59    <label for="milestone" accesskey="m">Milestone:</label> 
    60    <?cs call:hdf_select_multiple(query.options.milestone, 'milestone', 4) ?> 
    61   </div> 
    62   <div> 
    63    <label for="priority" accesskey="p">Priority:</label> 
    64    <?cs call:hdf_select_multiple(query.options.priority, 'priority', 4) ?> 
    65   </div> 
    66   <br /> 
    67   <div> 
    68    <label for="owner">Assigned to:</label> 
    69    <input type="text" name="owner" id="owner" accesskey="a" value="<?cs 
    70      var:query.constraints.owner.0 ?>" /> 
    71   </div> 
    72   <div> 
    73    <label for="reporter">Reported by:</label> 
    74    <input type="text" name="reporter" id="reporter" accesskey="b" value="<?cs 
    75      var:query.constraints.reporter.0 ?>" /> 
    76   </div> 
    77   <div> 
    78    <label for="cc">Cc contains:</label> 
    79    <input type="text" name="cc" id="cc" value="<?cs 
    80      var:query.constraints.cc.0 ?>" /> 
    81   </div> 
    82   <?cs if:len(query.custom) ?><?cs set:idx = 0 ?><?cs 
    83    each:custom = query.custom ?><?cs 
    84     if:custom.type == 'select' || custom.type == 'radio' ?> 
    85      <?cs if:idx == 0 ?><br /><?cs /if ?><div> 
    86       <label for="<?cs var:custom.name ?>"><?cs var:custom.label ?></label> 
    87       <?cs call:hdf_select_multiple(custom.options, custom.name, 4) ?> 
    88      </div><?cs set:idx = idx + 1 ?><?cs 
    89     /if ?><?cs 
    90    /each ?><?cs set:idx = 0 ?><?cs 
    91    each:custom = query.custom ?><?cs 
    92     if:custom.type == 'text' ?> 
    93      <?cs if:idx == 0 ?><br /><?cs /if ?><div> 
    94       <label for="<?cs var:custom.name ?>"><?cs var:custom.label ?></label> 
    95       <input type="text" name="<?cs var:custom.name ?>" id="<?cs 
    96         var:custom.name ?>" value="<?cs var:query[custom.name] ?>" /> 
    97      </div><?cs set:idx = idx + 1 ?><?cs 
    98     /if ?><?cs 
    99    /each ?><?cs 
     151  <input type="submit" name="update" value="Update" /> 
     152 </div> 
     153 <hr /> 
     154</form> 
     155<script type="text/javascript" src="<?cs 
     156  var:htdocs_location ?>js/query.js"></script> 
     157<script type="text/javascript"><?cs set:idx = 0 ?> 
     158 var properties={<?cs each:field = query.fields ?><?cs 
     159  var:name(field) ?>:{type:"<?cs var:field.type ?>",label:"<?cs 
     160  var:field.label ?>",options:[<?cs 
     161   each:option = field.options ?>"<?cs var:option ?>"<?cs 
     162    if:name(option) < len(field.options) -1 ?>,<?cs /if ?><?cs 
     163   /each ?>]}<?cs 
     164  set:idx = idx + 1 ?><?cs if:idx < len(query.fields) ?>,<?cs /if ?><?cs 
     165 /each ?>};<?cs set:idx = 0 ?> 
     166 var modes = {<?cs each:type = query.modes ?><?cs var:name(type) ?>:[<?cs 
     167  each:mode = type ?>{text:"<?cs var:mode.name ?>",value:"<?cs var:mode.value ?>"}<?cs 
     168   if:name(mode) < len(type) -1 ?>,<?cs /if ?><?cs 
     169  /each ?>]<?cs 
     170  set:idx = idx + 1 ?><?cs if:idx < len(query.modes) ?>,<?cs /if ?><?cs 
     171 /each ?>}; 
     172 initializeFilters(); 
     173</script> 
     174 
     175<?cs def:thead() ?> 
     176 <thead><tr><?cs each:header = query.headers ?><?cs 
     177  if:name(header) == 0 ?><?cs 
     178   call:sortable_th(query.order, query.desc, 'id', 'ticket', query.href) ?><?cs 
     179  else ?><?cs 
     180   call:sortable_th(query.order, query.desc, header.name, header.name, query.href) ?><?cs 
    100181  /if ?> 
    101   <br /> 
    102  </fieldset> 
    103  <div class="buttons"> 
    104   <input type="submit" name="search" value="Search"> 
    105  </div> 
    106 </form> 
    107  
    108 <?cs else ?> 
    109  
    110 <?cs if:len(query.results) ?> 
    111  <p><?cs var:len(query.results) ?> ticket<?cs if:len(query.results) != 1 ?>s<?cs 
    112  /if ?> matched this query.</p> 
    113  <table id="tktlist" class="listing"> 
    114   <thead><tr><?cs each:header = query.headers ?><?cs 
    115    if:name(header) == 0 ?><th class="ticket<?cs 
    116     if:header.order ?> <?cs var:header.order ?><?cs /if ?>"> 
    117     <a href="<?cs var:header.href ?>" title="Sort by ID (<?cs 
    118       if:header.order == 'asc' ?>descending<?cs 
    119       else ?>ascending<?cs /if ?>)">Ticket</a> 
    120     </th><?cs 
    121    else ?> 
    122     <th<?cs if:header.order ?> class="<?cs var:header.order ?>"<?cs /if ?>> 
    123      <a href="<?cs var:header.href ?>" title="Sort by <?cs 
    124        var:header.name ?> (<?cs if:header.order == 'asc' ?>descending<?cs 
    125        else ?>ascending<?cs /if ?>)"><?cs var:header.name ?></a> 
    126     </th><?cs 
    127    /if ?> 
    128   <?cs /each ?></tr></thead> 
    129   <tbody> 
    130    <?cs each:result = query.results ?><tr class="<?cs 
    131      if:name(result) % 2 ?>odd<?cs else ?>even<?cs /if ?> <?cs 
    132      var:result.priority ?>"> 
    133     <?cs each:header = query.headers ?><?cs 
    134      if:name(header) == 0 ?> 
    135       <td class="ticket"><a href="<?cs var:result.href ?>" title="View ticket"><?cs 
    136         var:result.id ?></a></td><?cs 
    137      else ?> 
    138       <td><?cs if:header.name == 'summary' ?> 
    139        <a href="<?cs var:result.href ?>" title="View ticket"><?cs 
    140          var:result[header.name] ?></a><?cs 
    141       else ?> 
    142        <?cs var:result[header.name] ?><?cs 
    143       /if ?> 
    144       </td><?cs 
    145      /if ?> 
    146     <?cs /each ?> 
    147    </tr><?cs /each ?> 
    148   </tbody> 
    149  </table> 
    150 <?cs else ?> 
    151  <p>No tickets matched this query.</p> 
    152 <?cs /if ?> 
    153  
    154 <?cs /if ?> 
    155  
    156  <div id="help"> 
    157   <strong>Note:</strong> See <a href="<?cs var:$trac.href.wiki ?>/TracQuery">TracQuery</a>  
    158   for help on using queries. 
    159  </div> 
     182 <?cs /each ?></tr></thead> 
     183<?cs /def ?> 
     184 
     185<?cs if:len(query.results) ?><?cs 
     186 if:!query.group ?> 
     187  <table class="listing tickets"> 
     188  <?cs call:thead() ?><tbody><?cs 
     189 /if ?><?cs 
     190 each:result = query.results ?><?cs 
     191  if:result[query.group] != prev_group ?> 
     192   <?cs if:prev_group ?></tbody></table><?cs /if ?> 
     193   <h2><?cs 
     194    each:field = query.fields ?><?cs 
     195     if:name(field) == query.group ?><?cs 
     196      var:field.label ?><?cs 
     197     /if ?><?cs 
     198    /each ?>: <?cs var:result[query.group] ?></h2> 
     199   <table class="listing tickets"> 
     200   <?cs call:thead() ?><tbody><?cs 
     201  /if ?> 
     202  <tr class="<?cs 
     203   if:name(result) % 2 ?>odd<?cs else ?>even<?cs /if ?> prio<?cs 
     204   var:result.priority_value ?><?cs 
     205   if:result.added ?> added<?cs /if ?><?cs 
     206   if:result.changed ?> changed<?cs /if ?><?cs 
     207   if:result.removed ?> removed<?cs /if ?>"><?cs 
     208  each:header = query.headers ?><?cs 
     209   if:name(header) == 0 ?><td class="id"><a href="<?cs 
     210    var:result.href ?>" title="View ticket"><?cs var:result.id ?></a></td><?cs 
     211   else ?><td class="<?cs var:header.name ?>"><?cs 
     212     if:header.name == 'summary' ?><a href="<?cs 
     213      var:result.href ?>" title="View ticket"><?cs 
     214      var:result.summary ?></a><?cs 
     215     else ?><span><?cs var:result[header.name] ?></span><?cs 
     216     /if ?></td><?cs 
     217   /if ?><?cs 
     218  /each ?> 
     219  <?cs if:query.verbose ?> 
     220   </tr><tr class="fullrow"><td colspan="<?cs var:len(query.headers) ?>"> 
     221    <p class="meta">Reported by <strong><?cs var:result.reporter ?></strong>, 
     222    <?cs var:result.time ?><?cs if:result.description ?>:<?cs /if ?></p> 
     223    <?cs if:result.description ?><p><?cs var:result.description ?></p><?cs /if ?> 
     224   </td> 
     225  <?cs /if ?><?cs set:prev_group = result[query.group] ?> 
     226 </tr><?cs /each ?> 
     227</tbody></table><?cs 
     228/if ?> 
     229 
     230<div id="help"> 
     231 <strong>Note:</strong> See <a href="<?cs var:$trac.href.wiki ?>/TracQuery">TracQuery</a>  
     232 for help on using queries. 
     233</div> 
    160234 
    161235</div> 
  • trac/vendor/current/templates/report.cs

    r2581 r3034  
    1 <?cs set:html.stylesheet = 'css/report.css' ?> 
    21<?cs include "header.cs" ?> 
    32<?cs include "macros.cs" ?> 
     
    54<div id="ctxtnav" class="nav"> 
    65 <h2>Report Navigation</h2> 
    7  <ul> 
    8   <?cs if report.edit_href || report.copy_href || report.delete_href ?> 
    9   <li><b>This report:</b> 
    10    <ul> 
    11     <?cs if report.edit_href 
    12       ?><li <?cs if !report.delete_href && !report.copy_href ?>class="last"<?cs /if 
    13         ?>><a href="<?cs var:report.edit_href ?>">Edit</a></li><?cs 
    14      /if ?><?cs 
    15      if report.copy_href ?><li <?cs if !report.delete_href ?>class="last"<?cs /if 
    16         ?>><a href="<?cs var:report.copy_href ?>">Copy</a></li><?cs /if ?><?cs 
    17     if report.delete_href ?><li class="last"><a href="<?cs var:report.delete_href ?>">Delete</a></li><?cs /if ?></ul></li> 
    18   <?cs /if ?> 
    19   <?cs if:report.create_href ?> 
    20    <li><a href="<?cs var:report.create_href ?>">New Report</a></li> 
    21   <?cs /if ?> 
    22   <li class="last"><a href="<?cs var:$trac.href.query ?>">Custom Query</a></li> 
    23  </ul> 
     6 <ul><li class="first"><?cs 
     7   if:chrome.links.up.0.href ?><a href="<?cs 
     8    var:chrome.links.up.0.href ?>">Available Reports</a><?cs 
     9   else ?>Available Reports<?cs 
     10  /if ?></li><?cs 
     11  if:report.query_href ?><li class="last"><a href="<?cs 
     12   var:report.query_href ?>">Custom Query</a></li><?cs 
     13  /if ?></ul> 
    2414</div> 
    2515 
    2616<div id="content" class="report"> 
    2717 
    28 <?cs if report.message ?> 
    29  <div class="error"><?cs var report.message ?></div> 
    30 <?cs else ?> 
    3118 <?cs def:report_hdr(header) ?> 
    3219   <?cs if $header ?> 
     
    3724   <?cs if:header ?><h2><?cs var:header ?></h2><?cs /if ?> 
    3825   <?cs if $report.id == -1 ?> 
    39      <table id="reportlist" class="listing"> 
     26     <table class="listing reports"> 
    4027   <?cs else ?> 
    41      <table id="tktlist" class="listing"> 
     28     <table class="listing tickets"> 
    4229   <?cs /if ?> 
    4330    <thead> 
     
    9986   if:report.numrows && report.id != -1 ?><span class="numrows"> (<?cs 
    10087    var:report.numrows ?> matches)</span><?cs 
    101    /if ?></h1> 
    102   <?cs if:report.description ?><div id="description"><?cs 
     88   /if ?></h1><?cs 
     89  if:report.description ?><div id="description"><?cs 
    10390    var:report.description ?></div><?cs 
     91   /if ?><?cs 
     92   if:report.id != -1 ?><?cs 
     93    if:report.can_create || report.can_modify || report.can_delete ?> 
     94     <div class="buttons"><?cs 
     95      if:report.can_modify ?><form action="" method="get"><div> 
     96       <input type="hidden" name="action" value="edit" /> 
     97       <input type="submit" value="Edit report" accesskey="e" /> 
     98      </div></form><?cs /if ?><?cs 
     99      if:report.can_create ?><form action="" method="get"><div> 
     100       <input type="hidden" name="action" value="copy" /> 
     101       <input type="submit" value="Copy report" /> 
     102      </div></form><?cs /if ?><?cs 
     103      if:report.can_delete ?><form action="" method="get"><div> 
     104       <input type="hidden" name="action" value="delete" /> 
     105       <input type="submit" value="Delete report" /> 
     106      </div></form><?cs /if ?> 
     107     </div><?cs 
     108    /if ?><?cs 
    104109   /if ?> 
    105110 
     
    139144       <?cs each cell = row ?> 
    140145         <?cs if cell.hidden || cell.hidehtml ?> 
    141          <?cs elif name(cell) == "ticket" ?> 
     146         <?cs elif name(cell) == "ticket" || name(cell) == "id" ?> 
    142147           <?cs call:report_cell('ticket', 
    143148                                 '<a title="View ticket" href="'+ 
     
    169174     <?cs /each ?> 
    170175    </tbody> 
    171    </table> 
    172  
    173    <?cs if $idx == #0 ?> 
    174     <div id="report-notfound">No matches found.</div> 
    175    <?cs /if ?> 
    176  
    177  <?cs elif report.mode == "delete" ?> 
     176   </table><?cs 
     177   if:report.id == -1 && report.can_create?><div class="buttons"> 
     178    <form action="" method="get"><div> 
     179     <input type="hidden" name="action" value="new" /> 
     180     <input type="submit" value="Create new report" /> 
     181    </div></form></div><?cs 
     182   /if ?><?cs 
     183   if report.message ?> 
     184    <div class="system-message"><?cs var report.message ?></div><?cs 
     185   elif:idx == #0 ?> 
     186    <div id="report-notfound">No matches found.</div><?cs 
     187   /if ?> 
     188 
     189 <?cs elif:report.mode == "delete" ?> 
    178190 
    179191  <h1><?cs var:title ?></h1> 
    180   <form action="<?cs var:cgi_location ?>" method="post"> 
    181    <input type="hidden" name="mode" value="report" /> 
     192  <form action="<?cs var:report.href ?>" method="post"> 
    182193   <input type="hidden" name="id" value="<?cs var:report.id ?>" /> 
    183    <input type="hidden" name="action" value="confirm_delete" /> 
     194   <input type="hidden" name="action" value="delete" /> 
    184195   <p><strong>Are you sure you want to delete this report?</strong></p> 
    185196   <div class="buttons"> 
    186197    <input type="submit" name="cancel" value="Cancel" /> 
    187     <input type="submit" value="Delete Report" /> 
     198    <input type="submit" value="Delete report" /> 
    188199   </div> 
    189200  </form> 
    190201  
    191  <?cs elif report.mode == "editor" ?> 
     202 <?cs elif:report.mode == "edit" ?> 
    192203  
    193204   <h1><?cs var:title ?></h1> 
    194     
    195    <form action="<?cs var:cgi_location ?>" method="post"> 
     205   <form action="<?cs var:report.href ?>" method="post"> 
    196206    <div> 
    197      <input type="hidden" name="mode" value="report" /> 
    198      <input type="hidden" name="id" value="<?cs var:report.id ?>" /> 
    199207     <input type="hidden" name="action" value="<?cs var:report.action ?>" /> 
    200208     <div class="field"> 
     
    208216         var:$trac.href.wiki ?>/WikiFormatting">WikiFormatting</a> here) 
    209217      </label><br /> 
    210       <textarea id="description" name="description" cols="85" rows="5"><?cs 
     218      <textarea id="description" name="description" class="wikitext" rows="10" cols="78"><?cs 
    211219        var:report.description ?></textarea> 
    212       <?cs call:wiki_toolbar('description') ?> 
    213220     </div> 
    214221     <div class="field"> 
     
    219226     </div> 
    220227     <div class="buttons"> 
    221       <input type="submit" value="Save" /> 
     228      <input type="submit" value="Save report" /> 
    222229      <input type="submit" name="cancel" value="Cancel" /> 
    223230     </div> 
    224231    </div> 
     232    <script type="text/javascript" src="<?cs 
     233      var:htdocs_location ?>js/wikitoolbar.js"></script> 
    225234   </form> 
    226235 <?cs /if?> 
     
    232241 </div> 
    233242  
    234 <?cs /if ?><?cs #report.message ?> 
    235  
    236243</div> 
    237244<?cs include "footer.cs" ?> 
  • trac/vendor/current/templates/report_rss.cs

    r2581 r3034  
    11<?xml version="1.0"?> 
    2 <!-- RSS generated by Trac v<?cs var:$trac.version ?> on <?cs var:$trac.time ?> --> 
    32<rss version="2.0"> 
    4    <?cs set base_url = $HTTP.Protocol+'://'+$HTTP.Host ?> 
    5    <?cs if $HTTP.Port ?> 
    6      <?cs set base_url = $base_url + ':' + $HTTP.Port ?> 
    7    <?cs /if ?> 
    8     <channel> 
    9       <?cs if $project.name.encoded ?> 
    10         <title><?cs var:$project.name.encoded ?>: <?cs var:$report.title ?></title> 
    11  
    12       <?cs else ?> 
    13         <title><?cs var:$title ?></title> 
    14       <?cs /if ?> 
    15       <link><?cs var:$base_url ?><?cs var:$trac.href.report ?>/<?cs var:$report.id ?></link> 
    16       <description>Trac Report - <?cs var:$report.title ?></description> 
    17       <language>en-us</language> 
    18       <generator>Trac v<?cs var:$trac.version ?></generator> 
    19       <?cs each:row = $report.items ?> 
    20         <?cs set title = '' ?> 
    21         <?cs set descr = '' ?> 
    22         <?cs set author = '' ?> 
    23         <?cs set pubdate = '' ?> 
    24         <?cs each:item = $row ?> 
    25           <?cs if name(item) == 'ticket' ?> 
    26             <?cs set link = $base_url+$item.ticket_href ?> 
    27             <?cs set id = $item ?> 
    28           <?cs elif name(item) == 'summary' ?> 
    29             <?cs set title = $item ?> 
    30           <?cs elif name(item) == 'description' ?> 
    31             <?cs set descr = $item ?> 
    32           <?cs elif name(item) == 'reporter' ?> 
    33             <?cs set author = $item.rss ?> 
    34           <?cs elif name(item) == 'time' || name(item) == 'changetime'  
    35                     || name(item) == 'created' || name(item) == 'modified' ?> 
    36             <?cs set pubdate = $item.gmt ?> 
    37           <?cs /if ?> 
    38        <?cs /each ?> 
    39        <item> 
    40          <?cs if:$author ?> 
    41           <author><?cs var:$author ?></author> 
    42          <?cs /if ?> 
    43          <pubDate><?cs var:$pubdate ?></pubDate> 
    44          <title><?cs var:'#'+$id+': '+$title ?></title>    
    45          <link><?cs var:$link ?></link> 
    46          <description><?cs var:$descr ?></description> 
    47          <category>Report</category> 
    48        </item> 
    49       <?cs /each ?> 
    50     </channel> 
     3 <channel><?cs 
     4 if:project.name_encoded ?> 
     5  <title><?cs var:project.name_encoded ?>: <?cs var:report.title ?></title><?cs 
     6 else ?> 
     7  <title><?cs var:title ?></title><?cs 
     8 /if ?> 
     9 <link><?cs var:base_host ?><?cs var:trac.href.report ?>/<?cs var:report.id ?></link> 
     10 <description>Trac Report - <?cs var:report.title ?></description> 
     11 <language>en-us</language> 
     12 <generator>Trac v<?cs var:trac.version ?></generator><?cs 
     13 each:row = report.items ?><?cs 
     14  set title = '' ?><?cs 
     15  set descr = '' ?><?cs 
     16  set author = '' ?><?cs 
     17  set pubdate = '' ?><?cs 
     18  each:item = row ?><?cs 
     19   if name(item) == 'ticket' ?><?cs 
     20    set:link = base_host + item.ticket_href ?><?cs 
     21    set:id = item ?><?cs 
     22   elif:name(item) == 'summary' ?><?cs 
     23    set:title = item ?><?cs 
     24   elif:name(item) == 'description' ?><?cs 
     25    set:descr = item.parsed ?><?cs 
     26   elif:name(item) == 'reporter' ?><?cs 
     27    set:author = item.rss ?><?cs 
     28   elif:name(item) == 'time' || name(item) == 'changetime' 
     29     || name(item) == 'created' || name(item) == 'modified' ?><?cs 
     30    set pubdate = item.gmt ?><?cs 
     31   /if ?><?cs 
     32  /each ?> 
     33  <item> 
     34   <?cs if:author ?><author><?cs var:author ?></author><?cs /if ?> 
     35   <pubDate><?cs var:pubdate ?></pubDate> 
     36   <title><?cs var:'#' + id + ': ' + title ?></title>    
     37   <link><?cs var:link ?></link> 
     38   <description><?cs var:descr ?></description> 
     39   <category>Report</category> 
     40  </item><?cs 
     41 /each ?></channel> 
    5142</rss> 
  • trac/vendor/current/templates/roadmap.cs

    r2581 r3034  
    1 <?cs set:html.stylesheet = 'css/roadmap.css' ?> 
    21<?cs include "header.cs"?> 
    32<?cs include "macros.cs"?> 
    43 
    5 <div id="ctxtnav" class="nav"> 
    6  <ul> 
    7   <?cs if:roadmap.href.newmilestone ?><li><a href="<?cs 
    8     var:roadmap.href.newmilestone ?>">Add New Milestone</a></li><?cs /if ?> 
    9   <li class="last"><a href="<?cs var:roadmap.href.list ?>"><?cs 
    10     if:roadmap.showall ?>Show All Milestones<?cs 
    11     else ?>Show Upcoming Milestones<?cs /if ?></a></li> 
    12  </ul> 
    13 </div> 
     4<div id="ctxtnav" class="nav"></div> 
    145 
    156<div id="content" class="roadmap"> 
    167 <h1>Roadmap</h1> 
     8 
     9 <form id="prefs" method="get" action=""> 
     10  <div> 
     11   <input type="checkbox" id="showall" name="show" value="all"<?cs 
     12    if:roadmap.showall ?> checked="checked"<?cs /if ?> /> 
     13   <label for="showall">Show already completed milestones</label> 
     14  </div> 
     15  <div class="buttons"> 
     16   <input type="submit" value="Update" /> 
     17  </div> 
     18 </form> 
    1719 
    1820 <ul class="milestones"><?cs each:milestone = roadmap.milestones ?> 
     
    2123    <h2><a href="<?cs var:milestone.href ?>">Milestone: <em><?cs 
    2224      var:milestone.name ?></em></a></h2> 
    23     <p class="date"><?cs if:milestone.date ?> 
    24      <?cs var:milestone.date ?><?cs else ?>No date set<?cs /if ?> 
    25     </p> 
    26     <?cs with:stats = milestone.stats ?> 
    27      <?cs if:#stats.total_tickets > #0 ?> 
     25    <p class="date"<?cs 
     26     if:milestone.completed_date ?> title="<?cs var:milestone.completed_date ?>"> 
     27      Completed <?cs var:milestone.completed_delta ?> ago<?cs 
     28     elif:milestone.due_date ?> title="<?cs var:milestone.due_date ?>"><?cs 
     29      if:milestone.late ?> 
     30       <strong><?cs var:milestone.due_delta ?> late</strong><?cs 
     31      else ?> 
     32       Due in <?cs var:milestone.due_delta ?><?cs 
     33      /if ?><?cs 
     34     else ?>> 
     35      No date set<?cs 
     36     /if ?> 
     37    </p><?cs 
     38    with:stats = milestone.stats ?><?cs 
     39     if:#stats.total_tickets > #0 ?> 
    2840      <div class="progress"> 
    29        <div style="width: <?cs var:#stats.percent_complete ?>%"></div> 
     41       <a class="closed" href="<?cs 
     42         var:milestone.queries.closed_tickets ?>" style="width: <?cs 
     43         var:#stats.percent_closed ?>%" title="<?cs 
     44         var:#stats.closed_tickets ?> of <?cs 
     45         var:#stats.total_tickets ?> ticket<?cs 
     46         if:#stats.total_tickets != #1 ?>s<?cs /if ?> closed"></a> 
     47       <a class="open" href="<?cs 
     48         var:milestone.queries.active_tickets ?>" style="width: <?cs 
     49         var:#stats.percent_active - 1 ?>%" title="<?cs 
     50         var:#stats.active_tickets ?> of <?cs 
     51         var:#stats.total_tickets ?> ticket<?cs 
     52         if:#stats.total_tickets != #1 ?>s<?cs /if ?> active"></a> 
    3053      </div> 
    31       <p class="percent"><?cs var:#stats.percent_complete ?>%</p> 
     54      <p class="percent"><?cs var:#stats.percent_closed ?>%</p> 
    3255      <dl> 
     56       <dt>Closed tickets:</dt> 
     57       <dd><a href="<?cs var:milestone.queries.closed_tickets ?>"><?cs 
     58         var:stats.closed_tickets ?></a></dd> 
    3359       <dt>Active tickets:</dt> 
    3460       <dd><a href="<?cs var:milestone.queries.active_tickets ?>"><?cs 
    3561         var:stats.active_tickets ?></a></dd> 
    36        <dt>Closed tickets:</dt> 
    37        <dd><a href="<?cs var:milestone.queries.closed_tickets ?>"><?cs 
    38          var:stats.closed_tickets ?></a></dd> 
    39       </dl> 
    40      <?cs /if ?> 
    41     <?cs /with ?> 
     62      </dl><?cs 
     63     /if ?><?cs 
     64    /with ?> 
    4265   </div> 
    43    <div class="descr"><?cs var:milestone.descr ?></div> 
    44   </li> 
    45  <?cs /each ?></ul> 
     66   <div class="description"><?cs var:milestone.description ?></div> 
     67  </li><?cs 
     68 /each ?></ul><?cs 
     69 if:trac.acl.MILESTONE_CREATE ?> 
     70  <div class="buttons"> 
     71   <form method="get" action="<?cs var:trac.href.milestone ?>"><div> 
     72    <input type="hidden" name="action" value="new" /> 
     73    <input type="submit" value="Add new milestone" /> 
     74   </div></form> 
     75  </div><?cs 
     76 /if ?> 
    4677 
    4778 <div id="help"> 
  • trac/vendor/current/templates/search.cs

    r2581 r3034  
    1 <?cs set:html.stylesheet = 'css/search.css' ?> 
    2 <?cs include "header.cs"?> 
     1<?cs include:"header.cs"?> 
    32<script type="text/javascript"> 
    43addEvent(window, 'load', function() { document.getElementById('q').focus()});  
    54</script> 
    6  
    7 <div id="ctxtnav" class="nav"> 
    8  <h2>Search Navigation</h2> 
    9  <ul><?cs 
    10   if:len(links.prev) ?> 
    11    <li class="first<?cs if:!len(links.next) ?> last<?cs /if ?>"> 
    12     <a href="<?cs var:links.prev.0.href ?>" title="<?cs 
    13       var:links.prev.0.title ?>">Previous Page</a> 
    14    </li><?cs 
     5<div id="ctxtnav" class="nav"><?cs 
     6 with:links = chrome.links ?><?cs 
     7  if:len(links.prev) || len(links.next) ?><ul><?cs 
     8   if:len(links.prev) ?> 
     9    <li class="first<?cs if:!len(links.up) && !len(links.next) ?> last<?cs /if ?>"> 
     10     &larr; <a href="<?cs var:links.prev.0.href ?>"><?cs 
     11       var:links.prev.0.title ?></a> 
     12    </li><?cs 
     13   /if ?><?cs 
     14   if:len(links.next) ?> 
     15    <li class="<?cs if:!len(links.prev) && !len(links.up) ?>first <?cs /if ?>last"> 
     16     <a href="<?cs var:links.next.0.href ?>"><?cs 
     17       var:links.next.0.title ?></a> &rarr; 
     18    </li><?cs 
     19   /if ?></ul><?cs 
    1520  /if ?><?cs 
    16   if:len(links.next) ?> 
    17    <li class="<?cs if:len(links.prev) ?>first <?cs /if ?>last"> 
    18     <a href="<?cs var:links.next.0.href ?>" title="<?cs 
    19       var:links.next.0.title ?>">Next Page</a> 
    20    </li><?cs 
    21   /if ?> 
    22  </ul> 
     21 /with ?> 
    2322</div> 
    2423 
     
    3231 </p> 
    3332 <p><?cs 
    34   if:trac.acl.WIKI_VIEW ?> 
    35    <input type="checkbox" id="wiki" name="wiki" <?cs 
    36      if:search.wiki ?>checked="checked"<?cs /if ?> /> 
    37    <label for="wiki">Wiki</label><?cs 
    38   /if ?><?cs 
    39   if:trac.acl.TICKET_VIEW ?> 
    40    <input type="checkbox" id="ticket" name="ticket" <?cs 
    41      if:search.ticket ?>checked="checked"<?cs /if ?> /> 
    42    <label for="ticket">Tickets</label><?cs 
    43   /if ?><?cs 
    44   if:trac.acl.CHANGESET_VIEW ?> 
    45    <input type="checkbox" id="changeset" name="changeset" <?cs 
    46      if:search.changeset ?>checked="checked"<?cs /if ?> /> 
    47    <label for="changeset">Changesets</label><?cs 
    48   /if ?> 
     33  each filter=search.filters ?> 
     34   <input type="checkbox" id="<?cs var:filter.name?>"  
     35          name="<?cs var:filter.name?>" <?cs 
     36     if:filter.active ?>checked="checked"<?cs /if ?> /> 
     37   <label for="<?cs var:filter.name ?>"><?cs var:filter.label?></label><?cs 
     38  /each ?> 
    4939 </p> 
    5040</form> 
    51  
    52 <?cs def result(title, keywords, body, link) ?> 
    53  <dt><a href="<?cs var:link ?>"><?cs var:title ?></a></dt> 
    54  <dd><?cs var:body ?></dd> 
     41<?cs if:len(search.result) ?> 
     42 <hr /> 
     43 <h2>Search results <?cs 
     44  if:search.n_pages > 1 ?>(<?cs 
     45   var:(search.page-1) * search.page_size + 1 ?> - <?cs 
     46   var:(search.page-1) * search.page_size + len(search.result) ?>  
     47   of <?cs var:search.n_hits?>)<?cs 
     48  /if ?></h2> 
     49 <div id="searchable"> 
     50  <dl id="results"><?cs 
     51   each item=search.result ?> 
     52 <dt><a href="<?cs var:item.href ?>"><?cs var:item.title ?></a></dt> 
     53 <dd><?cs var:item.excerpt ?></dd> 
    5554 <dd> 
    5655  <span class="author">By <?cs var:item.author ?></span> &mdash; 
    57   <span class="date"><?cs var:item.datetime ?></span><?cs 
     56  <span class="date"><?cs var:item.date ?></span><?cs 
    5857  if:item.keywords ?> &mdash 
    5958   <span class="keywords">Keywords: <em><?cs var:item.keywords ?></em></span><?cs 
    6059  /if ?> 
    61  </dd> 
    62 <?cs /def ?> 
    63  
    64 <?cs if:len(search.result) ?> 
    65  <hr /> 
    66  <h2>Search results <?cs 
    67   if:len(links.prev) || len(links.next) ?>(<?cs 
    68    var:search.result_page * search.results_per_page + 1 ?> - <?cs 
    69    var:search.result_page * search.results_per_page + len(search.result) ?>)<?cs 
    70   /if ?></h2> 
    71  <div id="searchable"> 
    72   <dl id="results"><?cs 
    73    each item=search.result ?><?cs 
    74     if:item.type == 1 ?><?cs 
    75      call:result('[' + item.data + ']: ' + item.shortmsg, item.keywords, 
    76                  item.message, item.changeset_href) ?><?cs 
    77     elif:item.type == 2 ?><?cs 
    78      call:result('#' + item.data + ': ' + item.title, item.keywords, 
    79                  item.message, item.ticket_href) ?><?cs 
    80     elif:item.type == 3 ?><?cs 
    81      call:result(item.data + ': ' + item.shortmsg, item.keywords, 
    82                  item.message, item.wiki_href) ?><?cs 
    83     /if ?><?cs 
     60 </dd><?cs 
    8461   /each ?> 
    8562  </dl> 
    8663  <hr /> 
    87  </div> 
    88  <?cs if:len(links.prev) || len(links.next) ?> 
    89   <div id="paging" class="nav"> 
    90    <ul><?cs 
    91     if:len(links.prev) ?> 
    92      <li class="first<?cs if:!len(links.next) ?> last<?cs /if ?>"> 
    93       <a href="<?cs var:links.prev.0.href ?>" title="<?cs 
    94         var:links.prev.0.title ?>">Previous Page</a> 
    95      </li><?cs 
    96     /if ?><?cs 
    97     if:len(links.next) ?> 
    98      <li class="<?cs if:len(links.prev) ?>first <?cs /if ?>last"> 
    99       <a href="<?cs var:links.next.0.href ?>" title="<?cs 
    100         var:links.next.0.title ?>">Next Page</a> 
    101      </li><?cs 
    102     /if ?> 
    103    </ul> 
    104   </div> 
    105  <?cs /if ?> 
     64 </div><?cs  
     65 if search.n_pages > 1 ?> 
     66  <div id="paging"><?cs 
     67  if len(chrome.links.prev) ?> 
     68    <a href="<?cs var:chrome.links.prev.0.href ?>" title="<?cs 
     69       var:chrome.links.prev.0.title ?>">&larr;</a> <?cs 
     70  /if ?><?cs 
     71  loop:p = 1, search.n_pages ?><?cs 
     72    if p == search.page ?><?cs var:p ?><?cs 
     73    else ?><a href="<?cs var:search.page_href + "&amp;page=" + p?>"><?cs 
     74     var:p ?></a><?cs 
     75    /if ?> <?cs 
     76  /loop ?><?cs 
     77  if len(chrome.links.next) ?> 
     78    <a href="<?cs var:chrome.links.next.0.href ?>" title="<?cs 
     79       var:chrome.links.next.0.title ?>">&rarr;</a><?cs 
     80  /if ?> 
     81  </div><?cs 
     82 /if ?><?cs 
    10683 
    107 <?cs elif $search.q ?> 
    108  <div id="notfound">No matches found.</div> 
    109 <?cs /if ?> 
     84elif:search.q ?> 
     85 <div id="notfound">No matches found.</div><?cs 
     86/if ?> 
    11087 
    111  <div id="help"> 
    112   <strong>Note:</strong> See <a href="<?cs var:$trac.href.wiki ?>/TracSearch">TracSearch</a>  for help on searching. 
    113  </div> 
     88<div id="help"> 
     89 <strong>Note:</strong> See <a href="<?cs 
     90   var:trac.href.wiki ?>/TracSearch">TracSearch</a>  for help on searching. 
     91</div> 
    11492 
    11593</div> 
    116 <?cs include "footer.cs"?> 
     94<?cs include:"footer.cs"?> 
  • trac/vendor/current/templates/settings.cs

    r3002 r3034  
    22<?cs include "macros.cs"?> 
    33 
    4 <div id="contextnav" class="nav"></div> 
     4<div id="ctxtnav" class="nav"></div> 
    55 
    66<div id="content" class="settings"> 
     
    1414 stored in a browser cookie. The cookie lets Trac restore your settings  
    1515 </p> 
    16  <form method="get" action="<?cs var:trac.href.settings ?>"> 
     16 <form method="post" action=""> 
    1717 <div> 
    1818  <h3>Personal Information</h3> 
     
    2121   <label for="name">Name:</label> 
    2222   <input type="text" id="name" name="name" class="textwidget" size="30" 
    23           value="<?cs var:trac.session.var.name ?>" /> 
     23          value="<?cs var:settings.name ?>" /> 
    2424  </div> 
    2525  <div> 
    2626   <label for="email">Email:</label> 
    2727   <input type="text" id="email" name="email" class="textwidget" size="30" 
    28           value="<?cs var:trac.session.var.email ?>" /> 
    29   </div> 
    30  
    31   <h3>Session</h3> 
    32   <div> 
    33    <label for="newsid">Session Key:</label> 
    34    <input type="text" id="newsid" name="newsid" class="textwidget" size="30" 
    35           value="<?cs var:trac.session.id ?>" /> 
    36    <p> 
    37    The session key is used to identify stored  custom settings and session 
    38    data on the server. Automatically generated by default, you may change it 
    39   to something easier to remember at any time if you wish to use your 
    40   settings in a different web browser. 
    41    </p> 
    42   </div> 
    43  
     28          value="<?cs var:settings.email ?>" /> 
     29  </div><?cs 
     30  if:settings.session_id ?> 
     31   <h3>Session</h3> 
     32   <div> 
     33    <label for="newsid">Session Key:</label> 
     34    <input type="text" id="newsid" name="newsid" class="textwidget" size="30" 
     35           value="<?cs var:settings.session_id ?>" /> 
     36    <p>The session key is used to identify stored  custom settings and session 
     37    data on the server. Automatically generated by default, you may change it 
     38    to something easier to remember at any time if you wish to use your settings 
     39    in a different web browser.</p> 
     40   </div><?cs 
     41  /if ?> 
    4442  <div> 
    4543   <br /> 
    46    <input type="submit" value="Save Changes" /> 
     44   <input type="submit" value="Submit changes" /> 
    4745  </div > 
    4846 </div> 
    49  </form> 
    50  
    51 <hr /> 
    52  
    53 <h2>Load Session</h2> 
    54 <p> 
    55 You may load a previously created session by entering the corresponding 
    56 session key below and clicking 'Recover'. This lets you share settings between 
    57 multiple computers and/or web browsers. 
    58 </p> 
    59  <form method="get" action="<?cs var:trac.href.settings ?>"> 
     47</form><?cs 
     48if:settings.session_id ?> 
     49 <hr /> 
     50 <h2>Load Session</h2> 
     51 <p>You may load a previously created session by entering the corresponding 
     52 session key below and clicking 'Recover'. This lets you share settings between 
     53 multiple computers and/or web browsers.</p> 
     54 <form method="post" action=""> 
    6055  <div> 
    6156   <input type="hidden" name="action" value="load" /> 
     
    6560   <input type="submit" value="Recover" /> 
    6661  </div> 
    67  </form> 
     62 </form><?cs 
     63/if ?> 
    6864 
    6965</div> 
  • trac/vendor/current/templates/ticket.cs

    r2997 r3034  
    1 <?cs set:html.stylesheet = 'css/ticket.css' ?> 
    21<?cs include "header.cs" ?> 
    32<?cs include "macros.cs" ?> 
    43 
    54<div id="ctxtnav" class="nav"> 
    6  <h2>Ticket Navigation</h2> 
    7  <ul><?cs 
    8   if:len(links.prev) ?> 
    9    <li class="first<?cs if:!len(links.next) ?> last<?cs /if ?>"> 
    10     <a href="<?cs var:links.prev.0.href ?>" title="<?cs 
    11       var:links.prev.0.title ?>">Previous Ticket</a> 
    12    </li><?cs 
    13   /if ?><?cs 
    14   if:len(links.next) ?> 
    15    <li class="<?cs if:len(links.prev) ?>first <?cs /if ?>last"> 
    16     <a href="<?cs var:links.next.0.href ?>" title="<?cs 
    17       var:links.next.0.title ?>">Next Ticket</a> 
    18    </li><?cs 
     5 <h2>Ticket Navigation</h2><?cs 
     6 with:links = chrome.links ?><?cs 
     7  if:len(links.prev) || len(links.up) || len(links.next) ?><ul><?cs 
     8   if:len(links.prev) ?> 
     9    <li class="first<?cs if:!len(links.up) && !len(links.next) ?> last<?cs /if ?>"> 
     10     &larr; <a href="<?cs var:links.prev.0.href ?>" title="<?cs 
     11       var:links.prev.0.title ?>">Previous Ticket</a> 
     12    </li><?cs 
     13   /if ?><?cs 
     14   if:len(links.up) ?> 
     15    <li class="<?cs if:!len(links.prev) ?>first<?cs /if ?><?cs 
     16                    if:!len(links.next) ?> last<?cs /if ?>"> 
     17     <a href="<?cs var:links.up.0.href ?>" title="<?cs 
     18       var:links.up.0.title ?>">Back to Query</a> 
     19    </li><?cs 
     20   /if ?><?cs 
     21   if:len(links.next) ?> 
     22    <li class="<?cs if:!len(links.prev) && !len(links.up) ?>first <?cs /if ?>last"> 
     23     <a href="<?cs var:links.next.0.href ?>" title="<?cs 
     24       var:links.next.0.title ?>">Next Ticket</a> &rarr; 
     25    </li><?cs 
     26   /if ?></ul><?cs 
     27  /if ?><?cs 
     28 /with ?> 
     29</div> 
     30 
     31<div id="content" class="ticket"> 
     32 
     33 <h1>Ticket #<?cs var:ticket.id ?> <?cs 
     34 if:ticket.type ?>(<?cs var:ticket.type ?>)<?cs /if ?></h1> 
     35 
     36<div id="searchable"> 
     37<div id="ticket"> 
     38 <div class="date"> 
     39  <p title="<?cs var:ticket.opened ?>">Opened <?cs var:ticket.opened_delta ?> ago</p><?cs 
     40  if:ticket.lastmod ?> 
     41   <p title="<?cs var:ticket.lastmod ?>">Last modified <?cs var:ticket.lastmod_delta ?> ago</p> 
     42  <?cs /if ?> 
     43 </div> 
     44 <h2 class="summary"><?cs var:ticket.summary ?></h2> 
     45 <h3 class="status">Status: <strong><?cs var:ticket.status ?><?cs 
     46  if:ticket.resolution ?> (<?cs var:ticket.resolution ?>)<?cs 
     47  /if ?></strong></h3> 
     48 <table class="properties"> 
     49  <tr> 
     50   <th id="h_reporter">Reported by:</th> 
     51   <td headers="h_reporter"><?cs var:ticket.reporter ?></td> 
     52   <th id="h_owner">Assigned to:</th> 
     53   <td headers="h_owner"><?cs var:ticket.owner ?><?cs 
     54     if:ticket.status == 'assigned' ?> (accepted)<?cs /if ?></td> 
     55  </tr><tr><?cs 
     56  each:field = ticket.fields ?><?cs 
     57   if:!field.skip ?><?cs 
     58    set:num_fields = num_fields + 1 ?><?cs 
     59   /if ?><?cs 
     60  /each ?><?cs 
     61  set:idx = 0 ?><?cs 
     62  each:field = ticket.fields ?><?cs 
     63   if:!field.skip ?><?cs set:fullrow = field.type == 'textarea' ?><?cs 
     64    if:fullrow && idx % 2 ?><th></th><td></td></tr><tr><?cs /if ?> 
     65    <th id="h_<?cs var:name(field) ?>"><?cs var:field.label ?>:</th> 
     66    <td<?cs if:fullrow ?> colspan="3"<?cs /if ?> headers="h_<?cs 
     67      var:name(field) ?>"><?cs var:ticket[name(field)] ?></td><?cs  
     68    if:idx % 2 || fullrow ?></tr><tr><?cs  
     69    elif:idx == num_fields - 1 ?><th></th><td></td><?cs 
     70    /if ?><?cs set:idx = idx + #fullrow + 1 ?><?cs 
     71   /if ?><?cs 
     72  /each ?></tr> 
     73 </table> 
     74 <?cs if:ticket.description ?><div class="description"> 
     75  <?cs var:ticket.description.formatted ?> 
     76 </div><?cs /if ?> 
     77</div> 
     78 
     79<?cs if:ticket.attach_href || len(ticket.attachments) ?> 
     80<h2>Attachments</h2><?cs 
     81 if:len(ticket.attachments) ?><div id="attachments"> 
     82  <dl class="attachments"><?cs each:attachment = ticket.attachments ?> 
     83   <dt><a href="<?cs var:attachment.href ?>" title="View attachment"><?cs 
     84   var:attachment.filename ?></a> (<?cs var:attachment.size ?>) - added by <em><?cs 
     85   var:attachment.author ?></em> on <?cs 
     86   var:attachment.time ?>.</dt><?cs 
     87   if:attachment.description ?> 
     88    <dd><?cs var:attachment.description ?></dd><?cs 
     89   /if ?><?cs 
     90  /each ?></dl><?cs 
     91 /if ?><?cs 
     92 if:ticket.attach_href ?> 
     93  <form method="get" action="<?cs var:ticket.attach_href ?>"><div> 
     94   <input type="hidden" name="action" value="new" /> 
     95   <input type="submit" value="Attach File" /> 
     96  </div></form><?cs 
     97 /if ?><?cs if:len(ticket.attachments) ?></div><?cs /if ?> 
     98<?cs /if ?> 
     99 
     100<?cs if:len(ticket.changes) ?><h2>Change History</h2> 
     101<div id="changelog"><?cs 
     102 each:change = ticket.changes ?> 
     103  <h3 id="change_<?cs var:name(change) ?>" class="change"><?cs 
     104   var:change.date ?>: Modified by <?cs var:change.author ?></h3><?cs 
     105  if:len(change.fields) ?> 
     106   <ul class="changes"><?cs 
     107   each:field = change.fields ?> 
     108    <li><strong><?cs var:name(field) ?></strong> <?cs 
     109    if:name(field) == 'attachment' ?><em><?cs var:field.new ?></em> added<?cs 
     110    elif:field.old && field.new ?>changed from <em><?cs 
     111     var:field.old ?></em> to <em><?cs var:field.new ?></em><?cs 
     112    elif:!field.old && field.new ?>set to <em><?cs var:field.new ?></em><?cs 
     113    elif:field.old && !field.new ?>deleted<?cs 
     114    else ?>changed<?cs 
     115    /if ?>.</li> 
     116    <?cs 
     117   /each ?> 
     118   </ul><?cs 
    19119  /if ?> 
    20  </ul> 
    21 </div> 
    22  
    23 <div id="content" class="ticket"> 
    24  <div id="searchable"> 
    25  <?cs def:ticketprop(label, name, value, fullrow) ?> 
    26   <th id="h_<?cs var:name ?>"><?cs var:$label ?>:</th> 
    27   <td headers="h_<?cs var:name ?>"<?cs if:fullrow ?> colspan="3"<?cs /if ?>><?cs 
    28    if:$value ?><?cs var:$value ?><?cs else ?>&nbsp;<?cs 
    29    /if ?></td><?cs if numprops % #2 && !$last_prop || fullrow ?> 
    30  </tr><tr><?cs /if ?><?cs set numprops = $numprops + #1 - fullrow ?><?cs 
    31  /def ?> 
    32  
    33 <div id="ticket"> 
    34  <div class="date"><?cs var:ticket.opened ?></div> 
    35  <h1>Ticket #<?cs var:ticket.id ?> <?cs 
    36  if:ticket.status == 'closed' ?>(Closed: <?cs var:ticket.resolution ?>)<?cs 
    37  elif:ticket.status != 'new' ?>(<?cs var:ticket.status ?>)<?cs 
    38  /if ?></h1> 
    39  <h2><?cs var:ticket.summary ?></h2> 
    40  <hr /> 
    41  <table><tr><?cs 
    42   call:ticketprop("Priority", "priority", ticket.priority, 0) ?><?cs 
    43   call:ticketprop("Reporter", "reporter", ticket.reporter, 0) ?><?cs 
    44   call:ticketprop("Severity", "severity", ticket.severity, 0) ?><?cs 
    45   if ticket.status == "assigned"?><?cs 
    46    call:ticketprop("Assigned to", "assignee", ticket.owner + " (accepted)", 0) ?><?cs 
    47   else ?><?cs 
    48    call:ticketprop("Assigned to", "assignee", ticket.owner, 0) ?><?cs 
    49   /if ?><?cs 
    50   call:ticketprop("Component", "component", ticket.component, 0) ?><?cs 
    51   call:ticketprop("Status", "status", ticket.status, 0) ?><?cs 
    52   call:ticketprop("Version", "version", ticket.version, 0) ?><?cs 
    53   call:ticketprop("Resolution", "resolution", ticket.resolution, 0) ?><?cs 
    54   call:ticketprop("Milestone", "milestone", ticket.milestone, 0) ?><?cs 
    55   set:last_prop = #1 ?><?cs 
    56   call:ticketprop("Keywords", "keywords", ticket.keywords, 0) ?><?cs 
    57   set:last_prop = #0 ?> 
    58  </tr></table><?cs if ticket.custom.0.name ?> 
    59  <hr /> 
    60  <table><tr><?cs each:prop = ticket.custom ?><?cs 
    61    if:prop.type == "textarea" ?><?cs 
    62     call:ticketprop(prop.label, prop.name, prop.value, 1) ?><?cs 
    63    else ?><?cs 
    64     call:ticketprop(prop.label, prop.name, prop.value, 0) ?><?cs 
    65    /if?><?cs 
    66   /each ?> 
    67  </tr></table><?cs /if ?> 
    68  <hr /> 
    69  <h3>Description<?cs if:ticket.reporter ?> by <?cs 
    70    var:ticket.reporter ?><?cs /if ?>:</h3> 
    71  <div class="description"> 
    72   <?cs var:ticket.description.formatted ?> 
    73  </div> 
    74 </div> 
    75  
    76 <?cs if trac.acl.TICKET_MODIFY || ticket.attachments.0.name ?> 
    77 <h2>Attachments</h2><?cs 
    78  if ticket.attachments.0.name ?><div id="attachments"> 
    79   <ul class="attachments"><?cs each:a = ticket.attachments ?> 
    80    <li><a href="<?cs var:a.href ?>" title="View attachment"><?cs 
    81    var:a.name ?></a> (<?cs var:a.size ?>) - <?cs 
    82    if:a.descr ?><q><?cs var:a.descr ?></q>,<?cs 
    83    /if ?> added by <em><?cs 
    84    var:a.author ?></em> on <em><?cs 
    85    var:a.time ?></em>.</li><?cs 
    86   /each ?></ul><?cs 
    87  /if ?><?cs 
    88  if trac.acl.TICKET_MODIFY ?> 
    89   <form method="get" action="<?cs var:ticket.attach_href ?>"> 
    90    <div><input type="submit" value="Attach File" /></div> 
    91   </form><?cs 
    92  /if ?><?cs if ticket.attachments.0.name ?></div><?cs /if ?> 
    93 <?cs /if ?> 
    94  
    95 <?cs if ticket.changes.0.time ?><h2>Changelog</h2> 
    96 <div id="changelog"> 
    97  <?cs set:comment = "" ?> 
    98  <?cs set:curr_time = "" ?> 
    99  <?cs set:curr_author = "" ?> 
    100  <?cs each:change = ticket.changes ?><?cs 
    101   if $change.time != $curr_time || $change.author != $curr_author ?><?cs 
    102   if:name(change) > 0 ?></ul><?cs /if ?><?cs 
    103    if $comment != "" ?> 
    104     <div class="comment"><?cs var:$comment ?></div><?cs set:comment = "" ?><?cs 
    105    /if ?> 
    106    <?cs set:curr_time = $change.time ?> 
    107    <?cs set:curr_author = $change.author ?> 
    108    <h3 id="change_<?cs var:name(change) ?>" class="change"><?cs 
    109      var:change.date ?>: Modified by <?cs var:curr_author ?></h3> 
    110    <ul class="changes"><?cs 
    111   /if ?><?cs 
    112   if $change.field == "comment" ?><?cs 
    113    set:$comment = $change.new ?><?cs 
    114   elif $change.new == "" ?> 
    115    <li><strong><?cs var:change.field ?></strong> cleared</li><?cs 
    116   elif $change.field == "attachment" ?> 
    117    <li><strong>attachment</strong> added: <?cs var:change.new ?></li><?cs 
    118   elif $change.field == "description" ?> 
    119    <li><strong><?cs var:change.field ?></strong> changed.</li><?cs 
    120   elif $change.old == "" ?> 
    121    <li><strong><?cs var:change.field ?></strong> set to <em><?cs var:change.new ?></em></li><?cs 
    122   else ?> 
    123    <li><strong><?cs var:change.field ?></strong> changed from <em><?cs 
    124      var:change.old ?></em> to <em><?cs var:change.new ?></em></li><?cs 
    125   /if ?><?cs 
    126  /each ?></ul><?cs 
    127  if $comment != "" ?> 
    128   <div class="comment"><?cs var:$comment ?></div><?cs 
    129  /if ?> 
    130 </div><?cs /if ?> 
    131  
    132 <?cs if $trac.acl.TICKET_MODIFY ?> 
    133 <form action="<?cs var:cgi_location ?>#preview" method="post"> 
     120  <div class="comment"><?cs var:change.comment ?></div><?cs 
     121 /each ?></div><?cs 
     122/if ?> 
     123 
     124<?cs if:trac.acl.TICKET_CHGPROP || trac.acl.TICKET_APPEND ?> 
     125<form action="<?cs var:ticket.href ?>#preview" method="post"> 
    134126 <hr /> 
    135127 <h3><a name="edit" onfocus="document.getElementById('comment').focus()">Add/Change #<?cs 
    136128   var:ticket.id ?> (<?cs var:ticket.summary ?>)</a></h3> 
    137129 <div class="field"> 
    138   <input type="hidden" name="mode" value="ticket" /> 
    139   <input type="hidden" name="id"   value="<?cs var:ticket.id ?>" /> 
    140130  <label for="author">Your email or username:</label><br /> 
    141131  <input type="text" id="author" name="author" size="40" 
     
    145135  <fieldset class="iefix"> 
    146136   <label for="comment">Comment (you may use <a tabindex="42" href="<?cs 
    147      var:$trac.href.wiki ?>/WikiFormatting">WikiFormatting</a> here):</label><br /> 
    148    <p><textarea id="comment" name="comment" rows="10" cols="78"><?cs 
    149      var:ticket.comment ?></textarea></p><?cs 
    150    call:wiki_toolbar('comment') ?> 
     137     var:trac.href.wiki ?>/WikiFormatting">WikiFormatting</a> here):</label><br /> 
     138   <p><textarea id="comment" name="comment" class="wikitext" rows="10" cols="78"><?cs 
     139     var:ticket.comment ?></textarea></p> 
    151140  </fieldset><?cs 
    152141  if ticket.comment_preview ?> 
     
    158147 </div> 
    159148 
    160  <fieldset id="properties"> 
     149 <?cs if:trac.acl.TICKET_CHGPROP ?><fieldset id="properties"> 
    161150  <legend>Change Properties</legend> 
    162   <div class="main"> 
    163    <label for="summary">Summary:</label> 
    164    <input id="summary" type="text" name="summary" size="70" value="<?cs 
    165      var:ticket.summary ?>" /><?cs 
    166    if $trac.acl.TICKET_ADMIN ?> 
    167     <br /> 
    168     <label for="description">Description:</label> 
    169     <div style="float: left"> 
    170      <textarea id="description" name="description" rows="10" cols="68"><?cs 
    171        var:ticket.description ?></textarea> 
    172      <?cs call:wiki_toolbar('description') ?> 
    173     </div> 
    174     <br style="clear: left" /> 
    175     <label for="reporter">Reporter:</label> 
    176     <input id="reporter" type="text" name="reporter" size="70" 
    177            value="<?cs var:ticket.reporter ?>" /><?cs 
     151  <table><tr> 
     152   <th><label for="summary">Summary:</label></th> 
     153   <td class="fullrow" colspan="3"><input type="text" id="summary" name="summary" value="<?cs 
     154     var:ticket.summary ?>" size="70" /></td> 
     155   </tr><?cs 
     156   if:len(ticket.fields.type.options) ?> 
     157   <tr> 
     158    <th><label for="type">Type:</label></th> 
     159    <td><?cs  
     160     call:hdf_select(ticket.fields.type.options, 'type', ticket.type, 0) ?> 
     161    </td> 
     162   </tr><?cs 
     163   /if ?><?cs 
     164   if:trac.acl.TICKET_ADMIN ?><tr> 
     165    <th><label for="description">Description:</label></th> 
     166    <td class="fullrow" colspan="3"> 
     167     <textarea id="description" name="description" class="wikitext" rows="10" cols="68"><?cs 
     168        var:ticket.description ?></textarea> 
     169    </td> 
     170   </tr><tr> 
     171    <th><label for="reporter">Reporter:</label></th> 
     172    <td class="fullrow" colspan="3"><input type="text" value="<?cs  
     173      var:ticket.reporter ?>" id="reporter" name="reporter" size="70" /></td> 
     174   </tr><?cs 
    178175   /if ?> 
    179   </div> 
    180   <div class="col1"> 
    181    <label for="component">Component:</label><?cs 
    182    call:hdf_select(ticket.components, "component", ticket.component) ?> 
    183    <br /> 
    184    <label for="version">Version:</label><?cs 
    185    call:hdf_select(ticket.versions, "version", ticket.version) ?> 
    186    <br /> 
    187    <label for="severity">Severity:</label><?cs 
    188    call:hdf_select(enums.severity, "severity", ticket.severity) ?> 
    189    <br /> 
    190    <label for="keywords">Keywords:</label> 
    191    <input type="text" id="keywords" name="keywords" size="20" 
    192        value="<?cs var:ticket.keywords ?>" /> 
    193   </div> 
    194   <div class="col2"> 
    195    <label for="priority">Priority:</label><?cs 
    196    call:hdf_select(enums.priority, "priority", ticket.priority) ?><br /> 
    197    <label for="milestone">Milestone:</label><?cs 
    198    call:hdf_select(ticket.milestones, "milestone", ticket.milestone) ?><br /> 
    199    <label for="owner">Assigned to:</label> 
    200    <input type="text" id="owner" name="owner" size="20" value="<?cs 
    201      var:ticket.owner ?>" disabled="disabled" /><br /> 
    202    <label for="cc">Cc:</label> 
    203    <input type="text" id="cc" name="cc" size="30" value="<?cs var:ticket.cc ?>" /> 
    204   </div> 
    205   <?cs if:len(ticket.custom) ?><div class="custom"> 
    206    <?cs call:ticket_custom_props(ticket) ?> 
    207   </div><?cs /if ?> 
    208  </fieldset> 
    209  
     176  <tr><?cs set:num_fields = 0 ?><?cs 
     177  each:field = ticket.fields ?><?cs 
     178   if:!field.skip ?><?cs 
     179    set:num_fields = num_fields + 1 ?><?cs 
     180   /if ?><?cs 
     181  /each ?><?cs set:idx = 0 ?><?cs 
     182   each:field = ticket.fields ?><?cs 
     183    if:!field.skip ?><?cs set:fullrow = field.type == 'textarea' ?><?cs 
     184     if:fullrow && idx % 2 ?><?cs set:idx = idx + 1 ?><th class="col2"></th><td></td></tr><tr><?cs /if ?> 
     185     <th class="col<?cs var:idx % 2 + 1 ?>"><?cs 
     186       if:field.type != 'radio' ?><label for="<?cs var:name(field) ?>"><?cs 
     187       /if ?><?cs alt:field.label ?><?cs var:field.name ?><?cs /alt ?>:<?cs 
     188       if:field.type != 'radio' ?></label><?cs /if ?></th> 
     189     <td<?cs if:fullrow ?> colspan="3"<?cs /if ?>><?cs 
     190      if:field.type == 'text' ?><input type="text" id="<?cs 
     191        var:name(field) ?>" name="<?cs 
     192        var:name(field) ?>" value="<?cs var:ticket[name(field)] ?>" /><?cs 
     193      elif:field.type == 'select' ?><select id="<?cs 
     194        var:name(field) ?>" name="<?cs 
     195        var:name(field) ?>"><?cs 
     196        if:field.optional ?><option></option><?cs /if ?><?cs 
     197        each:option = field.options ?><option<?cs 
     198         if:option == ticket[name(field)] ?> selected="selected"<?cs /if ?>><?cs 
     199         var:option ?></option><?cs 
     200        /each ?></select><?cs 
     201      elif:field.type == 'checkbox' ?><input type="hidden" name="checkbox_<?cs 
     202        var:name(field) ?>" /><input type="checkbox" id="<?cs 
     203        var:name(field) ?>" name="<?cs 
     204        var:name(field) ?>" value="1"<?cs 
     205        if:ticket[name(field)] ?> checked="checked"<?cs /if ?> /><?cs 
     206      elif:field.type == 'textarea' ?><textarea id="<?cs 
     207        var:name(field) ?>" name="<?cs 
     208        var:name(field) ?>"<?cs 
     209        if:field.height ?> rows="<?cs var:field.height ?>"<?cs /if ?><?cs 
     210        if:field.width ?> cols="<?cs var:field.width ?>"<?cs /if ?>><?cs 
     211        var:ticket[name(field)] ?></textarea><?cs 
     212      elif:field.type == 'radio' ?><?cs set:optidx = 0 ?><?cs 
     213       each:option = field.options ?><label><input type="radio" id="<?cs 
     214         var:name(field) ?>" name="<?cs 
     215         var:name(field) ?>" value="<?cs var:option ?>"<?cs 
     216         if:ticket[name(field)] == option ?> checked="checked"<?cs /if ?> /> <?cs 
     217         var:option ?></label> <?cs set:optidx = optidx + 1 ?><?cs 
     218        /each ?><?cs 
     219      /if ?></td><?cs 
     220     if:idx % 2 || fullrow ?><?cs 
     221      if:idx < num_fields - 1 ?></tr><tr><?cs 
     222      /if ?><?cs  
     223     elif:idx == num_fields - 1 ?><th class="col2"></th><td></td><?cs 
     224     /if ?><?cs set:idx = idx + #fullrow + 1 ?><?cs 
     225    /if ?><?cs 
     226   /each ?></tr> 
     227  </table> 
     228 </fieldset><?cs /if ?> 
     229 
     230 <?cs if:ticket.actions.accept || ticket.actions.reopen || 
     231         ticket.actions.resolve || ticket.actions.reassign ?> 
    210232 <fieldset id="action"> 
    211233  <legend>Action</legend><?cs 
     
    214236  def:action_radio(id) ?> 
    215237   <input type="radio" id="<?cs var:id ?>" name="action" value="<?cs 
    216      var:id ?>"<?cs if:$ticket.action == $id ?> checked="checked"<?cs 
     238     var:id ?>"<?cs if:ticket.action == id ?> checked="checked"<?cs 
    217239     /if ?> /><?cs 
    218240  /def ?> 
    219241  <?cs call:action_radio('leave') ?> 
    220   <label for="leave">leave as <?cs var:ticket.status ?></label><br /><?cs 
    221   if $ticket.status == "new" ?> 
    222    <?cs call:action_radio('accept') ?> 
     242   <label for="leave">leave as <?cs var:ticket.status ?></label><br /><?cs 
     243  if:ticket.actions.accept ?><?cs 
     244   call:action_radio('accept') ?> 
    223245   <label for="accept">accept ticket</label><br /><?cs 
    224246  /if ?><?cs 
    225   if $ticket.status == "closed" ?> 
    226    <?cs call:action_radio('reopen') ?> 
     247  if:ticket.actions.reopen ?><?cs 
     248   call:action_radio('reopen') ?> 
    227249   <label for="reopen">reopen ticket</label><br /><?cs 
    228250  /if ?><?cs 
    229   if $ticket.status == "new" || $ticket.status == "assigned" || $ticket.status == "reopened" ?> 
    230    <?cs call:action_radio('resolve') ?> 
    231    <label for="resolve">resolve</label> 
    232    <label for="resolve_resolution">as:</label> 
    233    <?cs call:hdf_select(enums.resolution, "resolve_resolution", args.resolve_resolution) ?><br /> 
    234    <?cs call:action_radio('reassign') ?> 
     251  if:ticket.actions.resolve ?><?cs 
     252   call:action_radio('resolve') ?> 
     253   <label for="resolve">resolve</label><?cs 
     254   if:len(ticket.fields.resolution.options) ?> 
     255    <label for="resolve_resolution">as:</label> 
     256    <?cs call:hdf_select(ticket.fields.resolution.options, "resolve_resolution", 
     257                         ticket.resolve_resolution, 0) ?><br /><?cs 
     258   /if ?><?cs 
     259  /if ?><?cs 
     260  if:ticket.actions.reassign ?><?cs 
     261   call:action_radio('reassign') ?> 
    235262   <label for="reassign">reassign</label> 
    236    <label for="reassign_owner">to:</label> 
    237    <input type="text" id="reassign_owner" name="reassign_owner" size="40" value="<?cs 
    238      if:args.reassign_to ?><?cs var:args.reassign_to ?><?cs 
    239      else ?><?cs var:trac.authname ?><?cs /if ?>" /><?cs 
    240   /if ?><?cs 
    241   if $ticket.status == "new" || $ticket.status == "assigned" || $ticket.status == "reopened" ?> 
    242    <script type="text/javascript"> 
    243      var resolve = document.getElementById("resolve"); 
    244      var reassign = document.getElementById("reassign"); 
     263   <label>to:<?cs 
     264   if:len(ticket.fields.owner.options) ?><?cs 
     265    call:hdf_select(ticket.fields.owner.options, "reassign_owner", 
     266                    ticket.reassign_owner, 1) ?><?cs 
     267   else ?> 
     268    <input type="text" id="reassign_owner" name="reassign_owner" size="40" value="<?cs 
     269      var:ticket.reassign_owner ?>" /><?cs 
     270   /if ?></label><?cs 
     271  /if ?><?cs 
     272  if ticket.actions.resolve || ticket.actions.reassign ?> 
     273   <script type="text/javascript"><?cs 
     274    each:action = ticket.actions ?> 
     275     var <?cs var:name(action) ?> = document.getElementById("<?cs var:name(action) ?>");<?cs 
     276    /each ?> 
    245277     var updateActionFields = function() { 
    246        enableControl('resolve_resolution', resolve.checked); 
    247        enableControl('reassign_owner', reassign.checked); 
     278       <?cs if:ticket.actions.resolve ?> enableControl('resolve_resolution', resolve.checked);<?cs /if ?> 
     279       <?cs if:ticket.actions.reassign ?> enableControl('reassign_owner', reassign.checked);<?cs /if ?> 
    248280     }; 
    249      addEvent(window, 'load', updateActionFields); 
    250      addEvent(document.getElementById("leave"), 'click', updateActionFields);<?cs 
    251     if $ticket.status == "new" ?> 
    252      addEvent(document.getElementById("accept"), 'click', updateActionFields);<?cs 
    253     /if ?> 
    254     addEvent(resolve, 'click', updateActionFields); 
    255     addEvent(reassign, 'click', updateActionFields); 
     281     addEvent(window, 'load', updateActionFields);<?cs 
     282     each:action = ticket.actions ?> 
     283      addEvent(<?cs var:name(action) ?>, 'click', updateActionFields);<?cs 
     284     /each ?> 
    256285   </script><?cs 
    257286  /if ?> 
    258  </fieldset> 
     287 </fieldset><?cs 
     288 else ?> 
     289  <input type="hidden" name="action" value="leave" /><?cs 
     290 /if ?> 
     291 
     292 <script type="text/javascript" src="<?cs 
     293   var:htdocs_location ?>js/wikitoolbar.js"></script> 
    259294 
    260295 <div class="buttons"> 
    261   <input type="reset" value="Reset" />&nbsp; 
    262   <input type="submit" name="preview" value="Preview" />&nbsp; 
    263   <input type="submit" value="Submit changes" />  
     296  <input type="hidden" name="ts" value="<?cs var:ticket.ts ?>" /> 
     297  <input type="submit" name="preview" value="Preview" accesskey="r" />&nbsp; 
     298  <input type="submit" value="Submit changes" /> 
    264299 </div> 
    265300</form> 
  • trac/vendor/current/templates/timeline.cs

    r2581 r3034  
    1 <?cs set:html.stylesheet = 'css/timeline.css' ?> 
    21<?cs include "header.cs"?> 
    32 
     
    54 
    65<div id="content" class="timeline"> 
    7  <h1>Timeline</h1> 
     6<h1>Timeline</h1> 
    87 
    9  <form id="prefs" action="<?cs var:trac.href.timeline ?>"> 
    10   <div> 
    11    <label for="from">View changes from</label> 
    12    <input type="text" size="10" id="from" name="from" 
    13        value="<?cs var:timeline.from ?>" /> and <input type="text" size="3" 
    14        id="daysback" name="daysback"  value="<?cs var:timeline.daysback ?>" /> 
    15    <label for="daysback">days back</label>. 
    16   </div> 
    17   <fieldset> 
    18    <?cs if:trac.acl.TICKET_VIEW ?><div class="field"> 
    19     <input type="checkbox" id="ticket" name="ticket" <?cs 
    20       if:timeline.ticket ?>checked="checked"<?cs /if ?> /> 
    21     <label for="ticket">Ticket changes</label> 
    22    </div><?cs /if ?> 
    23    <?cs if:trac.acl.CHANGESET_VIEW ?><div class="field"> 
    24     <input type="checkbox" id="changeset" name="changeset" <?cs 
    25       if:timeline.changeset ?>checked="checked"<?cs /if ?> /> 
    26     <label for="changeset">Repository checkins</label> 
    27    </div><?cs /if ?> 
    28    <?cs if:trac.acl.WIKI_VIEW ?><div class="field"> 
    29     <input type="checkbox" id="wiki" name="wiki" <?cs 
    30       if:timeline.wiki ?>checked="checked"<?cs /if ?> /> 
    31     <label for="wiki">Wiki changes</label> 
    32    </div><?cs /if ?> 
    33    <?cs if:trac.acl.MILESTONE_VIEW ?><div class="field"> 
    34     <input type="checkbox" id="milestone" name="milestone" <?cs 
    35       if:timeline.milestone ?>checked="checked"<?cs /if ?> /> 
    36     <label for="milestone">Milestones</label> 
    37    </div><?cs /if ?> 
    38   </fieldset> 
    39   <div class="buttons"> 
    40    <input type="submit" value="Update" /> 
    41   </div> 
    42  </form> 
     8<form id="prefs" method="get" action="<?cs var:trac.href.timeline ?>"> 
     9 <div> 
     10  <label>View changes from <input type="text" size="10" name="from" value="<?cs 
     11    var:timeline.from ?>" /></label> and 
     12  <label><input type="text" size="3" name="daysback" value="<?cs 
     13    var:timeline.daysback ?>" /> days back</label>. 
     14 </div> 
     15 <fieldset><?cs 
     16  each:filter = timeline.filters ?> 
     17   <label><input type="checkbox" name="<?cs var:filter.name ?>"<?cs 
     18     if:filter.enabled ?> checked="checked"<?cs /if ?> /> <?cs 
     19     var:filter.label ?></label><?cs 
     20  /each ?> 
     21 </fieldset> 
     22 <div class="buttons"> 
     23  <input type="submit" name="update" value="Update" /> 
     24 </div> 
     25</form><?cs 
    4326 
    44 <?cs def:day_separator(date) ?> 
    45  <?cs if: $date != $current_date ?> 
    46   <?cs if: $current_date ?></dl><?cs /if ?> 
    47   <?cs set: $current_date = $date ?> 
    48   <h2><?cs var:date ?>:</h2> 
    49   <dl> 
    50  <?cs /if ?> 
    51 <?cs /def ?> 
    52  
    53 <?cs def:tlitem(url, type, msg, descr) ?> 
    54  <dt class="<?cs var:type ?>"> 
    55   <a href="<?cs var:url ?>"><span class="time"><?cs 
    56     var:item.time ?></span> <?cs var:msg ?></a> 
    57  </dt> 
    58  <?cs if:descr ?><dd><?cs var:descr ?></dd><?cs /if ?> 
    59 <?cs /def ?> 
    60  
    61 <?cs each:item = timeline.items ?> 
    62  <?cs call:day_separator(item.date) ?> 
    63  <?cs if:item.type == #1 ?><!-- Changeset --> 
    64   <?cs call:tlitem(item.href, 'changeset', 
    65     'Changeset <em>['+$item.idata+']</em> by '+$item.author,$item.node_list+item.message) ?> 
    66  <?cs elif:item.type == #2 ?><!-- New ticket --> 
    67   <?cs call:tlitem(item.href, 'newticket', 
    68     'Ticket <em>#'+$item.idata+'</em> created by '+$item.author, item.message) ?> 
    69  <?cs elif:item.type == #3 ?><!-- Closed ticket --> 
    70   <?cs if:item.message ?> 
    71    <?cs set:imessage = ' - ' + $item.message ?> 
    72   <?cs else ?> 
    73    <?cs set:imessage = '' ?> 
    74   <?cs /if ?> 
    75   <?cs call:tlitem(item.href, 'closedticket', 
    76     'Ticket <em>#'+$item.idata+'</em> resolved by '+$item.author,  
    77     $item.tdata+$imessage) ?> 
    78  <?cs elif:item.type == #4 ?><!-- Reopened ticket --> 
    79   <?cs call:tlitem(item.href, 'newticket', 
    80     'Ticket <em>#'+$item.idata+'</em> reopened by '+$item.author, '') ?> 
    81  <?cs elif:item.type == #5 ?><!-- Wiki change --> 
    82   <?cs call:tlitem(item.href, 'wiki', 
    83     '<em>'+$item.tdata+'</em> edited by '+$item.author, item.message) ?> 
    84  <?cs elif:item.type == #6 ?><!-- milestone --> 
    85   <?cs call:tlitem(item.href, 'milestone', 
    86     '<em>Milestone '+$item.message+'</em> reached', '') ?> 
    87  <?cs /if ?> 
    88 <?cs /each ?> 
    89 <?cs if:len(timeline.items) ?></dl><?cs /if ?> 
     27def:day_separator(date) ?><?cs 
     28 if:date != current_date ?><?cs 
     29  if:current_date ?></dl><?cs /if ?><?cs 
     30  set:current_date = date ?> 
     31  <h2><?cs var:date ?>:</h2><dl><?cs 
     32 /if ?><?cs 
     33/def ?><?cs 
     34each:event = timeline.events ?><?cs 
     35 call:day_separator(event.date) ?><dt class="<?cs 
     36 var:event.kind ?>"><a href="<?cs var:event.href ?>"><span class="time"><?cs 
     37 var:event.time ?></span> <?cs var:event.title ?></a></dt><?cs 
     38  if:event.message ?><dd class="<?cs var:event.kind ?>"><?cs 
     39   var:event.message ?></dd><?cs 
     40  /if ?><?cs 
     41/each ?><?cs 
     42if:len(timeline.events) ?></dl><?cs /if ?> 
    9043 
    9144<div id="help"> 
    9245 <hr /> 
    93  <strong>Note:</strong> See <a href="<?cs var:$trac.href.wiki ?>/TracTimeline">TracTimeline</a>  
     46 <strong>Note:</strong> See <a href="<?cs var:trac.href.wiki ?>/TracTimeline">TracTimeline</a>  
    9447 for information about the timeline view. 
    9548</div> 
  • trac/vendor/current/templates/timeline_rss.cs

    r2581 r3034  
    11<?xml version="1.0"?> 
    2 <!-- RSS generated by Trac v<?cs var:$trac.version ?> on <?cs var:$trac.time ?> --> 
    32<rss version="2.0"> 
    4    <?cs set base_url = $HTTP.Protocol+'://'+$HTTP.Host ?> 
    5    <?cs if $HTTP.Port ?> 
    6      <?cs set base_url = $base_url + ':' + $HTTP.Port ?> 
    7    <?cs /if ?> 
    8    <?cs def:rss_item(category,title, link, descr) ?> 
    9       <item> 
    10         <?cs if:$item.author.rss ?> 
    11          <author><?cs var:$item.author.rss ?></author> 
    12         <?cs /if ?> 
    13         <pubDate><?cs var:$item.datetime ?></pubDate> 
    14         <title><?cs var:$title ?></title> 
    15         <link><?cs var:$base_url ?><?cs var:$link ?></link> 
    16         <description><?cs var:$descr ?></description> 
    17         <category><?cs var:$category ?></category> 
    18       </item> 
    19    <?cs /def ?> 
    20     <channel> 
    21       <?cs if $project.name.encoded ?> 
    22         <title><?cs var:$project.name.encoded ?>: <?cs var:$title ?></title> 
    23       <?cs else ?> 
    24         <title><?cs var:$title ?></title> 
    25       <?cs /if ?> 
    26       <link><?cs var:$base_url ?><?cs var:$trac.href.timeline ?></link> 
    27       <description>Trac Timeline</description> 
    28       <language>en-us</language> 
    29       <generator>Trac v<?cs var:$trac.version ?></generator> 
    30       <image> 
    31         <title><?cs var:$project.name.encoded ?></title> 
    32         <url><?cs if !$header_logo.src_abs ?><?cs var:$base_url ?><?cs /if ?><?cs var $header_logo.src ?></url> 
    33         <link><?cs var:$base_url ?><?cs var:$trac.href.timeline ?></link> 
    34       </image> 
    35       <?cs each:item = $timeline.items ?><?cs 
    36         if:item.type == #1  
    37         ?><!-- Changeset --><?cs call:rss_item('Changeset', 
    38                              'Changeset ['+$item.idata+'] by '+$item.author,  
    39                              $item.href, $item.msg_escwiki)  
    40         ?><?cs elif:item.type == #2  
    41         ?><!-- New ticket --> <?cs call:rss_item('Ticket', 
    42                              'Ticket #'+$item.idata+' created by '+$item.author, 
    43                              $item.href, $item.msg_escwiki)  
    44         ?><?cs elif:item.type == #3 
    45         ?><!-- Closed ticket --> <?cs call:rss_item('Ticket', 
    46                              'Ticket #'+$item.idata+' resolved: '+$item.shortmsg, 
    47                              $item.href, $item.msg_escwiki)  
    48         ?><?cs elif:item.type == #4  
    49         ?><!-- Reopened ticket --><?cs call:rss_item('Ticket', 
    50                              '#'+$item.idata+' reopened: '+$item.shortmsg, 
    51                              $item.href, $item.msg_escwiki)  
    52         ?><?cs elif:item.type == #5  
    53         ?><!-- Wiki change --><?cs call:rss_item('Wiki', 
    54                              $item.tdata+" page edited.", 
    55                              $item.href, 
    56 'Wiki page &lt;a href="'+$base_url+$item.href+'"&gt;'+$item.tdata+'&lt;/a&gt; edited by '+$item.author) ?> 
    57         <?cs elif:item.type == #6 ?><!-- Milestones --> 
    58           <?cs call:rss_item('Milestone', 
    59                              'Milestone ' + $item.message.rss + ' reached.', 
    60                              '', 
    61                'Milestone ' + $item.tdata + ' reached.') ?> 
    62         <?cs /if ?> 
    63       <?cs /each ?> 
    64     </channel> 
     3 <channel><?cs 
     4  if:project.name_encoded ?> 
     5   <title><?cs var:project.name_encoded ?>: <?cs var:title ?></title><?cs 
     6  else ?> 
     7   <title><?cs var:title ?></title><?cs 
     8  /if ?> 
     9  <link><?cs var:base_host ?><?cs var:trac.href.timeline ?></link> 
     10  <description>Trac Timeline</description> 
     11  <language>en-us</language> 
     12  <generator>Trac v<?cs var:trac.version ?></generator> 
     13  <image> 
     14   <title><?cs var:project.name_encoded ?></title> 
     15   <url><?cs if:!header_logo.src_abs ?><?cs var:base_host ?><?cs /if ?><?cs 
     16    var:header_logo.src ?></url> 
     17   <link><?cs var:base_host ?><?cs var:trac.href.timeline ?></link> 
     18  </image><?cs 
     19  each:event = timeline.events ?> 
     20   <item> 
     21    <title><?cs var:event.title ?></title><?cs 
     22    if:event.author.email ?> 
     23     <author><?cs var:event.author.email ?></author><?cs 
     24    /if ?> 
     25    <pubDate><?cs var:event.date ?></pubDate> 
     26    <link><?cs var:event.href ?></link> 
     27    <description><?cs var:event.message ?></description> 
     28   </item><?cs 
     29  /each ?> 
     30 </channel> 
    6531</rss> 
  • trac/vendor/current/templates/wiki.cs

    r2997 r3034  
    1 <?cs set:html.stylesheet = 'css/wiki.css' ?> 
    21<?cs include "header.cs" ?> 
    32<?cs include "macros.cs" ?> 
     
    65 <h2>Wiki Navigation</h2> 
    76 <ul> 
    8   <li><a href="<?cs var:$trac.href.wiki ?>">Start Page</a></li> 
    9   <li><a href="<?cs var:$trac.href.wiki ?>/TitleIndex">Title Index</a></li> 
    10   <li><a href="<?cs var:$trac.href.wiki ?>/RecentChanges">Recent Changes</a></li> 
     7  <li><a href="<?cs var:trac.href.wiki ?>">Start Page</a></li> 
     8  <li><a href="<?cs var:trac.href.wiki ?>/TitleIndex">Title Index</a></li> 
     9  <li><a href="<?cs var:trac.href.wiki ?>/RecentChanges">Recent Changes</a></li> 
    1110  <?cs if:wiki.history_href ?> 
    1211   <li class="last"><a href="<?cs var:wiki.history_href ?>">Page History</a></li> 
     
    2019<div id="content" class="wiki"> 
    2120 
    22  <?cs if:wiki.action == "diff" ?> 
    23   <h1>Changes in Version <?cs var:wiki.edit_version?> of <a href="<?cs 
     21 <?cs if wiki.action == "delete" ?> 
     22  <h1>Delete <?cs 
     23   if:?wiki.version ?>version <?cs var:wiki.version ?> of <?cs /if ?><a href="<?cs 
    2424    var:wiki.current_href ?>"><?cs var:wiki.page_name ?></a></h1> 
     25  <form action="<?cs var:wiki.href ?>" method="post"> 
     26   <input type="hidden" name="action" value="delete" /> 
     27   <p><strong>Are you sure you want to <?cs 
     28    if:!?wiki.version ?>completely <?cs /if ?>delete <?cs 
     29    if:?wiki.version ?>version <?cs var:wiki.version ?> of <?cs 
     30    /if ?>this page?</strong><br /><?cs 
     31   if:wiki.only_version ?> 
     32    This is the only version the page, so the page will be removed 
     33    completely!<?cs 
     34   /if ?><?cs 
     35   if:?wiki.version ?> 
     36    <input type="hidden" name="version" value="<?cs var:wiki.version ?>" /><?cs 
     37   /if ?> 
     38   This is an irreversible operation.</p> 
     39   <div class="buttons"> 
     40    <input type="submit" name="cancel" value="Cancel" /> 
     41    <input type="submit" value="Delete <?cs 
     42      if:?wiki.version ?>this version<?cs else ?>page<?cs /if ?>" /> 
     43   </div> 
     44  </form> 
     45  
     46 <?cs elif:wiki.action == "diff" ?> 
     47  <h1>Changes between Version <?cs var:wiki.old_version?> and <?cs 
     48    var:wiki.version?> of <a href="<?cs var:wiki.current_href ?>"><?cs  
     49    var:wiki.page_name ?></a></h1> 
    2550  <form method="post" id="prefs" action="<?cs var:wiki.current_href ?>"> 
    2651   <div> 
    27     <input type="hidden" name="mode" value="wiki" /> 
    28     <input type="hidden" name="diff" value="yes" /> 
    29     <input type="hidden" name="version" value="<?cs var:wiki.edit_version?>" /> 
    30     <input type="hidden" name="update" value="yes" /> 
    31     <label for="type">View differences</label> 
    32     <select name="style" onchange="this.form.submit()"> 
     52    <input type="hidden" name="action" value="diff" /> 
     53    <input type="hidden" name="version" value="<?cs var:wiki.version ?>" /> 
     54    <label>View differences <select name="style"> 
    3355     <option value="inline"<?cs 
    3456       if:diff.style == 'inline' ?> selected="selected"<?cs 
     
    3759       if:diff.style == 'sidebyside' ?> selected="selected"<?cs 
    3860       /if ?>>side by side</option> 
    39     </select> 
    40     <noscript><div class="buttons"> 
    41      <input type="submit" value="Update" /> 
    42     </div></noscript> 
     61    </select></label> 
     62    <div class="field"> 
     63     Show <input type="text" name="contextlines" id="contextlines" size="2" 
     64       maxlength="3" value="<?cs var:diff.options.contextlines ?>" /> 
     65     <label for="contextlines">lines around each change</label> 
     66    </div> 
     67    <fieldset id="ignore"> 
     68     <legend>Ignore:</legend> 
     69     <div class="field"> 
     70      <input type="checkbox" id="blanklines" name="ignoreblanklines"<?cs 
     71        if:diff.options.ignoreblanklines ?> checked="checked"<?cs /if ?> /> 
     72      <label for="blanklines">Blank lines</label> 
     73     </div> 
     74     <div class="field"> 
     75      <input type="checkbox" id="case" name="ignorecase"<?cs 
     76        if:diff.options.ignorecase ?> checked="checked"<?cs /if ?> /> 
     77      <label for="case">Case changes</label> 
     78     </div> 
     79     <div class="field"> 
     80      <input type="checkbox" id="whitespace" name="ignorewhitespace"<?cs 
     81        if:diff.options.ignorewhitespace ?> checked="checked"<?cs /if ?> /> 
     82      <label for="whitespace">White space changes</label> 
     83     </div> 
     84    </fieldset> 
     85    <div class="buttons"> 
     86     <input type="submit" name="update" value="Update" /> 
     87    </div> 
    4388   </div> 
    4489  </form> 
    4590  <dl id="overview"> 
    4691   <dt class="author">Author:</dt> 
    47    <dd><?cs var:wiki.diff.author ?></dd> 
     92   <dd class="author"><?cs 
     93    if:wiki.num_changes > 1 ?><em class="multi">(multiple changes)</em><?cs 
     94    else ?><?cs var:wiki.author ?> <span class="ipnr">(IP: <?cs 
     95     var:wiki.ipnr ?>)</span><?cs 
     96    /if ?></dd> 
    4897   <dt class="time">Timestamp:</dt> 
    49    <dd><?cs var:wiki.diff.time ?></dd> 
    50    <?cs if:wiki.diff.comment ?> 
    51     <dt class="comment">Comment:</dt> 
    52     <dd><?cs var:wiki.diff.comment ?></dd> 
    53    <?cs /if ?> 
     98   <dd class="time"><?cs 
     99    if:wiki.num_changes > 1 ?><em class="multi">(multiple changes)</em><?cs 
     100    elif:wiki.time ?><?cs var:wiki.time ?> (<?cs var:wiki.time_delta ?> ago)<?cs 
     101    else ?>--<?cs 
     102    /if ?></dd> 
     103   <dt class="comment">Comment:</dt> 
     104   <dd class="comment"><?cs 
     105    if:wiki.num_changes > 1 ?><em class="multi">(multiple changes)</em><?cs 
     106    else ?><?cs var:wiki.comment ?><?cs /if ?></dd> 
    54107  </dl> 
    55108  <div class="diff"> 
     
    63116    </dl> 
    64117   </div> 
    65    <ul> 
    66     <li> 
    67      <h2><?cs var:wiki.diff.name.new ?></h2> 
    68      <?cs if:diff.style == 'sidebyside' ?> 
     118   <ul class="entries"> 
     119    <li class="entry"> 
     120     <h2><?cs var:wiki.page_name ?></h2><?cs 
     121      if:diff.style == 'sidebyside' ?> 
    69122      <table class="sidebyside" summary="Differences"> 
    70        <colgroup class="base"> 
    71         <col class="lineno" /><col class="content" /> 
    72        <colgroup class="chg"> 
    73         <col class="lineno" /><col class="content" /> 
    74        </colgroup> 
     123       <colgroup class="l"><col class="lineno" /><col class="content" /></colgroup> 
     124       <colgroup class="r"><col class="lineno" /><col class="content" /></colgroup> 
    75125       <thead><tr> 
    76         <th colspan="2">Version <?cs var:wiki.diff.rev.old ?></th> 
    77         <th colspan="2">Version <?cs var:wiki.diff.rev.new ?></th> 
    78        </tr></thead> 
    79        <?cs each:change = wiki.diff.changes ?> 
    80         <tbody> 
    81          <?cs call:diff_display(change, diff.style) ?> 
    82         </tbody> 
    83        <?cs /each ?> 
    84       </table> 
    85      <?cs else ?> 
     126        <th colspan="2">Version <?cs var:wiki.old_version ?></th> 
     127        <th colspan="2">Version <?cs var:wiki.version ?></th> 
     128       </tr></thead><?cs 
     129       each:change = wiki.diff ?><?cs 
     130        call:diff_display(change, diff.style) ?><?cs 
     131       /each ?> 
     132      </table><?cs 
     133     else ?> 
    86134      <table class="inline" summary="Differences"> 
    87        <colgroup> 
    88         <col class="lineno" /> 
    89         <col class="lineno" /> 
    90         <col class="content" /> 
    91        </colgroup> 
     135       <colgroup><col class="lineno" /><col class="lineno" /><col class="content" /></colgroup> 
    92136       <thead><tr> 
    93         <th title="Version <?cs var:wiki.diff.rev.old ?>">v<?cs 
    94           var:wiki.diff.rev.old ?></th> 
    95         <th title="Version <?cs var:wiki.diff.rev.new ?>">v<?cs 
    96           var:wiki.diff.rev.new ?></th> 
    97         <th></th> 
    98        </tr></thead> 
    99        <?cs each:change = wiki.diff.changes ?> 
    100         <?cs call:diff_display(change, diff.style) ?> 
    101        <?cs /each ?> 
    102       </table> 
    103      <?cs /if ?> 
     137        <th title="Version <?cs var:wiki.old_version ?>">v<?cs 
     138          var:wiki.old_version ?></th> 
     139        <th title="Version <?cs var:wiki.version ?>">v<?cs 
     140          var:wiki.version ?></th> 
     141        <th>&nbsp;</th> 
     142       </tr></thead><?cs 
     143       each:change = wiki.diff ?><?cs 
     144        call:diff_display(change, diff.style) ?><?cs 
     145       /each ?> 
     146      </table><?cs 
     147     /if ?> 
    104148    </li> 
    105149   </ul> 
     
    109153  <h1>Change History of <a href="<?cs var:wiki.current_href ?>"><?cs 
    110154    var:wiki.page_name ?></a></h1> 
    111   <?cs if:wiki.history ?> 
     155  <?cs if:len(wiki.history) ?><form method="get" action=""> 
     156   <input type="hidden" name="action" value="diff" /> 
    112157   <table id="wikihist" class="listing" summary="Change history"> 
    113158    <thead><tr> 
     159     <th class="diff"></th> 
     160     <th class="version">Version</th> 
    114161     <th class="date">Date</th> 
    115      <th class="version">Version</th> 
    116162     <th class="author">Author</th> 
    117163     <th class="comment">Comment</th> 
     
    119165    <tbody><?cs each:item = wiki.history ?> 
    120166     <tr class="<?cs if:name(item) % #2 ?>even<?cs else ?>odd<?cs /if ?>"> 
     167      <td class="diff"><input type="radio" name="old_version" value="<?cs 
     168        var:item.version ?>"<?cs 
     169        if:name(item) == 1 ?> checked="checked"<?cs 
     170        /if ?> /> <input type="radio" name="version" value="<?cs 
     171        var:item.version ?>"<?cs 
     172        if:name(item) == 0 ?> checked="checked"<?cs 
     173        /if ?> /></td> 
     174      <td class="version"><a href="<?cs 
     175        var:item.url ?>" title="View this version"><?cs 
     176        var:item.version ?></a></td> 
    121177      <td class="date"><?cs var:item.time ?></td> 
    122       <td class="version"> 
    123        <a href="<?cs var:item.url ?>" title="View version"><?cs 
    124          var:item.version ?></a> 
    125        (<a href="<?cs var:item.diff_url ?>" title="Compare to previous version">diff</a>) 
    126       </td> 
    127       <td class="author" title="IP-Address: <?cs var:item.ipaddr ?>"> 
    128        <?cs var:item.author ?> 
    129       </td> 
     178      <td class="author" title="IP-Address: <?cs var:item.ipaddr ?>"><?cs  
     179        var:item.author ?></td> 
    130180      <td class="comment"><?cs var:item.comment ?></td> 
    131181     </tr> 
    132182    <?cs /each ?></tbody> 
    133183   </table> 
    134   <?cs /if ?> 
     184   <div class="buttons"> 
     185    <input type="submit" value="View changes" /> 
     186   </div> 
     187  </form><?cs /if ?> 
    135188  
    136189 <?cs else ?> 
    137   <?cs if wiki.action == "edit" || wiki.action == "preview" ?> 
    138    <h3>Editing "<?cs var:wiki.page_name ?>"</h3> 
    139    <form id="edit" action="<?cs var:wiki.current_href ?>#preview" method="post"> 
     190  <?cs if wiki.action == "edit" || wiki.action == "preview" || wiki.action == "collision" ?> 
     191   <h1>Editing "<?cs var:wiki.page_name ?>"</h1><?cs 
     192    if wiki.action == "preview" ?> 
     193     <fieldset id="preview"> 
     194      <legend>Preview (<a href="#edit">skip</a>)</legend> 
     195      <div class="wikipage"><?cs var:wiki.page_html ?></div> 
     196     </fieldset><?cs 
     197     elif wiki.action =="collision"?> 
     198     <div class="system-message"> 
     199       Sorry, this page has been modified by somebody else since you started  
     200       editing. Your changes cannot be saved. 
     201     </div><?cs 
     202    /if ?> 
     203   <form id="edit" action="<?cs var:wiki.current_href ?>" method="post"> 
    140204    <fieldset class="iefix"> 
    141      <input type="hidden" name="edit_version" value="<?cs 
    142        var:wiki.edit_version ?>" /> 
     205     <input type="hidden" name="action" value="edit" /> 
     206     <input type="hidden" name="version" value="<?cs var:wiki.version ?>" /> 
    143207     <input type="hidden" id="scroll_bar_pos" name="scroll_bar_pos" value="<?cs 
    144208       var:wiki.scroll_bar_pos ?>" /> 
     
    154218      </select> 
    155219     </div> 
    156      <p><textarea id="text" name="text" cols="80" rows="<?cs 
     220     <p><textarea id="text" class="wikitext" name="text" cols="80" rows="<?cs 
    157221       var:wiki.edit_rows ?>"><?cs var:wiki.page_source ?></textarea></p> 
    158      <?cs call:wiki_toolbar('text') ?> 
    159222     <script type="text/javascript"> 
    160223       var scrollBarPos = document.getElementById("scroll_bar_pos"); 
     
    174237     <legend>Change information</legend> 
    175238     <div class="field"> 
    176       <label for="author">Your email or username:</label> 
    177       <br /><input id="author" type="text" name="author" size="30" value="<?cs 
    178         var:wiki.author ?>" /> 
    179      </div> 
    180      <div class="field"> 
    181       <label for="comment">Comment about this change (optional):</label> 
    182       <br /><input id="comment" type="text" name="comment" size="60" value="<?cs 
    183         var:wiki.comment?>" /> 
     239      <label>Your email or username:<br /> 
     240      <input id="author" type="text" name="author" size="30" value="<?cs 
     241        var:wiki.author ?>" /></label> 
     242     </div> 
     243     <div class="field"> 
     244      <label>Comment about this change (optional):<br /> 
     245      <input id="comment" type="text" name="comment" size="60" value="<?cs 
     246        var:wiki.comment?>" /></label> 
    184247     </div><br /> 
    185248     <?cs if trac.acl.WIKI_ADMIN ?> 
    186249      <div class="options"> 
    187        <input type="checkbox" name="readonly" id="readonly"<?cs 
     250       <label><input type="checkbox" name="readonly" id="readonly"<?cs 
    188251         if wiki.readonly == "1"?>checked="checked"<?cs /if ?> /> 
    189        <label for="readonly">Page is read-only</label> 
     252       Page is read-only</label> 
    190253      </div> 
    191254     <?cs /if ?> 
    192255    </fieldset> 
    193     <div class="buttons"> 
    194      <input type="submit" name="save" value="Save changes" />&nbsp; 
    195      <input type="submit" name="preview" value="Preview" />&nbsp; 
     256    <div class="buttons"><?cs 
     257     if wiki.action == "collision" ?> 
     258      <input type="submit" name="preview" value="Preview" disabled="disabled" />&nbsp; 
     259      <input type="submit" name="save" value="Submit changes" disabled="disabled" />&nbsp; 
     260     <?cs else ?> 
     261      <input type="submit" name="preview" value="Preview" accesskey="r" />&nbsp; 
     262      <input type="submit" name="save" value="Submit changes" />&nbsp; 
     263     <?cs /if ?> 
    196264     <input type="submit" name="cancel" value="Cancel" /> 
    197     </div><?cs 
    198     if wiki.action == "preview" ?> 
    199      <fieldset id="preview"> 
    200       <legend>Preview</legend> 
    201       <div class="wikipage"><?cs var:wiki.page_html ?></div> 
    202      </fieldset><?cs 
    203     /if ?> 
     265    </div> 
     266    <script type="text/javascript" src="<?cs 
     267      var:htdocs_location ?>js/wikitoolbar.js"></script> 
    204268   </form> 
    205269  <?cs /if ?> 
     
    208272    <div id="searchable"><?cs var:wiki.page_html ?></div> 
    209273   </div> 
    210    <?cs if $wiki.attachments.0.name ?> 
     274   <?cs if:len(wiki.attachments) ?> 
    211275    <h3 id="tkt-changes-hdr">Attachments</h3> 
    212     <ul class="tkt-chg-list"> 
    213     <?cs each:a = wiki.attachments ?> 
    214       <li class="tkt-chg-change"><a href="<?cs var:a.href ?>"> 
    215       <?cs var:a.name ?></a> (<?cs var:a.size ?>) - 
    216       <?cs var:a.descr ?>, 
    217       added by <?cs var:a.author ?> on <?cs var:a.time ?>.</li> 
    218     <?cs /each ?> 
    219   </ul> 
     276    <ul class="tkt-chg-list"><?cs 
     277     each:attachment = wiki.attachments ?><li class="tkt-chg-change"><a href="<?cs 
     278      var:attachment.href ?>"><?cs 
     279      var:attachment.filename ?></a> (<?cs var:attachment.size ?>) -<?cs 
     280      if:attachment.description ?><q><?cs var:attachment.description ?></q>,<?cs 
     281      /if ?> added by <?cs var:attachment.author ?> on <?cs 
     282      var:attachment.time ?>.</li><?cs 
     283     /each ?> 
     284    </ul> 
    220285  <?cs /if ?> 
    221286  <?cs if wiki.action == "view" && (trac.acl.WIKI_MODIFY || trac.acl.WIKI_DELETE) 
    222287      && (wiki.readonly == "0" || trac.acl.WIKI_ADMIN) ?> 
    223    <div class="buttons"> 
    224     <?cs if:trac.acl.WIKI_MODIFY ?> 
    225      <form method="get" action=""><div> 
    226       <input type="hidden" name="edit" value="yes" /> 
    227       <input type="submit" value="Edit This Page" /> 
    228      </div></form> 
    229      <form method="get" action="<?cs var:wiki.attach_href ?>"><div> 
    230       <input type="submit" value="Attach File" /> 
     288   <div class="buttons"><?cs 
     289    if:trac.acl.WIKI_MODIFY ?> 
     290     <form method="get" action="<?cs var:wiki.current_href ?>"><div> 
     291      <input type="hidden" name="action" value="edit" /> 
     292      <input type="submit" value="<?cs if:wiki.exists ?>Edit<?cs 
     293        else ?>Create<?cs /if ?> this page" accesskey="e" /> 
     294     </div></form><?cs 
     295     if:wiki.exists ?> 
     296      <form method="get" action="<?cs var:wiki.attach_href ?>"><div> 
     297       <input type="hidden" name="action" value="new" /> 
     298       <input type="submit" value="Attach file" /> 
     299      </div></form><?cs 
     300     /if ?><?cs 
     301    /if ?><?cs 
     302    if:wiki.exists && trac.acl.WIKI_DELETE ?> 
     303     <form method="get" action="<?cs var:wiki.current_href ?>"><div id="delete"> 
     304      <input type="hidden" name="action" value="delete" /> 
     305      <input type="hidden" name="version" value="<?cs var:wiki.version ?>" /> 
     306      <input type="submit" name="delete_version" value="Delete this version" /> 
     307      <input type="submit" value="Delete page" /> 
    231308     </div></form> 
    232309    <?cs /if ?> 
    233     <?cs if:trac.acl.WIKI_DELETE ?> 
    234      <form method="post" action=""><div id="delete"> 
    235       <input type="hidden" name="edit_version" value="<?cs 
    236         var:wiki.edit_version?>" /> 
    237        <input type="submit" name="delete_ver" id="delete_ver" value="Delete This Version" onclick="return confirm('Do you really want to delete version <?cs var:wiki.edit_version?> of this page?\nThis is an irreversible operation.')" /> 
    238        <input type="submit" name="delete_page" value="Delete Page" onclick="return confirm('Do you really want to delete all versions of this page?\nThis is an irreversible operation.')" /> 
    239      </div></form> 
    240     <?cs /if ?> 
    241310   </div> 
    242311  <?cs /if ?> 
     312  <script type="text/javascript"> 
     313   addHeadingLinks(document.getElementById("searchable")); 
     314  </script> 
    243315 <?cs /if ?> 
    244316 <?cs /if ?> 
    245317</div> 
     318 
    246319<?cs include "footer.cs" ?> 
Note: See TracChangeset for help on using the changeset viewer.