Split project controller into multiple classes

This commit is contained in:
Frederic Guillot
2016-05-25 22:28:09 -04:00
parent 872dc79dbd
commit ff892c5d25
29 changed files with 397 additions and 335 deletions

View File

@@ -1,14 +0,0 @@
<div class="page-header">
<h2><?= t('Project activation') ?></h2>
</div>
<div class="confirm">
<p class="alert alert-info">
<?= t('Do you really want to disable this project: "%s"?', $project['name']) ?>
</p>
<div class="form-actions">
<?= $this->url->link(t('Yes'), 'project', 'disable', array('project_id' => $project['id'], 'disable' => 'yes'), true, 'btn btn-red') ?>
<?= t('or') ?> <?= $this->url->link(t('cancel'), 'project', 'show', array('project_id' => $project['id'])) ?>
</div>
</div>

View File

@@ -37,7 +37,7 @@
<?php if ($this->user->hasProjectAccess('ProjectEdit', 'edit', $project['id'])): ?>
<li>
<i class="fa fa-cog fa-fw"></i>
<?= $this->url->link(t('Settings'), 'project', 'show', array('project_id' => $project['id'])) ?>
<?= $this->url->link(t('Settings'), 'ProjectViewController', 'show', array('project_id' => $project['id'])) ?>
</li>
<?php endif ?>
</ul>

View File

@@ -1,28 +0,0 @@
<div class="page-header">
<h2><?= t('Clone this project') ?></h2>
</div>
<div class="confirm">
<p class="alert alert-info">
<?= t('Which parts of the project do you want to duplicate?') ?>
</p>
<form method="post" action="<?= $this->url->href('project', 'duplicate', array('project_id' => $project['id'], 'duplicate' => 'yes')) ?>" autocomplete="off">
<?= $this->form->csrf() ?>
<?php if ($project['is_private'] == 0): ?>
<?= $this->form->checkbox('projectPermission', t('Permissions'), 1, true) ?>
<?php endif ?>
<?= $this->form->checkbox('category', t('Categories'), 1, true) ?>
<?= $this->form->checkbox('action', t('Actions'), 1, true) ?>
<?= $this->form->checkbox('swimlane', t('Swimlanes'), 1, false) ?>
<?= $this->form->checkbox('task', t('Tasks'), 1, false) ?>
<?= $this->form->checkbox('projectMetadata', t('Metadata'), 1, false) ?>
<div class="form-actions">
<button type="submit" class="btn btn-red"><?= t('Duplicate') ?></button>
<?= t('or') ?> <?= $this->url->link(t('cancel'), 'project', 'show', array('project_id' => $project['id'])) ?>
</div>
</form>
</div>

View File

@@ -1,14 +0,0 @@
<div class="page-header">
<h2><?= t('Project activation') ?></h2>
</div>
<div class="confirm">
<p class="alert alert-info">
<?= t('Do you really want to enable this project: "%s"?', $project['name']) ?>
</p>
<div class="form-actions">
<?= $this->url->link(t('Yes'), 'project', 'enable', array('project_id' => $project['id'], 'enable' => 'yes'), true, 'btn btn-red') ?>
<?= t('or') ?> <?= $this->url->link(t('cancel'), 'project', 'show', array('project_id' => $project['id'])) ?>
</div>
</div>

View File

