19 | | Some examples: |
20 | | * Tickets: '''!#1''' or '''!ticket:1''' |
21 | | * Ticket comments: '''!comment:ticket:1:2''' |
22 | | * Reports: '''!{1}''' or '''!report:1''' |
23 | | * Changesets: '''!r1''', '''![1]''', '''!changeset:1''' or (restricted) '''![1/trunk]''', '''!changeset:1/trunk''', '''![2:5/trunk]''' |
24 | | * Revision log: '''!r1:3''', '''![1:3]''' or '''!log:@1:3''', '''!log:trunk@1:3''' |
25 | | * Diffs (requires [milestone:0.10 0.10]): '''!diff:@1:3''', '''!diff:tags/trac-0.9.2/wiki-default//tags/trac-0.9.3/wiki-default''' or '''!diff:trunk/trac@3538//sandbox/vc-refactoring@3539''' |
26 | | * Wiki pages: '''!CamelCase''' or '''!wiki:CamelCase''' |
27 | | * Parent page: '''![..]''' |
28 | | * Milestones: '''!milestone:1.0''' |
29 | | * Attachment: '''!attachment:ticket:944:attachment.1073.diff''' |
30 | | * Files: '''!source:trunk/COPYING''' |
31 | | * A specific file revision: '''!source:/trunk/COPYING@200''' |
32 | | * A particular line of a specific file revision: '''!source:/trunk/COPYING@200#L25''' |
33 | | Display: |
34 | | * Tickets: #1 or ticket:1 |
35 | | * Ticket comments: comment:ticket:1:2 |
36 | | * Reports: {1} or report:1 |
37 | | * Changesets: r1, [1], changeset:1, or (restricted) [1/trunk], changeset:1/trunk, [2:5/trunk] |
38 | | * Revision log: r1:3, [1:3] or log:@1:3, log:trunk@1:3 |
39 | | * Diffs (requires [milestone:0.10 0.10]): diff:@20:30, diff:tags/trac-0.9.2/wiki-default//tags/trac-0.9.3/wiki-default or diff:trunk/trac@3538//sandbox/vc-refactoring/trac@3539 |
40 | | * Wiki pages: CamelCase or wiki:CamelCase |
41 | | * Parent page: '''[..]''' |
42 | | * Milestones: milestone:1.0 |
43 | | * Attachment: attachment:ticket:944:attachment.1073.diff |
44 | | * Files: source:trunk/COPYING |
45 | | * A specific file revision: source:/trunk/COPYING@200 |
46 | | * A particular line of a specific file revision: source:/trunk/COPYING@200#L25 |
| 19 | == Overview == |
| 20 | |
| 21 | ||= Wiki Markup =||= Display =|| |
| 22 | {{{#!td |
| 23 | Wiki pages :: `CamelCase` or `wiki:CamelCase` |
| 24 | Parent page :: `[..]` |
| 25 | Tickets :: `#1` or `ticket:1` |
| 26 | Ticket comments :: `comment:1:ticket:2` |
| 27 | Reports :: `{1}` or `report:1` |
| 28 | Milestones :: `milestone:1.0` |
| 29 | Attachment :: `attachment:example.tgz` (for current page attachment), `attachment:attachment.1073.diff:ticket:944` (absolute path) |
| 30 | Changesets :: `r1`, `[1]`, `changeset:1` or (restricted) `[1/trunk]`, `changeset:1/trunk` |
| 31 | Revision log :: `r1:3`, `[1:3]` or `log:@1:3`, `log:trunk@1:3`, `[2:5/trunk]` |
| 32 | Diffs :: `diff:@1:3`, `diff:plugins/0.12/mercurial-plugin@9128:9953`, |
| 33 | `diff:tags/trac-0.9.2/wiki-default//tags/trac-0.9.3/wiki-default` |
| 34 | or `diff:trunk/trac@3538//sandbox/vc-refactoring@3539` |
| 35 | Files :: `source:trunk/COPYING`, `source:/trunk/COPYING@200` (at version 200), `source:/trunk/COPYING@200#L25` (at version 200, line 25) |
| 36 | }}} |
| 37 | {{{#!td |
| 38 | Wiki pages :: CamelCase or wiki:CamelCase |
| 39 | Parent page :: [..] |
| 40 | Tickets :: #1 or ticket:1 |
| 41 | Ticket comments :: comment:1:ticket:2 |
| 42 | Reports :: {1} or report:1 |
| 43 | Milestones :: milestone:1.0 |
| 44 | Attachment :: attachment:example.tgz (for current page attachment), attachment:attachment.1073.diff:ticket:944 (absolute path) |
| 45 | Changesets :: r1, [1], changeset:1 or (restricted) [1/trunk], changeset:1/trunk |
| 46 | Revision log :: r1:3, [1:3] or log:@1:3, log:trunk@1:3, [2:5/trunk] |
| 47 | Diffs :: diff:@1:3, diff:plugins/0.12/mercurial-plugin@9128:9953, |
| 48 | diff:tags/trac-0.9.2/wiki-default//tags/trac-0.9.3/wiki-default |
| 49 | or diff:trunk/trac@3538//sandbox/vc-refactoring@3539 |
| 50 | Files :: source:trunk/COPYING, source:/trunk/COPYING@200 (at version 200), source:/trunk/COPYING@200#L25 (at version 200, line 25) |
| 51 | }}} |
53 | | Trac links using the full (non-shorthand) notation can also be given a custom |
54 | | link title like this: |
55 | | |
56 | | {{{ |
57 | | [ticket:1 This is a link to ticket number one]. |
58 | | }}} |
59 | | |
60 | | Display: [ticket:1 This is a link to ticket number one]. |
61 | | |
62 | | If the title is omitted, only the id (the part after the colon) is displayed: |
63 | | |
64 | | {{{ |
65 | | [ticket:1] |
66 | | }}} |
67 | | |
68 | | Display: [ticket:1] |
69 | | |
70 | | `wiki` is the default if the namespace part of a full link is omitted (''since version 0.10''): |
71 | | |
72 | | {{{ |
73 | | [SandBox the sandbox] |
74 | | }}} |
75 | | |
76 | | Display: [SandBox the sandbox] |
| 58 | |
| 59 | {{{#!table class="" |
| 60 | |||| Trac links using the full (non-shorthand) notation can also be given a custom link title like this: || |
| 61 | {{{#!td |
| 62 | {{{ |
| 63 | [ticket:1 This is a link to ticket number one] or |
| 64 | [[ticket:1|This is another link to ticket number one]]. |
| 65 | }}} |
| 66 | }}} |
| 67 | {{{#!td |
| 68 | [ticket:1 This is a link to ticket number one] or |
| 69 | [[ticket:1|This is another link to ticket number one]]. |
| 70 | }}} |
| 71 | |-------------------------------------------------------------------------------------- |
| 72 | |||| If the title is omitted, only the id (the part after the colon) is displayed: || |
| 73 | {{{#!td |
| 74 | {{{ |
| 75 | [ticket:1] or [[ticket:2]] |
| 76 | }}} |
| 77 | }}} |
| 78 | {{{#!td |
| 79 | [ticket:1] or [[ticket:2]] |
| 80 | }}} |
| 81 | |-------------------------------------------------------------------------------------- |
| 82 | |||| `wiki` is the default if the namespace part of a full link is omitted: || |
| 83 | {{{#!td |
| 84 | {{{ |
| 85 | [SandBox the sandbox] or |
| 86 | [[SandBox|the sandbox]] |
| 87 | }}} |
| 88 | }}} |
| 89 | {{{#!td |
| 90 | [SandBox the sandbox] or |
| 91 | [[SandBox|the sandbox]] |
| 92 | }}} |
| 93 | |-------------------------------------------------------------------------------------- |
| 94 | |||| The short form ''realm:target'' can also be wrapped within a <...> pair, [[br]] which allow for arbitrary characters (i.e. anything but >) || |
| 95 | {{{#!td |
| 96 | {{{ |
| 97 | <wiki:Strange(page@!)> |
| 98 | }}} |
| 99 | }}} |
| 100 | {{{#!td |
| 101 | <wiki:Strange(page@!)> |
| 102 | }}} |
| 103 | }}} |
| 112 | To create a link to a [trac:SubWiki SubWiki]-page just use a '/': |
| 113 | {{{ |
| 114 | WikiPage/SubWikiPage or ./SubWikiPage |
| 115 | }}} |
| 116 | |
| 117 | To link from a [trac:SubWiki SubWiki] page to a parent, simply use a '..': |
| 118 | {{{ |
| 119 | [..] or [[..]] |
| 120 | }}} |
| 121 | [..] or [[..]] |
| 122 | |
| 123 | To link from a [trac:SubWiki SubWiki] page to a [=#sibling sibling] page, use a '../': |
| 124 | {{{ |
| 125 | [../Sibling see next sibling] or [[../Sibling|see next sibling]] |
| 126 | }}} |
| 127 | [../Sibling see next sibling] or [[../Sibling|see next sibling]] |
| 128 | |
| 129 | But in practice you often won't need to add the `../` prefix to link to a sibling page. |
| 130 | For resolving the location of a wiki link, it's the target page closest in the hierarchy |
| 131 | to the page where the link is written which will be selected. So for example, within |
| 132 | a sub-hierarchy, a sibling page will be targeted in preference to a toplevel page. |
| 133 | This makes it easy to copy or move pages to a sub-hierarchy by [[WikiNewPage#renaming|renaming]] without having to adapt the links. |
| 134 | |
| 135 | In order to link explicitly to a [=#toplevel toplevel] Wiki page, |
| 136 | use the `wiki:/` prefix. |
| 137 | Be careful **not** to use the `/` prefix alone, as this corresponds to the |
| 138 | [#Server-relativelinks] syntax and with such a link you will lack the `/wiki/` |
| 139 | part in the resulting URL. |
| 140 | |
| 141 | ''(Changed in 0.11)'' Note that in Trac 0.10, using e.g. `[../newticket]` may have worked for linking to the `/newticket` top-level URL, but since 0.11, such a link will stay in the wiki namespace and therefore link to a sibling page. |
| 142 | See [#Server-relativelinks] for the new syntax. |
| 143 | |
| 144 | === Link anchors === |
| 145 | |
87 | | [#Relativelinks relative links] |
88 | | }}} |
89 | | Displays: |
90 | | [#Relativelinks relative links] |
91 | | |
92 | | Hint: when you move your mouse over the title of a section, a '¶' character will be displayed. This is a link to that specific section and you can use this to copy the `#...` part inside a relative link to an anchor. |
93 | | |
94 | | To create a link to a SubWiki-page just use a '/': |
95 | | {{{ |
96 | | WikiPage/SubWikiPage or ./SubWikiPage |
97 | | }}} |
98 | | |
99 | | To link from a SubWiki page to a parent, simply use a '..': |
100 | | {{{ |
101 | | [..] |
102 | | }}} |
103 | | |
104 | | To link from a SubWiki page to a sibling page, use a '../': |
105 | | {{{ |
106 | | [../Sibling see next sibling] |
107 | | }}} |
108 | | |
109 | | ''(Changed in 0.11)'' Note that in Trac 0.10, using e.g. `[../newticket]` may have worked for linking to the /newticket top-level URL, but now in 0.11 it will stay in the wiki namespace and link to a sibling page. See [#Server-relativelinks] for the new syntax. |
| 148 | [#Linkanchors Link anchors] or [[#Linkanchors|Link anchors]] |
| 149 | }}} |
| 150 | [#Linkanchors Link anchors] or [[#Linkanchors|Link anchors]] |
| 151 | |
| 152 | Hint: when you move your mouse over the title of a section, a '¶' character will be displayed. This is a link to that specific section and you can use this to copy the `#...` part inside a relative link to an anchor. |
| 153 | |
| 154 | To create a link to the first or last occurrence of a term on a page, use a ''pseudo anchor'' starting with '#/' or '#?': |
| 155 | {{{ |
| 156 | [#/Milestone first occurrence of Milestone] or |
| 157 | [#?Milestone last occurrence of Milestone] |
| 158 | }}} |
| 159 | [#/Milestone first occurrence of Milestone] or |
| 160 | [#?Milestone last occurrence of Milestone] |
| 161 | This will also highlight all other matches on the linked page. By default only case sensitive matches are considered. To include case insensitive matches append '/i': |
| 162 | {{{ |
| 163 | [#/Milestone/i first occurrence of Milestone or milestone] or |
| 164 | [#?Milestone/i last occurrence of Milestone or milestone] |
| 165 | }}} |
| 166 | [#/Milestone/i first occurrence of Milestone or milestone] or |
| 167 | [#?Milestone/i last occurrence of Milestone or milestone] |
| 168 | |
| 169 | ''(since Trac 1.0)'' |
| 170 | |
| 171 | Such anchors can be very useful for linking to specific lines in a file in the source browser: |
| 172 | {{{ |
| 173 | [trac:source:tags/trac-0.12/trac/wiki/api.py#L127 Line 127] or |
| 174 | [trac:source:tags/trac-0.12/trac/ticket/roadmap.py#L47 Line 47] |
| 175 | }}} |
| 176 | [trac:source:tags/trac-0.12/trac/wiki/api.py#L127 Line 127] or |
| 177 | [trac:source:tags/trac-0.12/trac/ticket/roadmap.py#L47 Line 47] |
| 178 | (Hint: The line numbers displayed in the source browser are links to anchors on the respective lines.) |
| 179 | |
| 180 | Since such links become outdated when the file changes, it can be useful to link using a '#/' pseudo anchor instead: |
| 181 | {{{ |
| 182 | [trac:source:trunk/trac/wiki/api.py#/IWikiSyntaxProvider IWikiSyntaxProvider] or |
| 183 | [trac:source:trunk/trac/env.py#/ISystemInfoProvider ISystemInfoProvider] |
| 184 | }}} |
| 185 | [trac:source:trunk/trac/wiki/api.py#/IWikiSyntaxProvider IWikiSyntaxProvider] or |
| 186 | [trac:source:trunk/trac/env.py#/ISystemInfoProvider ISystemInfoProvider] |
187 | | * !attachment:wiki:MyPage:the_file.txt creates a link to the attachment the_file.txt of the !MyPage wiki page |
188 | | * !attachment:ticket:753:the_file.txt creates a link to the attachment the_file.txt of the ticket 753 |
| 271 | * !attachment:the_file.txt:wiki:MyPage creates a link to the attachment the_file.txt of the !MyPage wiki page |
| 272 | * !attachment:the_file.txt:ticket:753 creates a link to the attachment the_file.txt of the ticket 753 |
| 273 | |
| 274 | Note that the older way, putting the filename at the end, is still supported: !attachment:ticket:753:the_file.txt. |
| 275 | |
| 276 | If you'd like to create a direct link to the content of the attached file instead of a link to the attachment page, simply use `raw-attachment:` instead of `attachment:`. |
| 277 | |
| 278 | This can be useful for pointing directly to an HTML document, for example. Note that for this use case, you'd have to allow the web browser to render the content by setting `[attachment] render_unsafe_content = yes` (see TracIni#attachment-section). Caveat: only do that in environments for which you're 100% confident you can trust the people who are able to attach files, as otherwise this would open up your site to [wikipedia:Cross-site_scripting cross-site scripting] attacks. |
| 279 | |
| 280 | See also [#export:links]. |
| 281 | |
| 282 | === comment: links === |
| 283 | |
| 284 | When you're inside a given ticket, you can simply write e.g. !comment:3 to link to the third change comment. |
| 285 | It is possible to link to a comment of a specific ticket from anywhere using one of the following syntax: |
| 286 | - `comment:3:ticket:123` |
| 287 | - `ticket:123#comment:3` (note that you can't write `#123#!comment:3`!) |
| 288 | It is also possible to link to the ticket's description using one of the following syntax: |
| 289 | - `comment:description` (within the ticket) |
| 290 | - `comment:description:ticket:123` |
| 291 | - `ticket:123#comment:description` |
| 292 | |
| 293 | === htdocs: links === |
| 294 | |
| 295 | Use `htdocs:path/to/file` to reference files in the `htdocs` directory of the Trac environment, the [TracEnvironment#DirectoryStructure web resource directory]. |