/** * ouput เป็น HTML. * * @param string|null $template HTML Template ถ้าไม่กำหนด (null) จะใช้ index.html * @return string */ public function renderHTML($template = null) { // เนื้อหา parent::setContents(array('/{LOGIN}/' => method_exists('Index\\Login\\Controller', 'init') ? \Index\Login\Controller::init(Login::isMember()) : '', '/{WIDGET_([A-Z]+)(([_\\s]+)([^}]+))?}/e' => '\\Gcms\\View::getWidgets(array(1=>"$1",3=>"$3",4=>"$4"))', '/{BREADCRUMBS}/' => implode('', $this->breadcrumbs), '/{FONTSIZE}/' => '<a class="font_size small" title="{LNG_change font small}">A<sup>-</sup></a><a class="font_size normal" title="{LNG_change font normal}">A</a><a class="font_size large" title="{LNG_change font large}">A<sup>+</sup></a>', '/{VERSION}/' => self::$cfg->version, '/{ELAPSED}/' => round(microtime(true) - REQUEST_TIME, 4), '/{QURIES}/' => \Kotchasan\Database\Driver::queryCount())); return parent::renderHTML($template); }
/** * GLoader * * @param Request $request */ public function index(Request $request) { // ตรวจสอบ Referer if ($request->initSession() && $request->isReferer()) { // ตัวแปรป้องกันการเรียกหน้าเพจโดยตรง define('MAIN_INIT', __FILE__); // ตรวจสอบการ login Login::create(); // กำหนด skin ให้กับ template Template::init(self::$cfg->skin); // counter และ useronline \Index\Counter\Model::init(); // View Gcms::$view = new \Index\Loader\View(); // โมดูลที่ติดตั้ง $dir = ROOT_PATH . 'modules/'; // โหลดโมดูลทั้งหมด foreach (\Index\Module\Model::getInstalledModule() as $owner) { if (is_file($dir . $owner . '/controllers/init.php')) { include $dir . $owner . '/controllers/init.php'; $class = ucfirst($owner) . '\\Init\\Controller'; if (method_exists($class, 'init')) { createClass($class)->init(); } } } // โหลด Init ของ Widgets $dir = ROOT_PATH . 'Widgets/'; $f = @opendir($dir); if ($f) { while (false !== ($text = readdir($f))) { if ($text != "." && $text != "..") { if (is_dir($dir . $text)) { if (is_file($dir . $text . '/Controllers/Init.php')) { include $dir . $text . '/Controllers/Init.php'; $class = 'Widgets\\' . ucfirst($text) . '\\Controllers\\Init'; if (method_exists($class, 'init')) { createClass($class)->init(); } } } } } closedir($f); } // หน้า home มาจากเมนูรายการแรก $home = Gcms::$menu->homeMenu(); if ($home) { $home->canonical = WEB_URL . 'index.php'; // breadcrumb หน้า home Gcms::$view->addBreadcrumb($home->canonical, $home->menu_text, $home->menu_tooltip, 'icon-home'); } // ตรวจสอบโมดูลที่เรียก $posts = $request->getParsedBody(); $modules = \Index\Module\Controller::get($posts); if (!empty($modules)) { // โหลดโมดูลที่เรียก $page = createClass($modules->className)->{$modules->method}($request->withQueryParams($posts), $modules->module); } if (empty($page)) { // ไม่พบหน้าที่เรียก (index) $page = createClass('Index\\PageNotFound\\Controller')->init($request, 'index'); } // output เป็น HTML $ret = array('db_elapsed' => round(microtime(true) - REQUEST_TIME, 4), 'db_quries' => \Kotchasan\Database\Driver::queryCount()); foreach ($page as $key => $value) { $ret[$key] = $value; } if (empty($ret['menu'])) { $ret['menu'] = $ret['module']; } $ret['detail'] = Gcms::$view->renderHTML($page->detail); echo json_encode($ret); } }