Author: jdreimann Date: Fri Apr 12 16:33:52 2013 New Revision: 1467339 URL: http://svn.apache.org/r1467339 Log: Updated styling of comment history, towards #471. Changed styling of attachment download icon to use background-image instead of an img inserted on the page. Removed outdated screenshot.png because it doesn't appear to be used.
Added: bloodhound/trunk/bloodhound_theme/bhtheme/htdocs/img/change_history_arrow_line.png (with props) Removed: bloodhound/trunk/bloodhound_theme/bhtheme/htdocs/img/screenshot.png Modified: bloodhound/trunk/bloodhound_theme/bhtheme/htdocs/bloodhound.css bloodhound/trunk/bloodhound_theme/bhtheme/templates/bh_dir_entries.html bloodhound/trunk/bloodhound_theme/bhtheme/templates/bh_list_of_attachments.html bloodhound/trunk/bloodhound_theme/bhtheme/templates/bh_repository_index.html bloodhound/trunk/bloodhound_theme/bhtheme/templates/bh_ticket.html bloodhound/trunk/bloodhound_theme/bhtheme/templates/bh_ticket_change.html bloodhound/trunk/trac/trac/wiki/formatter.py Modified: bloodhound/trunk/bloodhound_theme/bhtheme/htdocs/bloodhound.css URL: http://svn.apache.org/viewvc/bloodhound/trunk/bloodhound_theme/bhtheme/htdocs/bloodhound.css?rev=1467339&r1=1467338&r2=1467339&view=diff ============================================================================== --- bloodhound/trunk/bloodhound_theme/bhtheme/htdocs/bloodhound.css (original) +++ bloodhound/trunk/bloodhound_theme/bhtheme/htdocs/bloodhound.css Fri Apr 12 16:33:52 2013 @@ -178,21 +178,10 @@ div.reports form { font-weight: normal; } -.activityfeed img { - display: none; -} - -.activityfeed dt { - font-weight: normal; -} - -.activityfeed dd { - color: grey; -} - -.activityfeed * tt { - word-wrap: break-word; - word-break: break-all; +.activityfeed { + background-image: url("/main/chrome/theme/img/change_history_arrow_line.png"); + background-repeat: repeat-y; + background-position: 20px 0px; } #mobile-activity { @@ -990,11 +979,6 @@ tt { margin-top: 10px; } -.comment { - margin-bottom: 10px; - padding-left: 10px; -} - .comment-meta { overflow: hidden; } @@ -1150,13 +1134,23 @@ table.wiki th { #changelog div.comment-box{ - border: 2px solid #999999; - border-radius: 8px 8px 8px 8px; + border: 1px solid #ccc; + border-radius: 6px; box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05) inset; - padding: 2px 4px 2px 4px; + padding: 13px; margin: 10px 0px 10px 10px; + background-color: rgb(253, 252, 250); min-height: 20px; + +#changelog div.comment-box h4 { + margin-top: 0px; +} + +#changelog ul { + list-style-image: url('../common/collapsed.png'); + padding: 0px 0px 0px 11px; } + .ticket form#prefs input[type="radio"]{ display: none; } Added: bloodhound/trunk/bloodhound_theme/bhtheme/htdocs/img/change_history_arrow_line.png URL: http://svn.apache.org/viewvc/bloodhound/trunk/bloodhound_theme/bhtheme/htdocs/img/change_history_arrow_line.png?rev=1467339&view=auto ============================================================================== Binary file - no diff available. Propchange: bloodhound/trunk/bloodhound_theme/bhtheme/htdocs/img/change_history_arrow_line.png ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Modified: bloodhound/trunk/bloodhound_theme/bhtheme/templates/bh_dir_entries.html URL: http://svn.apache.org/viewvc/bloodhound/trunk/bloodhound_theme/bhtheme/templates/bh_dir_entries.html?rev=1467339&r1=1467338&r2=1467339&view=diff ============================================================================== --- bloodhound/trunk/bloodhound_theme/bhtheme/templates/bh_dir_entries.html (original) +++ bloodhound/trunk/bloodhound_theme/bhtheme/templates/bh_dir_entries.html Fri Apr 12 16:33:52 2013 @@ -35,7 +35,7 @@ <td class="size"> <span title="${_('%(size)s bytes', size=entry.content_length)}">${pretty_size(entry.content_length)}</span> <a py:if="entry.raw_href" href="$entry.raw_href" class="${'trac-ziplink' if isdir else 'trac-rawlink'}" - title="${_('Download as Zip archive') if isdir else _('Download')}">​<i class="icon-download-alt"></i></a> + title="${_('Download as Zip archive') if isdir else _('Download')}">​</a> </td> <td class="rev"> <a title="View Revision Log" href="${href.log(reponame, entry.path, rev=rev)}">${display_rev(entry.created_rev)}</a> Modified: bloodhound/trunk/bloodhound_theme/bhtheme/templates/bh_list_of_attachments.html URL: http://svn.apache.org/viewvc/bloodhound/trunk/bloodhound_theme/bhtheme/templates/bh_list_of_attachments.html?rev=1467339&r1=1467338&r2=1467339&view=diff ============================================================================== --- bloodhound/trunk/bloodhound_theme/bhtheme/templates/bh_list_of_attachments.html (original) +++ bloodhound/trunk/bloodhound_theme/bhtheme/templates/bh_list_of_attachments.html Fri Apr 12 16:33:52 2013 @@ -37,7 +37,7 @@ Arguments: <i class="icon-file"></i> <i18n:msg params="file, size, author, date"> <a href="${url_of(attachment.resource)}" title="View attachment">${attachment.filename - }</a><a href="${url_of(attachment.resource, format='raw')}" class="trac-rawlink" title="Download"><i class="icon-download-alt"></i></a> + }</a><a href="${url_of(attachment.resource, format='raw')}" class="trac-rawlink" title="Download"></a> (<span title="${_('%(size)s bytes', size=attachment.size)}">${pretty_size(attachment.size)}</span>) - added by <em>${authorinfo(attachment.author)}</em> ${pretty_dateinfo(attachment.date)}. </i18n:msg> Modified: bloodhound/trunk/bloodhound_theme/bhtheme/templates/bh_repository_index.html URL: http://svn.apache.org/viewvc/bloodhound/trunk/bloodhound_theme/bhtheme/templates/bh_repository_index.html?rev=1467339&r1=1467338&r2=1467339&view=diff ============================================================================== --- bloodhound/trunk/bloodhound_theme/bhtheme/templates/bh_repository_index.html (original) +++ bloodhound/trunk/bloodhound_theme/bhtheme/templates/bh_repository_index.html Fri Apr 12 16:33:52 2013 @@ -38,7 +38,7 @@ </em> </td> <td class="size"> - <a py:if="raw_href" class="trac-ziplink" href="$raw_href" title="Download as Zip archive">​<i class="icon-download-alt"></i></a> + <a py:if="raw_href" class="trac-ziplink" href="$raw_href" title="Download as Zip archive">​</a> </td> <td class="rev"> <py:if test="change and not err"> Modified: bloodhound/trunk/bloodhound_theme/bhtheme/templates/bh_ticket.html URL: http://svn.apache.org/viewvc/bloodhound/trunk/bloodhound_theme/bhtheme/templates/bh_ticket.html?rev=1467339&r1=1467338&r2=1467339&view=diff ============================================================================== --- bloodhound/trunk/bloodhound_theme/bhtheme/templates/bh_ticket.html (original) +++ bloodhound/trunk/bloodhound_theme/bhtheme/templates/bh_ticket.html Fri Apr 12 16:33:52 2013 @@ -426,270 +426,266 @@ </div> </div> - <div py:if="ticket.exists" class="$cols_activity"> - <div> - <form id="prefs" method="get" action="${href.prefs()}"> - <div id="trac-comments-order" style="display: inline" class="pull-right"> - <input type="radio" id="trac-comments-newest" name="trac-comments-order" value="newest" /> - <label for="trac-comments-newest"> - <span>Newest first</span> + <div py:if="ticket.exists" class="$cols_activity activityfeed"> + <form id="prefs" method="get" action="${href.prefs()}"> + <div id="trac-comments-order" style="display: inline" class="pull-right"> + <input type="radio" id="trac-comments-newest" name="trac-comments-order" value="newest" /> + <label for="trac-comments-newest"> + <span>Newest first</span> + </label> + <input type="radio" id="trac-comments-oldest" name="trac-comments-order" value="oldest" checked="checked" /> + <label for="trac-comments-oldest"> + <span>Oldest first</span> + </label> + <span id="trac-threaded-toggle" style="display: none"> + <input type="radio" id="trac-comments-threaded" name="trac-comments-order" value="threaded" /> + <label for="trac-comments-threaded"> + <span>Threaded</span> </label> - <input type="radio" id="trac-comments-oldest" name="trac-comments-order" value="oldest" checked="checked" /> - <label for="trac-comments-oldest"> - <span>Oldest first</span> - </label> - <span id="trac-threaded-toggle" style="display: none"> - <input type="radio" id="trac-comments-threaded" name="trac-comments-order" value="threaded" /> - <label for="trac-comments-threaded"> - <span>Threaded</span> - </label> - </span> - </div> - <div style="display: none"> - <input id="trac-comments-only-toggle" type="checkbox" /> - <label for="trac-comments-only-toggle"> - <span class="label">Comments only</span> - </label> - </div> - </form> - - <div class="row"> - <div class="$cols_activity"> - <form py:if="has_property_editor" method="post" id="propertyform" - action="${href.ticket(ticket.id) + '#trac-add-comment' if ticket.exists - else href.newticket() + '#ticket'}"> - <div py:if="ticket.exists and can_append"> - <!--! Add comment --> - <div id="trac-add-comment" class="field"> - <div class="trac-nav"> - <a href="#content" title="View ticket fields and description">View</a> ↑ - </div> - <div id="trac-edit-warning" class="warning system-message alert" - style="${'display: none' if start_time == ticket['changetime'] else None}" - i18n:msg=""> - <span class="label label-warning">Warning</span> - This ticket has been modified since you started editing. You should review the - <em class="trac-new">other modifications</em> which have been appended above, - and any <em class="trac-conflict">conflicts</em> shown in the preview below. - You can nevertheless proceed and submit your changes if you wish so. - </div> - <!--! Comment field --> - <fieldset class="iefix"> - <textarea id="comment" name="comment" class="trac-resizable $cols_activity" rows="5">${comment}</textarea> - <py:if test="ticket.exists"> - <input type="submit" class="btn pull-right" name="submit" value="${_('Submit')}" /> - </py:if> - <label for="comment" class="help-block" i18n:msg=""> - <span class="label label-info">Tip</span> - You may use - <a tabindex="42" href="${href.wiki('WikiFormatting')}">WikiFormatting</a> - here. - </label> - </fieldset> + </span> + </div> + <div style="display: none"> + <input id="trac-comments-only-toggle" type="checkbox" /> + <label for="trac-comments-only-toggle"> + <span class="label">Comments only</span> + </label> + </div> + </form> + + <div class="row"> + <div class="$cols_activity"> + <form py:if="has_property_editor" method="post" id="propertyform" + action="${href.ticket(ticket.id) + '#trac-add-comment' if ticket.exists + else href.newticket() + '#ticket'}"> + <div py:if="ticket.exists and can_append"> + <!--! Add comment --> + <div id="trac-add-comment" class="field"> + <div class="trac-nav"> + <a href="#content" title="View ticket fields and description">View</a> ↑ + </div> + <div id="trac-edit-warning" class="warning system-message alert" + style="${'display: none' if start_time == ticket['changetime'] else None}" + i18n:msg=""> + <span class="label label-warning">Warning</span> + This ticket has been modified since you started editing. You should review the + <em class="trac-new">other modifications</em> which have been appended above, + and any <em class="trac-conflict">conflicts</em> shown in the preview below. + You can nevertheless proceed and submit your changes if you wish so. </div> + <!--! Comment field --> + <fieldset class="iefix"> + <textarea id="comment" name="comment" class="trac-resizable $cols_activity" rows="5">${comment}</textarea> + <py:if test="ticket.exists"> + <input type="submit" class="btn pull-right" name="submit" value="${_('Submit')}" /> + </py:if> + <label for="comment" class="help-block" i18n:msg=""> + <span class="label label-info">Tip</span> + You may use + <a tabindex="42" href="${href.wiki('WikiFormatting')}">WikiFormatting</a> + here. + </label> + </fieldset> </div> - - <div> - <h2 py:if="ticket.exists" class="foldable">Modify Ticket</h2> - <div id="modify" class="well"> - <!--! Properties --> - <fieldset id="properties" py:if="can_modify or can_edit or can_create" - py:with="fields = [f for f in fields if not f.skip and f.name != 'product']"> - <legend py:choose=""> - <py:when test="ticket.exists">Change Properties</py:when> - <py:otherwise>Properties</py:otherwise> - </legend> - - <table id="modifyproperties"> - <tr py:if="can_modify or can_create"> - <td colspan="2"> - <label for="field-product-name">Product:</label> - <input type="text" disabled="disabled" class="${'span2' if ticket.exists else 'span7'}" - id="field-product-name" name="field_product_name" - value="$req.perm.env.product.name ($req.perm.env.product.prefix)" /> - <input type="hidden" id="field-product" name="field_product" value="$req.perm.env.product.prefix" /> - </td> - </tr> + </div> + + <div> + <h2 py:if="ticket.exists" class="foldable">Modify Ticket</h2> + <div id="modify" class="well"> + <!--! Properties --> + <fieldset id="properties" py:if="can_modify or can_edit or can_create" + py:with="fields = [f for f in fields if not f.skip and f.name != 'product']"> + <legend py:choose=""> + <py:when test="ticket.exists">Change Properties</py:when> + <py:otherwise>Properties</py:otherwise> + </legend> + + <table id="modifyproperties"> + <tr py:if="can_modify or can_create"> + <td colspan="2"> + <label for="field-product-name">Product:</label> + <input type="text" disabled="disabled" class="${'span2' if ticket.exists else 'span7'}" + id="field-product-name" name="field_product_name" + value="$req.perm.env.product.name ($req.perm.env.product.prefix)" /> + <input type="hidden" id="field-product" name="field_product" value="$req.perm.env.product.prefix" /> + </td> + </tr> - <tr py:if="can_modify or can_create"> - <td colspan="2"> - <label for="field-summary">Summary:</label> - <input class="${'span4' if ticket.exists else 'span7'}" type="text" id="field-summary" name="field_summary" value="$ticket.summary" /> - </td> - </tr> - - <tr py:if="only_for_admin"> - <td colspan="2"> - <label for="field-reporter">Reporter:</label> - <input class="${'span2' if ticket.exists else 'span7'}" type="text" id="field-reporter" name="field_reporter" value="${ticket.reporter}" /> - </td> - </tr> - - <tr py:if="can_edit or can_create"> - <td colspan="2"> - <label for="field-description">Description:</label> - <fieldset class="iefix"> - <textarea id="field-description" name="field_description" - class="span7 wikitext trac-resizable" rows="10">${ticket.description}</textarea> - <label for="field-description" id="field-description-help" class="help-block pull-right" i18n:msg=""> - <span class="label label-info">Tip</span> - You may use - <a tabindex="42" href="${href.wiki('WikiFormatting')}">WikiFormatting</a> here. - </label> - </fieldset> - </td> - </tr> - - <tr py:for="row in group(fields, 2, lambda f: f.type != 'textarea')" - py:if="can_modify or can_create"> - <py:for each="idx, field in enumerate(row)" - py:with="value = ticket.get_value_or_default(field.name)"> - <td> - <label for="field-${field.name}" py:if="field" id="${'editor-' + field.name}" - i18n:msg="field">${field.edit_label or field.label or field.name}:</label> - <py:choose test="field.type" py:if="field"> - <select py:when="'select'" id="field-${field.name}" name="field_${field.name}" - class="${'span2' if ticket.exists else 'span3'}"> - <option py:if="field.optional"></option> - <option py:for="option in field.options" + <tr py:if="can_modify or can_create"> + <td colspan="2"> + <label for="field-summary">Summary:</label> + <input class="${'span4' if ticket.exists else 'span7'}" type="text" id="field-summary" name="field_summary" value="$ticket.summary" /> + </td> + </tr> + + <tr py:if="only_for_admin"> + <td colspan="2"> + <label for="field-reporter">Reporter:</label> + <input class="${'span2' if ticket.exists else 'span7'}" type="text" id="field-reporter" name="field_reporter" value="${ticket.reporter}" /> + </td> + </tr> + + <tr py:if="can_edit or can_create"> + <td colspan="2"> + <label for="field-description">Description:</label> + <fieldset class="iefix"> + <textarea id="field-description" name="field_description" + class="span7 wikitext trac-resizable" rows="10">${ticket.description}</textarea> + <label for="field-description" id="field-description-help" class="help-block pull-right" i18n:msg=""> + <span class="label label-info">Tip</span> + You may use + <a tabindex="42" href="${href.wiki('WikiFormatting')}">WikiFormatting</a> here. + </label> + </fieldset> + </td> + </tr> + + <tr py:for="row in group(fields, 2, lambda f: f.type != 'textarea')" + py:if="can_modify or can_create"> + <py:for each="idx, field in enumerate(row)" + py:with="value = ticket.get_value_or_default(field.name)"> + <td> + <label for="field-${field.name}" py:if="field" id="${'editor-' + field.name}" + i18n:msg="field">${field.edit_label or field.label or field.name}:</label> + <py:choose test="field.type" py:if="field"> + <select py:when="'select'" id="field-${field.name}" name="field_${field.name}" + class="${'span2' if ticket.exists else 'span3'}"> + <option py:if="field.optional"></option> + <option py:for="option in field.options" + selected="${value == option or None}" + value="$option" py:content="option"></option> + <optgroup py:for="optgroup in field.optgroups" + py:if="optgroup.options" + label="${optgroup.label}"> + <option py:for="option in optgroup.options" selected="${value == option or None}" value="$option" py:content="option"></option> - <optgroup py:for="optgroup in field.optgroups" - py:if="optgroup.options" - label="${optgroup.label}"> - <option py:for="option in optgroup.options" - selected="${value == option or None}" - value="$option" py:content="option"></option> - </optgroup> - </select> - <textarea py:when="'textarea'" id="field-${field.name}" name="field_${field.name}" - cols="${field.width}" rows="${field.height}" - class="${'wikitext ' if field.format == 'wiki' else None}trac-resizable">${value}</textarea> - <span py:when="'checkbox'"> - <input type="checkbox" id="field-${field.name}" name="field_${field.name}" - checked="${value == '1' or None}" value="1" /> - <input type="hidden" name="field_checkbox_${field.name}" value="1" /> - </span> - <label py:when="'radio'" class="checkbox inline" - py:for="idx, option in enumerate(field.options)"> - <input type="radio" name="field_${field.name}" value="${option}" - checked="${value == option or None}" /> - ${option} - </label> - <py:otherwise><!--! Text input fields --> - <py:choose> - <span py:when="field.cc_entry"><!--! Special case for Cc: field --> - <em>${field.cc_entry}</em> - <input type="checkbox" id="field-cc" name="cc_update" - title="This checkbox allows you to add or remove yourself from the CC list." - checked="${field.cc_update}" /> - </span> - <!--! Cc: when TICKET_EDIT_CC is allowed --> - <span py:when="field.name == 'cc'"> - <input type="text" id="field-${field.name}" - title="Space or comma delimited email addresses and usernames are accepted." - name="field_${field.name}" value="${value}" /> - </span> - <!--! All the other text input fields --> - <input py:otherwise="" type="text" id="field-${field.name}" + </optgroup> + </select> + <textarea py:when="'textarea'" id="field-${field.name}" name="field_${field.name}" + cols="${field.width}" rows="${field.height}" + class="${'wikitext ' if field.format == 'wiki' else None}trac-resizable">${value}</textarea> + <span py:when="'checkbox'"> + <input type="checkbox" id="field-${field.name}" name="field_${field.name}" + checked="${value == '1' or None}" value="1" /> + <input type="hidden" name="field_checkbox_${field.name}" value="1" /> + </span> + <label py:when="'radio'" class="checkbox inline" + py:for="idx, option in enumerate(field.options)"> + <input type="radio" name="field_${field.name}" value="${option}" + checked="${value == option or None}" /> + ${option} + </label> + <py:otherwise><!--! Text input fields --> + <py:choose> + <span py:when="field.cc_entry"><!--! Special case for Cc: field --> + <em>${field.cc_entry}</em> + <input type="checkbox" id="field-cc" name="cc_update" + title="This checkbox allows you to add or remove yourself from the CC list." + checked="${field.cc_update}" /> + </span> + <!--! Cc: when TICKET_EDIT_CC is allowed --> + <span py:when="field.name == 'cc'"> + <input type="text" id="field-${field.name}" + title="Space or comma delimited email addresses and usernames are accepted." name="field_${field.name}" value="${value}" /> - </py:choose> - </py:otherwise> - </py:choose> - </td> - </py:for> - </tr> - </table> - </fieldset> - - <!--! Workflow support --> - <py:if test="ticket.exists"> <!--! do not display the actions for New tickets --> - <py:choose> - <fieldset py:when="can_append or can_modify" id="action"> - <legend>Action</legend> - <xi:include href="bh_ticket_actions.html" /> - </fieldset> - <py:otherwise> - <py:for each="key, label, controls, hints in action_controls"> - <input py:if="key == action" type="hidden" name="action" value="$action" /> - </py:for> - </py:otherwise> - </py:choose> - </py:if> - </div> - </div> - - <div class="$colspan"> - <!--! Preview of ticket changes --> - <div py:if="ticket.exists and can_append" id="ticketchange" class="ticketdraft" - style="${'display: none' if not (change_preview.fields or change_preview.comment) - or cnum_edit is not None else None}"> - <xi:include href="bh_ticket_change.html" py:with="change = change_preview; preview = True"/> - </div> - </div> - - <div class="$colspan"> - <!--! Author or Reporter --> - <div py:if="authname == 'anonymous'" class="field"> - <fieldset py:choose=""> - <legend py:when="ticket.exists">Author</legend> - <legend py:otherwise="">Reporter</legend> - <table> - <tr> - <th> - <label for="author">Your email or username:</label><br /> - </th> - <td> - <input type="text" id="author" name="author" size="40" value="$author_id" /> - <br /> + </span> + <!--! All the other text input fields --> + <input py:otherwise="" type="text" id="field-${field.name}" + name="field_${field.name}" value="${value}" /> + </py:choose> + </py:otherwise> + </py:choose> </td> - </tr> - </table> - <p py:if="author_id == 'anonymous'" class="hint"> - <i18n:msg>E-mail address and user name can be saved in the <a href="${href.prefs()}">Preferences</a>.</i18n:msg> - </p> - </fieldset> - </div> - - <!--! Attachment on creation checkbox --> - <p py:if="not ticket.exists and 'ATTACHMENT_CREATE' in perm(ticket.resource.child('attachment'))"> - <label> - <input type="checkbox" name="attachment" checked="${'attachment' in req.args or None}" /> - I have files to attach to this ticket - </label> - </p> - - <div py:if="ticket.exists" class="trac-nav"> - <a href="#attachments" title="Go to the list of attachments">Attachments</a> ↑ - </div> - <div class="buttons"> - <py:if test="ticket.exists"> - <input type="hidden" name="start_time" value="${to_utimestamp(start_time)}" /> - <input type="hidden" name="view_time" value="${to_utimestamp(ticket['changetime'])}" /> - <input type="hidden" name="replyto" value="${replyto}" /> - </py:if> - <py:if test="not ticket.exists"> - <input type="submit" class="btn" name="preview" value="${_('Preview')}" accesskey="r" /> - <input type="submit" class="btn" name="submit" value="${_('Submit') if ticket.exists else _('Create ticket')}" /> - </py:if> - </div> + </py:for> + </tr> + </table> + </fieldset> + + <!--! Workflow support --> + <py:if test="ticket.exists"> <!--! do not display the actions for New tickets --> + <py:choose> + <fieldset py:when="can_append or can_modify" id="action"> + <legend>Action</legend> + <xi:include href="bh_ticket_actions.html" /> + </fieldset> + <py:otherwise> + <py:for each="key, label, controls, hints in action_controls"> + <input py:if="key == action" type="hidden" name="action" value="$action" /> + </py:for> + </py:otherwise> + </py:choose> + </py:if> </div> - </form> </div> + + <div class="$colspan"> + <!--! Preview of ticket changes --> + <div py:if="ticket.exists and can_append" id="ticketchange" class="ticketdraft" + style="${'display: none' if not (change_preview.fields or change_preview.comment) + or cnum_edit is not None else None}"> + <xi:include href="bh_ticket_change.html" py:with="change = change_preview; preview = True"/> + </div> </div> - <div id="changelog"> - <!--! add comment + modify ticket --> - - <py:for each="change in changes"> - <div class="change${' trac-new' if change.date > start_time and 'attachment' not in change.fields else None}" - id="${'trac-change-%d-%d' % (change.cnum, to_utimestamp(change.date)) if 'cnum' in change else None}"> - <xi:include href="bh_ticket_change.html"/> + + <div class="$colspan"> + <!--! Author or Reporter --> + <div py:if="authname == 'anonymous'" class="field"> + <fieldset py:choose=""> + <legend py:when="ticket.exists">Author</legend> + <legend py:otherwise="">Reporter</legend> + <table> + <tr> + <th> + <label for="author">Your email or username:</label><br /> + </th> + <td> + <input type="text" id="author" name="author" size="40" value="$author_id" /> + <br /> + </td> + </tr> + </table> + <p py:if="author_id == 'anonymous'" class="hint"> + <i18n:msg>E-mail address and user name can be saved in the <a href="${href.prefs()}">Preferences</a>.</i18n:msg> + </p> + </fieldset> + </div> + + <!--! Attachment on creation checkbox --> + <p py:if="not ticket.exists and 'ATTACHMENT_CREATE' in perm(ticket.resource.child('attachment'))"> + <label> + <input type="checkbox" name="attachment" checked="${'attachment' in req.args or None}" /> + I have files to attach to this ticket + </label> + </p> + + <div py:if="ticket.exists" class="trac-nav"> + <a href="#attachments" title="Go to the list of attachments">Attachments</a> ↑ </div> - </py:for> + <div class="buttons"> + <py:if test="ticket.exists"> + <input type="hidden" name="start_time" value="${to_utimestamp(start_time)}" /> + <input type="hidden" name="view_time" value="${to_utimestamp(ticket['changetime'])}" /> + <input type="hidden" name="replyto" value="${replyto}" /> + </py:if> + <py:if test="not ticket.exists"> + <input type="submit" class="btn" name="preview" value="${_('Preview')}" accesskey="r" /> + <input type="submit" class="btn" name="submit" value="${_('Submit') if ticket.exists else _('Create ticket')}" /> + </py:if> + </div> + </div> + </form> </div> + </div> + <div id="changelog"> + <!--! add comment + modify ticket --> + <py:for each="change in changes"> + <div class="change${' trac-new' if change.date > start_time and 'attachment' not in change.fields else None}" + id="${'trac-change-%d-%d' % (change.cnum, to_utimestamp(change.date)) if 'cnum' in change else None}"> + <xi:include href="bh_ticket_change.html"/> + </div> + </py:for> </div> - </div> - + </div> </div> </div> Modified: bloodhound/trunk/bloodhound_theme/bhtheme/templates/bh_ticket_change.html URL: http://svn.apache.org/viewvc/bloodhound/trunk/bloodhound_theme/bhtheme/templates/bh_ticket_change.html?rev=1467339&r1=1467338&r2=1467339&view=diff ============================================================================== --- bloodhound/trunk/bloodhound_theme/bhtheme/templates/bh_ticket_change.html (original) +++ bloodhound/trunk/bloodhound_theme/bhtheme/templates/bh_ticket_change.html Fri Apr 12 16:33:52 2013 @@ -52,7 +52,10 @@ Arguments: <div class="visible-desktop-hover" py:if="change.comment"> <div py:if="cnum" class="comment-box" id="${'comment:' + str(cnum) if cnum else ''}"> <div> - <h4 class="change"> + <h4 class="change" style="display: inline-block;"> + ${authorinfo(change.author)} + <span py:if="preview or show_editor" class="trac-loading"/> + </h4> <div class="pull-right"> <span py:if="'cnum' in change" id="comment:$cnum" class="cnum">${commentref('comment:', cnum)}</span> </div> @@ -77,10 +80,6 @@ Arguments: </div> </form> </div> - - ${authorinfo(change.author)} - <span py:if="preview or show_editor" class="trac-loading"/> - </h4> <form py:if="show_editor" id="trac-comment-editor" method="post" action="${href.ticket(ticket.id) + '#comment:%d' % cnum}"> <div> @@ -174,7 +173,7 @@ Arguments: </h4> </div > </py:if> - <ul py:if="change.fields" class="changes "> + <ul py:if="change.fields" class="changes"> <li py:for="field_name, field in sorted(change.fields.iteritems(), key=lambda item: item[1].label.lower())" class="trac-field-${field_name}${'trac-conflict' if preview and field_name in conflicts else None} visible-desktop-hover"> <strong class="trac-field-${field_name}">${field.label}</strong> Modified: bloodhound/trunk/trac/trac/wiki/formatter.py URL: http://svn.apache.org/viewvc/bloodhound/trunk/trac/trac/wiki/formatter.py?rev=1467339&r1=1467338&r2=1467339&view=diff ============================================================================== --- bloodhound/trunk/trac/trac/wiki/formatter.py (original) +++ bloodhound/trunk/trac/trac/wiki/formatter.py Fri Apr 12 16:33:52 2013 @@ -707,7 +707,7 @@ class Formatter(object): local_url = self.env.project_url or \ (self.req or self.env).abs_href.base if not url.startswith(local_url): - return tag.a(tag.span(u'\u200b', class_="icon"), text, + return tag.a(text, tag.span(u'\u200b', class_="icon"), class_="ext-link", href=url, title=title or None) else: return tag.a(text, href=url, title=title or None)