/** * Attach theme paths to a local Url. The Url must be a resource located on the asset path * of the current theme or it's parents. * * @param string $url * @return string */ public function url($url) { // return external URLs unmodified if (preg_match('/^((http(s?):)?\\/\\/)/i', $url)) { return $url; } // Is it on AWS? Dont lookup parent themes... if (preg_match('/^((http(s?):)?\\/\\/)/i', $this->assetPath)) { return $this->assetPath . '/' . ltrim($url, '/'); } // Lookup asset in current's theme asset path $fullUrl = (empty($this->assetPath) ? '' : '/') . $this->assetPath . '/' . ltrim($url, '/'); if (file_exists($fullPath = public_path($fullUrl))) { return $fullUrl; } // If not found then lookup in parent's theme asset path if ($this->getParent()) { return $this->getParent()->url($url); } // Asset not found at all. Error handling $action = \Config::get('themes.asset_not_found', 'LOG_ERROR'); if ($action == 'THROW_EXCEPTION') { throw new themeException("Asset not found [{$url}]"); } elseif ($action == 'LOG_ERROR') { \Log::warning("Asset not found [{$url}] in Theme [" . \Theme::get() . "]"); } elseif ($action === 'ASSUME_EXISTS') { $assetPath = \Theme::find(\Theme::get())->assetPath; return (empty($assetPath) ? '' : '/') . $assetPath . '/' . ltrim($url, '/'); } }
public function postThemes() { if (!Input::has('id')) { return Redirect::route('setting.themes.form')->with('error', 'Required parameter(s) missing.'); } try { $input = Input::all(); $setting = Theme::find($input['id']); $setting->fill($input); $this->flash($setting->save()); return Redirect::route('setting.themes.form'); } catch (Illuminate\Database\Eloquent\ModelNotFoundException $e) { App::abort(404); } }
/** * Get the information whether the current section is backend, admin or public * @return array */ function current_section() { if (Schema::hasTable('themes') && Theme::all()->count() == 0) { // If for some reason, there are no themes in theme table, seed with the default data Artisan::call('db:seed', array('ThemesTableSeeder')); } if (Request::is('backend*') || Request::is('login/backend*')) { $link_type = 'backend'; $link = 'backend/'; $theme = Schema::hasTable('themes') ? Theme::find(Setting::value('backend_theme', 1))->directory : 'default'; $layout = "backend.{$theme}._layouts._layout"; } elseif (Request::is('admin*') || Request::is('login/admin*')) { $link_type = 'admin'; $link = 'admin/'; $theme = Schema::hasTable('themes') ? Theme::find(Setting::value('admin_theme', 1))->directory : 'default'; $layout = "admin.{$theme}._layouts._layout"; } else { $link_type = 'public'; $link = ''; $theme = Schema::hasTable('themes') ? Theme::find(Setting::value('public_theme', 1))->directory : 'default'; $layout = "public.{$theme}._layouts._layout"; } return array($link_type, $link, $layout, $theme); }
public function editTheme($id) { return View::make('slate::admin.themes-modal', ['theme' => Theme::find($id)]); }
/** * Show the form for editing the specified theme. * * @param int $id * @return Response */ public function edit($id) { $data['theme'] = Theme::find($id); $data['category'] = Category::getAll(); $data['powerful'] = Powerful::getAll(); $data['theme_images'] = Theme::find($id)->themeImage; $data['theme_logs'] = Theme::find($id)->themeLog; return View::make('themes.edit', $data); }
/** * post All Option in base * * @return Response */ public function postOption() { //Making adaptive rules for site_name $site_name_rules = array(); $site_name_locales = array(); foreach (Input::all() as $k => $v) { if (strpos($k, 'site_name_') !== false) { $site_name_rules[$k] = Config::get('validator.admin.option_site_name'); $site_name_locales[] = mb_substr($k, strlen('site_name_'), strlen($k) - strpos($k, 'site_name_')); } } //Making adaptive rules for social_title $social_title_rules = array(); $social_title_locales = array(); foreach (Input::all() as $k => $v) { if (strpos($k, 'social_title_') !== false) { $social_title_rules[$k] = Config::get('validator.admin.option_social_title'); $social_title_locales[] = mb_substr($k, strlen('social_title_'), strlen($k) - strpos($k, 'social_title_')); } } //Making adaptive rules for social_description $social_description_rules = array(); $social_description_locales = array(); foreach (Input::all() as $k => $v) { if (strpos($k, 'social_description_') !== false) { $social_description_rules[$k] = Config::get('validator.admin.option_social_description'); $social_description_locales[] = mb_substr($k, strlen('social_description_'), strlen($k) - strpos($k, 'social_description_')); } } $rules = array_merge($site_name_rules, $social_title_locales, $social_description_locales, Config::get('validator.admin.option')); // Validate the inputs $validator = Validator::make(Input::all(), $rules); // Check if the form validates with success if ($validator->passes()) { //Themes $activeThemePublic = Theme::where('type', 'public')->where('active', 1)->first(); $activeThemeAdmin = Theme::where('type', 'admin')->where('active', 1)->first(); //Change or not? if ($activeThemePublic->id != Input::get('theme_public')) { $activeThemePublic->active = false; $activeThemePublic->save(); $newThemePublic = Theme::find(Input::get('theme_public')); $newThemePublic->active = true; $newThemePublic->save(); } if ($activeThemeAdmin->id != Input::get('theme_admin')) { $activeThemeAdmin->active = false; $activeThemeAdmin->save(); $newThemeAdmin = Theme::find(Input::get('theme_public')); $newThemeAdmin->active = true; $newThemeAdmin->save(); } //Delete Cache Cache::forget('DB_ThemeByType'); //Options $options = Option::all(); foreach ($options as $option) { if ($option->key == "site_url") { $option->value = Input::get('site_url'); } if ($option->key == "cover_path") { $option->value = Input::get('cover_path'); } if ($option->key == "admin_email") { $option->value = Input::get('admin_email'); } if ($option->key == "analytics") { $option->value = Input::get('analytics'); } if ($option->key == "i18n_site_name") { //Update translations foreach ($site_name_locales as $locale) { if (!I18n::find($option->value)->updateText($locale, Input::get('site_name_' . $locale))) { return Redirect::to('admin/option')->with('error', Lang::get('admin.option_site_name_update_error')); } } } if ($option->key == "i18n_social_title") { //Update translations foreach ($social_title_locales as $locale) { if (!I18n::find($option->value)->updateText($locale, Input::get('social_title_' . $locale))) { return Redirect::to('admin/option')->with('error', Lang::get('admin.option_social_title_update_error')); } } } if ($option->key == "i18n_social_description") { //Update translations foreach ($social_description_locales as $locale) { if (!I18n::find($option->value)->updateText($locale, Input::get('social_description_' . $locale))) { return Redirect::to('admin/option')->with('error', Lang::get('admin.option_social_description_update_error')); } } } $option->save(); } // Clear cache Cache::forget('options'); //track user parent::track('update', 'Option', null); return Redirect::to('admin/option')->with('success', Lang::get('admin.option_success')); } // Show the page return Redirect::to('/admin/option')->withInput()->withErrors($validator); }
/** * Get the current theme * @param string $target * @return string */ function current_theme($target = 'public') { return Schema::hasTable('themes') ? Theme::find(Setting::value("{$target}_theme", 1))->directory : 'default'; }