@@ -1,85 +0,0 @@
<section id="main">
<div class="page-header">
<ul>
<?php if ($this->user->hasAccess('projectuser', 'managers')): ?>
<li><i class="fa fa-user fa-fw"></i><?= $this->url->link(t('Users overview'), 'projectuser', 'managers') ?></li>
<?php endif ?>
<?php if ($this->user->hasAccess('gantt', 'projects')): ?>
<li><i class="fa fa-sliders fa-fw"></i><?= $this->url->link(t('Projects Gantt chart'), 'gantt', 'projects') ?></li>
<?php endif ?>
</ul>
</div>
<?php if ($paginator->isEmpty()): ?>
<p class="alert"><?= t('No project') ?></p>
<?php else: ?>
<table class="table-stripped table-small">
<tr>
<th class="column-3"><?= $paginator->order(t('Id'), 'id') ?></th>
<th class="column-5"><?= $paginator->order(t('Status'), 'is_active') ?></th>
<th class="column-15"><?= $paginator->order(t('Project'), 'name') ?></th>
<th class="column-8"><?= $paginator->order(t('Start date'), 'start_date') ?></th>
<th class="column-8"><?= $paginator->order(t('End date'), 'end_date') ?></th>
<th class="column-15"><?= $paginator->order(t('Owner'), 'owner_id') ?></th>
<?php if ($this->user->hasAccess('projectuser', 'managers')): ?>
<th class="column-10"><?= t('Users') ?></th>
<?php endif ?>
<th><?= t('Columns') ?></th>
</tr>
<?php foreach ($paginator->getCollection() as $project): ?>
<tr>
<td>
<?= $this->render('project/dropdown', array('project' => $project)) ?>
</td>
<td>
<?php if ($project['is_active']): ?>
<?= t('Active') ?>
<?php else: ?>
<?= t('Inactive') ?>
<?php endif ?>
</td>
<td>
<?= $this->url->link($this->text->e($project['name']), 'board', 'show', array('project_id' => $project['id'])) ?>
<?php if ($project['is_public']): ?>
<i class="fa fa-share-alt fa-fw" title="<?= t('Shared project') ?>"></i>
<?php endif ?>
<?php if ($project['is_private']): ?>
<i class="fa fa-lock fa-fw" title="<?= t('Private project') ?>"></i>
<?php endif ?>
<?php if (! empty($project['description'])): ?>
<span class="tooltip" title="<?= $this->text->markdownAttribute($project['description']) ?>">
<i class="fa fa-info-circle"></i>
</span>
<?php endif ?>
</td>
<td>
<?= $this->dt->date($project['start_date']) ?>
</td>
<td>
<?= $this->dt->date($project['end_date']) ?>
</td>
<td>
<?php if ($project['owner_id'] > 0): ?>
<?= $this->text->e($project['owner_name'] ?: $project['owner_username']) ?>
<?php endif ?>
</td>
<?php if ($this->user->hasAccess('projectuser', 'managers')): ?>
<td>
<i class="fa fa-users fa-fw"></i>
<span class="tooltip" title="<?= t('Members') ?>" data-href="<?= $this->url->href('Projectuser', 'users', array('project_id' => $project['id'])) ?>"><?= t('Members') ?></span>
</td>
<?php endif ?>
<td class="dashboard-project-stats">
<?php foreach ($project['columns'] as $column): ?>
<strong title="<?= t('Task count') ?>"><?= $column['nb_tasks'] ?></strong>
<span><?= $this->text->e($column['title']) ?></span>
<?php endforeach ?>
</td>
</tr>
<?php endforeach ?>
</table>
<?= $paginator ?>
<?php endif ?>
</section>

View File

@@ -1,15 +0,0 @@
<div class="page-header">
<h2><?= t('Integration with third-party services') ?></h2>
</div>
<form method="post" action="<?= $this->url->href('project', 'integrations', array('project_id' => $project['id'])) ?>" autocomplete="off">
<?= $this->form->csrf() ?>
<?php $integrations = $this->hook->render('template:project:integrations', array('project' => $project, 'values' => $values, 'webhook_token' => $webhook_token)) ?>
<?php if (empty($integrations)): ?>
<p class="alert"><?= t('There is no integration registered at the moment.') ?></p>
<?php else: ?>
<?= $integrations ?>
<?php endif ?>
</form>

View File

@@ -1,20 +0,0 @@
<div class="page-header">
<h2><?= t('Notifications') ?></h2>
</div>
<?php if (empty($types)): ?>
<p class="alert"><?= t('No plugin has registered a project notification method. You can still configure individual notifications in your user profile.') ?></p>
<?php else: ?>
<form method="post" action="<?= $this->url->href('project', 'notifications', array('project_id' => $project['id'])) ?>" autocomplete="off">
<?= $this->form->csrf() ?>
<h4><?= t('Notification methods:') ?></h4>
<?= $this->form->checkboxes('notification_types', $types, $notifications) ?>
<div class="form-actions">
<button type="submit" class="btn btn-blue"><?= t('Save') ?></button>
<?= t('or') ?>
<?= $this->url->link(t('cancel'), 'project', 'show', array('project_id' => $project['id'])) ?>
</div>
</form>
<?php endif ?>

View File

@@ -1,14 +0,0 @@
<div class="page-header">
<h2><?= t('Remove project') ?></h2>
</div>
<div class="confirm">
<p class="alert alert-info">
<?= t('Do you really want to remove this project: "%s"?', $project['name']) ?>
</p>
<div class="form-actions">
<?= $this->url->link(t('Yes'), 'project', 'remove', array('project_id' => $project['id'], 'remove' => 'yes'), true, 'btn btn-red') ?>
<?= t('or') ?> <?= $this->url->link(t('cancel'), 'project', 'show', array('project_id' => $project['id'])) ?>
</div>
</div>

View File

