summaryrefslogtreecommitdiff
path: root/app/Controller/Tasklink.php
diff options
context:
space:
mode:
Diffstat (limited to 'app/Controller/Tasklink.php')
-rw-r--r--app/Controller/Tasklink.php69
1 files changed, 58 insertions, 11 deletions
diff --git a/app/Controller/Tasklink.php b/app/Controller/Tasklink.php
index 8376b75b..eccf149f 100644
--- a/app/Controller/Tasklink.php
+++ b/app/Controller/Tasklink.php
@@ -38,13 +38,7 @@ class Tasklink extends Base
$task = $this->getTask();
$ajax = $this->request->isAjax() || $this->request->getIntegerParam('ajax');
- if (empty($values)) {
- $values = array(
- 'task_id' => $task['id'],
- );
- }
-
- if ($ajax) {
+ if ($ajax && empty($errors)) {
$this->response->html($this->template->render('tasklink/create', array(
'values' => $values,
'errors' => $errors,
@@ -81,20 +75,73 @@ class Tasklink extends Base
if ($this->taskLink->create($values['task_id'], $values['opposite_task_id'], $values['link_id'])) {
$this->session->flash(t('Link added successfully.'));
+
if ($ajax) {
$this->response->redirect($this->helper->url('board', 'show', array('project_id' => $task['project_id'])));
}
+
$this->response->redirect($this->helper->url('task', 'show', array('task_id' => $task['id'], 'project_id' => $task['project_id'])).'#links');
}
- else {
- $this->session->flashError(t('Unable to create your link.'));
- }
+
+ $errors = array('title' => array(t('The exact same link already exists')));
+ $this->session->flashError(t('Unable to create your link.'));
}
$this->create($values, $errors);
}
/**
+ * Edit form
+ *
+ * @access public
+ */
+ public function edit(array $values = array(), array $errors = array())
+ {
+ $task = $this->getTask();
+ $task_link = $this->getTaskLink();
+
+ if (empty($values)) {
+ $opposite_task = $this->taskFinder->getById($task_link['opposite_task_id']);
+ $values = $task_link;
+ $values['title'] = '#'.$opposite_task['id'].' - '.$opposite_task['title'];
+ }
+
+ $this->response->html($this->taskLayout('tasklink/edit', array(
+ 'values' => $values,
+ 'errors' => $errors,
+ 'task_link' => $task_link,
+ 'task' => $task,
+ 'labels' => $this->link->getList(0, false),
+ 'title' => t('Edit link')
+ )));
+ }
+
+ /**
+ * Validation and update
+ *
+ * @access public
+ */
+ public function update()
+ {
+ $task = $this->getTask();
+ $values = $this->request->getValues();
+
+ list($valid, $errors) = $this->taskLink->validateModification($values);
+
+ if ($valid) {
+
+ if ($this->taskLink->update($values['id'], $values['task_id'], $values['opposite_task_id'], $values['link_id'])) {
+ $this->session->flash(t('Link updated successfully.'));
+ $this->response->redirect($this->helper->url('task', 'show', array('task_id' => $task['id'], 'project_id' => $task['project_id'])).'#links');
+ }
+
+ $this->session->flashError(t('Unable to update your link.'));
+ }
+
+ $this->edit($values, $errors);
+ }
+
+ /**
* Confirmation dialog before removing a link
*
* @access public
@@ -127,6 +174,6 @@ class Tasklink extends Base
$this->session->flashError(t('Unable to remove this link.'));
}
- $this->response->redirect($this->helper->url('task', 'show', array('task_id' => $task['id'], 'project_id' => $task['project_id'])));
+ $this->response->redirect($this->helper->url('task', 'show', array('task_id' => $task['id'], 'project_id' => $task['project_id'])).'#links');
}
}