Modified: bloodhound/vendor/trac/current/trac/wiki/default-pages/TracSearch
URL: 
http://svn.apache.org/viewvc/bloodhound/vendor/trac/current/trac/wiki/default-pages/TracSearch?rev=1639602&r1=1639601&r2=1639602&view=diff
==============================================================================
--- bloodhound/vendor/trac/current/trac/wiki/default-pages/TracSearch (original)
+++ bloodhound/vendor/trac/current/trac/wiki/default-pages/TracSearch Fri Nov 
14 11:06:23 2014
@@ -16,7 +16,8 @@ For example:
  * ![42] -- Opens change set 42
  * !#42 -- Opens ticket number 42
  * !{1} -- Opens report 1
- * /trunk -- Opens the browser for the `trunk` directory
+ * /trunk -- Opens the browser for the `trunk` directory in the default 
repository
+ * /repos1/trunk -- Opens the browser for the `trunk` directory in the 
`repos1` repository
 
 == Advanced ==
 

Modified: bloodhound/vendor/trac/current/trac/wiki/default-pages/TracStandalone
URL: 
http://svn.apache.org/viewvc/bloodhound/vendor/trac/current/trac/wiki/default-pages/TracStandalone?rev=1639602&r1=1639601&r2=1639602&view=diff
==============================================================================
--- bloodhound/vendor/trac/current/trac/wiki/default-pages/TracStandalone 
(original)
+++ bloodhound/vendor/trac/current/trac/wiki/default-pages/TracStandalone Fri 
Nov 14 11:06:23 2014
@@ -13,7 +13,7 @@ It can be used in a variety of situation
 
  * Fewer features: Tracd implements a very simple web-server and is not as 
