Browse Source

Add backend.

mscherer 5 years ago
parent
commit
294d081c87

+ 0 - 8
config/routes.php

@@ -1,8 +0,0 @@
-<?php
-
-use Cake\Routing\RouteBuilder;
-use Cake\Routing\Router;
-
-Router::plugin('Tools', function (RouteBuilder $routes) {
-	$routes->fallbacks();
-});

+ 26 - 0
src/Controller/Admin/FormatController.php

@@ -0,0 +1,26 @@
+<?php
+
+namespace Tools\Controller\Admin;
+
+use App\Controller\AppController;
+
+/**
+ * Display format helper specific debug info
+ *
+ * Needs Configure:
+ * - Format.fontIcons
+ */
+class FormatController extends AppController {
+
+	/**
+	 * @var string|null
+	 */
+	protected $modelClass = '';
+
+	/**
+	 * @return \Cake\Http\Response|null|void
+	 */
+	public function icons() {
+	}
+
+}

+ 26 - 0
src/Controller/Admin/ToolsController.php

@@ -0,0 +1,26 @@
+<?php
+
+namespace Tools\Controller\Admin;
+
+use App\Controller\AppController;
+
+/**
+ * Display format helper specific debug info
+ *
+ * @property \Cake\Controller\Component\FlashComponent $Flash
+ */
+class ToolsController extends AppController {
+
+	/**
+	 * @var string|null
+	 */
+	protected $modelClass = '';
+
+	/**
+	 * @return \Cake\Http\Response|null|void
+	 */
+	public function index() {
+		$this->viewBuilder()->addHelper('Tools.Format');
+	}
+
+}

+ 2 - 2
src/Controller/ShuntRequestController.php

@@ -23,9 +23,9 @@ use RuntimeException;
 class ShuntRequestController extends AppController {
 
 	/**
-	 * @var string|false
+	 * @var string|null
 	 */
-	protected $modelClass = false;
+	protected $modelClass = '';
 
 	/**
 	 * @return void

+ 19 - 0
src/Plugin.php

@@ -3,6 +3,7 @@
 namespace Tools;
 
 use Cake\Core\BasePlugin;
+use Cake\Routing\RouteBuilder;
 
 /**
  * Plugin for Tools
@@ -14,4 +15,22 @@ class Plugin extends BasePlugin {
 	 */
 	protected $middlewareEnabled = false;
 
+	/**
+	 * @param \Cake\Routing\RouteBuilder $routes The route builder to update.
+	 * @return void
+	 */
+	public function routes(RouteBuilder $routes): void {
+		$routes->plugin('Tools', function (RouteBuilder $routes) {
+			$routes->fallbacks();
+		});
+
+		$routes->prefix('Admin', function (RouteBuilder $routes) {
+			$routes->plugin('Tools', function (RouteBuilder $routes) {
+				$routes->connect('/', ['controller' => 'Tools', 'action' => 'index']);
+
+				$routes->fallbacks();
+			});
+		});
+	}
+
 }

+ 4 - 3
src/View/Helper/FormatHelper.php

@@ -43,14 +43,15 @@ class FormatHelper extends Helper {
 		'edit' => 'fa fa-pencil',
 		'add' => 'fa fa-plus',
 		'delete' => 'fa fa-trash',
-		'prev' => 'fa fa-prev',
-		'next' => 'fa fa-next',
+		'prev' => 'fa fa-arrow-left',
+		'next' => 'fa fa-arrow-right',
 		'pro' => 'fa fa-thumbs-up',
 		'contra' => 'fa fa-thumbs-down',
 		'male' => 'fa fa-mars',
 		'female' => 'fa fa-venus',
 		'config' => 'fa fa-cogs',
-		//'genderless' => 'fa fa-genderless'
+		'login' => 'fas fa-sign-in-alt',
+		'logout' => 'fas fa-sign-out-alt',
 	];
 
 	/**

+ 24 - 0
templates/Admin/Format/icons.php

@@ -0,0 +1,24 @@
+<?php
+/**
+ * @var \App\View\AppView $this
+ */
+?>
+
+<div class="row">
+	<div class="col-lg-6">
+		<h1>Font Icons</h1>
+		<p>As configured in app.php (through `Format.fontIcons`)</p>
+
+		<?php
+		$icons = $this->Format->getConfig('fontIcons');
+		?>
+		<ul>
+		<?php foreach ($icons as $icon => $class) { ?>
+			<li><?php echo $this->Format->icon($icon); ?> - <?php echo h($icon)?> (<?php echo h($class)?>)</li>
+		<?php } ?>
+		</ul>
+
+	</div>
+	<div class="col-lg-6">
+	</div>
+</div>

