Creating another task stay in the popover
This commit is contained in:
parent
ccaf78b348
commit
70d3340cd0
|
|
@ -7,6 +7,8 @@ New features:
|
|||
|
||||
Improvements:
|
||||
|
||||
* Creating another task stay in the popover (no full page refresh anymore)
|
||||
|
||||
Bug fixes:
|
||||
|
||||
* Fix typo in template that prevent the Gitlab oauth link to be displayed
|
||||
|
|
|
|||
|
|
@ -59,25 +59,29 @@ class Taskcreation extends Base
|
|||
|
||||
list($valid, $errors) = $this->taskValidator->validateCreation($values);
|
||||
|
||||
if ($valid) {
|
||||
|
||||
if ($this->taskCreation->create($values)) {
|
||||
$this->session->flash(t('Task created successfully.'));
|
||||
|
||||
if (isset($values['another_task']) && $values['another_task'] == 1) {
|
||||
unset($values['title']);
|
||||
unset($values['description']);
|
||||
$this->response->redirect($this->helper->url->to('taskcreation', 'create', $values));
|
||||
}
|
||||
else {
|
||||
$this->response->redirect($this->helper->url->to('board', 'show', array('project_id' => $project['id'])));
|
||||
}
|
||||
}
|
||||
else {
|
||||
$this->session->flashError(t('Unable to create your task.'));
|
||||
}
|
||||
if ($valid && $this->taskCreation->create($values)) {
|
||||
$this->session->flash(t('Task created successfully.'));
|
||||
$this->afterSave($project, $values);
|
||||
}
|
||||
else {
|
||||
$this->session->flashError(t('Unable to create your task.'));
|
||||
}
|
||||
|
||||
$this->create($values, $errors);
|
||||
}
|
||||
|
||||
private function afterSave(array $project, array &$values)
|
||||
{
|
||||
if (isset($values['another_task']) && $values['another_task'] == 1) {
|
||||
unset($values['title']);
|
||||
unset($values['description']);
|
||||
|
||||
if (! $this->request->isAjax()) {
|
||||
$this->response->redirect($this->helper->url->to('taskcreation', 'create', $values));
|
||||
}
|
||||
}
|
||||
else {
|
||||
$this->response->redirect($this->helper->url->to('board', 'show', array('project_id' => $project['id'])));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -126,11 +126,13 @@ class Taskmodification extends Base
|
|||
);
|
||||
|
||||
if ($ajax) {
|
||||
$this->response->html($this->template->render('task_modification/edit_task', $params));
|
||||
$html = $this->template->render('task_modification/edit_task', $params);
|
||||
}
|
||||
else {
|
||||
$this->response->html($this->taskLayout('task_modification/edit_task', $params));
|
||||
$html = $this->taskLayout('task_modification/edit_task', $params);
|
||||
}
|
||||
|
||||
$this->response->html($html);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -145,24 +147,20 @@ class Taskmodification extends Base
|
|||
|
||||
list($valid, $errors) = $this->taskValidator->validateModification($values);
|
||||
|
||||
if ($valid) {
|
||||
if ($valid && $this->taskModification->update($values)) {
|
||||
$this->session->flash(t('Task updated successfully.'));
|
||||
|
||||
if ($this->taskModification->update($values)) {
|
||||
$this->session->flash(t('Task updated successfully.'));
|
||||
|
||||
if ($this->request->getIntegerParam('ajax')) {
|
||||
$this->response->redirect($this->helper->url->to('board', 'show', array('project_id' => $task['project_id'])));
|
||||
}
|
||||
else {
|
||||
$this->response->redirect($this->helper->url->to('task', 'show', array('project_id' => $task['project_id'], 'task_id' => $task['id'])));
|
||||
}
|
||||
if ($this->request->isAjax()) {
|
||||
$this->response->redirect($this->helper->url->to('board', 'show', array('project_id' => $task['project_id'])));
|
||||
}
|
||||
else {
|
||||
$this->session->flashError(t('Unable to update your task.'));
|
||||
$this->response->redirect($this->helper->url->to('task', 'show', array('project_id' => $task['project_id'], 'task_id' => $task['id'])));
|
||||
}
|
||||
}
|
||||
|
||||
$this->edit($values, $errors);
|
||||
else {
|
||||
$this->session->flashError(t('Unable to update your task.'));
|
||||
$this->edit($values, $errors);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -66,7 +66,13 @@ class Response
|
|||
*/
|
||||
public function redirect($url)
|
||||
{
|
||||
header('Location: '.$url);
|
||||
if (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && $_SERVER['HTTP_X_REQUESTED_WITH'] === 'XMLHttpRequest') {
|
||||
header('X-Ajax-Redirect: '.$url);
|
||||
}
|
||||
else {
|
||||
header('Location: '.$url);
|
||||
}
|
||||
|
||||
exit;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -67,9 +67,11 @@ class App extends \Core\Base
|
|||
if (isset($this->session['flash_message'])) {
|
||||
$html = '<div class="alert alert-success alert-fade-out">'.$this->helper->e($this->session['flash_message']).'</div>';
|
||||
unset($this->session['flash_message']);
|
||||
unset($this->session['flash_error_message']);
|
||||
}
|
||||
else if (isset($this->session['flash_error_message'])) {
|
||||
$html = '<div class="alert alert-error">'.$this->helper->e($this->session['flash_error_message']).'</div>';
|
||||
unset($this->session['flash_message']);
|
||||
unset($this->session['flash_error_message']);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -10,8 +10,7 @@
|
|||
</div>
|
||||
<?php endif ?>
|
||||
|
||||
<section id="task-section">
|
||||
<form method="post" action="<?= $this->url->href('taskcreation', 'save', array('project_id' => $values['project_id'])) ?>" autocomplete="off">
|
||||
<form id="task-form" method="post" action="<?= $this->url->href('taskcreation', 'save', array('project_id' => $values['project_id'])) ?>" autocomplete="off">
|
||||
|
||||
<?= $this->form->csrf() ?>
|
||||
|
||||
|
|
@ -80,5 +79,4 @@
|
|||
<input type="submit" value="<?= t('Save') ?>" class="btn btn-blue" tabindex="11"/>
|
||||
<?= t('or') ?> <?= $this->url->link(t('cancel'), 'board', 'show', array('project_id' => $values['project_id']), false, 'close-popover') ?>
|
||||
</div>
|
||||
</form>
|
||||
</section>
|
||||
</form>
|
||||
|
|
@ -1,8 +1,7 @@
|
|||
<div class="page-header">
|
||||
<h2><?= t('Edit a task') ?></h2>
|
||||
</div>
|
||||
<section id="task-section">
|
||||
<form method="post" action="<?= $this->url->href('taskmodification', 'update', array('task_id' => $task['id'], 'project_id' => $task['project_id'], 'ajax' => $ajax)) ?>" autocomplete="off">
|
||||
<form id="task-form" method="post" action="<?= $this->url->href('taskmodification', 'update', array('task_id' => $task['id'], 'project_id' => $task['project_id'])) ?>" autocomplete="off">
|
||||
|
||||
<?= $this->form->csrf() ?>
|
||||
|
||||
|
|
@ -62,5 +61,4 @@
|
|||
<?= $this->url->link(t('cancel'), 'task', 'show', array('task_id' => $task['id'], 'project_id' => $task['project_id'])) ?>
|
||||
<?php endif ?>
|
||||
</div>
|
||||
</form>
|
||||
</section>
|
||||
</form>
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -15,7 +15,8 @@ Popover.prototype.open = function(link) {
|
|||
$.get(link, function(content) {
|
||||
$("body").append('<div id="popover-container"><div id="popover-content">' + content + '</div></div>');
|
||||
self.router.dispatch();
|
||||
self.app.listen();
|
||||
self.app.refresh();
|
||||
self.afterOpen();
|
||||
});
|
||||
};
|
||||
|
||||
|
|
@ -48,3 +49,29 @@ Popover.prototype.listen = function() {
|
|||
$(document).on("click", "#popover-container", this.close.bind(this));
|
||||
$(document).on("click", "#popover-content", function(e) { e.stopPropagation(); });
|
||||
};
|
||||
|
||||
Popover.prototype.afterOpen = function() {
|
||||
var self = this;
|
||||
var taskForm = $("#task-form");
|
||||
|
||||
if (taskForm) {
|
||||
taskForm.on("submit", function(e) {
|
||||
e.preventDefault();
|
||||
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: taskForm.attr("action"),
|
||||
data: taskForm.serialize(),
|
||||
success: function(data, textStatus, request) {
|
||||
if (request.getResponseHeader("X-Ajax-Redirect")) {
|
||||
window.location = request.getResponseHeader("X-Ajax-Redirect");
|
||||
}
|
||||
else {
|
||||
$("#popover-content").html(data);
|
||||
self.afterOpen();
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
};
|
||||
|
|
|
|||
Loading…
Reference in New Issue