From e11e2cb25a42bc5a51a131d1ba2a09d117306edf Mon Sep 17 00:00:00 2001 From: =?utf8?q?Roland=20H=C3=A4der?= Date: Sun, 5 Apr 2009 08:33:48 +0000 Subject: [PATCH 1/1] Menu template engine added --- .gitattributes | 3 + inc/classes/main/template/class_ | 96 +++++++++++++++++++ inc/classes/main/template/menu/.htaccess | 1 + .../menu/class_MenuTemplateEngine.php | 96 +++++++++++++++++++ 4 files changed, 196 insertions(+) create mode 100644 inc/classes/main/template/class_ create mode 100644 inc/classes/main/template/menu/.htaccess create mode 100644 inc/classes/main/template/menu/class_MenuTemplateEngine.php diff --git a/.gitattributes b/.gitattributes index ce9ca072..b40f3156 100644 --- a/.gitattributes +++ b/.gitattributes @@ -440,11 +440,14 @@ inc/classes/main/result/class_DatabaseResult.php -text inc/classes/main/rng/.htaccess -text inc/classes/main/rng/class_RandomNumberGenerator.php -text inc/classes/main/template/.htaccess -text +inc/classes/main/template/class_ -text inc/classes/main/template/class_BaseTemplateEngine.php -text inc/classes/main/template/image/.htaccess -text inc/classes/main/template/image/class_ImageTemplateEngine.php -text inc/classes/main/template/mail/.htaccess -text inc/classes/main/template/mail/class_MailTemplateEngine.php -text +inc/classes/main/template/menu/.htaccess -text +inc/classes/main/template/menu/class_MenuTemplateEngine.php -text inc/classes/main/template/web/.htaccess -text inc/classes/main/template/web/class_WebTemplateEngine.php -text inc/classes/main/user/.htaccess -text diff --git a/inc/classes/main/template/class_ b/inc/classes/main/template/class_ new file mode 100644 index 00000000..985d514f --- /dev/null +++ b/inc/classes/main/template/class_ @@ -0,0 +1,96 @@ + + * @version 0.0.0 + * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 Core Developer Team + * @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 ???TemplateEngine extends BaseTemplateEngine implements CompileableTemplate { + /** + * Protected constructor + * + * @return void + */ + protected function __construct () { + // Call parent constructor + parent::__construct(__CLASS__); + } + + /** + * Creates an instance of the class TemplateEngine and prepares it for usage + * + * @param $appInstance A manageable application + * @return $tplInstance An instance of TemplateEngine + * @throws BasePathIsEmptyException If the provided $templateBasePath is empty + * @throws InvalidBasePathStringException If $templateBasePath is no string + * @throws BasePathIsNoDirectoryException If $templateBasePath is no + * directory or not found + * @throws BasePathReadProtectedException If $templateBasePath is + * read-protected + */ + public final static function create???TemplateEngine (ManageableApplication $appInstance) { + // Get a new instance + $tplInstance = new ???TemplateEngine(); + + // Get language and file I/O instances from application + $langInstance = $appInstance->getLanguageInstance(); + $ioInstance = $appInstance->getFileIoInstance(); + + // Determine base path + $templateBasePath = $tplInstance->getConfigInstance()->readConfig('application_base_path') . $appInstance->getRequestInstance()->getRequestElement('app') . '/'; + + // Is the base path valid? + if (empty($templateBasePath)) { + // Base path is empty + throw new BasePathIsEmptyException($tplInstance, self::EXCEPTION_UNEXPECTED_EMPTY_STRING); + } elseif (!is_string($templateBasePath)) { + // Is not a string + throw new InvalidBasePathStringException(array($tplInstance, $templateBasePath), self::EXCEPTION_INVALID_STRING); + } elseif (!is_dir($templateBasePath)) { + // Is not a path + throw new BasePathIsNoDirectoryException(array($tplInstance, $templateBasePath), self::EXCEPTION_INVALID_PATH_NAME); + } elseif (!is_readable($templateBasePath)) { + // Is not readable + throw new BasePathReadProtectedException(array($tplInstance, $templateBasePath), self::EXCEPTION_READ_PROTECED_PATH); + } + + // Get configuration instance + $configInstance = FrameworkConfiguration::getInstance(); + + // Set the base path + $tplInstance->setTemplateBasePath($templateBasePath); + + // Set the language and IO instances + $tplInstance->setLanguageInstance($langInstance); + $tplInstance->setFileIoInstance($ioInstance); + + // Set template extensions + $tplInstance->setRawTemplateExtension($configInstance->readConfig('raw_template_extension')); + $tplInstance->setCodeTemplateExtension($configInstance->readConfig('code_template_extension')); + + // Absolute output path for compiled templates + $tplInstance->setCompileOutputPath($configInstance->readConfig('base_path') . $configInstance->readConfig('compile_output_path')); + + // Return the prepared instance + return $tplInstance; + } +} + +// [EOF] +?> diff --git a/inc/classes/main/template/menu/.htaccess b/inc/classes/main/template/menu/.htaccess new file mode 100644 index 00000000..3a428827 --- /dev/null +++ b/inc/classes/main/template/menu/.htaccess @@ -0,0 +1 @@ +Deny from all diff --git a/inc/classes/main/template/menu/class_MenuTemplateEngine.php b/inc/classes/main/template/menu/class_MenuTemplateEngine.php new file mode 100644 index 00000000..8c5cee4d --- /dev/null +++ b/inc/classes/main/template/menu/class_MenuTemplateEngine.php @@ -0,0 +1,96 @@ + + * @version 0.0.0 + * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 Core Developer Team + * @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 MenuTemplateEngine extends BaseTemplateEngine implements CompileableTemplate { + /** + * Protected constructor + * + * @return void + */ + protected function __construct () { + // Call parent constructor + parent::__construct(__CLASS__); + } + + /** + * Creates an instance of the class TemplateEngine and prepares it for usage + * + * @param $appInstance A manageable application + * @return $tplInstance An instance of TemplateEngine + * @throws BasePathIsEmptyException If the provided $templateBasePath is empty + * @throws InvalidBasePathStringException If $templateBasePath is no string + * @throws BasePathIsNoDirectoryException If $templateBasePath is no + * directory or not found + * @throws BasePathReadProtectedException If $templateBasePath is + * read-protected + */ + public final static function createMenuTemplateEngine (ManageableApplication $appInstance) { + // Get a new instance + $tplInstance = new MenuTemplateEngine(); + + // Get language and file I/O instances from application + $langInstance = $appInstance->getLanguageInstance(); + $ioInstance = $appInstance->getFileIoInstance(); + + // Determine base path + $templateBasePath = $tplInstance->getConfigInstance()->readConfig('application_base_path') . $appInstance->getRequestInstance()->getRequestElement('app') . '/'; + + // Is the base path valid? + if (empty($templateBasePath)) { + // Base path is empty + throw new BasePathIsEmptyException($tplInstance, self::EXCEPTION_UNEXPECTED_EMPTY_STRING); + } elseif (!is_string($templateBasePath)) { + // Is not a string + throw new InvalidBasePathStringException(array($tplInstance, $templateBasePath), self::EXCEPTION_INVALID_STRING); + } elseif (!is_dir($templateBasePath)) { + // Is not a path + throw new BasePathIsNoDirectoryException(array($tplInstance, $templateBasePath), self::EXCEPTION_INVALID_PATH_NAME); + } elseif (!is_readable($templateBasePath)) { + // Is not readable + throw new BasePathReadProtectedException(array($tplInstance, $templateBasePath), self::EXCEPTION_READ_PROTECED_PATH); + } + + // Get configuration instance + $configInstance = FrameworkConfiguration::getInstance(); + + // Set the base path + $tplInstance->setTemplateBasePath($templateBasePath); + + // Set the language and IO instances + $tplInstance->setLanguageInstance($langInstance); + $tplInstance->setFileIoInstance($ioInstance); + + // Set template extensions + $tplInstance->setRawTemplateExtension($configInstance->readConfig('raw_template_extension')); + $tplInstance->setCodeTemplateExtension($configInstance->readConfig('menu_template_extension')); + + // Absolute output path for compiled templates + $tplInstance->setCompileOutputPath($configInstance->readConfig('base_path') . $configInstance->readConfig('compile_output_path')); + + // Return the prepared instance + return $tplInstance; + } +} + +// [EOF] +?> -- 2.30.2