configurable or as scalable as Apache httpd.
  * No native HTTPS support: [http://www.rickk.com/sslwrap/ sslwrap] can be 
used instead,
-   or [http://trac.edgewall.org/wiki/STunnelTracd stunnel -- a tutorial on how 
to use stunnel with tracd] or Apache with mod_proxy.
+   or [trac:wiki:STunnelTracd stunnel -- a tutorial on how to use stunnel with 
tracd] or Apache with mod_proxy.
 
 == Usage examples ==
 
@@ -21,7 +21,7 @@ A single project on port 8080. (http://l
 {{{
  $ tracd -p 8080 /path/to/project
 }}}
-Stricly speaking this will make your Trac accessible to everybody from your 
network rather than ''localhost only''. To truly limit it use ''--hostname'' 
option.
+Strictly speaking this will make your Trac accessible to everybody from your 
network rather than ''localhost only''. To truly limit it use ''--hostname'' 
option.
 {{{
  $ tracd --hostname=localhost -p 8080 /path/to/project
 }}}
@@ -95,6 +95,8 @@ $ net start tracd
 
 Tracd allows you to run Trac without the need for Apache, but you can take 
advantage of Apache's password tools (htpasswd and htdigest) to easily create a 
password file in the proper format for tracd to use in authentication. (It is 
also possible to create the password file without htpasswd or htdigest; see 
below for alternatives)
 
+Make sure you place the generated password files on a filesystem which 
supports sub-second timestamps, as Trac will monitor their modified time and 
changes happening on a filesystem with too coarse-grained timestamp resolution 
(like `ext2` or `ext3` on Linux) may go undetected.
+
 Tracd provides support for both Basic and Digest authentication. Digest is 
considered more secure. The examples below use Digest; to use Basic 
authentication, replace `--auth` with `--basic-auth` in the command line.
 
 The general format for using authentication is:

Modified: 
bloodhound/vendor/trac/current/trac/wiki/default-pages/TracSyntaxColoring
URL: 
http://svn.apache.org/viewvc/bloodhound/vendor/trac/current/trac/wiki/default-pages/TracSyntaxColoring?rev=1639602&r1=1639601&r2=1639602&view=diff
==============================================================================
--- bloodhound/vendor/trac/current/trac/wiki/default-pages/TracSyntaxColoring 
(original)
+++ bloodhound/vendor/trac/current/trac/wiki/default-pages/TracSyntaxColoring 
Fri Nov 14 11:06:23 2014
@@ -6,8 +6,8 @@ To do this, Trac uses external libraries
 Currently Trac supports syntax coloring using one or more of the following 
packages:
 
  * [http://pygments.pocoo.org/ Pygments], by far the preferred system, as it 
covers a wide range of programming languages and other structured texts and is 
actively supported
- * [http://www.codento.com/people/mtr/genscript/ GNU Enscript], commonly 
available on Unix but somewhat unsupported on Windows
- * [http://silvercity.sourceforge.net/ SilverCity], legacy system, some 
versions can be 
[http://trac.edgewall.org/wiki/TracFaq#why-is-my-css-code-not-being-highlighted-even-though-i-have-silvercity-installed
 problematic]
+ * [http://www.codento.com/people/mtr/genscript/ GNU Enscript], commonly 
available on Unix but somewhat unsupported on Windows //(use is deprecated)//
+ * [http://silvercity.sourceforge.net/ SilverCity], legacy system, some 
versions can be problematic //(use is deprecated)//
 
 
 To activate syntax coloring, simply install either one (or more) of these 
packages (see [#ExtraSoftware] section below).
@@ -16,7 +16,7 @@ If none of these packages is available, 
 
 === About Pygments ===
 
-Starting with trac 0.11 [http://pygments.org/ pygments] will be the new 
default highlighter. It's a highlighting library implemented in pure python, 
very fast, easy to extend and [http://pygments.org/docs/ well documented].
+Since Trac 0.11 [http://pygments.org/ pygments] is the new default 
highlighter. It's a highlighting library implemented in pure python, very fast, 
easy to extend and [http://pygments.org/docs/ well documented].
 
 The Pygments default style can specified in the [TracIni#mimeviewer-section 
mime-viewer] section of trac.ini. The default style can be overridden by 
setting a Style preference on the [/prefs/pygments preferences page]. 
 
@@ -35,7 +35,7 @@ In a similar way, a document with the mi
 
 HTML documents are directly rendered only if the `render_unsafe_html` settings 
are enabled in the TracIni (those settings are present in multiple sections, as 
there are different security concerns depending where the document comes from). 
If you want to ensure that an HTML document gets syntax highlighted and not 
rendered, use the `text/xml` mimetype.
 
-If mimetype such as 'svn:mime-type' is set to 'text/plain', there is no 
coloring even if file is known type like 'java'.
+If a mimetype property such as 'svn:mime-type' is set to 'text/plain', there 
is no coloring even if file is known type like 'java'.
 
 === List of Languages Supported, by Highlighter #language-supported
 

Modified: bloodhound/vendor/trac/current/trac/wiki/default-pages/TracTickets
URL: 
http://svn.apache.org/viewvc/bloodhound/vendor/trac/current/trac/wiki/default-pages/TracTickets?rev=1639602&r1=1639601&r2=1639602&view=diff
==============================================================================
--- bloodhound/vendor/trac/current/trac/wiki/default-pages/TracTickets 
(original)
+++ bloodhound/vendor/trac/current/trac/wiki/default-pages/TracTickets Fri Nov 
14 11:06:23 2014
@@ -27,7 +27,7 @@ A  ticket contains the following informa
  * '''Assigned to/Owner''' — Principal person responsible for handling the 
issue.
  * '''Cc''' — A comma-separated list of other users or E-Mail addresses to 
notify. ''Note that this does not imply responsiblity or any other policy.''
  * '''Resolution''' — Reason for why a ticket was closed. One of 
{{{fixed}}}, {{{invalid}}}, {{{wontfix}}}, {{{duplicate}}}, {{{worksforme}}}.
- * '''Status''' — What is the current status? One of {{{new}}}, 
{{{assigned}}}, {{{closed}}}, {{{reopened}}}.
+ * '''Status''' — What is the current status? One of {{{new}}}, 
{{{assigned}}}, {{{accepted}}}, {{{closed}}}, {{{reopened}}}.
  * '''Summary''' — A brief description summarizing the problem or issue. 
Simple text without WikiFormatting.
  * '''Description''' — The body of the ticket. A good description should be 
specific, descriptive and to the point. Accepts WikiFormatting.
 

Modified: 
bloodhound/vendor/trac/current/trac/wiki/default-pages/TracTicketsCustomFields
URL: 
http://svn.apache.org/viewvc/bloodhound/vendor/trac/current/trac/wiki/default-pages/TracTicketsCustomFields?rev=1639602&r1=1639601&r2=1639602&view=diff
==============================================================================
--- 
bloodhound/vendor/trac/current/trac/wiki/default-pages/TracTicketsCustomFields 
(original)
+++ 
bloodhound/vendor/trac/current/trac/wiki/default-pages/TracTicketsCustomFields 
Fri Nov 14 11:06:23 2014
@@ -39,11 +39,13 @@ The example below should help to explain
  * '''textarea''': Multi-line text area.
    * label: Descriptive label.
    * value: Default text.
-   * cols: Width in columns.
+   * cols: Width in columns
    * rows: Height in lines.
    * order: Sort order placement.
    * format: Either `plain` for plain text or `wiki` to interpret the content 
as WikiFormatting. (''since 0.11.3'')
 
+Macros will be expanded when rendering `textarea` fields with format `wiki`, 
but not when rendering `text` fields with format `wiki`.
+
 === Sample Config ===
 {{{
 [ticket-custom]
@@ -113,6 +115,14 @@ SELECT p.value AS __color__,
 
 Note in particular the `LEFT OUTER JOIN` statement here.
 
+Note that if your config file uses an uppercase name, e.g.,
+{{{
+[ticket-custom]
+
+Progress_Type = text
+}}}
+you would use lowercase in the SQL:  `AND c.name = 'progress_type'`
+
 === Updating the database ===
 
 As noted above, any tickets created before a custom field has been defined 
will not have a value for that field. Here's a bit of SQL (tested with SQLite) 
that you can run directly on the Trac database to set an initial value for 
custom ticket fields. Inserts the default value of 'None' into a custom field 
called 'request_source' for all tickets that have no existing value:

Modified: bloodhound/vendor/trac/current/trac/wiki/default-pages/TracUpgrade
URL: 
http://svn.apache.org/viewvc/bloodhound/vendor/trac/current/trac/wiki/default-pages/TracUpgrade?rev=1639602&r1=1639601&r2=1639602&view=diff
==============================================================================
--- bloodhound/vendor/trac/current/trac/wiki/default-pages/TracUpgrade 
(original)
+++ bloodhound/vendor/trac/current/trac/wiki/default-pages/TracUpgrade Fri Nov 
14 11:06:23 2014
@@ -14,10 +14,10 @@ It is not a good idea to update a runnin
 
 Get the new version as described in TracInstall, or your operating system 
specific procedure.
 
-If you already have a 0.11 version of Trac installed via `easy_install`, it 
might be easiest to also use `easy_install` to upgrade your Trac installation:
+If you already have a 0.12 version of Trac installed via `easy_install`, it 
might be easiest to also use `easy_install` to upgrade your Trac installation:
 
 {{{
-# easy_install --upgrade Trac==0.12
+# easy_install --upgrade Trac==1.0
 }}}
 
 If you do a manual (not operating system-specific) upgrade, you should also 
stop any running Trac servers before the installation. Doing "hot" upgrades is 
not advised, especially on Windows ([trac:#7265]).
@@ -73,8 +73,13 @@ Remove above note once #9936 is fixed.
 }}}
 
 === 6. Steps specific to a given Trac version  ===
+
 ==== Upgrading from Trac 0.12 to Trac 1.0 ==== #to1.0
 
+===== Python 2.4 no longer supported =====
+The minimum supported version of python is now 2.5
+
+===== Subversion components not enabled by default for new installations
 The Trac components for Subversion support are no longer enabled by default. 
To enable the svn support, you need to make sure the 
`tracopt.versioncontrol.svn` components are enabled, for example by setting the 
following in the TracIni:
 {{{
 [components]
@@ -82,8 +87,13 @@ tracopt.versioncontrol.svn.* = enabled
 }}}
 The upgrade procedure should take care of this and change the TracIni 
appropriately, unless you already had the svn components explicitly disabled.
 
+
+===== Attachments migrated to new location
 Another step in the automatic upgrade will change the way the attachments are 
stored. If you're a bit paranoid, you might want to take a backup of the 
`attachments` directory before upgrading (but if you are, you already did a 
full copy of the environment, no?). In case the `attachments` directory 
contains some files which are //not// attachments, the last step of the 
migration to the new layout will fail: the deletion of the now unused 
`attachments` directory can't be done if there are still files and folders in 
it. You may ignore this error, but better go have a look to these files, move 
them elsewhere and remove the `attachments` directory manually to cleanup the 
environment. The attachments themselves are now all located in your environment 
below the `files/attachments` directory.
 
+===== Behavior of `[ticket] default_owner` changed
+Prior to 1.0, the owner field of new tickets always defaulted to `[ticket] 
default_owner` when the value was not empty. If the value was empty, the owner 
field defaulted to to the Component's owner. In 1.0 and later, the 
`default_owner` must be set to `< default >` to make new tickets default to the 
Component's owner. This change allows the `default_owner` to be set to an empty 
value if no default owner is desired.
+
 
 ==== Upgrading from Trac 0.11 to Trac 0.12 ====
 
@@ -103,7 +113,7 @@ This may be of interest to users with on
 
 ===== Resynchronize the Trac Environment Against the Source Code Repository 
=====
 
-Each [TracEnvironment Trac environment] must be resynchronized against the 
source code repository in order to avoid errors such as 
"[http://trac.edgewall.org/ticket/6120 No changeset ??? in the repository]" 
while browsing the source through the Trac interface:
+Each [TracEnvironment Trac environment] must be resynchronized against the 
source code repository in order to avoid errors such as "[trac:#6120 No 
changeset ??? in the repository]" while browsing the source through the Trac 
interface:
 
 {{{
 trac-admin /path/to/projenv repository resync '*'
@@ -182,9 +192,8 @@ Upgrading Python to a newer version will
 If you've been using !CollabNet's Subversion package, you may need to 
uninstall that in favor of [http://alagazam.net/ Alagazam], which has the 
Python bindings readily available (see TracSubversion).  The good news is, that 
works with no tweaking.
 
 === Changing Database Backend ===
-==== SQLite to PostgreSQL ====
 
-The [http://trac-hacks.org/wiki/SqliteToPgScript sqlite2pg] script on 
[http://trac-hacks.org trac-hacks.org] has been written to assist in migrating 
a SQLite database to a PostgreSQL database
+The [http://trac-hacks.org/wiki/TracMigratePlugin TracMigratePlugin] on 
[http://trac-hacks.org trac-hacks.org] has been written to assist in migrating 
between SQLite, MySQL and PostgreSQL databases.
 
 === Upgrading from older versions of Trac === #OlderVersions
 

Modified: bloodhound/vendor/trac/current/trac/wiki/default-pages/TracWiki
URL: 
http://svn.apache.org/viewvc/bloodhound/vendor/trac/current/trac/wiki/default-pages/TracWiki?rev=1639602&r1=1639601&r2=1639602&view=diff
==============================================================================
--- bloodhound/vendor/trac/current/trac/wiki/default-pages/TracWiki (original)
+++ bloodhound/vendor/trac/current/trac/wiki/default-pages/TracWiki Fri Nov 14 
11:06:23 2014
@@ -14,7 +14,7 @@ As contributing to a wiki is essentially
 general advice regarding HTML authoring apply here as well.
 For example, the ''[http://www.w3.org/Provider/Style Style Guide for online 
hypertext]'' explains how to think about the
 [http://www.w3.org/Provider/Style/Structure.html overall structure of a work] 
-and how to organize information 
[http://www.w3.org/Provider/Style/WithinDocument.html within each document]. 
One of the most important tip is “make your HTML page such that you can read 
it even if you don't follow any links.”
+and how to organize information 
[http://www.w3.org/Provider/Style/WithinDocument.html within each document]. 
One of the most important tips is “make your HTML page such that you can read 
it even if you don't follow any links.”
 
 Learn more about:
  * WikiFormatting rules, including advanced topics like WikiMacros and 
WikiProcessors

Modified: bloodhound/vendor/trac/current/trac/wiki/default-pages/TracWorkflow
URL: 
http://svn.apache.org/viewvc/bloodhound/vendor/trac/current/trac/wiki/default-pages/TracWorkflow?rev=1639602&r1=1639601&r2=1639602&view=diff
==============================================================================
--- bloodhound/vendor/trac/current/trac/wiki/default-pages/TracWorkflow 
(original)
+++ bloodhound/vendor/trac/current/trac/wiki/default-pages/TracWorkflow Fri Nov 
14 11:06:23 2014
@@ -1,7 +1,7 @@
 = The Trac Ticket Workflow System =
 [[TracGuideToc]]
 
-The Trac issue database provides a configurable workflow.
+The Trac ticket system provides a configurable workflow.
 
 == The Default Ticket Workflow ==
 === Environments upgraded from 0.10 ===
@@ -58,7 +58,7 @@ reopen.operations = del_resolution
 
 There are several example workflows provided in the Trac source tree; look in 
[trac:source:trunk/contrib/workflow contrib/workflow] for `.ini` config 
sections.  One of those may be a good match for what you want. They can be 
pasted into the `[ticket-workflow]` section of your `trac.ini` file. However if 
you have existing tickets then there may be issues if those tickets have states 
that are not in the new workflow. 
 
-Here are some [http://trac.edgewall.org/wiki/WorkFlow/Examples diagrams] of 
the above examples.
+Here are some [trac:WorkFlow/Examples diagrams] of the above examples.
 
 == Basic Ticket Workflow Customization ==
 
@@ -67,7 +67,7 @@ Note: Ticket "statuses" or "states" are 
 Create a `[ticket-workflow]` section in `trac.ini`.
 Within this section, each entry is an action that may be taken on a ticket. 
 For example, consider the `accept` action from `simple-workflow.ini`:
-{{{
+{{{#!ini
 accept = new,accepted -> accepted
 accept.permissions = TICKET_MODIFY
 accept.operations = set_owner_to_self
@@ -77,34 +77,34 @@ The `accept.permissions` line specifies 
 The `accept.operations` line specifies changes that will be made to the ticket 
in addition to the status change when this action is taken.  In this case, when 
a user clicks on `accept`, the ticket owner field is updated to the logged in 
user.  Multiple operations may be specified in a comma separated list.
 
 The available operations are:
- - del_owner -- Clear the owner field.
- - set_owner -- Sets the owner to the selected or entered owner.
-   - ''actionname''`.set_owner` may optionally be set to a comma delimited 
list or a single value.
- - set_owner_to_self -- Sets the owner to the logged in user.
- - del_resolution -- Clears the resolution field
- - set_resolution -- Sets the resolution to the selected value.
-   - ''actionname''`.set_resolution` may optionally be set to a comma 
delimited list or a single value. Example:
-     {{{
+- **del_owner** -- Clear the owner field.
+- **set_owner** -- Sets the owner to the selected or entered owner. Defaults 
to the current user. When `[ticket] restrict_owner = true`, the select will be 
populated with users that have `TICKET_MODIFY` permission and an authenticated 
session.
+ - ''actionname''`.set_owner` may optionally be set to a comma delimited list 
of users that will be used to populate the select, or a single user.
+- **set_owner_to_self** -- Sets the owner to the logged in user.
+- **del_resolution** -- Clears the resolution field
+- **set_resolution** -- Sets the resolution to the selected value.
+ - ''actionname''`.set_resolution` may optionally be set to a comma delimited 
list or a single value. Example:
+ {{{#!ini
 resolve_new = new -> closed
 resolve_new.name = resolve
 resolve_new.operations = set_resolution
 resolve_new.permissions = TICKET_MODIFY
 resolve_new.set_resolution = invalid,wontfix
-     }}}
- - leave_status -- Displays "leave as <current status>" and makes no change to 
the ticket.
+}}}
+- **leave_status** -- Displays "leave as <current status>" and makes no change 
to the ticket.
 '''Note:''' Specifying conflicting operations (such as `set_owner` and 
`del_owner`) has unspecified results.
 
-{{{
+In this example, we see the `.name` attribute used.  The action here is 
`resolve_accepted`, but it will be presented to the user as `resolve`.
+
+{{{#!ini
 resolve_accepted = accepted -> closed
 resolve_accepted.name = resolve
 resolve_accepted.permissions = TICKET_MODIFY
 resolve_accepted.operations = set_resolution
 }}}
 
-In this example, we see the `.name` attribute used.  The action here is 
`resolve_accepted`, but it will be presented to the user as `resolve`.
-
 For actions that should be available in all states, `*` may be used in place 
of the state.  The obvious example is the `leave` action:
-{{{
+{{{#!ini
 leave = * -> *
 leave.operations = leave_status
 leave.default = 1
@@ -114,24 +114,22 @@ If not specified for an action, `.defaul
 
 There are a couple of hard-coded constraints to the workflow.  In particular, 
tickets are created with status `new`, and tickets are expected to have a 
`closed` state.  Further, the default reports/queries treat any state other 
than `closed` as an open state.
 
-While creating or modifying a ticket workflow, 
`contrib/workflow/workflow_parser.py` may be useful.  It can create `.dot` 
files that [http://www.graphviz.org GraphViz] understands to provide a visual 
description of the workflow.
+Workflows can be visualized by rendering them on the wiki using the 
[WikiMacros#Workflow-macro Workflow macro].
 
-This can be done as follows (your install path may be different).
-{{{
+Workflows can also be visualized using the 
`contrib/workflow/workflow_parser.py` script.  The script outputs `.dot` files 
that [http://www.graphviz.org GraphViz] understands. The script can be used as 
follows (your install path may be different):
+{{{#!sh
 cd /var/local/trac_devel/contrib/workflow/
 sudo ./showworkflow /srv/trac/PlannerSuite/conf/trac.ini
 }}}
 And then open up the resulting `trac.pdf` file created by the script (it will 
be in the same directory as the `trac.ini` file).
 
-An online copy of the workflow parser is available at 
http://foss.wush.net/cgi-bin/visual-workflow.pl
-
 After you have changed a workflow, you need to restart apache for the changes 
to take effect. This is important, because the changes will still show up when 
you run your script, but all the old workflow steps will still be there until 
the server is restarted.
 
 == Example: Adding optional Testing with Workflow ==
 
 By adding the following to your [ticket-workflow] section of trac.ini you get 
optional testing.  When the ticket is in new, accepted or needs_work status you 
can choose to submit it for testing.  When it's in the testing status the user 
gets the option to reject it and send it back to needs_work, or pass the 
testing and send it along to closed.  If they accept it then it gets 
automatically marked as closed and the resolution is set to fixed.  Since all 
the old work flow remains, a ticket can skip this entire section.
 
-{{{
+{{{#!ini
 testing = new,accepted,needs_work,assigned,reopened -> testing
 testing.name = Submit to reporter for testing
 testing.permissions = TICKET_MODIFY
@@ -161,7 +159,7 @@ Sometimes Trac is used in situations whe
 
 The new `reviewing` state along with its associated `review` action looks like 
this:
 
-{{{
+{{{#!ini
 review = new,assigned,reopened -> reviewing
 review.operations = set_owner
 review.permissions = TICKET_MODIFY
@@ -169,7 +167,7 @@ review.permissions = TICKET_MODIFY
 
 Then, to integrate this with the default Trac 0.11 workflow, you also need to 
add the `reviewing` state to the `accept` and `resolve` actions, like so:
 
-{{{
+{{{#!ini
 accept = new,reviewing -> assigned
 […]
 resolve = new,assigned,reopened,reviewing -> closed
@@ -177,7 +175,7 @@ resolve = new,assigned,reopened,reviewin
 
 Optionally, you can also add a new action that allows you to change the 
ticket's owner without moving the ticket out of the `reviewing` state. This 
enables you to reassign review work without pushing the ticket back to the 
`new` status.
 
-{{{
+{{{#!ini
 reassign_reviewing = reviewing -> *
 reassign_reviewing.name = reassign review
 reassign_reviewing.operations = set_owner
@@ -186,7 +184,7 @@ reassign_reviewing.permissions = TICKET_
 
 The full `[ticket-workflow]` configuration will thus look like this:
 
-{{{
+{{{#!ini
 [ticket-workflow]
 accept = new,reviewing -> assigned
 accept.operations = set_owner_to_self
@@ -214,9 +212,9 @@ reassign_reviewing.permissions = TICKET_
 
 == Example: Limit the resolution options for a new ticket ==
 
-The above resolve_new operation allows you to set the possible resolutions for 
a new ticket.  By modifying the existing resolve action and removing the new 
status from before the `->` we then get two resolve actions.  One with limited 
resolutions for new tickets, and then the regular one once a ticket is accepted.
+The above `resolve_new` operation allows you to set the possible resolutions 
for a new ticket.  By modifying the existing resolve action and removing the 
new status from before the `->` we then get two resolve actions.  One with 
limited resolutions for new tickets, and then the regular one once a ticket is 
accepted.
 
-{{{
+{{{#!ini
 resolve_new = new -> closed
 resolve_new.name = resolve
 resolve_new.operations = set_resolution
@@ -238,32 +236,6 @@ But if even that is not enough, you can 
 
 If you add additional states to your workflow, you may want to customize your 
milestone progress bars as well.  See [TracIni#milestone-groups-section 
TracIni].
 
-== some ideas for next steps ==
-
-New enhancement ideas for the workflow system should be filed as enhancement 
tickets against the `ticket system` component.  If desired, add a single-line 
link to that ticket here.  Also look at the 
[http://trac-hacks.org/wiki/AdvancedTicketWorkflowPlugin 
AdvancedTicketWorkflowPlugin] as it provides experimental operations.
-
-If you have a response to the comments below, create an enhancement ticket, 
and replace the description below with a link to the ticket.
-
- * the "operation" could be on the nodes, possible operations are:
-   * '''preops''': automatic, before entering the state/activity
-   * '''postops''': automatic, when leaving the state/activity
-   * '''actions''': can be chosen by the owner in the list at the bottom, 
and/or drop-down/pop-up together with the default actions of leaving the node 
on one of the arrows.
-''This appears to add complexity without adding functionality; please provide 
a detailed example where these additions allow something currently impossible 
to implement.''
-
- * operations could be anything: sum up the time used for the activity, or 
just write some statistical fields like 
-''A workflow plugin can add an arbitrary workflow operation, so this is 
already possible.''
-
- * set_actor should be an operation allowing to set the owner, e.g. as a 
"preop":
-   * either to a role, a person
-   * entered fix at define time, or at run time, e.g. out of a field, or 
select.
-''This is either duplicating the existing `set_owner` operation, or needs to 
be clarified.''
-
- * Actions should be selectable based on the ticket type (different Workflows 
for different tickets)
-''Look into the [http://trac-hacks.org/wiki/AdvancedTicketWorkflowPlugin 
AdvancedTicketWorkflowPlugin]'s `triage` operation.''
-
- * I'd wish to have an option to perform automatic status changes. In my case, 
I do not want to start with "new", but with "assigned". So tickets in state 
"new" should automatically go into state "assigned". Or is there already a way 
to do this and I just missed it?
-''Have a look at [http://trac-hacks.org/wiki/TicketCreationStatusPlugin 
TicketCreationStatusPlugin] and 
[http://trac-hacks.org/wiki/TicketConditionalCreationStatusPlugin 
TicketConditionalCreationStatusPlugin]''
-
- * I added a 'testing' state. A tester can close the ticket or reject it. I'd 
like the transition from testing to rejected to set the owner to the person 
that put the ticket in 'testing'. The 
[http://trac-hacks.org/wiki/AdvancedTicketWorkflowPlugin 
AdvancedTicketWorkflowPlugin] is close with set_owner_to_field, but we need 
something like set_field_to_owner.
+== Ideas for next steps ==
 
- * I'd like to track the time a ticket is in each state, adding up 'disjoints' 
intervals in the same state.
+New enhancement ideas for the workflow system should be filed as enhancement 
tickets against the `ticket system` component.  You can also document ideas on 
the [trac:TracIdeas/TracWorkflow TracIdeas/TracWorkflow] page.  Also look at 
the [http://trac-hacks.org/wiki/AdvancedTicketWorkflowPlugin 
AdvancedTicketWorkflowPlugin] as it provides experimental operations.

Modified: bloodhound/vendor/trac/current/trac/wiki/default-pages/WikiFormatting
URL: 
http://svn.apache.org/viewvc/bloodhound/vendor/trac/current/trac/wiki/default-pages/WikiFormatting?rev=1639602&r1=1639601&r2=1639602&view=diff
==============================================================================
--- bloodhound/vendor/trac/current/trac/wiki/default-pages/WikiFormatting 
(original)
+++ bloodhound/vendor/trac/current/trac/wiki/default-pages/WikiFormatting Fri 
Nov 14 11:06:23 2014
@@ -263,6 +263,7 @@ The Trac wiki supports the following fon
    * ,,subscript,,
    * **also bold**, //italic as well//, 
      and **'' bold italic **'' //(since 0.12)//
+   * [[span(style=color: #FF0000, a red text )]]
   }}}
 }}}
 {{{#!td
@@ -280,6 +281,7 @@ The Trac wiki supports the following fon
  * ,,subscript,,
  * **also bold**, //italic as well//, 
    and **'' bold italic **'' //(since 0.12)//
+ * [[span(style=color: #FF0000, a red text )]]
 }}}
 
 Notes:
@@ -736,9 +738,9 @@ You may avoid making hyperlinks out of T
   }}}
   {{{
 Various forms of escaping for list markup:
- `-` escaped minus sign \\
- ``1. escaped number  \\
- {{{*}}} escaped asterisk sign
+ ^^- escaped minus sign \\
+ ^^1. escaped number  \\
+ ^^* escaped asterisk sign
   }}}
 }}}
 {{{#!td
@@ -746,9 +748,9 @@ Various forms of escaping for list marku
  !#42 is not a link
 
 Various forms of escaping for list markup:
- `-` escaped minus sign \\
- ``1. escaped number  \\
- {{{*}}} escaped asterisk sign
+ ^^- escaped minus sign \\
+ ^^1. escaped number  \\
+ ^^* escaped asterisk sign
 }}}
 
 == Images ==
@@ -1004,4 +1006,3 @@ See?
 {{{#!td
 !WikiCreole style \\ line\\break
 }}}
-

Modified: bloodhound/vendor/trac/current/trac/wiki/default-pages/WikiMacros
URL: 
http://svn.apache.org/viewvc/bloodhound/vendor/trac/current/trac/wiki/default-pages/WikiMacros?rev=1639602&r1=1639601&r2=1639602&view=diff
==============================================================================
--- bloodhound/vendor/trac/current/trac/wiki/default-pages/WikiMacros (original)
+++ bloodhound/vendor/trac/current/trac/wiki/default-pages/WikiMacros Fri Nov 
14 11:06:23 2014
@@ -101,7 +101,7 @@ class TimeStampMacro(WikiMacroBase):
 
     def expand_macro(self, formatter, name, text):
         t = datetime.now(utc)
-        return tag.b(format_datetime(t, '%c'))
+        return tag.strong(format_datetime(t, '%c'))
 }}}
 
 === Macro with arguments ===

Modified: bloodhound/vendor/trac/current/trac/wiki/default-pages/WikiNewPage
URL: 
http://svn.apache.org/viewvc/bloodhound/vendor/trac/current/trac/wiki/default-pages/WikiNewPage?rev=1639602&r1=1639601&r2=1639602&view=diff
==============================================================================
--- bloodhound/vendor/trac/current/trac/wiki/default-pages/WikiNewPage 
(original)
+++ bloodhound/vendor/trac/current/trac/wiki/default-pages/WikiNewPage Fri Nov 
14 11:06:23 2014
@@ -3,14 +3,14 @@
 
 Note: make sure you actually have the rights to edit wiki pages. If you don't 
see the **Edit this page** button, read the information relative to the editing 
policy for your Trac installation (usually on the front page WikiStart), or 
contact your local Trac administrator.
 
+You can create a new wiki page by typing the CamelCase name of the page in the 
quick-search field at the top of the page, or by trying to view a wiki page of 
that name (That is by visiting http://trac.edgewall.org/wiki/MyNewWikiPage for 
example). But note that the page will effectively be "orphaned" unless you link 
to it from somewhere else. Alternatively:
+
  1. Choose a name for your new page. See WikiPageNames for naming conventions.
  2. Edit an existing page (or any other resources that support WikiFormatting 
and add a [TracLinks link] to your new page. Save your changes.
  3. Follow the link you created to take you to the new page. Trac will display 
a "describe !PageName here" message.
  4. Click the "Edit this page" button to edit and add content to your new 
page. Save your changes.
  5. All done. Your new page is published.
 
-You can skip the second step by entering the CamelCase name of the page in the 
quick-search field at the top of the page. But note that the page will 
effectively be "orphaned" unless you link to it from somewhere else.
-
 == Rename a page #renaming
 
 While picking up good WikiPageNames is important, you can always change your 
mind

Modified: bloodhound/vendor/trac/current/trac/wiki/default-pages/WikiProcessors
URL: 
http://svn.apache.org/viewvc/bloodhound/vendor/trac/current/trac/wiki/default-pages/WikiProcessors?rev=1639602&r1=1639601&r2=1639602&view=diff
==============================================================================
--- bloodhound/vendor/trac/current/trac/wiki/default-pages/WikiProcessors 
(original)
+++ bloodhound/vendor/trac/current/trac/wiki/default-pages/WikiProcessors Fri 
Nov 14 11:06:23 2014
@@ -155,8 +155,9 @@ The following processors are included in
 
 || '''`#!default`''' || Present the text verbatim in a preformatted text 
block. This is the same as specifying ''no'' processor name (and no `#!`) ||
 || '''`#!comment`''' || Do not process the text in this section (i.e. contents 
exist only in the plain text - not in the rendered page). ||
+|| '''`#!rtl`''' || Introduce a Right-To-Left block with appropriate CSS 
direction and styling ''(since 0.12.2)'' ||
 |||| ||
-||||= '''HTML related''' =||
+||||= '''[=#HTMLrelated HTML related]''' =||
 || '''`#!html`''' || Insert custom HTML in a wiki page. ||
 || '''`#!htmlcomment`''' || Insert an HTML comment in a wiki page (''since 
0.12''). ||
 || || Note that `#!html` blocks have to be ''self-contained'', i.e. you can't 
start an HTML element in one block and close it later in a second block. Use 
the following processors for achieving a similar effect.  ||
@@ -164,14 +165,15 @@ The following processors are included in
 || '''`#!span`''' || Wrap an arbitrary Wiki content inside a <span> element 
(''since 0.11''). ||
 || '''`#!td`''' || Wrap an arbitrary Wiki content inside a <td> element 
(''since 0.12'') ||
 || '''`#!th`''' || Wrap an arbitrary Wiki content inside a <th> element 
(''since 0.12'') ||
-|| '''`#!tr`''' || Can optionally be used for wrapping `#!td` and `#!th` 
blocks, either for specifying row attributes of better visual grouping (''since 
0.12'') ||
+|| '''`#!tr`''' || Can optionally be used for wrapping `#!td` and `#!th` 
blocks, either for specifying row attributes or better visual grouping (''since 
0.12'') ||
+|| '''`#!table`''' || Can optionally be used for wrapping `#!tr`, `#!td` and 
`#!th` blocks, for specifying table attributes. One current limitation however 
is that tables cannot be nested. (''since 0.12'') || 
 || || See WikiHtml for example usage and more details about these processors. 
||
 |||| ||
 ||||= '''Other Markups''' =||
 || '''`#!rst`''' || Trac support for Restructured Text. See 
WikiRestructuredText. ||
 || '''`#!textile`''' || Supported if 
[http://cheeseshop.python.org/pypi/textile Textile] is installed. See 
[http://www.textism.com/tools/textile/ a Textile reference]. ||
 |||| ||
-||||= '''Code Highlighting Support''' =||
+||||= '''[=#CodeHighlightingSupport Code Highlighting Support]''' =||
 || '''`#!c`''' [[BR]] '''`#!cpp`''' (C++) [[BR]] '''`#!python`''' [[BR]] 
'''`#!perl`''' [[BR]] '''`#!ruby`''' [[BR]] '''`#!php`''' [[BR]] '''`#!asp`''' 
[[BR]] '''`#!java`''' [[BR]] '''`#!js`''' (Javascript) [[BR]] '''`#!sql`''' 
[[BR]] '''`#!xml`''' (XML or HTML) [[BR]] '''`#!sh`''' (!Bourne/Bash shell) 
[[BR]] '''etc.''' [[BR]] || Trac includes processors to provide inline syntax 
highlighting for source code in various languages. [[BR]] [[BR]] Trac relies on 
external software packages for syntax coloring, like [http://pygments.org 
Pygments]. [[BR]] [[BR]] See TracSyntaxColoring for information about which 
languages are supported and how to enable support for more languages. ||
 |||| ||
 

Modified: bloodhound/vendor/trac/current/trac/wiki/formatter.py
URL: 
http://svn.apache.org/viewvc/bloodhound/vendor/trac/current/trac/wiki/formatter.py?rev=1639602&r1=1639601&r2=1639602&view=diff
==============================================================================
--- bloodhound/vendor/trac/current/trac/wiki/formatter.py (original)
+++ bloodhound/vendor/trac/current/trac/wiki/formatter.py Fri Nov 14 11:06:23 
2014
@@ -35,7 +35,7 @@ from trac.util import arity
 from trac.util.text import exception_to_unicode, shorten_line, to_unicode, \
                            unicode_quote, unicode_quote_plus, unquote_label
 from trac.util.html import TracHTMLSanitizer
-from trac.util.translation import _
+from trac.util.translation import _, tag_
 from trac.wiki.api import WikiSystem, parse_args
 from trac.wiki.parser import WikiParser, parse_processor_args
 
@@ -186,7 +186,8 @@ class WikiProcessor(object):
                     self.processor = self._mimeview_processor
         if not self.processor:
             self.processor = self._default_processor
-            self.error = "No macro or processor named '%s' found" % name
+            self.error = _("No macro or processor named '%(name)s' found",
+                           name=name)
 
     # inline checks
 
@@ -350,8 +351,8 @@ class WikiProcessor(object):
 
     def process(self, text, in_paragraph=False):
         if self.error:
-            text = system_message(tag('Error: Failed to load processor ',
-                                      tag.code(self.name)),
+            text = system_message(tag_("Error: Failed to load processor "
+                                       "%(name)s", name=tag.code(self.name)),
                                   self.error)
         else:
             text = self.processor(text)
@@ -492,21 +493,42 @@ class Formatter(object):
 
     def _indirect_tag_handler(self, match, tag):
         """Handle binary inline style tags (indirect way, 0.12)"""
+        if self._list_stack and not self.in_list_item:
+            self.close_list()
+
         if self.tag_open_p(tag):
             return self.close_tag(tag)
         else:
             return self.open_tag(tag)
 
     def _bolditalic_formatter(self, match, fullmatch):
+        if self._list_stack and not self.in_list_item:
+            self.close_list()
+
+        bold_open = self.tag_open_p('MM_BOLD')
         italic_open = self.tag_open_p('MM_ITALIC')
-        tmp = ''
-        if italic_open:
-            tmp += self._get_close_tag('MM_ITALIC')
-            self.close_tag('MM_ITALIC')
-        tmp += self._bold_formatter(match, fullmatch)
-        if not italic_open:
-            tmp += self.open_tag('MM_ITALIC')
-        return tmp
+        if bold_open and italic_open:
+            bold_idx = self._open_tags.index('MM_BOLD')
+            italic_idx = self._open_tags.index('MM_ITALIC')
+            if italic_idx < bold_idx:
+                close_tags = ('MM_BOLD', 'MM_ITALIC')
+            else:
+                close_tags = ('MM_ITALIC', 'MM_BOLD')
+            open_tags = ()
+        elif bold_open:
+            close_tags = ('MM_BOLD',)
+            open_tags = ('MM_ITALIC',)
+        elif italic_open:
+            close_tags = ('MM_ITALIC',)
+            open_tags = ('MM_BOLD',)
+        else:
+            close_tags = ()
+            open_tags = ('MM_BOLD', 'MM_ITALIC')
+
+        tmp = []
+        tmp.extend(self.close_tag(tag) for tag in close_tags)
+        tmp.extend(self.open_tag(tag) for tag in open_tags)
+        return ''.join(tmp)
 
     def _bold_formatter(self, match, fullmatch):
         return self._indirect_tag_handler(match, 'MM_BOLD')
@@ -767,8 +789,8 @@ class Formatter(object):
         except Exception, e:
             self.env.log.error('Macro %s(%s) failed:%s', name, args,
                                exception_to_unicode(e, traceback=True))
-            return system_message('Error: Macro %s(%s) failed' % (name, args),
-                                  to_unicode(e))
+            return system_message(_("Error: Macro %(name)s(%(args)s) failed",
+                                    name=name, args=args), to_unicode(e))
 
     # Headings
 
@@ -1132,7 +1154,8 @@ class Formatter(object):
                                          for l in self.code_buf]
                     self.code_buf.append('')
                 code_text = os.linesep.join(self.code_buf)
-                processed = self.code_processor.process(code_text)
+                processed = self._exec_processor(self.code_processor,
+                                                 code_text)
                 self.out.write(_markup_to_unicode(processed))
             else:
                 self.code_buf.append(line)
@@ -1153,6 +1176,15 @@ class Formatter(object):
         while self.in_code_block > 0:
             self.handle_code_block(WikiParser.ENDBLOCK)
 
+    def _exec_processor(self, processor, text):
+        try:
+            return processor.process(text)
+        except Exception, e:
+            self.env.log.error('Processor %s failed:%s', processor.name,
+                               exception_to_unicode(e, traceback=True))
+            return system_message(_("Error: Processor %(name)s failed",
+                                    name=processor.name), to_unicode(e))
+
     # > quotes
 
     def handle_quote_block(self, line):

Modified: bloodhound/vendor/trac/current/trac/wiki/intertrac.py
URL: 
http://svn.apache.org/viewvc/bloodhound/vendor/trac/current/trac/wiki/intertrac.py?rev=1639602&r1=1639601&r2=1639602&view=diff
==============================================================================
--- bloodhound/vendor/trac/current/trac/wiki/intertrac.py (original)
+++ bloodhound/vendor/trac/current/trac/wiki/intertrac.py Fri Nov 14 11:06:23 
2014
@@ -21,7 +21,7 @@ from genshi.builder import Element, Frag
 from trac.config import ConfigSection
 from trac.core import *
 from trac.util.html import find_element
-from trac.util.translation import _, N_
+from trac.util.translation import N_, _, tag_
 from trac.web.api import IRequestHandler
 from trac.wiki.api import IWikiMacroProvider
 from trac.wiki.formatter import extract_link
@@ -52,7 +52,7 @@ class InterTracDispatcher(Component):
            it doesn't know how to dispatch an InterTrac link, and it's up to
            the local Trac to prepare the correct link. Not all links will work
            that way, but the most common do. This is called the compatibility
-           mode, and is `true` by default.
+           mode, and is `false` by default.
          * If you know that the remote Trac knows how to dispatch InterTrac
            links, you can explicitly disable this compatibility mode and then
            ''any'' TracLinks can become InterTrac links.
@@ -123,16 +123,18 @@ class InterTracDispatcher(Component):
         def generate_prefix(prefix):
             intertrac = intertracs[prefix]
             if isinstance(intertrac, basestring):
-                yield tag.tr(tag.td(tag.b(prefix)),
-                             tag.td('Alias for ', tag.b(intertrac)))
+                yield tag.tr(tag.td(tag.strong(prefix)),
+                             tag.td(tag_("Alias for %(name)s",
+                                         name=tag.strong(intertrac))))
             else:
                 url = intertrac.get('url', '')
                 if url:
                     title = intertrac.get('title', url)
-                    yield tag.tr(tag.td(tag.a(tag.b(prefix),
+                    yield tag.tr(tag.td(tag.a(tag.strong(prefix),
                                               href=url + '/timeline')),
                                  tag.td(tag.a(title, href=url)))
 
         return tag.table(class_="wiki intertrac")(
-            tag.tr(tag.th(tag.em('Prefix')), tag.th(tag.em('Trac Site'))),
+            tag.tr(tag.th(tag.em(_("Prefix"))),
+                   tag.th(tag.em(_("Trac Site")))),
             [generate_prefix(p) for p in sorted(intertracs.keys())])

Modified: bloodhound/vendor/trac/current/trac/wiki/interwiki.py
URL: 
http://svn.apache.org/viewvc/bloodhound/vendor/trac/current/trac/wiki/interwiki.py?rev=1639602&r1=1639601&r2=1639602&view=diff
==============================================================================
--- bloodhound/vendor/trac/current/trac/wiki/interwiki.py (original)
+++ bloodhound/vendor/trac/current/trac/wiki/interwiki.py Fri Nov 14 11:06:23 
2014
@@ -172,8 +172,8 @@ class InterWikiMap(Component):
                 'rc_url': self._expand_or_append(url, ['RecentChanges']),
                 'description': url if title == prefix else title})
 
-        return tag.table(tag.tr(tag.th(tag.em("Prefix")),
-                                tag.th(tag.em("Site"))),
+        return tag.table(tag.tr(tag.th(tag.em(_("Prefix"))),
+                                tag.th(tag.em(_("Site")))),
                          [tag.tr(tag.td(tag.a(w['prefix'], href=w['rc_url'])),
                                  tag.td(tag.a(w['description'],
                                               href=w['url'])))

Modified: bloodhound/vendor/trac/current/trac/wiki/macros.py
URL: 
http://svn.apache.org/viewvc/bloodhound/vendor/trac/current/trac/wiki/macros.py?rev=1639602&r1=1639601&r2=1639602&view=diff
==============================================================================
--- bloodhound/vendor/trac/current/trac/wiki/macros.py (original)
+++ bloodhound/vendor/trac/current/trac/wiki/macros.py Fri Nov 14 11:06:23 2014
@@ -14,6 +14,8 @@
 #
 # Author: Christopher Lenz <cml...@gmx.de>
 
+from __future__ import with_statement
+
 from fnmatch import fnmatchcase
 from itertools import groupby
 import inspect
@@ -327,8 +329,9 @@ class RecentChangesMacro(WikiMacroBase):
                         max(time) AS max_time FROM wiki"""
         args = []
         if prefix:
-            sql += " WHERE name LIKE %s"
-            args.append(prefix + '%')
+            with self.env.db_query as db:
+                sql += " WHERE name %s" % db.prefix_match()
+                args.append(db.prefix_match_value(prefix))
         sql += " GROUP BY name ORDER BY max_time DESC"
         if limit:
             sql += " LIMIT %s"
@@ -355,8 +358,9 @@ class RecentChangesMacro(WikiMacroBase):
 
         items_per_date = (
             (date, (tag.li(tag.a(page, href=formatter.href.wiki(name)),
-                           tag.small(' (', tag.a('diff', href=diff_href), ')')
-                           if diff_href else None, '\n')
+                           tag.small(' (', tag.a(_("diff"), href=diff_href),
+                                     ')') if diff_href else None,
+                           '\n')
                     for page, name, version, diff_href in entries))
             for date, entries in entries_per_date)
 

Modified: bloodhound/vendor/trac/current/trac/wiki/model.py
URL: 
http://svn.apache.org/viewvc/bloodhound/vendor/trac/current/trac/wiki/model.py?rev=1639602&r1=1639601&r2=1639602&view=diff
==============================================================================
--- bloodhound/vendor/trac/current/trac/wiki/model.py (original)
+++ bloodhound/vendor/trac/current/trac/wiki/model.py Fri Nov 14 11:06:23 2014
@@ -39,7 +39,7 @@ class WikiPage(object):
             name = self.resource.id
         else:
             if version:
-                version = int(version) # must be a number or None
+                version = int(version)  # must be a number or None
             self.resource = Resource('wiki', name, version)
         self.name = name
         if name:
@@ -167,7 +167,7 @@ class WikiPage(object):
     def rename(self, new_name):
         """Rename wiki page in-place, keeping the history intact.
         Renaming a page this way will eventually leave dangling references
-        to the old page - which litterally doesn't exist anymore.
+        to the old page - which literally doesn't exist anymore.
         """
         if not self.exists:
             raise TracError(_("Cannot rename non-existent page"))
@@ -192,7 +192,7 @@ class WikiPage(object):
                                     new_name)
 
         self.name = self.resource.id = new_name
-        self.env.log.info('Renamed page %s to %s', old_name, new_name)
+        self.env.log.info("Renamed page %s to %s", old_name, new_name)
 
         for listener in WikiSystem(self.env).change_listeners:
             if hasattr(listener, 'wiki_page_renamed'):

Modified: bloodhound/vendor/trac/current/trac/wiki/parser.py
URL: 
http://svn.apache.org/viewvc/bloodhound/vendor/trac/current/trac/wiki/parser.py?rev=1639602&r1=1639601&r2=1639602&view=diff
==============================================================================
--- bloodhound/vendor/trac/current/trac/wiki/parser.py (original)
+++ bloodhound/vendor/trac/current/trac/wiki/parser.py Fri Nov 14 11:06:23 2014
@@ -23,6 +23,7 @@ import re
 from trac.core import *
 from trac.notification import EMAIL_LOOKALIKE_PATTERN
 
+
 class WikiParser(Component):
     """Wiki text parser."""
 

Modified: bloodhound/vendor/trac/current/trac/wiki/templates/wiki_delete.html
URL: 
http://svn.apache.org/viewvc/bloodhound/vendor/trac/current/trac/wiki/templates/wiki_delete.html?rev=1639602&r1=1639601&r2=1639602&view=diff
==============================================================================
--- bloodhound/vendor/trac/current/trac/wiki/templates/wiki_delete.html 
(original)
+++ bloodhound/vendor/trac/current/trac/wiki/templates/wiki_delete.html Fri Nov 
14 11:06:23 2014
@@ -1,3 +1,13 @@
+<!--!  Copyright (C) 2006-2014 Edgewall Software
+
+  This software is licensed as described in the file COPYING, which
+  you should have received as part of this distribution. The terms
+  are also available at http://trac.edgewall.com/license.html.
+
+  This software consists of voluntary contributions made by many
+  individuals. For the exact contribution history, see the revision
+  history and logs, available at http://trac.edgewall.org/.
+-->
 <!DOCTYPE html
     PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd";>

Modified: bloodhound/vendor/trac/current/trac/wiki/templates/wiki_diff.html
URL: 
http://svn.apache.org/viewvc/bloodhound/vendor/trac/current/trac/wiki/templates/wiki_diff.html?rev=1639602&r1=1639601&r2=1639602&view=diff
==============================================================================
--- bloodhound/vendor/trac/current/trac/wiki/templates/wiki_diff.html (original)
+++ bloodhound/vendor/trac/current/trac/wiki/templates/wiki_diff.html Fri Nov 
14 11:06:23 2014
@@ -1,3 +1,13 @@
+<!--!  Copyright (C) 2006-2014 Edgewall Software
+
+  This software is licensed as described in the file COPYING, which
+  you should have received as part of this distribution. The terms
+  are also available at http://trac.edgewall.com/license.html.
+
+  This software consists of voluntary contributions made by many
+  individuals. For the exact contribution history, see the revision
+  history and logs, available at http://trac.edgewall.org/.
+-->
 <!DOCTYPE html
     PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd";>

Modified: bloodhound/vendor/trac/current/trac/wiki/templates/wiki_edit.html
URL: 
http://svn.apache.org/viewvc/bloodhound/vendor/trac/current/trac/wiki/templates/wiki_edit.html?rev=1639602&r1=1639601&r2=1639602&view=diff
==============================================================================
--- bloodhound/vendor/trac/current/trac/wiki/templates/wiki_edit.html (original)
+++ bloodhound/vendor/trac/current/trac/wiki/templates/wiki_edit.html Fri Nov 
14 11:06:23 2014
@@ -1,3 +1,13 @@
+<!--!  Copyright (C) 2006-2014 Edgewall Software
+
+  This software is licensed as described in the file COPYING, which
+  you should have received as part of this distribution. The terms
+  are also available at http://trac.edgewall.com/license.html.
+
+  This software consists of voluntary contributions made by many
+  individuals. For the exact contribution history, see the revision
+  history and logs, available at http://trac.edgewall.org/.
+-->
 <!DOCTYPE html
     PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd";>
@@ -128,7 +138,7 @@
         <py:if test="not sidebyside"><xi:include href="wiki_edit_form.html" 
/></py:if>
         <div py:if="merge" class="system-message">
           <p>Someone else has modified that page since you started your 
edits.</p><br />
-          <p i18n:msg=""><b>If you save right away, you risk to revert those 
changes</b>
+          <p i18n:msg=""><strong>If you save right away, you risk to revert 
those changes</strong>
             (highlighted below as deletions).</p><br />
           <p i18n:msg="">Please review all those changes and manually merge 
them with your
             own changes. <br />

Modified: bloodhound/vendor/trac/current/trac/wiki/templates/wiki_edit_form.html
URL: 
http://svn.apache.org/viewvc/bloodhound/vendor/trac/current/trac/wiki/templates/wiki_edit_form.html?rev=1639602&r1=1639601&r2=1639602&view=diff
==============================================================================
--- bloodhound/vendor/trac/current/trac/wiki/templates/wiki_edit_form.html 
(original)
+++ bloodhound/vendor/trac/current/trac/wiki/templates/wiki_edit_form.html Fri 
Nov 14 11:06:23 2014
@@ -1,3 +1,13 @@
+<!--!  Copyright (C) 2009-2014 Edgewall Software
+
+  This software is licensed as described in the file COPYING, which
+  you should have received as part of this distribution. The terms
+  are also available at http://trac.edgewall.com/license.html.
+
+  This software consists of voluntary contributions made by many
+  individuals. For the exact contribution history, see the revision
+  history and logs, available at http://trac.edgewall.org/.
+-->
 <!DOCTYPE html
     PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd";>
@@ -26,13 +36,13 @@
         </label>
         <input type="checkbox" name="sidebyside" id="sidebyside" 
checked="$sidebyside" />
       </div>
-      <p><textarea id="text" class="${classes('wikitext', 'trac-autofocus',
+      <p><textarea id="text" class="${classes('wikitext', 'trac-autofocus', 
'trac-fullwidth',
                                               'trac-resizable' if not 
sidebyside else None)}"
                    name="text" cols="80" rows="$edit_rows">
 $page.text</textarea>
       </p>
       <div id="help" i18n:msg="">
-        <b>Note:</b> See <a 
href="${href.wiki('WikiFormatting')}">WikiFormatting</a> and
+        <strong>Note:</strong> See <a 
href="${href.wiki('WikiFormatting')}">WikiFormatting</a> and
         <a href="${href.wiki('TracWiki')}">TracWiki</a> for help on editing 
wiki content.
       </div>
     </fieldset>

Modified: bloodhound/vendor/trac/current/trac/wiki/templates/wiki_page_path.html
URL: 
http://svn.apache.org/viewvc/bloodhound/vendor/trac/current/trac/wiki/templates/wiki_page_path.html?rev=1639602&r1=1639601&r2=1639602&view=diff
==============================================================================
--- bloodhound/vendor/trac/current/trac/wiki/templates/wiki_page_path.html 
(original)
+++ bloodhound/vendor/trac/current/trac/wiki/templates/wiki_page_path.html Fri 
Nov 14 11:06:23 2014
@@ -1,3 +1,13 @@
+<!--!  Copyright (C) 2010-2014 Edgewall Software
+
+  This software is licensed as described in the file COPYING, which
+  you should have received as part of this distribution. The terms
+  are also available at http://trac.edgewall.com/license.html.
+
+  This software consists of voluntary contributions made by many
+  individuals. For the exact contribution history, see the revision
+  history and logs, available at http://trac.edgewall.org/.
+-->
 <div xmlns="http://www.w3.org/1999/xhtml";
      xmlns:py="http://genshi.edgewall.org/";
      xmlns:i18n="http://genshi.edgewall.org/i18n";

Modified: bloodhound/vendor/trac/current/trac/wiki/templates/wiki_rename.html
URL: 
http://svn.apache.org/viewvc/bloodhound/vendor/trac/current/trac/wiki/templates/wiki_rename.html?rev=1639602&r1=1639601&r2=1639602&view=diff
==============================================================================
--- bloodhound/vendor/trac/current/trac/wiki/templates/wiki_rename.html 
(original)
+++ bloodhound/vendor/trac/current/trac/wiki/templates/wiki_rename.html Fri Nov 
14 11:06:23 2014
@@ -1,3 +1,13 @@
+<!--!  Copyright (C) 2010-2014 Edgewall Software
+
+  This software is licensed as described in the file COPYING, which
+  you should have received as part of this distribution. The terms
+  are also available at http://trac.edgewall.com/license.html.
+
+  This software consists of voluntary contributions made by many
+  individuals. For the exact contribution history, see the revision
+  history and logs, available at http://trac.edgewall.org/.
+-->
 <!DOCTYPE html
     PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd";>
@@ -15,22 +25,22 @@
       <h1 i18n:msg="name">Rename <a href="$current_href">$page.name</a></h1>
       <form id="rename-form" action="$current_href" method="post">
         <p>
-          <input type="hidden" name="action" value="rename"/>
-          <strong>Renaming the page will rename all existing versions of the 
page in place.</strong><br/>
+          <input type="hidden" name="action" value="rename" />
+          <strong>Renaming the page will rename all existing versions of the 
page in place.</strong><br />
           The complete history of the page will be moved to the new location.
         </p>
         <div class="field">
-          <label>New name: <input type="text" name="new_name" 
class="trac-autofocus" size="40" value="$new_name"/></label>
+          <label>New name: <input type="text" name="new_name" 
class="trac-autofocus" size="40" value="$new_name" /></label>
         </div>
         <div class="field">
           <label>
-            <input type="checkbox" id="redirect" name="redirect"/>
+            <input type="checkbox" id="redirect" name="redirect" />
             Leave a redirection page at the old location
           </label>
         </div>
         <div class="buttons">
-          <input type="submit" name="submit" class="trac-disable-on-submit" 
value="${_('Rename page')}"/>
-          <input type="submit" name="cancel" value="${_('Cancel')}"/>
+          <input type="submit" name="submit" class="trac-disable-on-submit" 
value="${_('Rename page')}" />
+          <input type="submit" name="cancel" value="${_('Cancel')}" />
         </div>
       </form>
     </div>

Modified: bloodhound/vendor/trac/current/trac/wiki/templates/wiki_view.html
URL: 
http://svn.apache.org/viewvc/bloodhound/vendor/trac/current/trac/wiki/templates/wiki_view.html?rev=1639602&r1=1639601&r2=1639602&view=diff
==============================================================================
--- bloodhound/vendor/trac/current/trac/wiki/templates/wiki_view.html (original)
+++ bloodhound/vendor/trac/current/trac/wiki/templates/wiki_view.html Fri Nov 
14 11:06:23 2014
@@ -1,3 +1,13 @@
+<!--!  Copyright (C) 2006-2014 Edgewall Software
+
+  This software is licensed as described in the file COPYING, which
+  you should have received as part of this distribution. The terms
+  are also available at http://trac.edgewall.com/license.html.
+
+  This software consists of voluntary contributions made by many
+  individuals. For the exact contribution history, see the revision
+  history and logs, available at http://trac.edgewall.org/.
+-->
 <!DOCTYPE html
     PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd";>

Modified: bloodhound/vendor/trac/current/trac/wiki/tests/formatter.py
URL: 
http://svn.apache.org/viewvc/bloodhound/vendor/trac/current/trac/wiki/tests/formatter.py?rev=1639602&r1=1639601&r2=1639602&view=diff
==============================================================================
--- bloodhound/vendor/trac/current/trac/wiki/tests/formatter.py (original)
+++ bloodhound/vendor/trac/current/trac/wiki/tests/formatter.py Fri Nov 14 
11:06:23 2014
@@ -147,6 +147,7 @@ class WikiTestCase(unittest.TestCase):
         self._teardown = teardown
 
         req = Mock(href=Href('/'), abs_href=Href('http://www.example.com/'),
+                   chrome={}, session={},
                    authname='anonymous', perm=MockPerm(), tz=utc, args={},
                    locale=locale_en, lc_time=locale_en)
         if context:

Modified: bloodhound/vendor/trac/current/trac/wiki/tests/functional.py
URL: 
http://svn.apache.org/viewvc/bloodhound/vendor/trac/current/trac/wiki/tests/functional.py?rev=1639602&r1=1639601&r2=1639602&view=diff
==============================================================================
--- bloodhound/vendor/trac/current/trac/wiki/tests/functional.py (original)
+++ bloodhound/vendor/trac/current/trac/wiki/tests/functional.py Fri Nov 14 
11:06:23 2014
@@ -14,7 +14,7 @@
 
 from trac.tests.functional import *
 from trac.mimeview.rst import has_docutils
-from trac.util import get_pkginfo
+from trac.util import create_file, get_pkginfo
 
 try:
     from configobj import ConfigObj
@@ -47,6 +47,51 @@ class TestWikiAddAttachment(FunctionalTw
                 'href="/zip-attachment/wiki/%s/">.zip</a>' % name)
 
 
+class TestWikiPageManipulator(FunctionalTwillTestCaseSetup):
+    def runTest(self):
+        plugin_name = self.__class__.__name__
+        env = self._testenv.get_trac_environment()
+        env.config.set('components', plugin_name + '.*', 'enabled')
+        env.config.save()
+        create_file(os.path.join(env.path, 'plugins', plugin_name + '.py'),
+"""\
+from genshi.builder import tag
+from trac.core import Component, implements
+from trac.util.translation import tag_
+from trac.wiki.api import IWikiPageManipulator
+
+
+class WikiPageManipulator(Component):
+    implements(IWikiPageManipulator)
+
+    def prepare_wiki_page(self, req, page, fields):
+        pass
+
+    def validate_wiki_page(self, req, page):
+        field = 'comment'
+        yield None, tag_("The page contains invalid markup at"
+                         " line %(number)s.", number=tag.strong('10'))
+        yield field, tag_("The field %(field)s cannot be empty.",
+                          field=tag.strong(field))
+""")
+        self._testenv.restart()
+
+        try:
+            self._tester.go_to_front()
+            tc.follow("Wiki")
+            tc.formvalue('modifypage', 'action', 'edit')
+            tc.submit()
+            tc.submit('save', 'edit')
+            tc.url(self._tester.url + '/wiki/WikiStart$')
+            tc.find("Invalid Wiki page: The page contains invalid markup at"
+                    " line <strong>10</strong>.")
+            tc.find("The Wiki page field 'comment' is invalid:"
+                    " The field <strong>comment</strong> cannot be empty.")
+        finally:
+            env.config.set('components', plugin_name + '.*', 'disabled')
+            env.config.save()
+
+
 class TestWikiHistory(FunctionalTwillTestCaseSetup):
     """Create wiki page and navigate to page history."""
     def runTest(self):
@@ -60,6 +105,14 @@ class TestWikiHistory(FunctionalTwillTes
                         % {'pagename': pagename}
         tc.find(version_link % {'version': 1})
         tc.find(version_link % {'version': 2})
+        tc.formvalue('history', 'old_version', '1')
+        tc.formvalue('history', 'version', '2')
+        tc.submit()
+        tc.url(r'%s/wiki/%s\?action=diff&version=2&old_version=1'
+               % (self._tester.url, pagename))
+        tc.find(r'<a href="/wiki/%s\?version=1">Version 1</a>' % pagename)
+        tc.find(r'<a href="/wiki/%s\?version=2">Version 2</a>' % pagename)
+        tc.find(r'<a href="/wiki/%(name)s">%(name)s</a>' % {'name': pagename})
 
 
 class TestWikiRename(FunctionalTwillTestCaseSetup):
@@ -348,12 +401,26 @@ class RegressionTestTicket11302(Function
                 r' href="/wiki/%s\?version=1#point1">@1</a>' % pagename)
 
 
+class RegressionTestTicket11518(FunctionalTwillTestCaseSetup):
+    def runTest(self):
+        """Test for regression of http://trac.edgewall.org/ticket/11518
+        ResourceNotFound should be raised when version is invalid.
+        """
+        tc.go(self._tester.url + '/wiki/WikiStart?version=1abc')
+        tc.find(r"<h1>Trac Error</h1>")
+        tc.find('No version "1abc" for Wiki page "WikiStart')
+        tc.go(self._tester.url + '/wiki/WikiStart?version=')
+        tc.find(r"<h1>Trac Error</h1>")
+        tc.find('No version "" for Wiki page "WikiStart')
+
+
 def functionalSuite(suite=None):
     if not suite:
         import trac.tests.functional
         suite = trac.tests.functional.functionalSuite()
     suite.addTest(TestWiki())
     suite.addTest(TestWikiAddAttachment())
+    suite.addTest(TestWikiPageManipulator())
     suite.addTest(TestWikiHistory())
     suite.addTest(TestWikiRename())
     suite.addTest(RegressionTestTicket4812())
@@ -361,6 +428,7 @@ def functionalSuite(suite=None):
     suite.addTest(RegressionTestTicket10850())
     suite.addTest(RegressionTestTicket10957())
     suite.addTest(RegressionTestTicket11302())
+    suite.addTest(RegressionTestTicket11518())
     if has_docutils:
         import docutils
         if get_pkginfo(docutils):

Modified: bloodhound/vendor/trac/current/trac/wiki/tests/model.py
URL: 
http://svn.apache.org/viewvc/bloodhound/vendor/trac/current/trac/wiki/tests/model.py?rev=1639602&r1=1639601&r2=1639602&view=diff
==============================================================================
--- bloodhound/vendor/trac/current/trac/wiki/tests/model.py (original)
+++ bloodhound/vendor/trac/current/trac/wiki/tests/model.py Fri Nov 14 11:06:23 
2014
@@ -19,10 +19,11 @@ from StringIO import StringIO
 import tempfile
 import unittest
 
+import trac.tests.compat
 from trac.attachment import Attachment
 from trac.core import *
+from trac.resource import Resource
 from trac.test import EnvironmentStub
-from trac.tests import compat
 from trac.util.datefmt import utc, to_utimestamp
 from trac.wiki import WikiPage, IWikiChangeListener
 
@@ -99,6 +100,11 @@ class WikiPageTestCase(unittest.TestCase
 
         page = WikiPage(self.env, 'TestPage', 1)
         self.assertEqual(1, page.resource.version)
+        self.assertEqual(1, page.version)
+
+        resource = Resource('wiki', 'TestPage')
+        page = WikiPage(self.env, resource, 1)
+        self.assertEqual(1, page.version)
 
     def test_create_page(self):
         page = WikiPage(self.env)
@@ -276,6 +282,23 @@ class WikiPageTestCase(unittest.TestCase
             page = WikiPage(self.env, 'TestPage')
             self.assertRaises(TracError, page.rename, name)
 
+    def test_invalid_version(self):
+        data = (1, 42, 'joe', '::1', 'Bla bla', 'Testing', 0)
+        self.env.db_transaction(
+            "INSERT INTO wiki VALUES(%s,%s,%s,%s,%s,%s,%s,%s)",
+            ('TestPage',) + data)
+
+        self.assertRaises(ValueError, WikiPage, self.env,
+                          'TestPage', '1abc')
+
+        resource = Resource('wiki', 'TestPage')
+        self.assertRaises(ValueError, WikiPage, self.env,
+                          resource, '1abc')
+
+        resource = Resource('wiki', 'TestPage', '1abc')
+        page = WikiPage(self.env, resource)
+        self.assertEqual(1, page.version)
+
 
 def suite():
     return unittest.makeSuite(WikiPageTestCase)

Modified: bloodhound/vendor/trac/current/trac/wiki/tests/wiki-tests.txt
URL: 
http://svn.apache.org/viewvc/bloodhound/vendor/trac/current/trac/wiki/tests/wiki-tests.txt?rev=1639602&r1=1639601&r2=1639602&view=diff
==============================================================================
--- bloodhound/vendor/trac/current/trac/wiki/tests/wiki-tests.txt (original)
+++ bloodhound/vendor/trac/current/trac/wiki/tests/wiki-tests.txt Fri Nov 14 
11:06:23 2014
@@ -1183,16 +1183,24 @@ Inline  comment
 </p>
 ------------------------------
 ============================== Exception with utf-8 bytes
+{{{#!ValueErrorWithUtf8
+Érrör
+}}}
 [[ValueErrorWithUtf8(érrör)]]
 ------------------------------
-<p>
+<div class="system-message"><strong>Error: Processor ValueErrorWithUtf8 
failed</strong><pre>Érrör
+</pre></div><p>
 <div class="system-message"><strong>Error: Macro ValueErrorWithUtf8(érrör) 
failed</strong><pre>érrör</pre></div>
 </p>
 ------------------------------
 ============================== TracError with unicode
+{{{#!TracErrorWithUnicode
+Érrör
+}}}
 [[TracErrorWithUnicode(érrör)]]
 ------------------------------
-<p>
+<div class="system-message"><strong>Error: Processor TracErrorWithUnicode 
failed</strong><pre>Érrör
+</pre></div><p>
 <div class="system-message"><strong>Error: Macro TracErrorWithUnicode(érrör) 
failed</strong><pre>érrör</pre></div>
 </p>
 ------------------------------
@@ -2592,3 +2600,96 @@ c
 ------------------------------
  […]
 &gt; c
+============================== List immediately followed by binary inline 
markup, #11009
+***
+* list
+***
+------------------------------
+<p>
+<strong>*
+</strong></p>
+<ul><li>list
+</li></ul><p>
+<strong>*
+</strong></p>
+------------------------------
+============================== List immediately followed by binary inline 
markup 1, #11373
+ 1. normal in list
+''italic
+in paragraph
+
+ 1. normal in list
+//italic
+in paragraph
+------------------------------
+<ol><li>normal in list
+</li></ol><p>
+<em>italic
+in paragraph
+</em></p>
+<ol><li>normal in list
+</li></ol><p>
+<em>italic
+in paragraph
+</em></p>
+------------------------------
+============================== List immediately followed by binary inline 
markup 2, #11373
+ 1. //italic in list
+''italic
+in paragraph
+
+ 1. ''italic in list
+//italic
+in paragraph
+
+1. ''italic in list
+''italic
+in paragraph
+
+1. //italic in list
+//italic
+in paragraph
+------------------------------
+<ol><li><em>italic in list
+</em></li></ol><p>
+<em>italic
+in paragraph
+</em></p>
+<ol><li><em>italic in list
+</em></li></ol><p>
+<em>italic
+in paragraph
+</em></p>
+<ol><li><em>italic in list
+</em></li></ol><p>
+<em>italic
+in paragraph
+</em></p>
+<ol><li><em>italic in list
+</em></li></ol><p>
+<em>italic
+in paragraph
+</em></p>
+------------------------------
+============================== List immediately followed by binary inline 
markup 3, #11373
+ 1. ''italic in list
+'''''bolditalic
+in paragraph'''''
+------------------------------
+<ol><li><em>italic in list
+</em></li></ol><p>
+<strong><em>bolditalic
+in paragraph</em></strong>
+</p>
+------------------------------
+============================== List immediately followed by binary inline 
markup 4, #11373
+ 1. '''bold in list
+'''''bolditalic
+in paragraph'''''
+------------------------------
+<ol><li><strong>bold in list
+</strong></li></ol><p>
+<strong><em>bolditalic
+in paragraph</em></strong>
+</p>
+------------------------------

Modified: bloodhound/vendor/trac/current/trac/wiki/tests/wikisyntax.py
URL: 
http://svn.apache.org/viewvc/bloodhound/vendor/trac/current/trac/wiki/tests/wikisyntax.py?rev=1639602&r1=1639601&r2=1639602&view=diff
==============================================================================
--- bloodhound/vendor/trac/current/trac/wiki/tests/wikisyntax.py (original)
+++ bloodhound/vendor/trac/current/trac/wiki/tests/wikisyntax.py Fri Nov 14 
11:06:23 2014
@@ -18,6 +18,7 @@ from trac.util.datefmt import utc
 from trac.wiki.model import WikiPage
 from trac.wiki.tests import formatter
 
+
 TEST_CASES = u"""
 ============================== wiki: link resolver
 wiki:TestPage

Modified: bloodhound/vendor/trac/current/trac/wiki/web_ui.py
URL: 
http://svn.apache.org/viewvc/bloodhound/vendor/trac/current/trac/wiki/web_ui.py?rev=1639602&r1=1639601&r2=1639602&view=diff
==============================================================================
--- bloodhound/vendor/trac/current/trac/wiki/web_ui.py (original)
+++ bloodhound/vendor/trac/current/trac/wiki/web_ui.py Fri Nov 14 11:06:23 2014
@@ -37,10 +37,10 @@ from trac.util.text import shorten_line
 from trac.util.translation import _, tag_
 from trac.versioncontrol.diff import get_diff_options, diff_blocks
 from trac.web.api import IRequestHandler
-from trac.web.chrome import (Chrome, INavigationContributor, ITemplateProvider,
-                             add_ctxtnav, add_link, add_notice, add_script,
-                             add_stylesheet, add_warning, prevnext_nav,
-                             web_context)
+from trac.web.chrome import (Chrome, INavigationContributor,
+                             ITemplateProvider, add_ctxtnav, add_link,
+                             add_notice, add_script, add_stylesheet,
+                             add_warning, prevnext_nav, web_context)
 from trac.wiki.api import IWikiPageManipulator, WikiSystem, validate_page_name
 from trac.wiki.formatter import format_to, OneLinerFormatter
 from trac.wiki.model import WikiPage
@@ -55,9 +55,9 @@ class InvalidWikiPage(TracError):
 
 class WikiModule(Component):
 
-    implements(IContentConverter, INavigationContributor, IPermissionRequestor,
-               IRequestHandler, ITimelineEventProvider, ISearchSource,
-               ITemplateProvider)
+    implements(IContentConverter, INavigationContributor,
+               IPermissionRequestor, IRequestHandler, ITimelineEventProvider,
+               ISearchSource, ITemplateProvider)
 
     page_manipulators = ExtensionPoint(IWikiPageManipulator)
 
@@ -70,8 +70,8 @@ class WikiModule(Component):
     # IContentConverter methods
 
     def get_supported_conversions(self):
-        yield ('txt', _('Plain Text'), 'txt', 'text/x-trac-wiki', 'text/plain',
-               9)
+        yield ('txt', _("Plain Text"), 'txt', 'text/x-trac-wiki',
+               'text/plain', 9)
 
     def convert_content(self, req, mimetype, content, key):
         return content, 'text/plain;charset=utf-8'
@@ -120,6 +120,14 @@ class WikiModule(Component):
             raise TracError(_("Invalid Wiki page name '%(name)s'",
                               name=pagename))
 
+        if version is not None:
+            try:
+                version = int(version)
+            except (ValueError, TypeError):
+                raise ResourceNotFound(
+                    _('No version "%(num)s" for Wiki page "%(name)s"',
+                      num=version, name=pagename))
+
         page = WikiPage(self.env, pagename)
         versioned_page = WikiPage(self.env, pagename, version=version)
 
@@ -147,7 +155,8 @@ class WikiModule(Component):
                 if action == 'edit' and not has_collision and valid:
                     return self._do_save(req, versioned_page)
                 else:
-                    return self._render_editor(req, page, action, 
has_collision)
+                    return self._render_editor(req, page, action,
+                                               has_collision)
             elif action == 'delete':
                 self._do_delete(req, versioned_page)
             elif action == 'rename':
@@ -192,8 +201,8 @@ class WikiModule(Component):
 
         # Validate page size
         if len(req.args.get('text', '')) > self.max_size:
-            add_warning(req, _('The wiki page is too long (must be less '
-                               'than %(num)s characters)',
+            add_warning(req, _("The wiki page is too long (must be less "
+                               "than %(num)s characters)",
                                num=self.max_size))
             valid = False
 
@@ -202,12 +211,12 @@ class WikiModule(Component):
             for field, message in manipulator.validate_wiki_page(req, page):
                 valid = False
                 if field:
-                    add_warning(req, _("The Wiki page field '%(field)s' is "
-                                       "invalid: %(message)s",
-                                       field=field, message=message))
+                    add_warning(req, tag_("The Wiki page field '%(field)s'"
+                                          " is invalid: %(message)s",
+                                          field=field, message=message))
                 else:
-                    add_warning(req, _("Invalid Wiki page: %(message)s",
-                                       message=message))
+                    add_warning(req, tag_("Invalid Wiki page: %(message)s",
+                                          message=message))
         return valid
 
     def _page_data(self, req, page, action=''):
@@ -233,9 +242,10 @@ class WikiModule(Component):
         def version_info(v, last=0):
             return {'path': get_resource_name(self.env, page.resource),
                     # TRANSLATOR: wiki page
-                    'rev': v or _('currently edited'),
+                    'rev': v or _("currently edited"),
                     'shortrev': v or last + 1,
-                    'href': req.href.wiki(page.name, version=v) if v else None}
+                    'href': req.href.wiki(page.name, version=v)
+                            if v else None}
         changes = [{'diffs': diffs, 'props': [],
                     'new': version_info(new_version, old_version),
                     'old': version_info(old_version)}]
@@ -271,12 +281,12 @@ class WikiModule(Component):
             req.redirect(req.href.wiki())
         else:
             if version and old_version and version > old_version + 1:
-                add_notice(req, _('The versions %(from_)d to %(to)d of the '
-                                  'page %(name)s have been deleted.',
+                add_notice(req, _("The versions %(from_)d to %(to)d of the "
+                                  "page %(name)s have been deleted.",
                            from_=old_version + 1, to=version, name=page.name))
             else:
-                add_notice(req, _('The version %(version)d of the page '
-                                  '%(name)s has been deleted.',
+                add_notice(req, _("The version %(version)d of the page "
+                                  "%(name)s has been deleted.",
                                   version=version, name=page.name))
             req.redirect(req.href.wiki(page.name))
 
@@ -402,8 +412,8 @@ class WikiModule(Component):
 
     def _render_diff(self, req, page):
         if not page.exists:
-            raise TracError(_('Version %(num)s of page "%(name)s" does not '
-                              'exist',
+            raise TracError(_("Version %(num)s of page \"%(name)s\" does not "
+                              "exist",
                               num=req.args.get('version'), name=page.name))
 
         old_version = req.args.get('old_version')
@@ -454,13 +464,13 @@ class WikiModule(Component):
         if prev_version:
             add_link(req, 'prev', req.href.wiki(page.name, action='diff',
                                                 version=prev_version),
-                     _('Version %(num)s', num=prev_version))
+                     _("Version %(num)s", num=prev_version))
         add_link(req, 'up', req.href.wiki(page.name, action='history'),
                  _('Page history'))
         if next_version:
             add_link(req, 'next', req.href.wiki(page.name, action='diff',
                                                 version=next_version),
-                     _('Version %(num)s', num=next_version))
+                     _("Version %(num)s", num=next_version))
 
         data = self._page_data(req, page, 'diff')
         data.update({
@@ -473,8 +483,8 @@ class WikiModule(Component):
             'changes': changes,
             'diff': diff_data,
         })
-        prevnext_nav(req, _('Previous Change'), _('Next Change'),
-                     _('Wiki History'))
+        prevnext_nav(req, _("Previous Change"), _("Next Change"),
+                     _("Wiki History"))
         return 'wiki_diff.html', data, None
 
     def _render_editor(self, req, page, action='edit', has_collision=False):
@@ -541,7 +551,8 @@ class WikiModule(Component):
             'context': context,
             'author': author,
             'comment': comment,
-            'edit_rows': editrows, 'sidebyside': sidebyside,
+            'edit_rows': editrows,
+            'sidebyside': sidebyside,
             'scroll_bar_pos': req.args.get('scroll_bar_pos', ''),
             'diff': None,
             'attachments': AttachmentModule(self.env).attachment_data(context),
@@ -593,14 +604,10 @@ class WikiModule(Component):
 
         # Add registered converters
         if page.exists:
-            for conversion in Mimeview(self.env).get_supported_conversions(
-                                                 'text/x-trac-wiki'):
+            for conversion in Mimeview(self.env) \
+                              .get_supported_conversions('text/x-trac-wiki'):
                 conversion_href = req.href.wiki(page.name, version=version,
                                                 format=conversion[0])
-                # or...
-                conversion_href = get_resource_url(self.env, page.resource,
-                                                   req.href,
-                                                   format=conversion[0])
                 add_link(req, 'alternate', conversion_href, conversion[1],
                          conversion[3])
 
@@ -613,7 +620,7 @@ class WikiModule(Component):
         higher, related = [], []
         if not page.exists:
             if 'WIKI_CREATE' not in req.perm(page.resource):
-                raise ResourceNotFound(_('Page %(name)s not found',
+                raise ResourceNotFound(_("Page %(name)s not found",
                                          name=page.name))
             formatter = OneLinerFormatter(self.env, context)
             if '/' in page.name:
@@ -622,7 +629,7 @@ class WikiModule(Component):
                     name = '/'.join(parts[:i] + [parts[-1]])
                     if not ws.has_page(name):
                         higher.append(ws._format_link(formatter, 'wiki',
-                                                    '/' + name, name, False))
+                                                      '/' + name, name, False))
             else:
                 name = page.name
             name = name.lower()
@@ -661,12 +668,12 @@ class WikiModule(Component):
         if prev_version:
             add_link(req, 'prev',
                      req.href.wiki(page.name, version=prev_version),
-                     _('Version %(num)s', num=prev_version))
+                     _("Version %(num)s", num=prev_version))
 
         parent = None
         if version:
             add_link(req, 'up', req.href.wiki(page.name, version=None),
-                     _('View latest version'))
+                     _("View latest version"))
         elif '/' in page.name:
             parent = page.name[:page.name.rindex('/')]
             add_link(req, 'up', req.href.wiki(parent, version=None),
@@ -679,8 +686,8 @@ class WikiModule(Component):
 
         # Add ctxtnav entries
         if version:
-            prevnext_nav(req, _('Previous Version'), _('Next Version'),
-                         _('View Latest Version'))
+            prevnext_nav(req, _("Previous Version"), _("Next Version"),
+                         _("View Latest Version"))
         else:
             if parent:
                 add_ctxtnav(req, _('Up'), req.href.wiki(parent))
@@ -708,10 +715,10 @@ class WikiModule(Component):
 
     def _wiki_ctxtnav(self, req, page):
         """Add the normal wiki ctxtnav entries."""
-        add_ctxtnav(req, _('Start Page'), req.href.wiki('WikiStart'))
-        add_ctxtnav(req, _('Index'), req.href.wiki('TitleIndex'))
+        add_ctxtnav(req, _("Start Page"), req.href.wiki('WikiStart'))
+        add_ctxtnav(req, _("Index"), req.href.wiki('TitleIndex'))
         if page.exists:
-            add_ctxtnav(req, _('History'), req.href.wiki(page.name,
+            add_ctxtnav(req, _("History"), req.href.wiki(page.name,
                                                          action='history'))
 
     # ITimelineEventProvider methods
@@ -745,9 +752,9 @@ class WikiModule(Component):
         elif field == 'title':
             name = tag.em(get_resource_name(self.env, wiki_page))
             if wiki_page.version > 1:
-                return tag_('%(page)s edited', page=name)
+                return tag_("%(page)s edited", page=name)
             else:
-                return tag_('%(page)s created', page=name)
+                return tag_("%(page)s created", page=name)
         elif field == 'description':
             markup = format_to(self.env, None,
                                context.child(resource=wiki_page), comment)
@@ -755,7 +762,7 @@ class WikiModule(Component):
                 diff_href = context.href.wiki(
                     wiki_page.id, version=wiki_page.version, action='diff')
                 markup = tag(markup,
-                             ' (', tag.a(_('diff'), href=diff_href), ')')
+                             " (", tag.a(_("diff"), href=diff_href), ")")
             return markup
 
     # ISearchSource methods


Reply via email to