public function before() { // set default route URL::route('frontend'); Text::language('nl'); Text::instance('nl')->load($this->request->controller())->group($this->request->controller())->substitutes('module'); }
/** * add modules and requets from settings * @param type $data */ public function handle_menu_after_form($data) { $text = Text::instance(); $modules = array(); foreach ($this->_settings->get('modules') as $module) { $modules[$module] = $text->get($module . ':module.name'); } $requests = array(); foreach ($this->_settings->get('requests') as $request) { $requests[$request] = $text->get('option.request.' . $request); } $data->form->modules($modules); $data->form->requests($requests); }
/** * update */ public function action_update() { // get model $model = ORM::factory($this->_settings->get('model'))->filter('website_id', $this->_website)->find(); // create form $form = Form::factory($this->_settings->get('form')); // add request to form $form->request($this->request); // add text to form $form->text(Text::instance()); // add model to form $form->model($model); // add urls $form->urls(array('submit' => URL::to($this->request->controller() . '@update'), 'back' => URL::to($this->request->controller()))); // do the action if ($this->update($model, $form)) { //redirect $this->redirect_done('updated'); } }
/** * add or remove roles from user */ public function action_roles() { $id = $this->param('id'); $user = ORM::factory($this->_settings->get('model'), $id); $acl = Acl::instance(); $form = Form::factory('Roles'); $form->urls(array('submit' => URL::to($this->request->controller() . '@roles:' . $id, array('query' => 'after=roles')), 'submit_back' => URL::to($this->request->controller() . '@roles:' . $id), 'back' => URL::to($this->request->controller()))); // get roles $roles = $acl->roles(); sort($roles); $options = array(); $text = Text::instance(); foreach ($roles as $role) { $parts = explode('_', $role); if ($parts[0] === 'manager') { $label = $text->get('option.roles.manager') . ' ' . $parts[1]; } else { $label = $text->get('option.roles.' . $role); } $options[$role] = $label; } // set all the available roles $form->roles($options); // set roles in form $form->value('roles', $user->roles); if ($form->valid()) { // filter out illegal attempts to upgrade roles $roles = array_intersect($form->value('roles'), $acl->roles()); // set & save roles $user->roles = $roles; $user->save(); $this->redirect_done('updated'); } // create viewer $viewer = Viewer::factory('Form', $form)->text(Text::instance()); // create view $view = View::factory($this->_settings->get('view.update'), array('viewer' => $viewer)); // response $this->response->body($view->render()); }
/** * init */ public function init() { // raise event Event::raise($this, Event::BEFORE_INIT); // get website and feed it the current uri so we can figure out the ->id() $website = Website::instance()->uri(Request::initial()->uri()); // set controller vars $this->_website = $website->id(); $this->_directory = Request::current()->directory(); $this->_controller = Request::current()->controller(); $this->_action = Request::current()->action(); $this->_language = isset(Identity::instance()->user) ? Identity::instance()->user->language : 'nl'; // manually set website in Website // this will be used by alias Website::instance()->id($this->_website); // set state session // get state instance for this website / controller State::session(Session::instance('database')); $this->_state = State::instance($this->_website . '.' . $this->_controller); // set route in URL helper URL::route('backend'); // Let Filereader cache results Reader::cache(Cache::instance('reader_backend'), 'backend'); // set default language Text::language($this->_language); // get that language's text instance and configure it Text::instance($this->_language)->load(array_keys(Settings::factory('modules')->as_array()))->group($this->_controller)->substitutes('module'); // set URL presets $base = URL::base(); URL::set('base', $base); URL::set('library', $base . 'library/'); URL::set('vendor', $base . 'vendor/'); URL::set('files', $base . 'files/'); // set website in view View::set_global('_website', $this->_website); // set language in view View::set_global('_language', $this->_language); }
/** * update items * * @param int $id * @param array $addit_values * @param array $form_data * @return boolean */ protected function update($model, $form) { if (!Acl::instance()->allowed($this->_controller, 'update', $model->owner_id, $model->website_id)) { throw HTTP_Exception::factory(403, 'Update not allowed on :controller :id', array(':controller' => $this->_controller, ':id' => $model->id)); } if (isset($model->updatable) && $model->updatable == 0) { throw HTTP_Exception::factory(403, 'Update not allowed on :controller :id', array(':controller' => $this->_controller, ':id' => $model->id)); } //populate fields from db $form->values($model->as_map()); // call hook Event::raise($this, Event::BEFORE_UPDATE_FORM_PARSE, array('model' => $model, 'form' => $form)); // check if valid if ($form->valid()) { Event::raise($this, Event::BEFORE_UPDATE_VALUES, array('model' => $model, 'form' => $form)); // set values $model->values($form->values()); // set editor id $model->editor_id = Identity::instance()->id; // call hook Event::raise($this, Event::BEFORE_UPDATE, array('model' => $model, 'form' => $form)); //save $model->save(); // call hook Event::raise($this, Event::AFTER_UPDATE, array('model' => $model, 'form' => $form)); // done return TRUE; } else { // set message if form was submitted (there's an error) if ($form->submitted() === TRUE) { $this->error_message('invalid'); } // create viewer $viewer = Viewer::factory('Form', $form)->text(Text::instance()); // create view $view = View::factory($this->_settings->get('view.update'), array('viewer' => $viewer)); // raise event Event::raise($this, Event::BEFORE_UPDATE_RENDER, array('model' => $model, 'form' => $form, 'viewer' => $viewer, 'view' => $view)); // response $this->response->body($view->render()); // not done return FALSE; } }
/** * Helper function for Views * Create an instance with the default language and call get */ function text($path, $substitutes = array(), $ucFirst = true) { return Text::instance()->get($path, $substitutes, $ucFirst); }
/** * Popup launched from wysiwyg to embed an image * @return void */ public function action_embed() { $id = $this->request->param('id', 0); $sizes = $this->_settings->get('sizes_embed'); if ($id > 0) { // get size from qs $size = $this->param('param1'); } else { // get first size $size = $sizes[0]; } // create form $form = Form::factory($this->_settings->get('form_embed')); // set urls $form->urls(array('submit' => URL::to($this->request->controller() . '@embed:' . $id, array('query' => 'after=embed')), 'submit_back' => URL::to($this->request->controller() . '@embed:' . $id, array('query' => 'after=close')), 'back' => URL::to($this->request->controller() . '@close'))); // set vars in from $form->controller($this->request->controller()); $form->sizes($sizes); // populate form $form->value('id', $id); $form->value('size', $size); // proces form if ($form->valid()) { $data = $form->values(); // get the image model $model = ORM::factory($this->_settings->get('model'), $data['id']); // get actual base url for the current website $base_url = Website::instance()->base_url($this->_website, Kohana::$base_url) . $this->_settings->get('url_images'); // get the source $data['src'] = $model->src($data['size'], $base_url); // check if it can be enlarged $data['enlarge'] = $model->size($this->_settings->get('size_enlarge')) === FALSE ? '0' : '1'; // get callback $callback = $this->request->param('callback', ''); // render close dialog $view = View::factory($this->_settings->get('view.close'), array('data' => $data, 'callback' => $callback)); $this->response->body($view->render()); } else { // create view $viewer = Viewer::factory('Form', $form)->text(Text::instance()); $view = View::factory($this->_settings->get('view.update'), array('viewer' => $viewer)); $this->response->body($view->render()); } }
/** * redirect to list * * @param string $messageId * @param array $params */ protected function redirect_done($messageId = FALSE, $params = array()) { // leave a message if ($messageId) { $message = array('status' => 'success', 'message' => Text::instance()->get('message.' . $messageId)); Session::instance('database')->set('message', $message); } // default controller if (!isset($params['website'])) { $params['website'] = $this->_website; } // default controller if (!isset($params['controller'])) { $params['controller'] = $this->_controller; } // default action if (!isset($params['action'])) { $params['action'] = 'index'; } // redirect $this->redirect(URL::to($params)); }
/** * do login * * @param string $username * @param string $password */ public function action_login() { // create text $text = Text::instance(); // create form $form = Form::factory('Login'); $form->urls(array('submit' => URL::to('Auth@login'))); // check form $authenticated = false; $message = false; if ($form->valid()) { // get the values $values = $form->values(); // create identity $identity = Identity::instance(); // check if these are valid credentials $authenticated = $identity->authenticate($values['username'], $values['password']); // add error if not authenticated if ($authenticated) { // check if user is blocked if ($identity->user && $identity->user->status == Model_User::STATUS_ACTIVE) { } else { $identity->destroy(); $authenticated = false; $message = $text->get('error.blocked'); } } else { $message = $text->get('error.credentials'); } } if ($authenticated) { // if ok, set flash message and redirect to default page // set message $message = array('status' => 'success', 'message' => $text->get('message.success')); Session::instance('database')->set('message', $message); //redirect $url = URL::to('Default@redirect_website'); $this->redirect($url); } else { // else show form $body = View::factory('login', array('viewer' => Viewer::factory('Form', $form)->text(Text::instance()), 'message' => $message, 'text' => $text))->render(); $this->response->body($body); } }
<?php /** * @package CleverStyle CMS * @subpackage System module * @category modules * @author Nazar Mokrynskyi <*****@*****.**> * @copyright Copyright (c) 2011-2014, Nazar Mokrynskyi * @license MIT License, see license.txt */ namespace cs; $Cache = Cache::instance(); $Config = Config::instance(); $L = Language::instance(); $Text = Text::instance(); $Permission = Permission::instance(); $a = Index::instance(); if (isset($_POST['mode'])) { switch ($_POST['mode']) { case 'add': case 'edit': $block_new =& $_POST['block']; if ($_POST['mode'] == 'add') { $block = ['position' => 'floating', 'type' => xap($block_new['type']), 'index' => substr(TIME, 3)]; } else { $block =& $Config->components['blocks'][$block_new['id']]; } $block['title'] = $Text->set($Config->module('System')->db('texts'), 'System/Config/blocks/title', $block['index'], $block_new['title']); $block['active'] = $block_new['active']; $block['template'] = $block_new['template'];
/** * create files in db */ protected function store($form, $hash) { // get files in the temp/hash dir $files = FS::files($this->_settings->get('path_temp') . $hash . DIRECTORY_SEPARATOR); // set the files in the form $form->files($files); Event::raise($this, Event::BEFORE_STORE_FORM_PARSE, array('form' => $form)); if ($form->valid()) { // get the hash of the temp dir from qs $hash = $this->request->param('id'); // get the form values $values = $form->values(); // loop through temp files for ($i = 0; $i < count($files); $i++) { // createmodel $model = ORM::factory($this->_settings->get('model')); // set group if one is active if ($group = $this->_state->get('group', FALSE)) { $model->group_id = $group; } // undouble filename $file = FS::name_unique($files[$i], $this->_settings->get('path_files')); // store it FS::move($this->_settings->get('path_temp') . $hash . DIRECTORY_SEPARATOR . $files[$i], $this->_settings->get('path_files') . $file); // permissions FS::permissions($this->_settings->get('path_files') . $file, 0744); // set item properties $model->created = date('y-m-d H:i:s', time()); $model->owner_id = Identity::instance()->id; $model->editor_id = Identity::instance()->id; $model->website_id = $this->_website; // set file $model->file = $file; // set additional info (mostly title) foreach ($values as $key => $value) { if (is_array($value) && isset($value[$i])) { $model->{$key} = $value[$i]; } } // call hook Event::raise($this, Event::BEFORE_STORE, array('model' => $model, 'form' => $form)); //save $model->save(); // call hook Event::raise($this, Event::AFTER_STORE, array('model' => $model, 'form' => $form)); } // return true return TRUE; } else { // create viewer $viewer = Viewer::factory('Form', $form)->text(Text::instance()); // render form $view = View::factory($this->_settings->get('view.create'), array('viewer' => $viewer)); // event Event::raise($this, Event::BEFORE_STORE_RENDER, array('model' => NULL, 'form' => $form, 'viewer' => $viewer, 'view' => $view)); // render $this->response->body($view->render()); // return false return FALSE; } }
/** * Get possible filters * @return type */ public function filter_settings() { $settings = array('filters' => array()); $text = Text::instance(); $filters = array(); foreach ($this->_settings['filter'] as $field => $setting) { $filter = array('value' => $field, 'label' => $text->get('label.' . $field), 'type' => $setting['type'], 'operators' => array(), 'options' => array()); foreach ($setting['operators'] as $operator) { $filter['operators'][$operator] = array('value' => $operator, 'label' => $text->get('option.operator.' . $operator)); } if ($setting['type'] === 'option') { foreach ($setting['options'] as $option) { $filter['options'][$option] = array('value' => $option, 'label' => $text->get('option.' . $field . '.' . $option)); } } if ($setting['type'] === 'relation') { $model = ORM::factory($setting['model']); $options = $model->find_all()->as_array(); foreach ($options as $option) { $filter['options'][$option->id] = array('value' => $option->id, 'label' => $option->{$setting['field']}); } } $filters[$field] = $filter; } return $filters; }