summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGreg Roach <fisharebest@gmail.com>2017-11-14 13:17:08 +0000
committerGreg Roach <fisharebest@gmail.com>2017-11-14 13:17:25 +0000
commit19697c2f4600863983dd0b30d59a76a8899491a5 (patch)
treea53eacd014af7db5bb48df573cd83158d7704f95
parent146665a09881ba7f08551448b6b61ab1d82aa237 (diff)
downloadwebtrees-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.php12
-rw-r--r--app/Controller/BaseController.php27
-rw-r--r--app/Controller/HomePageController.php4
-rw-r--r--resources/views/admin/modules.php6
-rw-r--r--resources/views/home-page.php42
-rw-r--r--resources/views/layouts/administration.php6
-rw-r--r--resources/views/layouts/default.php36
-rw-r--r--[-rwxr-xr-x]routes/web.php1
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();