Improve form helpers and add more hooks

This commit is contained in:
Frederic Guillot
2016-08-13 17:49:27 -04:00
parent 4ffaba2ba0
commit ffe61abc69
11 changed files with 70 additions and 42 deletions

View File

@@ -84,9 +84,6 @@ class TaskModificationController extends BaseController
$values = $task;
$values = $this->hook->merge('controller:task:form:default', $values, array('default_values' => $values));
$values = $this->hook->merge('controller:task-modification:form:default', $values, array('default_values' => $values));
$values = $this->dateParser->format($values, array('date_due'), $this->dateParser->getUserDateFormat());
$values = $this->dateParser->format($values, array('date_started'), $this->dateParser->getUserDateTimeFormat());
return $values;
}
}

View File

@@ -22,7 +22,6 @@ class TaskViewController extends BaseController
{
$project = $this->projectModel->getByToken($this->request->getStringParam('token'));
// Token verification
if (empty($project)) {
throw AccessForbiddenException::getInstance()->withoutLayout();
}
@@ -63,19 +62,9 @@ class TaskViewController extends BaseController
$task = $this->getTask();
$subtasks = $this->subtaskModel->getAll($task['id']);
$values = array(
'id' => $task['id'],
'date_started' => $task['date_started'],
'time_estimated' => $task['time_estimated'] ?: '',
'time_spent' => $task['time_spent'] ?: '',
);
$values = $this->dateParser->format($values, array('date_started'), $this->dateParser->getUserDateTimeFormat());
$this->response->html($this->helper->layout->task('task/show', array(
'task' => $task,
'project' => $this->projectModel->getById($task['project_id']),
'values' => $values,
'files' => $this->taskFileModel->getAllDocuments($task['id']),
'images' => $this->taskFileModel->getAllImages($task['id']),
'comments' => $this->commentModel->getAll($task['id'], $this->userSession->getCommentSorting()),

View File

@@ -306,6 +306,48 @@ class FormHelper extends Base
return $this->input('text', $name, $values, $errors, $attributes, $class.' form-numeric');
}
/**
* Date field
*
* @access public
* @param string $label
* @param string $name
* @param array $values
* @param array $errors
* @param array $attributes
* @return string
*/
public function date($label, $name, array $values, array $errors = array(), array $attributes = array())
{
$userFormat = $this->dateParser->getUserDateFormat();
$values = $this->dateParser->format($values, array($name), $userFormat);
$attributes = array_merge(array('placeholder="'.date($userFormat).'"'), $attributes);
return $this->helper->form->label($label, $name) .
$this->helper->form->text($name, $values, $errors, $attributes, 'form-date');
}
/**
* Datetime field
*
* @access public
* @param string $label
* @param string $name
* @param array $values
* @param array $errors
* @param array $attributes
* @return string
*/
public function datetime($label, $name, array $values, array $errors = array(), array $attributes = array())
{
$userFormat = $this->dateParser->getUserDateTimeFormat();
$values = $this->dateParser->format($values, array($name), $userFormat);
$attributes = array_merge(array('placeholder="'.date($userFormat).'"'), $attributes);
return $this->helper->form->label($label, $name) .
$this->helper->form->text($name, $values, $errors, $attributes, 'form-datetime');
}
/**
* Display the form error class
*

View File

@@ -207,24 +207,14 @@ class TaskHelper extends Base
public function selectStartDate(array $values, array $errors = array(), array $attributes = array())
{
$placeholder = date($this->configModel->get('application_date_format', 'm/d/Y H:i'));
$attributes = array_merge(array('tabindex="12"', 'placeholder="'.$placeholder.'"'), $attributes);
$html = $this->helper->form->label(t('Start Date'), 'date_started');
$html .= $this->helper->form->text('date_started', $values, $errors, $attributes, 'form-datetime');
return $html;
$attributes = array_merge(array('tabindex="12"'), $attributes);
return $this->helper->form->datetime(t('Start Date'), 'date_started', $values, $errors, $attributes);
}
public function selectDueDate(array $values, array $errors = array(), array $attributes = array())
{
$placeholder = date($this->configModel->get('application_date_format', 'm/d/Y'));
$attributes = array_merge(array('tabindex="13"', 'placeholder="'.$placeholder.'"'), $attributes);
$html = $this->helper->form->label(t('Due Date'), 'date_due');
$html .= $this->helper->form->text('date_due', $values, $errors, $attributes, 'form-date');
return $html;
$attributes = array_merge(array('tabindex="13"'), $attributes);
return $this->helper->form->date(t('Due Date'), 'date_due', $values, $errors, $attributes);
}
public function formatPriority(array $project, array $task)

View File

@@ -85,5 +85,7 @@ class TaskCreationModel extends Base
$values['date_modification'] = $values['date_creation'];
$values['date_moved'] = $values['date_creation'];
$values['position'] = $this->taskFinderModel->countByColumnAndSwimlaneId($values['project_id'], $values['column_id'], $values['swimlane_id']) + 1;
$this->hook->reference('model:task:creation:prepare', $values);
}
}

View File

@@ -106,6 +106,8 @@ class TaskModificationModel extends Base
$this->helper->model->convertIntegerFields($values, array('priority', 'is_active', 'recurrence_status', 'recurrence_trigger', 'recurrence_factor', 'recurrence_timeframe', 'recurrence_basedate'));
$values['date_modification'] = time();
$this->hook->reference('model:task:modification:prepare', $values);
}
/**

View File

@@ -15,3 +15,5 @@
<?= $this->render('dashboard/projects', array('paginator' => $project_paginator, 'user' => $user)) ?>
<?= $this->render('dashboard/tasks', array('paginator' => $task_paginator, 'user' => $user)) ?>
<?= $this->render('dashboard/subtasks', array('paginator' => $subtask_paginator, 'user' => $user)) ?>
<?= $this->hook->render('template:dashboard:show', array('user' => $user)) ?>

View File

@@ -21,6 +21,6 @@
<li <?= $this->app->checkMenuSelection('DashboardController', 'notifications') ?>>
<?= $this->url->link(t('My notifications'), 'DashboardController', 'notifications', array('user_id' => $user['id'])) ?>
</li>
<?= $this->hook->render('template:dashboard:sidebar') ?>
<?= $this->hook->render('template:dashboard:sidebar', array('user' => $user)) ?>
</ul>
</div>