diff options
| author | Greg Roach <fisharebest@gmail.com> | 2017-11-14 13:17:08 +0000 |
|---|---|---|
| committer | Greg Roach <fisharebest@gmail.com> | 2017-11-14 13:17:25 +0000 |
| commit | 19697c2f4600863983dd0b30d59a76a8899491a5 (patch) | |
| tree | a53eacd014af7db5bb48df573cd83158d7704f95 | |
| parent | 146665a09881ba7f08551448b6b61ab1d82aa237 (diff) | |
| download | webtrees-19697c2f4600863983dd0b30d59a76a8899491a5.tar.gz webtrees-19697c2f4600863983dd0b30d59a76a8899491a5.tar.bz2 webtrees-19697c2f4600863983dd0b30d59a76a8899491a5.zip | |
Working on front-controller, and moving themes to views
| -rw-r--r-- | app/Controller/AdminController.php | 12 | ||||
| -rw-r--r-- | app/Controller/BaseController.php | 27 | ||||
| -rw-r--r-- | app/Controller/HomePageController.php | 4 | ||||
| -rw-r--r-- | resources/views/admin/modules.php | 6 | ||||
| -rw-r--r-- | resources/views/home-page.php | 42 | ||||
| -rw-r--r-- | resources/views/layouts/administration.php | 6 | ||||
| -rw-r--r-- | resources/views/layouts/default.php | 36 | ||||
| -rw-r--r--[-rwxr-xr-x] | routes/web.php | 1 |
8 files changed, 120 insertions, 14 deletions
diff --git a/app/Controller/AdminController.php b/app/Controller/AdminController.php index 5c5cdc38f1..ae4504dc57 100644 --- a/app/Controller/AdminController.php +++ b/app/Controller/AdminController.php @@ -45,8 +45,7 @@ use Symfony\Component\HttpFoundation\ResponseHeaderBag; class AdminController extends BaseController { // This is a list of old files and directories, from earlier versions of webtrees. // git diff 1.7.9..master --name-status | grep ^D - const OLD_FILES - = [ + const OLD_FILES = [ // Removed in 1.0.2 WT_ROOT . 'language/en.mo', // Removed in 1.0.3 @@ -493,6 +492,8 @@ class AdminController extends BaseController { WT_ROOT . 'themes/xenea/jquery-ui-1.11.2', ]; + protected $layout = 'layouts/administration'; + /** * Show the admin page for blocks. * @@ -1031,7 +1032,6 @@ class AdminController extends BaseController { * @return Response */ public function modules(): Response { - $javascript = '<script>$(".table-module-administration").dataTable({' . I18N::datatablesI18N() . '});</script>'; $module_status = Database::prepare("SELECT module_name, status FROM `##module`")->fetchAssoc(); return $this->viewResponse('admin/modules', [ @@ -1040,7 +1040,6 @@ class AdminController extends BaseController { 'module_status' => $module_status, 'deleted_modules' => $this->deletedModuleNames(), 'core_module_names' => Module::getCoreModuleNames(), - 'javascript' => $javascript, ]); } @@ -1194,10 +1193,9 @@ class AdminController extends BaseController { * @return Response */ protected function viewResponse($name, $data): Response { - $html = View::make('layouts/administration', [ + $html = View::make($this->layout, [ 'content' => View::make($name, $data), - 'javascript' => $data['javascript'] ?? '', - 'title' => strip_tags($data['title'] ?? ''), + 'title' => strip_tags($data['title']), 'common_url' => 'themes/_common/css-2.0.0/', 'theme_url' => 'themes/_administration/css-2.0.0/', ]); diff --git a/app/Controller/BaseController.php b/app/Controller/BaseController.php index d410aca26a..566647b2c3 100644 --- a/app/Controller/BaseController.php +++ b/app/Controller/BaseController.php @@ -16,6 +16,7 @@ namespace Fisharebest\Webtrees\Controller; use Fisharebest\Webtrees\Html; +use Fisharebest\Webtrees\Theme; use Fisharebest\Webtrees\Tree; use Fisharebest\Webtrees\View; use Symfony\Component\HttpFoundation\RedirectResponse; @@ -43,6 +44,8 @@ class BaseController { /** @var Tree Create a page for which tree */ private $tree; + protected $layout = 'layouts/default'; + /** * Startup activity */ @@ -150,4 +153,28 @@ class BaseController { public function pageFooter() { echo $this->getJavascript(); } + + /** + * Create a response object from a view. + * + * @param string $name + * @param string[] $data + * + * @return Response + */ + protected function viewResponse($name, $data): Response { + $theme = Theme::theme(); + + +$html = View::make($this->layout, [ + 'content' => View::make($name, $data), + 'tree' => $this->tree(), + 'theme_head' => $theme->head($this), + 'theme_body_header' => $theme->bodyHeader(), + 'theme_footer_container' => $theme->footerContainer(), + 'javascript' => $this->getJavascript() . $theme->hookFooterExtraJavascript(), + ]); + + return new Response($html); + } } diff --git a/app/Controller/HomePageController.php b/app/Controller/HomePageController.php index 7d6bbc46ba..e7849d3418 100644 --- a/app/Controller/HomePageController.php +++ b/app/Controller/HomePageController.php @@ -24,6 +24,7 @@ use Fisharebest\Webtrees\FlashMessages; use Fisharebest\Webtrees\Functions\FunctionsDb; use Fisharebest\Webtrees\Functions\FunctionsPrintLists; use Fisharebest\Webtrees\GedcomRecord; +use Fisharebest\Webtrees\Html; use Fisharebest\Webtrees\I18N; use Fisharebest\Webtrees\Individual; use Fisharebest\Webtrees\Log; @@ -74,7 +75,8 @@ class HomePageController extends PageController { return $active_blocks[$module_name]; }, $side_blocks); - $content = View::make('home-page', [ + return $this->viewResponse('home-page', [ + 'title' => Html::escape($this->tree()->getTitle()), 'main_blocks' => $main_blocks, 'side_blocks' => $side_blocks ]); diff --git a/resources/views/admin/modules.php b/resources/views/admin/modules.php index ce8d12b9fe..8b7d1a4363 100644 --- a/resources/views/admin/modules.php +++ b/resources/views/admin/modules.php @@ -206,3 +206,9 @@ <i class="fa fa-check"></i> <?= I18N::translate('save') ?></button> </form> + +<script> + document.addEventListener("DOMContentLoaded", function(event) { + $(".table-module-administration").dataTable(<?= json_encode(I18N::datatablesI18N()) ?>); + } +</script> diff --git a/resources/views/home-page.php b/resources/views/home-page.php new file mode 100644 index 0000000000..c1c297ad60 --- /dev/null +++ b/resources/views/home-page.php @@ -0,0 +1,42 @@ +<?php use Fisharebest\Webtrees\Html; ?> +<?php use Fisharebest\Webtrees\I18N; ?> + +<h2 class="wt-page-title"> + HOME PAGE +</h2> + +<div class="row"> + <?php if (empty($main_blocks) || empty($side_blocks)): ?> + <div class="col-sm-12 wt-main-blocks"> + <?php foreach ($main_blocks + $side_blocks as $block_id => $block): ?> + <?php if ($block->loadAjax()): ?> + <div class="wt-ajax-load" data-ajax-url="<?= Html::escape(Html::url('index.php', ['ctype' => 'gedcom', 'block_id' => $block_id, 'ajax' => 1])) ?>"> + </div> + <?php else: ?> + <?= $block->getBlock($block_id) ?> + <?php endif ?> + <?php endforeach ?> + </div> + <?php else: ?> + <div class="col-sm-8 wt-main-blocks"> + <?php foreach ($main_blocks as $block_id => $block): ?> + <?php if ($block->loadAjax()): ?> + <div class="wt-ajax-load" data-ajax-url="<?= Html::escape(Html::url('index.php', ['ctype' => 'gedcom', 'block_id' => $block_id, 'ajax' => 1])) ?>"> + </div> + <?php else: ?> + <?= $block->getBlock($block_id) ?> + <?php endif ?> + <?php endforeach ?> + </div> + <div class="col-sm-4 wt-side-blocks"> + <?php foreach ($side_blocks as $block_id => $block): ?> + <?php if ($block->loadAjax()): ?> + <div class="wt-ajax-load" data-ajax-url="<?= Html::escape(Html::url('index.php', ['ctype' => 'gedcom', 'block_id' => $block_id, 'ajax' => 1])) ?>"> + </div> + <?php else: ?> + <?= $block->getBlock($block_id) ?> + <?php endif ?> + <?php endforeach ?> + </div> + <?php endif ?> +</div> diff --git a/resources/views/layouts/administration.php b/resources/views/layouts/administration.php index 77242ae5c1..9f54abbfd3 100644 --- a/resources/views/layouts/administration.php +++ b/resources/views/layouts/administration.php @@ -11,9 +11,7 @@ <title><?= $title ?></title> - <link rel="icon" type="image/png" href="<?= Html::escape($common_url) ?>favicon.png"> - <link rel="icon" type="image/png" href="<?= Html::escape($common_url) ?>favicon192.png" sizes="192x192"> - <link rel="apple-touch-icon" sizes="180x180" href="<?= Html::escape($common_url) ?>favicon180.png"> + <link rel="icon" href="favicon.ico" type="image/x-icon"> <link rel="stylesheet" type="text/css" href="<?= Html::escape(WT_BOOTSTRAP_CSS_URL) ?>"> <link rel="stylesheet" type="text/css" href="<?= Html::escape(WT_FONT_AWESOME_CSS_URL) ?>"> @@ -80,7 +78,5 @@ <script src="<?= Html::escape(WT_BOOTSTRAP_DATETIMEPICKER_JS_URL) ?>"></script> <script src="<?= Html::escape(WT_WEBTREES_JS_URL) ?>"></script> <script src="<?= Html::escape(WT_ADMIN_JS_URL) ?>"></script> - - <?= $javascript ?> </body> </html> diff --git a/resources/views/layouts/default.php b/resources/views/layouts/default.php new file mode 100644 index 0000000000..c61c379499 --- /dev/null +++ b/resources/views/layouts/default.php @@ -0,0 +1,36 @@ +<?php use Fisharebest\Webtrees\Database; ?> +<?php use Fisharebest\Webtrees\Filter; ?> +<?php use Fisharebest\Webtrees\FlashMessages; ?> +<?php use Fisharebest\Webtrees\Html; ?> +<?php use Fisharebest\Webtrees\I18N; ?> +<!DOCTYPE html> +<html <?= I18N::htmlAttributes() ?>> + <?= $theme_head ?> + <?= $theme_body_header ?> + + <?= $content ?> + + <?= $theme_footer_container ?> + + <script> + // Global constants + var WT_MODULES_DIR = <?= json_encode(WT_MODULES_DIR) ?>; + var WT_GEDCOM = <?= json_encode($tree ? $tree->getName() : '') ?>; + var textDirection = <?= json_encode(I18N::direction()) ?>; + var WT_LOCALE = <?= json_encode(WT_LOCALE) ?>; + </script> + + <script src="<?= Html::escape(WT_JQUERY_JS_URL) ?>"></script> + <script src="<?= Html::escape(WT_POPPER_JS_URL) ?>"></script> + <script src="<?= Html::escape(WT_BOOTSTRAP_JS_URL) ?>"></script> + <script src="<?= Html::escape(WT_DATATABLES_JS_URL) ?>"></script> + <script src="<?= Html::escape(WT_DATATABLES_BOOTSTRAP_JS_URL) ?>"></script> + <script src="<?= Html::escape(WT_SELECT2_JS_URL) ?>"></script> + <script src="<?= Html::escape(WT_WEBTREES_JS_URL) ?>"></script> + + </body> +</html> +<!-- webtrees: <?= WT_VERSION ?> -->' . +<!-- Execution time: <?= I18N::number(microtime(true) - WT_START_TIME, 3) ?> seconds --> +<!-- Memory: <?= I18N::number(memory_get_peak_usage(true) / 1024) ?> KB --> +<!-- SQL queries: <?= I18N::number(Database::getQueryCount()) ?> --> diff --git a/routes/web.php b/routes/web.php index cc1d435c64..ab1015cec9 100755..100644 --- a/routes/web.php +++ b/routes/web.php @@ -38,7 +38,6 @@ if ($method === 'POST' && !Filter::checkCsrf()) { // Admin routes. if (Auth::isAdmin()) { switch ($method . ':' . $route) { - default: case 'GET:admin-blocks': return ($controller = new AdminController)->blocks(); |