@@ -1,19 +0,0 @@
<div class="page-header">
<h2><?= t('Public access') ?></h2>
</div>
<?php if ($project['is_public']): ?>
<div class="listing">
<ul class="no-bullet">
<li><strong><i class="fa fa-share-alt"></i> <?= $this->url->link(t('Public link'), 'board', 'readonly', array('token' => $project['token']), false, '', '', true) ?></strong></li>
<li><strong><i class="fa fa-rss-square"></i> <?= $this->url->link(t('RSS feed'), 'feed', 'project', array('token' => $project['token']), false, '', '', true) ?></strong></li>
<li><strong><i class="fa fa-calendar"></i> <?= $this->url->link(t('iCal feed'), 'ical', 'project', array('token' => $project['token']), false, '', '', true) ?></strong></li>
</ul>
</div>
<?= $this->url->link(t('Disable public access'), 'project', 'share', array('project_id' => $project['id'], 'switch' => 'disable'), true, 'btn btn-red') ?>
<?php else: ?>
<?= $this->url->link(t('Enable public access'), 'project', 'share', array('project_id' => $project['id'], 'switch' => 'enable'), true, 'btn btn-blue') ?>
<?php endif ?>

View File

@@ -1,85 +0,0 @@
<div class="page-header">
<h2><?= t('Summary') ?></h2>
</div>
<ul class="listing">
<li><strong><?= $project['is_active'] ? t('Active') : t('Inactive') ?></strong></li>
<?php if ($project['owner_id'] > 0): ?>
<li><?= t('Project owner: ') ?><strong><?= $this->text->e($project['owner_name'] ?: $project['owner_username']) ?></strong></li>
<?php endif ?>
<?php if ($project['is_private']): ?>
<li><i class="fa fa-lock"></i> <?= t('This project is private') ?></li>
<?php endif ?>
<?php if ($project['is_public']): ?>
<li><i class="fa fa-share-alt"></i> <?= $this->url->link(t('Public link'), 'board', 'readonly', array('token' => $project['token']), false, '', '', true) ?></li>
<li><i class="fa fa-rss-square"></i> <?= $this->url->link(t('RSS feed'), 'feed', 'project', array('token' => $project['token']), false, '', '', true) ?></li>
<li><i class="fa fa-calendar"></i> <?= $this->url->link(t('iCal feed'), 'ical', 'project', array('token' => $project['token'])) ?></li>
<?php else: ?>
<li><?= t('Public access disabled') ?></li>
<?php endif ?>
<?php if ($project['last_modified']): ?>
<li><?= t('Modified:').' '.$this->dt->datetime($project['last_modified']) ?></li>
<?php endif ?>
<?php if ($project['start_date']): ?>
<li><?= t('Start date: ').$this->dt->date($project['start_date']) ?></li>
<?php endif ?>
<?php if ($project['end_date']): ?>
<li><?= t('End date: ').$this->dt->date($project['end_date']) ?></li>
<?php endif ?>
<?php if ($stats['nb_tasks'] > 0): ?>
<?php if ($stats['nb_active_tasks'] > 0): ?>
<li><?= $this->url->link(t('%d tasks on the board', $stats['nb_active_tasks']), 'board', 'show', array('project_id' => $project['id'], 'search' => 'status:open')) ?></li>
<?php endif ?>
<?php if ($stats['nb_inactive_tasks'] > 0): ?>
<li><?= $this->url->link(t('%d closed tasks', $stats['nb_inactive_tasks']), 'listing', 'show', array('project_id' => $project['id'], 'search' => 'status:closed')) ?></li>
<?php endif ?>
<li><?= t('%d tasks in total', $stats['nb_tasks']) ?></li>
<?php else: ?>
<li><?= t('No task for this project') ?></li>
<?php endif ?>
</ul>
<div class="page-header">
<h2><?= t('Board') ?></h2>
</div>
<table class="table-stripped">
<tr>
<th class="column-60"><?= t('Column') ?></th>
<th class="column-20"><?= t('Task limit') ?></th>
<th class="column-20"><?= t('Active tasks') ?></th>
</tr>
<?php foreach ($stats['columns'] as $column): ?>
<tr>
<td>
<?= $this->text->e($column['title']) ?>
<?php if (! empty($column['description'])): ?>
<span class="tooltip" title="<?= $this->text->markdownAttribute($column['description']) ?>">
<i class="fa fa-info-circle"></i>
</span>
<?php endif ?>
</td>
<td><?= $column['task_limit'] ?: '∞' ?></td>
<td><?= $column['nb_active_tasks'] ?></td>
</tr>
<?php endforeach ?>
</table>
<?php if (! empty($project['description'])): ?>
<div class="page-header">
<h2><?= t('Description') ?></h2>
</div>
<article class="markdown">
<?= $this->text->markdown($project['description']) ?>
</article>
<?php endif ?>

View File

