public function render() { // Create the path titles with urls $parents = explode('/', $this->page->slug); $current = current(array_reverse($parents)); debug("Current" . $current); $urls = []; foreach ($parents as $slug) { if ($slug == $current) { break; } $parentp = R::findOne('page', 'slug = :slug', ['slug' => $slug]); $title = $parentp->title; $title = current(explode(' | ', $title)); foreach (self::$remove as $string) { $title = str_replace($string, '', $title); } $exploded = explode(' | ', $title); foreach ($exploded as $rem) { self::$remove[] = $rem; } $title = str_replace('|', '', $title); $title = trim($title); $u = ['label' => $title, 'href' => $parentp->slug]; $urls[] = $u; } $title = $this->page->title; $title = current(explode(' | ', $title)); foreach (self::$remove as $string) { $title = str_replace($string, '', $title); } // $title = trim(str_replace('|', '', $title)); $urls[] = ['label' => $title, 'href' => $this->page->slug]; return Theme_Loader::get_instance()->render_file('modules/breadcrumb/breadcrumb.twig', ['urls' => $urls]); }
public function create($filename, \App_Config_Ini $config, $template, $mtime) { //Add the meta config to this config $meta_config = $this->get_meta_config(); //First load the page that matches the slug $existing = current(R::findOrDispense('page', 'slug = :slug', ['slug' => $config->page->slug])); if ($existing->getID() && $existing->gen_filename != $filename) { throw new Exception("A page already exists inside the database with the same slug but built with the onscreen page creator"); return false; } $page = current(R::findOrDispense('page', 'gen_filename = :file', ['file' => $filename])); /* @var $page \RedBeanPHP\OODBBean */ /** * Creates the page database object */ if (!$page->getID()) { // The Page does not exist $page->gen_filename = $filename; $page->title = $config->page->title; $page->description = $config->page->description; } else { $old_slug = $page->slug; $meta = new Meta_Generator($meta_config); $page->title = !empty($config->page->title) ? $config->page->title : $meta->get_title($page->slug); $page->description = !empty($config->page->description) ? $config->page->description : $meta->get_description($page->slug); } $page->slug = $config->page->slug; $page->layout = $this->theme->load_layout($config->page->layout ? $config->page->layout : 'layouts.default.twig', $this->theme->theme)->file; /* * Create the template file in the theme */ $page->template = $this->theme->generate_template($filename, $template, $mtime); R::store($page); // Create a route for this page for loading $r_func = function ($slug) use($page) { //Load the front end instance loader $theme = Theme_Loader::get_instance(); $theme->set_theme(THEME); G2_User::init(); if (G()->logged_in()) { $theme->logged_in(); } $_SESSION['theme'] = $theme; //Render the theme if ($theme->page_exists($page->slug)) { $theme->render($page->slug); } }; $route = new Router(); if (isset($old_slug)) { $route->delete_route($old_slug); } $route->create_route($page->slug, $r_func); }
public function crud($args) { $posttype = array_shift($args); $id = array_shift($args); $post = current(R::findOrDispense('post', 'id = :id', ['id' => $id])); $model = $this->loadModel('post_model'); if ($model->crud($posttype, $post)) { Theme_Loader::get_instance()->get_cache_object()->clean('all'); $this->redirect(PACKAGE_URL . "posts/view/{$posttype}"); } }
public function render() { $c = HtmlPageCrawler::create($this->html); $this->process_html(); $c = HtmlPageCrawler::create($this->html); $table = $c->filter('attribute[key="post-type"]')->text(); $look_dir = 'modules/posts/'; $template_name = $table . '-page.twig'; if (Theme_Loader::get_instance()->getTwigLoader()->exists($look_dir . $template_name)) { $template = $look_dir . $template_name; } else { $template = $look_dir . 'post-page.twig'; } return Theme_Loader::get_instance()->render_file($template, ['posts' => $this->posts]); }
public function _404() { //Load the front end instance loader $theme = Theme_Loader::get_instance(); $theme->set_theme(THEME); G2_User::init(); if (G()->logged_in()) { $theme->logged_in(); } $_SESSION['theme'] = $theme; if ($theme->page_exists('404')) { http_response_code(404); $theme->render('404'); } else { parent::_404(); } }
function addAdminHtml() { return Theme_Loader::get_instance()->render_file('modules/navigation/admin.twig', ['navitems' => $this->nav_items]); }