Indefero

Indefero Commit Details

Date:2008-08-07 15:35:03 (6 years 2 months ago)
Author:Loïc d'Anterroches
Branch:dev, develop, feature-issue_links, feature.better-home, feature.content-md5, feature.diff-whitespace, feature.download-md5, feature.issue-links, feature.issue-of-others, feature.issue-summary, feature.search-filter, feature.webrepos, feature.wiki-default-page, master, release-1.1, release-1.2, release-1.3, svn
Commit:7383e18dff19e7e6a1e56d55cdfbfa109e91bfb3
Parents: 1831716b079821d06cd182e2b4777ae64df99333
Message:Fixed issue 4, with fine control over the tabs access.

For each tab, at the exception of the project home and the
administration area, it possible to control the access rights if the
user is anonymous, signed in, member or owner.
Changes:
Asrc/IDF/Form/TabsConf.php (full)
Asrc/IDF/templates/admin/tabs.html (full)
Msrc/IDF/Middleware.php (3 diffs)
Msrc/IDF/Precondition.php (1 diff)
Msrc/IDF/Template/IssueComment.php (1 diff)
Msrc/IDF/Views/Download.php (5 diffs)
Msrc/IDF/Views/Issue.php (6 diffs)
Msrc/IDF/Views/Project.php (2 diffs)
Msrc/IDF/Views/Source.php (5 diffs)
Msrc/IDF/conf/idf.php-dist (1 diff)
Msrc/IDF/conf/views.php (1 diff)
Msrc/IDF/locale/fr/idf.po (18 diffs)
Msrc/IDF/locale/idf.pot (8 diffs)
Msrc/IDF/templates/admin/base.html (1 diff)
Msrc/IDF/templates/base.html (1 diff)
Msrc/IDF/templates/issues/view.html (1 diff)
Msrc/IDF/templates/js-hotkeys.html (1 diff)
Msrc/IDF/templates/project-home.html (1 diff)
Msrc/IDF/templates/source/changelog.html (1 diff)
Msrc/IDF/templates/source/commit.html (1 diff)

File differences

