diff options
Diffstat (limited to 'app/Template')
-rw-r--r-- | app/Template/board/task.php | 9 | ||||
-rw-r--r-- | app/Template/board/tasklinks.php | 28 | ||||
-rw-r--r-- | app/Template/config/sidebar.php | 3 | ||||
-rw-r--r-- | app/Template/link/edit.php | 49 | ||||
-rw-r--r-- | app/Template/link/index.php | 30 | ||||
-rw-r--r-- | app/Template/link/remove.php | 17 | ||||
-rw-r--r-- | app/Template/task/public.php | 7 | ||||
-rw-r--r-- | app/Template/task/show.php | 3 | ||||
-rw-r--r-- | app/Template/task/sidebar.php | 3 | ||||
-rw-r--r-- | app/Template/tasklink/edit.php | 53 | ||||
-rw-r--r-- | app/Template/tasklink/remove.php | 17 | ||||
-rw-r--r-- | app/Template/tasklink/show.php | 68 |
12 files changed, 283 insertions, 4 deletions
diff --git a/app/Template/board/task.php b/app/Template/board/task.php index 5cad4004..41bde065 100644 --- a/app/Template/board/task.php +++ b/app/Template/board/task.php @@ -100,7 +100,7 @@ <?php endif ?> -<?php if (! empty($task['date_due']) || ! empty($task['nb_files']) || ! empty($task['nb_comments']) || ! empty($task['description']) || ! empty($task['nb_subtasks'])): ?> +<?php if (! empty($task['date_due']) || ! empty($task['nb_files']) || ! empty($task['nb_comments']) || ! empty($task['description']) || ! empty($task['nb_subtasks']) || ! empty($task['nb_links'])): ?> <div class="task-board-footer"> <?php if (! empty($task['date_due'])): ?> @@ -110,7 +110,10 @@ <?php endif ?> <div class="task-board-icons"> - + <?php if (! empty($task['nb_links'])): ?> + <span title="<?= t('Links') ?>" class="task-board-tooltip" data-href="<?= $this->u('board', 'tasklinks', array('task_id' => $task['id'], 'project_id' => $task['project_id'])) ?>"><?= $task['nb_links'] ?> <i class="fa fa-code-fork"></i></span> + <?php endif ?> + <?php if (! empty($task['nb_subtasks'])): ?> <span title="<?= t('Sub-Tasks') ?>" class="task-board-tooltip" data-href="<?= $this->u('board', 'subtasks', array('task_id' => $task['id'], 'project_id' => $task['project_id'])) ?>"><?= round($task['nb_completed_subtasks']/$task['nb_subtasks']*100, 0).'%' ?> <i class="fa fa-bars"></i></span> <?php endif ?> @@ -132,4 +135,4 @@ </div> <?php endif ?> -</div>
\ No newline at end of file +</div> diff --git a/app/Template/board/tasklinks.php b/app/Template/board/tasklinks.php new file mode 100644 index 00000000..d7b64e1d --- /dev/null +++ b/app/Template/board/tasklinks.php @@ -0,0 +1,28 @@ +<section class="tooltip-tasklinks"> +<div> +<ul> +<?php +$previous_link = null; +foreach ($links as $link): ?> + <?php if (null == $previous_link || $previous_link != $link['label']): ?> + <?php if (null != $previous_link): ?> + </ul> + </li> + <?php endif ?> + <?php $previous_link = $link['label']; ?> + <li><?= t($this->e($link['label'])) ?> + <ul> + <?php endif ?> + <li<?php if (0 == $link['task_inverse_is_active']): ?> class="task-closed"<?php endif ?>> + <?= $this->e($link['task_inverse_category']) ?> + <?= $this->a('#'.$this->e($link['task_inverse_id']).' - '.trim($this->e($link['task_inverse_title'])), + 'task', + 'show', + array('task_id' => $link['task_inverse_id'], 'project_id' => $link['task_inverse_project_id'])) ?> + </li> +<?php endforeach ?> + </ul> + </li> +</ul> +</div> +</section> diff --git a/app/Template/config/sidebar.php b/app/Template/config/sidebar.php index 8e6fa379..a0ec8b36 100644 --- a/app/Template/config/sidebar.php +++ b/app/Template/config/sidebar.php @@ -11,6 +11,9 @@ <?= $this->a(t('Board settings'), 'config', 'board') ?> </li> <li> + <?= $this->a(t('Links settings'), 'link', 'index') ?> + </li> + <li> <?= $this->a(t('Webhooks'), 'config', 'webhook') ?> </li> <li> diff --git a/app/Template/link/edit.php b/app/Template/link/edit.php new file mode 100644 index 00000000..71d4f3ca --- /dev/null +++ b/app/Template/link/edit.php @@ -0,0 +1,49 @@ +<section id="link-edit-section"> +<?php use Model\Link; +if (! isset($edit)): ?> + <h3><?= t('Add a new link label') ?></h3> +<?php else: ?> +<div class="page-header"> + <h2><?= t('Edit the link label') ?></h2> +</div> +<?php endif ?> + +<form method="post" action="<?= $this->u('link', isset($edit) ? 'update' : 'save', array('project_id' => $project['id'], 'link_id' => @$values['id'])) ?>" autocomplete="off"> + <?= $this->formCsrf() ?> + + <?php if (isset($edit)): ?> + <?= $this->formHidden('link_id', $values) ?> + <?= $this->formHidden('id[0]', $values[0]) ?> + <?php if (isset($values[1])): ?> + <?= $this->formHidden('id[1]', $values[1]) ?> + <?php endif ?> + <?php endif ?> + <?= $this->formHidden('project_id', $values) ?> + + <?= $this->formLabel(t('Link Label'), 'label[0]') ?> + <?= $this->formText('label[0]', $values[0], $errors, array('required', 'autofocus', 'placeholder="'.t('precedes').'"')) ?> » + + <?= $this->formCheckbox('behaviour[0]', t('Bidrectional link label'), Link::BEHAVIOUR_BOTH, (isset($values[0]['behaviour']) && Link::BEHAVIOUR_BOTH == $values[0]['behaviour']), 'behaviour') ?> + + <div class="link-inverse-label"> + <?= $this->formLabel(t('Link Inverse Label'), 'label[1]') ?> + « <?= $this->formText('label[1]', isset($values[1]) ? $values[1] : $values, $errors, array('placeholder="'.t('follows').'"')) ?> + </div> + + <div class="form-actions"> + <input type="submit" value="<?= t('Save') ?>" class="btn btn-blue"/> + <?php if (isset($edit)): ?> + <?= t('or') ?> + <?= $this->a(t('cancel'), 'link', 'index', array('project_id' => $project['id'])) ?> + <?php endif ?> + </div> + <?php if (! isset($edit)): ?> + <div class="alert alert-info"> + <strong><?= t('Example:') ?></strong> + <i><?= t('#9 precedes #10') ?></i> + <?= t('and therefore') ?> + <i><?= t('#10 follows #9') ?></i> + </div> + <?php endif ?> +</form> +</section>
\ No newline at end of file diff --git a/app/Template/link/index.php b/app/Template/link/index.php new file mode 100644 index 00000000..0c19b614 --- /dev/null +++ b/app/Template/link/index.php @@ -0,0 +1,30 @@ +<div class="page-header"> + <h2><?= t('Link labels') ?></h2> +</div> + +<section> +<?php if (! empty($links)): ?> +<table> + <tr> + <th width="70%"><?= t('Link labels') ?></th> + <th><?= t('Actions') ?></th> + </tr> + <?php foreach ($links as $link): ?> + <tr> + <td><?= t($this->e($link['label'])) ?><?php if (isset($link['label_inverse']) && !empty($link['label_inverse'])): ?> | <?= t($this->e($link['label_inverse'])) ?><?php endif ?></td> + <td> + <ul> + <?= $this->a(t('Edit'), 'link', 'edit', array('link_id' => $link['link_id'], 'project_id' => $link['project_id'])) ?> + <?= t('or') ?> + <?= $this->a(t('Remove'), 'link', 'confirm', array('link_id' => $link['link_id'], 'project_id' => $link['project_id'])) ?> + </ul> + </td> + </tr> + <?php endforeach ?> +</table> +<?php else: ?> + <?= t('There is no link yet.') ?> +<?php endif ?> +</section> + +<?= $this->render('link/edit', array('values' => $values, 'errors' => $errors, 'project' => $project)) ?> diff --git a/app/Template/link/remove.php b/app/Template/link/remove.php new file mode 100644 index 00000000..d0b14b08 --- /dev/null +++ b/app/Template/link/remove.php @@ -0,0 +1,17 @@ +<section id="main"> + <div class="page-header"> + <h2><?= t('Remove a link') ?></h2> + </div> + + <div class="confirm"> + <p class="alert alert-info"> + <?= t('Do you really want to remove this link: "%s"?', t($link[0]['label']).(isset($link[1]['label']) ? ' | '.t($link[1]['label']) : '')) ?> + </p> + + <div class="form-actions"> + <?= $this->a(t('Yes'), 'link', 'remove', array('project_id' => $project['id'], 'link_id' => $link[0]['link_id']), true, 'btn btn-red') ?> + <?= t('or') ?> + <?= $this->a(t('cancel'), 'link', 'index', array('project_id' => $project['id'])) ?> + </div> + </div> +</section>
\ No newline at end of file diff --git a/app/Template/task/public.php b/app/Template/task/public.php index 2d95e6db..c66b2433 100644 --- a/app/Template/task/public.php +++ b/app/Template/task/public.php @@ -16,6 +16,13 @@ 'not_editable' => true )) ?> + <?= $this->render('tasklink/show', array( + 'task' => $task, + 'links' => $links, + 'project' => $project, + 'not_editable' => true + )) ?> + <?= $this->render('task/comments', array( 'task' => $task, 'comments' => $comments, diff --git a/app/Template/task/show.php b/app/Template/task/show.php index b8243cc6..f968a409 100644 --- a/app/Template/task/show.php +++ b/app/Template/task/show.php @@ -3,5 +3,6 @@ <?= $this->render('task/show_description', array('task' => $task)) ?> <?= $this->render('subtask/show', array('task' => $task, 'subtasks' => $subtasks)) ?> <?= $this->render('task/timesheet', array('task' => $task)) ?> +<?= $this->render('tasklink/show', array('task' => $task, 'links' => $links, 'link_list' => $link_list, 'task_list' => $task_list)) ?> <?= $this->render('file/show', array('task' => $task, 'files' => $files)) ?> -<?= $this->render('task/comments', array('task' => $task, 'comments' => $comments, 'project' => $project)) ?>
\ No newline at end of file +<?= $this->render('task/comments', array('task' => $task, 'comments' => $comments, 'project' => $project)) ?> diff --git a/app/Template/task/sidebar.php b/app/Template/task/sidebar.php index e85a1671..f41be14d 100644 --- a/app/Template/task/sidebar.php +++ b/app/Template/task/sidebar.php @@ -19,6 +19,9 @@ <?= $this->a(t('Add a sub-task'), 'subtask', 'create', array('task_id' => $task['id'], 'project_id' => $task['project_id'])) ?> </li> <li> + <?= $this->a(t('Add a link'), 'tasklink', 'create', array('task_id' => $task['id'], 'project_id' => $task['project_id'])) ?> + </li> + <li> <?= $this->a(t('Add a comment'), 'comment', 'create', array('task_id' => $task['id'], 'project_id' => $task['project_id'])) ?> </li> <li> diff --git a/app/Template/tasklink/edit.php b/app/Template/tasklink/edit.php new file mode 100644 index 00000000..e1fcded2 --- /dev/null +++ b/app/Template/tasklink/edit.php @@ -0,0 +1,53 @@ +<div class="page-header"> + <?php if (! isset($edit)): ?> + <h2><?= t('Add a link') ?></h2> + <?php else: ?> + <h2><?= t('Edit a link') ?></h2> + <?php endif ?> +</div> + +<?php if (!empty($link_list)): ?> +<form method="post" action="<?= $this->u('tasklink', isset($edit) ? 'update' : 'save', array('task_id' => $task['id'], 'link_id' => @$values['id'], 'project_id' => $task['project_id'])) ?>" autocomplete="off"> + + <?= $this->formCsrf() ?> + + <?php if (isset($edit)): ?> + <?= $this->formHidden('id', $values) ?> + <?= $this->formHidden('task_link_inverse_id', $values) ?> + <?php endif ?> + <?= $this->formHidden('task_id', $values) ?> + + #<?= $task['id'] ?> +   + <?= $this->formSelect('link_label_id', $link_list, $values, $errors, 'required autofocus') ?> +   + #<?= $this->formNumeric('task_inverse_id', $values, $errors, array('required', 'placeholder="'.t('Task id').'"', 'title="'.t('Linked task id').'"', 'list="task_inverse_ids"')) ?> + <?php if (!empty($task_list)): ?> + <datalist id="task_inverse_ids"> + <select> + <?php foreach ($task_list as $task_inverse_id => $task_inverse_title): ?> + <option value="<?= $task_inverse_id ?>">#<?= $task_inverse_id.' '.$task_inverse_title ?></option> + <?php endforeach ?> + </select> + </datalist> + <?php endif ?> + <br/> + + <?php if (! isset($edit)): ?> + <?= $this->formCheckbox('another_link', t('Create another link'), 1, isset($values['another_link']) && $values['another_link'] == 1) ?> + <?php endif ?> + + <div class="form-actions"> + <input type="submit" value="<?= t('Save') ?>" class="btn btn-blue"/> + <?= t('or') ?> + <?= $this->a(t('cancel'), 'task', 'show', array('task_id' => $task['id'], 'project_id' => $task['project_id'])) ?> + </div> +</form> +<?php else: ?> +<div class="alert alert-info"> + <?= t('You need to add link labels to this project before to link this task to another one.') ?> + <ul> + <li><?= $this->a(t('Add link labels'), 'link', 'index', array('project_id' => $task['project_id'])) ?></li> + </ul> +</div> +<?php endif ?> diff --git a/app/Template/tasklink/remove.php b/app/Template/tasklink/remove.php new file mode 100644 index 00000000..2ed87be7 --- /dev/null +++ b/app/Template/tasklink/remove.php @@ -0,0 +1,17 @@ +<div class="page-header"> + <h2><?= t('Remove a link') ?></h2> +</div> + +<div class="confirm"> + <p class="alert alert-info"> + <?= t('Do you really want to remove this link with task #%s?', $link['task_inverse_id']) ?> + <br /> + + </p> + + <div class="form-actions"> + <?= $this->a(t('Yes'), 'tasklink', 'remove', array('task_id' => $task['id'], 'link_id' => $link['id'], 'project_id' => $task['project_id']), true, 'btn btn-red') ?> + <?= t('or') ?> + <?= $this->a(t('cancel'), 'task', 'show', array('task_id' => $task['id'], 'project_id' => $task['project_id'])) ?> + </div> +</div>
\ No newline at end of file diff --git a/app/Template/tasklink/show.php b/app/Template/tasklink/show.php new file mode 100644 index 00000000..ac49d070 --- /dev/null +++ b/app/Template/tasklink/show.php @@ -0,0 +1,68 @@ +<?php if (! empty($links)): ?> +<aside id="links" class="task-show-section"> + <div class="page-header"> + <h2><?= t('Links') ?></h2> + </div> + + <table class="link-table"> + <tr> + <th><?= t('Label') ?></th> + <th width="70%"><?= t('Task') ?></th> + <?php if (! isset($not_editable)): ?> + <th><?= t('Actions') ?></th> + <?php endif ?> + </tr> + <?php $previous_link = null; + foreach ($links as $link): ?> + <tr> + <td> + <?php if (null == $previous_link || $previous_link != $link['label']): + $previous_link = $link['label']; ?> + <?= t($this->e($link['label'])) ?> + <?php endif ?> + </td> + <td> + <?php if (0 == $link['task_inverse_is_active']): ?><span class="task-closed"><?php endif ?> + <?= $this->e($link['task_inverse_category']) ?> + <?php if (! isset($not_editable)): ?> + <?= $this->a('#'.$this->e($link['task_inverse_id']).' - '.trim($this->e($link['task_inverse_title'])), 'task', 'show', array('task_id' => $link['task_inverse_id'], 'project_id' => $link['task_inverse_project_id'])) ?> + <?php else: ?> + <?= $this->a('#'.$this->e($link['task_inverse_id']).' - '.trim($this->e($link['task_inverse_title'])), 'task', 'readonly', array('task_id' => $link['task_inverse_id'], 'project_id' => $link['task_inverse_project_id'], 'token' => $project['token'])) ?> + <?php endif ?> + <?php if (0 == $link['task_inverse_is_active']): ?></span><?php endif ?> + </td> + <?php if (! isset($not_editable)): ?> + <td> + <ul> + <li><?= $this->a(t('Edit'), 'tasklink', 'edit', array('task_id' => $task['id'], 'link_id' => $link['id'], 'project_id' => $task['project_id'])) ?></li> + <li><?= $this->a(t('Remove'), 'tasklink', 'confirm', array('task_id' => $task['id'], 'link_id' => $link['id'], 'project_id' => $task['project_id'])) ?></li> + </ul> + </td> + <?php endif ?> + </tr> + <?php endforeach ?> + </table> + + <?php if (! isset($not_editable) && !empty($link_list)): ?> + <form method="post" action="<?= $this->u('tasklink', 'save', array('task_id' => $task['id'], 'project_id' => $task['project_id'])) ?>" autocomplete="off"> + <?= $this->formCsrf() ?> + <?= $this->formHidden('task_id', array('task_id' => $task['id'])) ?> + #<?= $this->e($task['id']) ?> +   + <?= $this->formSelect('link_label_id', $link_list, array(), array(), 'required autofocus') ?> +   + #<?= $this->formNumeric('task_inverse_id', array(), array(), array('required', 'placeholder="'.t('Task id').'"', 'title="'.t('Linked task id').'"', 'list="task_inverse_ids"')) ?> + <?php if (!empty($task_list)): ?> + <datalist id="task_inverse_ids"> + <select> + <?php foreach ($task_list as $task_inverse_id => $task_inverse_title): ?> + <option value="<?= $task_inverse_id ?>">#<?= $task_inverse_id.' '.$task_inverse_title ?></option> + <?php endforeach ?> + </select> + </datalist> + <?php endif ?> + <input type="submit" value="<?= t('Add') ?>" class="btn btn-blue"/> + </form> + <?php endif ?> +</aside> +<?php endif ?> |