From 8f3e2b2e5c62a6130f6c8867ab335fb4c1a32c5c Mon Sep 17 00:00:00 2001 From: Frederic Guillot Date: Fri, 4 Mar 2016 20:10:34 -0500 Subject: [PATCH] Helper refactoring --- app/Controller/Base.php | 2 +- app/Core/Helper.php | 76 +++++++++++-------- app/Core/Template.php | 63 ++++++--------- app/Helper/{App.php => AppHelper.php} | 8 +- .../{Asset.php => AssetHelperHelper.php} | 6 +- app/Helper/{Board.php => BoardHelper.php} | 4 +- app/Helper/{Dt.php => DateHelper.php} | 3 +- app/Helper/{File.php => FileHelper.php} | 4 +- app/Helper/{Form.php => FormHelper.php} | 20 ++--- app/Helper/{Hook.php => HookHelper.php} | 4 +- app/Helper/{Layout.php => LayoutHelper.php} | 2 +- app/Helper/{Model.php => ModelHelper.php} | 2 +- app/Helper/{Subtask.php => SubtaskHelper.php} | 6 +- app/Helper/{Task.php => TaskHelper.php} | 2 +- app/Helper/{Text.php => TextHelper.php} | 15 +++- app/Helper/{Url.php => UrlHelper.php} | 4 +- app/Helper/{User.php => UserHelper.php} | 6 +- app/ServiceProvider/ClassProvider.php | 2 - app/ServiceProvider/HelperProvider.php | 34 +++++++++ app/Template/action/index.php | 2 +- app/Template/analytic/avg_time_columns.php | 2 +- app/Template/analytic/compare_hours.php | 12 +-- app/Template/analytic/tasks.php | 2 +- app/Template/analytic/users.php | 2 +- app/Template/app/projects.php | 6 +- app/Template/app/sidebar.php | 2 +- app/Template/app/subtasks.php | 8 +- app/Template/app/tasks.php | 8 +- app/Template/auth/index.php | 2 +- app/Template/board/table_column.php | 8 +- app/Template/board/table_swimlane.php | 2 +- app/Template/board/table_tasks.php | 2 +- app/Template/board/task_footer.php | 8 +- app/Template/board/task_private.php | 10 +-- app/Template/board/task_public.php | 2 +- app/Template/board/tooltip_comments.php | 2 +- app/Template/board/tooltip_external_links.php | 4 +- app/Template/board/tooltip_files.php | 2 +- app/Template/board/tooltip_subtasks.php | 2 +- app/Template/board/tooltip_tasklinks.php | 4 +- app/Template/category/index.php | 2 +- app/Template/column/index.php | 6 +- app/Template/comment/show.php | 2 +- app/Template/config/about.php | 2 +- app/Template/config/api.php | 2 +- app/Template/config/plugins.php | 10 +-- app/Template/config/webhook.php | 2 +- app/Template/currency/index.php | 2 +- app/Template/custom_filter/index.php | 6 +- app/Template/event/comment_create.php | 4 +- app/Template/event/comment_update.php | 4 +- app/Template/event/subtask_create.php | 6 +- app/Template/event/subtask_update.php | 6 +- app/Template/event/task_assignee_change.php | 8 +- app/Template/event/task_close.php | 4 +- app/Template/event/task_create.php | 4 +- app/Template/event/task_file_create.php | 4 +- app/Template/event/task_move_column.php | 6 +- app/Template/event/task_move_position.php | 6 +- app/Template/event/task_move_swimlane.php | 8 +- app/Template/event/task_open.php | 4 +- app/Template/event/task_update.php | 4 +- app/Template/feed/project.php | 2 +- app/Template/feed/user.php | 2 +- app/Template/file_viewer/show.php | 4 +- app/Template/group/index.php | 4 +- app/Template/group/users.php | 6 +- app/Template/header.php | 8 +- app/Template/layout.php | 2 +- app/Template/listing/show.php | 10 +-- app/Template/notification/comment_create.php | 2 +- app/Template/notification/comment_update.php | 2 +- .../notification/comment_user_mention.php | 2 +- app/Template/notification/subtask_create.php | 10 +-- app/Template/notification/subtask_update.php | 12 +-- .../notification/task_assignee_change.php | 2 +- app/Template/notification/task_close.php | 2 +- app/Template/notification/task_create.php | 8 +- .../notification/task_file_create.php | 2 +- .../notification/task_move_column.php | 6 +- .../notification/task_move_position.php | 6 +- .../notification/task_move_swimlane.php | 8 +- app/Template/notification/task_open.php | 2 +- app/Template/notification/task_overdue.php | 4 +- app/Template/notification/task_update.php | 2 +- .../notification/task_user_mention.php | 2 +- app/Template/project/index.php | 8 +- app/Template/project/show.php | 6 +- app/Template/project_file/remove.php | 2 +- app/Template/project_header/search.php | 6 +- app/Template/project_overview/columns.php | 2 +- app/Template/project_overview/description.php | 2 +- app/Template/project_overview/files.php | 8 +- app/Template/project_overview/information.php | 2 +- app/Template/project_permission/index.php | 4 +- app/Template/project_user/layout.php | 2 +- app/Template/project_user/roles.php | 6 +- app/Template/project_user/tasks.php | 10 +-- app/Template/project_user/tooltip_users.php | 2 +- app/Template/search/results.php | 14 ++-- app/Template/subtask/remove.php | 2 +- app/Template/subtask/table.php | 6 +- app/Template/swimlane/table.php | 6 +- app/Template/task/analytics.php | 2 +- app/Template/task/color_picker.php | 2 +- app/Template/task/details.php | 16 ++-- app/Template/task/remove.php | 2 +- app/Template/task/time_tracking_details.php | 2 +- app/Template/task/time_tracking_summary.php | 6 +- app/Template/task/transitions.php | 6 +- app/Template/task_external_link/show.php | 6 +- app/Template/task_file/remove.php | 2 +- app/Template/task_file/show.php | 8 +- app/Template/task_recurrence/info.php | 8 +- app/Template/tasklink/show.php | 16 ++-- app/Template/twofactor/index.php | 2 +- app/Template/twofactor/show.php | 4 +- app/Template/user/index.php | 6 +- app/Template/user/last.php | 6 +- app/Template/user/password_reset.php | 4 +- app/Template/user/profile.php | 6 +- app/Template/user/sessions.php | 4 +- app/Template/user/show.php | 6 +- app/Template/user/timesheet.php | 4 +- app/common.php | 1 + composer.lock | 32 ++++---- doc/plugin-helpers.markdown | 40 ++++++++++ doc/plugins.markdown | 1 + tests/units/Base.php | 1 + tests/units/Core/HelperTest.php | 17 +++++ tests/units/Core/Http/RouterTest.php | 22 +++--- tests/units/Core/TemplateTest.php | 6 +- tests/units/Helper/AppHelperTest.php | 8 +- tests/units/Helper/AssetHelperTest.php | 4 +- tests/units/Helper/DatetimeHelperTest.php | 16 ++-- tests/units/Helper/FileHelperText.php | 8 +- tests/units/Helper/HookHelperTest.php | 10 +-- tests/units/Helper/TaskHelperTest.php | 6 +- tests/units/Helper/TextHelperTest.php | 12 +-- tests/units/Helper/UrlHelperTest.php | 24 +++--- tests/units/Helper/UserHelperTest.php | 26 +++---- 141 files changed, 562 insertions(+), 445 deletions(-) rename app/Helper/{App.php => AppHelper.php} (94%) rename app/Helper/{Asset.php => AssetHelperHelper.php} (95%) rename app/Helper/{Board.php => BoardHelper.php} (87%) rename app/Helper/{Dt.php => DateHelper.php} (98%) rename app/Helper/{File.php => FileHelper.php} (97%) rename app/Helper/{Form.php => FormHelper.php} (92%) rename app/Helper/{Hook.php => HookHelper.php} (95%) rename app/Helper/{Layout.php => LayoutHelper.php} (99%) rename app/Helper/{Model.php => ModelHelper.php} (98%) rename app/Helper/{Subtask.php => SubtaskHelper.php} (96%) rename app/Helper/{Task.php => TaskHelper.php} (99%) rename app/Helper/{Text.php => TextHelper.php} (87%) rename app/Helper/{Url.php => UrlHelper.php} (99%) rename app/Helper/{User.php => UserHelper.php} (97%) create mode 100644 app/ServiceProvider/HelperProvider.php create mode 100644 doc/plugin-helpers.markdown create mode 100644 tests/units/Core/HelperTest.php diff --git a/app/Controller/Base.php b/app/Controller/Base.php index 884c439ca..2453be18c 100644 --- a/app/Controller/Base.php +++ b/app/Controller/Base.php @@ -331,7 +331,7 @@ abstract class Base extends \Kanboard\Core\Base protected function getProjectDescription(array &$project) { if ($project['owner_id'] > 0) { - $description = t('Project owner: ').'**'.$this->template->e($project['owner_name'] ?: $project['owner_username']).'**'.PHP_EOL.PHP_EOL; + $description = t('Project owner: ').'**'.$this->helper->text->e($project['owner_name'] ?: $project['owner_username']).'**'.PHP_EOL.PHP_EOL; if (! empty($project['description'])) { $description .= '***'.PHP_EOL.PHP_EOL; diff --git a/app/Core/Helper.php b/app/Core/Helper.php index 759209f61..3764a67c1 100644 --- a/app/Core/Helper.php +++ b/app/Core/Helper.php @@ -10,18 +10,18 @@ use Pimple\Container; * @package core * @author Frederic Guillot * - * @property \Kanboard\Helper\App $app - * @property \Kanboard\Helper\Asset $asset - * @property \Kanboard\Helper\Dt $dt - * @property \Kanboard\Helper\File $file - * @property \Kanboard\Helper\Form $form - * @property \Kanboard\Helper\Subtask $subtask - * @property \Kanboard\Helper\Task $task - * @property \Kanboard\Helper\Text $text - * @property \Kanboard\Helper\Url $url - * @property \Kanboard\Helper\User $user - * @property \Kanboard\Helper\Layout $layout - * @property \Kanboard\Helper\Model $model + * @property \Kanboard\Helper\AppHelper $app + * @property \Kanboard\Helper\AssetHelper $asset + * @property \Kanboard\Helper\DateHelper $dt + * @property \Kanboard\Helper\FileHelper $file + * @property \Kanboard\Helper\FormHelper $form + * @property \Kanboard\Helper\ModelHelper $model + * @property \Kanboard\Helper\SubtaskHelper $subtask + * @property \Kanboard\Helper\TaskHelper $task + * @property \Kanboard\Helper\TextHelper $text + * @property \Kanboard\Helper\UrlHelper $url + * @property \Kanboard\Helper\UserHelper $user + * @property \Kanboard\Helper\LayoutHelper $layout */ class Helper { @@ -29,17 +29,17 @@ class Helper * Helper instances * * @access private - * @var array + * @var \Pimple\Container */ - private $helpers = array(); + private $helpers; /** * Container instance * - * @access protected + * @access private * @var \Pimple\Container */ - protected $container; + private $container; /** * Constructor @@ -50,33 +50,49 @@ class Helper public function __construct(Container $container) { $this->container = $container; + $this->helpers = new Container; } /** - * Load automatically helpers + * Expose helpers with magic getter * * @access public - * @param string $name Helper name + * @param string $helper * @return mixed */ - public function __get($name) + public function __get($helper) { - if (! isset($this->helpers[$name])) { - $class = '\Kanboard\Helper\\'.ucfirst($name); - $this->helpers[$name] = new $class($this->container); - } - - return $this->helpers[$name]; + return $this->getHelper($helper); } /** - * HTML escaping + * Expose helpers with method * - * @param string $value Value to escape - * @return string + * @access public + * @param string $helper + * @return mixed */ - public function e($value) + public function getHelper($helper) { - return htmlspecialchars($value, ENT_QUOTES, 'UTF-8', false); + return $this->helpers[$helper]; + } + + /** + * Register a new Helper + * + * @access public + * @param string $property + * @param string $className + * @return Helper + */ + public function register($property, $className) + { + $container = $this->container; + + $this->helpers[$property] = function() use($className, $container) { + return new $className($container); + }; + + return $this; } } diff --git a/app/Core/Template.php b/app/Core/Template.php index 8ded6f7c7..fa7b65ec1 100644 --- a/app/Core/Template.php +++ b/app/Core/Template.php @@ -3,13 +3,21 @@ namespace Kanboard\Core; /** - * Template class + * Template * * @package core * @author Frederic Guillot */ -class Template extends Helper +class Template { + /** + * Helper object + * + * @access private + * @var Helper + */ + private $helper; + /** * List of template overrides * @@ -19,47 +27,26 @@ class Template extends Helper private $overrides = array(); /** - * Rendering start time + * Template constructor * - * @access private - * @var float + * @access public + * @param Helper $helper */ - private $startTime = 0; - - /** - * Total rendering time - * - * @access private - * @var float - */ - private $renderingTime = 0; - - /** - * Method executed before the rendering - * - * @access protected - * @param string $template - */ - protected function beforeRender($template) + public function __construct(Helper $helper) { - if (DEBUG) { - $this->startTime = microtime(true); - } + $this->helper = $helper; } /** - * Method executed after the rendering + * Expose helpers with magic getter * - * @access protected - * @param string $template + * @access public + * @param string $helper + * @return mixed */ - protected function afterRender($template) + public function __get($helper) { - if (DEBUG) { - $duration = microtime(true) - $this->startTime; - $this->renderingTime += $duration; - $this->container['logger']->debug('Rendering '.$template.' in '.$duration.'s, total='.$this->renderingTime); - } + return $this->helper->getHelper($helper); } /** @@ -76,16 +63,10 @@ class Template extends Helper */ public function render($__template_name, array $__template_args = array()) { - $this->beforeRender($__template_name); - extract($__template_args); ob_start(); include $this->getTemplateFile($__template_name); - $html = ob_get_clean(); - - $this->afterRender($__template_name); - - return $html; + return ob_get_clean(); } /** diff --git a/app/Helper/App.php b/app/Helper/AppHelper.php similarity index 94% rename from app/Helper/App.php rename to app/Helper/AppHelper.php index 79afa5b9d..e6f6412d5 100644 --- a/app/Helper/App.php +++ b/app/Helper/AppHelper.php @@ -5,12 +5,12 @@ namespace Kanboard\Helper; use Kanboard\Core\Base; /** - * Application helpers + * Application Helper * * @package helper * @author Frederic Guillot */ -class App extends Base +class AppHelper extends Base { /** * Get config variable @@ -116,11 +116,11 @@ class App extends Base $failure_message = $this->flash->getMessage('failure'); if (! empty($success_message)) { - return '
'.$this->helper->e($success_message).'
'; + return '
'.$this->helper->text->e($success_message).'
'; } if (! empty($failure_message)) { - return '
'.$this->helper->e($failure_message).'
'; + return '
'.$this->helper->text->e($failure_message).'
'; } return ''; diff --git a/app/Helper/Asset.php b/app/Helper/AssetHelperHelper.php similarity index 95% rename from app/Helper/Asset.php rename to app/Helper/AssetHelperHelper.php index c4178e8c5..7040a40a4 100644 --- a/app/Helper/Asset.php +++ b/app/Helper/AssetHelperHelper.php @@ -2,13 +2,15 @@ namespace Kanboard\Helper; +use Kanboard\Core\Base; + /** - * Assets helpers + * Asset Helper * * @package helper * @author Frederic Guillot */ -class Asset extends \Kanboard\Core\Base +class AssetHelper extends Base { /** * Add a Javascript asset diff --git a/app/Helper/Board.php b/app/Helper/BoardHelper.php similarity index 87% rename from app/Helper/Board.php rename to app/Helper/BoardHelper.php index 430d1858e..a86a6c182 100644 --- a/app/Helper/Board.php +++ b/app/Helper/BoardHelper.php @@ -2,13 +2,15 @@ namespace Kanboard\Helper; +use Kanboard\Core\Base; + /** * Board Helper * * @package helper * @author Frederic Guillot */ -class Board extends \Kanboard\Core\Base +class BoardHelper extends Base { /** * Return true if tasks are collapsed diff --git a/app/Helper/Dt.php b/app/Helper/DateHelper.php similarity index 98% rename from app/Helper/Dt.php rename to app/Helper/DateHelper.php index eb3f93b33..3844ce642 100644 --- a/app/Helper/Dt.php +++ b/app/Helper/DateHelper.php @@ -3,6 +3,7 @@ namespace Kanboard\Helper; use DateTime; +use Kanboard\Core\Base; /** * DateTime helpers @@ -10,7 +11,7 @@ use DateTime; * @package helper * @author Frederic Guillot */ -class Dt extends \Kanboard\Core\Base +class DateHelper extends Base { /** * Get formatted time diff --git a/app/Helper/File.php b/app/Helper/FileHelper.php similarity index 97% rename from app/Helper/File.php rename to app/Helper/FileHelper.php index b493e64f8..cabf371cc 100644 --- a/app/Helper/File.php +++ b/app/Helper/FileHelper.php @@ -2,13 +2,15 @@ namespace Kanboard\Helper; +use Kanboard\Core\Base; + /** * File helpers * * @package helper * @author Frederic Guillot */ -class File extends \Kanboard\Core\Base +class FileHelper extends Base { /** * Get file icon diff --git a/app/Helper/Form.php b/app/Helper/FormHelper.php similarity index 92% rename from app/Helper/Form.php rename to app/Helper/FormHelper.php index bfd75ee38..161fd54c7 100644 --- a/app/Helper/Form.php +++ b/app/Helper/FormHelper.php @@ -10,7 +10,7 @@ use Kanboard\Core\Base; * @package helper * @author Frederic Guillot */ -class Form extends Base +class FormHelper extends Base { /** * Hidden CSRF token field @@ -52,7 +52,7 @@ class Form extends Base $html = ''; @@ -103,7 +103,7 @@ class Form extends Base */ public function radio($name, $label, $value, $selected = false, $class = '') { - return ''; + return ''; } /** @@ -139,7 +139,7 @@ class Form extends Base */ public function checkbox($name, $label, $value, $checked = false, $class = '') { - return ''; + return ''; } /** @@ -153,7 +153,7 @@ class Form extends Base */ public function label($label, $name, array $attributes = array()) { - return ''; + return ''; } /** @@ -173,7 +173,7 @@ class Form extends Base $html = ''; $html .= $this->errorList($errors, $name); @@ -334,7 +334,7 @@ class Form extends Base $html .= ''; @@ -354,9 +354,9 @@ class Form extends Base private function formValue($values, $name) { if (isset($values->$name)) { - return 'value="'.$this->helper->e($values->$name).'"'; + return 'value="'.$this->helper->text->e($values->$name).'"'; } - return isset($values[$name]) ? 'value="'.$this->helper->e($values[$name]).'"' : ''; + return isset($values[$name]) ? 'value="'.$this->helper->text->e($values[$name]).'"' : ''; } } diff --git a/app/Helper/Hook.php b/app/Helper/HookHelper.php similarity index 95% rename from app/Helper/Hook.php rename to app/Helper/HookHelper.php index 7b6919493..e8abc875a 100644 --- a/app/Helper/Hook.php +++ b/app/Helper/HookHelper.php @@ -2,13 +2,15 @@ namespace Kanboard\Helper; +use Kanboard\Core\Base; + /** * Template Hook helpers * * @package helper * @author Frederic Guillot */ -class Hook extends \Kanboard\Core\Base +class HookHelper extends Base { /** * Add assets JS or CSS diff --git a/app/Helper/Layout.php b/app/Helper/LayoutHelper.php similarity index 99% rename from app/Helper/Layout.php rename to app/Helper/LayoutHelper.php index 3db239200..064c11ace 100644 --- a/app/Helper/Layout.php +++ b/app/Helper/LayoutHelper.php @@ -10,7 +10,7 @@ use Kanboard\Core\Base; * @package helper * @author Frederic Guillot */ -class Layout extends Base +class LayoutHelper extends Base { /** * Render a template without the layout if Ajax request diff --git a/app/Helper/Model.php b/app/Helper/ModelHelper.php similarity index 98% rename from app/Helper/Model.php rename to app/Helper/ModelHelper.php index 68a525427..d49637c88 100644 --- a/app/Helper/Model.php +++ b/app/Helper/ModelHelper.php @@ -10,7 +10,7 @@ use Kanboard\Core\Base; * @package helper * @author Frederic Guillot */ -class Model extends Base +class ModelHelper extends Base { /** * Remove keys from an array diff --git a/app/Helper/Subtask.php b/app/Helper/SubtaskHelper.php similarity index 96% rename from app/Helper/Subtask.php rename to app/Helper/SubtaskHelper.php index 1784a2bfd..afa3c14e8 100644 --- a/app/Helper/Subtask.php +++ b/app/Helper/SubtaskHelper.php @@ -2,13 +2,15 @@ namespace Kanboard\Helper; +use Kanboard\Core\Base; + /** * Subtask helpers * * @package helper * @author Frederic Guillot */ -class Subtask extends \Kanboard\Core\Base +class SubtaskHelper extends Base { public function getTitle(array $subtask) { @@ -20,7 +22,7 @@ class Subtask extends \Kanboard\Core\Base $html = ''; } - return $html.$this->helper->e($subtask['title']); + return $html.$this->helper->text->e($subtask['title']); } /** diff --git a/app/Helper/Task.php b/app/Helper/TaskHelper.php similarity index 99% rename from app/Helper/Task.php rename to app/Helper/TaskHelper.php index 6058c0991..4857d0eef 100644 --- a/app/Helper/Task.php +++ b/app/Helper/TaskHelper.php @@ -10,7 +10,7 @@ use Kanboard\Core\Base; * @package helper * @author Frederic Guillot */ -class Task extends Base +class TaskHelper extends Base { /** * Local cache for project columns diff --git a/app/Helper/Text.php b/app/Helper/TextHelper.php similarity index 87% rename from app/Helper/Text.php rename to app/Helper/TextHelper.php index 83f1e3f92..e5aefdcf6 100644 --- a/app/Helper/Text.php +++ b/app/Helper/TextHelper.php @@ -11,8 +11,19 @@ use Kanboard\Core\Base; * @package helper * @author Frederic Guillot */ -class Text extends Base +class TextHelper extends Base { + /** + * HTML escaping + * + * @param string $value Value to escape + * @return string + */ + public function e($value) + { + return htmlspecialchars($value, ENT_QUOTES, 'UTF-8', false); + } + /** * Markdown transformation * @@ -88,7 +99,7 @@ class Text extends Base public function in($id, array $listing, $default_value = '?') { if (isset($listing[$id])) { - return $this->helper->e($listing[$id]); + return $this->helper->text->e($listing[$id]); } return $default_value; diff --git a/app/Helper/Url.php b/app/Helper/UrlHelper.php similarity index 99% rename from app/Helper/Url.php rename to app/Helper/UrlHelper.php index 7de8a5711..96c6735a6 100644 --- a/app/Helper/Url.php +++ b/app/Helper/UrlHelper.php @@ -5,12 +5,12 @@ namespace Kanboard\Helper; use Kanboard\Core\Base; /** - * Url helpers + * Url Helper * * @package helper * @author Frederic Guillot */ -class Url extends Base +class UrlHelper extends Base { private $base = ''; private $directory = ''; diff --git a/app/Helper/User.php b/app/Helper/UserHelper.php similarity index 97% rename from app/Helper/User.php rename to app/Helper/UserHelper.php index 29844dfb1..cbdb4af89 100644 --- a/app/Helper/User.php +++ b/app/Helper/UserHelper.php @@ -2,13 +2,15 @@ namespace Kanboard\Helper; +use Kanboard\Core\Base; + /** * User helpers * * @package helper * @author Frederic Guillot */ -class User extends \Kanboard\Core\Base +class UserHelper extends Base { /** * Return true if the logged user as unread notifications @@ -168,7 +170,7 @@ class User extends \Kanboard\Core\Base public function avatar($email, $alt = '') { if (! empty($email) && $this->config->get('integration_gravatar') == 1) { - return ''.$this->helper->e($alt).''; + return ''.$this->helper->text->e($alt).''; } return ''; diff --git a/app/ServiceProvider/ClassProvider.php b/app/ServiceProvider/ClassProvider.php index f939a9b59..b883c905b 100644 --- a/app/ServiceProvider/ClassProvider.php +++ b/app/ServiceProvider/ClassProvider.php @@ -117,9 +117,7 @@ class ClassProvider implements ServiceProviderInterface ), 'Core' => array( 'DateParser', - 'Helper', 'Lexer', - 'Template', ), 'Core\Event' => array( 'EventManager', diff --git a/app/ServiceProvider/HelperProvider.php b/app/ServiceProvider/HelperProvider.php new file mode 100644 index 000000000..42a0c85ee --- /dev/null +++ b/app/ServiceProvider/HelperProvider.php @@ -0,0 +1,34 @@ +register('app', '\Kanboard\Helper\AppHelper'); + $container['helper']->register('asset', '\Kanboard\Helper\AssetHelper'); + $container['helper']->register('board', '\Kanboard\Helper\BoardHelper'); + $container['helper']->register('dt', '\Kanboard\Helper\DateHelper'); + $container['helper']->register('file', '\Kanboard\Helper\FileHelper'); + $container['helper']->register('form', '\Kanboard\Helper\FormHelper'); + $container['helper']->register('hook', '\Kanboard\Helper\HookHelper'); + $container['helper']->register('layout', '\Kanboard\Helper\LayoutHelper'); + $container['helper']->register('model', '\Kanboard\Helper\ModelHelper'); + $container['helper']->register('subtask', '\Kanboard\Helper\SubtaskHelper'); + $container['helper']->register('task', '\Kanboard\Helper\TaskHelper'); + $container['helper']->register('text', '\Kanboard\Helper\TextHelper'); + $container['helper']->register('url', '\Kanboard\Helper\UrlHelper'); + $container['helper']->register('user', '\Kanboard\Helper\UserHelper'); + + $container['template'] = new Template($container['helper']); + + return $container; + } +} diff --git a/app/Template/action/index.php b/app/Template/action/index.php index 66cfed774..f31652519 100644 --- a/app/Template/action/index.php +++ b/app/Template/action/index.php @@ -45,7 +45,7 @@ text->contains($param_name, 'link_id')): ?> text->in($param_value, $links_list) ?> - e($param_value) ?> + text->e($param_value) ?> diff --git a/app/Template/analytic/avg_time_columns.php b/app/Template/analytic/avg_time_columns.php index 7b9d7cf99..5f6c6b357 100644 --- a/app/Template/analytic/avg_time_columns.php +++ b/app/Template/analytic/avg_time_columns.php @@ -16,7 +16,7 @@ - e($column['title']) ?> + text->e($column['title']) ?> dt->duration($column['average']) ?> diff --git a/app/Template/analytic/compare_hours.php b/app/Template/analytic/compare_hours.php index bb145d616..8249e7ba3 100644 --- a/app/Template/analytic/compare_hours.php +++ b/app/Template/analytic/compare_hours.php @@ -4,8 +4,8 @@
@@ -34,10 +34,10 @@ getCollection() as $task): ?> - url->link('#'.$this->e($task['id']), 'task', 'show', array('task_id' => $task['id'], 'project_id' => $task['project_id']), false, '', t('View this task')) ?> + url->link('#'.$this->text->e($task['id']), 'task', 'show', array('task_id' => $task['id'], 'project_id' => $task['project_id']), false, '', t('View this task')) ?> - url->link($this->e($task['title']), 'task', 'show', array('task_id' => $task['id'], 'project_id' => $task['project_id']), false, '', t('View this task')) ?> + url->link($this->text->e($task['title']), 'task', 'show', array('task_id' => $task['id'], 'project_id' => $task['project_id']), false, '', t('View this task')) ?> @@ -47,10 +47,10 @@ - e($task['time_estimated']) ?> + text->e($task['time_estimated']) ?> - e($task['time_spent']) ?> + text->e($task['time_spent']) ?> diff --git a/app/Template/analytic/tasks.php b/app/Template/analytic/tasks.php index 7392ee568..9e7b1fd73 100644 --- a/app/Template/analytic/tasks.php +++ b/app/Template/analytic/tasks.php @@ -18,7 +18,7 @@ - e($metric['column_title']) ?> + text->e($metric['column_title']) ?> diff --git a/app/Template/analytic/users.php b/app/Template/analytic/users.php index 514d71336..9d1d3a1ec 100644 --- a/app/Template/analytic/users.php +++ b/app/Template/analytic/users.php @@ -18,7 +18,7 @@ - e($metric['user']) ?> + text->e($metric['user']) ?> diff --git a/app/Template/app/projects.php b/app/Template/app/projects.php index 61899c96e..668b87c32 100644 --- a/app/Template/app/projects.php +++ b/app/Template/app/projects.php @@ -29,9 +29,9 @@ url->link('', 'listing', 'show', array('project_id' => $project['id']), false, 'dashboard-table-link', t('List')) ?>  url->link('', 'calendar', 'show', array('project_id' => $project['id']), false, 'dashboard-table-link', t('Calendar')) ?>  - url->link($this->e($project['name']), 'board', 'show', array('project_id' => $project['id'])) ?> + url->link($this->text->e($project['name']), 'board', 'show', array('project_id' => $project['id'])) ?> - '> + '> @@ -39,7 +39,7 @@ - e($column['title']) ?> + text->e($column['title']) ?> diff --git a/app/Template/app/sidebar.php b/app/Template/app/sidebar.php index 3f0d988bc..66d15b142 100644 --- a/app/Template/app/sidebar.php +++ b/app/Template/app/sidebar.php @@ -1,5 +1,5 @@ diff --git a/app/Template/board/task_footer.php b/app/Template/board/task_footer.php index 73e686020..d8b21a5bb 100644 --- a/app/Template/board/task_footer.php +++ b/app/Template/board/task_footer.php @@ -2,10 +2,10 @@
- e($task['category_name']) ?> + text->e($task['category_name']) ?> url->link( - $this->e($task['category_name']), + $this->text->e($task['category_name']), 'boardPopover', 'changeCategory', array('task_id' => $task['id'], 'project_id' => $task['project_id']), @@ -61,11 +61,11 @@ - e($task['score']) ?> + text->e($task['score']) ?> - e($task['time_estimated']).'h' ?> + text->e($task['time_estimated']).'h' ?> diff --git a/app/Template/board/task_private.php b/app/Template/board/task_private.php index 4880af00b..50efe2f66 100644 --- a/app/Template/board/task_private.php +++ b/app/Template/board/task_private.php @@ -23,11 +23,11 @@ - - e($this->user->getInitials($task['assignee_name'] ?: $task['assignee_username'])) ?> + + text->e($this->user->getInitials($task['assignee_name'] ?: $task['assignee_username'])) ?> - - url->link($this->e($task['title']), 'task', 'show', array('task_id' => $task['id'], 'project_id' => $task['project_id']), false, 'task-board-collapsed-title tooltip', $this->e($task['title'])) ?> + url->link($this->text->e($task['title']), 'task', 'show', array('task_id' => $task['id'], 'project_id' => $task['project_id']), false, 'task-board-collapsed-title tooltip', $this->text->e($task['title'])) ?>
@@ -57,7 +57,7 @@ t('Change assignee') ) ?> - e($task['assignee_name'] ?: $task['assignee_username']) ?> + text->e($task['assignee_name'] ?: $task['assignee_username']) ?> @@ -72,7 +72,7 @@
- url->link($this->e($task['title']), 'task', 'show', array('task_id' => $task['id'], 'project_id' => $task['project_id']), false, '', t('View this task')) ?> + url->link($this->text->e($task['title']), 'task', 'show', array('task_id' => $task['id'], 'project_id' => $task['project_id']), false, '', t('View this task')) ?>
render('board/task_footer', array( diff --git a/app/Template/board/task_public.php b/app/Template/board/task_public.php index d02722bb7..9058f8971 100644 --- a/app/Template/board/task_public.php +++ b/app/Template/board/task_public.php @@ -19,7 +19,7 @@
- url->link($this->e($task['title']), 'task', 'readonly', array('task_id' => $task['id'], 'token' => $project['token'])) ?> + url->link($this->text->e($task['title']), 'task', 'readonly', array('task_id' => $task['id'], 'token' => $project['token'])) ?>
render('board/task_footer', array( diff --git a/app/Template/board/tooltip_comments.php b/app/Template/board/tooltip_comments.php index ca91e13f0..6665bc7d4 100644 --- a/app/Template/board/tooltip_comments.php +++ b/app/Template/board/tooltip_comments.php @@ -2,7 +2,7 @@

- e($comment['name'] ?: $comment['username']) ?> @ + text->e($comment['name'] ?: $comment['username']) ?> @ dt->datetime($comment['date_creation']) ?>

diff --git a/app/Template/board/tooltip_external_links.php b/app/Template/board/tooltip_external_links.php index 7681c06c8..24cd1d888 100644 --- a/app/Template/board/tooltip_external_links.php +++ b/app/Template/board/tooltip_external_links.php @@ -10,10 +10,10 @@ - e($link['title']) ?> + text->e($link['title']) ?> - e($link['dependency_label']) ?> + text->e($link['dependency_label']) ?> diff --git a/app/Template/board/tooltip_files.php b/app/Template/board/tooltip_files.php index 4fa14b57f..39823757c 100644 --- a/app/Template/board/tooltip_files.php +++ b/app/Template/board/tooltip_files.php @@ -3,7 +3,7 @@ - e($file['name']) ?> + text->e($file['name']) ?> diff --git a/app/Template/board/tooltip_subtasks.php b/app/Template/board/tooltip_subtasks.php index dc076d260..126a319f7 100644 --- a/app/Template/board/tooltip_subtasks.php +++ b/app/Template/board/tooltip_subtasks.php @@ -6,7 +6,7 @@ - e($subtask['name'] ?: $subtask['username']) ?> + text->e($subtask['name'] ?: $subtask['username']) ?> diff --git a/app/Template/board/tooltip_tasklinks.php b/app/Template/board/tooltip_tasklinks.php index b51f90ed4..cabe43d86 100644 --- a/app/Template/board/tooltip_tasklinks.php +++ b/app/Template/board/tooltip_tasklinks.php @@ -6,13 +6,13 @@
task->getProgress($link).'%' ?> url->link( - $this->e('#'.$link['task_id'].' '.$link['title']), + $this->text->e('#'.$link['task_id'].' '.$link['title']), 'task', 'show', array('task_id' => $link['task_id'], 'project_id' => $link['project_id']), false, $link['is_active'] ? '' : 'task-link-closed' ) ?> - [e($link['task_assignee_name'] ?: $link['task_assignee_username']) ?>] + [text->e($link['task_assignee_name'] ?: $link['task_assignee_username']) ?>] () diff --git a/app/Template/category/index.php b/app/Template/category/index.php index e99b6d52f..7b1adf783 100644 --- a/app/Template/category/index.php +++ b/app/Template/category/index.php @@ -9,7 +9,7 @@ $category_name): ?> - e($category_name) ?> + text->e($category_name) ?>