Initial commit
This commit is contained in:
13
indefero/src/IDF/templates/idf/admin/base.html
Normal file
13
indefero/src/IDF/templates/idf/admin/base.html
Normal file
@@ -0,0 +1,13 @@
|
||||
{extends "idf/base.html"}
|
||||
{block tabadmin} class="active"{/block}
|
||||
{block subtabs}
|
||||
<div id="sub-tabs">
|
||||
<a {if $inSummary}class="active" {/if}href="{url 'IDF_Views_Project::admin', array($project.shortname)}">{trans 'Project Summary'}</a> |
|
||||
<a {if $inDownloads}class="active" {/if}href="{url 'IDF_Views_Project::adminDownloads', array($project.shortname)}">{trans 'Downloads'}</a> |
|
||||
<a {if $inWiki}class="active" {/if}href="{url 'IDF_Views_Project::adminWiki', array($project.shortname)}">{trans 'Documentation'}</a> |
|
||||
<a {if $inIssueTracking}class="active" {/if}href="{url 'IDF_Views_Project::adminIssues', array($project.shortname)}">{trans 'Issue Tracking'}</a> |
|
||||
<a {if $inSource}class="active" {/if}href="{url 'IDF_Views_Project::adminSource', array($project.shortname)}">{trans 'Source'}</a> |
|
||||
<a {if $inMembers}class="active" {/if}href="{url 'IDF_Views_Project::adminMembers', array($project.shortname)}">{trans 'Project Members'}</a> |
|
||||
<a {if $inTabs}class="active" {/if}href="{url 'IDF_Views_Project::adminTabs', array($project.shortname)}">{trans 'Tabs Access and Notifications'}</a>
|
||||
</div>
|
||||
{/block}
|
68
indefero/src/IDF/templates/idf/admin/downloads.html
Normal file
68
indefero/src/IDF/templates/idf/admin/downloads.html
Normal file
@@ -0,0 +1,68 @@
|
||||
{extends "idf/admin/base.html"}
|
||||
{block docclass}yui-t3{assign $inDownloads = true}{/block}
|
||||
{block body}
|
||||
<form method="post" action=".">
|
||||
<table class="form" summary="">
|
||||
<tr>
|
||||
<td colspan="2"><strong>{$form.f.labels_download_predefined.labelTag}:</strong><br />
|
||||
{if $form.f.labels_download_predefined.errors}{$form.f.labels_download_predefined.fieldErrors}{/if}
|
||||
{$form.f.labels_download_predefined|unsafe}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">{$form.f.labels_download_one_max.labelTag}:<br />
|
||||
{if $form.f.labels_download_one_max.errors}{$form.f.labels_download_one_max.fieldErrors}{/if}
|
||||
{$form.f.labels_download_one_max|unsafe}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{$form.f.upload_webhook_url.labelTag}:<br />
|
||||
{if $form.f.upload_webhook_url.errors}{$form.f.upload_webhook_url.fieldErrors}{/if}
|
||||
{$form.f.upload_webhook_url|unsafe}<br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{trans 'Web-Hook authentication key:'} {$hookkey}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<input type="submit" value="{trans 'Save Changes'}" name="submit" />
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
{/block}
|
||||
{block context}
|
||||
<div class="issue-submit-info">
|
||||
{blocktrans}
|
||||
<p><strong>Instructions:</strong></p>
|
||||
<p>List one status value per line in desired sort-order.</p>
|
||||
<p>Optionally, use an equals-sign to document the meaning of each status value.</p>
|
||||
{/blocktrans}
|
||||
</div>
|
||||
<div class="issue-submit-info">
|
||||
|
||||
{blocktrans}<p>The webhook URL setting specifies an URL to which a HTTP <strong>PUT</strong>
|
||||
request is sent after a new download has been added or to which a HTTP <strong>POST</strong>
|
||||
request is sent after an existing download has been updated.
|
||||
If this field is empty, notifications are disabled.</p>
|
||||
|
||||
<p>Only properly-escaped <strong>HTTP</strong> URLs are supported, for example:</p>
|
||||
|
||||
<ul>
|
||||
<li><code>http://domain.com/upload</code></li>
|
||||
<li><code>http://domain.com/upload?my%20param</code></li>
|
||||
</ul>
|
||||
|
||||
<p>In addition, the URL may contain the following "%" notation, which
|
||||
will be replaced with specific project values for each download:</p>
|
||||
|
||||
<ul>
|
||||
<li><code>%p</code> - project name</li>
|
||||
<li><code>%d</code> - download id</li>
|
||||
</ul>
|
||||
|
||||
<p>For example, updating download 123 of project 'my-project' with
|
||||
web hook URL <code>http://mydomain.com/%p/%d</code> would send a POST request to
|
||||
<code>http://mydomain.com/my-project/123</code>.</p>{/blocktrans}</div>
|
||||
{/block}
|
63
indefero/src/IDF/templates/idf/admin/issue-tracking.html
Normal file
63
indefero/src/IDF/templates/idf/admin/issue-tracking.html
Normal file
@@ -0,0 +1,63 @@
|
||||
{extends "idf/admin/base.html"}
|
||||
{block docclass}yui-t1{assign $inIssueTracking = true}{/block}
|
||||
{block body}
|
||||
<form method="post" action=".">
|
||||
<table class="form" summary="">
|
||||
<tr>
|
||||
<td colspan="2"><strong>{$form.f.labels_issue_template.labelTag}:</strong><br />
|
||||
{if $form.f.labels_issue_template.errors}{$form.f.labels_issue_template.fieldErrors}{/if}
|
||||
{$form.f.labels_issue_template|unsafe}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2"><strong>{$form.f.labels_issue_open.labelTag}:</strong><br />
|
||||
{if $form.f.labels_issue_open.errors}{$form.f.labels_issue_open.fieldErrors}{/if}
|
||||
{$form.f.labels_issue_open|unsafe}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2"><strong>{$form.f.labels_issue_closed.labelTag}:</strong><br />
|
||||
{if $form.f.labels_issue_closed.errors}{$form.f.labels_issue_closed.fieldErrors}{/if}
|
||||
{$form.f.labels_issue_closed|unsafe}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2"><strong>{$form.f.labels_issue_predefined.labelTag}:</strong><br />
|
||||
{if $form.f.labels_issue_predefined.errors}{$form.f.labels_issue_predefined.fieldErrors}{/if}
|
||||
{$form.f.labels_issue_predefined|unsafe}<br />
|
||||
<span class="helptext">{$form.f.labels_issue_predefined.help_text}</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2"><strong>{$form.f.labels_issue_one_max.labelTag}:</strong><br />
|
||||
{if $form.f.labels_issue_one_max.errors}{$form.f.labels_issue_one_max.fieldErrors}{/if}
|
||||
{$form.f.labels_issue_one_max|unsafe}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2"><strong>{$form.f.issue_relations.labelTag}:</strong><br />
|
||||
{if $form.f.issue_relations.errors}{$form.f.issue_relations.fieldErrors}{/if}
|
||||
{$form.f.issue_relations|unsafe}<br />
|
||||
<span class="helptext">{$form.f.issue_relations.help_text}</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<input type="submit" value="{trans 'Save Changes'}" name="submit" />
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
|
||||
|
||||
{/block}
|
||||
|
||||
{block context}
|
||||
<div class="issue-submit-info">
|
||||
{blocktrans}
|
||||
<p><strong>Instructions:</strong></p>
|
||||
<p>List one status value per line in desired sort-order.</p>
|
||||
<p>Optionally, use an equals-sign to document the meaning of each status value.</p>
|
||||
{/blocktrans}
|
||||
</div>
|
||||
{/block}
|
44
indefero/src/IDF/templates/idf/admin/members.html
Normal file
44
indefero/src/IDF/templates/idf/admin/members.html
Normal file
@@ -0,0 +1,44 @@
|
||||
{extends "idf/admin/base.html"}
|
||||
{block docclass}yui-t3{assign $inMembers = true}{/block}
|
||||
{block body}
|
||||
<form method="post" action=".">
|
||||
<table class="form" summary="">
|
||||
<tr>
|
||||
<td colspan="2">{$form.f.owners.labelTag}:<br />
|
||||
{if $form.f.owners.errors}{$form.f.owners.fieldErrors}{/if}
|
||||
{$form.f.owners|unsafe}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">{$form.f.members.labelTag}:<br />
|
||||
{if $form.f.members.errors}{$form.f.members.fieldErrors}{/if}
|
||||
{$form.f.members|unsafe}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<input type="submit" value="{trans 'Save Changes'}" name="submit" />
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
|
||||
|
||||
{/block}
|
||||
|
||||
{block context}
|
||||
<div class="issue-submit-info">
|
||||
{blocktrans}
|
||||
<p><strong>Instructions:</strong></p>
|
||||
<p>Specify each person by its login. Each person must have already registered with the given login.</p>
|
||||
<p>Separate the logins with commas and/or new lines.</p>
|
||||
{/blocktrans}
|
||||
</div>
|
||||
<div class="issue-submit-info">
|
||||
{blocktrans}
|
||||
<p><strong>Notes:</strong></p>
|
||||
<p>A project owner may make any change to this project, including removing other project owners. You need to be carefull when you give owner rights.</p>
|
||||
<p>A project member will not have access to the administration area but will have more options available in the use of the project.</p>
|
||||
{/blocktrans}
|
||||
</div>
|
||||
{/block}
|
92
indefero/src/IDF/templates/idf/admin/source.html
Normal file
92
indefero/src/IDF/templates/idf/admin/source.html
Normal file
@@ -0,0 +1,92 @@
|
||||
{extends "idf/admin/base.html"}
|
||||
{block docclass}yui-t3{assign $inSource = true}{/block}
|
||||
{block body}
|
||||
{if $form.errors}
|
||||
<div class="px-message-error">
|
||||
<p>{trans 'The form contains some errors. Please correct them to update the source configuration.'}</p>
|
||||
{if $form.get_top_errors}
|
||||
{$form.render_top_errors|unsafe}
|
||||
{/if}
|
||||
</div>
|
||||
{/if}
|
||||
<form method="post" action=".">
|
||||
<table class="form" summary="">
|
||||
<tr>
|
||||
<th>{trans 'Repository type:'}</th>
|
||||
<td>{$repository_type}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{trans 'Repository access:'}</th>
|
||||
<td>{$repository_access}
|
||||
</td>
|
||||
</tr>{if $repository_size != -1}
|
||||
<tr>
|
||||
<th>{trans 'Repository size:'}</th>
|
||||
<td>{$repository_size|size}
|
||||
</td>
|
||||
</tr>{/if}{if $remote_svn}
|
||||
<tr>
|
||||
<th>{$form.f.svn_username.labelTag}:</th>
|
||||
<td>{if $form.f.svn_username.errors}{$form.f.svn_username.fieldErrors}{/if}
|
||||
{$form.f.svn_username|unsafe}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{$form.f.svn_password.labelTag}:</th>
|
||||
<td>{if $form.f.svn_password.errors}{$form.f.svn_password.fieldErrors}{/if}
|
||||
{$form.f.svn_password|unsafe}
|
||||
</td>
|
||||
</tr>{/if}
|
||||
<tr>
|
||||
<th>{$form.f.webhook_url.labelTag}:</th>
|
||||
<td>{if $form.f.webhook_url.errors}{$form.f.webhook_url.fieldErrors}{/if}
|
||||
{$form.f.webhook_url|unsafe}<br />
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{trans 'Web-Hook authentication key:'}</th>
|
||||
<td>{$hookkey}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td> </td>
|
||||
<td>
|
||||
<input type="submit" value="{trans 'Save Changes'}" name="submit" />
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
{/block}
|
||||
{block context}
|
||||
<div class="issue-submit-info">
|
||||
<p>{blocktrans}You can find here the current repository configuration of your project.{/blocktrans}</p>
|
||||
</div>
|
||||
|
||||
|
||||
<br>
|
||||
<div class="issue-submit-info">
|
||||
|
||||
{blocktrans}<p>The webhook URL setting specifies an URL to which a HTTP
|
||||
<strong>{$hook_request_method}</strong> request is sent after each repository
|
||||
commit. If this field is empty, notifications are disabled.</p>
|
||||
|
||||
<p>Only properly-escaped <strong>HTTP</strong> URLs are supported, for example:</p>
|
||||
|
||||
<ul>
|
||||
<li><code>http://domain.com/commit</code></li>
|
||||
<li><code>http://domain.com/commit?my%20param</code></li>
|
||||
</ul>
|
||||
|
||||
<p>In addition, the URL may contain the following "%" notation, which
|
||||
will be replaced with specific project values for each commit:</p>
|
||||
|
||||
<ul>
|
||||
<li><code>%p</code> - project name</li>
|
||||
<li><code>%r</code> - revision number</li>
|
||||
</ul>
|
||||
|
||||
<p>For example, committing revision 123 to project 'my-project' with
|
||||
post-commit URL <code>http://mydomain.com/%p/%r</code> would send a request to
|
||||
<code>http://mydomain.com/my-project/123</code>.</p>{/blocktrans}</div>
|
||||
{/block}
|
96
indefero/src/IDF/templates/idf/admin/summary.html
Normal file
96
indefero/src/IDF/templates/idf/admin/summary.html
Normal file
@@ -0,0 +1,96 @@
|
||||
{extends "idf/admin/base.html"}
|
||||
{block docclass}yui-t1{assign $inSummary = true}{/block}
|
||||
{block body}
|
||||
{if $form.errors}
|
||||
<div class="px-message-error">
|
||||
<p>{trans 'The form contains some errors. Please correct them to update the summary.'}</p>
|
||||
{if $form.get_top_errors}
|
||||
{$form.render_top_errors|unsafe}
|
||||
{/if}
|
||||
</div>
|
||||
{/if}
|
||||
<form method="post" enctype="multipart/form-data" action=".">
|
||||
<table class="form" summary="">
|
||||
<tr>
|
||||
<th><strong>{$form.f.name.labelTag}:</strong></th>
|
||||
<td>{if $form.f.name.errors}{$form.f.name.fieldErrors}{/if}
|
||||
{$form.f.name|unsafe}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><strong>{$form.f.shortdesc.labelTag}:</strong></th>
|
||||
<td>{if $form.f.shortdesc.errors}{$form.f.shortdesc.fieldErrors}{/if}
|
||||
{$form.f.shortdesc|unsafe}<br />
|
||||
<span class="helptext">{$form.f.shortdesc.help_text}</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{$form.f.external_project_url.labelTag}:</th>
|
||||
<td>{if $form.f.external_project_url.errors}{$form.f.external_project_url.fieldErrors}{/if}
|
||||
{$form.f.external_project_url|unsafe}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><strong>{$form.f.description.labelTag}:</strong></th>
|
||||
<td>{if $form.f.description.errors}{$form.f.description.fieldErrors}{/if}
|
||||
{$form.f.description|unsafe}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{$form.f.label1.labelTag}:</th>
|
||||
<td>
|
||||
{if $form.f.label1.errors}{$form.f.label1.fieldErrors}{/if}{$form.f.label1|unsafe}
|
||||
{if $form.f.label2.errors}{$form.f.label2.fieldErrors}{/if}{$form.f.label2|unsafe}
|
||||
{if $form.f.label3.errors}{$form.f.label3.fieldErrors}{/if}{$form.f.label3|unsafe}<br />
|
||||
{if $form.f.label4.errors}{$form.f.label4.fieldErrors}{/if}{$form.f.label4|unsafe}
|
||||
{if $form.f.label5.errors}{$form.f.label5.fieldErrors}{/if}{$form.f.label5|unsafe}
|
||||
{if $form.f.label6.errors}{$form.f.label6.fieldErrors}{/if}{$form.f.label6|unsafe}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{trans 'Current logo'}:</th>
|
||||
<td>
|
||||
{if $logo}
|
||||
<img src="{url 'IDF_Views_Project::logo', array($project.shortname)}" alt="{trans 'Project logo'}" />
|
||||
{else}
|
||||
{trans 'Your project does not have a logo configured yet.'}
|
||||
{/if}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{$form.f.logo.labelTag}:</th>
|
||||
<td>{if $form.f.logo.errors}{$form.f.logo.fieldErrors}{/if}
|
||||
{$form.f.logo|unsafe}
|
||||
</td>
|
||||
</tr>
|
||||
{if $logo}
|
||||
<tr>
|
||||
<th>{$form.f.logo_remove.labelTag}:</th>
|
||||
<td>{if $form.f.logo_remove.errors}{$form.f.logo_remove.fieldErrors}{/if}
|
||||
{$form.f.logo_remove|unsafe}
|
||||
</td>
|
||||
</tr>
|
||||
{/if}
|
||||
<tr>
|
||||
<th>{$form.f.enableads.labelTag}:</th>
|
||||
<td>{if $form.f.enableads.errors}{$form.f.enableads.fieldErrors}{/if}
|
||||
{$form.f.enableads|unsafe}
|
||||
</td>
|
||||
<tr><td> </td>
|
||||
<td>
|
||||
<input type="submit" name="submit" value="{trans 'Save Changes'}" />
|
||||
</td>
|
||||
</table>
|
||||
</form>
|
||||
{include 'idf/project/js-autocomplete.html'}{/block}
|
||||
{/block}
|
||||
|
||||
{block context}
|
||||
<div class="issue-submit-info">
|
||||
{assign $url = 'http://daringfireball.net/projects/markdown/syntax'}
|
||||
{blocktrans}
|
||||
<p><strong>Instructions:</strong></p>
|
||||
<p>The description of the project can be improved using the <a href="{$url}">Markdown syntax</a>.</p>
|
||||
{/blocktrans}
|
||||
</div>
|
||||
{/block}
|
161
indefero/src/IDF/templates/idf/admin/tabs.html
Normal file
161
indefero/src/IDF/templates/idf/admin/tabs.html
Normal file
@@ -0,0 +1,161 @@
|
||||
{extends "idf/admin/base.html"}
|
||||
{block docclass}yui-t3{assign $inTabs = true}{/block}
|
||||
{block body}
|
||||
{if $form.errors}
|
||||
<div class="px-message-error">
|
||||
<p>{trans 'The form contains some errors. Please correct them to update the access rights.'}</p>
|
||||
{if $form.get_top_errors}
|
||||
{$form.render_top_errors|unsafe}
|
||||
{/if}
|
||||
</div>
|
||||
{/if}
|
||||
<form method="post" action=".">
|
||||
<table class="form access-rights" summary="">
|
||||
<tr>
|
||||
<th> </th>
|
||||
<th class="left"><strong>{trans 'Access Rights'}</strong></th>
|
||||
<th class="left"><strong>{trans 'Notifications'}</strong></th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><strong>{$form.f.downloads_access_rights.labelTag}:</strong></th>
|
||||
<td>{if $form.f.downloads_access_rights.errors}{$form.f.downloads_access_rights.fieldErrors}{/if}
|
||||
{$form.f.downloads_access_rights|unsafe}
|
||||
</td>
|
||||
<td>{if $form.f.downloads_notification_email.errors}{$form.f.downloads_notification_email.fieldErrors}{/if}
|
||||
{$form.f.downloads_notification_owners_enabled|unsafe}
|
||||
{$form.f.downloads_notification_owners_enabled.labelTag}
|
||||
{$form.f.downloads_notification_members_enabled|unsafe}
|
||||
{$form.f.downloads_notification_members_enabled.labelTag}
|
||||
{$form.f.downloads_notification_email_enabled|unsafe}
|
||||
{$form.f.downloads_notification_email_enabled.labelTag}
|
||||
{$form.f.downloads_notification_email|unsafe}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><strong>{$form.f.wiki_access_rights.labelTag}:</strong></th>
|
||||
<td>{if $form.f.wiki_access_rights.errors}{$form.f.wiki_access_rights.fieldErrors}{/if}
|
||||
{$form.f.wiki_access_rights|unsafe}
|
||||
</td>
|
||||
<td>{if $form.f.wiki_notification_email.errors}{$form.f.wiki_notification_email.fieldErrors}{/if}
|
||||
{$form.f.wiki_notification_owners_enabled|unsafe}
|
||||
{$form.f.wiki_notification_owners_enabled.labelTag}
|
||||
{$form.f.wiki_notification_members_enabled|unsafe}
|
||||
{$form.f.wiki_notification_members_enabled.labelTag}
|
||||
{$form.f.wiki_notification_email_enabled|unsafe}
|
||||
{$form.f.wiki_notification_email_enabled.labelTag}
|
||||
{$form.f.wiki_notification_email|unsafe}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><strong>{$form.f.issues_access_rights.labelTag}:</strong></th>
|
||||
<td>{if $form.f.issues_access_rights.errors}{$form.f.issues_access_rights.fieldErrors}{/if}
|
||||
{$form.f.issues_access_rights|unsafe}
|
||||
</td>
|
||||
<td>{if $form.f.issues_notification_email.errors}{$form.f.issues_notification_email.fieldErrors}{/if}
|
||||
{$form.f.issues_notification_owners_enabled|unsafe}
|
||||
{$form.f.issues_notification_owners_enabled.labelTag}
|
||||
{$form.f.issues_notification_members_enabled|unsafe}
|
||||
{$form.f.issues_notification_members_enabled.labelTag}
|
||||
{$form.f.issues_notification_email_enabled|unsafe}
|
||||
{$form.f.issues_notification_email_enabled.labelTag}
|
||||
{$form.f.issues_notification_email|unsafe}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><strong>{$form.f.source_access_rights.labelTag}:</strong></th>
|
||||
<td>{if $form.f.source_access_rights.errors}{$form.f.source_access_rights.fieldErrors}{/if}
|
||||
{$form.f.source_access_rights|unsafe}
|
||||
</td>
|
||||
<td>{if $form.f.source_notification_email.errors}{$form.f.source_notification_email.fieldErrors}{/if}
|
||||
{$form.f.source_notification_owners_enabled|unsafe}
|
||||
{$form.f.source_notification_owners_enabled.labelTag}
|
||||
{$form.f.source_notification_members_enabled|unsafe}
|
||||
{$form.f.source_notification_members_enabled.labelTag}
|
||||
{$form.f.source_notification_email_enabled|unsafe}
|
||||
{$form.f.source_notification_email_enabled.labelTag}
|
||||
{$form.f.source_notification_email|unsafe}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><strong>{$form.f.review_access_rights.labelTag}:</strong></th>
|
||||
<td>{if $form.f.review_access_rights.errors}{$form.f.review_access_rights.fieldErrors}{/if}
|
||||
{$form.f.review_access_rights|unsafe}
|
||||
</td>
|
||||
<td>{if $form.f.review_notification_email.errors}{$form.f.review_notification_email.fieldErrors}{/if}
|
||||
{$form.f.review_notification_owners_enabled|unsafe}
|
||||
{$form.f.review_notification_owners_enabled.labelTag}
|
||||
{$form.f.review_notification_members_enabled|unsafe}
|
||||
{$form.f.review_notification_members_enabled.labelTag}
|
||||
{$form.f.review_notification_email_enabled|unsafe}
|
||||
{$form.f.review_notification_email_enabled.labelTag}
|
||||
{$form.f.review_notification_email|unsafe}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th> </th>
|
||||
<td>
|
||||
{if $form.f.private_project.errors}{$form.f.private_project.fieldErrors}{/if}
|
||||
{$form.f.private_project|unsafe}
|
||||
{$form.f.private_project.labelTag}
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="authorized-users-row">
|
||||
<td> </td>
|
||||
<td colspan="2">{$form.f.authorized_users.labelTag}:<br />
|
||||
{if $form.f.authorized_users.errors}{$form.f.authorized_users.fieldErrors}{/if}
|
||||
{$form.f.authorized_users|unsafe}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td> </td>
|
||||
<td colspan="2">
|
||||
<input type="submit" value="{trans 'Save Changes'}" name="submit" />
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
{/block}
|
||||
{block context}
|
||||
<div class="issue-submit-info">
|
||||
<p>{blocktrans}This section allows you to configure project tabs access rights and notifications.{/blocktrans}</p>
|
||||
<p><strong>{trans 'Access Rights'}</strong></p>
|
||||
<p>{blocktrans}Tab access controls whether a single user can navigate into a particular section of your project via the main menu or automatically generated object links.{/blocktrans}</p>
|
||||
<p>{blocktrans}If you mark a project as private, only the project members and administrators, together with the extra authorized users you provide will have access to the project as a whole. You will still be able to define further access rights for the different tabs but the "Open to all" and "Signed in users" will default to authorized users only.{/blocktrans}</p>
|
||||
<p>{blocktrans}For the extra authorized user list, specify each person by its login. Each person must have already registered with the given login. Separate the logins with commas and/or new lines.{/blocktrans}</p>
|
||||
<p>{blocktrans}Only project members and admins have write access to the source. If you restrict the access to the source, anonymous access is not provided and the users must authenticate themselves with their password or SSH key.{/blocktrans}</p>
|
||||
<p><strong>{trans 'Notifications'}</strong></p>
|
||||
<p>{blocktrans}Here you can configure who should be notified about changes in a particular section. You can also configure additional addresses, like the one of a mailing list, that should be notified. (Keep in mind that you might have to register the sender address <strong>{$from_email}</strong> to let the mailing list actually accept notification emails.) Multiple email addresses must be separated through commas (',').{/blocktrans}</p>
|
||||
</div>
|
||||
{/block}
|
||||
|
||||
{block javascript}{literal}
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function() {
|
||||
// if not checked, hide
|
||||
if (!$("#id_private_project").is(":checked")) {
|
||||
$("#authorized-users-row").hide();
|
||||
}
|
||||
$("#id_private_project").click(function() {
|
||||
if ($("#id_private_project").is(":checked")) {
|
||||
$("#authorized-users-row").show();
|
||||
} else {
|
||||
$("#authorized-users-row").hide();
|
||||
}
|
||||
});
|
||||
|
||||
// if not checked, hide
|
||||
$.each(['downloads', 'wiki', 'issues', 'source', 'review'], function(index, section) {
|
||||
if (!$("#id_" + section + "_notification_email_enabled").is(":checked")) {
|
||||
$("#id_" + section + "_notification_email").hide();
|
||||
}
|
||||
$("#id_" + section + "_notification_email_enabled").click(function() {
|
||||
if ($("#id_" + section + "_notification_email_enabled").is(":checked")) {
|
||||
$("#id_" + section + "_notification_email").show();
|
||||
} else {
|
||||
$("#id_" + section + "_notification_email").hide();
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
</script>
|
||||
{/literal}{/block}
|
34
indefero/src/IDF/templates/idf/admin/wiki.html
Normal file
34
indefero/src/IDF/templates/idf/admin/wiki.html
Normal file
@@ -0,0 +1,34 @@
|
||||
{extends "idf/admin/base.html"}
|
||||
{block docclass}yui-t1{assign $inWiki = true}{/block}
|
||||
{block body}
|
||||
<form method="post" action=".">
|
||||
<table class="form" summary="">
|
||||
<tr>
|
||||
<td colspan="2"><strong>{$form.f.labels_wiki_predefined.labelTag}:</strong><br />
|
||||
{if $form.f.labels_wiki_predefined.errors}{$form.f.labels_wiki_predefined.fieldErrors}{/if}
|
||||
{$form.f.labels_wiki_predefined|unsafe}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">{$form.f.labels_wiki_one_max.labelTag}:<br />
|
||||
{if $form.f.labels_wiki_one_max.errors}{$form.f.labels_wiki_one_max.fieldErrors}{/if}
|
||||
{$form.f.labels_wiki_one_max|unsafe}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<input type="submit" value="{trans 'Save Changes'}" name="submit" />
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
{/block}
|
||||
{block context}
|
||||
<div class="issue-submit-info">
|
||||
{blocktrans}
|
||||
<p><strong>Instructions:</strong></p>
|
||||
<p>List one status value per line in desired sort-order.</p>
|
||||
<p>Optionally, use an equals-sign to document the meaning of each status value.</p>
|
||||
{/blocktrans}
|
||||
</div>
|
||||
{/block}
|
89
indefero/src/IDF/templates/idf/base-full.html
Normal file
89
indefero/src/IDF/templates/idf/base-full.html
Normal file
@@ -0,0 +1,89 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
{*
|
||||
# ***** BEGIN LICENSE BLOCK *****
|
||||
# This file is part of InDefero, an open source project management application.
|
||||
# Copyright (C) 2008-2011 Céondo Ltd and contributors.
|
||||
#
|
||||
# InDefero is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# InDefero is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
#
|
||||
# ***** END LICENSE BLOCK *****
|
||||
*}<html lang="en">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<link rel="stylesheet" type="text/css" href="{media '/idf/css/yui.css'}" />
|
||||
<link rel="stylesheet" type="text/css" href="{media '/idf/css/style.css'}" />
|
||||
<link rel="icon" type="image/png" href="{media '/idf/img/favicon.png'}" />
|
||||
<!--[if lt IE 7]>
|
||||
<link rel="stylesheet" type="text/css" href="{media '/idf/css/ie6.css'}" />
|
||||
<![endif]-->
|
||||
{block extraheader}{/block}
|
||||
<title>{block pagetitle}{$page_title|strip_tags}{/block}{if $project} - {$project.shortdesc}{/if}</title>
|
||||
<script type="text/javascript" src="{media '/idf/js/jquery-1.7.2.min.js'}"></script>
|
||||
{appversion}
|
||||
</head>
|
||||
<body>
|
||||
<div id="{block docid}doc3{/block}">
|
||||
<div id="hd">
|
||||
{if $project}<h1 class="project-title">{$project}<img class="logo" src="{url 'IDF_Views_Project::logo', array($project.shortname)}" alt="{trans 'Project logo'}" />{if $project.private}<img class="lock" src="{media '/idf/img/lock.png'}" alt="{trans 'Private project'}" />{/if}{$p}{assign $url = $project.external_project_url}{if $url != ''}<a href="{$url}" target="_blank" class="external-link" title="{trans 'External link to project'}" /> </a>{/if}</h1>{/if}
|
||||
{include 'idf/main-menu.html'}
|
||||
<div id="header">
|
||||
<div id="main-tabs">
|
||||
{if $project}
|
||||
<a accesskey="1" href="{url 'IDF_Views_Project::home', array($project.shortname)}"{block tabhome}{/block}>{trans 'Project Home'}</a>
|
||||
{if $hasDownloadsAccess} <a href="{url 'IDF_Views_Download::index', array($project.shortname)}"{block tabdownloads}{/block}>{trans 'Downloads'}</a>{/if}
|
||||
{if $hasWikiAccess} <a href="{url 'IDF_Views_Wiki::listPages', array($project.shortname)}"{block tabwiki}{/block}>{trans 'Documentation'}</a>{/if}
|
||||
{if $hasIssuesAccess} <a href="{url 'IDF_Views_Issue::index', array($project.shortname)}"{block tabissues}{/block}>{trans 'Issues'}</a>{/if}
|
||||
{if $hasSourceAccess} <a href="{url 'IDF_Views_Source::treeBase', array($project.shortname, $project.getScmRoot())}"{block tabsource}{/block}>{trans 'Source'}</a>{/if}
|
||||
{if $hasReviewAccess} <a href="{url 'IDF_Views_Review::index', array($project.shortname)}"{block tabreview}{/block}>{trans 'Code Review'}</a>{/if}
|
||||
{if $isOwner}
|
||||
<a href="{url 'IDF_Views_Project::admin', array($project.shortname)}"{block tabadmin}{/block}>{trans 'Project Management'}</a>{/if}{/if}
|
||||
</div>
|
||||
{block subtabs}{if $user.isAnonymous()} | {aurl 'url', 'IDF_Views::login'}{blocktrans}<a href="{$url}">Sign in or create your account</a> to create issues or add comments{/blocktrans}{/if}{/block}
|
||||
</div>
|
||||
|
||||
<h1 class="title" id="title">{block titleicon}{/block}{block title}{$page_title}{/block}</h1>
|
||||
|
||||
</div>
|
||||
<div id="bd">
|
||||
<div id="yui-main">
|
||||
<div class="yui-b">
|
||||
<div class="yui-g">
|
||||
{if $user and $user.id}{getmsgs $user}{/if}
|
||||
<div class="content">{block body}{/block}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="ft">{block foot}{/block}</div>
|
||||
</div>
|
||||
{include 'idf/js-hotkeys.html'}
|
||||
{block javascript}{/block}
|
||||
{if $project}
|
||||
<script type="text/javascript" charset="utf-8">{literal}
|
||||
//<![CDATA[
|
||||
$(document).ready(function(){
|
||||
var frag = location.hash;
|
||||
if ($('#preview').length) {
|
||||
location.hash = '#preview';
|
||||
}
|
||||
else if (frag.length > 3 && frag.substring(0, 3) == '#ic') {
|
||||
$(frag).addClass("issue-comment-focus");
|
||||
}
|
||||
});
|
||||
//]]>{/literal}
|
||||
</script>{/if}
|
||||
</body>
|
||||
</html>
|
60
indefero/src/IDF/templates/idf/base-simple.html
Normal file
60
indefero/src/IDF/templates/idf/base-simple.html
Normal file
@@ -0,0 +1,60 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
{*
|
||||
# ***** BEGIN LICENSE BLOCK *****
|
||||
# This file is part of InDefero, an open source project management application.
|
||||
# Copyright (C) 2008-2011 Céondo Ltd and contributors.
|
||||
#
|
||||
# InDefero is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# InDefero is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
#
|
||||
# ***** END LICENSE BLOCK *****
|
||||
*}<html lang="en">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<link rel="stylesheet" type="text/css" href="{media '/idf/css/yui.css'}" />
|
||||
<link rel="stylesheet" type="text/css" href="{media '/idf/css/style.css'}" />
|
||||
<link rel="icon" type="image/png" href="{media '/idf/img/favicon.png'}" />
|
||||
<!--[if lt IE 7]>
|
||||
<link rel="stylesheet" type="text/css" href="{media '/idf/css/ie6.css'}" />
|
||||
<![endif]-->
|
||||
{block extraheader}{/block}
|
||||
<title>{block pagetitle}{$page_title|strip_tags}{/block}</title>
|
||||
<script type="text/javascript" src="{media '/idf/js/jquery-1.7.2.min.js'}"></script>
|
||||
{appversion}
|
||||
</head>
|
||||
<body>
|
||||
<div id="{block docid}doc3{/block}" class="{block docclass}yui-t3{/block}">
|
||||
<div id="hd">
|
||||
{include 'idf/main-menu.html'}
|
||||
<h1 id="title" class="title">{block title}{$page_title}{/block}</h1>
|
||||
</div>
|
||||
<div id="bd">
|
||||
<div id="yui-main">
|
||||
<div class="yui-b">
|
||||
<div class="yui-g">
|
||||
{if $user and $user.id}{getmsgs $user}{/if}
|
||||
<div class="content">{block body}{/block}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="yui-b context" id="context">{block context}{/block}</div>
|
||||
</div>
|
||||
<div id="ft">{block foot}{/block}</div>
|
||||
</div>
|
||||
{include 'idf/js-hotkeys.html'}
|
||||
{include 'idf/list-filter.html'}
|
||||
{block javascript}{/block}
|
||||
</body>
|
||||
</html>
|
114
indefero/src/IDF/templates/idf/base.html
Normal file
114
indefero/src/IDF/templates/idf/base.html
Normal file
@@ -0,0 +1,114 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
{*
|
||||
# ***** BEGIN LICENSE BLOCK *****
|
||||
# This file is part of InDefero, an open source project management application.
|
||||
# Copyright (C) 2008-2011 Céondo Ltd and contributors.
|
||||
#
|
||||
# InDefero is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# InDefero is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
#
|
||||
# ***** END LICENSE BLOCK *****
|
||||
*}
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<link rel="stylesheet" type="text/css" href="{media '/idf/css/yui.css'}" />
|
||||
<link rel="stylesheet" type="text/css" href="{media '/idf/css/style.css'}" />
|
||||
<link rel="icon" type="image/png" href="{media '/idf/img/favicon.png'}" />
|
||||
<!--[if lt IE 7]>
|
||||
<link rel="stylesheet" type="text/css" href="{media '/idf/css/ie6.css'}" />
|
||||
<![endif]-->
|
||||
{block extraheader}{/block}
|
||||
<title>{block pagetitle}{$page_title|strip_tags}{/block}{if $project} - {$project.shortdesc}{/if}</title>
|
||||
<script type="text/javascript" src="{media '/idf/js/jquery-1.7.2.min.js'}"></script>
|
||||
{appversion}
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div id="{block docid}doc3{/block}" class="{block docclass}yui-t3{/block}">
|
||||
<div id="hd">
|
||||
{if $project}
|
||||
<h1 class="project-title">{$project}<img class="logo" src="{url 'IDF_Views_Project::logo', array($project.shortname)}" alt="{trans 'Project logo'}" />{if $project.private}<img class="lock" src="{media '/idf/img/lock.png'}" alt="{trans 'Private project'}" />{/if}{$p}{assign $url = $project.external_project_url}{if $url != ''}<a href="{$url}" target="_blank" class="external-link" title="{trans 'External link to project'}" /> </a>{/if}</h1>{/if}
|
||||
{include 'idf/main-menu.html'}
|
||||
<div id="header">
|
||||
<div id="main-tabs">
|
||||
{if $project}
|
||||
<a accesskey="1" href="{url 'IDF_Views_Project::home', array($project.shortname)}"{block tabhome}{/block}>{trans 'Project Home'}</a>
|
||||
{if $hasDownloadsAccess} <a href="{url 'IDF_Views_Download::index', array($project.shortname)}"{block tabdownloads}{/block}>{trans 'Downloads'}</a>{/if}
|
||||
{if $hasWikiAccess} <a href="{url 'IDF_Views_Wiki::listPages', array($project.shortname)}"{block tabwiki}{/block}>{trans 'Documentation'}</a>{/if}
|
||||
{if $hasIssuesAccess} <a href="{url 'IDF_Views_Issue::index', array($project.shortname)}"{block tabissues}{/block}>{trans 'Issues'}</a>{/if}
|
||||
{if $hasSourceAccess} <a href="{url 'IDF_Views_Source::treeBase', array($project.shortname, $project.getScmRoot())}"{block tabsource}{/block}>{trans 'Source'}</a>{/if}
|
||||
{if $hasReviewAccess} <a href="{url 'IDF_Views_Review::index', array($project.shortname)}"{block tabreview}{/block}>{trans 'Code Review'}</a>{/if}
|
||||
{if $isOwner}
|
||||
<a href="{url 'IDF_Views_Project::admin', array($project.shortname)}"{block tabadmin}{/block}>{trans 'Project Management'}</a>{/if}{/if}
|
||||
</div>
|
||||
{block subtabs}{if $user.isAnonymous()} | {aurl 'url', 'IDF_Views::login'}{blocktrans}<a href="{$url}">Sign in or create your account</a> to create issues or add comments{/blocktrans}{/if}{/block}
|
||||
</div>
|
||||
|
||||
{if $project.enableads}<p><center>
|
||||
|
||||
|
||||
|
||||
</center></p>{/if}
|
||||
<h1 class="title" id="title">{block titleicon}{/block}{block title}{$page_title}{/block}</h1>
|
||||
<br/>
|
||||
</div>
|
||||
<div id="bd">
|
||||
<div id="yui-main">
|
||||
<div class="yui-b">
|
||||
<div class="yui-g">
|
||||
{if $user and $user.id}{getmsgs $user}{/if}
|
||||
<div class="content">{block body}{/block}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="yui-b context" id="context">{block context}{/block}</div>
|
||||
</div>
|
||||
<div id="ft">{block foot}{/block}</div>
|
||||
</div>
|
||||
{include 'idf/js-hotkeys.html'}
|
||||
{include 'idf/list-filter.html'}
|
||||
{block javascript}{/block}
|
||||
{if $project}
|
||||
<script type="text/javascript" charset="utf-8">{literal}
|
||||
//<![CDATA[
|
||||
$(document).ready(function(){
|
||||
var frag = location.hash;
|
||||
if ($('#preview').length) {
|
||||
location.hash = '#preview';
|
||||
}
|
||||
else if (frag.length > 3 && frag.substring(0, 3) == '#ic') {
|
||||
$(frag).addClass("issue-comment-focus");
|
||||
}
|
||||
|
||||
var contextTop = $('div#context').position().top;
|
||||
var contextFixEnabled = true;
|
||||
$(window).scroll(function() {
|
||||
if (!contextFixEnabled || $(window).scrollTop() < contextTop)
|
||||
$('div#context').css('position', 'relative');
|
||||
else
|
||||
$('div#context').css('position', 'fixed');
|
||||
});
|
||||
$(window).resize(function() {
|
||||
contextFixEnabled =
|
||||
$('div#context').offset().top + $('div#context').height() <
|
||||
$(window).height();
|
||||
});
|
||||
$(window).resize();
|
||||
});
|
||||
//]]>{/literal}
|
||||
</script>{/if}
|
||||
</body>
|
||||
</html>
|
11
indefero/src/IDF/templates/idf/downloads/base.html
Normal file
11
indefero/src/IDF/templates/idf/downloads/base.html
Normal file
@@ -0,0 +1,11 @@
|
||||
{extends "idf/base.html"}
|
||||
{block tabdownloads} class="active"{/block}
|
||||
{block subtabs}
|
||||
<div id="sub-tabs">
|
||||
<a {if $inDownloads}class="active" {/if}href="{url 'IDF_Views_Download::index', array($project.shortname)}">{trans 'Downloads'}</a>
|
||||
{if $isOwner or $isMember}
|
||||
| <a {if $inCreate}class="active" {/if}href="{url 'IDF_Views_Download::create', array($project.shortname)}">{trans 'New Download'}</a>
|
||||
| <a {if $inCreateFromArchive}class="active" {/if}href="{url 'IDF_Views_Download::createFromArchive', array($project.shortname)}">{trans 'Upload Archive'}</a>
|
||||
{/if}
|
||||
</div>
|
||||
{/block}
|
68
indefero/src/IDF/templates/idf/downloads/create.html
Normal file
68
indefero/src/IDF/templates/idf/downloads/create.html
Normal file
@@ -0,0 +1,68 @@
|
||||
{extends "idf/downloads/base.html"}
|
||||
{block docclass}yui-t3{assign $inCreate=true}{/block}
|
||||
{block body}
|
||||
{if $form.errors}
|
||||
<div class="px-message-error">
|
||||
<p>{trans 'The form contains some errors. Please correct them to submit the file.'}</p>
|
||||
{if $form.get_top_errors}
|
||||
{$form.render_top_errors|unsafe}
|
||||
{/if}
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
<form method="post" enctype="multipart/form-data" action=".">
|
||||
<table class="form" summary="">
|
||||
<tr>
|
||||
<th><strong>{$form.f.summary.labelTag}:</strong></th>
|
||||
<td>{if $form.f.summary.errors}{$form.f.summary.fieldErrors}{/if}
|
||||
{$form.f.summary|unsafe}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{$form.f.changelog.labelTag}:</th>
|
||||
<td>{if $form.f.changelog.errors}{$form.f.changelog.fieldErrors}{/if}
|
||||
{$form.f.changelog|unsafe}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><strong>{$form.f.file.labelTag}:</strong></th>
|
||||
<td>{if $form.f.file.errors}{$form.f.file.fieldErrors}{/if}
|
||||
{$form.f.file|unsafe}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{$form.f.label1.labelTag}:</th>
|
||||
<td>
|
||||
{if $form.f.label1.errors}{$form.f.label1.fieldErrors}{/if}{$form.f.label1|unsafe}
|
||||
{if $form.f.label2.errors}{$form.f.label2.fieldErrors}{/if}{$form.f.label2|unsafe}
|
||||
{if $form.f.label3.errors}{$form.f.label3.fieldErrors}{/if}{$form.f.label3|unsafe}<br />
|
||||
{if $form.f.label4.errors}{$form.f.label4.fieldErrors}{/if}{$form.f.label4|unsafe}
|
||||
{if $form.f.label5.errors}{$form.f.label5.fieldErrors}{/if}{$form.f.label5|unsafe}
|
||||
{if $form.f.label6.errors}{$form.f.label6.fieldErrors}{/if}{$form.f.label6|unsafe}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td> </td>
|
||||
<td><input type="submit" value="{trans 'Submit File'}" name="submit" /> | <a href="{url 'IDF_Views_Download::index', array($project.shortname)}">{trans 'Cancel'}</a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
{/block}
|
||||
{block context}
|
||||
<div class="issue-submit-info">
|
||||
<h2>{trans 'Instructions'}</h2>
|
||||
|
||||
<p>{blocktrans}Each file must have a distinct name and file contents
|
||||
cannot be changed, so be sure to include release numbers in each file
|
||||
name.{/blocktrans}</p>
|
||||
{assign $url = 'http://daringfireball.net/projects/markdown/syntax'}
|
||||
<p>{blocktrans}You can use the <a href="{$url}">Markdown syntax</a> for the description.{/blocktrans}</p>
|
||||
</div>
|
||||
{/block}
|
||||
{block javascript}
|
||||
<script type="text/javascript">
|
||||
document.getElementById('id_summary').focus()
|
||||
</script>
|
||||
{include 'idf/downloads/js-autocomplete.html'}{/block}
|
||||
|
@@ -0,0 +1,38 @@
|
||||
{extends "idf/downloads/base.html"}
|
||||
{block docclass}yui-t3{assign $inCreateFromArchive=true}{/block}
|
||||
{block body}
|
||||
{if $form.errors}
|
||||
<div class="px-message-error">
|
||||
<p>{trans 'The form contains some errors. Please correct them to submit the archive.'}</p>
|
||||
{if $form.get_top_errors}
|
||||
{$form.render_top_errors|unsafe}
|
||||
{/if}
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
<form method="post" enctype="multipart/form-data" action=".">
|
||||
<table class="form" summary="">
|
||||
<tr>
|
||||
<th><strong>{$form.f.archive.labelTag}:</strong></th>
|
||||
<td>{if $form.f.archive.errors}{$form.f.archive.fieldErrors}{/if}
|
||||
{$form.f.archive|unsafe}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td> </td>
|
||||
<td><input type="submit" value="{trans 'Submit Archive'}" name="submit" /> | <a href="{url 'IDF_Views_Download::index', array($project.shortname)}">{trans 'Cancel'}</a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
{/block}
|
||||
{block context}
|
||||
<div class="issue-submit-info">
|
||||
<h2>{trans 'Instructions'}</h2>
|
||||
|
||||
<p>{blocktrans}The archive must include a <code>manifest.xml</code> file with meta information about the
|
||||
files to process inside the archive. All processed files must be unique or replace existing files explicitely.{/blocktrans}</p>
|
||||
{aurl 'url', 'IDF_Views::faqArchiveFormat'}
|
||||
<p>{blocktrans}You can learn more about the archive format <a href="{$url}">here</a>.{/blocktrans}</p>
|
||||
</div>
|
||||
{/block}
|
40
indefero/src/IDF/templates/idf/downloads/delete.html
Normal file
40
indefero/src/IDF/templates/idf/downloads/delete.html
Normal file
@@ -0,0 +1,40 @@
|
||||
{extends "idf/downloads/base.html"}
|
||||
{block docclass}yui-t3{assign $inDownloads=true}{/block}
|
||||
{block body}
|
||||
|
||||
<div class="download-file">
|
||||
<a href="{url 'IDF_Views_Download::download', array($project.shortname, $file.file)}">{$file}</a> - {$file.filesize|size}
|
||||
</div>
|
||||
|
||||
<p>{blocktrans}<strong>Attention!</strong> If you want to delete a specific version of your software, maybe, someone is depending on this specific version to run his systems. Are you sure, you will not affect anybody when removing this file?{/blocktrans}</p>
|
||||
|
||||
{if !$deprecated}{aurl 'url', 'IDF_Views_Download::view', array($project.shortname, $file.id)}
|
||||
<p>{blocktrans}Instead of deleting the file, you could <a href="{$url}">mark it as deprecated</a>.{/blocktrans}</p>{/if}
|
||||
|
||||
<form method="post" action=".">
|
||||
<table class="form" summary="">
|
||||
<tr>
|
||||
<td> </td>
|
||||
<td><input type="submit" value="{trans 'Delete File'}" name="submit" /> | <a href="{url 'IDF_Views_Download::index', array($project.shortname)}">{trans 'Cancel'}</a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
|
||||
{/block}
|
||||
|
||||
{block context}
|
||||
{assign $submitter = $file.get_submitter()}
|
||||
<p><strong>{trans 'Uploaded:'}</strong> <span class="nobrk">{$file.creation_dtime|dateago}</span> <span class="nobrk">{blocktrans}by {$submitter}{/blocktrans}</span></p>
|
||||
{if $file.modif_dtime != $file.creation_dtime}<p>
|
||||
<strong>{trans 'Updated:'}</strong> <span class="nobrk">{$file.modif_dtime|dateago}</span></p>{/if}
|
||||
<p>
|
||||
<strong>{trans 'Downloads:'}</strong> <span class="nobrk">{$file.downloads}</span></p>
|
||||
{if $tags.count()}
|
||||
<p>
|
||||
<strong>{trans 'Labels:'}</strong><br />
|
||||
{foreach $tags as $tag}{aurl 'url', 'IDF_Views_Download::listLabel', array($project.shortname, $tag.id)}
|
||||
<span class="label"><a href="{$url}" class="label"><strong>{$tag.class}:</strong>{$tag.name}</a></span><br />
|
||||
{/foreach}
|
||||
</p>{/if}
|
||||
{/block}
|
@@ -0,0 +1,17 @@
|
||||
{trans 'Hello,'}
|
||||
|
||||
{blocktrans}A new file is available for download:{/blocktrans}
|
||||
|
||||
{$file.summary|safe}
|
||||
{$file} - {$file.filesize|ssize}
|
||||
{trans 'Project:'} {$project.name|safe}
|
||||
{trans 'Submitted by:'} {$file.get_submitter|safe}
|
||||
{if $tags.count()}{trans 'Labels:'}
|
||||
{foreach $tags as $tag} {$tag.class|safe}:{$tag.name|safe}
|
||||
{/foreach}{/if}
|
||||
{trans 'Download:'} {$urlfile}
|
||||
{if $file.changelog}
|
||||
{trans 'Description:'}
|
||||
|
||||
{$file.changelog}
|
||||
{/if}
|
@@ -0,0 +1,17 @@
|
||||
{trans 'Hello,'}
|
||||
|
||||
{blocktrans}A file download was updated:{/blocktrans}
|
||||
|
||||
{$file.summary|safe}
|
||||
{$file} - {$file.filesize|ssize}
|
||||
{trans 'Project:'} {$project.name|safe}
|
||||
{trans 'Submitted by:'} {$file.get_submitter|safe}
|
||||
{if $tags.count()}{trans 'Labels:'}
|
||||
{foreach $tags as $tag} {$tag.class|safe}:{$tag.name|safe}
|
||||
{/foreach}{/if}
|
||||
{trans 'Download:'} {$urlfile}
|
||||
{if $file.changelog}
|
||||
{trans 'Description:'}
|
||||
|
||||
{$file.changelog}
|
||||
{/if}
|
14
indefero/src/IDF/templates/idf/downloads/feedfragment.xml
Normal file
14
indefero/src/IDF/templates/idf/downloads/feedfragment.xml
Normal file
@@ -0,0 +1,14 @@
|
||||
<entry>
|
||||
<title>{$title}</title>
|
||||
<link href="{$url}"/>
|
||||
<id>{$url}</id>
|
||||
<updated>{$date}</updated>
|
||||
<author>{$file.get_submitter()}</author>
|
||||
<content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
|
||||
<p>{$file} - {$file.filesize|ssize}</p>
|
||||
{if $file.changelog}
|
||||
<h2>{trans 'Details'}</h2>
|
||||
{markdown $file.changelog, $request}
|
||||
{/if}
|
||||
</div></content>
|
||||
</entry>
|
21
indefero/src/IDF/templates/idf/downloads/index.html
Normal file
21
indefero/src/IDF/templates/idf/downloads/index.html
Normal file
@@ -0,0 +1,21 @@
|
||||
{extends "idf/downloads/base.html"}
|
||||
{block docclass}yui-t1{assign $inDownloads=true}{/block}
|
||||
{block body}
|
||||
{$downloads.render}
|
||||
{if $isOwner or $isMember}
|
||||
{aurl 'url', 'IDF_Views_Download::create', array($project.shortname)}
|
||||
<p><a href="{$url}"><img style="vertical-align: text-bottom;" src="{media '/idf/img/add.png'}" alt="+" align="bottom" /></a> <a href="{$url}">{trans 'New Download'}</a></p>{/if}
|
||||
|
||||
{/block}
|
||||
{block context}
|
||||
<p><strong>{trans 'Number of files:'}</strong> {$downloads.nb_items}</p>
|
||||
{assign $cloud_url = 'IDF_Views_Download::listLabel'}
|
||||
{assign $cloud = 'downloads'}
|
||||
{include 'idf/tags-cloud.html'}
|
||||
{if $deprecated > 0}
|
||||
{aurl 'url', 'IDF_Views_Download::listLabel', array($project.shortname, $dlabel.id)}
|
||||
<p class="helptext">{blocktrans}See <a href="{$url}">the deprecated files</a>.{/blocktrans}</p>
|
||||
{/if}
|
||||
|
||||
{/block}
|
||||
|
@@ -0,0 +1,27 @@
|
||||
{if $isOwner or $isMember}
|
||||
<script type="text/javascript" src="{media '/idf/js/jquery.bgiframe.min.js'}"></script>
|
||||
<script type="text/javascript" src="{media '/idf/js/jquery.autocomplete.min.js'}"></script>
|
||||
<script type="text/javascript" charset="utf-8">
|
||||
// <!-- {literal}
|
||||
$(document).ready(function(){
|
||||
var auto_labels = [{/literal}{$auto_labels|safe}{literal}];
|
||||
var j=0;
|
||||
for (j=1;j<7;j=j+1) {
|
||||
$("#id_label"+j).autocomplete(auto_labels, {
|
||||
minChars: 0,
|
||||
width: 310,
|
||||
matchContains: true,
|
||||
max: 50,
|
||||
highlightItem: false,
|
||||
formatItem: function(row, i, max, term) {
|
||||
return row.to.replace(new RegExp("(" + term + ")", "gi"), "<strong>$1</strong>") + " <span style='font-size: 80%;'>" + row.name + "</span>";
|
||||
},
|
||||
formatResult: function(row) {
|
||||
return row.to;
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
{/literal} //-->
|
||||
</script>
|
||||
{/if}
|
82
indefero/src/IDF/templates/idf/downloads/view.html
Normal file
82
indefero/src/IDF/templates/idf/downloads/view.html
Normal file
@@ -0,0 +1,82 @@
|
||||
{extends "idf/downloads/base.html"}
|
||||
{block docclass}yui-t3{assign $inDownloads=true}{/block}
|
||||
{block body}
|
||||
|
||||
<div class="download-file">
|
||||
{if $deprecated}<p class="smaller">{blocktrans}<strong>Attention!</strong> This file is marked as deprecated, download it only if you are sure you need this specific version.{/blocktrans}</p>{/if}
|
||||
<a href="{url 'IDF_Views_Download::download', array($project.shortname, $file.file)}">{$file}</a> - {$file.filesize|size}
|
||||
<br />
|
||||
<span class="helptext">{trans 'md5:'} {$file.md5}</span>
|
||||
</div>
|
||||
{if $file.changelog}
|
||||
<h2 class="changes">{trans 'Changes'}</h2>
|
||||
|
||||
{markdown $file.changelog, $request}
|
||||
{/if}
|
||||
|
||||
{if $form}
|
||||
{if $form.errors}
|
||||
<div class="px-message-error">
|
||||
<p>{trans 'The form contains some errors. Please correct them to update the file.'}</p>
|
||||
{if $form.get_top_errors}
|
||||
{$form.render_top_errors|unsafe}
|
||||
{/if}
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
<form method="post" enctype="multipart/form-data" action=".">
|
||||
<table class="form download" summary="">
|
||||
<tr>
|
||||
<th><strong>{$form.f.summary.labelTag}:</strong></th>
|
||||
<td>{if $form.f.summary.errors}{$form.f.summary.fieldErrors}{/if}
|
||||
{$form.f.summary|unsafe}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{$form.f.changelog.labelTag}:</th>
|
||||
<td>{if $form.f.changelog.errors}{$form.f.changelog.fieldErrors}{/if}
|
||||
{$form.f.changelog|unsafe}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{$form.f.label1.labelTag}:</th>
|
||||
<td>
|
||||
{if $form.f.label1.errors}{$form.f.label1.fieldErrors}{/if}{$form.f.label1|unsafe}
|
||||
{if $form.f.label2.errors}{$form.f.label2.fieldErrors}{/if}{$form.f.label2|unsafe}
|
||||
{if $form.f.label3.errors}{$form.f.label3.fieldErrors}{/if}{$form.f.label3|unsafe}<br />
|
||||
{if $form.f.label4.errors}{$form.f.label4.fieldErrors}{/if}{$form.f.label4|unsafe}
|
||||
{if $form.f.label5.errors}{$form.f.label5.fieldErrors}{/if}{$form.f.label5|unsafe}
|
||||
{if $form.f.label6.errors}{$form.f.label6.fieldErrors}{/if}{$form.f.label6|unsafe}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td> </td>{aurl 'url', 'IDF_Views_Download::delete', array($project.shortname, $file.id)}
|
||||
<td>{* float left is a fix for Firefox < 3.5 *}
|
||||
<span style="float: left;"><input type="submit" value="{trans 'Update File'}" name="submit" /> | <a href="{url 'IDF_Views_Download::index', array($project.shortname)}">{trans 'Cancel'}</a></span> <span class="dellink"><a href="{$url}" title="{trans 'Remove this file'}"><img src="{media '/idf/img/trash.png'}" style="vertical-align: text-bottom;" alt="{trans 'Trash'}" /></a> <a href="{$url}" title="{trans 'Remove this file'}">{trans 'Delete this file'}</a></span>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
{/if}
|
||||
{/block}
|
||||
{block context}
|
||||
{ashowuser 'submitter', $file.get_submitter(), $request}
|
||||
<p><strong>{trans 'Uploaded:'}</strong> <span class="nobrk">{$file.creation_dtime|dateago}</span> <span class="nobrk">{blocktrans}by {$submitter}{/blocktrans}</span></p>
|
||||
{if $file.modif_dtime != $file.creation_dtime}<p>
|
||||
<strong>{trans 'Updated:'}</strong> <span class="nobrk">{$file.modif_dtime|dateago}</span></p>{/if}
|
||||
<p>
|
||||
<strong>{trans 'Downloads:'}</strong> <span class="nobrk">{$file.downloads}</span></p>
|
||||
{if $tags.count()}
|
||||
<p>
|
||||
<strong>{trans 'Labels:'}</strong><br />
|
||||
{foreach $tags as $tag}{aurl 'url', 'IDF_Views_Download::listLabel', array($project.shortname, $tag.id)}
|
||||
<span class="label"><a href="{$url}" class="label"><strong>{$tag.class}:</strong>{$tag.name}</a></span><br />
|
||||
{/foreach}
|
||||
</p>{/if}
|
||||
{/block}
|
||||
{block javascript}{if $form}
|
||||
<script type="text/javascript">
|
||||
document.getElementById('id_summary').focus()
|
||||
</script>
|
||||
{include 'idf/downloads/js-autocomplete.html'}{/if}{/block}
|
||||
|
83
indefero/src/IDF/templates/idf/faq-api.html
Normal file
83
indefero/src/IDF/templates/idf/faq-api.html
Normal file
@@ -0,0 +1,83 @@
|
||||
{extends "idf/base-simple.html"}
|
||||
{block docclass}yui-t3{/block}
|
||||
{block body}
|
||||
<p>At the moment, this documentation is only available in English.</p>
|
||||
|
||||
<ul>
|
||||
<li><a href="#q-overview">How to access the API?</a></li>
|
||||
<li><a href="#q-authentication">How to authenticate the queries?</a></li>
|
||||
</ul>
|
||||
|
||||
<h2 id="q-overview">How to access the API?</h2>
|
||||
|
||||
<p>
|
||||
The API is a REST API and you can access it by using the same URL you
|
||||
are using for the web interface but with the <code>/api/</code>
|
||||
prefix.
|
||||
</p>
|
||||
<p>
|
||||
For example, if you access a project with the
|
||||
URL <code>http://www.example.com/p/myproject/</code>, you have the
|
||||
following API URLs available:
|
||||
</p>
|
||||
<ul>
|
||||
<li><code>http://www.example.com/api/p/myproject/issues/</code>: list the open issues.</li>
|
||||
<li><code>http://www.example.com/api/p/myproject/issues/create/</code>: create a new issue.</li>
|
||||
</ul>
|
||||
<p>
|
||||
The answer you get is JSON and UTF-8 encoded.
|
||||
</p>
|
||||
|
||||
|
||||
<h2 id="q-authentication">How to authenticate the queries?</h2>
|
||||
|
||||
<p>
|
||||
Authentication is really simple and is optional. If you do not
|
||||
authenticate your queries, you will have the same rights as an
|
||||
anonymous user visiting the normal web interface.
|
||||
</p>
|
||||
<p>
|
||||
To authenticate your query, you need to provide 3 parameters to your
|
||||
requests, the parameters are the followings:
|
||||
</p>
|
||||
<ul>
|
||||
<li><code>_login</code>: your login.</li>
|
||||
<li><code>_salt</code>: a random salt string.</li>
|
||||
<li><code>_hash</code>: the sha1 hash created from the concatenation of the random salt string and the API key.</li>
|
||||
</ul>
|
||||
<p>
|
||||
Please note that the 3 parameters are all starting with the underscore
|
||||
"_" character.
|
||||
</p>
|
||||
<p>
|
||||
An example of PHP code to generate the <code>_hash</code> value is:
|
||||
</p>
|
||||
<pre>
|
||||
<?php
|
||||
$api_key = '1234567890abcdefghijklmnopqrstuvwxyz';
|
||||
$_salt = rand(10000, 999999);
|
||||
$_hash = sha1($_salt.$api_key);
|
||||
echo sprintf("_salt: %s\n", $_salt);
|
||||
echo sprintf("_hash: %s\n", $_hash);
|
||||
?>
|
||||
</pre>
|
||||
<p>
|
||||
If you replace the string '123...xyz' with your own API key and
|
||||
execute this script, you will have as output something like that:
|
||||
</p>
|
||||
<pre>
|
||||
_salt: 123456
|
||||
_hash: 1357924680acegikmoqsuwybdfhjlnprtvxz
|
||||
</pre>
|
||||
<p>
|
||||
Together with your login, you will be able to use those values to
|
||||
authenticate a query.
|
||||
</p>
|
||||
|
||||
{/block} {block context}
|
||||
<p>{trans 'Here we are, just to help you.'}</p>
|
||||
<h2>{trans 'Projects'}</h2>
|
||||
<ul>{foreach $projects as $p}
|
||||
<li><a href="{url 'IDF_Views_Project::home', array($p.shortname)}">{$p}</a></li>
|
||||
{/foreach}</ul>
|
||||
{/block}
|
125
indefero/src/IDF/templates/idf/faq-archive-format.html
Normal file
125
indefero/src/IDF/templates/idf/faq-archive-format.html
Normal file
@@ -0,0 +1,125 @@
|
||||
{extends "idf/base-simple.html"}
|
||||
{block docclass}yui-t3{/block}
|
||||
{block body}
|
||||
<p>At the moment, this documentation is only available in English.</p>
|
||||
|
||||
<ul>
|
||||
<li><a href="#q-motivation">Motivation</a></li>
|
||||
<li><a href="#q-manifest">The manifest format</a></li>
|
||||
<li><a href="#q-notes">Final notes</a></li>
|
||||
</ul>
|
||||
|
||||
<h2 id="q-motivation">Motivation</h2>
|
||||
|
||||
<p>
|
||||
Adding multiple, individual downloads to a project for a release can be a tedious task if
|
||||
one has to select each file manually, and then has to fill in the summary and correct labels
|
||||
for each of these downloads individually.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
InDefero therefore supports the upload of "archives" that contain multiple downloadable
|
||||
files. These archives are standard PKZIP files with only one special property - they
|
||||
contain an additional manifest file which describes the files that should be published.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Once such an archive has been uploaded and validated by InDefero, its files are extracted
|
||||
and individual downloads are created for each of them. If the archive contains files
|
||||
that should replace existing downloads, then InDefero takes care of this as well -
|
||||
automatically. Files that exist in the archive but are not listed in the manifest are
|
||||
not extracted.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
An archive file and its manifest file can easily be compiled, either by hand with the help
|
||||
of a text editor, or through an automated build system with the help of your build tool of
|
||||
choice, such as Apache Ant.
|
||||
</p>
|
||||
|
||||
<h2 id="q-manifest">The manifest format</h2>
|
||||
|
||||
<p>
|
||||
The manifest is an XML file that follows a simple syntax. As it is always easier to look
|
||||
at an example, here you have one:
|
||||
</p>
|
||||
|
||||
<pre>
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<manifest>
|
||||
<file>
|
||||
<name>foo-1.2.tar.gz</name>
|
||||
<summary>Tarball</summary>
|
||||
<replaces>foo-1.1.tar.gz</replaces>
|
||||
<labels>
|
||||
<label>Type:Archive</label>
|
||||
</labels>
|
||||
</file>
|
||||
<file>
|
||||
<name>foo-1.2-installer.exe</name>
|
||||
<summary>Windows MSI Installer</summary>
|
||||
<description>This installer needs Windows XP SP2 or later.</description>
|
||||
<labels>
|
||||
<label>Type:Installer</label>
|
||||
<label>OpSys:Windows</label>
|
||||
</labels>
|
||||
</file>
|
||||
</manifest>
|
||||
</pre>
|
||||
|
||||
<p>
|
||||
This is the DTD for the format:
|
||||
</p>
|
||||
|
||||
<pre>
|
||||
<!DOCTYPE manifest [
|
||||
<!ELEMENT manifest (file+)>
|
||||
<!ELEMENT file (name,summary,replaces?,description?,tags?)>
|
||||
<!ELEMENT name (#PCDATA)>
|
||||
<!ELEMENT summary (#PCDATA)>
|
||||
<!ELEMENT replaces (#PCDATA)>
|
||||
<!ELEMENT description (#PCDATA)>
|
||||
<!ELEMENT labels (label+)>
|
||||
<!ELEMENT label (#PCDATA)>
|
||||
]>
|
||||
</pre>
|
||||
|
||||
<p>
|
||||
The format is more or less self-explaining, all fields map to properties of a single download. Note
|
||||
that there is a limit of <strong>six</strong> labels that you can attach to a download, similar to
|
||||
what the regular file upload functionality allows.
|
||||
</p>
|
||||
|
||||
<p>One special element has been introduced and this is named <code>replaces</code>. If this optional element
|
||||
is given, InDefero looks for a file with that name in the project and acts in one of the following
|
||||
two ways:
|
||||
</p>
|
||||
|
||||
<ul>
|
||||
<li>If the new file's name is distinct from the file's name that is given in <code>replaces</code>,
|
||||
then the replaced file is <strong>marked as deprecated</strong> with the <code>Other:Deprecated</code> label
|
||||
(or any other label that is configured as the very last label in the download project configuration).</li>
|
||||
<li>If the new file's name is equal to the file's name that is given in <code>replaces</code>,
|
||||
then the replaced file <strong>is deleted</strong> before the new file is created. This happens because each file name
|
||||
has to be unique per project and a deprecated and a new file with the same name cannot coexist in InDefero.
|
||||
Note that while the filename-based URI of the download keeps intact, the download counter will be reset by
|
||||
this procedure.</li>
|
||||
</ul>
|
||||
|
||||
If no existing file is found for the <code>replaces</code> tag, then this is completely ignored.
|
||||
</p>
|
||||
|
||||
<h2 id="q-notes">Final notes</h2>
|
||||
|
||||
<p>Any file in the archive that is not enlisted in the manifest is ignored during
|
||||
the upload process, so ensure that your <code>manifest.xml</code> contains all the file names (case
|
||||
sensitive) you want to be processed.</p>
|
||||
{/block}
|
||||
|
||||
{block context}
|
||||
<p>{trans 'Here we are, just to help you.'}</p>
|
||||
<h2>{trans 'Projects'}</h2>
|
||||
<ul>{foreach $projects as $p}
|
||||
<li><a href="{url 'IDF_Views_Project::home', array($p.shortname)}">{$p}</a></li>
|
||||
{/foreach}</ul>
|
||||
{/block}
|
101
indefero/src/IDF/templates/idf/faq.html
Normal file
101
indefero/src/IDF/templates/idf/faq.html
Normal file
@@ -0,0 +1,101 @@
|
||||
{extends "idf/base-simple.html"}
|
||||
{block docclass}yui-t3{/block}
|
||||
{block body}
|
||||
<ul>
|
||||
<li><a href="#q-keyboard">{trans 'What are the keyboard shortcuts?'}</a></li>
|
||||
<li><a href="#q-duplicate">{trans 'How to mark an issue as duplicate?'}</a></li>
|
||||
<li><a href="#q-mugshot">{trans 'How can I display my head next to my comments?'}</a></li>
|
||||
<li><a href="#q-wiki">{trans 'How can I embed images and other resources in my documentation pages?'}</a></li>
|
||||
<li><a href="#q-archive-format">{trans 'What is this "Upload Archive" functionality about?'}</a></li>
|
||||
<li><a href="#q-api">{trans 'What is the API and how is it used?'}</a></li>
|
||||
</ul>
|
||||
|
||||
<h2 id="q-keyboard">{trans 'What are the keyboard shortcuts?'}</h2>
|
||||
|
||||
<ul>
|
||||
<li>{trans '<kbd>Shift+h</kbd>: This help page.'}</li>
|
||||
</ul>
|
||||
|
||||
<p>{trans 'If you are in a project, you have the following shortcuts:'}</p>
|
||||
|
||||
<ul>
|
||||
<li>{trans '<kbd>Shift+u</kbd>: Project updates.'}</li>
|
||||
<li>{trans '<kbd>Shift+d</kbd>: Downloads.'}</li>
|
||||
<li>{trans '<kbd>Shift+o</kbd>: Documentation.'}</li>
|
||||
<li>{trans '<kbd>Shift+a</kbd>: Create a new issue.'}</li>
|
||||
<li>{trans '<kbd>Shift+i</kbd>: List of open issues.'}</li>
|
||||
<li>{trans '<kbd>Shift+m</kbd>: The issues you submitted.'}</li>
|
||||
<li>{trans '<kbd>Shift+w</kbd>: The issues assigned to you.'}</li>
|
||||
<li>{trans '<kbd>Shift+s</kbd>: Source.'}</li>
|
||||
</ul>
|
||||
|
||||
<p>{trans 'You also have the standard access keys:'}</p>
|
||||
|
||||
<ul>
|
||||
<li>{trans '<kbd>Alt+1</kbd>: Home.'}</li>
|
||||
<li>{trans '<kbd>Alt+2</kbd>: Skip the menus.'}</li>
|
||||
<li>{trans '<kbd>Alt+4</kbd>: Search (when available).'}</li>
|
||||
</ul>
|
||||
|
||||
<h2 id="q-duplicate">{trans 'How to mark an issue as duplicate?'}</h2>
|
||||
|
||||
{blocktrans}<p>This is simple:</p>
|
||||
<ol>
|
||||
<li>Write in the comments "This is a duplicate of issue 123" or - if you are a member of the crew -
|
||||
directly add the "duplicates" relation with the value "123" below the comment field. Change "123"
|
||||
with the corresponding issue number.</li>
|
||||
<li>Change the status of the current issue to <em>Duplicate</em>.</li>
|
||||
<li>Submit the changes.</li>
|
||||
</ol>{/blocktrans}
|
||||
|
||||
<h2 id="q-mugshot">{trans 'How can I display my head next to my comments?'}</h2>
|
||||
|
||||
<p>{blocktrans}You need to create an account on <a href="http://en.gravatar.com/">Gravatar</a>, this takes about 5 minutes and is free.{/blocktrans}</p>
|
||||
|
||||
<h2 id="q-wiki">{trans 'How can I embed images and other resources in my documentation pages?'}</h2>
|
||||
|
||||
{blocktrans}
|
||||
<p>To embed any previously uploaded resource into your wiki page, you can use the <code>[[!ResourceName]]</code> syntax.</p>
|
||||
|
||||
<p>The rendering of the resource can then be further fine-tuned:
|
||||
<ul>
|
||||
<li><code>[[!ImageResource, align=right, width=200]]</code> renders "ImageResource" right-aligned and scale its width to 200</li>
|
||||
<li><code>[[!TextResource, align=center, width=300, height=300]]</code> renders "TextResource" in a centered, 300 by 300 px iframe</li>
|
||||
<li><code>[[!AnyResource, preview=no]]</code> does not render a preview of the resource, but only provides a download link (default for binary resources)</li>
|
||||
<li><code>[[!BinaryResource, title=Download]]</code> renders the download link of "BinaryResource" with an alternative title</li>
|
||||
</ul>
|
||||
</p>
|
||||
|
||||
Resources are versioned, just like wiki pages. If you update a resource, old wiki pages still show the state of the resource
|
||||
at the time when the wiki page was edited. If you specifically want to update a resource on a page, you therefor need to update
|
||||
the resource at first and then also the page where it is referenced, otherwise the change won't be visible until the next regular edit.
|
||||
{/blocktrans}
|
||||
|
||||
<h2 id="q-archive-format">{trans 'What is this "Upload Archive" functionality about?'}</h2>
|
||||
|
||||
{blocktrans}<p>If you have to publish many files at once for a new release, it is a very tedious task
|
||||
to upload them one after another and enter meta information like a summary, a description or additional
|
||||
labels for each of them.</p>
|
||||
<p>InDefero therefore supports a special archive format that is basically a standard zip file which comes with
|
||||
some meta information. These meta information are kept in a special manifest file, which is distinctly kept from
|
||||
the rest of the files in the archive that should be published.</p>
|
||||
<p>Once this archive has been uploaded, InDefero reads in the meta information, unpacks the other files from
|
||||
the archive and creates new individual downloads for each of them.</p>{/blocktrans}
|
||||
|
||||
{aurl 'url', 'IDF_Views::faqArchiveFormat'}
|
||||
<p>{blocktrans}<a href="{$url}">Learn more about the archive format</a>.{/blocktrans}</p>
|
||||
|
||||
<h2 id="q-api">{trans 'What is the API and how is it used?'}</h2>
|
||||
|
||||
<p>{blocktrans}The API (Application Programming Interface) is used to interact with InDefero with another program. For example, this can be used to create a desktop program to submit new tickets easily.{/blocktrans}</p>
|
||||
{aurl 'url', 'IDF_Views::faqApi'}
|
||||
<p>{blocktrans}<a href="{$url}">Learn more about the API</a>.{/blocktrans}</p>
|
||||
|
||||
{/block}
|
||||
{block context}
|
||||
<p>{trans 'Here we are, just to help you.'}</p>
|
||||
<h2>{trans 'Projects'}</h2>
|
||||
<ul>{foreach $projects as $p}
|
||||
<li><a href="{url 'IDF_Views_Project::home', array($p.shortname)}">{$p}</a></li>
|
||||
{/foreach}</ul>
|
||||
{/block}
|
69
indefero/src/IDF/templates/idf/gadmin/base.html
Normal file
69
indefero/src/IDF/templates/idf/gadmin/base.html
Normal file
@@ -0,0 +1,69 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
{*
|
||||
# ***** BEGIN LICENSE BLOCK *****
|
||||
# This file is part of InDefero, an open source project management application.
|
||||
# Copyright (C) 2008-2011 Céondo Ltd and contributors.
|
||||
#
|
||||
# InDefero is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# InDefero is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
#
|
||||
# ***** END LICENSE BLOCK *****
|
||||
*}<html lang="en">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<link rel="stylesheet" type="text/css" href="{media '/idf/css/yui.css'}" />
|
||||
<link rel="stylesheet" type="text/css" href="{media '/idf/css/style.css'}" />
|
||||
<!--[if lt IE 7]>
|
||||
<link rel="stylesheet" type="text/css" href="{media '/idf/css/ie6.css'}" />
|
||||
<![endif]-->
|
||||
{block extraheader}{/block}
|
||||
<title>{block pagetitle}{$page_title|strip_tags}{/block}</title>
|
||||
<script type="text/javascript" src="{media '/idf/js/jquery-1.7.2.min.js'}"></script>
|
||||
{appversion}
|
||||
</head>
|
||||
<body>
|
||||
<div id="{block docid}doc3{/block}" class="{block docclass}yui-t3{/block}">
|
||||
<div id="hd">
|
||||
{include 'idf/main-menu.html'}
|
||||
<div id="header">
|
||||
<div id="main-tabs">
|
||||
<a href="{url 'IDF_Views_Admin::forge'}"{block tabforge}{/block}>{trans 'Forge'}</a>
|
||||
<a href="{url 'IDF_Views_Admin::projects'}"{block tabprojects}{/block}>{trans 'Projects'}</a>
|
||||
<a href="{url 'IDF_Views_Admin::users'}"{block tabusers}{/block}>{trans 'People'}</a>
|
||||
{if $usherConfigured}
|
||||
<a href="{url 'IDF_Views_Admin::usher'}"{block tabusher}{/block}>{trans 'Usher'}</a>
|
||||
{/if}
|
||||
</div>
|
||||
<div id="sub-tabs">{block subtabs}{/block}</div>
|
||||
</div>
|
||||
<h1 id="title" class="title">{block title}{$page_title}{/block}</h1>
|
||||
</div>
|
||||
<div id="bd">
|
||||
<div id="yui-main">
|
||||
<div class="yui-b">
|
||||
<div class="yui-g">
|
||||
{if $user and $user.id}{getmsgs $user}{/if}
|
||||
<div class="content">{block body}{/block}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="yui-b context">{block context}{/block}</div>
|
||||
</div>
|
||||
<div id="ft">{block foot}{/block}</div>
|
||||
</div>
|
||||
{include 'idf/js-hotkeys.html'}
|
||||
{block javascript}{/block}
|
||||
</body>
|
||||
</html>
|
5
indefero/src/IDF/templates/idf/gadmin/forge/base.html
Normal file
5
indefero/src/IDF/templates/idf/gadmin/forge/base.html
Normal file
@@ -0,0 +1,5 @@
|
||||
{extends "idf/gadmin/base.html"}
|
||||
{block tabforge} class="active"{/block}
|
||||
{block subtabs}
|
||||
<a {if $inIndex}class="active" {/if}href="{url 'IDF_Views_Admin::forge'}">{trans 'Frontpage'}</a>
|
||||
{/block}
|
65
indefero/src/IDF/templates/idf/gadmin/forge/index.html
Normal file
65
indefero/src/IDF/templates/idf/gadmin/forge/index.html
Normal file
@@ -0,0 +1,65 @@
|
||||
{extends "idf/gadmin/forge/base.html"}
|
||||
|
||||
{block docclass}yui-t3{assign $inIndex=true}{/block}
|
||||
|
||||
{block body}
|
||||
<form method="post" action=".">
|
||||
<table class="form" summary="">
|
||||
<colgroup>
|
||||
<col width="20" />
|
||||
<col width="*" />
|
||||
</colgroup>
|
||||
<tr>
|
||||
<td>{$form.f.enabled|unsafe}</td>
|
||||
<td>
|
||||
{$form.f.enabled.labelTag}
|
||||
{if $form.f.enabled.errors}{$form.f.enabled.fieldErrors}{/if}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
{if $form.f.content.errors}{$form.f.content.fieldErrors}{/if}
|
||||
{$form.f.content|unsafe}
|
||||
</td>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<input type="submit" value="{trans 'Save Changes'}" name="submit" />
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
<script type="text/javascript" charset="utf-8">
|
||||
// <!-- {literal}
|
||||
$(document).ready(function() {
|
||||
var handler = function() {
|
||||
if ($(this).is(':checked')) {
|
||||
$('#id_content').removeAttr('readonly');
|
||||
} else {
|
||||
$('#id_content').attr('readonly', 'readonly');
|
||||
}
|
||||
};
|
||||
$('#id_enabled').bind('click', handler);
|
||||
handler.call($('#id_enabled'));
|
||||
});
|
||||
// {/literal} -->
|
||||
</script>
|
||||
{/block}
|
||||
|
||||
{block context}
|
||||
{assign $eurl = 'http://michelf.com/projects/php-markdown/extra/'}
|
||||
{assign $burl = 'http://daringfireball.net/projects/markdown/syntax'}
|
||||
<div class="issue-submit-info">
|
||||
{blocktrans}
|
||||
<p><strong>Instructions:</strong></p>
|
||||
<p>You can set up a custom forge page that is used as entry page for the forge instead of the plain project listing. This page is then also accessible via the 'Home' link in main menu bar.</p>
|
||||
<p>The content of the page can use the <a href="{$burl}">Markdown syntax</a> with the <a href="{$eurl}"><em>Extra</em> extension</a>.</p>
|
||||
<p>Additionally, the following macros are available:<br />
|
||||
<ul>
|
||||
<li><code>{projectlist, label=..., order=(name|activity), limit=...}</code> - Renders a project list that can optionally be filtered by label, ordered by 'name' or 'activity' and / or limited to a specific number of projects.</li>
|
||||
</ul>
|
||||
</p>
|
||||
{/blocktrans}
|
||||
</div>
|
||||
{/block}
|
||||
|
||||
|
7
indefero/src/IDF/templates/idf/gadmin/projects/base.html
Normal file
7
indefero/src/IDF/templates/idf/gadmin/projects/base.html
Normal file
@@ -0,0 +1,7 @@
|
||||
{extends "idf/gadmin/base.html"}
|
||||
{block tabprojects} class="active"{/block}
|
||||
{block subtabs}
|
||||
<a {if $inIndex}class="active" {/if}href="{url 'IDF_Views_Admin::projects'}">{trans 'Project List'}</a> |
|
||||
<a {if $inLabels}class="active" {/if}href="{url 'IDF_Views_Admin::projectLabels'}">{trans 'Project Labels'}</a> |
|
||||
<a {if $inCreate}class="active" {/if}href="{url 'IDF_Views_Admin::projectCreate'}">{trans 'Create Project'}</a> {if $project} | <a href="{url 'IDF_Views_Project::admin', array($project.shortname)}">{trans 'Change Project Details'}</a>{/if}
|
||||
{/block}
|
186
indefero/src/IDF/templates/idf/gadmin/projects/create.html
Normal file
186
indefero/src/IDF/templates/idf/gadmin/projects/create.html
Normal file
@@ -0,0 +1,186 @@
|
||||
{extends "idf/gadmin/projects/base.html"}
|
||||
|
||||
{block docclass}yui-t3{assign $inCreate=true}{/block}
|
||||
|
||||
{block body}
|
||||
{if $form.errors}
|
||||
<div class="px-message-error">
|
||||
<p>{trans 'The form contains some errors. Please correct them to create the project.'}</p>
|
||||
{if $form.get_top_errors}
|
||||
{$form.render_top_errors|unsafe}
|
||||
{/if}
|
||||
</div>
|
||||
{/if}
|
||||
<form method="post" action=".">
|
||||
<table class="form" summary="">
|
||||
<tr>
|
||||
<th><strong>{$form.f.name.labelTag}:</strong></th>
|
||||
<td>
|
||||
{if $form.f.name.errors}{$form.f.name.fieldErrors}{/if}
|
||||
{$form.f.name|unsafe}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><strong>{$form.f.shortname.labelTag}:</strong></th>
|
||||
<td>
|
||||
{if $form.f.shortname.errors}{$form.f.shortname.fieldErrors}{/if}
|
||||
{$base_url}{$form.f.shortname|unsafe}/<br />
|
||||
<span class="helptext">{$form.f.shortname.help_text}</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><strong>{$form.f.shortdesc.labelTag}:</strong></th>
|
||||
<td>
|
||||
{if $form.f.shortdesc.errors}{$form.f.shortdesc.fieldErrors}{/if}
|
||||
{$form.f.shortdesc|unsafe}<br />
|
||||
<span class="helptext">{$form.f.shortdesc.help_text}</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{$form.f.external_project_url.labelTag}:</th>
|
||||
<td>{if $form.f.external_project_url.errors}{$form.f.external_project_url.fieldErrors}{/if}
|
||||
{$form.f.external_project_url|unsafe}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><strong>{$form.f.scm.labelTag}:</strong></th>
|
||||
<td>{if $form.f.scm.errors}{$form.f.scm.fieldErrors}{/if}
|
||||
{$form.f.scm|unsafe}
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="svn-form">
|
||||
<th>{$form.f.svn_remote_url.labelTag}:</th>
|
||||
<td>{if $form.f.svn_remote_url.errors}{$form.f.svn_remote_url.fieldErrors}{/if}
|
||||
{$form.f.svn_remote_url|unsafe}
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="svn-form">
|
||||
<th>{$form.f.svn_username.labelTag}:</th>
|
||||
<td>{if $form.f.svn_username.errors}{$form.f.svn_username.fieldErrors}{/if}
|
||||
{$form.f.svn_username|unsafe}
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="svn-form">
|
||||
<th>{$form.f.svn_password.labelTag}:</th>
|
||||
<td>{if $form.f.svn_password.errors}{$form.f.svn_password.fieldErrors}{/if}
|
||||
{$form.f.svn_password|unsafe}
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="mtn-form">
|
||||
<th><strong>{$form.f.mtn_master_branch.labelTag}:</strong></th>
|
||||
<td>{if $form.f.mtn_master_branch.errors}{$form.f.mtn_master_branch.fieldErrors}{/if}
|
||||
{$form.f.mtn_master_branch|unsafe}<br />
|
||||
<span class="helptext">{$form.f.mtn_master_branch.help_text}</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{$form.f.template.labelTag}</th>
|
||||
<td>{if $form.f.template.errors}{$form.f.template.fieldErrors}{/if}
|
||||
{$form.f.template|unsafe}<br />
|
||||
<span class="helptext">{$form.f.template.help_text}</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="no-template">
|
||||
<th>{$form.f.label1.labelTag}:</th>
|
||||
<td>
|
||||
{if $form.f.label1.errors}{$form.f.label1.fieldErrors}{/if}{$form.f.label1|unsafe}
|
||||
{if $form.f.label2.errors}{$form.f.label2.fieldErrors}{/if}{$form.f.label2|unsafe}<br />
|
||||
{if $form.f.label3.errors}{$form.f.label3.fieldErrors}{/if}{$form.f.label3|unsafe}
|
||||
{if $form.f.label4.errors}{$form.f.label4.fieldErrors}{/if}{$form.f.label4|unsafe}<br />
|
||||
{if $form.f.label5.errors}{$form.f.label5.fieldErrors}{/if}{$form.f.label5|unsafe}
|
||||
{if $form.f.label6.errors}{$form.f.label6.fieldErrors}{/if}{$form.f.label6|unsafe}
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="no-template">
|
||||
<th><strong>{$form.f.owners.labelTag}:</strong></th>
|
||||
<td>
|
||||
{if $form.f.owners.errors}{$form.f.owners.fieldErrors}{/if}
|
||||
{$form.f.owners|unsafe}<br />
|
||||
<span class="helptext">{trans 'Provide at least one owner for the project or use a template.'}</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="no-template">
|
||||
<th>{$form.f.members.labelTag}:</th>
|
||||
<td>
|
||||
{if $form.f.members.errors}{$form.f.members.fieldErrors}{/if}
|
||||
{$form.f.members|unsafe}
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="no-template">
|
||||
<th>{if $form.f.private_project.errors}{$form.f.private_project.fieldErrors}{/if}
|
||||
{$form.f.private_project|unsafe}
|
||||
</th>
|
||||
<td>{$form.f.private_project.labelTag}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td> </td>
|
||||
<td>
|
||||
<input type="submit" value="{trans 'Create Project'}" name="submit" />
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
{include 'idf/project/js-autocomplete.html'}{/block}
|
||||
{/block}
|
||||
|
||||
{block context}
|
||||
<div class="issue-submit-info">
|
||||
<p><strong>{trans 'Instructions:'}</strong></p>
|
||||
<p>{blocktrans}You can select the type of repository you want. In the case of subversion, you can use optionally a remote repository instead of the local one.{/blocktrans}</p>
|
||||
<p>{blocktrans}<strong>Once you have defined the repository type, you cannot change it</strong>.{/blocktrans}</p>
|
||||
</div>
|
||||
<div class="issue-submit-info">
|
||||
{blocktrans}
|
||||
<p>Specify each person by its login. Each person must have already registered with the given login.</p>
|
||||
<p>Separate the logins with commas and/or new lines.</p>
|
||||
{/blocktrans}
|
||||
</div>
|
||||
<div class="issue-submit-info">
|
||||
{blocktrans}
|
||||
<p><strong>Notes:</strong></p>
|
||||
<p>A project owner may make any change to this project, including removing other project owners. You need to be carefull when you give owner rights.</p>
|
||||
<p>A project member will not have access to the administration area but will have more options available in the use of the project.</p>
|
||||
{/blocktrans}
|
||||
</div>
|
||||
{/block}
|
||||
|
||||
{block javascript}{literal}
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function() {
|
||||
// Hide if not svn
|
||||
if ($("#id_scm option:selected").val() != "svn") {
|
||||
$(".svn-form").hide();
|
||||
}
|
||||
// Hide if not mtn
|
||||
if ($("#id_scm option:selected").val() != "mtn") {
|
||||
$(".mtn-form").hide();
|
||||
}
|
||||
$("#id_scm").change(function () {
|
||||
if ($("#id_scm option:selected").val() == "svn") {
|
||||
$(".svn-form").show();
|
||||
} else {
|
||||
$(".svn-form").hide();
|
||||
}
|
||||
if ($("#id_scm option:selected").val() == "mtn") {
|
||||
$(".mtn-form").show();
|
||||
} else {
|
||||
$(".mtn-form").hide();
|
||||
}
|
||||
|
||||
});
|
||||
// Hide if not templated
|
||||
if ($("#id_template option:selected").val() == "--") {
|
||||
$(".no-template").show();
|
||||
} else {
|
||||
$(".no-template").hide();
|
||||
}
|
||||
$("#id_template").change(function () {
|
||||
if ($("#id_template option:selected").val() == "--") {
|
||||
$(".no-template").show();
|
||||
} else {
|
||||
$(".no-template").hide();
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
{/literal}{/block}
|
72
indefero/src/IDF/templates/idf/gadmin/projects/delete.html
Normal file
72
indefero/src/IDF/templates/idf/gadmin/projects/delete.html
Normal file
@@ -0,0 +1,72 @@
|
||||
{extends "idf/gadmin/projects/base.html"}
|
||||
{block body}
|
||||
{if $form.errors}
|
||||
<div class="px-message-error">
|
||||
<p>{trans 'The form contains some errors. Please correct them to delete the project.'}</p>
|
||||
{if $form.get_top_errors}
|
||||
{$form.render_top_errors|unsafe}
|
||||
{/if}
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
<h2{if !$form.get_top_errors} class="top"{/if}>{trans 'Project Statistics'}</h2>
|
||||
|
||||
<table summary=" " class="recent-issues minsize">
|
||||
<thead>
|
||||
<tr><th><span class="px-header-title">{trans 'Tab'}</span></th><th><span class="px-header-title">{trans 'Number'}</span></th></tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr><td class="right">{trans 'Downloads'}</td><td class="a-c">{$stats['downloads']}</td></tr>
|
||||
<tr><td class="right">{trans 'Code reviews'}</td><td class="a-c">{$stats['reviews']}</td></tr>
|
||||
<tr><td class="right">{trans 'Commits'}</td><td class="a-c">{$stats['commits']}</td></tr>
|
||||
<tr><td class="right">{trans 'Issues'}</td><td class="a-c">{$stats['issues']}</td></tr>
|
||||
<tr><td class="right">{trans 'Documentation pages'}</td><td class="a-c">{$stats['docpages']}</td></tr>
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<h2>{trans 'Delete Project'}</h2>
|
||||
|
||||
<form method="post" action=".">
|
||||
<table class="form" summary="">
|
||||
<tr>
|
||||
<td> </td>
|
||||
<td>
|
||||
{blocktrans}Confirmation code to confirm the deletion of the project:
|
||||
<em>{$code}</em>.{/blocktrans}<br />
|
||||
<br />
|
||||
<strong>{$form.f.code.labelTag}:</strong>
|
||||
{if $form.f.code.errors}{$form.f.code.fieldErrors}{/if}
|
||||
{$form.f.code|unsafe}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td> </td>
|
||||
<td>
|
||||
{if $form.f.agree.errors}{$form.f.agree.fieldErrors}{/if}
|
||||
{$form.f.agree|unsafe} <strong>{$form.f.agree.labelTag}</strong>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td> </td>
|
||||
<td>
|
||||
<input type="submit" value="{trans 'Delete Project'}" name="submit" />
|
||||
| <a href="{url 'IDF_Views_Admin::projectUpdate', array($project.id)}">{trans 'Cancel'}</a>{if $stats['total'] > 200}<br />
|
||||
<span class="helptext">{trans 'For large projects, the suppression can take a while, please be patient.'}</span>{/if}
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
{/block}
|
||||
{block context}
|
||||
<div class="issue-submit-info">
|
||||
<p>{blocktrans}
|
||||
<strong>Attention!</strong> Deleting a project is a one second operation
|
||||
with the consequences that <strong>all the data</strong> related to the
|
||||
project <strong>will be deleted</strong>.
|
||||
{/blocktrans}</p>
|
||||
</div>
|
||||
{/block}
|
||||
|
||||
|
||||
|
23
indefero/src/IDF/templates/idf/gadmin/projects/index.html
Normal file
23
indefero/src/IDF/templates/idf/gadmin/projects/index.html
Normal file
@@ -0,0 +1,23 @@
|
||||
{extends "idf/gadmin/projects/base.html"}
|
||||
|
||||
{block docclass}yui-t3{assign $inIndex=true}{/block}
|
||||
|
||||
{block body}
|
||||
{$projects.render}
|
||||
{/block}
|
||||
|
||||
{block context}
|
||||
<div class="issue-submit-info">
|
||||
<p><strong>{trans 'Space Usage Statistics'}</strong></p>
|
||||
<ul>
|
||||
<li>{trans 'Repositories:'} {$size['repositories']|size}</li>
|
||||
<li>{trans 'Attachments:'} {$size['attachments']|size}</li>
|
||||
<li>{trans 'Downloads:'} {$size['downloads']|size}</li>
|
||||
<li>{trans 'Database:'} {$size['database']|size}</li>
|
||||
<li><strong>{trans 'Total Forge:'} {$size['total']|size}</strong></li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
{/block}
|
||||
|
||||
|
31
indefero/src/IDF/templates/idf/gadmin/projects/labels.html
Normal file
31
indefero/src/IDF/templates/idf/gadmin/projects/labels.html
Normal file
@@ -0,0 +1,31 @@
|
||||
{extends "idf/gadmin/projects/base.html"}
|
||||
|
||||
{block docclass}yui-t3{assign $inLabels=true}{/block}
|
||||
|
||||
{block body}
|
||||
<form method="post" action=".">
|
||||
<table class="form" summary="">
|
||||
<tr>
|
||||
<td colspan="2"><strong>{$form.f.project_labels.labelTag}:</strong><br />
|
||||
{if $form.f.project_labels.errors}{$form.f.project_labels.fieldErrors}{/if}
|
||||
{$form.f.project_labels|unsafe}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<input type="submit" value="{trans 'Save Changes'}" name="submit" />
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
{/block}
|
||||
|
||||
{block context}
|
||||
<div class="issue-submit-info">
|
||||
{blocktrans}
|
||||
<p><strong>Instructions:</strong></p>
|
||||
<p>List one status value per line in desired sort-order.</p>
|
||||
<p>Optionally, use an equals-sign to document the meaning of each status value.</p>
|
||||
{/blocktrans}
|
||||
</div>
|
||||
{/block}
|
101
indefero/src/IDF/templates/idf/gadmin/projects/update.html
Normal file
101
indefero/src/IDF/templates/idf/gadmin/projects/update.html
Normal file
@@ -0,0 +1,101 @@
|
||||
{extends "idf/gadmin/projects/base.html"}
|
||||
{block body}
|
||||
{if $form.errors}
|
||||
<div class="px-message-error">
|
||||
<p>{trans 'The form contains some errors. Please correct them to update the project.'}</p>
|
||||
{if $form.get_top_errors}
|
||||
{$form.render_top_errors|unsafe}
|
||||
{/if}
|
||||
</div>
|
||||
{/if}
|
||||
<form method="post" action=".">
|
||||
<table class="form" summary="">
|
||||
<tr>
|
||||
<th><strong>{$form.f.name.labelTag}:</strong></th>
|
||||
<td>
|
||||
{if $form.f.name.errors}{$form.f.name.fieldErrors}{/if}
|
||||
{$form.f.name|unsafe}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><strong>{$form.f.shortdesc.labelTag}:</strong></th>
|
||||
<td>
|
||||
{if $form.f.shortdesc.errors}{$form.f.shortdesc.fieldErrors}{/if}
|
||||
{$form.f.shortdesc|unsafe}<br />
|
||||
<span class="helptext">{$form.f.shortdesc.help_text}</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{$form.f.external_project_url.labelTag}:</th>
|
||||
<td>{if $form.f.external_project_url.errors}{$form.f.external_project_url.fieldErrors}{/if}
|
||||
{$form.f.external_project_url|unsafe}
|
||||
</td>
|
||||
</tr>
|
||||
{if $project.getConf().getVal('scm') == 'mtn'}
|
||||
<tr class="mtn-form">
|
||||
<th><strong>{$form.f.mtn_master_branch.labelTag}:</strong></th>
|
||||
<td>{if $form.f.mtn_master_branch.errors}{$form.f.mtn_master_branch.fieldErrors}{/if}
|
||||
{$form.f.mtn_master_branch|unsafe}<br />
|
||||
<span class="helptext">{$form.f.mtn_master_branch.help_text}</span>
|
||||
</td>
|
||||
</tr>
|
||||
{/if}
|
||||
<tr>
|
||||
<th>{$form.f.label1.labelTag}:</th>
|
||||
<td>
|
||||
{if $form.f.label1.errors}{$form.f.label1.fieldErrors}{/if}{$form.f.label1|unsafe}
|
||||
{if $form.f.label2.errors}{$form.f.label2.fieldErrors}{/if}{$form.f.label2|unsafe}<br />
|
||||
{if $form.f.label3.errors}{$form.f.label3.fieldErrors}{/if}{$form.f.label3|unsafe}
|
||||
{if $form.f.label4.errors}{$form.f.label4.fieldErrors}{/if}{$form.f.label4|unsafe}<br />
|
||||
{if $form.f.label5.errors}{$form.f.label5.fieldErrors}{/if}{$form.f.label5|unsafe}
|
||||
{if $form.f.label6.errors}{$form.f.label6.fieldErrors}{/if}{$form.f.label6|unsafe}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><strong>{$form.f.owners.labelTag}:</strong></th>
|
||||
<td>
|
||||
{if $form.f.owners.errors}{$form.f.owners.fieldErrors}{/if}
|
||||
{$form.f.owners|unsafe}<br />
|
||||
<span class="helptext">{trans 'Provide at least one owner for the project.'}</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{$form.f.members.labelTag}:</th>
|
||||
<td>
|
||||
{if $form.f.members.errors}{$form.f.members.fieldErrors}{/if}
|
||||
{$form.f.members|unsafe}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td> </td>
|
||||
<td> {aurl 'url', 'IDF_Views_Admin::projectDelete', array($project.id)}
|
||||
{* float left is a fix for Firefox < 3.5 *}
|
||||
<span style="float: left;"><input type="submit" value="{trans 'Update Project'}" name="submit" />
|
||||
| <a href="{url 'IDF_Views_Admin::projects'}">{trans 'Cancel'}</a></span> {if $isAdmin}
|
||||
<span class="dellink"><a href="{$url}" title="{trans 'Delete this project'}"><img src="{media '/idf/img/trash.png'}" style="vertical-align: text-bottom;" alt="{trans 'Trash'}" /></a> <a href="{$url}" title="{trans 'Delete this project'}">{trans 'Delete this project'}</a><br /><span class="note helptext">{trans 'You will be asked to confirm.'}</span></span>{/if}
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
{include 'idf/project/js-autocomplete.html'}{/block}
|
||||
{/block}
|
||||
|
||||
{block context}
|
||||
<div class="issue-submit-info">
|
||||
{blocktrans}
|
||||
<p><strong>Instructions:</strong></p>
|
||||
<p>Specify each person by its login. Each person must have already registered with the given login.</p>
|
||||
<p>Separate the logins with commas and/or new lines.</p>
|
||||
{/blocktrans}
|
||||
</div>
|
||||
<div class="issue-submit-info">
|
||||
{blocktrans}
|
||||
<p><strong>Notes:</strong></p>
|
||||
<p>A project owner may make any change to this project, including removing other project owners. You need to be carefull when you give owner rights.</p>
|
||||
<p>A project member will not have access to the administration area but will have more options available in the use of the project.</p>
|
||||
{/blocktrans}
|
||||
</div>
|
||||
{/block}
|
||||
|
||||
|
||||
|
10
indefero/src/IDF/templates/idf/gadmin/users/base.html
Normal file
10
indefero/src/IDF/templates/idf/gadmin/users/base.html
Normal file
@@ -0,0 +1,10 @@
|
||||
{extends "idf/gadmin/base.html"}
|
||||
{block tabusers} class="active"{/block}
|
||||
{block subtabs}
|
||||
<a {if $inIndex}class="active" {/if}href="{url 'IDF_Views_Admin::users'}">{trans 'User List'}</a>
|
||||
{if $inUpdate} |
|
||||
<a class="active" href="{url 'IDF_Views_Admin::userUpdate', array($cuser.id)}">{trans 'Update User'}</a>
|
||||
{/if} |
|
||||
<a {if $inCreate}class="active" {/if}href="{url 'IDF_Views_Admin::userCreate'}">{trans 'Create User'}</a>
|
||||
|
||||
{/block}
|
68
indefero/src/IDF/templates/idf/gadmin/users/create.html
Normal file
68
indefero/src/IDF/templates/idf/gadmin/users/create.html
Normal file
@@ -0,0 +1,68 @@
|
||||
{extends "idf/gadmin/users/base.html"}
|
||||
{block docclass}yui-t1{assign $inCreate=true}{/block}
|
||||
{block body}
|
||||
{if $form.errors}
|
||||
<div class="px-message-error">
|
||||
<p>{trans 'The form contains some errors. Please correct them to create the user.'}</p>
|
||||
{if $form.get_top_errors}
|
||||
{$form.render_top_errors|unsafe}
|
||||
{/if}
|
||||
</div>
|
||||
{/if}
|
||||
<form method="post" action=".">
|
||||
<table class="form" summary="">
|
||||
<tr>
|
||||
<th><strong>{$form.f.login.labelTag}:</strong></th>
|
||||
<td>{if $form.f.login.errors}{$form.f.login.fieldErrors}{/if}
|
||||
{$form.f.login|unsafe}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{$form.f.first_name.labelTag}:</th>
|
||||
<td>{if $form.f.first_name.errors}{$form.f.first_name.fieldErrors}{/if}
|
||||
{$form.f.first_name|unsafe}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><strong>{$form.f.last_name.labelTag}:</strong></th>
|
||||
<td>{if $form.f.last_name.errors}{$form.f.last_name.fieldErrors}{/if}
|
||||
{$form.f.last_name|unsafe}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><strong>{$form.f.email.labelTag}:</strong></th>
|
||||
<td>{if $form.f.email.errors}{$form.f.email.fieldErrors}{/if}
|
||||
{$form.f.email|unsafe}<br />
|
||||
<span class="helptext">{$form.f.email.help_text}</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{$form.f.language.labelTag}:</th>
|
||||
<td>{if $form.f.language.errors}{$form.f.language.fieldErrors}{/if}
|
||||
{$form.f.language|unsafe}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{$form.f.public_key.labelTag}:</th>
|
||||
<td>{if $form.f.public_key.errors}{$form.f.public_key.fieldErrors}{/if}
|
||||
{$form.f.public_key|unsafe}<br />
|
||||
<span class="helptext">{$form.f.public_key.help_text}</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td> </td>
|
||||
<td><input type="submit" value="{trans 'Create User'}" name="submit" /> | <a href="{url 'IDF_Views_Admin::users'}">{trans 'Cancel'}</a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
{/block}
|
||||
{block context}
|
||||
<div class="issue-submit-info">
|
||||
<p>{trans 'The user password will be sent by email to the user.'}</p>
|
||||
</div>{/block}
|
||||
|
||||
{block javascript}<script type="text/javascript">
|
||||
document.getElementById('id_login').focus();
|
||||
</script>{/block}
|
||||
|
@@ -0,0 +1,16 @@
|
||||
{blocktrans}Hello {$user},
|
||||
|
||||
An account on the forge has been created for you by
|
||||
the administrator {$admin}.
|
||||
|
||||
Please find here your details to access the forge:
|
||||
|
||||
Address: {$url}
|
||||
Login: {$user.login}
|
||||
Password: {$password}
|
||||
|
||||
Yours faithfully,
|
||||
The development team.
|
||||
{/blocktrans}
|
||||
|
||||
|
16
indefero/src/IDF/templates/idf/gadmin/users/index.html
Normal file
16
indefero/src/IDF/templates/idf/gadmin/users/index.html
Normal file
@@ -0,0 +1,16 @@
|
||||
{extends "idf/gadmin/users/base.html"}
|
||||
|
||||
{block docclass}yui-t2{assign $inIndex=true}{/block}
|
||||
|
||||
{block body}
|
||||
{$users.render}
|
||||
{/block}
|
||||
{block context}
|
||||
<p>{trans 'Number of users:'} <strong>{$users.nb_items}</strong></p>
|
||||
{if !$not_validated}{aurl 'url', 'IDF_Views_Admin::usersNotValidated'}
|
||||
<p class="helptext">{blocktrans}See <a href="{$url}">not validated users</a>.{/blocktrans}</p>
|
||||
{/if}
|
||||
<div class="issue-submit-info">
|
||||
{blocktrans}<p>You have here an overview of the users registered in the forge.</p>{/blocktrans}
|
||||
</div>
|
||||
{/block}
|
134
indefero/src/IDF/templates/idf/gadmin/users/update.html
Normal file
134
indefero/src/IDF/templates/idf/gadmin/users/update.html
Normal file
@@ -0,0 +1,134 @@
|
||||
{extends "idf/gadmin/users/base.html"}
|
||||
{block docclass}yui-t1{assign $inUpdate=true}{/block}
|
||||
{block body}
|
||||
{if $form.errors}
|
||||
<div class="px-message-error">
|
||||
<p>{trans 'The form contains some errors. Please correct them to update the user.'}</p>
|
||||
{if $form.get_top_errors}
|
||||
{$form.render_top_errors|unsafe}
|
||||
{/if}
|
||||
</div>
|
||||
{/if}
|
||||
<form method="post" enctype="multipart/form-data" action=".">
|
||||
<table class="form" summary="">
|
||||
<tr>
|
||||
<th>{trans 'Login:'}</th>{aurl 'url', 'IDF_Views_User::view', array($cuser.login)}
|
||||
<td><a href="{$url}">{$cuser.login}</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{$form.f.first_name.labelTag}:</th>
|
||||
<td>{if $form.f.first_name.errors}{$form.f.first_name.fieldErrors}{/if}
|
||||
{$form.f.first_name|unsafe}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><strong>{$form.f.last_name.labelTag}:</strong></th>
|
||||
<td>{if $form.f.last_name.errors}{$form.f.last_name.fieldErrors}{/if}
|
||||
{$form.f.last_name|unsafe}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><strong>{$form.f.email.labelTag}:</strong></th>
|
||||
<td>{if $form.f.email.errors}{$form.f.email.fieldErrors}{/if}
|
||||
{$form.f.email|unsafe}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{$form.f.language.labelTag}:</th>
|
||||
<td>{if $form.f.language.errors}{$form.f.language.fieldErrors}{/if}
|
||||
{$form.f.language|unsafe}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{$form.f.password.labelTag}:</th>
|
||||
<td>{if $form.f.password.errors}{$form.f.password.fieldErrors}{/if}
|
||||
{$form.f.password|unsafe}<br />
|
||||
<span class="helptext">{$form.f.password.help_text}</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{$form.f.password2.labelTag}:</th>
|
||||
<td>{if $form.f.password2.errors}{$form.f.password2.fieldErrors}{/if}
|
||||
{$form.f.password2|unsafe}
|
||||
</td>
|
||||
</tr>
|
||||
<tr><td colspan="2" class="separator">{trans "Public Profile"}</td></tr>
|
||||
<tr>
|
||||
<th>{$form.f.description.labelTag}:</th>
|
||||
<td>{if $form.f.description.errors}{$form.f.description.fieldErrors}{/if}
|
||||
{$form.f.description|unsafe}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{$form.f.twitter.labelTag}:</th>
|
||||
<td>{if $form.f.twitter.errors}{$form.f.twitter.fieldErrors}{/if}
|
||||
{$form.f.twitter|unsafe}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{$form.f.public_email.labelTag}:</th>
|
||||
<td>{if $form.f.public_email.errors}{$form.f.public_email.fieldErrors}{/if}
|
||||
{$form.f.public_email|unsafe}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{$form.f.website.labelTag}:</th>
|
||||
<td>{if $form.f.website.errors}{$form.f.website.fieldErrors}{/if}
|
||||
{$form.f.website|unsafe}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{$form.f.custom_avatar.labelTag}:</th>
|
||||
<td>{if $form.f.custom_avatar.errors}{$form.f.custom_avatar.fieldErrors}{/if}
|
||||
{$form.f.custom_avatar|unsafe}<br />
|
||||
<span class="helptext">{$form.f.custom_avatar.help_text}</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{if $form.f.remove_custom_avatar.errors}{$form.f.remove_custom_avatar.fieldErrors}{/if}
|
||||
{$form.f.remove_custom_avatar|unsafe}
|
||||
</th>
|
||||
<td>{$form.f.remove_custom_avatar.labelTag}<br />
|
||||
<span class="helptext">{$form.f.remove_custom_avatar.help_text}</span></td>
|
||||
</tr>
|
||||
{if $user.administrator}
|
||||
<tr><td colspan="2" class="separator">{trans "Administrative"}</td></tr>
|
||||
<tr>
|
||||
<th>{if $form.f.staff.errors}{$form.f.staff.fieldErrors}{/if}
|
||||
{$form.f.staff|unsafe}
|
||||
</th>
|
||||
<td>{$form.f.staff.labelTag}<br />
|
||||
<span class="helptext">{$form.f.staff.help_text}</span></td>
|
||||
</tr>{/if}
|
||||
<tr>
|
||||
<th>{if $form.f.active.errors}{$form.f.active.fieldErrors}{/if}
|
||||
{$form.f.active|unsafe}
|
||||
</th>
|
||||
<td>{$form.f.active.labelTag}<br />
|
||||
<span class="helptext">{$form.f.active.help_text}</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td> </td>
|
||||
<td>
|
||||
<input type="submit" value="{trans 'Update User'}" name="submit" />
|
||||
| <a href="{url 'IDF_Views_Admin::users'}">{trans 'Cancel'}</a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
{/block}
|
||||
{block context}
|
||||
<div class="issue-submit-info">
|
||||
<p><strong>{trans 'Instructions:'}</strong></p>
|
||||
<p>{blocktrans}If you are changing the email address of the user, you
|
||||
need to ensure that you are providing a valid email
|
||||
address{/blocktrans}</p>
|
||||
{if $user.administrator}
|
||||
<p>{blocktrans}If you give the user staff rights, the user will be
|
||||
able to create new projects and update other non staff users.
|
||||
{/blocktrans}</p> {/if}
|
||||
</div>
|
||||
{/block}
|
||||
|
||||
|
||||
|
6
indefero/src/IDF/templates/idf/gadmin/usher/base.html
Normal file
6
indefero/src/IDF/templates/idf/gadmin/usher/base.html
Normal file
@@ -0,0 +1,6 @@
|
||||
{extends "idf/gadmin/base.html"}
|
||||
{block tabusher} class="active"{/block}
|
||||
{block subtabs}
|
||||
<a {if $inUsher}class="active" {/if}href="{url 'IDF_Views_Admin::usher'}">{trans 'Configured servers'}</a> |
|
||||
<a {if $inUsherControl}class="active" {/if}href="{url 'IDF_Views_Admin::usherControl', array('')}">{trans 'Usher control'}</a>
|
||||
{/block}
|
25
indefero/src/IDF/templates/idf/gadmin/usher/connections.html
Normal file
25
indefero/src/IDF/templates/idf/gadmin/usher/connections.html
Normal file
@@ -0,0 +1,25 @@
|
||||
{extends "idf/gadmin/usher/base.html"}
|
||||
|
||||
{block docclass}yui-t3{assign $inUsherServerConnections=true}{/block}
|
||||
|
||||
{block body}
|
||||
<table class="recent-issues">
|
||||
<tr>
|
||||
<th>{trans "address"}</th>
|
||||
<th>{trans "port"}</th>
|
||||
</tr>
|
||||
{if count($connections) == 0}
|
||||
<tr>
|
||||
<td colspan="2" align="center">{trans 'No connections found.'}</td>
|
||||
</tr>
|
||||
{else}
|
||||
{foreach $connections as $connection}
|
||||
<tr>
|
||||
<td>{$connection.address}</td>
|
||||
<td>{$connection.port}</td>
|
||||
</tr>
|
||||
{/foreach}
|
||||
{/if}
|
||||
</table>
|
||||
{/block}
|
||||
|
32
indefero/src/IDF/templates/idf/gadmin/usher/control.html
Normal file
32
indefero/src/IDF/templates/idf/gadmin/usher/control.html
Normal file
@@ -0,0 +1,32 @@
|
||||
{extends "idf/gadmin/usher/base.html"}
|
||||
|
||||
{block docclass}yui-t3{assign $inUsherControl=true}{/block}
|
||||
|
||||
{block body}
|
||||
<p>
|
||||
{trans 'current server status:'} {$status} |
|
||||
{if $status == "SHUTDOWN"}
|
||||
<a href="{url 'IDF_Views_Admin::usherControl', array('startup')}">{trans 'startup'}</a>
|
||||
{else}
|
||||
<a href="{url 'IDF_Views_Admin::usherControl', array('shutdown')}">{trans 'shutdown'}</a>
|
||||
{/if}
|
||||
</p>
|
||||
|
||||
<p>{trans 'reload server configuration:'}
|
||||
<a href="{url 'IDF_Views_Admin::usherControl', array('reload')}">{trans 'reload'}</a>
|
||||
</p>
|
||||
{/block}
|
||||
|
||||
{block context}
|
||||
<div class="issue-submit-info">
|
||||
<p><strong>{trans 'Status explanation'}</strong></p>
|
||||
<ul>
|
||||
<li>ACTIVE n: {trans 'active with n total open connections'}</li>
|
||||
<li>WAITING: {trans 'waiting for new connections'}</li>
|
||||
<li>SHUTTINGDOWN: {trans 'usher is being shut down, not accepting connections'}</li>
|
||||
<li>SHUTDOWN: {trans 'usher is shut down, all local servers are stopped and not accepting connections'}</li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
{/block}
|
||||
|
58
indefero/src/IDF/templates/idf/gadmin/usher/index.html
Normal file
58
indefero/src/IDF/templates/idf/gadmin/usher/index.html
Normal file
@@ -0,0 +1,58 @@
|
||||
{extends "idf/gadmin/usher/base.html"}
|
||||
|
||||
{block docclass}yui-t3{assign $inUsher=true}{/block}
|
||||
|
||||
{block body}
|
||||
<table class="recent-issues">
|
||||
<tr>
|
||||
<th>{trans "server name"}</th>
|
||||
<th>{trans "status"}</th>
|
||||
<th>{trans "action"}</th>
|
||||
</tr>
|
||||
{if count($servers) == 0}
|
||||
<tr>
|
||||
<td colspan="3" align="center">{trans 'No monotone servers configured.'}</td>
|
||||
</tr>
|
||||
{else}
|
||||
{foreach $servers as $server}
|
||||
<tr>
|
||||
<td>{$server.name}</td>
|
||||
<td>{$server.status}</td>
|
||||
<td>
|
||||
{if preg_match("/ACTIVE|WAITING|RUNNING|SLEEPING/", $server.status)}
|
||||
<a href="{url 'IDF_Views_Admin::usherServerControl', array($server.name, 'stop')}">
|
||||
{trans 'stop'}</a>
|
||||
{elseif $server.status == "STOPPED"}
|
||||
<a href="{url 'IDF_Views_Admin::usherServerControl', array($server.name, 'start')}">
|
||||
{trans 'start'}</a>
|
||||
{/if}
|
||||
{if preg_match("/ACTIVE|WAITING|SLEEPING|STOPPING/", $server.status)}
|
||||
| <a href="{url 'IDF_Views_Admin::usherServerControl', array($server.name, 'kill')}">
|
||||
{trans 'kill'}</a>
|
||||
{/if}
|
||||
{if preg_match("/STOPPING|ACTIVE/", $server.status)}
|
||||
| <a href="{url 'IDF_Views_Admin::usherServerConnections', array($server.name)}">
|
||||
{trans 'active connections'}</a>
|
||||
{/if}
|
||||
</tr>
|
||||
{/foreach}
|
||||
{/if}
|
||||
</table>
|
||||
{/block}
|
||||
|
||||
{block context}
|
||||
<div class="issue-submit-info">
|
||||
<p><strong>{trans 'Status explanation'}</strong></p>
|
||||
<ul>
|
||||
<li>REMOTE: {trans 'remote server without open connections'}</li>
|
||||
<li>ACTIVE n: {trans 'server with n open connections'}</li>
|
||||
<li>WAITING: {trans 'local server running, without open connections'}</li>
|
||||
<li>SLEEPING: {trans 'local server not running, waiting for connections'}</li>
|
||||
<li>STOPPING n: {trans 'local server is about to stop, n connections still open'}</li>
|
||||
<li>STOPPED: {trans 'local server not running, not accepting connections'}</li>
|
||||
<li>SHUTDOWN: {trans 'usher is shut down, not running and not accepting connections'}</li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
{/block}
|
||||
|
9
indefero/src/IDF/templates/idf/index.atom
Normal file
9
indefero/src/IDF/templates/idf/index.atom
Normal file
@@ -0,0 +1,9 @@
|
||||
<feed xmlns="http://www.w3.org/2005/Atom">
|
||||
<title>{$title}, {$project} - {$project.shortdesc}</title>
|
||||
{if !$user.isAnonymous()} <subtitle>{blocktrans}Personal project feed for {$user}.{/blocktrans}</subtitle>{/if}
|
||||
<link href="{$feedurl}" rel="self"/>
|
||||
<link href="{$viewurl}"/>
|
||||
<id>{$feedurl}</id>
|
||||
<updated>{$date}</updated>
|
||||
{$body}
|
||||
</feed>
|
18
indefero/src/IDF/templates/idf/index.html
Normal file
18
indefero/src/IDF/templates/idf/index.html
Normal file
@@ -0,0 +1,18 @@
|
||||
{extends "idf/base-simple.html"}
|
||||
{block docclass}yui-t7{/block}
|
||||
{block tabhome} class="active"{/block}
|
||||
{block subtabs}
|
||||
<a href="{url 'IDF_Views::index'}" class="active">{trans 'Home'}</a> |
|
||||
<a href="{url 'IDF_Views::listProjects', array('all', 'name')}" class="active">{trans 'Projects'}</a>
|
||||
{/block}
|
||||
{block body}
|
||||
<div class="forge-page">
|
||||
{markdown_forge $content, $request}
|
||||
</div>
|
||||
{/block}
|
||||
|
||||
{block context}{/block}
|
||||
|
||||
{block foot}<div id="branding">Powered by <a href="http://www.indefero.net" title="InDefero, bug tracking and more">InDefero</a>,
|
||||
<br />a <a href="http://www.ceondo.com">Céondo Ltd</a> initiative.<br />
|
||||
srchub.org is ran by <br /><a href="mailto:adamsna[at]datanethost.net">Nathan Adams</a>.</div>{/block}
|
26
indefero/src/IDF/templates/idf/issues/attachment.html
Normal file
26
indefero/src/IDF/templates/idf/issues/attachment.html
Normal file
@@ -0,0 +1,26 @@
|
||||
{extends "idf/issues/base.html"}
|
||||
{block extraheader}<link rel="stylesheet" type="text/css" href="{media '/idf/css/prettify.css'}" />{/block}
|
||||
{block docclass}yui-t2{assign $inIssue=true}{/block}
|
||||
{block body}
|
||||
<table class="code" summary=" ">
|
||||
<tbody>
|
||||
{$file}
|
||||
</tbody>
|
||||
</table>
|
||||
{aurl 'url', 'IDF_Views_Issue::getAttachment', array($project.shortname, $attachment.id, $attachment.filename)}
|
||||
<p class="right soft"><a href="{$url}"><img style="vertical-align: text-bottom;" src="{media '/idf/img/package-grey.png'}" alt="{trans 'Archive'}" align="bottom" /></a> <a href="{$url}">{trans 'Download this file'}</a></p>
|
||||
|
||||
{/block}
|
||||
{block context}
|
||||
{aurl 'url', 'IDF_Views_Issue::view', array($project.shortname, $issue.id)}
|
||||
{assign $url = $url~'#ic'~$comment.id}
|
||||
<p>{blocktrans}Attachment to issue <a href="{$url}">{$issue.id}</a>{/blocktrans}</p>
|
||||
{ashowuser 'submitter', $attachment.get_submitter(), $request}
|
||||
<p><strong>{trans 'Created:'}</strong> <span class="nobrk">{$attachment.creation_dtime|dateago}</span> <span class="nobrk">{blocktrans}by {$submitter}{/blocktrans}</span></p>
|
||||
|
||||
{/block}
|
||||
|
||||
{block javascript}
|
||||
<script type="text/javascript" src="{media '/idf/js/prettify.js'}"></script>
|
||||
<script type="text/javascript">prettyPrint();</script>
|
||||
{/block}
|
22
indefero/src/IDF/templates/idf/issues/base.html
Normal file
22
indefero/src/IDF/templates/idf/issues/base.html
Normal file
@@ -0,0 +1,22 @@
|
||||
{extends "idf/base.html"}
|
||||
{block tabissues} class="active"{/block}
|
||||
{block subtabs}
|
||||
<div id="sub-tabs">
|
||||
<a {if $inSummaryIssues}class="active" {/if}href="{url 'IDF_Views_Issue::summary', array($project.shortname)}">{trans 'Summary'}</a>
|
||||
| <a {if $inAllIssues}class="active" {/if}href="{url 'IDF_Views_Issue::index', array($project.shortname)}">{trans 'All Issues'}</a>
|
||||
{if !$user.isAnonymous()}
|
||||
| <a {if $inMyIssues}class="active" {/if}href="{url 'IDF_Views_Issue::userIssues', array($project.shortname, $user.login, 'submit')}">{trans 'My Issues'}</a>
|
||||
| <a {if $inWatchList}class="active" {/if}href="{url 'IDF_Views_Issue::watchList', array($project.shortname, 'open')}">{trans 'My watch list'}</a>
|
||||
| <a {if $inCreate}class="active" {/if}href="{url 'IDF_Views_Issue::create', array($project.shortname)}">{trans 'New Issue'}</a>
|
||||
{/if}
|
||||
| <form class="star" action="{url 'IDF_Views_Issue::search', array($project.shortname)}" method="get">
|
||||
<input accesskey="4" type="text" value="{$query}" name="q" size="20" />
|
||||
<input type="submit" name="s" value="{trans 'Search'}" />
|
||||
</form>
|
||||
{if $inIssue} |
|
||||
{aurl 'url', 'IDF_Views_Issue::view', array($project.shortname, $issue.id)}
|
||||
<a href="{$url}">{trans 'Back to the issue'}</a>
|
||||
{/if}
|
||||
{superblock}
|
||||
</div>
|
||||
{/block}
|
22
indefero/src/IDF/templates/idf/issues/by-label.html
Normal file
22
indefero/src/IDF/templates/idf/issues/by-label.html
Normal file
@@ -0,0 +1,22 @@
|
||||
{extends "idf/issues/base.html"}
|
||||
{block docclass}yui-t1{assign $inAllIssues=true}{/block}
|
||||
{block body}
|
||||
{$issues.render}
|
||||
{if !$user.isAnonymous()}
|
||||
{aurl 'url', 'IDF_Views_Issue::create', array($project.shortname)}
|
||||
<p><a href="{$url}"><img style="vertical-align: text-bottom;" src="{media '/idf/img/add.png'}" alt="+" align="bottom" /></a> <a href="{$url}">{trans 'New Issue'}</a></p>{/if}
|
||||
|
||||
{/block}
|
||||
{block context}
|
||||
{aurl 'open_url', 'IDF_Views_Issue::listLabel', array($project.shortname, $label.id, 'open')}
|
||||
{aurl 'closed_url', 'IDF_Views_Issue::listLabel', array($project.shortname, $label.id, 'closed')}
|
||||
{blocktrans}<p><strong>Open issues:</strong> <a href="{$open_url}">{$open}</a></p>
|
||||
<p><strong>Closed issues:</strong> <a href="{$closed_url}">{$closed}</a></p>
|
||||
{/blocktrans}
|
||||
<p><strong>{trans 'Label:'}</strong>
|
||||
{aurl 'url', 'IDF_Views_Issue::listLabel', array($project.shortname, $label.id, 'open')}
|
||||
<a href="{$url}" class="label"><strong>{$label.class}:</strong>{$label.name}</a></p>
|
||||
{if $completion}
|
||||
<p><strong>{trans 'Completion:'}</strong> {$completion}</p>
|
||||
{/if}
|
||||
{/block}
|
145
indefero/src/IDF/templates/idf/issues/create.html
Normal file
145
indefero/src/IDF/templates/idf/issues/create.html
Normal file
@@ -0,0 +1,145 @@
|
||||
{extends "idf/issues/base.html"}
|
||||
{block docclass}yui-t3{assign $inCreate = true}{/block}
|
||||
{block body}
|
||||
{if $form.errors}
|
||||
<div class="px-message-error">
|
||||
<p>{trans 'The form contains some errors. Please correct them to submit the issue.'}</p>
|
||||
{if $form.get_top_errors}
|
||||
{$form.render_top_errors|unsafe}
|
||||
{/if}
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
{if $preview}
|
||||
<h2 id="preview" class="top">{trans 'Preview'}</h2>
|
||||
<div class="issue-comment issue-comment-first issue-comment-last">
|
||||
<br /><pre class="issue-comment-text">{issuetext $preview, $request}</pre>
|
||||
</div>
|
||||
<hr />
|
||||
{/if}
|
||||
|
||||
<form method="post" enctype="multipart/form-data" action="{url 'IDF_Views_Issue::create', array($project.shortname)}#preview" >
|
||||
<table class="form" summary="">
|
||||
<tr>
|
||||
<th><strong>{$form.f.summary.labelTag}:</strong></th>
|
||||
<td>{if $form.f.summary.errors}{$form.f.summary.fieldErrors}{/if}
|
||||
{$form.f.summary|unsafe}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><strong>{$form.f.content.labelTag}:</strong></th>
|
||||
<td>{if $form.f.content.errors}{$form.f.content.fieldErrors}{/if}
|
||||
{$form.f.content|unsafe}
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="form-attachment-1">
|
||||
<th>{$form.f.attachment1.labelTag}:</th>
|
||||
<td>{if $form.f.attachment1.errors}{$form.f.attachment1.fieldErrors}{/if}
|
||||
{$form.f.attachment1|unsafe}
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="form-attachment-2">
|
||||
<th>{$form.f.attachment2.labelTag}:</th>
|
||||
<td>{if $form.f.attachment2.errors}{$form.f.attachment2.fieldErrors}{/if}
|
||||
{$form.f.attachment2|unsafe}
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="form-attachment-3">
|
||||
<th>{$form.f.attachment3.labelTag}:</th>
|
||||
<td>{if $form.f.attachment3.errors}{$form.f.attachment3.fieldErrors}{/if}
|
||||
{$form.f.attachment3|unsafe}
|
||||
</td>
|
||||
</tr>{if $isOwner or $isMember}
|
||||
<tr>
|
||||
<th><strong>{$form.f.status.labelTag}:</strong></th>
|
||||
<td>{if $form.f.status.errors}{$form.f.status.fieldErrors}{/if}
|
||||
{$form.f.status|unsafe}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{$form.f.owner.labelTag}:</th>
|
||||
<td>{if $form.f.owner.errors}{$form.f.owner.fieldErrors}{/if}
|
||||
{$form.f.owner|unsafe}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{$form.f.relation_type0.labelTag}:</th>
|
||||
<td>
|
||||
{if $form.f.relation_type0.errors}{$form.f.relation_type0.fieldErrors}{/if}
|
||||
{if $form.f.relation_issue0.errors}{$form.f.relation_issue0.fieldErrors}{/if}
|
||||
{$form.f.relation_type0|unsafe}
|
||||
{$form.f.relation_issue0|unsafe}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{$form.f.label1.labelTag}:</th>
|
||||
<td>
|
||||
{if $form.f.label1.errors}{$form.f.label1.fieldErrors}{/if}{$form.f.label1|unsafe}
|
||||
{if $form.f.label2.errors}{$form.f.label2.fieldErrors}{/if}{$form.f.label2|unsafe}
|
||||
{if $form.f.label3.errors}{$form.f.label3.fieldErrors}{/if}{$form.f.label3|unsafe}<br />
|
||||
{if $form.f.label4.errors}{$form.f.label4.fieldErrors}{/if}{$form.f.label4|unsafe}
|
||||
{if $form.f.label5.errors}{$form.f.label5.fieldErrors}{/if}{$form.f.label5|unsafe}
|
||||
{if $form.f.label6.errors}{$form.f.label6.fieldErrors}{/if}{$form.f.label6|unsafe}
|
||||
</td>
|
||||
</tr>{/if}
|
||||
<tr>
|
||||
<td> </td>
|
||||
<td>
|
||||
<input type="submit" value="{trans 'Submit Issue'}" name="submit" />
|
||||
<input type="submit" value="{trans 'Preview'}" name="preview" /> |
|
||||
<a href="{url 'IDF_Views_Issue::index', array($project.shortname)}">{trans 'Cancel'}</a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
{/block}
|
||||
{block context}
|
||||
<div class="issue-submit-info">
|
||||
{blocktrans}<p>When you submit the issue do not forget to provide the following information:</p>
|
||||
<ul>
|
||||
<li>The steps to reproduce the problem.</li>
|
||||
<li>The version of the software and your operating system.</li>
|
||||
<li>Any information that can help the developers to solve the issue.</li>
|
||||
<li><strong>Do not provide any password or confidential information!</strong></li>
|
||||
</ul>{/blocktrans}
|
||||
</div>
|
||||
{/block}
|
||||
{block javascript}
|
||||
<script type="text/javascript">
|
||||
document.getElementById('id_summary').focus();{literal}
|
||||
$(document).ready(function(){
|
||||
|
||||
// Hide the upload forms, we insert before the first attach file
|
||||
// row an "Attach File" little link.
|
||||
// We hide all the rows.
|
||||
$("#form-attachment-1").before("{/literal}<tr id=\"form-block-0\"><td> </td><td><img style=\"vertical-align: text-bottom;\" src=\"{media '/idf/img/attachment.png'}\" alt=\" \" align=\"bottom\" /><a id=\"form-show-0\" href=\"#\">{trans 'Attach file'}{literal}</a></td></tr>");
|
||||
$("#form-show-0").click(function(){
|
||||
$("#form-attachment-1").show();
|
||||
$("#form-block-0").hide();
|
||||
return false;
|
||||
});
|
||||
$("#form-attachment-1 td").append("<span id=\"form-block-1\"><a id=\"form-show-1\" href=\"#\">{/literal}{trans 'Attach another file'}{literal}</a></span>");
|
||||
$("#form-show-1").click(function(){
|
||||
$("#form-attachment-2").show();
|
||||
$("#form-block-1").hide();
|
||||
return false;
|
||||
});
|
||||
$("#form-attachment-2 td").append("<span id=\"form-block-2\"><a id=\"form-show-2\" href=\"#\">{/literal}{trans 'Attach another file'}{literal}</a></span>");
|
||||
$("#form-show-2").click(function(){
|
||||
$("#form-attachment-3").show();
|
||||
$("#form-block-2").hide();
|
||||
return false;
|
||||
});
|
||||
var j=0;
|
||||
for (j=1;j<4;j=j+1) {
|
||||
if($("tr#form-attachment-"+j+" > td > ul.errorlist").length == 0){
|
||||
$("#form-attachment-"+j).hide();
|
||||
}else{
|
||||
$("#form-block-"+(j-1)).remove();
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
{/literal}
|
||||
{include 'idf/issues/js-autocomplete.html'}{/block}
|
||||
|
31
indefero/src/IDF/templates/idf/issues/feedfragment.xml
Normal file
31
indefero/src/IDF/templates/idf/issues/feedfragment.xml
Normal file
@@ -0,0 +1,31 @@
|
||||
<entry>
|
||||
<title>{$title} - {$issue.get_status}</title>
|
||||
<link href="{$url}"/>
|
||||
<id>{$url}</id>
|
||||
<updated>{$date}</updated>
|
||||
<author>{$author}</author>
|
||||
<content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
|
||||
<pre>{issuetext $c.content, $request}</pre>
|
||||
{assign $attachments = $c.get_attachment_list()}
|
||||
{if $attachments.count() > 0}
|
||||
<hr align="left" class="attach" />
|
||||
<ul>
|
||||
{foreach $attachments as $a}<li><a href="{url 'IDF_Views_Issue::viewAttachment', array($project.shortname, $a.id, $a.filename)}">{$a.filename}</a> - {$a.filesize|ssize}</li>{/foreach}
|
||||
</ul>{/if}
|
||||
{if $c.changes}
|
||||
{foreach $c.changes as $w => $v}
|
||||
<strong>{if $w == 'su'}{trans 'Summary:'}{/if}{if $w == 'st'}{trans 'Status:'}{/if}{if $w == 'ow'}{trans 'Owner:'}{/if}{if $w == 'lb'}{trans 'Labels:'}{/if}{if $w == 'rel'}{trans 'Relations:'}{/if}</strong>
|
||||
{if $w == 'lb' or $w == 'rel'}
|
||||
{foreach $v as $t => $ls}
|
||||
{foreach $ls as $l}
|
||||
{if $t == 'rem'}<s>{/if}{$l}{if $t == 'rem'}</s>{/if}
|
||||
{/foreach}
|
||||
{/foreach}
|
||||
{else}
|
||||
{$v}
|
||||
{/if}<br />
|
||||
{/foreach}
|
||||
{/if}
|
||||
</div></content>
|
||||
</entry>
|
||||
|
12
indefero/src/IDF/templates/idf/issues/forge-watchlist.html
Normal file
12
indefero/src/IDF/templates/idf/issues/forge-watchlist.html
Normal file
@@ -0,0 +1,12 @@
|
||||
{extends "idf/base-simple.html"}
|
||||
|
||||
{block body}
|
||||
{$issues.render}
|
||||
{/block}
|
||||
|
||||
{block context}
|
||||
{aurl 'open_url', 'IDF_Views_Issue::forgeWatchList', array('open')}
|
||||
{aurl 'closed_url', 'IDF_Views_Issue::forgeWatchList', array('closed')}
|
||||
{blocktrans}<p><strong>Open issues:</strong> <a href="{$open_url}">{$open}</a></p>
|
||||
<p><strong>Closed issues:</strong> <a href="{$closed_url}">{$closed}</a></p>{/blocktrans}
|
||||
{/block}
|
17
indefero/src/IDF/templates/idf/issues/index.html
Normal file
17
indefero/src/IDF/templates/idf/issues/index.html
Normal file
@@ -0,0 +1,17 @@
|
||||
{extends "idf/issues/base.html"}
|
||||
{block docclass}yui-t2{assign $inAllIssues=true}{/block}
|
||||
{block body}
|
||||
{$issues.render}
|
||||
{if !$user.isAnonymous()}
|
||||
{aurl 'url', 'IDF_Views_Issue::create', array($project.shortname)}
|
||||
<p><a href="{$url}"><img style="vertical-align: text-bottom;" src="{media '/idf/img/add.png'}" alt="+" align="bottom" /></a> <a href="{$url}">{trans 'New Issue'}</a></p>{/if}
|
||||
|
||||
{/block}
|
||||
{block context}
|
||||
{aurl 'open_url', 'IDF_Views_Issue::index', array($project.shortname)}
|
||||
{aurl 'closed_url', 'IDF_Views_Issue::listStatus', array($project.shortname, 'closed')}
|
||||
{blocktrans}<p><strong>Open issues:</strong> <a href="{$open_url}">{$open}</a></p>
|
||||
<p><strong>Closed issues:</strong> <a href="{$closed_url}">{$closed}</a></p>{/blocktrans}
|
||||
{assign $cloud_url = 'IDF_Views_Issue::listLabel'}
|
||||
{include 'idf/tags-cloud.html'}
|
||||
{/block}
|
@@ -0,0 +1,21 @@
|
||||
{trans 'Hello,'}
|
||||
|
||||
{if $owns_issue}{blocktrans}A new issue has been created and assigned to you:{/blocktrans}{else}{blocktrans}A new issue has been created:{/blocktrans}{/if}
|
||||
|
||||
{$issue.id} - {$issue.summary|safe}
|
||||
{trans 'Project:'} {$project.name|safe}
|
||||
{trans 'Status:'} {$issue.get_status.name|safe}
|
||||
{trans 'Reported by:'} {$issue.get_submitter|safe}
|
||||
{assign $tags = $issue.get_tags_list()}{if $tags.count()}{trans 'Labels:'}
|
||||
{foreach $tags as $tag} {$tag.class|safe}:{$tag.name|safe}
|
||||
{/foreach}{/if}
|
||||
{trans 'Description:'}
|
||||
|
||||
{$comment.content|safe}{assign $attachments = $comment.get_attachment_list()}
|
||||
{if $attachments.count() > 0}
|
||||
{trans 'Attachments:'}{foreach $attachments as $a}
|
||||
- {$a.filename|safe} - {$a.filesize|ssize}
|
||||
{$url_base}{url 'IDF_Views_Issue::viewAttachment', array($project.shortname, $a.id, $a.filename)}{/foreach}
|
||||
{/if}
|
||||
--
|
||||
{trans 'Issue:'} {$url_base}{url 'IDF_Views_Issue::view', array($project.shortname, $issue.id)}
|
@@ -0,0 +1,29 @@
|
||||
{trans 'Hello,'}
|
||||
|
||||
{if $owns_issue}{blocktrans}The following issue you are owning has been updated:{/blocktrans}{else}{blocktrans}The following issue has been updated:{/blocktrans}{/if}
|
||||
|
||||
{$issue.id} - {$issue.summary|safe}
|
||||
{trans 'Project:'} {$project.name|safe}
|
||||
{trans 'Status:'} {$issue.get_status.name}
|
||||
{trans 'Reported by:'} {$issue.get_submitter|safe}
|
||||
{trans 'URL:'} {$url_base}{url 'IDF_Views_Issue::view', array($project.shortname, $issue.id)}
|
||||
{assign $tags = $issue.get_tags_list()}{if $tags.count()}{trans 'Labels:'}
|
||||
{foreach $tags as $tag} {$tag.class|safe}:{$tag.name|safe}
|
||||
{/foreach}
|
||||
{/if}{trans 'Comments (last first):'}
|
||||
|
||||
{foreach $comments as $c}{assign $who = $c.get_submitter()}# {blocktrans}By {$who|safe}, {$c.creation_dtime|date}:{/blocktrans}
|
||||
|
||||
{if strlen($c.content) > 0}{$c.content|safe}{/if}{if $c.changedIssue()}
|
||||
{foreach $c.changes as $w => $v}
|
||||
{if $w == 'su'}{trans 'Summary:'}{/if}{if $w == 'st'}{trans 'Status:'}{/if}{if $w == 'ow'}{trans 'Owner:'}{/if}{if $w == 'lb'}{trans 'Labels:'}{/if}{if $w == 'rel'}{trans 'Relations:'}{/if} {if $w == 'lb' or $w == 'rel'}{foreach $v as $t => $ls}{foreach $ls as $l}{if $t == 'rem'}-{/if}{$l} {/foreach}{/foreach}{else}{$v}{/if}{/foreach}{/if}{assign $attachments = $c.get_attachment_list()}{if $attachments.count() > 0}
|
||||
|
||||
{trans 'Attachments:'}{foreach $attachments as $a}
|
||||
- {$a.filename|safe} - {$a.filesize|ssize}
|
||||
{$url_base}{url 'IDF_Views_Issue::viewAttachment', array($project.shortname, $a.id, $a.filename)}{/foreach}
|
||||
{/if}
|
||||
|
||||
{/foreach}
|
||||
|
||||
--
|
||||
{trans 'Issue:'} {$url_base}{url 'IDF_Views_Issue::view', array($project.shortname, $issue.id)}
|
96
indefero/src/IDF/templates/idf/issues/js-autocomplete.html
Normal file
96
indefero/src/IDF/templates/idf/issues/js-autocomplete.html
Normal file
@@ -0,0 +1,96 @@
|
||||
{if $isOwner or $isMember}
|
||||
<script type="text/javascript" src="{media '/idf/js/jquery.bgiframe.min.js'}"></script>
|
||||
<script type="text/javascript" src="{media '/idf/js/jquery.autocomplete.min.js'}"></script>
|
||||
<script type="text/javascript" charset="utf-8">
|
||||
// <!-- {literal}
|
||||
$(document).ready(function(){
|
||||
var auto_labels = [{/literal}{$auto_labels|safe}{literal}];
|
||||
var auto_status = [{/literal}{$auto_status|safe}{literal}];
|
||||
var auto_owner = [{/literal}{$auto_owner|safe}{literal}];
|
||||
var auto_relation_types = [{/literal}{$auto_relation_types|safe}{literal}];
|
||||
|
||||
var j=0;
|
||||
for (j=1;j<7;j=j+1) {
|
||||
$("#id_label"+j).autocomplete(auto_labels, {
|
||||
minChars: 0,
|
||||
width: 310,
|
||||
matchContains: true,
|
||||
max: 50,
|
||||
highlightItem: false,
|
||||
formatItem: function(row, i, max, term) {
|
||||
return row.to.replace(new RegExp("(" + term + ")", "gi"), "<strong>$1</strong>") + " <span style='font-size: 80%;'>" + row.name + "</span>";
|
||||
},
|
||||
formatResult: function(row) {
|
||||
return row.to;
|
||||
}
|
||||
});
|
||||
}
|
||||
$("#id_status").autocomplete(auto_status, {
|
||||
minChars: 0,
|
||||
width: 310,
|
||||
matchContains: true,
|
||||
max: 50,
|
||||
highlightItem: false,
|
||||
formatItem: function(row, i, max, term) {
|
||||
return row.to.replace(new RegExp("(" + term + ")", "gi"), "<strong>$1</strong>") + " <span style='font-size: 80%;'>" + row.name + "</span>";
|
||||
},
|
||||
formatResult: function(row) {
|
||||
return row.to;
|
||||
}
|
||||
});
|
||||
$("#id_owner").autocomplete(auto_owner, {
|
||||
minChars: 0,
|
||||
width: 310,
|
||||
matchContains: true,
|
||||
max: 50,
|
||||
highlightItem: false,
|
||||
formatItem: function(row, i, max, term) {
|
||||
return row.to.replace(new RegExp("(" + term + ")", "gi"), "<strong>$1</strong>") + " <span style='font-size: 80%;'>" + row.name + "</span>";
|
||||
},
|
||||
formatResult: function(row) {
|
||||
return row.to;
|
||||
}
|
||||
});
|
||||
for (var idx = 0; ; ++idx) {
|
||||
if ($("#id_relation_type" + idx).length == 0)
|
||||
break;
|
||||
|
||||
$("#id_relation_type" + idx).autocomplete(auto_relation_types, {
|
||||
minChars: 0,
|
||||
width: 310,
|
||||
matchContains: true,
|
||||
max: 50,
|
||||
highlightItem: false,
|
||||
formatItem: function(row, i, max, term) {
|
||||
return row.to.replace(new RegExp("(" + term + ")", "gi"), "<strong>$1</strong>") + " <span style='font-size: 80%;'>" + row.name + "</span>";
|
||||
},
|
||||
formatResult: function(row) {
|
||||
return row.to;
|
||||
}
|
||||
});
|
||||
{/literal}
|
||||
{if $issue}
|
||||
{literal}
|
||||
$("#id_relation_issue" + idx).autocomplete("{/literal}{url 'IDF_Views_Issue::autoCompleteIssueList', array($project.shortname, $issue.id)}{literal}", {
|
||||
minChars: 0,
|
||||
width: 310,
|
||||
matchContains: true,
|
||||
max: 10,
|
||||
multiple: true,
|
||||
delay: 500,
|
||||
highlightItem: false,
|
||||
formatItem: function(row, i, max, term) {
|
||||
return row[1].replace(new RegExp("(" + term + ")", "gi"), "<strong>$1</strong>") + " <span style='font-size: 80%;'>" + row[0] + "</span>";
|
||||
},
|
||||
formatResult: function(row) {
|
||||
return row[1];
|
||||
}
|
||||
});
|
||||
{/literal}
|
||||
{/if}
|
||||
{literal}
|
||||
}
|
||||
});
|
||||
{/literal} //-->
|
||||
</script>
|
||||
{/if}
|
17
indefero/src/IDF/templates/idf/issues/project-watchlist.html
Normal file
17
indefero/src/IDF/templates/idf/issues/project-watchlist.html
Normal file
@@ -0,0 +1,17 @@
|
||||
{extends "idf/issues/base.html"}
|
||||
|
||||
{block docclass}yui-t2{assign $inWatchList = true}{/block}
|
||||
|
||||
{block body}
|
||||
{$issues.render}
|
||||
{if !$user.isAnonymous()}
|
||||
{aurl 'url', 'IDF_Views_Issue::create', array($project.shortname)}
|
||||
<p><a href="{$url}"><img style="vertical-align: text-bottom;" src="{media '/idf/img/add.png'}" alt="+" align="bottom" /></a> <a href="{$url}">{trans 'New Issue'}</a></p>{/if}
|
||||
{/block}
|
||||
|
||||
{block context}
|
||||
{aurl 'open_url', 'IDF_Views_Issue::watchList', array($project.shortname, 'open')}
|
||||
{aurl 'closed_url', 'IDF_Views_Issue::watchList', array($project.shortname, 'closed')}
|
||||
{blocktrans}<p><strong>Open issues:</strong> <a href="{$open_url}">{$open}</a></p>
|
||||
<p><strong>Closed issues:</strong> <a href="{$closed_url}">{$closed}</a></p>{/blocktrans}
|
||||
{/block}
|
32
indefero/src/IDF/templates/idf/issues/search.html
Normal file
32
indefero/src/IDF/templates/idf/issues/search.html
Normal file
@@ -0,0 +1,32 @@
|
||||
{extends "idf/issues/base.html"}
|
||||
{block docclass}yui-t2{/block}
|
||||
{block body}
|
||||
{$issues.render}
|
||||
{if !$user.isAnonymous()}
|
||||
{aurl 'url', 'IDF_Views_Issue::create', array($project.shortname)}
|
||||
<p><a href="{$url}"><img style="vertical-align: text-bottom;" src="{media '/idf/img/add.png'}" alt="+" align="bottom" /></a> <a href="{$url}">{trans 'New Issue'}</a></p>{/if}
|
||||
|
||||
{/block}
|
||||
{block context}
|
||||
{aurl 'open_url', 'IDF_Views_Issue::searchStatus', array($project.shortname, 'open'), array('q' => $query)}
|
||||
{aurl 'closed_url', 'IDF_Views_Issue::searchStatus', array($project.shortname, 'closed'), array('q' => $query)}
|
||||
{if $tag != null}
|
||||
{aurl 'open_url', 'IDF_Views_Issue::searchLabel', array($project.shortname, $tag.id, 'open'), array('q' => $query)}
|
||||
{aurl 'closed_url', 'IDF_Views_Issue::searchLabel', array($project.shortname, $tag.id, 'closed'), array('q' => $query)}
|
||||
{/if}
|
||||
{blocktrans}
|
||||
<p><strong>Found open issues:</strong> <a href="{$open_url}">{$open}</a></p>
|
||||
<p><strong>Found closed issues:</strong> <a href="{$closed_url}">{$closed}</a></p>{/blocktrans}
|
||||
{if $tag !== null}
|
||||
{blocktrans}<p><strong>Label:</strong>
|
||||
<a href="{$open_url}" class="label"><strong>{$tag.class}:</strong>{$tag.name}</a></p>{/blocktrans}
|
||||
{else}
|
||||
{* yes, this is duplicated from tags-cloud.html, but the code there cannot be easily overridden *}
|
||||
<dl class="tagscloud smaller">{foreach $all_tags as $class => $labels}
|
||||
<dt class="label">{$class}</dt>
|
||||
{foreach $labels as $idx => $label}
|
||||
{aurl 'url', 'IDF_Views_Issue::searchLabel', array($project.shortname, $label.id, $status), array('q'=> $query)}
|
||||
<dd><a href="{$url}" class="label">{$label.name}{if $idx != count($labels) - 1},{/if}</a></dd>
|
||||
{/foreach}{/foreach}</dl>
|
||||
{/if}
|
||||
{/block}
|
108
indefero/src/IDF/templates/idf/issues/summary.html
Normal file
108
indefero/src/IDF/templates/idf/issues/summary.html
Normal file
@@ -0,0 +1,108 @@
|
||||
{extends "idf/issues/base.html"}
|
||||
|
||||
{block docclass}yui-t2{assign $inSummaryIssues=true}{/block}
|
||||
|
||||
{block context}
|
||||
<p><a>
|
||||
<p><a href="{url 'IDF_Views_Issue::index', array($project.shortname)}">{blocktrans}View all open issues.{/blocktrans}</a></p>
|
||||
{if !$user.isAnonymous()}
|
||||
<p><a href="{url 'IDF_Views_Issue::create', array($project.shortname)}">{blocktrans}Create an issue.{/blocktrans}</a></p>
|
||||
{/if}
|
||||
{/block}
|
||||
|
||||
{block body}
|
||||
{if $trackerEmpty}
|
||||
{aurl 'create_url', 'IDF_Views_Issue::create', array($project.shortname)}
|
||||
<p>{blocktrans}The issue tracker is empty.<br /><a href="{$create_url}">Create your first issue</a>.{/blocktrans}</p>
|
||||
{else}
|
||||
<div class='issue-summary'>
|
||||
{foreach $tagStatistics as $key => $class}
|
||||
<div>
|
||||
<h2>{blocktrans}Unresolved: By {$key}{/blocktrans}</h2>
|
||||
<table class='issue-summary'>
|
||||
<tbody>
|
||||
{foreach $class as $key => $value}
|
||||
<tr>
|
||||
<td class="name"><a href="{url 'IDF_Views_Issue::listLabel', array($project.shortname, $value[2], 'open')}">{$key}</a></td>
|
||||
<td class="count">{$value[0]}</td>
|
||||
<td class="graph">
|
||||
<table class='graph'>
|
||||
<tbody><tr>
|
||||
<td style="width:{$value[1] * 0.8 + 1}%" class="graph-color" valign="center">
|
||||
<div class="colour-bar"></div>
|
||||
</td>
|
||||
<td class="graph-percent">{$value[1]}%</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
{/foreach}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
{/foreach}
|
||||
</div>
|
||||
|
||||
<div class='issue-summary'>
|
||||
{if $status}
|
||||
<div>
|
||||
<h2>{blocktrans}Status Summary{/blocktrans}</h2>
|
||||
<table class='issue-summary'>
|
||||
<tbody>
|
||||
{foreach $status as $key => $value}
|
||||
<tr>
|
||||
<td class="name"><a href="{url 'IDF_Views_Issue::listStatus', array($project.shortname, $key)}">{$key}</a></td>
|
||||
<td class="count">{$value[0]}</td>
|
||||
<td class="graph">
|
||||
<table class='graph'>
|
||||
<tbody><tr>
|
||||
<td style="width:{$value[1] * 0.8 + 1}%" class="graph-color" valign="center">
|
||||
<div class="colour-bar"></div>
|
||||
</td>
|
||||
<td class="graph-percent">{$value[1]}%</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
{/foreach}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
{if $ownerStatistics}
|
||||
<div>
|
||||
<h2>{blocktrans}Unresolved: By Assignee{/blocktrans}</h2>
|
||||
<table class='issue-summary'>
|
||||
<tbody>
|
||||
{foreach $ownerStatistics as $key => $value}
|
||||
<tr>
|
||||
<td class="name">
|
||||
{if !empty($value[2])}
|
||||
{aurl 'url', 'IDF_Views_Issue::userIssues', array($project.shortname, $value[2], 'owner')}
|
||||
<a href="{$url}">{$key}</a>
|
||||
{else}{$key}{/if}
|
||||
</td>
|
||||
<td class="count">{$value[0]}</td>
|
||||
<td class="graph">
|
||||
<table class='graph'>
|
||||
<tbody><tr>
|
||||
<td style="width:{$value[1] * 0.8 + 1}%" class="graph-color" valign="center">
|
||||
<div class="colour-bar"></div>
|
||||
</td>
|
||||
<td class="graph-percent">{$value[1]}%</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
{/foreach}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
{/if}
|
||||
</div>
|
||||
{/if}
|
||||
{/block}
|
20
indefero/src/IDF/templates/idf/issues/userIssues.html
Normal file
20
indefero/src/IDF/templates/idf/issues/userIssues.html
Normal file
@@ -0,0 +1,20 @@
|
||||
{extends "idf/issues/base.html"}
|
||||
{block docclass}yui-t2{if $user.login == $login}{assign $inMyIssues = true}{/if}{/block}
|
||||
{block body}
|
||||
{$issues.render}
|
||||
{if !$user.isAnonymous()}
|
||||
{aurl 'url', 'IDF_Views_Issue::create', array($project.shortname)}
|
||||
<p><a href="{$url}"><img style="vertical-align: text-bottom;" src="{media '/idf/img/add.png'}" alt="+" align="bottom" /></a> <a href="{$url}">{trans 'New Issue'}</a></p>{/if}
|
||||
|
||||
{/block}
|
||||
{block context}
|
||||
{aurl 'owner_url', 'IDF_Views_Issue::userIssues', array($project.shortname, $login, 'owner')}
|
||||
{aurl 'submit_url', 'IDF_Views_Issue::userIssues', array($project.shortname, $login, 'submit')}
|
||||
{aurl 'owner_closed_url', 'IDF_Views_Issue::userIssues', array($project.shortname, $login, 'ownerclosed')}
|
||||
{aurl 'submit_closed_url', 'IDF_Views_Issue::userIssues', array($project.shortname, $login, 'submitclosed')}
|
||||
<p><strong>{trans 'Submitted issues:'}</strong> <a href="{$submit_url}">{$nb_submit}</a>
|
||||
{if $nb_submit_closed}<br /><span class="helptext">{blocktrans $nb_submit_closed}See the <a href="{$submit_closed_url}">{$nb_submit_closed} closed</a>.{plural}See the <a href="{$submit_closed_url}">{$nb_submit_closed} closed</a>.{/blocktrans}</span>{/if}</p>
|
||||
{if $nb_owner > 0}
|
||||
<p><strong>{trans 'Working issues:'}</strong> <a href="{$owner_url}">{$nb_owner}</a>
|
||||
{if $nb_owner_closed}<br /><span class="helptext">{blocktrans $nb_owner_closed}See the <a href="{$owner_closed_url}">{$nb_owner_closed} closed</a>.{plural}See the <a href="{$owner_closed_url}">{$nb_owner_closed} closed</a>.{/blocktrans}</span>{/if}</p>{/if}
|
||||
{/block}
|
240
indefero/src/IDF/templates/idf/issues/view.html
Normal file
240
indefero/src/IDF/templates/idf/issues/view.html
Normal file
@@ -0,0 +1,240 @@
|
||||
{extends "idf/issues/base.html"}
|
||||
{block titleicon}{if $form}<form class="star" method="post" action="{url 'IDF_Views_Issue::star', array($project.shortname, $issue.id)}"><input type="image" src="{if $starred}{media '/idf/img/star.png'}{else}{media '/idf/img/star-grey.png'}{/if}" name="submit" title="{if $starred}{trans 'Remove this issue from your watch list'}{else}{trans 'Add this issue to your watch list'}{/if}" /></form> {/if}{/block}
|
||||
{block body}
|
||||
<div class="issue-prev-next">
|
||||
{if $previous_issue_id}
|
||||
<a href="{url 'IDF_Views_Issue::view', array($project.shortname, $previous_issue_id)}" title="{if $closed}{trans 'View the previous closed issue'}{else}{trans 'View the previous open issue'}{/if}">Previous issue</a>
|
||||
{/if}
|
||||
{if $previous_issue_id and $next_issue_id} - {/if}
|
||||
{if $next_issue_id}
|
||||
<a href="{url 'IDF_Views_Issue::view', array($project.shortname, $next_issue_id)}" title="{if $closed}{trans 'View the next closed issue'}{else}{trans 'View the next open issue'}{/if}">Next issue</a>
|
||||
{/if}
|
||||
</div>
|
||||
{assign $i = 0}
|
||||
{assign $nc = $comments.count()}
|
||||
{foreach $comments as $c}{ashowuser 'submitter', $c.get_submitter(), $request}
|
||||
{assign $submitter = $c.get_submitter()}
|
||||
{assign $submitter_data = $c.get_submitter_data()}
|
||||
<div class="issue-comment{if $i == 0} issue-comment-first{/if}{if $i == ($nc-1)} issue-comment-last{/if}" id="ic{$c.id}">
|
||||
{if $submitter_data.avatar != ''}
|
||||
<img style="float:right; position: relative; max-height: 60px; max-width: 60px;" src="{upload}/avatars/{$submitter_data.avatar}" alt=" " />
|
||||
{else}
|
||||
<img style="float:right; position: relative; max-height: 60px; max-width: 60px;" src="http://www.gravatar.com/avatar/{$submitter.email|md5}.jpg?s=60&d={media}/idf/img/spacer.gif" alt=" " />
|
||||
{/if}
|
||||
{if $i == 0}
|
||||
<p>{blocktrans}Reported by {$submitter}, {$c.creation_dtime|date}{/blocktrans}</p>
|
||||
{else}
|
||||
{aurl 'url', 'IDF_Views_Issue::view', array($project.shortname, $issue.id)}
|
||||
{assign $id = $c.id}
|
||||
{assign $url = $url~'#ic'~$c.id}
|
||||
<p>{blocktrans}Comment <a href="{$url}">{$i}</a> by {$submitter}, {$c.creation_dtime|date}{/blocktrans}</p>
|
||||
{/if}
|
||||
|
||||
|
||||
{if strlen($c.content) > 0}<pre class="issue-comment-text">{issuetext $c.content, $request}</pre>{/if}
|
||||
{assign $attachments = $c.get_attachment_list()}
|
||||
{if $attachments.count() > 0}
|
||||
<hr align="left" class="attach" />
|
||||
<ul>
|
||||
{foreach $attachments as $a}<li><a href="{url 'IDF_Views_Issue::getAttachment', array($project.shortname, $a.id, $a.filename)}" title="{trans 'download'}">{$a.filename}</a> - {$a.filesize|size}{if $a.isText()} - <a href="{url 'IDF_Views_Issue::viewAttachment', array($project.shortname, $a.id, $a.filename)}">{trans 'view'}</a>{/if}</li>{/foreach}</ul>{/if}
|
||||
{if $i> 0 and $c.changedIssue()}
|
||||
<div class="issue-changes">
|
||||
{foreach $c.changes as $w => $v}
|
||||
<strong>{if $w == 'su'}{trans 'Summary:'}{/if}{if $w == 'st'}{trans 'Status:'}{/if}{if $w == 'ow'}{trans 'Owner:'}{/if}{if $w == 'lb'}{trans 'Labels:'}{/if}{if $w == 'rel'}{trans 'Relations:'}{/if}</strong>
|
||||
{if $w == 'lb' or $w == 'rel'}
|
||||
{foreach $v as $t => $ls}
|
||||
{foreach $ls as $l}
|
||||
{if $t == 'rem'}<s>{/if}{$l}{if $t == 'rem'}</s>{/if}
|
||||
{/foreach}
|
||||
{/foreach}
|
||||
{else}
|
||||
{$v}
|
||||
{/if}<br />
|
||||
{/foreach}
|
||||
</div>
|
||||
{/if}
|
||||
</div>{assign $i = $i + 1}{if $i == $nc and false == $form}
|
||||
<div class="issue-comment-signin">
|
||||
{aurl 'url', 'IDF_Views::login'}{blocktrans}<a href="{$url}">Sign in</a> to reply to this comment.{/blocktrans}
|
||||
</div>
|
||||
{/if}
|
||||
{/foreach}
|
||||
|
||||
{if $form}
|
||||
<hr />
|
||||
|
||||
{if $form.errors}
|
||||
<div class="px-message-error">
|
||||
<p>{trans 'The form contains some errors. Please correct them to change the issue.'}</p>
|
||||
{if $form.get_top_errors}
|
||||
{$form.render_top_errors|unsafe}
|
||||
{/if}
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
{if $closed and (!$isOwner and !$isMember)}
|
||||
<p><img src="{media '/idf/img/warning.png'}" style="vertical-align: text-bottom;" alt=" " /> {blocktrans}This issue is marked as closed, add a comment only if you think this issue is still valid and more work is needed to fully fix it.{/blocktrans}</p>
|
||||
{/if}
|
||||
|
||||
{if $preview}
|
||||
<h2 id="preview">{trans 'Preview'}</h2>
|
||||
<div class="issue-comment issue-comment-first issue-comment-last">
|
||||
<br /><pre class="issue-comment-text">{issuetext $preview, $request}</pre>
|
||||
</div>
|
||||
<hr />
|
||||
{/if}
|
||||
|
||||
<form method="post" enctype="multipart/form-data" action="{url 'IDF_Views_Issue::view', array($project.shortname, $issue.id)}" >
|
||||
<table class="form" summary="">
|
||||
<tr>
|
||||
<th><strong>{$form.f.content.labelTag}:</strong></th>
|
||||
<td>{if $form.f.content.errors}{$form.f.content.fieldErrors}{/if}
|
||||
{$form.f.content|unsafe}
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="form-attachment-1">
|
||||
<th>{$form.f.attachment1.labelTag}:</th>
|
||||
<td>{if $form.f.attachment1.errors}{$form.f.attachment1.fieldErrors}{/if}
|
||||
{$form.f.attachment1|unsafe}
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="form-attachment-2">
|
||||
<th>{$form.f.attachment2.labelTag}:</th>
|
||||
<td>{if $form.f.attachment2.errors}{$form.f.attachment2.fieldErrors}{/if}
|
||||
{$form.f.attachment2|unsafe}
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="form-attachment-3">
|
||||
<th>{$form.f.attachment3.labelTag}:</th>
|
||||
<td>{if $form.f.attachment3.errors}{$form.f.attachment3.fieldErrors}{/if}
|
||||
{$form.f.attachment3|unsafe}
|
||||
</td>
|
||||
</tr>{if $isOwner or $isMember}
|
||||
<tr>
|
||||
<th><strong>{$form.f.summary.labelTag}:</strong></th>
|
||||
<td>{if $form.f.summary.errors}{$form.f.summary.fieldErrors}{/if}
|
||||
{$form.f.summary|unsafe}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><strong>{$form.f.status.labelTag}:</strong></th>
|
||||
<td>{if $form.f.status.errors}{$form.f.status.fieldErrors}{/if}
|
||||
{$form.f.status|unsafe}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{$form.f.owner.labelTag}:</th>
|
||||
<td>{if $form.f.owner.errors}{$form.f.owner.fieldErrors}{/if}
|
||||
{$form.f.owner|unsafe}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{$form.f.relation_type0.labelTag}:</th>
|
||||
<td>
|
||||
{assign $prevField}
|
||||
{foreach $form as $field}
|
||||
{if strpos($field.name, 'relation_type') === 0}
|
||||
{$field|unsafe}
|
||||
{assign $prevField = $field}
|
||||
{/if}
|
||||
{if strpos($field.name, 'relation_issue') === 0}
|
||||
{$field|unsafe}<br />
|
||||
{if $prevField.errors}{$prevField.fieldErrors}{/if}
|
||||
{if $field.errors}{$field.fieldErrors}{/if}
|
||||
{/if}
|
||||
{/foreach}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{$form.f.label1.labelTag}:</th>
|
||||
<td>
|
||||
{if $form.f.label1.errors}{$form.f.label1.fieldErrors}{/if}{$form.f.label1|unsafe}
|
||||
{if $form.f.label2.errors}{$form.f.label2.fieldErrors}{/if}{$form.f.label2|unsafe}
|
||||
{if $form.f.label3.errors}{$form.f.label3.fieldErrors}{/if}{$form.f.label3|unsafe}<br />
|
||||
{if $form.f.label4.errors}{$form.f.label4.fieldErrors}{/if}{$form.f.label4|unsafe}
|
||||
{if $form.f.label5.errors}{$form.f.label5.fieldErrors}{/if}{$form.f.label5|unsafe}
|
||||
{if $form.f.label6.errors}{$form.f.label6.fieldErrors}{/if}{$form.f.label6|unsafe}
|
||||
</td>
|
||||
</tr>{/if}
|
||||
<tr>
|
||||
<td> </td>
|
||||
<td>
|
||||
<input type="submit" value="{trans 'Submit Changes'}" name="submit" />
|
||||
<input type="submit" value="{trans 'Preview'}" name="preview" /> |
|
||||
<a href="{url 'IDF_Views_Issue::view', array($project.shortname, $issue.id)}">{trans 'Cancel'}</a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
{/if}
|
||||
{/block}
|
||||
{block context}
|
||||
<div class="issue-info">
|
||||
{ashowuser 'submitter', $issue.get_submitter(), $request}
|
||||
<p><strong>{trans 'Created:'}</strong> <span class="nobrk">{$issue.creation_dtime|dateago}</span> <span class="nobrk">{blocktrans}by {$submitter}{/blocktrans}</span></p>
|
||||
{if $issue.modif_dtime != $issue.creation_dtime}<p>
|
||||
<strong>{trans 'Updated:'}</strong> <span class="nobrk">{$issue.modif_dtime|dateago}</span></p>{/if}
|
||||
<p>
|
||||
<strong>{trans 'Status:'}</strong> {$issue.get_status.name}</p>
|
||||
{if $issue.get_owner != null}<p>
|
||||
<strong>{trans 'Owner:'}</strong> {showuser $issue.get_owner(), $request}
|
||||
</p>{/if}
|
||||
{if $interested > 0}<p><strong>{trans 'Followed by:'}</strong> {blocktrans $interested}{$interested} person{plural}{$interested} persons{/blocktrans}</p>{/if}
|
||||
{assign $tags = $issue.get_tags_list()}{if $tags.count()}
|
||||
<p>
|
||||
<strong>{trans 'Labels:'}</strong><br />
|
||||
{foreach $tags as $tag}{aurl 'url', 'IDF_Views_Issue::listLabel', array($project.shortname, $tag.id, 'open')}
|
||||
<span class="label"><a href="{$url}" class="label"><strong>{$tag.class}:</strong>{$tag.name}</a></span><br />
|
||||
{/foreach}
|
||||
</p>{/if}
|
||||
{if count($related_issues) > 0}
|
||||
{foreach $related_issues as $verb => $rel_issues}
|
||||
<p>
|
||||
{assign $verb = __($verb)}
|
||||
<strong>{blocktrans}This issue {$verb}{/blocktrans}</strong><br />
|
||||
{foreach $rel_issues as $rel_issue}
|
||||
<span class="label">
|
||||
<a href="{url 'IDF_Views_Issue::view', array($project.shortname, $rel_issue.other_issue)}"
|
||||
class="label" title="{$rel_issue.other_summary}">
|
||||
<strong>{$rel_issue.other_issue}</strong> - {$rel_issue.other_summary|shorten:30}
|
||||
</a>
|
||||
</span><br />
|
||||
{/foreach}
|
||||
</p>
|
||||
{/foreach}
|
||||
{/if}
|
||||
</div>
|
||||
{/block}
|
||||
{block javascript}{if $form}{include 'idf/issues/js-autocomplete.html'}
|
||||
<script type="text/javascript">
|
||||
{literal}
|
||||
$(document).ready(function(){
|
||||
|
||||
// Hide the upload forms, we insert before the first attach file
|
||||
// row an "Attach File" little link.
|
||||
// We hide all the rows.
|
||||
$("#form-attachment-1").before("{/literal}<tr id=\"form-block-0\"><td> </td><td><img style=\"vertical-align: text-bottom;\" src=\"{media '/idf/img/attachment.png'}\" alt=\" \" align=\"bottom\" /><a id=\"form-show-0\" href=\"#\">{trans 'Attach file'}{literal}</a></td></tr>");
|
||||
$("#form-show-0").click(function(){
|
||||
$("#form-attachment-1").show();
|
||||
$("#form-block-0").hide();
|
||||
return false;
|
||||
});
|
||||
$("#form-attachment-1 td").append("<span id=\"form-block-1\"><a id=\"form-show-1\" href=\"#\">{/literal}{trans 'Attach another file'}{literal}</a></span>");
|
||||
$("#form-show-1").click(function(){
|
||||
$("#form-attachment-2").show();
|
||||
$("#form-block-1").hide();
|
||||
return false;
|
||||
});
|
||||
$("#form-attachment-2 td").append("<span id=\"form-block-2\"><a id=\"form-show-2\" href=\"#\">{/literal}{trans 'Attach another file'}{literal}</a></span>");
|
||||
$("#form-show-2").click(function(){
|
||||
$("#form-attachment-3").show();
|
||||
$("#form-block-2").hide();
|
||||
return false;
|
||||
});
|
||||
var j=0;
|
||||
for (j=1;j<4;j=j+1) {
|
||||
$("#form-attachment-"+j).hide();
|
||||
}
|
||||
});{/literal}
|
||||
</script>
|
||||
{/if}{/block}
|
17
indefero/src/IDF/templates/idf/js-hotkeys.html
Normal file
17
indefero/src/IDF/templates/idf/js-hotkeys.html
Normal file
@@ -0,0 +1,17 @@
|
||||
<script type="text/javascript" src="{media '/idf/js/jquery.hotkeys.js'}"></script>
|
||||
<script type="text/javascript" charset="utf-8">
|
||||
// <!--
|
||||
{hotkey 'Shift+h', 'IDF_Views::faq'}
|
||||
{if $project}
|
||||
{hotkey 'Shift+u', 'IDF_Views_Project::timeline', array($project.shortname, 'all')}
|
||||
{if $hasIssuesAccess}{hotkey 'Shift+a', 'IDF_Views_Issue::create', array($project.shortname)}
|
||||
{hotkey 'Shift+i', 'IDF_Views_Issue::index', array($project.shortname)}{/if}
|
||||
{if $hasDownloadsAccess}{hotkey 'Shift+d', 'IDF_Views_Download::index', array($project.shortname)}{/if}
|
||||
{if $hasWikiAccess}{hotkey 'Shift+o', 'IDF_Views_Wiki::listPages', array($project.shortname)}{/if}
|
||||
{if $hasSourceAccess}{hotkey 'Shift+s', 'IDF_Views_Source::treeBase', array($project.shortname, $project.getScmRoot())}{/if}
|
||||
{if $hasIssuesAccess and !$user.isAnonymous()}
|
||||
{hotkey 'Shift+m', 'IDF_Views_Issue::userIssues', array($project.shortname, $user.login, 'submit')}
|
||||
{hotkey 'Shift+w', 'IDF_Views_Issue::userIssues', array($project.shortname, $user.login, 'owner')}
|
||||
{/if}{/if} //-->
|
||||
</script>
|
||||
|
59
indefero/src/IDF/templates/idf/list-filter.html
Normal file
59
indefero/src/IDF/templates/idf/list-filter.html
Normal file
@@ -0,0 +1,59 @@
|
||||
{**
|
||||
* Looks for input fields like
|
||||
* <input type="text" class="filter-list" rel="target" />
|
||||
* and filters out anchors below $(target) which do not match
|
||||
* the entered input.
|
||||
*}
|
||||
<script type="text/javascript" charset="utf-8">
|
||||
{literal}
|
||||
$(document).ready(function() {
|
||||
$("input.filter-list").each(function() {
|
||||
var input = $(this);
|
||||
var lists = $("ul#" + input.attr("rel"));
|
||||
if (lists.length == 0)
|
||||
return;
|
||||
var list = $(lists[0]);
|
||||
var wrapper = input.parent();
|
||||
|
||||
// a list should contain a reasonable amount of items
|
||||
// to be filterable - we also give the filter input a
|
||||
// special class here so we recognize it later in case
|
||||
// we have to hide it when the list view is collapsed
|
||||
if (list.children("li").length > 10) {
|
||||
wrapper.addClass("activated");
|
||||
input.focus(function() {
|
||||
// ensure that the parent of the list keeps activated / opened
|
||||
list.parent().addClass("activated");
|
||||
if (input.attr("value") == input.attr("title")) {
|
||||
input.attr("value", "");
|
||||
wrapper.removeClass("default");
|
||||
}
|
||||
});
|
||||
input.blur(function() {
|
||||
list.parent().removeClass("activated");
|
||||
if (input.attr("value").length == 0) {
|
||||
input.attr("value", input.attr("title"));
|
||||
wrapper.addClass("default");
|
||||
}
|
||||
});
|
||||
input.keyup(function(ev) {
|
||||
var filter = $(this)[0];
|
||||
list.children("li").css('display', 'block');
|
||||
list.children("li").filter(function(index) {
|
||||
if (filter.value == "")
|
||||
return false;
|
||||
if ($(this).text().indexOf(filter.value) > -1)
|
||||
return false;
|
||||
return true;
|
||||
}).css('display', 'none');
|
||||
});
|
||||
wrapper.children('span').click(function() {
|
||||
input.val('').keyup().blur();
|
||||
});
|
||||
// initialize it with the default
|
||||
input.val('').blur();
|
||||
}
|
||||
});
|
||||
});
|
||||
{/literal}
|
||||
</script>
|
63
indefero/src/IDF/templates/idf/listProjects.html
Normal file
63
indefero/src/IDF/templates/idf/listProjects.html
Normal file
@@ -0,0 +1,63 @@
|
||||
{extends "idf/base-simple.html"}
|
||||
{block docclass}yui-t2{/block}
|
||||
{block body}
|
||||
{if $projects.count() == 0}
|
||||
<p>{trans 'No projects managed with InDefero were found.'}</p>
|
||||
{if $isAdmin}
|
||||
{aurl 'url', 'IDF_Views_Admin::projectCreate'}
|
||||
<p><a href="{$url}"><img style="vertical-align: text-bottom;" src="{media '/idf/img/add.png'}" alt="+" align="bottom" /></a> <a href="{$url}">{trans 'Create Project'}</a></p>{/if}
|
||||
{else}
|
||||
{include 'idf/project-list.html'}
|
||||
{/if}
|
||||
{/block}
|
||||
|
||||
{block context}
|
||||
<strong>{trans 'Filter projects by label'}</strong>
|
||||
{if count($projectLabels) == 0}
|
||||
<p class="smaller">{trans 'No projects with labels found.'}</p>
|
||||
{else}
|
||||
<dl class="tagscloud smaller">{foreach $projectLabels as $class => $labels}
|
||||
<dt class="label">{$class}</dt>
|
||||
{foreach $labels as $idx => $label}
|
||||
{* 0.75 - or 75% - is the minimum font size we'd like to see in this tag cloud *}
|
||||
{assign $fontScale = round($label.rel_project_count * 100) + 75}
|
||||
<dd><a href="{url 'IDF_Views::listProjectsByLabel', array($label->id, $order)}"
|
||||
class="label"
|
||||
title="{blocktrans $label.project_count}1 project{plural}{$label.project_count} projects{/blocktrans}"
|
||||
style="font-size: {$fontScale}%">{$label.name}{if $idx != count($labels) - 1},{/if}</a></dd>
|
||||
{/foreach}
|
||||
{/foreach}</dl>
|
||||
{if $tag}
|
||||
<p class="smaller"><a href="{url 'IDF_Views::listProjectsByLabel', array('all', $order)}">
|
||||
{blocktrans}Remove filter for {$tag}{/blocktrans}</a></p>
|
||||
{/if}
|
||||
{/if}
|
||||
<br />
|
||||
|
||||
<strong>{trans 'Order'}</strong>
|
||||
{assign $labelPart = 'all'}
|
||||
{if $tag}{assign $labelPart = $tag->id}{/if}
|
||||
<p class="smaller">
|
||||
{if $order != 'name'}<a href="{url 'IDF_Views::listProjectsByLabel', array($labelPart, 'name')}">{/if}
|
||||
{trans 'By name'}{if $order != 'name'}</a>{/if}
|
||||
–
|
||||
{if $order != 'activity'}<a href="{url 'IDF_Views::listProjectsByLabel', array($labelPart, 'activity')}">{/if}
|
||||
{trans 'By activity'}{if $order != 'activity'}</a>{/if}
|
||||
</p>
|
||||
<br />
|
||||
|
||||
<strong>{trans 'Filtered project stats'}</strong>
|
||||
<dl class="statistics smaller">
|
||||
<dt>{trans 'Issues:'}</dt><dd>{$stats.issues}</dd>
|
||||
<dt>{trans 'Commits:'}</dt><dd>{$stats.commits}</dd>
|
||||
<dt>{trans 'Documentations:'}</dt><dd>{$stats.docpages}</dd>
|
||||
<dt>{trans 'Downloads:'}</dt><dd>{$stats.downloads}</dd>
|
||||
<dt>{trans 'Code reviews:'}</dt><dd>{$stats.reviews}</dd>
|
||||
<dt>Projects:</dt><dd>{$stats.proj_count}</dd>
|
||||
</dl>
|
||||
{/block}
|
||||
|
||||
{block foot}
|
||||
<div id="branding">Powered by <a href="http://www.indefero.net" title="InDefero, bug tracking and more">InDefero</a>,
|
||||
<br />a <a href="http://www.ceondo.com">Céondo Ltd</a> initiative. <br />
|
||||
srchub.org is ran by <br /><a href="mailto:adamsna[at]datanethost.net">Nathan Adams</a>.</div>{/block}
|
35
indefero/src/IDF/templates/idf/login_form.html
Normal file
35
indefero/src/IDF/templates/idf/login_form.html
Normal file
@@ -0,0 +1,35 @@
|
||||
{extends "idf/base-simple.html"}
|
||||
{block docclass}yui-t2{/block}
|
||||
{block body}
|
||||
<form method="post" action="{url 'IDF_Views::login'}">
|
||||
<input type="hidden" name="_redirect_after" value="{$_redirect_after}" />
|
||||
{if $error}
|
||||
<p class="px-message-error">{$error}</p>
|
||||
{/if}
|
||||
<h3>{trans 'What is your account information?'}</h3>
|
||||
<table class="form" summary="">
|
||||
<tr>
|
||||
<th class="a-r"><strong>{trans 'My login is'}</strong></th>
|
||||
<td class="a-l"><input type="text" name="login" id="id_login" value="{$login}" /></th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="a-r"><strong>{trans 'My password is'}</strong></th>
|
||||
<td class="a-l"><input type="password" name="password" id="id_password" /></th>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<p><input type="submit" value="{trans 'Sign in'}" />
|
||||
| <a href="{url 'IDF_Views::passwordRecoveryAsk'}">{trans 'I lost my password!'}</a>
|
||||
</p>
|
||||
</form>
|
||||
<script type="text/javascript">
|
||||
document.getElementById('id_login').focus()
|
||||
</script>
|
||||
{/block}
|
||||
{block context}
|
||||
<div class="issue-submit-info">
|
||||
<h3>{trans 'Welcome.'}</h3>
|
||||
{aurl 'url', 'IDF_Views::register', array()}
|
||||
<p>{blocktrans}You can <a href="{$url}">create an account</a> if you don't have one yet.{/blocktrans}</a></p>
|
||||
<p>{trans 'It takes less than a minute to create your account.'}</p></div>
|
||||
{/block}
|
32
indefero/src/IDF/templates/idf/main-menu.html
Normal file
32
indefero/src/IDF/templates/idf/main-menu.html
Normal file
@@ -0,0 +1,32 @@
|
||||
<a href="#title" accesskey="2"></a>
|
||||
<ul id="main-menu">
|
||||
{if !$user.isAnonymous()}
|
||||
{aurl 'url', 'idf_dashboard'}
|
||||
<li>{blocktrans}Welcome, <strong><a class="userw" href="{$url}">{$user}</a></strong>.{/blocktrans}
|
||||
<a href="{url 'IDF_Views::logout'}">{trans 'Sign Out'}</a></li>{else}<li>
|
||||
<a href="{url 'IDF_Views::login'}">{trans 'Sign in or create your account'}</a></li>
|
||||
{/if}{if $customForgePageEnabled}
|
||||
<li><a href="{url 'IDF_Views::index'}">{trans 'Home'}</a></li>
|
||||
{/if}<li id="project-list"><a href="{url 'IDF_Views::listProjects'}">{trans 'Project List'} ▾</a>
|
||||
{if $allProjects.count() != 0}
|
||||
<ul>{foreach $allProjects as $p}
|
||||
<li><a href="{url 'IDF_Views_Project::home', array($p.shortname)}"><img class="logo" src="{url 'IDF_Views_Project::logo', array($p.shortname)}" alt="{trans 'Project logo'}" />{if $p.private}<img class="lock" src="{media '/idf/img/lock.png'}" alt="{trans 'Private project'}" />{/if}{$p}</a></li>
|
||||
{/foreach}</ul>
|
||||
{/if}</li>{if $isAdmin}<li><a href="{url 'IDF_Views_Admin::forge'}">{trans 'Forge Management'}</a></li>{/if}<li>
|
||||
<a href="{url 'IDF_Views::faq'}" title="{trans 'Help and accessibility features'}">{trans 'Help'}</a></li>
|
||||
</ul>
|
||||
|
||||
{if $allProjects.count() != 0}
|
||||
<script type="text/javascript" charset="utf-8">
|
||||
{literal}
|
||||
$(document).ready(function() {
|
||||
$('#project-list').bind('mouseenter', function(ev) {
|
||||
$(this).find('ul').show();
|
||||
}).bind('mouseleave', function(ev) {
|
||||
$(this).find('ul').hide();
|
||||
});
|
||||
});
|
||||
{/literal}
|
||||
</script>
|
||||
{/if}
|
||||
|
41
indefero/src/IDF/templates/idf/project-list.html
Normal file
41
indefero/src/IDF/templates/idf/project-list.html
Normal file
@@ -0,0 +1,41 @@
|
||||
<div class="p-list">
|
||||
{foreach $projects as $p}
|
||||
<div class="p-list-prj">
|
||||
<div class="logo">
|
||||
<a href="{url 'IDF_Views_Project::home', array($p.shortname)}">
|
||||
<img src="{url 'IDF_Views_Project::logo', array($p.shortname)}" alt="{trans 'Project logo'}" />
|
||||
</a>
|
||||
{if $p.private}
|
||||
<div class="private">
|
||||
<a href="{url 'IDF_Views_Project::home', array($p.shortname)}">
|
||||
<img style="float:right" src="{media '/idf/img/lock.png'}" alt="{trans 'Private project'}" />
|
||||
</a>
|
||||
</div>
|
||||
{/if}
|
||||
{if $p.current_activity_value}
|
||||
{assign $activity = $p.current_activity_value * 100}
|
||||
<div class="activity" title="{blocktrans}Project activity: {$activity}%{/blocktrans}"><div class="bar" style="width: {$activity}%"></div></div>
|
||||
{/if}
|
||||
</div>
|
||||
<p>
|
||||
<a href="{url 'IDF_Views_Project::home', array($p.shortname)}"><strong>{$p}</strong></a>
|
||||
{assign $url = $p.external_project_url}
|
||||
{if $url != ''}
|
||||
<a href="{$url}" target="_blank" class="external-link" title="{trans 'External link to project'}" /> </a>
|
||||
{/if}
|
||||
{if $p.private} - <span class="smaller">{trans 'Private project'}</span>{/if}
|
||||
</p>
|
||||
<p class="smaller">{$p.shortdesc}</p>
|
||||
<p class="smaller">{trans 'Labels:'}
|
||||
{assign $tags = $p.get_tags_list()}
|
||||
{if count($tags) == 0}{trans 'n/a'}{else}
|
||||
{foreach $p.get_tags_list() as $idx => $label}
|
||||
{if $idx != 0}, {/if}
|
||||
<a class="label" href="{url 'IDF_Views::listProjectsByLabel', array($label->id, $order)}">{$label}</a>
|
||||
{/foreach}
|
||||
{/if}
|
||||
</p>
|
||||
</div>
|
||||
{/foreach}
|
||||
<div style="clear:both"></div>
|
||||
</div>
|
48
indefero/src/IDF/templates/idf/project/home.html
Normal file
48
indefero/src/IDF/templates/idf/project/home.html
Normal file
@@ -0,0 +1,48 @@
|
||||
{extends "idf/base.html"}
|
||||
{block docclass}yui-t2{/block}
|
||||
{block tabhome} class="active"{/block}
|
||||
{block subtabs}
|
||||
<div id="sub-tabs">
|
||||
<a href="{url 'IDF_Views_Project::home', array($project.shortname)}" class="active">{trans 'Welcome'}</a> | <strong><a href="{url 'IDF_Views_Project::timeline', array($project.shortname, 'all')}">{trans 'Latest Updates'}</a></strong>{superblock}
|
||||
</div>
|
||||
{/block}
|
||||
{block body}
|
||||
{markdown $project.description, $request}
|
||||
{/block}
|
||||
{block context}
|
||||
{if count($downloads) > 0}
|
||||
<p><strong>{trans 'Featured Downloads'}</strong><br />
|
||||
{foreach $downloads as $download}
|
||||
<span class="label"><a href="{url 'IDF_Views_Download::view', array($project.shortname, $download.id)}" title="{$download.summary}">{$download}</a></span><br />
|
||||
{/foreach}
|
||||
<span class="label"> </span><span class="note"><a href="{url 'IDF_Views_Download::index', array($project.shortname)}" title="{trans 'Show more featured downloads'}">{trans 'show more...'}</a></span>
|
||||
{/if}
|
||||
{if count($pages) > 0}
|
||||
<p><strong>{trans 'Featured Documentation'}</strong><br />
|
||||
{foreach $pages as $page}
|
||||
<span class="label"><a href="{url 'IDF_Views_Wiki::viewPage', array($project.shortname, $page.title)}" title="{$page.summary}">{$page.title}</a></span><br />
|
||||
{/foreach}
|
||||
<span class="label"> </span><span class="note"><a href="{url 'IDF_Views_Wiki::listPages', array($project.shortname)}" title="{trans 'Show more featured documentation'}">{trans 'show more...'}</a></span>
|
||||
{/if}
|
||||
{assign $ko = 'owners'}
|
||||
{assign $km = 'members'}
|
||||
<p><strong>{trans 'Development Team'}</strong><br />
|
||||
{trans 'Admins'}<br />
|
||||
{foreach $team[$ko] as $owner}{aurl 'url', 'IDF_Views_User::view', array($owner.login)}
|
||||
<span class="label"><a class="label" href="{$url}">{$owner}</a></span><br />
|
||||
{/foreach}
|
||||
{if count($team[$km]) > 0}
|
||||
{trans 'Happy Crew'}<br />
|
||||
{foreach $team[$km] as $member}{aurl 'url', 'IDF_Views_User::view', array($member.login)}
|
||||
<span class="label"><a class="label" href="{$url}">{$member}</a></span><br />
|
||||
{/foreach}
|
||||
{/if}
|
||||
</p>
|
||||
<p>
|
||||
{if $project.enableads}
|
||||
|
||||
{/if}
|
||||
</p>
|
||||
{/block}
|
||||
|
||||
{block foot}<div id="branding">Powered by <a href="http://www.indefero.net" title="InDefero, bug tracking and more">InDefero</a>,<br />a <a href="http://www.ceondo.com">Céondo Ltd</a> initiative.<br />srchub.org is ran by <br /><a href="mailto:adamsna[at]datanethost.net">Nathan Adams</a>.</div>{/block}
|
25
indefero/src/IDF/templates/idf/project/js-autocomplete.html
Normal file
25
indefero/src/IDF/templates/idf/project/js-autocomplete.html
Normal file
@@ -0,0 +1,25 @@
|
||||
<script type="text/javascript" src="{media '/idf/js/jquery.bgiframe.min.js'}"></script>
|
||||
<script type="text/javascript" src="{media '/idf/js/jquery.autocomplete.min.js'}"></script>
|
||||
<script type="text/javascript" charset="utf-8">
|
||||
// <!-- {literal}
|
||||
$(document).ready(function(){
|
||||
var auto_labels = [{/literal}{$auto_labels|safe}{literal}];
|
||||
|
||||
for (j=1;j<7;j++) {
|
||||
$("#id_label"+j).autocomplete(auto_labels, {
|
||||
minChars: 0,
|
||||
width: 310,
|
||||
matchContains: true,
|
||||
max: 50,
|
||||
highlightItem: false,
|
||||
formatItem: function(row, i, max, term) {
|
||||
return row.to.replace(new RegExp("(" + term + ")", "gi"), "<strong>$1</strong>") + " <span style='font-size: 80%;'>" + row.name + "</span>";
|
||||
},
|
||||
formatResult: function(row) {
|
||||
return row.to;
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
{/literal} //-->
|
||||
</script>
|
29
indefero/src/IDF/templates/idf/project/timeline.html
Normal file
29
indefero/src/IDF/templates/idf/project/timeline.html
Normal file
@@ -0,0 +1,29 @@
|
||||
{extends "idf/base.html"}
|
||||
{block extraheader}<link rel="alternate" type="application/atom+xml" title="{trans 'Latest updates'}" href="{$feedurl}"/>{/block}
|
||||
{block docclass}yui-t2{/block}
|
||||
{block tabhome} class="active"{/block}
|
||||
{block subtabs}
|
||||
<div id="sub-tabs">
|
||||
<a href="{url 'IDF_Views_Project::home', array($project.shortname)}">{trans 'Welcome'}</a> | <strong><a href="{url 'IDF_Views_Project::timeline', array($project.shortname, 'all')}" class="active">{trans 'Latest Updates'}</a></strong>{superblock}
|
||||
</div>
|
||||
{/block}
|
||||
|
||||
{block body}
|
||||
{$timeline.render}
|
||||
{/block}
|
||||
|
||||
{block context}
|
||||
<p><span class="label{if 'all' == $model_filter} active{/if}"><a href="{url 'IDF_Views_Project::timeline', array($project.shortname, 'all')}">{trans 'All Updates'}</a></span></p>
|
||||
<p><strong>{trans 'Filter by type'}</strong><br />
|
||||
{foreach $accessible_model_filters as $filter_key => $filter_name}
|
||||
{if $filter_key != 'all'}
|
||||
<span class="label{if $filter_key == $model_filter} active{/if}"><a href="{url 'IDF_Views_Project::timeline', array($project.shortname, $filter_key)}">{$filter_name}</a></span><br />
|
||||
{/if}
|
||||
{/foreach}
|
||||
</p>
|
||||
<p><strong>{trans 'Subscribe to this timeline'}</strong><br />
|
||||
<span class="label"><img src="{media '/idf/img/rss.png'}" alt="{trans 'RSS'}" /> <a href="{$feedurl}">{trans 'Atom feed'}</a></span>
|
||||
</p>
|
||||
{/block}
|
||||
|
||||
|
@@ -0,0 +1,27 @@
|
||||
{blocktrans}Hello,
|
||||
|
||||
You have requested the creation of an account to
|
||||
participate in the life of a software project.
|
||||
|
||||
To confirm the account please follow this link:
|
||||
|
||||
{$url|safe}
|
||||
|
||||
Alternatively, go to this page:
|
||||
|
||||
{$urlik|safe}
|
||||
|
||||
and provide the following confirmation key:
|
||||
|
||||
{$key}
|
||||
|
||||
If you are not interested any longer in taking
|
||||
part in the life of the software project or if
|
||||
you can't remember having requested the creation
|
||||
of an account, please excuse us and simply ignore
|
||||
this email.
|
||||
|
||||
Yours faithfully,
|
||||
The development team.
|
||||
{/blocktrans}
|
||||
|
65
indefero/src/IDF/templates/idf/register/confirmation.html
Normal file
65
indefero/src/IDF/templates/idf/register/confirmation.html
Normal file
@@ -0,0 +1,65 @@
|
||||
{extends "idf/base-simple.html"}
|
||||
{block body}
|
||||
{if $form.errors}
|
||||
<div class="px-message-error">
|
||||
<p>{trans 'Oops, please check the form for errors.'}</p>
|
||||
{if $form.get_top_errors}
|
||||
{$form.render_top_errors|unsafe}
|
||||
{/if}
|
||||
{if $form.f.key.errors}{$form.f.key.fieldErrors}{/if}
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
<form method="post" action=".">
|
||||
<table class="form" summary="">
|
||||
<tr>
|
||||
<th><strong>{trans 'Login:'}</strong></th>
|
||||
<td>{$new_user.login}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><strong>{trans 'Email:'}</strong></th>
|
||||
<td>{$new_user.email}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{$form.f.first_name.labelTag}:</th>
|
||||
<td>{if $form.f.first_name.errors}{$form.f.first_name.fieldErrors}{/if}
|
||||
{$form.f.first_name|unsafe}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><strong>{$form.f.last_name.labelTag}:</strong></th>
|
||||
<td>{if $form.f.last_name.errors}{$form.f.last_name.fieldErrors}{/if}
|
||||
{$form.f.last_name|unsafe}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><strong>{$form.f.password.labelTag}:</strong></th>
|
||||
<td>{if $form.f.password.errors}{$form.f.password.fieldErrors}{/if}
|
||||
{$form.f.password|unsafe}<br />
|
||||
<span class="helptext">{$form.f.password.help_text}</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><strong>{$form.f.password2.labelTag}:</strong></th>
|
||||
<td>{if $form.f.password2.errors}{$form.f.password2.fieldErrors}{/if}
|
||||
{$form.f.password2|unsafe}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td> </td>
|
||||
<td><input type="submit" value="{trans 'Enable Your Account'}" name="submit" /> | <a href="{url 'IDF_Views::index'}">{trans 'Cancel'}</a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>{$form.f.key|unsafe}
|
||||
</form>
|
||||
{/block}
|
||||
{block context}
|
||||
<div class="issue-submit-info">
|
||||
<p>{trans 'This is the last step, but just <strong>be sure to have the cookies enabled</strong> to log in afterwards.'}</p>
|
||||
</div>
|
||||
{/block}
|
||||
{block javascript}<script type="text/javascript">
|
||||
document.getElementById('id_first_name').focus()
|
||||
</script>
|
||||
{/block}
|
||||
|
77
indefero/src/IDF/templates/idf/register/index.html
Normal file
77
indefero/src/IDF/templates/idf/register/index.html
Normal file
@@ -0,0 +1,77 @@
|
||||
{extends "idf/base-simple.html"}
|
||||
{block body}
|
||||
{if $form.errors}
|
||||
<div class="px-message-error">
|
||||
<p>{trans 'Oops, please check the provided login and email address to register.'}</p>
|
||||
{if $form.get_top_errors}
|
||||
{$form.render_top_errors|unsafe}
|
||||
{/if}
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
<form method="post" action=".">
|
||||
<table class="form" summary="">
|
||||
<tr>
|
||||
<th><strong>{$form.f.login.labelTag}:</strong></th>
|
||||
<td>{if $form.f.login.errors}{$form.f.login.fieldErrors}{/if}
|
||||
{$form.f.login|unsafe}<br />
|
||||
<span class="helptext">{$form.f.login.help_text}</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><strong>{$form.f.regkey.labelTag}:</strong></th>
|
||||
<td>{if $form.f.regkey.errors}{$form.f.regkey.fieldErrors}{/if}
|
||||
{$form.f.regkey|unsafe}<br />
|
||||
<span class="helptext">{$form.f.regkey.help_text}</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><strong>{$form.f.email.labelTag}:</strong></th>
|
||||
<td>{if $form.f.email.errors}{$form.f.email.fieldErrors}{/if}
|
||||
{$form.f.email|unsafe}<br />
|
||||
<span class="helptext">{$form.f.email.help_text}</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="theterms">
|
||||
<td> </td>
|
||||
<td><div class="theterms">{$terms}</div></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td> </td>
|
||||
<td>
|
||||
{if $form.f.terms.errors}{$form.f.terms.fieldErrors}{/if}
|
||||
{$form.f.terms|unsafe} <strong>{$form.f.terms.labelTag}</strong><br />
|
||||
<span class="helptext">{blocktrans}Read the <a id="showterms" href="#theterms">terms and conditions</a> – basically <em>"Please be nice, we respect you"</em>.{/blocktrans}</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td> </td>
|
||||
<td><input type="submit" value="{trans 'Create Your Account'}" name="submit" /> | <a href="{url 'IDF_Views::index'}">{trans 'Cancel'}</a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
{/block}
|
||||
{block context}
|
||||
<div class="issue-submit-info">
|
||||
<p>{trans 'Be sure to provide a valid email address, as we are sending a validation link by email.'}</p>
|
||||
{aurl 'url', 'IDF_Views::passwordRecoveryAsk'}
|
||||
<p>{blocktrans}If you have just forgotten your login information, then there is no need to create a new account. You can just <a href="{$url}">recover your login name and password</a>.{/blocktrans}</p>
|
||||
<p><strong>{trans 'Did you know?'}</strong><br />
|
||||
{aurl 'url', 'IDF_Views::faq'}
|
||||
{blocktrans}With your account, you will able to participate in the life of all the projects hosted here. Participating in a software project must be fun, so if you have troubles, you can <a href="{$url}">let us know about your issues at anytime</a>!{/blocktrans}</p>
|
||||
</div>
|
||||
{/block}
|
||||
{block javascript}<script type="text/javascript">
|
||||
document.getElementById('id_login').focus();
|
||||
{literal}
|
||||
$(document).ready(function() {
|
||||
// Hide the key password by default.
|
||||
$("#theterms").hide();
|
||||
$("#showterms").click(function(){
|
||||
$("#theterms").show();
|
||||
});
|
||||
});{/literal}
|
||||
</script>
|
||||
{/block}
|
||||
|
40
indefero/src/IDF/templates/idf/register/inputkey.html
Normal file
40
indefero/src/IDF/templates/idf/register/inputkey.html
Normal file
@@ -0,0 +1,40 @@
|
||||
{extends "idf/base-simple.html"}
|
||||
{block body}
|
||||
{if $form.errors}
|
||||
<div class="px-message-error">
|
||||
<p>{trans 'Oops, we found an error in the form.'}</p>
|
||||
{if $form.get_top_errors}
|
||||
{$form.render_top_errors|unsafe}
|
||||
{/if}
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
<form method="post" action=".">
|
||||
<table class="form" summary="">
|
||||
<tr>
|
||||
<td> </td>
|
||||
<td><strong>{$form.f.key.labelTag}:</strong><br />
|
||||
{if $form.f.key.errors}{$form.f.key.fieldErrors}{/if}
|
||||
{$form.f.key|unsafe}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td> </td>
|
||||
<td><input type="submit" value="{trans 'Confirm Your Account'}" name="submit" /> | <a href="{url 'IDF_Views::index'}">{trans 'Cancel'}</a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
{/block}
|
||||
{block context}
|
||||
<div class="issue-submit-info">
|
||||
<h2>{trans 'Instructions'}</h2>
|
||||
<p>{trans 'Use your email software to read your emails and open your confirmation email. Either click directly on the confirmation link or copy/paste the confirmation key in the box and submit the form.'}</p>
|
||||
<p>{trans 'Just after providing the confirmation key, you will be able to set your password and start using this website fully.'}</p>
|
||||
</div>
|
||||
{/block}
|
||||
{block javascript}<script type="text/javascript">
|
||||
document.getElementById('id_key').focus()
|
||||
</script>
|
||||
{/block}
|
||||
|
15
indefero/src/IDF/templates/idf/review/base-full.html
Normal file
15
indefero/src/IDF/templates/idf/review/base-full.html
Normal file
@@ -0,0 +1,15 @@
|
||||
{extends "idf/base-full.html"}
|
||||
{block tabreview} class="active"{/block}
|
||||
{block subtabs}
|
||||
<div id="sub-tabs">
|
||||
<a {if $inOpenReviews}class="active" {/if}href="{url 'IDF_Views_Review::index', array($project.shortname)}">{trans 'Open Reviews'}</a> {*
|
||||
|
||||
{if !$user.isAnonymous()} | <a {if $inCreate}class="active" {/if}href="{url 'IDF_Views_Issue::create', array($project.shortname)}">{trans 'New Issue'}</a> | <a {if $inMyIssues}class="active" {/if}href="{url 'IDF_Views_Issue::userIssues', array($project.shortname, $user.login, 'submit')}">{trans 'My Issues'}</a>{/if} |
|
||||
<form class="star" action="{url 'IDF_Views_Issue::search', array($project.shortname)}" method="get">
|
||||
<input accesskey="4" type="text" value="{$q}" name="q" size="20" />
|
||||
<input type="submit" name="s" value="{trans 'Search'}" />
|
||||
</form>
|
||||
*}
|
||||
{superblock}
|
||||
</div>
|
||||
{/block}
|
9
indefero/src/IDF/templates/idf/review/base.html
Normal file
9
indefero/src/IDF/templates/idf/review/base.html
Normal file
@@ -0,0 +1,9 @@
|
||||
{extends "idf/base.html"}
|
||||
{block tabreview} class="active"{/block}
|
||||
{block subtabs}
|
||||
<div id="sub-tabs">
|
||||
<a {if $inOpenReviews}class="active" {/if}href="{url 'IDF_Views_Review::index', array($project.shortname)}">{trans 'Open Reviews'}</a>
|
||||
{if !$user.isAnonymous()} | <a {if $inCreate}class="active" {/if}href="{url 'IDF_Views_Review::create', array($project.shortname)}">{trans 'Start Code Review'}</a> {/if}
|
||||
{superblock}
|
||||
</div>
|
||||
{/block}
|
69
indefero/src/IDF/templates/idf/review/create.html
Normal file
69
indefero/src/IDF/templates/idf/review/create.html
Normal file
@@ -0,0 +1,69 @@
|
||||
{extends "idf/review/base.html"}
|
||||
{block docclass}yui-t3{assign $inCreate = true}{/block}
|
||||
{block body}
|
||||
{if $form.errors}
|
||||
<div class="px-message-error">
|
||||
<p>{trans 'The form contains some errors. Please correct them to submit the code review.'}</p>
|
||||
{if $form.get_top_errors}
|
||||
{$form.render_top_errors|unsafe}
|
||||
{/if}
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
<form method="post" enctype="multipart/form-data" action=".">
|
||||
<table class="form" summary="">
|
||||
<tr>
|
||||
<th><strong>{$form.f.summary.labelTag}:</strong></th>
|
||||
<td>{if $form.f.summary.errors}{$form.f.summary.fieldErrors}{/if}
|
||||
{$form.f.summary|unsafe}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><strong>{$form.f.description.labelTag}:</strong></th>
|
||||
<td>{if $form.f.description.errors}{$form.f.description.fieldErrors}{/if}
|
||||
{$form.f.description|unsafe}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><strong>{$form.f.commit.labelTag}:</strong></th>
|
||||
<td>{if $form.f.commit.errors}{$form.f.commit.fieldErrors}{/if}
|
||||
{$form.f.commit|unsafe}<br />
|
||||
<span class="helptext">{trans 'Select the commit against which you created your patch to be sure it applies correctly.'}</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><strong>{$form.f.patch.labelTag}:</strong></th>
|
||||
<td>{if $form.f.patch.errors}{$form.f.patch.fieldErrors}{/if}
|
||||
{$form.f.patch|unsafe}
|
||||
</td>
|
||||
</tr>{if $isOwner or $isMember}
|
||||
<tr>
|
||||
<th><strong>{$form.f.status.labelTag}:</strong></th>
|
||||
<td>{if $form.f.status.errors}{$form.f.status.fieldErrors}{/if}
|
||||
{$form.f.status|unsafe}
|
||||
</td>
|
||||
</tr>{/if}
|
||||
<tr>
|
||||
<td> </td>
|
||||
<td><input type="submit" value="{trans 'Start Code Review'}" name="submit" /> | <a href="{url 'IDF_Views_Review::index', array($project.shortname)}">{trans 'Cancel'}</a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
{/block}
|
||||
{block context}
|
||||
<div class="issue-submit-info">
|
||||
{blocktrans}<p>To start a code review, you need to provide:</p>
|
||||
<ul>
|
||||
<li>A commit or revision of the current code in the repository from which you started your work.</li>
|
||||
<li>A patch describing your changes with respect to the reference commit.</li>
|
||||
<li><strong>Check your patch does not provide any password or confidential information!</strong></li>
|
||||
</ul>{/blocktrans}
|
||||
</div>
|
||||
{/block}
|
||||
{block javascript}
|
||||
<script type="text/javascript">
|
||||
document.getElementById('id_summary').focus();
|
||||
</script>{/block}
|
||||
|
||||
|
18
indefero/src/IDF/templates/idf/review/feedfragment.xml
Normal file
18
indefero/src/IDF/templates/idf/review/feedfragment.xml
Normal file
@@ -0,0 +1,18 @@
|
||||
<entry>
|
||||
<title>{$title} - {$review.get_status}</title>
|
||||
<link href="{$url}"/>
|
||||
<id>{$url}</id>
|
||||
<updated>{$date}</updated>
|
||||
<author>{$author}</author>
|
||||
<content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
|
||||
{if $c}
|
||||
<pre>{issuetext $c.content, $request}</pre>
|
||||
{if $c.changes}
|
||||
{foreach $c.changes as $w => $v}
|
||||
<strong>{if $w == 'su'}{trans 'Summary:'}{/if}{if $w == 'st'}{trans 'Status:'}{/if}{if $w == 'ow'}{trans 'Owner:'}{/if}{if $w == 'lb'}{trans 'Labels:'}{/if}</strong> {if $w == 'lb'}{assign $l = implode(', ', $v)}{$l}{else}{$v}{/if}<br />
|
||||
{/foreach}
|
||||
{/if}{else}
|
||||
<pre>{issuetext $p.description, $request}</pre>
|
||||
{/if}
|
||||
</div></content>
|
||||
</entry>
|
8
indefero/src/IDF/templates/idf/review/index.html
Normal file
8
indefero/src/IDF/templates/idf/review/index.html
Normal file
@@ -0,0 +1,8 @@
|
||||
{extends "idf/review/base.html"}
|
||||
{block docclass}yui-t2{assign $inOpenReviews=true}{/block}
|
||||
{block body}
|
||||
{$reviews.render}
|
||||
{if !$user.isAnonymous()}
|
||||
{aurl 'url', 'IDF_Views_Review::create', array($project.shortname)}
|
||||
<p><a href="{$url}"><img style="vertical-align: text-bottom;" src="{media '/idf/img/add.png'}" alt="+" align="bottom" /></a> <a href="{$url}">{trans 'Start Code Review'}</a></p>{/if}
|
||||
{/block}
|
@@ -0,0 +1,17 @@
|
||||
{trans 'Hello,'}
|
||||
|
||||
{blocktrans}The following review has been created:{/blocktrans}
|
||||
|
||||
{$review.id} - {$review.summary|safe}
|
||||
|
||||
{trans 'Project:'} {$project.name|safe}
|
||||
{trans 'Status:'} {$review.get_status.name}
|
||||
{trans 'Reported by:'} {$review.get_submitter|safe}
|
||||
{trans 'URL:'} {$url_base}{url 'IDF_Views_Review::view', array($project.shortname, $review.id)}
|
||||
{assign $tags = $review.get_tags_list()}{if $tags.count()}{trans 'Labels:'}
|
||||
{foreach $tags as $tag} {$tag.class|safe}:{$tag.name|safe}
|
||||
{/foreach}
|
||||
{/if}
|
||||
|
||||
--
|
||||
{trans 'Review:'} {$url_base}{url 'IDF_Views_Review::view', array($project.shortname, $review.id)}
|
@@ -0,0 +1,29 @@
|
||||
{trans 'Hello,'}
|
||||
|
||||
{blocktrans}The following review has been updated:{/blocktrans}
|
||||
|
||||
{$review.id} - {$review.summary|safe}
|
||||
{trans 'Project:'} {$project.name|safe}
|
||||
{trans 'Status:'} {$review.get_status.name}
|
||||
{trans 'Reported by:'} {$review.get_submitter|safe}
|
||||
{trans 'URL:'} {$url_base}{url 'IDF_Views_Review::view', array($project.shortname, $review.id)}
|
||||
{assign $tags = $review.get_tags_list()}{if $tags.count()}{trans 'Labels:'}
|
||||
{foreach $tags as $tag} {$tag.class|safe}:{$tag.name|safe}
|
||||
{/foreach}
|
||||
{/if}{trans 'General comments (last first):'}
|
||||
|
||||
{foreach $gcomments as $c}{assign $who = $c.get_submitter()}# {blocktrans}By {$who|safe}, {$c.creation_dtime|date}:{/blocktrans}
|
||||
{$c.content|safe}
|
||||
|
||||
{/foreach}
|
||||
{trans 'Detailed file comments (last first):'}
|
||||
|
||||
{foreach $comments as $c}{assign $who = $c.get_comment().get_submitter()}# {blocktrans}By {$who|safe}, {$c.creation_dtime|date}, on file:
|
||||
{$c.cfile|safe}
|
||||
{/blocktrans}
|
||||
{$c.content|safe}
|
||||
|
||||
{/foreach}
|
||||
|
||||
--
|
||||
{trans 'Review:'} {$url_base}{url 'IDF_Views_Review::view', array($project.shortname, $review.id)}
|
167
indefero/src/IDF/templates/idf/review/view.html
Normal file
167
indefero/src/IDF/templates/idf/review/view.html
Normal file
@@ -0,0 +1,167 @@
|
||||
{extends "idf/review/base-full.html"}
|
||||
{block extraheader}<link rel="stylesheet" type="text/css" href="{media '/idf/css/prettify.css'}" />{/block}
|
||||
{block docclass}yui-t1{assign $inCreate = true}{/block}
|
||||
{block body}
|
||||
{if !$user.isAnonymous() and $form.errors}
|
||||
<div class="px-message-error">
|
||||
<p>{trans 'The form contains some errors. Please correct them to submit your review.'}</p>
|
||||
{if $form.get_top_errors}
|
||||
{$form.render_top_errors|unsafe}
|
||||
{/if}
|
||||
</div>
|
||||
{/if}
|
||||
{if !$user.isAnonymous()}
|
||||
<div class="issue-submit-info" style="width: 50%; float: right; position: relative;">
|
||||
<p><strong>{trans 'How to Participate in a Code Review'}</strong></p>
|
||||
|
||||
<p>{blocktrans}Code review is a process in which
|
||||
after or before changes are commited into the code repository,
|
||||
different people discuss the code changes. The goal is
|
||||
to <strong>improve the quality of the code and the
|
||||
contributions</strong>, as such, you must be pragmatic when writing
|
||||
your review. Correctly mention the line numbers (in the old or in the
|
||||
new file) and try to keep a good balance between seriousness and fun.
|
||||
{/blocktrans}</p>
|
||||
<p>{blocktrans}
|
||||
<strong>Proposing code for review is intimidating</strong>, you know
|
||||
you will receive critics, so please, as a reviewer, <strong>keep this
|
||||
process fun</strong>, use it to help your contributor learn your
|
||||
coding standards and the structure of the code and <strong>make them want
|
||||
to propose more contributions</strong>.
|
||||
{/blocktrans}</p></div>
|
||||
{/if}
|
||||
<table class="commit" summary="">
|
||||
<tr>
|
||||
<th><strong>{trans 'Created:'}</strong></th><td>{$patch.creation_dtime|date:"%Y-%m-%d %H:%M:%S"} ({$patch.creation_dtime|dateago})</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><strong>{trans 'Updated:'}</strong></th><td>{$review.modif_dtime|dateago}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><strong>{trans 'Author:'}</strong></th><td>{$review.get_submitter()}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><strong>{trans 'Commit:'}</strong></th><td class="mono"><a href="{url 'IDF_Views_Source::treeBase', array($project.shortname, $patch.get_commit().scm_id)}" title="{trans 'View corresponding source tree'}">{$patch.get_commit().scm_id}</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><strong>{trans 'Description:'}</strong></th><td>{issuetext $review.summary, $request}<br /><br />{issuetext $patch.description, $request}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><strong>{trans 'Reviewers:'}</strong></th><td>{if count($reviewers)}{foreach $reviewers as $r}{$r}, {/foreach}{else}{trans 'No reviewers at the moment.'}{/if}</td>
|
||||
</tr>{if count($diff.files)}
|
||||
<tr>
|
||||
<th><strong>{trans 'Files:'}</strong></th>
|
||||
<td>
|
||||
{foreach $diff.files as $filename=>$diffdef}
|
||||
{assign $ndiff = count($diffdef['chunks'])}
|
||||
{assign $nc = $files[$filename][2]->count()}
|
||||
<a href="{url 'IDF_Views_Source::tree', array($project.shortname, $patch.get_commit().scm_id, $filename)}">{$filename}</a> (<a href="#diff-{$filename|md5}">{blocktrans $ndiff}{$ndiff} diff{plural}{$ndiff} diffs{/blocktrans}</a>{if $nc}, <a href="#ct-{$filename|md5}">{blocktrans $nc}{$nc} comment{plural}{$nc} comments{/blocktrans}</a>{/if})<br />
|
||||
{/foreach}
|
||||
</td>
|
||||
</tr>{/if}
|
||||
<tr>{aurl 'url', 'IDF_Views_Review::getPatch', array($project.shortname, $patch.id)}
|
||||
<th> </th><td><a href="{$url}"><img style="vertical-align: text-bottom;" src="{media '/idf/img/package-grey.png'}" alt="{trans 'Archive'}" align="bottom" /></a> <a href="{$url}" class="soft">{trans 'Download the corresponding diff file'}</a></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<form method="post" action=".">
|
||||
{foreach $files as $file=>$def}
|
||||
|
||||
{$def[0]}
|
||||
|
||||
{assign $fcomments = $def[2]}
|
||||
{assign $nc = $fcomments.count()}
|
||||
{assign $i = 1}
|
||||
{foreach $fcomments as $c}
|
||||
<div class="issue-comment{if $i == 1} issue-comment-first{/if}{if $i == $nc} issue-comment-last{/if}" id="ic{$c.id}">{assign $who = $c.get_comment().get_submitter()}{aurl 'whourl', 'IDF_Views_User::view', array($who.login)}
|
||||
{aurl 'url', 'IDF_Views_Review::view', array($project.shortname, $review.id)}
|
||||
{assign $id = $c.id}
|
||||
{assign $url = $url~'#ic'~$c.id}
|
||||
<p{if $i == 1} id="ct-{$file|md5}"{/if}>{blocktrans}Comment <a href="{$url}">{$i}</a> by <a href="{$whourl}">{$who}</a>, {$c.creation_dtime|date}{/blocktrans}</p>
|
||||
|
||||
<pre class="issue-comment-text">{issuetext $c.content, $request}</pre>
|
||||
</div> {assign $i = $i + 1}
|
||||
{/foreach}
|
||||
{if !$user.isAnonymous()}
|
||||
<table class="form" summary=" ">
|
||||
<tr>
|
||||
<td> </td>
|
||||
<td>
|
||||
<p>{blocktrans}Your comments on the changes in file <em>{$file}</em>:{/blocktrans}<br />{$def[1]|safe}</p>
|
||||
</td>
|
||||
</tr></table>{/if}
|
||||
{/foreach}
|
||||
|
||||
{assign $i = 1}
|
||||
{assign $nc = $comments.count()}
|
||||
{if $nc}<hr align="left" class="attach" />
|
||||
<h2>{trans 'General Comments'}</h2>
|
||||
{/if}
|
||||
{foreach $comments as $c}{ashowuser 'submitter', $c.get_submitter(), $request}{assign $submitter = $c.get_submitter()}{assign $submitter_data = $c.get_submitter_data()}
|
||||
<div class="issue-comment{if $i == 1} issue-comment-first{/if}{if $i == ($nc)} issue-comment-last{/if}" id="ic{$c.id}">
|
||||
{if $submitter_data.avatar != ''}
|
||||
<img style="float:right; position: relative; max-height: 60px; max-width: 60px;" src="{upload}/avatars/{$submitter_data.avatar}" alt=" " />
|
||||
{else}
|
||||
<img style="float:right; position: relative;" src="http://www.gravatar.com/avatar/{$submitter.email|md5}.jpg?s=60&d={media}/idf/img/spacer.gif" alt=" " />
|
||||
{/if}
|
||||
{aurl 'url', 'IDF_Views_Review::view', array($project.shortname, $review.id)}
|
||||
{assign $id = $c.id}
|
||||
{assign $url = $url~'#ic'~$c.id}
|
||||
<p>{blocktrans}Comment <a href="{$url}">{$i}</a> by {$submitter}, {$c.creation_dtime|date}{/blocktrans}</p>
|
||||
|
||||
|
||||
|
||||
{if strlen($c.content) > 0}<pre class="issue-comment-text">{issuetext $c.content, $request}</pre>{/if}
|
||||
|
||||
{if $c.changedReview()}
|
||||
<div class="issue-changes">
|
||||
{foreach $c.changes as $w => $v}
|
||||
<strong>{if $w == 'su'}{trans 'Summary:'}{/if}{if $w == 'st'}{trans 'Status:'}{/if}</strong> {$v}<br />
|
||||
{/foreach}
|
||||
</div>
|
||||
{/if}
|
||||
</div>{assign $i = $i + 1}{if $i == $nc+1 and $user.isAnonymous()}
|
||||
<div class="issue-comment-signin">
|
||||
{aurl 'url', 'IDF_Views::login'}{blocktrans}<a href="{$url}">Sign in</a> to participate in the review.{/blocktrans}
|
||||
</div>
|
||||
{/if}
|
||||
{/foreach}
|
||||
|
||||
{if !$user.isAnonymous()}
|
||||
{if !$nc}<hr align="left" class="attach" />{/if}
|
||||
<table class="form" summary=" ">
|
||||
<tr>
|
||||
<th><strong>{$form.f.content.labelTag}:</strong></th>
|
||||
<td>{if $form.f.content.errors}{$form.f.content.fieldErrors}{/if}
|
||||
{$form.f.content|unsafe}
|
||||
</td>
|
||||
</tr>
|
||||
{if $isOwner or $isMember}
|
||||
<tr>
|
||||
<th><strong>{$form.f.summary.labelTag}:</strong></th>
|
||||
<td>{if $form.f.summary.errors}{$form.f.summary.fieldErrors}{/if}
|
||||
{$form.f.summary|unsafe}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><strong>{$form.f.status.labelTag}:</strong></th>
|
||||
<td>{if $form.f.status.errors}{$form.f.status.fieldErrors}{/if}
|
||||
{$form.f.status|unsafe}
|
||||
</td>
|
||||
</tr>{/if}
|
||||
<tr>
|
||||
<td> </td>
|
||||
<td><input type="submit" value="{trans 'Submit Code Review'}" name="submit" /> | <a href="{url 'IDF_Views_Review::index', array($project.shortname)}">{trans 'Cancel'}</a>
|
||||
</td>
|
||||
</tr></table>
|
||||
{/if}
|
||||
</form>
|
||||
{/block}
|
||||
|
||||
{block javascript}
|
||||
<script type="text/javascript" src="{media '/idf/js/prettify.js'}"></script>
|
||||
<script type="text/javascript">
|
||||
prettyPrint();
|
||||
</script>
|
||||
{if $isOwner or $isMember}{include 'idf/issues/js-autocomplete.html'}{/if}
|
||||
{/block}
|
12
indefero/src/IDF/templates/idf/source/base.html
Normal file
12
indefero/src/IDF/templates/idf/source/base.html
Normal file
@@ -0,0 +1,12 @@
|
||||
{extends "idf/base.html"}
|
||||
{block tabsource} class="active"{/block}
|
||||
{block subtabs}
|
||||
{if !$inHelp and !$inError and (in_array($commit, $tree_in) or (in_array($commit, $tags_in)))}{assign $currentCommit = $commit}{else}{assign $currentCommit = $project.getScmRoot()}{/if}
|
||||
<div id="sub-tabs">
|
||||
<a {if $inSourceTree}class="active" {/if}href="{url 'IDF_Views_Source::treeBase', array($project.shortname, $currentCommit)}">{trans 'Source Tree'}</a> |
|
||||
<a {if $inChangeLog}class="active" {/if}href="{url 'IDF_Views_Source::changeLog', array($project.shortname, $currentCommit)}">{trans 'Change Log'}</a>
|
||||
{if $inCommit}| {trans 'Commit'}{/if} |
|
||||
<a {if $inHelp}class="active" {/if}href="{url 'IDF_Views_Source::help', array($project.shortname)}">{trans 'How To Get The Code'}</a>
|
||||
</div>
|
||||
{/block}
|
||||
{block title}{$title}{/block}
|
40
indefero/src/IDF/templates/idf/source/changelog.html
Normal file
40
indefero/src/IDF/templates/idf/source/changelog.html
Normal file
@@ -0,0 +1,40 @@
|
||||
{extends "idf/source/base.html"}
|
||||
{block docclass}yui-t1{assign $inChangeLog=true}{/block}
|
||||
{block body}
|
||||
<table summary="" class="tree-list">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{trans 'Age'}</th>
|
||||
<th>{trans 'Message'}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{foreach $changes as $change}
|
||||
{aurl 'url', 'IDF_Views_Source::commit', array($project.shortname, $change.scm_id)}
|
||||
<tr class="log">
|
||||
<td class="nobrk"><a href="{$url}">{$change.creation_dtime|dateago:"without"}</a></td>
|
||||
<td>{issuetext $change.summary, $request}{if $change.fullmessage}<br /><br />{issuetext $change.fullmessage, $request, true, false, true, true, true}{/if}
|
||||
|
||||
|
||||
{assign $parents = $change.extra.getVal('parents')}
|
||||
|
||||
{if count($parents) > 1}<div class="helptext">
|
||||
{foreach $parents as $parent}<br />
|
||||
{trans 'Parent:'} <a href="{url 'IDF_Views_Source::commit', array($project.shortname, $parent)}" title="{trans 'View corresponding commit'}" class="mono">{$parent}</a>
|
||||
{/foreach}</div>{/if}
|
||||
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="extra">
|
||||
<td colspan="2">
|
||||
<div class="helptext right">{trans 'Commit'} <a href="{$url}" class="mono">{$change.scm_id}</a>,
|
||||
{trans 'by'} {showuser $change.get_author(), $request, $change.origauthor}
|
||||
</div>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
{/foreach}
|
||||
</tbody>
|
||||
</table>
|
||||
{/block}
|
@@ -0,0 +1,17 @@
|
||||
{trans 'Hello,'}
|
||||
|
||||
{blocktrans}A new commit has been created:{/blocktrans}
|
||||
|
||||
{$commit.summary|safe}
|
||||
|
||||
{trans 'Commit:'} {$commit.scm_id|safe}
|
||||
{trans 'Project:'} {$project.name|safe}
|
||||
{trans 'Created by:'} {$commit.get_author|safe}
|
||||
{trans 'Created at:'} {$commit.creation_dtime|date:"%Y-%m-%d %H:%M:%S"}
|
||||
{if $commit.fullmessage}
|
||||
{trans 'Content:'}
|
||||
|
||||
{$commit.fullmessage}
|
||||
{/if}
|
||||
--
|
||||
{trans 'Commit details:'} {$url_base}{url 'IDF_Views_Source::commit', array($project.shortname, $commit.scm_id)}
|
83
indefero/src/IDF/templates/idf/source/commit.html
Normal file
83
indefero/src/IDF/templates/idf/source/commit.html
Normal file
@@ -0,0 +1,83 @@
|
||||
{extends "idf/source/base.html"}
|
||||
{block extraheader}<link rel="stylesheet" type="text/css" href="{media '/idf/css/prettify.css'}"/>{/block}
|
||||
{block docclass}yui-t1{assign $inCommit=true}{/block}
|
||||
{block body}
|
||||
<table class="commit" summary="">
|
||||
<tr>
|
||||
<th><strong>{trans 'Date:'}</strong></th><td>{$cobject.date|date:"%Y-%m-%d %H:%M:%S"} ({$cobject.date|dateago})</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><strong>{trans 'Author:'}</strong></th><td>{showuser $rcommit.get_author(), $request, $cobject.author}</td>
|
||||
</tr>
|
||||
{if $cobject.branch}<tr>
|
||||
<th><strong>{trans 'Branch:'}</strong></th><td>{$cobject.branch}</td>
|
||||
</tr>{/if}
|
||||
<tr>
|
||||
<th><strong>{trans 'Commit:'}</strong></th><td class="mono"><a href="{url 'IDF_Views_Source::treeBase', array($project.shortname, $commit)}" title="{trans 'View corresponding source tree'}">{$cobject.commit}</a></td>
|
||||
</tr>
|
||||
{if $cobject.parents}<tr>
|
||||
<th><strong>{trans 'Parents:'}</strong></th><td class="mono">{foreach $cobject.parents as $parent}
|
||||
<a href="{url 'IDF_Views_Source::commit', array($project.shortname, $parent)}" title="{trans 'View corresponding commit'}">{$parent}</a><br />
|
||||
{/foreach}
|
||||
</td>
|
||||
</tr>{/if}
|
||||
<tr>
|
||||
<th><strong>{trans 'Message:'}</strong></th><td>{issuetext $cobject.title, $request}{if isset($cobject.full_message)}<br/><br/>{issuetext $cobject.full_message, $request, true, false, true, true, true}{/if}</td>
|
||||
</tr>{if count($cobject.parents) < 2 and count($changes)}
|
||||
<tr>
|
||||
<th><strong>{trans 'Changes:'}</strong></th>
|
||||
<td>
|
||||
<table class="changes">
|
||||
{foreach $changes.deletions as $filename}
|
||||
<tr><td><span class="scm-action deleted" title="{trans 'deleted'}">D</span></td><td>{$filename}{if !empty($diff.files[$filename])} (<a href="#diff-{$filename|md5}">{trans 'full'}</a>){/if}</td></tr>
|
||||
{/foreach}
|
||||
{foreach $changes.renames as $oldname => $newname}
|
||||
<tr><td><span class="scm-action renamed" title="{trans 'renamed'}">R</span></td><td><a href="{url 'IDF_Views_Source::tree', array($project.shortname, $commit, $newname)}">{$oldname} → {$newname}</a></td></tr>
|
||||
{/foreach}
|
||||
{foreach $changes.copies as $srcname => $destname}
|
||||
<tr><td><span class="scm-action copied" title="{trans 'copied'}">C</span></td><td><a href="{url 'IDF_Views_Source::tree', array($project.shortname, $commit, $destname)}">{$srcname} → {$destname}</a></td></tr>
|
||||
{/foreach}
|
||||
{foreach $changes.additions as $filename}
|
||||
<tr><td><span class="scm-action added" title="{trans 'added'}">A</span></td><td><a href="{url 'IDF_Views_Source::tree', array($project.shortname, $commit, $filename)}">{$filename}</a>{if !empty($diff.files[$filename])} (<a href="#diff-{$filename|md5}">{trans 'full'}</a>){/if}</td></tr>
|
||||
{/foreach}
|
||||
{foreach $changes.patches as $filename}
|
||||
<tr><td><span class="scm-action patched" title="{trans 'modified'}">M</span></td><td><a href="{url 'IDF_Views_Source::tree', array($project.shortname, $commit, $filename)}">{$filename}</a>{if !empty($diff.files[$filename])}{assign $ndiff = count($diff.files[$filename]['chunks'])} (<a href="#diff-{$filename|md5}">{blocktrans $ndiff}{$ndiff} diff{plural}{$ndiff} diffs{/blocktrans}</a>){/if}</td></tr>
|
||||
{/foreach}
|
||||
{foreach $changes.properties as $filename => $properties}
|
||||
<tr><td><span class="scm-action property-changed" title="{trans 'properties changed'}">P</span></td><td><a href="{url 'IDF_Views_Source::tree', array($project.shortname, $commit, $filename)}">{$filename}</a>
|
||||
<table class="properties">
|
||||
{foreach $properties as $key => $value}
|
||||
<tr><td>{$key}</td>
|
||||
{if $value == null}
|
||||
<td class="removed">{trans 'removed'}</td>
|
||||
{else}
|
||||
<td>{$value}</td>
|
||||
{/if}
|
||||
</tr>
|
||||
{/foreach}
|
||||
</table>
|
||||
</td></tr>
|
||||
{/foreach}
|
||||
</table>
|
||||
</td>
|
||||
</tr>{/if} {* End of the if count($changes) *}
|
||||
</table>
|
||||
|
||||
{if count($cobject.parents) < 2 and count($diff.files)}
|
||||
<h2>{trans 'File differences'}</h2>
|
||||
|
||||
{$diff.as_html()}
|
||||
{/if}
|
||||
|
||||
{if count($cobject.parents) < 2 and (count($diff.files) or $large_commit)}
|
||||
{aurl 'url', 'IDF_Views_Source::downloadDiff', array($project.shortname, $commit)}
|
||||
<p class="right soft"><a href="{$url}"><img style="vertical-align: text-bottom;" src="{media '/idf/img/package-grey.png'}" alt="{trans 'Archive'}" align="bottom"/></a> <a href="{$url}">{trans 'Download the corresponding diff file'}</a></p>
|
||||
{/if}
|
||||
|
||||
{/block}
|
||||
{block javascript}
|
||||
<script type="text/javascript" src="{media '/idf/js/prettify.js'}"></script>
|
||||
<script type="text/javascript">
|
||||
prettyPrint();
|
||||
</script>
|
||||
{/block}
|
@@ -0,0 +1,33 @@
|
||||
{extends "idf/source/base.html"}
|
||||
{block docclass}yui-t2{assign $inError=true}{/block}
|
||||
{block body}
|
||||
|
||||
<p>{blocktrans}The revision identifier <b>{$commit}</b> is ambiguous and can be
|
||||
expanded to multiple valid revisions - please choose one:{/blocktrans}</p>
|
||||
|
||||
<table summary="" class="tree-list">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{trans 'Title'}</th>
|
||||
<th>{trans 'Author'}</th>
|
||||
<th>{trans 'Date'}</th>
|
||||
<th>{trans 'Branch'}</th>
|
||||
<th>{trans 'Revision'}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{foreach $revisions as $revision}
|
||||
{aurl 'url', $redirect, array($project.shortname, $revision.commit)}
|
||||
<tr class="log">
|
||||
<td>{$revision.title}</td>
|
||||
<td>{$revision.author}</td>
|
||||
<td>{$revision.date}</td>
|
||||
<td>{$revision.branch}</td>
|
||||
<td><a href="{$url}">{$revision.commit}</a></td>
|
||||
</td>
|
||||
</tr>
|
||||
{/foreach}
|
||||
</tbody>
|
||||
</table>
|
||||
{/block}
|
||||
|
11
indefero/src/IDF/templates/idf/source/feedfragment.xml
Normal file
11
indefero/src/IDF/templates/idf/source/feedfragment.xml
Normal file
@@ -0,0 +1,11 @@
|
||||
<entry>
|
||||
<title>{blocktrans}{$cproject.name}: Commit {$c.scm_id}{/blocktrans}</title>
|
||||
<link href="{$url}"/>
|
||||
<author>{$author}</author>
|
||||
<id>{$url}</id>
|
||||
<updated>{$date}</updated>
|
||||
<content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
|
||||
{issuetext $c.summary, $request}{if $c.fullmessage}<br /><br />
|
||||
{issuetext $c.fullmessage, $request, true, false, true, true, true}{/if}
|
||||
</div></content>
|
||||
</entry>
|
@@ -0,0 +1,39 @@
|
||||
{if !$view_url}
|
||||
{assign $view_url = 'IDF_Views_Source::treeBase'}
|
||||
{/if}
|
||||
<div class="expander">
|
||||
<div class="gradient"></div>
|
||||
<h3>
|
||||
{trans 'Branches'}
|
||||
<span class="input-with-delete">
|
||||
<input type="text" rel="branch-list" class="filter-list" title="{trans 'filter branches'}" />
|
||||
<span></span>
|
||||
</span>
|
||||
</h3>
|
||||
<ul id="branch-list">
|
||||
{foreach $branches as $branch => $path}
|
||||
{aurl 'url', $view_url, array($project.shortname, $branch)}
|
||||
<li class="label{if in_array($branch, $tree_in)} active{/if}">
|
||||
<a href="{$url}" class="label">{if $path}{$path}{else}{$branch}{/if}</a>
|
||||
</li>
|
||||
{/foreach}
|
||||
</ul>
|
||||
{if $tags}
|
||||
<h3>
|
||||
{trans 'Tags'}
|
||||
<span class="input-with-delete">
|
||||
<input type="text" rel="tag-list" class="filter-list" title="{trans 'filter tags'}" />
|
||||
<span></span>
|
||||
</span>
|
||||
</h3>
|
||||
<ul id="tag-list">
|
||||
{foreach $tags as $tag => $path}
|
||||
{aurl 'url', $view_url, array($project.shortname, $tag)}
|
||||
<li class="label{if in_array($tag, $tags_in)} active{/if}">
|
||||
<a href="{$url}" class="label">{if $path}{$path}{else}{$tag}{/if}</a>
|
||||
</li>
|
||||
{/foreach}
|
||||
</ul>
|
||||
{/if}
|
||||
</div>
|
||||
|
5
indefero/src/IDF/templates/idf/source/git/changelog.html
Normal file
5
indefero/src/IDF/templates/idf/source/git/changelog.html
Normal file
@@ -0,0 +1,5 @@
|
||||
{extends "idf/source/changelog.html"}
|
||||
{block context}
|
||||
{assign $view_url = 'IDF_Views_Source::changeLog'}
|
||||
{include 'idf/source/git/branch_tag_list.html'}
|
||||
{/block}
|
5
indefero/src/IDF/templates/idf/source/git/commit.html
Normal file
5
indefero/src/IDF/templates/idf/source/git/commit.html
Normal file
@@ -0,0 +1,5 @@
|
||||
{extends "idf/source/commit.html"}
|
||||
{block context}
|
||||
{include 'idf/source/git/branch_tag_list.html'}
|
||||
{/block}
|
||||
|
31
indefero/src/IDF/templates/idf/source/git/file.html
Normal file
31
indefero/src/IDF/templates/idf/source/git/file.html
Normal file
@@ -0,0 +1,31 @@
|
||||
{extends "idf/source/base.html"}
|
||||
{block extraheader}<link rel="stylesheet" type="text/css" href="{media '/idf/css/prettify.css'}" />{/block}
|
||||
{block docclass}yui-t1{assign $inSourceTree=true}{/block}
|
||||
{block body}
|
||||
<h2 class="top"><a href="{url 'IDF_Views_Source::treeBase', array($project.shortname, $commit)}">{trans 'Root'}</a><span class="sep">/</span>{if $breadcrumb}{$breadcrumb|safe}{/if}</h2>
|
||||
|
||||
<table class="code" summary=" ">
|
||||
{if !$tree_in and !$tags_in}
|
||||
{aurl 'url', 'IDF_Views_Source::commit', array($project.shortname, $commit)}
|
||||
<tfoot>
|
||||
<tr><th colspan="2">{blocktrans}Source at commit <a class="mono" href="{$url}">{$commit}</a> created {$cobject.date|dateago}.{/blocktrans}<br/>
|
||||
<span class="smaller">{blocktrans}By {$cobject.author|strip_tags|trim}, {$cobject.title}{/blocktrans}</span>
|
||||
</th></tr>
|
||||
</tfoot>
|
||||
{/if}
|
||||
<tbody>
|
||||
{$file}
|
||||
</tbody>
|
||||
</table>
|
||||
{aurl 'url', 'IDF_Views_Source::getFile', array($project.shortname, $commit, $fullpath)}
|
||||
<p class="right soft"><a href="{$url}"><img style="vertical-align: text-bottom;" src="{media '/idf/img/package-grey.png'}" alt="{trans 'Archive'}" align="bottom" /></a> <a href="{$url}">{trans 'Download this file'}</a></p>
|
||||
|
||||
{/block}
|
||||
{block context}
|
||||
{include 'idf/source/git/branch_tag_list.html'}
|
||||
{/block}
|
||||
|
||||
{block javascript}
|
||||
<script type="text/javascript" src="{media '/idf/js/prettify.js'}"></script>
|
||||
<script type="text/javascript">prettyPrint();</script>
|
||||
{/block}
|
38
indefero/src/IDF/templates/idf/source/git/help.html
Normal file
38
indefero/src/IDF/templates/idf/source/git/help.html
Normal file
@@ -0,0 +1,38 @@
|
||||
{extends "idf/source/base.html"}
|
||||
{block docclass}yui-t2{assign $inHelp=true}{/block}
|
||||
{block body}
|
||||
|
||||
<p>{blocktrans}The team behind {$project} is using
|
||||
the <strong>git</strong> software to manage the source
|
||||
code.{/blocktrans}</p>
|
||||
|
||||
<h3>{trans 'Command-Line Access'}</h3>
|
||||
|
||||
<p><kbd>git clone {$project.getSourceAccessUrl($user)}</kbd></p>
|
||||
|
||||
{aurl 'url', 'IDF_Views_User::myAccount'}
|
||||
<p>{blocktrans}You may need to <a href="{$url}">provide your SSH key</a>. The synchronization of your SSH key can take a couple of minutes. You can learn more about <a href="http://www.google.com/search?q=public+ssh+key+authentication">SSH key authentication</a>.{/blocktrans}</p>
|
||||
|
||||
{if $isOwner or $isMember}
|
||||
<h3>{trans 'First Commit'}</h3>
|
||||
|
||||
<p>{blocktrans}To make a first commit in the repository, perform the following steps:{/blocktrans}</p>
|
||||
|
||||
<pre>
|
||||
git init
|
||||
git add .
|
||||
git commit -m "initial import"
|
||||
git remote add origin {$project.getWriteRemoteAccessUrl($user)}
|
||||
git push origin master
|
||||
</pre>
|
||||
|
||||
{/if}
|
||||
|
||||
{/block}
|
||||
{block context}
|
||||
<div class="issue-submit-info">
|
||||
<p>{blocktrans}Find here more details on how to access {$project} source code.{/blocktrans}</p>
|
||||
</div>
|
||||
{/block}
|
||||
|
||||
|
@@ -0,0 +1,2 @@
|
||||
{extends "idf/source/invalid_revision.html"}
|
||||
|
56
indefero/src/IDF/templates/idf/source/git/tree.html
Normal file
56
indefero/src/IDF/templates/idf/source/git/tree.html
Normal file
@@ -0,0 +1,56 @@
|
||||
{extends "idf/source/base.html"}
|
||||
{block docclass}yui-t1{assign $inSourceTree=true}{/block}
|
||||
{block body}
|
||||
<h2 class="top"><a href="{url 'IDF_Views_Source::treeBase', array($project.shortname, $commit)}">{trans 'Root'}</a><span class="sep">/</span>{if $breadcrumb}{$breadcrumb|safe}{/if}</h2>
|
||||
|
||||
<table summary="" class="tree-list">
|
||||
<thead>
|
||||
<tr>
|
||||
<th colspan="2">{trans 'File'}</th>
|
||||
<th>{trans 'Age'}</th>
|
||||
<th>{trans 'Message'}</th>
|
||||
<th>{trans 'Size'}</th>
|
||||
</tr>
|
||||
</thead>{if !$tree_in and !$tags_in}
|
||||
{aurl 'url', 'IDF_Views_Source::commit', array($project.shortname, $commit)}
|
||||
<tfoot>
|
||||
<tr><th colspan="5">{blocktrans}Source at commit <a class="mono" href="{$url}">{$commit}</a> created {$cobject.date|dateago}.{/blocktrans}<br/>
|
||||
<span class="smaller">{blocktrans}By {$cobject.author|strip_tags|trim}, {$cobject.title}{/blocktrans}</span>
|
||||
</th></tr>
|
||||
</tfoot>
|
||||
{/if}<tbody>
|
||||
{if $base}
|
||||
<tr>
|
||||
<td> </td>
|
||||
<td>
|
||||
<a href="{url 'IDF_Views_Source::tree', array($project.shortname, $commit, $prev)}">..</a></td>
|
||||
<td colspan="3"></td>
|
||||
</tr>
|
||||
{/if}
|
||||
{foreach $files as $file}
|
||||
{aurl 'url', 'IDF_Views_Source::tree', array($project.shortname, $commit, $file.efullpath)}
|
||||
<tr>
|
||||
<td class="fileicon"><img src="{media '/idf/img/'~$file.type~'.png'}" alt="{$file.type}" /></td>
|
||||
{if $file.type != 'extern'}
|
||||
<td{if $file.type == 'tree'} colspan="4"{/if}><a href="{$url}"><nobr>{$file.file}</nobr></a></td>{else}<td><a href="#" title="{$file.hash}"><nobr>{$file.file}</nobr></a></td>{/if}
|
||||
{if $file.type == 'blob'}
|
||||
{if isset($file.date) and $file.log != '----'}
|
||||
<td><span class="smaller"><nobr>{$file.date|dateago:"without"}</nobr></span></td>
|
||||
<td><span class="smaller">{$file.author|strip_tags|trim}{trans ':'} {issuetext $file.log, $request, true, false}</span></td>
|
||||
{else}<td colspan="2"></td>{/if}
|
||||
<td><nobr>{$file.size|size}</nobr></td>{/if}
|
||||
{if $file.type == 'extern'}
|
||||
<td colspan="3">{$file.extern}</td>
|
||||
{/if}
|
||||
</tr>
|
||||
{/foreach}
|
||||
</tbody>
|
||||
</table>
|
||||
{aurl 'url', 'IDF_Views_Source::download', array($project.shortname, $commit)}
|
||||
<p class="right soft"><a href="{$url}"><img style="vertical-align: text-bottom;" src="{media '/idf/img/package-grey.png'}" alt="{trans 'Archive'}" align="bottom" /></a> <a href="{$url}">{trans 'Download this version'}</a> {trans 'or'} <kbd>git clone {$project.getSourceAccessUrl($user)}</kbd> <a href="{url 'IDF_Views_Source::help', array($project.shortname)}"><img style="vertical-align: text-bottom;" src="{media '/idf/img/help.png'}" alt="{trans 'Help'}" /></a></p>
|
||||
|
||||
|
||||
{/block}
|
||||
{block context}
|
||||
{include 'idf/source/git/branch_tag_list.html'}
|
||||
{/block}
|
29
indefero/src/IDF/templates/idf/source/invalid_revision.html
Normal file
29
indefero/src/IDF/templates/idf/source/invalid_revision.html
Normal file
@@ -0,0 +1,29 @@
|
||||
{extends "idf/source/base.html"}
|
||||
{block docclass}yui-t2{assign $inError=true}{/block}
|
||||
{block body}
|
||||
|
||||
<p>{blocktrans}The branch or revision <b>{$commit}</b> is not valid or does not exist
|
||||
in this repository.{/blocktrans}</p>
|
||||
|
||||
{if count($branches) > 0}
|
||||
<p>{blocktrans}The following list shows all available branches:{/blocktrans}</p>
|
||||
<ul>
|
||||
{foreach $branches as $branch => $path}
|
||||
{aurl 'url', 'IDF_Views_Source::treeBase', array($project.shortname, $branch)}
|
||||
<li class="label">
|
||||
<a href="{$url}" class="label">{if $path}{$path}{else}{$branch}{/if}</a>
|
||||
</li>
|
||||
{/foreach}
|
||||
</ul>
|
||||
{/if}
|
||||
|
||||
{if $isOwner or $isMember}
|
||||
{aurl 'url', 'IDF_Views_Source::help', array($project.shortname)}
|
||||
<p>{blocktrans}If this is a new repository, the reason for this error
|
||||
could be that you have not committed and / or pushed any change so far.
|
||||
In this case please take a look at the <a href="{$url}">Help</a> page
|
||||
how to access your repository.{/blocktrans}</p>
|
||||
{/if}
|
||||
|
||||
{/block}
|
||||
|
@@ -0,0 +1,39 @@
|
||||
{if !$view_url}
|
||||
{assign $view_url = 'IDF_Views_Source::treeBase'}
|
||||
{/if}
|
||||
<div class="expander">
|
||||
<div class="gradient"></div>
|
||||
<h3>
|
||||
{trans 'Branches'}
|
||||
<span class="input-with-delete">
|
||||
<input type="text" rel="branch-list" class="filter-list" title="{trans 'filter branches'}" />
|
||||
<span></span>
|
||||
</span>
|
||||
</h3>
|
||||
<ul id="branch-list">
|
||||
{foreach $branches as $branch => $path}
|
||||
{aurl 'url', $view_url, array($project.shortname, $branch)}
|
||||
<li class="label{if in_array($branch, $tree_in)} active{/if}">
|
||||
<a href="{$url}" class="label">{$branch}</a>
|
||||
</li>
|
||||
{/foreach}
|
||||
</ul>
|
||||
{if $tags}
|
||||
<h3>
|
||||
{trans 'Tags'}
|
||||
<span class="input-with-delete">
|
||||
<input type="text" rel="tag-list" class="filter-list" title="{trans 'filter tags'}" />
|
||||
<span></span>
|
||||
</span>
|
||||
</h3>
|
||||
<ul id="tag-list">
|
||||
{foreach $tags as $tag => $path}
|
||||
{aurl 'url', $view_url, array($project.shortname, $tag)}
|
||||
<li class="label{if in_array($tag, $tags_in)} active{/if}">
|
||||
<a href="{$url}" class="label">{$tag}</a>
|
||||
</li>
|
||||
{/foreach}
|
||||
</ul>
|
||||
{/if}
|
||||
</div>
|
||||
|
@@ -0,0 +1,6 @@
|
||||
{extends "idf/source/changelog.html"}
|
||||
{block context}
|
||||
{assign $view_url = 'IDF_Views_Source::changeLog'}
|
||||
{include 'idf/source/mercurial/branch_tag_list.html'}
|
||||
{/block}
|
||||
|
@@ -0,0 +1,5 @@
|
||||
{extends "idf/source/commit.html"}
|
||||
{block context}
|
||||
{include 'idf/source/mercurial/branch_tag_list.html'}
|
||||
{/block}
|
||||
|
32
indefero/src/IDF/templates/idf/source/mercurial/file.html
Normal file
32
indefero/src/IDF/templates/idf/source/mercurial/file.html
Normal file
@@ -0,0 +1,32 @@
|
||||
{extends "idf/source/base.html"}
|
||||
{block extraheader}<link rel="stylesheet" type="text/css" href="{media '/idf/css/prettify.css'}" />{/block}
|
||||
{block docclass}yui-t1{assign $inSourceTree=true}{/block}
|
||||
|
||||
{block body}
|
||||
<h2 class="top"><a href="{url 'IDF_Views_Source::treeBase', array($project.shortname, $commit)}">{trans 'Root'}</a><span class="sep">/</span>{if $breadcrumb}{$breadcrumb|safe}{/if}</h2>
|
||||
|
||||
<table class="code" summary=" ">
|
||||
{if !$tree_in}
|
||||
{aurl 'url', 'IDF_Views_Source::commit', array($project.shortname, $commit)}
|
||||
<tfoot>
|
||||
<tr><th colspan="2">{blocktrans}Source at commit <a class="mono" href="{$url}">{$commit}</a> created {$cobject.date|dateago}.{/blocktrans}<br />
|
||||
<span class="smaller">{blocktrans}By {$cobject.author|strip_tags|trim}, {$cobject.title}{/blocktrans}</span>
|
||||
</th></tr>
|
||||
</tfoot>
|
||||
{/if}
|
||||
<tbody>
|
||||
{$file}
|
||||
</tbody>
|
||||
</table>
|
||||
{aurl 'url', 'IDF_Views_Source::getFile', array($project.shortname, $commit, $efullpath)}
|
||||
<p class="right soft"><a href="{$url}"><img style="vertical-align: text-bottom;" src="{media '/idf/img/package-grey.png'}" alt="{trans 'Archive'}" align="bottom" /></a> <a href="{$url}">{trans 'Download this file'}</a></p>
|
||||
{/block}
|
||||
|
||||
{block context}
|
||||
{include 'idf/source/mercurial/branch_tag_list.html'}
|
||||
{/block}
|
||||
|
||||
{block javascript}
|
||||
<script type="text/javascript" src="{media '/idf/js/prettify.js'}"></script>
|
||||
<script type="text/javascript">prettyPrint();</script>
|
||||
{/block}
|
31
indefero/src/IDF/templates/idf/source/mercurial/help.html
Normal file
31
indefero/src/IDF/templates/idf/source/mercurial/help.html
Normal file
@@ -0,0 +1,31 @@
|
||||
{extends "idf/source/base.html"}
|
||||
{block docclass}yui-t2{assign $inHelp=true}{/block}
|
||||
{block body}
|
||||
|
||||
<p>{blocktrans}The team behind {$project} is using
|
||||
the <strong>Mercurial</strong> software to manage the source
|
||||
code.{/blocktrans}</p>
|
||||
|
||||
<h3>{trans 'Command-Line Access'}</h3>
|
||||
|
||||
<p><kbd>hg clone {$project.getRemoteAccessUrl()}</kbd></p>
|
||||
|
||||
|
||||
{if $isOwner or $isMember}
|
||||
<h3>{trans 'Write Access Authentication'}</h3>
|
||||
|
||||
{aurl 'url', 'IDF_Views_User::myAccount'}
|
||||
<p>{blocktrans}To get write access to the repository, you need to use your username and your <a href="{$url}">extra password</a>.{/blocktrans}</p>
|
||||
|
||||
<p><kbd>hg clone {$project.getRemoteAccessUrl()}</kbd></p>
|
||||
|
||||
{/if}
|
||||
|
||||
{/block}
|
||||
{block context}
|
||||
<div class="issue-submit-info">
|
||||
<p>{blocktrans}Find here more details on how to access {$project} source code.{/blocktrans}</p>
|
||||
</div>
|
||||
{/block}
|
||||
|
||||
|
@@ -0,0 +1,2 @@
|
||||
{extends "idf/source/invalid_revision.html"}
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user