Mercurial > p > roundup > code
changeset 4698:e0736e375c13
Use the changes in bug.item in task.item as well; more semantic markup for msg.item
| author | Pradip Caulagi <caulagi@gmail.com> |
|---|---|
| date | Sat, 15 Dec 2012 22:33:15 +0530 |
| parents | f505074e2fd2 |
| children | 63360b6cde25 |
| files | share/roundup/templates/responsive/html/msg.item.html share/roundup/templates/responsive/html/task.item.html |
| diffstat | 2 files changed, 335 insertions(+), 275 deletions(-) [+] |
line wrap: on
line diff
--- a/share/roundup/templates/responsive/html/msg.item.html Sat Dec 15 21:42:47 2012 +0530 +++ b/share/roundup/templates/responsive/html/msg.item.html Sat Dec 15 22:33:15 2012 +0530 @@ -20,104 +20,71 @@ tal:omit-tag="python:1" i18n:translate="">Message<tal:x replace="context/id" i18n:name="id" /> Editing</span> </tal:block> -<td class="content" metal:fill-slot="content"> -<p tal:condition="python:not (context.is_view_ok() - or request.user.hasRole('Anonymous'))" i18n:translate=""> - You are not allowed to view this page.</p> +<div metal:fill-slot="content"> -<p tal:condition="python:not context.is_view_ok() - and request.user.hasRole('Anonymous')" i18n:translate=""> - Please login with your username and password.</p> + <p tal:condition="python:not (context.is_view_ok() + or request.user.hasRole('Anonymous'))" i18n:translate=""> + You are not allowed to view this page.</p> -<div tal:condition="context/is_view_ok"> -<table class="form"> - -<tr> - <th i18n:translate="">Author</th> - <td tal:content="context/author"></td> -</tr> + <p tal:condition="python:not context.is_view_ok() + and request.user.hasRole('Anonymous')" i18n:translate=""> + Please login with your username and password.</p> -<tr> - <th i18n:translate="">Recipients</th> - <td tal:content="context/recipients"></td> -</tr> - -<tr> - <th i18n:translate="">Date</th> - <td tal:content="context/date"></td> -</tr> - - <tr> - <th i18n:translate="">Message-id</th> - <td tal:content="context/messageid"></td> - </tr> - - <tr> - <th i18n:translate="">In-reply-to</th> - <td tal:content="context/inreplyto"></td> - </tr> - -</table> - -<!--<p tal:condition="python:utils.sb_is_spam(context)" class="error-message"> - Message has been classified as spam</p>--> - -<table class="messages"> + <div tal:condition="context/is_view_ok"> + <dl class='dl-horizontal'> + <dt i18n:translate="">Author</dt> + <dd tal:content="context/author"></dd> + <dt i18n:translate="">Recipients</dt> + <dd tal:content="context/recipients"></dd> + <dt i18n:translate="">Date</dt> + <dd tal:content="context/date"></dd> + <dt i18n:translate="">Message-id</dt> + <dd tal:content="context/messageid"></dd> + <dt i18n:translate="">In-reply-to</dt> + <dd tal:content="context/inreplyto"></dd> + </dl> -<!-- <tr> - <th class="header" i18n:translate="">Content</th> - <th class="header" - tal:condition="python:request.user.hasPermission('SB: May Classify')"> - <form method="POST" onSubmit="return submit_once()" - enctype="multipart/form-data" - tal:attributes="action context/designator"> - - <input type="hidden" name="@action" value="spambayes_classify"> - <input type="submit" name="trainspam" value="Mark as SPAM" i18n:attributes="value"> - <input type="submit" name="trainham" value="Mark as HAM (not SPAM)" i18n:attributes="value"> - </form> - </th> - -</tr>--> + <!-- not sure this is needed --> + <table class="messages"> + <tr> + <td class="content" colspan="2" + tal:condition="python:context.content.is_view_ok()"> + <pre + tal:content="structure python:utils.localReplace(context.content.hyperlinked())"></pre></td> + <td class="content" colspan="2" + tal:condition="python:not context.content.is_view_ok()"> + You are not authorized to see this message. + <!-- Message has been classified as spam and is therefore not + available to unathorized users. If you think this is + incorrect, please login and report the message as being + misclassified. --> + </td> + </tr> + </table> - <tr> - <td class="content" colspan="2" - tal:condition="python:context.content.is_view_ok()"> - <pre - tal:content="structure python:utils.localReplace(context.content.hyperlinked())"></pre></td> - <td class="content" colspan="2" - tal:condition="python:not context.content.is_view_ok()"> - You are not authorized to see this message. -<!-- Message has been classified as spam and is therefore not - available to unathorized users. If you think this is - incorrect, please login and report the message as being - misclassified. --> - </td> - </tr> -</table> + <table class="files" tal:condition="context/files"> + <tr><th colspan="2" class="header" i18n:translate="">Files</th></tr> + <tr> + <th i18n:translate="">File name</th> + <th i18n:translate="">Uploaded</th> + </tr> + <tr tal:repeat="file context/files"> + <td> + <a tal:attributes="href string:file${file/id}/${file/name}" + tal:content="file/name">dld link</a> + </td> + <td> + <span tal:content="file/creator">creator's name</span>, + <span tal:content="file/creation">creation date</span> + </td> + </tr> + </table> -<table class="files" tal:condition="context/files"> - <tr><th colspan="2" class="header" i18n:translate="">Files</th></tr> - <tr> - <th i18n:translate="">File name</th> - <th i18n:translate="">Uploaded</th> - </tr> - <tr tal:repeat="file context/files"> - <td> - <a tal:attributes="href string:file${file/id}/${file/name}" - tal:content="file/name">dld link</a> - </td> - <td> - <span tal:content="file/creator">creator's name</span>, - <span tal:content="file/creation">creation date</span> - </td> - </tr> -</table> + <div class='vspace-five'></div> + <tal:block tal:replace="structure context/history" /> -<tal:block tal:replace="structure context/history" /> - -</div> -</td> + </div> <!-- div tal:condition="context/is_view_ok" --> +</div> <!-- content --> </tal:block>
--- a/share/roundup/templates/responsive/html/task.item.html Sat Dec 15 21:42:47 2012 +0530 +++ b/share/roundup/templates/responsive/html/task.item.html Sat Dec 15 22:33:15 2012 +0530 @@ -22,204 +22,297 @@ replace="context/id" i18n:name="id" /> Editing</span> </tal:block> -<td class="content" metal:fill-slot="content"> +<div metal:fill-slot="content"> -<p tal:condition="python:not (context.is_view_ok() - or request.user.hasRole('Anonymous'))" i18n:translate=""> - You are not allowed to view this page.</p> + <p tal:condition="python:not (context.is_view_ok() + or request.user.hasRole('Anonymous'))" i18n:translate=""> + You are not allowed to view this page.</p> -<p tal:condition="python:not context.is_view_ok() - and request.user.hasRole('Anonymous')" i18n:translate=""> - Please login with your username and password.</p> + <p tal:condition="python:not context.is_view_ok() + and request.user.hasRole('Anonymous')" i18n:translate=""> + Please login with your username and password.</p> -<div tal:condition="context/is_view_ok"> + <div tal:condition="context/is_view_ok"> -<form method="POST" name="itemSynopsis" + <form method="POST" name="itemSynopsis" class='form-horizontal' onSubmit="return submit_once()" enctype="multipart/form-data" tal:attributes="action context/designator"> -<fieldset><legend>classification</legend> -<table class="form"> -<tr> - <th class="required" i18n:translate="">Title:</th> - <td colspan="3" tal:condition="context/title/is_edit_ok" - tal:content="structure python:context.title.field(size=60)">title</td> - <td colspan="3" tal:condition="not:context/title/is_edit_ok"> - <span tal:content="structure context/title/plain"/> - <input type="hidden" name="title" tal:attributes="value context/title"> - </td> -</tr> + <fieldset> + <legend>classification</legend> + <div class='container-fluid'> + <!-- TITLE --> + <div class='control-group vspace-two' tal:condition="context/title/is_edit_ok"> + <label class='control-label' for='bug_title' i18n:translate="">Title</label> + <div class='controls'> + <input class='input-xxlarge' type='text' name='title' id='bug_title' tal:attributes="value context/title"> + </div> + </div> + <div class='control-group vspace-two' tal:condition="not:context/title/is_edit_ok"> + <label class='control-label' i18n:translate="">Title</label> + <div class='controls'> + <span class='input-xxlarge uneditable-input' tal:content="structure context/title/plain"></span> + </div> + </div> -<tr> - <th class="required" i18n:translate=""> - <span tal:replace="structure python:db.task_type.classhelp('id,name,description',property='type',label='Type')" />: - </th> - <td tal:content="structure context/type/menu">type</td> - <th i18n:translate=""> - <span tal:replace="structure python:db.component.classhelp('id,name,description',property='component',label='Components')" />: - </th> - <td tal:content="structure context/components/menu">components</td> -</tr> -</table> -</fieldset> - -<fieldset><legend>process</legend> -<table class="form"> -<tr tal:condition="context/id"> - <th i18n:translate=""> - <span tal:replace="structure python:db.status.classhelp('id,name,description',property='status',label='Status')" />: - </th> - <td tal:content="structure context/status/menu">status</td> - <th i18n:translate="">Resolution:</th> - <td tal:content="structure context/resolution/menu">resolution</td> -</tr> + <div class='row-fluid'> + <!-- TYPE --> + <div class='control-group span6'> + <label class='control-label' for='bug_type' + tal:condition="context/type/is_edit_ok" i18n:translate=""> + <span tal:condition="context/type/is_edit_ok" + tal:replace="structure python:db.bug_type.classhelp('id,name,description',property='type',label='Type')" /> + </label> + <label class='control-label' for='bug_type' + tal:condition="not:context/type/is_edit_ok" i18n:translate="">Type</label> + <div class='controls' tal:content="structure context/type/menu"> + <!-- ; --> + </div> + </div> + <!-- Components --> + <div class='control-group span6'> + <label class='control-label' for='bug_components' + tal:condition="context/components/is_edit_ok" i18n:translate=""> + <span tal:condition="context/components/is_edit_ok" + tal:replace="structure python:db.component.classhelp('id,name,description',property='components',label='Components')" /> + </label> + <label class='control-label' for='bug_components' + tal:condition="not:context/components/is_edit_ok" i18n:translate="">component</label> + <div class='controls' tal:content="structure context/components/menu"> + <!-- ; --> + </div> + </div> + </div> <!-- row-fluid --> + </div> <!-- container-fluid --> + </fieldset> -<tr tal:condition="context/id"> - <th> - <tal:block i18n:translate="">Dependencies</tal:block>: - <span tal:condition="context/dependencies/is_edit_ok" - tal:replace="structure python:db.task.classhelp('id,title', filter='status=0,1', property='dependencies')" /> - </th> - <td> - <span tal:replace="structure python:context.dependencies.field(showid=1,size=20)" /> - <span tal:condition="context/dependencies" tal:repeat="d python:context.dependencies.sorted('creation')"> - <br/>View: <a tal:attributes="href string:task${d/id}" tal:content="d/id"></a> - </span> - </td> - <th i18n:translate=""> - <tal:block i18n:translate="">Superseder</tal:block>: - <span tal:condition="context/superseder/is_edit_ok" - tal:replace="structure python:db.task.classhelp('id,title', filter='status=0,1', property='superseder')" /> - </th> - <td> - <span tal:replace="structure python:context.superseder.field(showid=1, size=20)" /> - <span tal:condition="context/superseder"> -<!-- <br><span i18n:translate="">View</span>: - <a tal:repeat="sup context/superseder" - tal:content="python:sup['id'] + ', '*(not repeat['sup'].end)" - tal:attributes="href string:task${sup/id}; title sup/title;"></a> --> - <br><span i18n:translate="">View</span>: - <a tal:content="context/superseder/id" - tal:attributes="href string:task${context/superseder/id}; title context/superseder/title;"></a> - </span> - </td> - </tr> - <tr> - <th><tal:block i18n:translate="">Assigned To</tal:block>:</th> - <td tal:content="structure context/assignee/menu">assignedto menu</td> - <th><tal:block i18n:translate="">Nosy List</tal:block>: - <span tal:condition="context/nosy/is_edit_ok" - tal:replace="structure python:db.user.classhelp('username,realname,address', property='nosy')" /> - </th> - <td> - <span tal:replace="structure context/nosy/field" /> - </td> -</tr> -<tr> - <th> - <span tal:replace="structure python:db.priority.classhelp('id,name,description', property='priority',label='Priority')" />: - </th> - <td tal:content="structure context/priority/menu">priority</td> -</tr> -<tr tal:condition="context/is_edit_ok"> - <th><tal:block i18n:translate="">Comment</tal:block>:</th> - <td colspan="3"> - <textarea tal:content="request/form/@note/value | default" - name="@note" wrap="hard" rows="10" cols="72"></textarea> - </td> -</tr> + <fieldset> + <legend>process</legend> + <div class='container-fluid'> + <div class='row-fluid vspace-two'></div> + <div class='row-fluid' tal:condition="context/id"> + <!-- Status --> + <div class='control-group span6'> + <label class='control-label' for='process_status' + tal:condition="context/status/is_edit_ok" i18n:translate=""> + <span tal:condition="context/status/is_edit_ok" + tal:replace="structure python:db.status.classhelp('id,name,description',property='status', label='Status')" /> + </label> + <label class='control-label' for='process_status' + tal:condition="not:context/status/is_edit_ok" i18n:translate="">Status</label> + <div class='controls' tal:content="structure context/status/menu"> + <!-- ; --> + </div> + </div> + <!-- Resolution --> + <div class='control-group span6'> + <label class='control-label' for='process_resolution' + tal:condition="context/resolution/is_edit_ok" i18n:translate=""> + <span tal:condition="context/resolution/is_edit_ok" + tal:replace="structure python:db.resolution.classhelp('id,name,description',property='resolution', label='Resolution')" /> + </label> + <label class='control-label' for='process_resolution' + tal:condition="not:context/resolution/is_edit_ok" i18n:translate="">Resolution</label> + <div class='controls' tal:content="structure context/resolution/menu"> + <!-- ; --> + </div> + </div> + </div> <!-- row-fluid --> + + <div class='row-fluid' tal:condition="context/id"> + <!-- Dependencies --> + <div class='control-group span6'> + <tal:block i18n:translate="">Dependencies</tal:block>: + <span tal:condition="context/dependencies/is_edit_ok" + tal:replace="structure python:db.bug.classhelp('id,title', filter='status=0,1', property='dependencies')" /> + <div class='controls'> + <span tal:replace="structure python:context.dependencies.field(showid=1,size=20)" /> + <span tal:condition="context/dependencies" tal:repeat="d python:context.dependencies.sorted('creation')"> + View: <a tal:attributes="href string:bug${d/id}" tal:content="d/id"></a> + </span> + </div> + </div> + <!-- Superseder --> + <div class='control-group span6'> + <label class='control-label'>Superseder</label> + <!-- FIXME + <tal:block i18n:translate="">Superseder</tal:block>: + <span tal:condition="context/superseder/is_edit_ok" + tal:replace="structure python:db.bug.classhelp('id,title', filter='status=0,1', property='superseder')" /> + --> + <div class='controls'> + <span tal:replace="structure python:context.superseder.field(showid=1, size=20)" /> + <span tal:condition="context/superseder"> + <span i18n:translate="">View</span>: + <a tal:content="context/superseder/id" + tal:attributes="href string:bug${context/superseder/id}; title context/superseder/title;"></a> + </span> + </div> + </div> + </div> <!-- row-fluid --> + + <div class='row-fluid'> + <!-- Assignee --> + <div class='control-group span6'> + <label class='control-label'> + <tal:block i18n:translate="">Assigned To</tal:block> + </label> + <div class='controls'> + <span tal:content="structure context/assignee/menu">assignedto menu</span> + </div> + </div> + <!-- Nosy list --> + <div class='control-group span6'> + <label class='control-label' for='nosy'><tal:block i18n:translate="">Nosy List</tal:block></label> + <div class='controls'> + <span tal:condition="context/nosy/is_edit_ok" + tal:replace="structure python:db.user.classhelp('username,realname,address', property='nosy')" /> + <span tal:replace="structure context/nosy/field" /> + </div> + </div> <!-- row-fluid --> -<tr tal:condition="context/is_edit_ok"> - <th><tal:block i18n:translate="">File</tal:block>:</th> - <td colspan=3> - <input type="hidden" name="@link@files" value="file-1"> - <input type="file" name="file-1@content" size="40"> - </td> -</tr> -<tr tal:condition="context/is_edit_ok"> - <th><tal:block i18n:translate="">File Description</tal:block>:</th> - <td colspan=3><input type="edit" name="file-1@description" size="40"></td> -</tr> -</table> -</fieldset> -<div class="form-actions" tal:condition="context/is_edit_ok"> - <input type="hidden" name="@template" value="item"> - <input type="hidden" name="@required" value="title"> - <span tal:replace="structure context/submit">submit button</span> - <a tal:condition="context/id" tal:attributes="href context/copy_url" - i18n:translate="" class='btn'>Make a copy</a> -</div> -</form> + <div class='row-fluid'> + <!-- Priority --> + <div class='control-group span6'> + <label class='control-label' for='process_priority' + tal:condition="context/priority/is_edit_ok" i18n:translate=""> + <span tal:condition="context/priority/is_edit_ok" + tal:replace="structure python:db.priority.classhelp('id,name,description',property='priority',label='Priority')" /> + </label> + <label class='control-label' for='process_priority' + tal:condition="not:context/priority/is_edit_ok" i18n:translate="">Priority</label> + <div class='controls' tal:content="structure context/priority/menu"> + <!-- ; --> + </div> + </div> + </div> <!-- row-fluid --> + + <!-- and finally, allow people to say something important --> + <div class='row-fluid'> + <div class='control-group'> + <label class='control-label'> + <tal:block i18n:translate=""> + <span class='badge badge-inverse'>Comment</span> + + </tal:block> + </label> + <textarea tal:content="request/form/@note/value | default" + name="@note" rows="6" class='input-xxlarge'></textarea> + </div> + </div> <!-- row-fluid --> -<p tal:condition="context/id" i18n:translate=""> - Created on <b><tal:x replace="python:context.creation.pretty('%Y-%m-%d %H:%M')" i18n:name="creation" /></b> - by <b><tal:x replace="context/creator" i18n:name="creator" /></b>, - last changed <b><tal:x replace="python:context.activity.pretty('%Y-%m-%d %H:%M')" i18n:name="activity" /></b> - by <b><tal:x replace="context/actor" i18n:name="actor" /></b>. -</p> + <!-- upload file --> + <div class='row-fluid'> + <div class='control-group'> + <label class='control-label'> + <tal:block i18n:translate="">File</tal:block> + </label> + <div class='controls'> + <input type="hidden" name="@link@files" value="file-1"> + <input type="file" name="file-1@content" class='input-xlarge'> + </div> + </div> + </div> <!-- row-fluid --> + + <!-- file description --> + <div class='row-fluid'> + <div class='control-group'> + <label class='control-label'> + <tal:block i18n:translate="">File Description</tal:block> + </label> + <div class='controls'> + <input type="edit" name="file-1@description"> + </div> + </div> + </div> <!-- row-fluid --> + </div> <!-- container-fluid --> + </fieldset> + + <div class="form-actions" tal:condition="context/is_edit_ok"> + <input type="hidden" name="@template" value="item"> + <input type="hidden" name="@required" value="title"> + <span tal:replace="structure context/submit">submit button</span> + <a tal:condition="context/id" tal:attributes="href context/copy_url" + i18n:translate="" class='btn'>Make a copy</a> + </div> + </form> -<table class="files" tal:condition="context/files"> - <tr><th colspan="5" class="header" i18n:translate="">Files</th></tr> - <tr> - <th i18n:translate="">File name</th> - <th i18n:translate="">Uploaded</th> - <th i18n:translate="">Description</th> - <th i18n:translate="">Edit</th> - <th i18n:translate="">Remove</th> - </tr> - <tr tal:repeat="file python:context.files.sorted('creation')"> - <td> - <a tal:attributes="href file/download_url" - tal:content="file/name">dld link</a> - </td> - <td> - <span tal:content="file/creator">creator's name</span>, - <span tal:content="python:file.creation.pretty('%Y-%m-%d %H:%M')">creation date</span> - </td> - <td tal:content="file/description" /> - <td><a tal:condition="file/is_edit_ok" - tal:attributes="href string:file${file/id}">edit</a> - </td> - <td> - <form style="padding:0" tal:condition="file/is_edit_ok" - tal:attributes="action string:task${context/id}"> - <input type="hidden" name="@remove@files" tal:attributes="value file/id"> - <input type="hidden" name="@action" value="edit"> - <input type="submit" value="remove" i18n:attributes="value"> - </form> - </td> - </tr> -</table> + <p tal:condition="context/id" i18n:translate=""> + Created on <b><tal:x replace="python:context.creation.pretty('%Y-%m-%d %H:%M')" i18n:name="creation" /></b> + by <b><tal:x replace="context/creator" i18n:name="creator" /></b>, + last changed <b><tal:x replace="python:context.activity.pretty('%Y-%m-%d %H:%M')" i18n:name="activity" /></b> + by <b><tal:x replace="context/actor" i18n:name="actor" /></b>. + </p> -<div class="row-fluid" tal:condition="context/messages"> - <h3 i18n:translate="">Messages</h3> - <tal:block tal:repeat="msg context/messages"> - <p> - <a tal:attributes="href string:msg${msg/id}" - i18n:translate="">msg<tal:x replace="msg/id" i18n:name="id" /></a> - <span i18n:translate="">Author: <tal:x replace="python:msg.author.realname.plain()" - i18n:name="author" /> (<tal:x replace="msg/author"/>)</span> - <span i18n:translate="">Date: <tal:x replace="python:msg.date.pretty('%Y-%m-%d %H:%M')" - i18n:name="date" /></span> - <div class='pull-right'> - <form style="padding:0" tal:condition="msg/is_edit_ok" - tal:attributes="action string:bug${context/id}"> - <input type="hidden" name="@remove@messages" tal:attributes="value msg/id"> - <input type="hidden" name="@action" value="edit"> - <input type="submit" value="remove" i18n:attributes="value"> - </form> - </div> - <div class="content"> - <pre tal:condition="python:msg.content.is_view_ok()" - tal:content="structure python:utils.localReplace(msg.content.hyperlinked())">content</pre> - </div> - </tal:block> -</div> + <table class="table table-condensed table-bordered vspace-two" tal:condition="context/files"> + <thead> + <tr> + <th i18n:translate="">File name</th> + <th i18n:translate="">Uploaded</th> + <th i18n:translate="">Description</th> + <th i18n:translate="">Edit</th> + <th i18n:translate="">Remove</th> + </tr> + </thead> + <tr tal:repeat="file python:context.files.sorted('creation')"> + <td> + <a tal:attributes="href file/download_url" + tal:content="file/name">dld link</a> + </td> + <td> + <span tal:content="file/creator">creator's name</span>, + <span tal:content="python:file.creation.pretty('%Y-%m-%d %H:%M')">creation date</span> + </td> + <td tal:content="file/description" /> + <td><a tal:condition="file/is_edit_ok" + tal:attributes="href string:file${file/id}">edit</a> + </td> + <td> + <form style="padding:0" tal:condition="file/is_edit_ok" + tal:attributes="action string:bug${context/id}"> + <input type="hidden" name="@remove@files" tal:attributes="value file/id"> + <input type="hidden" name="@action" value="edit"> + <input type="submit" value="remove" i18n:attributes="value"> + </form> + </td> + </tr> + </table> + <div class='container-fluid' tal:condition="context/messages"> + <h3 i18n:translate="">Messages</h3> + <tal:block tal:repeat="msg context/messages"> + <div class='row-fluid'> + <div class='span1'> + <a tal:attributes="href string:msg${msg/id}" + i18n:translate="">msg<tal:x replace="msg/id" i18n:name="id" /></a> + </div> + <div class='span7 offset2'> + <span i18n:translate="">Author: <tal:x replace="python:msg.author.realname.plain()" + i18n:name="author" /> (<tal:x replace="msg/author"/>)</span> + <span i18n:translate="">Date: <tal:x replace="python:msg.date.pretty('%Y-%m-%d %H:%M')" + i18n:name="date" /></span> + </div> + <div class='pull-right'> + <form style="padding:0" tal:condition="msg/is_edit_ok" + tal:attributes="action string:bug${context/id}"> + <input type="hidden" name="@remove@messages" tal:attributes="value msg/id"> + <input type="hidden" name="@action" value="edit"> + <input type="submit" value="remove" i18n:attributes="value"> + </form> + </div> + </div> + <div class='row-fluid'> + <div class="content"> + <pre tal:condition="python:msg.content.is_view_ok()" + tal:content="structure python:utils.localReplace(msg.content.hyperlinked())">content</pre> + </div> + </div> + </tal:block> + </div> -<tal:block tal:condition="context/id" tal:replace="structure context/history" /> + <div class='vspace-four'></div> + <tal:block tal:condition="context/id" tal:replace="structure context/history" /> -</div> - -</td> + </div> <!-- div tal:condition="context/is_view_ok" --> +</div> <!-- content --> </tal:block>