+ 16 - 0
templates/Admin/Tools/index.php

@@ -0,0 +1,16 @@
+<?php
+/**
+ * @var \App\View\AppView $this
+ */
+?>
+
+<div class="row">
+	<div class="col-12">
+		<h1>Tools plugin</h1>
+
+		<h2>Helper debugging</h2>
+		<ul>
+			<li><?php echo $this->Html->link('Format and font icons', ['controller' => 'Format', 'action' => 'icons']); ?></li>
+		</ul>
+	</div>
+</div>

+ 40 - 0
tests/TestCase/Controller/Admin/FormatControllerTest.php

@@ -0,0 +1,40 @@
+<?php
+
+namespace Tools\Test\TestCase\Controller\Admin;
+
+use Cake\TestSuite\IntegrationTestTrait;
+use Shim\TestSuite\TestCase;
+
+/**
+ * @uses \Tools\Controller\FormatController
+ */
+class FormatControllerTest extends TestCase {
+
+	use IntegrationTestTrait;
+
+	/**
+	 * @var array
+	 */
+	protected $fixtures = [
+		//'core.Sessions',
+	];
+
+	/**
+	 * @return void
+	 */
+	public function setUp(): void {
+		parent::setUp();
+	}
+
+	/**
+	 * @return void
+	 */
+	public function testIcons() {
+		$this->disableErrorHandlerMiddleware();
+
+		$this->get(['prefix' => 'Admin', 'plugin' => 'Tools', 'controller' => 'Format', 'action' => 'icons']);
+
+		$this->assertResponseCode(200);
+	}
+
+}

+ 26 - 0
tests/TestCase/Controller/Admin/ToolsControllerTest.php

@@ -0,0 +1,26 @@
+<?php
+
+namespace Tools\Test\TestCase\Controller\Admin;
+
+use Cake\TestSuite\IntegrationTestTrait;
+use Shim\TestSuite\TestCase;
+
+/**
+ * @uses \Tools\Controller\ToolsController
+ */
+class ToolsControllerTest extends TestCase {
+
+	use IntegrationTestTrait;
+
+	/**
+	 * @return void
+	 */
+	public function testIcons() {
+		$this->disableErrorHandlerMiddleware();
+
+		$this->get(['prefix' => 'Admin', 'plugin' => 'Tools', 'controller' => 'Tools', 'action' => 'index']);
+
+		$this->assertResponseCode(200);
+	}
+
+}

+ 3 - 3
tests/bootstrap.php

@@ -105,13 +105,13 @@ Cake\Log\Log::setConfig('error', [
 Cake\Utility\Security::setSalt('foo');
 
 // Why is this required?
-require ROOT . DS . 'config' . DS . 'bootstrap.php';
+//require ROOT . DS . 'config' . DS . 'bootstrap.php';
 
 Router::defaultRouteClass(DashedRoute::class);
 
 // Why has this no effect?
-Router::reload();
-require TESTS . 'config' . DS . 'routes.php';
+//Router::reload();
+//require TESTS . 'config' . DS . 'routes.php';
 
 class_alias(TestApp\Controller\AppController::class, 'App\Controller\AppController');
 

+ 7 - 1
tests/config/routes.php

@@ -12,4 +12,10 @@ Router::scope('/', function(RouteBuilder $routes) {
 	$routes->fallbacks(DashedRoute::class);
 });
 
-require ROOT . DS . 'config' . DS . 'routes.php';
+Router::prefix('Admin', function (RouteBuilder $routes) {
+	$routes->plugin('Tools', function (RouteBuilder $routes) {
+		$routes->connect('/', ['controller' => 'Tools', 'action' => 'index']);
+
+		$routes->fallbacks();
+	});
+});

+ 2 - 0
tests/templates/layout/default.php

@@ -0,0 +1,2 @@
+<?php
+echo $this->fetch('content');