Ejemplo n.º 1
0
 /**
  * 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);
     }
 }
Ejemplo n.º 3
0
/**
 * 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);
}
Ejemplo n.º 4
0
 public function editTheme($id)
 {
     return View::make('slate::admin.themes-modal', ['theme' => Theme::find($id)]);
 }
Ejemplo n.º 5
0
 /**
  * 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);
 }
Ejemplo n.º 6
0
 /**
  * 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);
 }
Ejemplo n.º 7
0
/**
 * 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';
}