@@ -1,8 +1,8 @@
<div class="sidebar">
<h2><?= t('Actions') ?></h2>
<ul>
<li <?= $this->app->checkMenuSelection('project', 'show') ?>>
<?= $this->url->link(t('Summary'), 'project', 'show', array('project_id' => $project['id'])) ?>
<li <?= $this->app->checkMenuSelection('ProjectViewController', 'show') ?>>
<?= $this->url->link(t('Summary'), 'ProjectViewController', 'show', array('project_id' => $project['id'])) ?>
</li>
<?php if ($this->user->hasProjectAccess('customfilter', 'index', $project['id'])): ?>
<li <?= $this->app->checkMenuSelection('customfilter') ?>>
@@ -14,14 +14,14 @@
<li <?= $this->app->checkMenuSelection('ProjectEdit') ?>>
<?= $this->url->link(t('Edit project'), 'ProjectEdit', 'edit', array('project_id' => $project['id'])) ?>
</li>
<li <?= $this->app->checkMenuSelection('project', 'share') ?>>
<?= $this->url->link(t('Public access'), 'project', 'share', array('project_id' => $project['id'])) ?>
<li <?= $this->app->checkMenuSelection('ProjectViewController', 'share') ?>>
<?= $this->url->link(t('Public access'), 'ProjectViewController', 'share', array('project_id' => $project['id'])) ?>
</li>
<li <?= $this->app->checkMenuSelection('project', 'notifications') ?>>
<?= $this->url->link(t('Notifications'), 'project', 'notifications', array('project_id' => $project['id'])) ?>
<li <?= $this->app->checkMenuSelection('ProjectViewController', 'notifications') ?>>
<?= $this->url->link(t('Notifications'), 'ProjectViewController', 'notifications', array('project_id' => $project['id'])) ?>
</li>
<li <?= $this->app->checkMenuSelection('project', 'integrations') ?>>
<?= $this->url->link(t('Integrations'), 'project', 'integrations', array('project_id' => $project['id'])) ?>
<li <?= $this->app->checkMenuSelection('ProjectViewController', 'integrations') ?>>
<?= $this->url->link(t('Integrations'), 'ProjectViewController', 'integrations', array('project_id' => $project['id'])) ?>
</li>
<li <?= $this->app->checkMenuSelection('column') ?>>
<?= $this->url->link(t('Columns'), 'column', 'index', array('project_id' => $project['id'])) ?>
@@ -40,23 +40,23 @@
<li <?= $this->app->checkMenuSelection('action') ?>>
<?= $this->url->link(t('Automatic actions'), 'action', 'index', array('project_id' => $project['id'])) ?>
</li>
<li <?= $this->app->checkMenuSelection('project', 'duplicate') ?>>
<?= $this->url->link(t('Duplicate'), 'project', 'duplicate', array('project_id' => $project['id'])) ?>
<li <?= $this->app->checkMenuSelection('ProjectViewController', 'duplicate') ?>>
<?= $this->url->link(t('Duplicate'), 'ProjectViewController', 'duplicate', array('project_id' => $project['id'])) ?>
</li>
<?php if ($project['is_active']): ?>
<li <?= $this->app->checkMenuSelection('project', 'disable') ?>>
<?= $this->url->link(t('Disable'), 'project', 'disable', array('project_id' => $project['id']), true) ?>
<li>
<?= $this->url->link(t('Disable'), 'ProjectStatusController', 'confirmDisable', array('project_id' => $project['id']), false, 'popover') ?>
<?php else: ?>
<li <?= $this->app->checkMenuSelection('project', 'enable') ?>>
<?= $this->url->link(t('Enable'), 'project', 'enable', array('project_id' => $project['id']), true) ?>
<li>
<?= $this->url->link(t('Enable'), 'ProjectStatusController', 'confirmEnable', array('project_id' => $project['id']), false, 'popover') ?>
<?php endif ?>
</li>
<li <?= $this->app->checkMenuSelection('taskImport') ?>>
<?= $this->url->link(t('Import'), 'taskImport', 'step1', array('project_id' => $project['id'])) ?>
</li>
<?php if ($this->user->hasProjectAccess('project', 'remove', $project['id'])): ?>
<li <?= $this->app->checkMenuSelection('project', 'remove') ?>>
<?= $this->url->link(t('Remove'), 'project', 'remove', array('project_id' => $project['id'])) ?>
<?php if ($this->user->hasProjectAccess('ProjectStatusController', 'remove', $project['id'])): ?>
<li>
<?= $this->url->link(t('Remove'), 'ProjectStatusController', 'confirmRemove', array('project_id' => $project['id']), false, 'popover') ?>
</li>
<?php endif ?>
<?php endif ?>