diff options
author | Frederic Guillot <fred@kanboard.net> | 2015-08-14 17:03:55 -0400 |
---|---|---|
committer | Frederic Guillot <fred@kanboard.net> | 2015-08-14 17:03:55 -0400 |
commit | 17a3781bd8c03e6b653104dbcb996a1ff1213959 (patch) | |
tree | 8cf5de301e55f62465d19f270109c6c7c49cc5ce /app/Template/gantt | |
parent | c6a4fbb3864d63a69a0b42d17f5c3037a73da961 (diff) |
Add Gantt chart for projects
Diffstat (limited to 'app/Template/gantt')
-rw-r--r-- | app/Template/gantt/project.php | 49 | ||||
-rw-r--r-- | app/Template/gantt/task_creation.php | 65 |
2 files changed, 114 insertions, 0 deletions
diff --git a/app/Template/gantt/project.php b/app/Template/gantt/project.php new file mode 100644 index 00000000..0c545be8 --- /dev/null +++ b/app/Template/gantt/project.php @@ -0,0 +1,49 @@ +<section id="main"> + <div class="page-header"> + <ul> + <li> + <span class="dropdown"> + <span> + <i class="fa fa-caret-down"></i> <a href="#" class="dropdown-menu"><?= t('Actions') ?></a> + <ul> + <?= $this->render('project/dropdown', array('project' => $project)) ?> + </ul> + </span> + </span> + </li> + <li> + <i class="fa fa-th fa-fw"></i> + <?= $this->url->link(t('Back to the board'), 'board', 'show', array('project_id' => $project['id'])) ?> + </li> + </ul> + <ul class="views toolbar"> + <li <?= $sorting === 'board' ? 'class="active"' : '' ?>> + <i class="fa fa-sort-numeric-asc fa-fw"></i> + <?= $this->url->link(t('Sort by position'), 'gantt', 'project', array('project_id' => $project['id'], 'sorting' => 'board')) ?> + </li> + <li <?= $sorting === 'date' ? 'class="active"' : '' ?>> + <i class="fa fa-sort-amount-asc fa-fw"></i> + <?= $this->url->link(t('Sort by date'), 'gantt', 'project', array('project_id' => $project['id'], 'sorting' => 'date')) ?> + </li> + <li> + <i class="fa fa-plus fa-fw"></i> + <?= $this->url->link(t('Add task'), 'gantt', 'task', array('project_id' => $project['id']), false, 'popover') ?> + </li> + </ul> + </div> + + <?php if (! empty($tasks)): ?> + <div + id="gantt-chart" + data-tasks='<?= json_encode($tasks) ?>' + data-save-url="<?= $this->url->href('gantt', 'saveDate', array('project_id' => $project['id'])) ?>" + data-label-start-date="<?= t('Start date:') ?>" + data-label-end-date="<?= t('Due date:') ?>" + data-label-assignee="<?= t('Assignee:') ?>" + data-label-not-defined="<?= t('There is no start date or due date for this task.') ?>" + ></div> + <p class="alert alert-info"><?= t('Moving or resizing a task will change the start and due date of the task.') ?></p> + <?php else: ?> + <p class="alert"><?= t('There is no task in your project.') ?></p> + <?php endif ?> +</section>
\ No newline at end of file diff --git a/app/Template/gantt/task_creation.php b/app/Template/gantt/task_creation.php new file mode 100644 index 00000000..d0d14c1e --- /dev/null +++ b/app/Template/gantt/task_creation.php @@ -0,0 +1,65 @@ +<div class="page-header"> + <h2><?= t('New task') ?></h2> +</div> +<form method="post" action="<?= $this->url->href('gantt', 'saveTask', array('project_id' => $values['project_id'])) ?>" autocomplete="off"> + <?= $this->form->csrf() ?> + <?= $this->form->hidden('project_id', $values) ?> + <?= $this->form->hidden('column_id', $values) ?> + <?= $this->form->hidden('position', $values) ?> + + <div class="form-column"> + <?= $this->form->label(t('Title'), 'title') ?> + <?= $this->form->text('title', $values, $errors, array('autofocus', 'required', 'maxlength="200"', 'tabindex="1"'), 'form-input-large') ?> + + <?= $this->form->label(t('Description'), 'description') ?> + + <div class="form-tabs"> + <div class="write-area"> + <?= $this->form->textarea('description', $values, $errors, array('placeholder="'.t('Leave a description').'"', 'tabindex="2"')) ?> + </div> + <div class="preview-area"> + <div class="markdown"></div> + </div> + <ul class="form-tabs-nav"> + <li class="form-tab form-tab-selected"> + <i class="fa fa-pencil-square-o fa-fw"></i><a id="markdown-write" href="#"><?= t('Write') ?></a> + </li> + <li class="form-tab"> + <a id="markdown-preview" href="#"><i class="fa fa-eye fa-fw"></i><?= t('Preview') ?></a> + </li> + </ul> + </div> + </div> + + <div class="form-column"> + <?= $this->form->label(t('Assignee'), 'owner_id') ?> + <?= $this->form->select('owner_id', $users_list, $values, $errors, array('tabindex="3"')) ?><br/> + + <?= $this->form->label(t('Category'), 'category_id') ?> + <?= $this->form->select('category_id', $categories_list, $values, $errors, array('tabindex="4"')) ?><br/> + + <?php if (! (count($swimlanes_list) === 1 && key($swimlanes_list) === 0)): ?> + <?= $this->form->label(t('Swimlane'), 'swimlane_id') ?> + <?= $this->form->select('swimlane_id', $swimlanes_list, $values, $errors, array('tabindex="5"')) ?><br/> + <?php endif ?> + + <?= $this->form->label(t('Color'), 'color_id') ?> + <?= $this->form->select('color_id', $colors_list, $values, $errors, array('tabindex="7"')) ?><br/> + + <?= $this->form->label(t('Complexity'), 'score') ?> + <?= $this->form->number('score', $values, $errors, array('tabindex="8"')) ?><br/> + + <?= $this->form->label(t('Start Date'), 'date_started') ?> + <?= $this->form->text('date_started', $values, $errors, array('placeholder="'.$this->text->in($date_format, $date_formats).'"', 'tabindex="9"'), 'form-date') ?> + + <?= $this->form->label(t('Due Date'), 'date_due') ?> + <?= $this->form->text('date_due', $values, $errors, array('placeholder="'.$this->text->in($date_format, $date_formats).'"', 'tabindex="10"'), 'form-date') ?><br/> + <div class="form-help"><?= t('Others formats accepted: %s and %s', date('Y-m-d'), date('Y_m_d')) ?></div> + </div> + + <div class="form-actions"> + <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> |