src/IDF/Form/TabsConf.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<?php
/* -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
# ***** BEGIN LICENSE BLOCK *****
# This file is part of InDefero, an open source project management application.
# Copyright (C) 2008 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 ***** */
/**
* Configuration of the tabs access.
*/
class IDF_Form_TabsConf extends Pluf_Form
{
public $conf = null;
public function initFields($extra=array())
{
$this->conf = $extra['conf'];
$ak = array('downloads_access_rights' => __('Downloads'),
'source_access_rights' => __('Source'),
'issues_access_rights' => __('Issues'),);
foreach ($ak as $key=>$label) {
$this->fields[$key] = new Pluf_Form_Field_Varchar(
array('required' => true,
'label' => $label,
'initial' => $this->conf->getVal($key, 'all'),
'widget_attrs' => array('choices' =>
array(
__('Open to all') => 'all',
__('Signed in users') => 'login',
__('Project members') => 'members',
__('Project owners') => 'owners',
__('Closed') => 'none',
)
),
'widget' => 'Pluf_Form_Widget_SelectInput',
));
}
}
}
src/IDF/Middleware.php
2424
2525
2626
27
2728
2829
2930
......
4950
5051
5152
53
54
55
56
57
58
59
60
61
5262
5363
5464
......
5868
5969
6070
71
6172
6273
6374
6475
6576
6677
78
6779
6880
6981
/**
* Project middleware.
*
* It must be after the session middleware.
*/
class IDF_Middleware
{
} catch (Pluf_HTTP_Error404 $e) {
return new Pluf_HTTP_Response_NotFound(sprintf(__('The page <em>%s</em> was not found on the server.'), htmlspecialchars($request->query)));
}
$request->conf = new IDF_Conf();
$request->conf->setProject($request->project);
$ak = array('downloads_access_rights' => 'hasDownloadsAccess',
'source_access_rights' => 'hasSourceAccess',
'issues_access_rights' => 'hasIssuesAccess');
$request->rights = array();
foreach ($ak as $key=>$val) {
$request->rights[$val] = (true === IDF_Precondition::accessTabGeneric($request, $key));
}
}
return false;
}
function IDF_Middleware_ContextPreProcessor($request)
{
$c = array();
$c['request'] = $request;
if (isset($request->project)) {
$c['project'] = $request->project;
$c['isOwner'] = $request->user->hasPerm('IDF.project-owner',
$request->project);
$c['isMember'] = $request->user->hasPerm('IDF.project-member',
$request->project);
$c = array_merge($c, $request->rights);
}
return $c;
}
src/IDF/Precondition.php
6161
6262
6363
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
64113
}
return new Pluf_HTTP_Response_Forbidden($request);
}
/**
* Check if the user can access a given element.
*
* The rights are:
* - 'all' (default)
* - 'none'
* - 'login'
* - 'members'
* - 'owners'
*
* The order of the rights is such that a 'owner' is also a
* 'member' and of course a logged in person.
*
* @param Pluf_HTTP_Request
* @param string Control key
* @return mixed
*/
static public function accessTabGeneric($request, $key)
{
switch ($request->conf->getVal($key, 'all')) {
case 'none':
return new Pluf_HTTP_Response_Forbidden($request);
case 'login':
return Pluf_Precondition::loginRequired($request);
case 'members':
return self::projectMemberOrOwner($request);
case 'owners':
return self::projectOwner($request);
case 'all':
default:
return true;
}
}
static public function accessSource($request)
{
return self::accessTabGeneric($request, 'source_access_rights');
}
static public function accessIssues($request)
{
return self::accessTabGeneric($request, 'issues_access_rights');
}
static public function accessDownloads($request)
{
return self::accessTabGeneric($request, 'downloads_access_rights');
}
}
src/IDF/Template/IssueComment.php
2929
3030
3131
32
3233
3334
34
35
3536
36
37
38
3739
3840
3941
4042
4143
4244
43
44
45
46
45
46
47
48
49
50
51
52
4753
4854
4955
class IDF_Template_IssueComment extends Pluf_Template_Tag
{
private $project = null;
private $request = null;
private $git = null;
function start($text, $project)
function start($text, $request)
{
$this->project = $project;
$this->project = $request->project;
$this->request = $request;
$this->git = new IDF_Git($this->project->getGitRepository());
$text = wordwrap($text, 69, "\n", true);
$text = Pluf_esc($text);
$text = ereg_replace('[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]',
'<a href="\\0" rel="nofollow">\\0</a>',
$text);
$text = preg_replace_callback('#(issues?|bugs?|tickets?)\s+(\d+)((\s+and|\s+or|,)\s+(\d+)){0,}#im',
array($this, 'callbackIssues'), $text);
$text = preg_replace_callback('#(commit\s+)([0-9a-f]{5,40})#im',
array($this, 'callbackCommit'), $text);
if ($request->rights['hasIssuesAccess']) {
$text = preg_replace_callback('#(issues?|bugs?|tickets?)\s+(\d+)((\s+and|\s+or|,)\s+(\d+)){0,}#im',
array($this, 'callbackIssues'), $text);
}
if ($request->rights['hasSourceAccess']) {
$text = preg_replace_callback('#(commit\s+)([0-9a-f]{5,40})#im',
array($this, 'callbackCommit'), $text);
}
echo $text;
}
src/IDF/Views/Download.php
3838
3939
4040
41
4142
4243
4344
......
7576
7677
7778
79
7880
7981
8082
......
123125
124126
125127
128
126129
127130
128131
......
136139
137140
138141
139
142
143
140144
141145
142146
......
197201
198202
199203
204
200205
201206
202207
/**
* List the files available for download.
*/
public $index_precond = array('IDF_Precondition::accessDownloads');
public function index($request, $match)
{
$prj = $request->project;
/**
* View details of a file.
*/
public $view_precond = array('IDF_Precondition::accessDownloads');
public function view($request, $match)
{
$prj = $request->project;
/**
* Download a file.
*/
public $download_precond = array('IDF_Precondition::accessDownloads');
public function download($request, $match)
{
$prj = $request->project;
/**
* Submit a new file for download.
*/
public $submit_precond = array('IDF_Precondition::projectMemberOrOwner');
public $submit_precond = array('IDF_Precondition::accessDownloads',
'IDF_Precondition::projectMemberOrOwner');
public function submit($request, $match)
{
$prj = $request->project;
/**
* View list of downloads with a given label.
*/
public $listLabel_precond = array('IDF_Precondition::accessDownloads');
public function listLabel($request, $match)
{
$prj = $request->project;
src/IDF/Views/Issue.php
3434
3535
3636
37
3738
3839
3940
......
7778
7879
7980
80
81
82
8183
8284
8385
......
124126
125127
126128
127
129
130
128131
129132
130133
......
157160
158161
159162
163
160164
161165
162166
......
204208
205209
206210
211
207212
208213
209214
......
246251
247252
248253
254
249255
250256
251257
/**
* View list of issues for a given project.
*/
public $index_precond = array('IDF_Precondition::accessIssues');
public function index($request, $match)
{
$prj = $request->project;
*
* Only open issues are shown.
*/
public $myIssues_precond = array('Pluf_Precondition::loginRequired');
public $myIssues_precond = array('IDF_Precondition::accessIssues',
'Pluf_Precondition::loginRequired');
public function myIssues($request, $match)
{
$prj = $request->project;
$request);
}
public $create_precond = array('Pluf_Precondition::loginRequired');
public $create_precond = array('IDF_Precondition::accessIssues',
'Pluf_Precondition::loginRequired');
public function create($request, $match)
{
$prj = $request->project;
$request);
}
public $view_precond = array('IDF_Precondition::accessIssues');
public function view($request, $match)
{
$prj = $request->project;
/**
* View list of issues for a given project with a given status.
*/
public $listStatus_precond = array('IDF_Precondition::accessIssues');
public function listStatus($request, $match)
{
$prj = $request->project;
/**
* View list of issues for a given project with a given label.
*/
public $listLabel_precond = array('IDF_Precondition::accessIssues');
public function listLabel($request, $match)
{
$prj = $request->project;
src/IDF/Views/Project.php
3939
4040
4141
42
43
44
42
43
44
45
46
47
4548
4649
4750
......
201204
202205
203206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
204252
$prj = $request->project;
$team = $prj->getMembershipData();
$title = (string) $prj;
$tags = IDF_Views_Download::getDownloadTags($prj);
// the first tag is the featured, the last is the deprecated.
$downloads = $tags[0]->get_idf_upload_list();
$downloads = array();
if ($request->rights['hasDownloadsAccess']) {
$tags = IDF_Views_Download::getDownloadTags($prj);
// the first tag is the featured, the last is the deprecated.
$downloads = $tags[0]->get_idf_upload_list();
}
return Pluf_Shortcuts_RenderToResponse('project-home.html',
array(
'page_title' => $title,
),
$request);
}
/**
* Administrate the access rights to the tabs.
*/
public $adminTabs_precond = array('IDF_Precondition::projectOwner');
public function adminTabs($request, $match)
{
$prj = $request->project;
$title = sprintf(__('%s Tabs Access Rights'), (string) $prj);
$extra = array(
'conf' => $request->conf,
);
if ($request->method == 'POST') {
$form = new IDF_Form_TabsConf($request->POST, $extra);
if ($form->isValid()) {
foreach ($form->cleaned_data as $key=>$val) {
$request->conf->setVal($key, $val);
}
$request->user->setMessage(__('The project tabs access rights have been saved.'));
$url = Pluf_HTTP_URL_urlForView('IDF_Views_Project::adminTabs',
array($prj->shortname));
return new Pluf_HTTP_Response_Redirect($url);
}
} else {
$params = array();
$keys = array('downloads_access_rights', 'source_access_rights',
'issues_access_rights');
foreach ($keys as $key) {
$_val = $request->conf->getVal($key, false);
if ($_val !== false) {
$params[$key] = $_val;
}
}
if (count($params) == 0) {
$params = null; //Nothing in the db, so new form.
}
$form = new IDF_Form_TabsConf($params, $extra);
}
return Pluf_Shortcuts_RenderToResponse('admin/tabs.html',
array(
'page_title' => $title,
'form' => $form,
),
$request);
}
}
src/IDF/Views/Source.php
3131
3232
3333
34
3435
3536
3637
......
4950
5051
5152
53
5254
5355
5456
......
7880
7981
8082
83
8184
8285
8386
......
149152
150153
151154
155
152156
153157
154158
......
182186
183187
184188
189
185190
186191
187192
*/
class IDF_Views_Source
{
public $changeLog_precond = array('IDF_Precondition::accessSource');
public function changeLog($request, $match)
{
$title = sprintf(__('%s Git Change Log'), (string) $request->project);
$request);
}
public $treeBase_precond = array('IDF_Precondition::accessSource');
public function treeBase($request, $match)
{
$title = sprintf(__('%s Git Source Tree'), (string) $request->project);
$request);
}
public $tree_precond = array('IDF_Precondition::accessSource');
public function tree($request, $match)
{
$title = sprintf(__('%s Git Source Tree'), (string) $request->project);
return '<span class="breadcrumb">'.implode('<span class="sep">'.$sep.'</span>', $out).'</span>';
}
public $commit_precond = array('IDF_Precondition::accessSource');
public function commit($request, $match)
{
$git = new IDF_Git($request->project->getGitRepository());
* Get a zip archive of the current commit.
*
*/
public $download_precond = array('IDF_Precondition::accessSource');
public function download($request, $match)
{
$commit = trim($match[2]);
src/IDF/conf/idf.php-dist
103103
104104
105105
106
107106
107
108108
109109
110110
$cfg['installed_apps'] = array('Pluf', 'IDF');
$cfg['pluf_use_rowpermission'] = true;
$cfg['middleware_classes'] = array(
'IDF_Middleware',
'Pluf_Middleware_Session',
'IDF_Middleware',
'Pluf_Middleware_Translation',
);
$cfg['template_context_processors'] = array('IDF_Middleware_ContextPreProcessor');
src/IDF/conf/views.php
206206
207207
208208
209
210
211
212
213
214
209215
'model' => 'IDF_Views_Project',
'method' => 'adminMembers');
$ctl[] = array('regex' => '#^/p/(\w+)/admin/tabs/$#',
'base' => $base,
'priority' => 4,
'model' => 'IDF_Views_Project',
'method' => 'adminTabs');
return $ctl;
src/IDF/locale/fr/idf.po
22
33
44
5
6
5
6
77
88
99
......
101101
102102
103103
104
104105
105106
106107
......
186187
187188
188189
190
189191
190192
191193
192194
193195
196
194197
195198
196199
197200
201
198202
199203
200204
201205
202206
207
203208
204209
205210
206211
212
207213
208214
209215
210216
211217
218
212219
213220
214221
215222
223
216224
217225
218226
219227
220228
229
221230
222231
223232
224233
234
225235
226236
227237
228238
229239
230240
241
231242
232243
233244
......
237248
238249
239250
251
252
240253
241254
242255
......
252265
253266
254267
268
269
270
271
272
273
255274
256275
257276
......
260279
261280
262281
282
283
263284
264285
265286
......
267288
268289
269290
291
292
270293
271294
272295
......
274297
275298
276299
300
301
277302
278303
279304
280305
281306
307
282308
283309
284310
......
286312
287313
288314
315
289316
290317
291318
......
295322
296323
297324
325
298326
299327
300328
301329
302330
303331
332
304333
305334
306335
307336
308337
338
309339
310340
311341
312342
313343
314344
345
346
315347
316348
317349
......
319351
320352
321353
354
355
356
357
322358
323359
324360
......
328364
329365
330366
367
368
369
370
331371
332372
333373
......
335375
336376
337377
378
379
380
381
338382
339383
340384
......
342386
343387
344388
389
390
391
392
345393
346394
347395
348396
397
349398
350399
351400
352401
353402
403
354404
355405
356406
357407
358408
409
359410
360411
361412
362413
414
363415
364416
365417
366418
367419
420
368421
369422
370423
371424
372425
426
373427
374428
375429
376430
377431
432
378433
379434
380435
381436
382437
438
383439
384440
385441
386442
443
387444
388445
389446
390447
391448
449
392450
393451
394452
395453
396454
455
397456
398457
399458
......
429488
430489
431490
491
432492
433493
434494
435495
436496
437497
498
438499
439500
440501
441502
503
442504
443505
444506
......
636698
637699
638700
701
639702
640703
641704
......
12141277
12151278
12161279
1280
12171281
12181282
12191283
12201284
1285
12211286
12221287
12231288
12241289
1290
12251291
12261292
12271293
12281294
12291295
12301296
1297
1298
12311299
12321300
12331301
12341302
12351303
1304
12361305
12371306
12381307
12391308
12401309
1310
12411311
12421312
12431313
12441314
12451315
12461316
1317
12471318
12481319
12491320
12501321
12511322
12521323
1324
12531325
12541326
12551327
......
12581330
12591331
12601332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
msgstr ""
"Project-Id-Version: InDefero\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2008-08-06 22:28+0200\n"
"PO-Revision-Date: 2008-08-06 22:30+0100\n"
"POT-Creation-Date: 2008-08-07 15:31+0200\n"
"PO-Revision-Date: 2008-08-07 15:34+0100\n"
"Last-Translator: Loïc d'Anterroches <titoo@users.sourceforge.net>\n"
"Language-Team: Translation team <titoo@users.sourceforge.net>\n"
"MIME-Version: 1.0\n"
msgstr "date de modification"
#: IDF/Middleware.php:50
#: IDF/Middleware.php:51
#, php-format
msgid "The page <em>%s</em> was not found on the server."
msgstr "Cette page <em>%s</em> n'a pas été trouvée sur le serveur."
msgstr "Ici pour vous aider !"
#: IDF/Views/Project.php:62
#: IDF/Views/Project.php:65
#, php-format
msgid "%s Project Summary"
msgstr "Résumé du projet %s"
#: IDF/Views/Project.php:69
#: IDF/Views/Project.php:72
msgid "The project has been updated."
msgstr "Le projet a été mis à jour."
#: IDF/Views/Project.php:93
#: IDF/Views/Project.php:96
#, php-format
msgid "%s Issue Tracking Configuration"
msgstr "Configuration du gestionnaire de tickets de %s"
#: IDF/Views/Project.php:102
#: IDF/Views/Project.php:105
msgid "The issue tracking configuration has been saved."
msgstr "La configuration du gestionnaire de tickets a été sauvegardée."
#: IDF/Views/Project.php:137
#: IDF/Views/Project.php:140
#, php-format
msgid "%s Downloads Configuration"
msgstr "Configuration des Téléchargements de %s"
#: IDF/Views/Project.php:146
#: IDF/Views/Project.php:149
msgid "The downloads configuration has been saved."
msgstr "La configuration des téléchargements a été sauvegardée."
#: IDF/Views/Project.php:180
#: IDF/Views/Project.php:183
#, php-format
msgid "%s Project Members"
msgstr "Membres du projet %s"
#: IDF/Views/Project.php:189
#: IDF/Views/Project.php:192
msgid "The project membership has been saved."
msgstr "Les membres du projet ont été sauvegardés."
#: IDF/Views/Download.php:44
#: IDF/Views/Download.php:45
#, php-format
msgid "%s Downloads"
msgstr "Téléchargements de %s"
#: IDF/Views/Download.php:50
#: IDF/Views/Download.php:52
#: IDF/Views/Download.php:51
msgid "This table shows the files to download."
msgstr "Ce tableau présente la liste des fichiers en téléchargement."
#: IDF/Views/Download.php:56
#: IDF/Views/Download.php:212
#: IDF/Views/Download.php:218
#: IDF/Views/Download.php:55
#: IDF/Views/Download.php:223
msgid "File"
msgstr "Fichier"
#: IDF/Views/Download.php:57
#: IDF/Views/Download.php:213
#: IDF/Views/Download.php:219
#: IDF/Views/Download.php:56
#: IDF/Views/Download.php:224
#: IDF/Views/Issue.php:58
#: IDF/Views/Issue.php:111
#: IDF/Views/Issue.php:233
#: IDF/Views/Issue.php:287
msgid "Summary"
msgstr "Résumé"
#: IDF/Views/Download.php:58
#: IDF/Views/Download.php:214
#: IDF/Views/Download.php:220
#: IDF/Views/Download.php:57
#: IDF/Views/Download.php:225
msgid "Size"
msgstr "Taille"
#: IDF/Views/Download.php:59
#: IDF/Views/Download.php:215
#: IDF/Views/Download.php:221
#: IDF/Views/Download.php:58
#: IDF/Views/Download.php:226
msgid "Uploaded"
msgstr "Mis en ligne"
#: IDF/Views/Download.php:63
#: IDF/Views/Download.php:219
#: IDF/Views/Download.php:225
#: IDF/Views/Download.php:62
#: IDF/Views/Download.php:230
msgid "No downloads were found."
msgstr "Aucun fichier n'a été trouvé."
#: IDF/Views/Download.php:81
#: IDF/Views/Download.php:83
#: IDF/Views/Download.php:85
#, php-format
msgid "Download %s"
msgstr "Télécharger %s"
#: IDF/Views/Download.php:94
#: IDF/Views/Download.php:96
#: IDF/Views/Download.php:100
#: IDF/Views/Download.php:102
#, php-format
msgid "The file <a href=\"%1$s\">%2$s</a> has been updated."
msgstr "Le fichier <a href=\"%1$s\">%2$s</a> a été mis à jour."
#: IDF/gettexttemplates/downloads/index.html.php:3
#: IDF/Views/Download.php:137
#: IDF/Views/Download.php:143
#: IDF/Views/Download.php:147
msgid "New Download"
msgstr "Nouveau téléchargement"
#: IDF/Views/Download.php:144
#: IDF/Views/Download.php:146
#: IDF/Views/Download.php:152
#: IDF/Views/Download.php:156
#, php-format
msgid "The <a href=\"%s\">file</a> has been uploaded."
msgstr "Le <a href=\"%s\">fichier</a> a été mis en ligne."
#: IDF/Views/Issue.php:40
#: IDF/Views/Issue.php:41
#, php-format
msgid "%s Recent Issues"
msgstr "Tickets récents de %s"
#: IDF/Views/Issue.php:49
#: IDF/Views/Issue.php:103
#: IDF/Views/Issue.php:50
#: IDF/Views/Issue.php:105
msgid "This table shows the open recent issues."
msgstr "Ce tableau montre les tickets récents."
#: IDF/Views/Issue.php:108
#: IDF/Views/Issue.php:227
#: IDF/Views/Issue.php:280
#: IDF/Views/Issue.php:57
#: IDF/Views/Issue.php:110
#: IDF/Views/Issue.php:232
#: IDF/Views/Issue.php:286
msgid "Id"
msgstr "Id"
#: IDF/Views/Issue.php:282
#: IDF/Form/IssueCreate.php:70
#: IDF/Form/IssueUpdate.php:66
#: IDF/Views/Issue.php:59
#: IDF/Views/Issue.php:112
#: IDF/Views/Issue.php:234
#: IDF/Views/Issue.php:288
msgid "Status"
msgstr "Statut"
#: IDF/Views/Issue.php:111
#: IDF/Views/Issue.php:230
#: IDF/Views/Issue.php:283
#: IDF/Views/Issue.php:60
#: IDF/Views/Issue.php:113
#: IDF/Views/Issue.php:235
#: IDF/Views/Issue.php:289
msgid "Last Updated"
msgstr "Dernière mise à jour"
#: IDF/Views/Issue.php:115
#: IDF/Views/Issue.php:234
#: IDF/Views/Issue.php:287
#: IDF/Views/Issue.php:64
#: IDF/Views/Issue.php:117
#: IDF/Views/Issue.php:239
#: IDF/Views/Issue.php:293
msgid "No issues were found."
msgstr "Aucun ticket n'a été trouvé."
#: IDF/Views/Issue.php:87
#: IDF/Views/Issue.php:89
#, php-format
msgid "My Submitted %s Issues"
msgstr "Mes tickets soumis pour %s"
#: IDF/Views/Issue.php:90
#: IDF/Views/Issue.php:92
#, php-format
msgid "My Working %s Issues"
msgstr "Mes tickets en cours pour %s"
#: IDF/Views/Issue.php:131
#: IDF/Views/Issue.php:134
msgid "Submit a new issue"
msgstr "Soumettre un nouveau ticket"
#: IDF/Views/Issue.php:143
#: IDF/Views/Issue.php:146
#, php-format
msgid "<a href=\"%s\">Issue %d</a> has been created."
msgstr "Le <a href=\"%s\">ticket %d</a> a été créé."
#: IDF/Views/Issue.php:168
#: IDF/Views/Issue.php:172
#, php-format
msgid "Issue <a href=\"%s\">%d</a>: %s"
msgstr "Ticket <a href=\"%s\">%d</a> : %s"
#: IDF/Views/Issue.php:184
#: IDF/Views/Issue.php:188
#, php-format
msgid "<a href=\"%s\">Issue %d</a> has been updated."
msgstr "Le <a href=\"%s\">ticket %d</a> a été mise à jour."
#: IDF/Views/Issue.php:211
#: IDF/Views/Issue.php:216
#, php-format
msgid "%s Closed Issues"
msgstr "Tickets fermés de %s"
#: IDF/Views/Issue.php:220
#: IDF/Views/Issue.php:225
msgid "This table shows the closed issues."
msgstr "Ce tableau montre les tickets fermés."
#: IDF/Views/Issue.php:258
#: IDF/Views/Issue.php:264
#, php-format
msgid "%1$s Issues with Label %2$s"
msgstr "%1$s tickets avec l'étiquette %2$s"
#: IDF/Views/Issue.php:261
#: IDF/Views/Issue.php:267
#, php-format
msgid "%1$s Closed Issues with Label %2$s"
msgstr "Tickets fermés de %1$s avec l'étiquette %2$s"
#: IDF/Views/Issue.php:273
#: IDF/Views/Issue.php:279
#, php-format
msgid "This table shows the issues with label %s."
msgstr "Ce tableau montre les tickets avec l'étiquette %s."
msgstr "Page d'Accueil"
#: IDF/gettexttemplates/base.html.php:9
#: IDF/Form/TabsConf.php:36
msgid "Issues"
msgstr "Tickets"
#: IDF/gettexttemplates/base.html.php:10
#: IDF/gettexttemplates/downloads/base.html.php:3
#: IDF/gettexttemplates/admin/base.html.php:6
#: IDF/Form/TabsConf.php:34
msgid "Downloads"
msgstr "Téléchargements"
#: IDF/gettexttemplates/base.html.php:11
#: IDF/Form/TabsConf.php:35
msgid "Source"
msgstr "Source"
#: IDF/gettexttemplates/admin/issue-tracking.html.php:8
#: IDF/gettexttemplates/admin/members.html.php:13
#: IDF/gettexttemplates/admin/summary.html.php:8
#: IDF/gettexttemplates/admin/tabs.html.php:5
msgid "Save Changes"
msgstr "Enregistrer les changements"
msgstr "Aucun changement n'a été entré."
#: IDF/Form/MembersConf.php:46
#: IDF/Form/TabsConf.php:47
msgid "Project owners"
msgstr "Propriétaires du projet"
#: IDF/Form/MembersConf.php:54
#: IDF/Form/TabsConf.php:46
msgid "Project members"
msgstr "Membres du projet"
#: IDF/Views/Source.php:36
#: IDF/Views/Source.php:37
#, php-format
msgid "%s Git Change Log"
msgstr "Changements Git de %s"
#: IDF/Views/Source.php:54
#: IDF/Views/Source.php:83
#: IDF/Views/Source.php:56
#: IDF/Views/Source.php:86
#, php-format
msgid "%s Git Source Tree"
msgstr "Arbre des sources Git de %s"
#: IDF/Views/Source.php:164
#: IDF/Views/Source.php:168
#, php-format
msgid "%s Commit Details"
msgstr "Détails d'un commit de %s"
#: IDF/Views/Source.php:165
#: IDF/Views/Source.php:169
#, php-format
msgid "%s Commit Details - %s"
msgstr "Détails d'un commit de %s - %s"
#: IDF/Views/Download.php:199
#: IDF/Views/Download.php:205
#: IDF/Views/Download.php:210
#, php-format
msgid "%1$s Downloads with Label %2$s"
msgstr "Téléchargements avec l'étiquette %2$s de %1$s"
#: IDF/Views/Download.php:207
#: IDF/Views/Download.php:213
#: IDF/Views/Download.php:218
#, php-format
msgid "This table shows the downloads with label %s."
msgstr "Ce tableau montre les téléchargements avec l'étiquette %s."
msgid "<strong>Attention!</strong> This file is marked as deprecated, download it only if you are sure you need this specific version."
msgstr "<strong>Attention !</strong> Ce fichier est marqué comme obsolète, téléchargez ce fichier uniquement si vous avez besoin de cette version."
#: IDF/Views/Project.php:215
#, php-format
msgid "%s Tabs Access Rights"
msgstr "Accès aux onglets de %s"
#: IDF/Views/Project.php:225
msgid "The project tabs access rights have been saved."
msgstr "Les droits d'accès aux onglets du projet ont été sauvegardés."
#: IDF/gettexttemplates/admin/base.html.php:7
msgid "Tabs Access"
msgstr "Accès aux onglets"
#: IDF/gettexttemplates/admin/tabs.html.php:3
msgid "You can configure here the project tabs access rights."
msgstr "Vous pouvez configurer ici les droits d'accès aux onglets."
#: IDF/gettexttemplates/admin/tabs.html.php:4
msgid "The form contains some errors. Please correct them to update the access rights."
msgstr "Le formulaire contient des erreurs. Merci de les corriger pour mettre à jour les droits d'accès."
#: IDF/gettexttemplates/admin/tabs.html.php:6
msgid "Instructions:"
msgstr "Instructions :"
#: IDF/Form/TabsConf.php:44
msgid "Open to all"
msgstr "Ouvert à tous"
#: IDF/Form/TabsConf.php:45
msgid "Signed in users"
msgstr "Utilisateurs authentifiés"
#: IDF/Form/TabsConf.php:48
msgid "Closed"
msgstr "Fermé"
src/IDF/locale/idf.pot
88
99
1010
11
11
1212
1313
1414
......
9292
9393
9494
95
95
9696
9797
9898
......
176176
177177
178178
179
179
180180
181181
182182
183183
184
184
185185
186186
187187
188
188
189189
190190
191191
192192
193
193
194194
195195
196196
197
197
198198
199199
200200
201201
202
202
203203
204204
205205
206
206
207207
208208
209209
210210
211
211
212212
213213
214214
215
215
216216
217217
218218
219219
220220
221
221222
222223
223224
224225
225226
226
227
228
227229
228230
229231
......
232234
233235
234236
237
238
235239
236240
237241
238242
239243
240
244
245
241246
242247
243248
244249
245250
251
246252
247253
248254
249255
250256
257
251258
252259
253260
254261
262
255263
256264
257265
258266
259267
260
268
261269
262270
263271
264272
265273
266274
267
275
268276
269277
270278
271279
272
280
273281
274282
275283
276284
277
285
278286
279287
280288
281289
282
290
291
283292
284293
285294
286295
287
296
297
288298
289299
290300
291301
292302
293
303
304
294305
295306
296307
297308
298
309
310
299311
300312
301313
302314
303
315
316
304317
305318
306319
307
320
308321
309322
310323
311324
312
325
313326
314327
315328
316329
317
330
318331
319332
320333
321
334
322335
323336
324337
325338
326
339
327340
328341
329342
330343
331
344
332345
333346
334347
335348
336
349
337350
338351
339352
340353
341
354
342355
343356
344357
345
358
346359
347360
348361
349362
350
363
351364
352365
353366
354367
355
368
356369
357370
358371
......
389402
390403
391404
392
405
393406
394407
395408
396409
397410
398
411
399412
400413
401414
402
415
403416
404417
405418
......
587600
588601
589602
603
590604
591605
592606
......
11431157
11441158
11451159
1146
1160
11471161
11481162
11491163
1150
1164
11511165
11521166
11531167
1154
1168
11551169
11561170
11571171
11581172
1159
1173
1174
11601175
11611176
11621177
11631178
1164
1179
11651180
11661181
11671182
11681183
1169
1184
11701185
11711186
11721187
11731188
11741189
1190
11751191
11761192
11771193
11781194
11791195
1196
11801197
11811198
11821199
......
11861203
11871204
11881205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2008-08-06 22:28+0200\n"
"POT-Creation-Date: 2008-08-07 15:31+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
msgid "modification date"
msgstr ""
#: IDF/Middleware.php:50
#: IDF/Middleware.php:50 IDF/Middleware.php:51
#, php-format
msgid "The page <em>%s</em> was not found on the server."
msgstr ""
msgid "Here to Help You!"
msgstr ""
#: IDF/Views/Project.php:62
#: IDF/Views/Project.php:62 IDF/Views/Project.php:65
#, php-format
msgid "%s Project Summary"
msgstr ""
#: IDF/Views/Project.php:69
#: IDF/Views/Project.php:69 IDF/Views/Project.php:72
msgid "The project has been updated."
msgstr ""
#: IDF/Views/Project.php:93
#: IDF/Views/Project.php:93 IDF/Views/Project.php:96
#, php-format
msgid "%s Issue Tracking Configuration"
msgstr ""
#: IDF/Views/Project.php:102
#: IDF/Views/Project.php:102 IDF/Views/Project.php:105
msgid "The issue tracking configuration has been saved."
msgstr ""
#: IDF/Views/Project.php:137
#: IDF/Views/Project.php:137 IDF/Views/Project.php:140
#, php-format
msgid "%s Downloads Configuration"
msgstr ""
#: IDF/Views/Project.php:146
#: IDF/Views/Project.php:146 IDF/Views/Project.php:149
msgid "The downloads configuration has been saved."
msgstr ""
#: IDF/Views/Project.php:180
#: IDF/Views/Project.php:180 IDF/Views/Project.php:183
#, php-format
msgid "%s Project Members"
msgstr ""
#: IDF/Views/Project.php:189
#: IDF/Views/Project.php:189 IDF/Views/Project.php:192
msgid "The project membership has been saved."
msgstr ""
#: IDF/Views/Download.php:44
#: IDF/Views/Download.php:44 IDF/Views/Download.php:45
#, php-format
msgid "%s Downloads"
msgstr ""
#: IDF/Views/Download.php:50 IDF/Views/Download.php:52
#: IDF/Views/Download.php:51
msgid "This table shows the files to download."
msgstr ""
#: IDF/Views/Download.php:54 IDF/gettexttemplates/source/tree.html.php:6
#: IDF/Form/Upload.php:49 IDF/Views/Download.php:56 IDF/Views/Download.php:212
#: IDF/Views/Download.php:218
#: IDF/Views/Download.php:218 IDF/Views/Download.php:55
#: IDF/Views/Download.php:223
msgid "File"
msgstr ""
#: IDF/Form/IssueCreate.php:50 IDF/Form/UpdateUpload.php:42
#: IDF/Form/IssueUpdate.php:45 IDF/Views/Download.php:57
#: IDF/Views/Download.php:213 IDF/Views/Download.php:219
#: IDF/Views/Download.php:56 IDF/Views/Download.php:224 IDF/Views/Issue.php:58
#: IDF/Views/Issue.php:111 IDF/Views/Issue.php:233 IDF/Views/Issue.php:287
msgid "Summary"
msgstr ""
#: IDF/Views/Download.php:56 IDF/gettexttemplates/source/tree.html.php:9
#: IDF/Views/Download.php:58 IDF/Views/Download.php:214
#: IDF/Views/Download.php:220
#: IDF/Views/Download.php:220 IDF/Views/Download.php:57
#: IDF/Views/Download.php:225
msgid "Size"
msgstr ""
#: IDF/Views/Download.php:57 IDF/Views/Download.php:59
#: IDF/Views/Download.php:215 IDF/Views/Download.php:221
#: IDF/Views/Download.php:58 IDF/Views/Download.php:226
msgid "Uploaded"
msgstr ""
#: IDF/Views/Download.php:61 IDF/Views/Download.php:63
#: IDF/Views/Download.php:219 IDF/Views/Download.php:225
#: IDF/Views/Download.php:62 IDF/Views/Download.php:230
msgid "No downloads were found."
msgstr ""
#: IDF/Views/Download.php:81 IDF/Views/Download.php:83
#: IDF/Views/Download.php:85
#, php-format
msgid "Download %s"
msgstr ""
#: IDF/Views/Download.php:94 IDF/Views/Download.php:96
#: IDF/Views/Download.php:100
#: IDF/Views/Download.php:100 IDF/Views/Download.php:102
#, php-format
msgid "The file <a href=\"%1$s\">%2$s</a> has been updated."
msgstr ""
#: IDF/Views/Download.php:135 IDF/gettexttemplates/downloads/base.html.php:4
#: IDF/gettexttemplates/downloads/index.html.php:3 IDF/Views/Download.php:137
#: IDF/Views/Download.php:143
#: IDF/Views/Download.php:143 IDF/Views/Download.php:147
msgid "New Download"
msgstr ""
#: IDF/Views/Download.php:144 IDF/Views/Download.php:146
#: IDF/Views/Download.php:152
#: IDF/Views/Download.php:152 IDF/Views/Download.php:156
#, php-format
msgid "The <a href=\"%s\">file</a> has been uploaded."
msgstr ""
#: IDF/Views/Issue.php:40
#: IDF/Views/Issue.php:40 IDF/Views/Issue.php:41
#, php-format
msgid "%s Recent Issues"
msgstr ""
#: IDF/Views/Issue.php:49 IDF/Views/Issue.php:103
#: IDF/Views/Issue.php:49 IDF/Views/Issue.php:103 IDF/Views/Issue.php:50
#: IDF/Views/Issue.php:105
msgid "This table shows the open recent issues."
msgstr ""
#: IDF/Views/Issue.php:56 IDF/Views/Issue.php:108 IDF/Views/Issue.php:227
#: IDF/Views/Issue.php:280
#: IDF/Views/Issue.php:280 IDF/Views/Issue.php:57 IDF/Views/Issue.php:110
#: IDF/Views/Issue.php:232 IDF/Views/Issue.php:286
msgid "Id"
msgstr ""
#: IDF/Views/Issue.php:58 IDF/Views/Issue.php:110 IDF/Views/Issue.php:229
#: IDF/Views/Issue.php:282 IDF/Form/IssueCreate.php:70
#: IDF/Form/IssueUpdate.php:66
#: IDF/Form/IssueUpdate.php:66 IDF/Views/Issue.php:59 IDF/Views/Issue.php:112
#: IDF/Views/Issue.php:234 IDF/Views/Issue.php:288
msgid "Status"
msgstr ""
#: IDF/Views/Issue.php:59 IDF/Views/Issue.php:111 IDF/Views/Issue.php:230
#: IDF/Views/Issue.php:283
#: IDF/Views/Issue.php:283 IDF/Views/Issue.php:60 IDF/Views/Issue.php:113
#: IDF/Views/Issue.php:235 IDF/Views/Issue.php:289
msgid "Last Updated"
msgstr ""
#: IDF/Views/Issue.php:63 IDF/Views/Issue.php:115 IDF/Views/Issue.php:234
#: IDF/Views/Issue.php:287
#: IDF/Views/Issue.php:287 IDF/Views/Issue.php:64 IDF/Views/Issue.php:117
#: IDF/Views/Issue.php:239 IDF/Views/Issue.php:293
msgid "No issues were found."
msgstr ""
#: IDF/Views/Issue.php:87
#: IDF/Views/Issue.php:87 IDF/Views/Issue.php:89
#, php-format
msgid "My Submitted %s Issues"
msgstr ""
#: IDF/Views/Issue.php:90
#: IDF/Views/Issue.php:90 IDF/Views/Issue.php:92
#, php-format
msgid "My Working %s Issues"
msgstr ""
#: IDF/Views/Issue.php:131
#: IDF/Views/Issue.php:131 IDF/Views/Issue.php:134
msgid "Submit a new issue"
msgstr ""
#: IDF/Views/Issue.php:143
#: IDF/Views/Issue.php:143 IDF/Views/Issue.php:146
#, php-format
msgid "<a href=\"%s\">Issue %d</a> has been created."
msgstr ""
#: IDF/Views/Issue.php:168
#: IDF/Views/Issue.php:168 IDF/Views/Issue.php:172
#, php-format
msgid "Issue <a href=\"%s\">%d</a>: %s"
msgstr ""
#: IDF/Views/Issue.php:184
#: IDF/Views/Issue.php:184 IDF/Views/Issue.php:188
#, php-format
msgid "<a href=\"%s\">Issue %d</a> has been updated."
msgstr ""
#: IDF/Views/Issue.php:211
#: IDF/Views/Issue.php:211 IDF/Views/Issue.php:216
#, php-format
msgid "%s Closed Issues"
msgstr ""
#: IDF/Views/Issue.php:220
#: IDF/Views/Issue.php:220 IDF/Views/Issue.php:225
msgid "This table shows the closed issues."
msgstr ""
#: IDF/Views/Issue.php:258
#: IDF/Views/Issue.php:258 IDF/Views/Issue.php:264
#, php-format
msgid "%1$s Issues with Label %2$s"
msgstr ""
#: IDF/Views/Issue.php:261
#: IDF/Views/Issue.php:261 IDF/Views/Issue.php:267
#, php-format
msgid "%1$s Closed Issues with Label %2$s"
msgstr ""
#: IDF/Views/Issue.php:273
#: IDF/Views/Issue.php:273 IDF/Views/Issue.php:279
#, php-format
msgid "This table shows the issues with label %s."
msgstr ""
msgid "Project Home"
msgstr ""
#: IDF/gettexttemplates/base.html.php:9
#: IDF/gettexttemplates/base.html.php:9 IDF/Form/TabsConf.php:36
msgid "Issues"
msgstr ""
#: IDF/gettexttemplates/base.html.php:10
#: IDF/gettexttemplates/downloads/base.html.php:3
#: IDF/gettexttemplates/admin/base.html.php:6
#: IDF/gettexttemplates/admin/base.html.php:6 IDF/Form/TabsConf.php:34
msgid "Downloads"
msgstr ""
#: IDF/gettexttemplates/base.html.php:11
#: IDF/gettexttemplates/base.html.php:11 IDF/Form/TabsConf.php:35
msgid "Source"
msgstr ""
#: IDF/gettexttemplates/admin/issue-tracking.html.php:8
#: IDF/gettexttemplates/admin/members.html.php:13
#: IDF/gettexttemplates/admin/summary.html.php:8
#: IDF/gettexttemplates/admin/tabs.html.php:5
msgid "Save Changes"
msgstr ""
msgid "No changes were entered."
msgstr ""
#: IDF/Form/MembersConf.php:46
#: IDF/Form/MembersConf.php:46 IDF/Form/TabsConf.php:47
msgid "Project owners"
msgstr ""
#: IDF/Form/MembersConf.php:54
#: IDF/Form/MembersConf.php:54 IDF/Form/TabsConf.php:46
msgid "Project members"
msgstr ""
#: IDF/Views/Source.php:36
#: IDF/Views/Source.php:36 IDF/Views/Source.php:37
#, php-format
msgid "%s Git Change Log"
msgstr ""
#: IDF/Views/Source.php:54 IDF/Views/Source.php:83
#: IDF/Views/Source.php:54 IDF/Views/Source.php:83 IDF/Views/Source.php:56
#: IDF/Views/Source.php:86
#, php-format
msgid "%s Git Source Tree"
msgstr ""
#: IDF/Views/Source.php:164
#: IDF/Views/Source.php:164 IDF/Views/Source.php:168
#, php-format
msgid "%s Commit Details"
msgstr ""
#: IDF/Views/Source.php:165
#: IDF/Views/Source.php:165 IDF/Views/Source.php:169
#, php-format
msgid "%s Commit Details - %s"
msgstr ""
#: IDF/Views/Download.php:199 IDF/Views/Download.php:205
#: IDF/Views/Download.php:210
#, php-format
msgid "%1$s Downloads with Label %2$s"
msgstr ""
#: IDF/Views/Download.php:207 IDF/Views/Download.php:213
#: IDF/Views/Download.php:218
#, php-format
msgid "This table shows the downloads with label %s."
msgstr ""
"<strong>Attention!</strong> This file is marked as deprecated, download it "
"only if you are sure you need this specific version."
msgstr ""
#: IDF/Views/Project.php:215
#, php-format
msgid "%s Tabs Access Rights"
msgstr ""
#: IDF/Views/Project.php:225
msgid "The project tabs access rights have been saved."
msgstr ""
#: IDF/gettexttemplates/admin/base.html.php:7
msgid "Tabs Access"
msgstr ""
#: IDF/gettexttemplates/admin/tabs.html.php:3
msgid "You can configure here the project tabs access rights."
msgstr ""
#: IDF/gettexttemplates/admin/tabs.html.php:4
msgid ""
"The form contains some errors. Please correct them to update the access "
"rights."
msgstr ""
#: IDF/gettexttemplates/admin/tabs.html.php:6
msgid "Instructions:"
msgstr ""
#: IDF/Form/TabsConf.php:44
msgid "Open to all"
msgstr ""
#: IDF/Form/TabsConf.php:45
msgid "Signed in users"
msgstr ""
#: IDF/Form/TabsConf.php:48
msgid "Closed"
msgstr ""
src/IDF/templates/admin/base.html
55
66
77
8
8
9
910
1011
<a {if $inSummary}class="active" {/if}href="{url 'IDF_Views_Project::admin', array($project.shortname)}">{trans 'Project Summary'}</a> |
<a {if $inMembers}class="active" {/if}href="{url 'IDF_Views_Project::adminMembers', array($project.shortname)}">{trans 'Project Members'}</a> |
<a {if $inIssueTracking}class="active" {/if}href="{url 'IDF_Views_Project::adminIssues', array($project.shortname)}">{trans 'Issue Tracking'}</a> |
<a {if $inDownloads}class="active" {/if}href="{url 'IDF_Views_Project::adminDownloads', array($project.shortname)}">{trans 'Downloads'}</a>
<a {if $inDownloads}class="active" {/if}href="{url 'IDF_Views_Project::adminDownloads', array($project.shortname)}">{trans 'Downloads'}</a> |
<a {if $inTabs}class="active" {/if}href="{url 'IDF_Views_Project::adminTabs', array($project.shortname)}">{trans 'Tabs Access'}</a>
</div>
{/block}
src/IDF/templates/admin/tabs.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
{extends "admin/base.html"}
{block docclass}yui-t1{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" summary="">
<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>
</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>
</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>
</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">
<p><strong>{trans 'Instructions:'}</strong></p>
<p>{blocktrans}You can configure here the project tabs access rights.{/blocktrans}</p>
</div>
{/block}
src/IDF/templates/base.html
4242
4343
4444
45
46
47
45
46
47
4848
4949
5050
<div id="main-tabs">
{if $project}
<a href="{url 'IDF_Views_Project::home', array($project.shortname)}"{block tabhome}{/block}>{trans 'Project Home'}</a>
<a href="{url 'IDF_Views_Issue::index', array($project.shortname)}"{block tabissues}{/block}>{trans 'Issues'}</a>
<a href="{url 'IDF_Views_Download::index', array($project.shortname)}"{block tabdownloads}{/block}>{trans 'Downloads'}</a>
<a href="{url 'IDF_Views_Source::treeBase', array($project.shortname, 'master')}"{block tabsource}{/block}>{trans 'Source'}</a>
{if $hasIssuesAccess} <a href="{url 'IDF_Views_Issue::index', array($project.shortname)}"{block tabissues}{/block}>{trans 'Issues'}</a>{/if}
{if $hasDownloadsAccess} <a href="{url 'IDF_Views_Download::index', array($project.shortname)}"{block tabdownloads}{/block}>{trans 'Downloads'}</a>{/if}
{if $hasSourceAccess} <a href="{url 'IDF_Views_Source::treeBase', array($project.shortname, 'master')}"{block tabsource}{/block}>{trans 'Source'}</a>{/if}
{if $isOwner}
<a href="{url 'IDF_Views_Project::admin', array($project.shortname)}"{block tabadmin}{/block}>{trans 'Administer'}</a>{/if}{/if}
</div>
src/IDF/templates/issues/view.html
1313
1414
1515
16
16
1717
1818
1919
<p>{blocktrans}Comment <a href="{$url}">{$i}</a> by {$who}, {$c.creation_dtime|date}{/blocktrans}</p>
{/if}
<pre class="issue-comment-text">{if strlen($c.content) > 0}{issuetext $c.content, $project}{else}<i>{trans '(No comments were given for this change.)'}</i>{/if}</pre>
<pre class="issue-comment-text">{if strlen($c.content) > 0}{issuetext $c.content, $request}{else}<i>{trans '(No comments were given for this change.)'}</i>{/if}</pre>
{if $i> 0 and $c.changedIssue()}
<div class="issue-changes">
src/IDF/templates/js-hotkeys.html
33
44
55
6
7
8
9
10
6
7
8
9
10
1111
1212
1313
<script type="text/javascript" charset="utf-8">
// <!--
{hotkey 'Shift+h', 'IDF_Views_Project::home', array($project.shortname)}
{hotkey 'Shift+a', 'IDF_Views_Issue::create', array($project.shortname)}
{hotkey 'Shift+i', 'IDF_Views_Issue::index', array($project.shortname)}
{hotkey 'Shift+d', 'IDF_Views_Download::index', array($project.shortname)}
{hotkey 'Shift+s', 'IDF_Views_Source::treeBase', array($project.shortname, 'master')}
{if !$user.isAnonymous()}
{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 $hasSourceAccess}{hotkey 'Shift+s', 'IDF_Views_Source::treeBase', array($project.shortname, 'master')}{/if}
{if $hasIssuesAccess and !$user.isAnonymous()}
{hotkey 'Shift+m', 'IDF_Views_Issue::myIssues', array($project.shortname, 'submit')}
{hotkey 'Shift+w', 'IDF_Views_Issue::myIssues', array($project.shortname, 'owner')}
{/if} //-->
src/IDF/templates/project-home.html
1010
1111
1212
13
13
1414
1515
1616
{$project.description|markdown}
{/block}
{block context}
{if $downloads.count() > 0}
{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 />
src/IDF/templates/source/changelog.html
1414
1515
1616
17
17
1818
1919
2020
{aurl 'url', 'IDF_Views_Source::commit', array($project.shortname, $change.commit)}
<tr class="log">
<td><a href="{$url}">{$change.date|dateago:"wihtout"}</a></td>
<td>{issuetext $change.title, $project}{if $change.full_message}<br /><br />{issuetext $change.full_message, $project}{/if}</td>
<td>{issuetext $change.title, $request}{if $change.full_message}<br /><br />{issuetext $change.full_message, $request}{/if}</td>
</tr>
<tr class="extra">
<td colspan="2">
src/IDF/templates/source/commit.html
1515
1616
1717
18
18
1919
2020
2121
<th><strong>{trans 'Tree:'}</strong></th><td class="mono"><a href="{url 'IDF_Views_Source::treeBase', array($project.shortname, $commit)}" title="{trans 'View corresponding source tree'}">{$cobject.tree}</a><br /><br /></td>
</tr>
<tr>
<th><strong>{trans 'Message:'}</strong></th><td>{issuetext $cobject.title, $project}{if isset($cobject.full_message)}<br /><br />{issuetext $cobject.full_message, $project}{/if}</td>
<th><strong>{trans 'Message:'}</strong></th><td>{issuetext $cobject.title, $request}{if isset($cobject.full_message)}<br /><br />{issuetext $cobject.full_message, $request}{/if}</td>
</tr>
{if count($diff.files)}
<tr>

Archive Download the corresponding diff file