From 0fd5fb832c877ace8a50db9eaf3caa207372f537 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Roland=20H=C3=A4der?= Date: Mon, 5 May 2008 21:29:32 +0000 Subject: [PATCH] Default news controller added, some fixes --- .gitattributes | 5 +- .../ship-simu/templates/de/html/home.tpl | 12 +- inc/classes/exceptions/controller/.htaccess | 1 + .../class_DefaultControllerException.php | 45 +++++++ .../main/class_BaseFrameworkSystem.php | 1 + .../commands/local/class_LocalHomeCommand.php | 5 +- ...r.php => class_LocalDefaultController.php} | 6 +- .../class_LocalDefaultNewsController.php | 111 ++++++++++++++++++ .../main/resolver/class_BaseResolver.php | 4 +- .../local/class_LocalControllerResolver.php | 5 +- 10 files changed, 177 insertions(+), 18 deletions(-) create mode 100644 inc/classes/exceptions/controller/.htaccess create mode 100644 inc/classes/exceptions/controller/class_DefaultControllerException.php rename inc/classes/main/controller/default/{class_DefaultController.php => class_LocalDefaultController.php} (91%) create mode 100644 inc/classes/main/controller/default/class_LocalDefaultNewsController.php diff --git a/.gitattributes b/.gitattributes index 3d2a700..adac8d9 100644 --- a/.gitattributes +++ b/.gitattributes @@ -144,6 +144,8 @@ inc/classes/exceptions/container/.htaccess -text inc/classes/exceptions/container/class_ContainerItemIsNoArrayException.php -text inc/classes/exceptions/container/class_ContainerItemIsNullException.php -text inc/classes/exceptions/container/class_ContainerMaybeDamagedException.php -text +inc/classes/exceptions/controller/.htaccess -text +inc/classes/exceptions/controller/class_DefaultControllerException.php -text inc/classes/exceptions/database/.htaccess -text inc/classes/exceptions/database/local_file/.htaccess -text inc/classes/exceptions/database/local_file/class_SavePathIsEmptyException.php -text @@ -254,7 +256,8 @@ inc/classes/main/console/class_ConsoleTools.php -text inc/classes/main/controller/.htaccess -text inc/classes/main/controller/class_BaseController.php -text inc/classes/main/controller/default/.htaccess -text -inc/classes/main/controller/default/class_DefaultController.php -text +inc/classes/main/controller/default/class_LocalDefaultController.php -text +inc/classes/main/controller/default/class_LocalDefaultNewsController.php -text inc/classes/main/controller/registration/.htaccess -text inc/classes/main/controller/registration/class_DefaultRegistrationController.php -text inc/classes/main/database/.htaccess -text diff --git a/application/ship-simu/templates/de/html/home.tpl b/application/ship-simu/templates/de/html/home.tpl index 2523adf..8625082 100644 --- a/application/ship-simu/templates/de/html/home.tpl +++ b/application/ship-simu/templates/de/html/home.tpl @@ -1,9 +1,7 @@ -
-
- Willkommen zum Schiffsimulator "Ship-Simu"! -
+
+ Willkommen zum Schiffsimulator "Ship-Simu"! +
-
- {?ship_simu_news?} -
+
+ {?ship_simu_news?}
diff --git a/inc/classes/exceptions/controller/.htaccess b/inc/classes/exceptions/controller/.htaccess new file mode 100644 index 0000000..3a42882 --- /dev/null +++ b/inc/classes/exceptions/controller/.htaccess @@ -0,0 +1 @@ +Deny from all diff --git a/inc/classes/exceptions/controller/class_DefaultControllerException.php b/inc/classes/exceptions/controller/class_DefaultControllerException.php new file mode 100644 index 0000000..aead2d4 --- /dev/null +++ b/inc/classes/exceptions/controller/class_DefaultControllerException.php @@ -0,0 +1,45 @@ + + * @version 0.0.0 + * @copyright Copyright(c) 2007, 2008 Roland Haeder, this is free software + * @license GNU GPL 3.0 or any newer version + * @link http://www.ship-simu.org + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +class DefaultControllerException extends FrameworkException { + /** + * The super constructor for all exceptions + * + * @param $resolverInstance An instance of a resolver class + * @param $code An optional code for better debugging + * @return void + */ + public function __construct(ControllerResolver $resolverInstance, $code) { + // Prepare the message + $message = sprintf("[%s:%d] Cannot resolv default controller. Maybe missing?", + $resolverInstance->__toString(), + $this->getLine() + ); + + // Call parent contructor with message + parent::__construct($message, $code); + } +} + +// [EOF] +?> diff --git a/inc/classes/main/class_BaseFrameworkSystem.php b/inc/classes/main/class_BaseFrameworkSystem.php index 9db3049..4abdf29 100644 --- a/inc/classes/main/class_BaseFrameworkSystem.php +++ b/inc/classes/main/class_BaseFrameworkSystem.php @@ -148,6 +148,7 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { const EXCEPTION_INVALID_COMMAND = 0x031; const EXCEPTION_INVALID_CONTROLLER = 0x032; const EXCEPTION_HEADERS_ALREADY_SENT = 0x033; + const EXCEPTION_DEFAUL_CONTROLLER_GONE = 0x034; /** * In the super constructor these system classes shall be ignored or else diff --git a/inc/classes/main/commands/local/class_LocalHomeCommand.php b/inc/classes/main/commands/local/class_LocalHomeCommand.php index 4f96e30..58e1a76 100644 --- a/inc/classes/main/commands/local/class_LocalHomeCommand.php +++ b/inc/classes/main/commands/local/class_LocalHomeCommand.php @@ -39,9 +39,6 @@ class LocalHomeCommand extends BaseCommand implements Commandable { // Clean up a little $this->removeSystemArray(); - - // Set assigned controller - $this->setControllerName("default"); } /** @@ -60,7 +57,7 @@ class LocalHomeCommand extends BaseCommand implements Commandable { // Return the prepared instance return $commandInstance; } - + /** * Executes the given command with given request and response objects * diff --git a/inc/classes/main/controller/default/class_DefaultController.php b/inc/classes/main/controller/default/class_LocalDefaultController.php similarity index 91% rename from inc/classes/main/controller/default/class_DefaultController.php rename to inc/classes/main/controller/default/class_LocalDefaultController.php index e700a6e..a79243a 100644 --- a/inc/classes/main/controller/default/class_DefaultController.php +++ b/inc/classes/main/controller/default/class_LocalDefaultController.php @@ -21,7 +21,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -class DefaultController extends BaseController implements Controller { +class LocalLocalDefaultController extends BaseController implements Controller { /** * Instance of a CommandResolver class */ @@ -52,9 +52,9 @@ class DefaultController extends BaseController implements Controller { * @param $resolverInstance An instance of a command resolver class * @return $controllerInstance A prepared instance of this class */ - public final static function createDefaultController (CommandResolver $resolverInstance) { + public final static function createLocalDefaultController (CommandResolver $resolverInstance) { // Create the instance - $controllerInstance = new DefaultController(); + $controllerInstance = new LocalDefaultController(); // Set the command resolver $controllerInstance->setResolverInstance($resolverInstance); diff --git a/inc/classes/main/controller/default/class_LocalDefaultNewsController.php b/inc/classes/main/controller/default/class_LocalDefaultNewsController.php new file mode 100644 index 0000000..90d3ec7 --- /dev/null +++ b/inc/classes/main/controller/default/class_LocalDefaultNewsController.php @@ -0,0 +1,111 @@ + + * @version 0.0.0 + * @copyright Copyright(c) 2007, 2008 Roland Haeder, this is free software + * @license GNU GPL 3.0 or any newer version + * @link http://www.ship-simu.org + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +class LocalDefaultNewsController extends BaseController implements Controller { + /** + * Instance of a CommandResolver class + */ + private $resolverInstance = null; + + /** + * Private constructor + * + * @return void + */ + protected function __construct () { + // Call parent constructor + parent::__construct(__CLASS__); + + // Set part description + $this->setObjectDescription("Standart-Controller mit News-Auflistung"); + + // Create unique ID number + $this->createUniqueID(); + + // Clean up a little + $this->removeSystemArray(); + } + + /** + * Creates an instance of this class + * + * @param $resolverInstance An instance of a command resolver class + * @return $controllerInstance A prepared instance of this class + */ + public final static function createLocalDefaultNewsController (CommandResolver $resolverInstance) { + // Create the instance + $controllerInstance = new LocalDefaultNewsController(); + + // Set the command resolver + $controllerInstance->setResolverInstance($resolverInstance); + + // Return the prepared instance + return $controllerInstance; + } + + /** + * Setter for a command resolver instance + * + * @param $resolverInstance An instance of a command resolver class + * @return void + */ + public final function setResolverInstance (CommandResolver $resolverInstance) { + $this->resolverInstance = $resolverInstance; + } + + /** + * Handles the given request and response + * + * @param $requestInstance An instance of a request class + * @param $responseInstance An instance of a response class + * @return void + */ + public function handleRequest (Requestable $requestInstance, Responseable $responseInstance) { + // Get the command instance + $commandInstance = $this->resolverInstance->resolvCommandByRequest($requestInstance); + + // Get the news page variable from the request instance + $newsPage = $requestInstance->getRequestElement("news_page"); + + // Load the news here + $this->loadNews($newsPage); + + // Execute the command + $commandInstance->execute($requestInstance, $responseInstance); + + // Flush the response out + $responseInstance->flushResponse(); + } + + /** + * Loads news from the connected database for later usage + * + * @param $newsPage Page of listed news we want to read + * @return void + */ + private function loadNews ($newsPage) { + } +} + +// [EOF] +?> diff --git a/inc/classes/main/resolver/class_BaseResolver.php b/inc/classes/main/resolver/class_BaseResolver.php index 74cfa47..d442ef3 100644 --- a/inc/classes/main/resolver/class_BaseResolver.php +++ b/inc/classes/main/resolver/class_BaseResolver.php @@ -37,9 +37,9 @@ class BaseResolver extends BaseFrameworkSystem { * * @return void */ - protected function __construct () { + protected function __construct ($class) { // Call parent constructor - parent::__construct(__CLASS__); + parent::__construct($class); // Clean up a little $this->removeSystemArray(); diff --git a/inc/classes/main/resolver/local/class_LocalControllerResolver.php b/inc/classes/main/resolver/local/class_LocalControllerResolver.php index 8ff0788..9c94209 100644 --- a/inc/classes/main/resolver/local/class_LocalControllerResolver.php +++ b/inc/classes/main/resolver/local/class_LocalControllerResolver.php @@ -140,7 +140,7 @@ class LocalControllerResolver extends BaseResolver implements ControllerResolver $controllerInstance = null; // Default controller - $class = "DefaultController"; + $class = "LocalDefaultController"; // Generate the class name if ($commandName != $defaultCommand) { @@ -148,6 +148,9 @@ class LocalControllerResolver extends BaseResolver implements ControllerResolver $class = sprintf("Local%sController", ucfirst(strtolower($commandName)) ); + } elseif ($this->getConfigInstance()->readConfig("home_with_news") == "Y") { + // Yes, display news in home then set default controller with news + $class = "LocalDefaultNewsController"; } // Is this class loaded? -- 2.39.5