summaryrefslogtreecommitdiff
path: root/app/Helper
diff options
context:
space:
mode:
authorFrederic Guillot <fred@kanboard.net>2016-01-31 21:44:49 -0500
committerFrederic Guillot <fred@kanboard.net>2016-01-31 21:44:49 -0500
commit26492aba7ee2bfb8c525ea0aaa580aff47a414ba (patch)
treede2ebb411685057a2a8723ca7f763966478a39f7 /app/Helper
parent271543431e999032d6e91197633119309fa6c622 (diff)
Simplify layout and templates generation
Diffstat (limited to 'app/Helper')
-rw-r--r--app/Helper/Layout.php141
1 files changed, 140 insertions, 1 deletions
diff --git a/app/Helper/Layout.php b/app/Helper/Layout.php
index 685c7b84..8c00a311 100644
--- a/app/Helper/Layout.php
+++ b/app/Helper/Layout.php
@@ -26,7 +26,146 @@ class Layout extends Base
return $this->template->render($template, $params);
}
- $params['board_selector'] = $this->projectUserRole->getActiveProjectsByUser($this->userSession->getId());
+ if (! isset($params['no_layout']) && ! isset($params['board_selector'])) {
+ $params['board_selector'] = $this->projectUserRole->getActiveProjectsByUser($this->userSession->getId());
+ }
+
return $this->template->layout($template, $params);
}
+
+ /**
+ * Common layout for user views
+ *
+ * @access public
+ * @param string $template Template name
+ * @param array $params Template parameters
+ * @return string
+ */
+ public function user($template, array $params)
+ {
+ if (isset($params['user'])) {
+ $params['title'] = '#'.$params['user']['id'].' '.($params['user']['name'] ?: $params['user']['username']);
+ }
+
+ return $this->subLayout('user/layout', 'user/sidebar', $template, $params);
+ }
+
+ /**
+ * Common layout for task views
+ *
+ * @access public
+ * @param string $template Template name
+ * @param array $params Template parameters
+ * @return string
+ */
+ public function task($template, array $params)
+ {
+ $params['title'] = '#'.$params['task']['id'].' '.$params['task']['title'];
+ return $this->subLayout('task/layout', 'task/sidebar', $template, $params);
+ }
+
+ /**
+ * Common layout for project views
+ *
+ * @access public
+ * @param string $template
+ * @param array $params
+ * @param string $sidebar
+ * @return string
+ */
+ public function project($template, array $params, $sidebar = 'project/sidebar')
+ {
+ if (empty($params['title'])) {
+ $params['title'] = $params['project']['name'];
+ } elseif ($params['project']['name'] !== $params['title']) {
+ $params['title'] = $params['project']['name'].' &gt; '.$params['title'];
+ }
+
+ return $this->subLayout('project/layout', $sidebar, $template, $params);
+ }
+
+ /**
+ * Common layout for project user views
+ *
+ * @access public
+ * @param string $template
+ * @param array $params
+ * @return string
+ */
+ public function projectUser($template, array $params)
+ {
+ $params['filter'] = array('user_id' => $params['user_id']);
+ return $this->subLayout('project_user/layout', 'project_user/sidebar', $template, $params);
+ }
+
+ /**
+ * Common layout for config views
+ *
+ * @access public
+ * @param string $template
+ * @param array $params
+ * @return string
+ */
+ public function config($template, array $params)
+ {
+ if (! isset($params['values'])) {
+ $params['values'] = $this->config->getAll();
+ }
+
+ if (! isset($params['errors'])) {
+ $params['errors'] = array();
+ }
+
+ return $this->subLayout('config/layout', 'config/sidebar', $template, $params);
+ }
+
+ /**
+ * Common layout for dashboard views
+ *
+ * @access public
+ * @param string $template
+ * @param array $params
+ * @return string
+ */
+ public function dashboard($template, array $params)
+ {
+ return $this->subLayout('app/layout', 'app/sidebar', $template, $params);
+ }
+
+ /**
+ * Common layout for analytic views
+ *
+ * @access public
+ * @param string $template
+ * @param array $params
+ * @return string
+ */
+ public function analytic($template, array $params)
+ {
+ return $this->subLayout('analytic/layout', 'analytic/sidebar', $template, $params);
+ }
+
+ /**
+ * Common method to generate a sublayout
+ *
+ * @access public
+ * @param string $sublayout
+ * @param string $sidebar
+ * @param string $template
+ * @param array $params
+ * @return string
+ */
+ public function subLayout($sublayout, $sidebar, $template, array $params = array())
+ {
+ $content = $this->template->render($template, $params);
+
+ if ($this->request->isAjax()) {
+ return $content;
+ }
+
+ $params['content_for_sublayout'] = $content;
+ $params['sidebar_template'] = $sidebar;
+
+ return $this->app($sublayout, $params);
+ }
}