public function editor() { if (isset($_GET['theme']) && !empty($_GET['theme'])) { $themename = trim($_GET['theme']); if (!is_dir(_ROOT . "themes/{$themename}")) { $msg = error("Theme yang Anda maksud tidak ditemukan"); set_msg($msg); redirect('cpanel/theme'); exit; } $themepath = _ROOT . "themes/{$themename}/"; $dir = path_list_r($themepath); $filetree = tree_files($dir); $mode = 'html'; $content = 'layout.html'; if (isset($_GET['file']) && !empty($_GET['file'])) { $filename = trim($_GET['file']); if ($filename != 'layout.html') { list($folder, $file) = explode(':', $filename); } else { $file = $filename; } $extension = strtolower(end(explode('.', $file))); switch ($extension) { case 'js': $mode = 'javascript'; break; case 'css': $mode = 'css'; break; case 'html': $mode = 'html'; break; default: $mode = 'html'; break; } $content = str_replace(':', '/', $filename); } else { $filename = 'layout.html'; } $filecontent = file_read($themepath . $content); $filecontent = htmlentities($filecontent); $data['current_file'] = $filename; $data['file'] = $filetree; $data['mode'] = $mode; $data['content'] = $filecontent; $data['current_theme'] = $themename; $data['page'] = "layout_theme_editor"; $data['module'] = "cpanel"; $data['title'] = "Theme editor"; $this->load->view($this->layout, $data); } }
function tree_files($arr, $deep = 1) { $current_theme = $_GET['theme']; $theme_path = _ROOT . "themes/{$current_theme}/"; if ($arr) { $ulid = $deep == 1 ? ' id="tree" class="filetree"' : ''; $html = "<ul{$ulid}>\n"; foreach ((array) $arr as $r) { if ($r['is_folder']) { $cls = 'folder'; $name = $r['name']; $close = ' class="closed"'; } else { $close = ''; $paths = str_replace($theme_path, "", $r['path']); $paths = ltrim($paths, "\\/"); $o = str_replace("\\", ":", $paths); $cls = 'file'; $name = "<a href=\"" . site_url('cpanel/theme/editor?theme=' . $current_theme) . "&file=" . urlencode($o) . "\">{$r['name']}</a>"; } $html .= "<li" . $close . ">"; $html .= "<span class=\"{$cls}\">{$name}</span>"; $html .= tree_files($r['child'], $deep + 1); $html .= "</li>"; } $html .= "</ul>\n"; return $html; } }