parse(); $this->response()->headers()->setContentType('text/css'); $this->render(['text' => ob_get_clean()]); } final public function genTableData() { Toolbox\DbTools::generateSchemaFiles(); $this->toIndex('Database schema files updated'); } public function createFiles() { if ($this->request()->isPost()) { Rails::resetConfig('development'); $base_name = trim($this->params()->file_name); if ($base_name) { if ($this->params()->type['controller']) $this->createControllerFile($base_name); if ($this->params()->type['model']) $this->createModelFile($base_name); if ($this->params()->type['helper']) $this->createHelperFile($base_name); } Rails::application()->setPanelConfig(); } } public function showRoutes() { $router = Rails::application()->dispatcher()->router(); $this->routes = [ ['root', null, '/', $router->rootRoute()->to()], ['rails_panel', null, '/' . $router->panelRoute()->url(), ''], ]; foreach ($router->routes() as $route) { if ($route instanceof Route\HiddenRoute) { continue; } $this->routes[] = [ $route->alias(), strtoupper(implode(', ', $route->via())), '/' . $route->url(), $route->to() ]; } } public function compileAssets() { $this->error = ''; if ($this->request()->isPost()) { Rails::resetConfig('production'); try { if ($this->params()->all) { Rails::assets()->compileAll(); } elseif ($this->params()->file) { $file = $this->params()->file; Rails::assets()->compileFile($file); } } catch (Rails\Assets\Parser\Javascript\ClosureApi\Exception\ErrorsOnCodeException $e) { Rails::log()->error( sprintf( "[%s] Asset compilation error for file %s\n%s", date('Y-m-d H:i:s'), $file_path . '.' . $ext, $e->getMessage() ) ); $message = sprintf("ClosureAPI reported an error - JS file was saved to %s for verfications, error was logged.
%s
", Rails\Assets\Parser\Javascript\ClosureApi\ClosureApi::errorFile(), $e->getMessage()); $this->error = $message; } catch (\Exception $e) { /** * If another error occurs, it won't be properly shown because of production config. */ Rails::resetConfig('development'); throw $e; } Rails::resetConfig('development'); Rails::application()->setPanelConfig(); } } final protected function toIndex($notice) { $url = '/' . Rails::application()->config()->rails_panel_path; parent::redirectTo(array($url, 'notice' => $notice)); } public function redirectTo($redirect_params, array $params = array()) { $redirect_params[0] = '/' . Rails::application()->config()->rails_panel_path . '/' . $redirect_params[0]; parent::redirectTo($redirect_params, $params); } private function createControllerFile($name, $options = []) { Toolbox\FileGenerators\ControllerGenerator::generate($name, $options); } private function createModelFile($name, $options = []) { Toolbox\FileGenerators\ModelGenerator::generate($name, $options); } private function createHelperFile($base_name) { $name = $base_name . '_helper.php'; $path = Rails::config()->paths->helpers; if (is_file($path . '/' . $name)) return; $class_name = Rails::services()->get('inflector')->camelize($base_name) . 'Helper'; $contents = "