From 8b658b497afa98ea95196948532e6281872e04de Mon Sep 17 00:00:00 2001 From: Deon George Date: Mon, 9 May 2011 17:40:50 +1000 Subject: [PATCH] Merge from lnApp --- application/bootstrap.php | 8 - .../classes/controller/lnapp/login.php | 213 ++++++++++++++++++ .../controller/lnapp/templatedefault.php | 4 +- application/classes/controller/login.php | 136 +---------- application/classes/database/tsm.php | 2 +- application/classes/lnapp/config.php | 39 +--- .../classes/model/auth/userdefault.php | 10 +- application/classes/tsm.php | 2 +- application/config/auth.php | 19 +- application/i18n/.htaccess | 2 + application/media/css/default.css | 5 +- application/media/css/jquery.gritter.css | 92 ++++++++ .../media/img/address-book-new-big.png | Bin 0 -> 3787 bytes application/media/img/address-book-new.png | Bin 0 -> 1305 bytes application/media/img/ajax-progress.gif | Bin 0 -> 7685 bytes application/media/img/bug-big.png | Bin 0 -> 928 bytes application/media/img/dialog-error-big.png | Bin 0 -> 2383 bytes .../media/img/dialog-information-big.png | Bin 0 -> 3165 bytes application/media/img/dialog-password-big.png | Bin 0 -> 2992 bytes application/media/img/dialog-question-big.png | Bin 0 -> 2502 bytes application/media/img/dialog-question.png | Bin 0 -> 1086 bytes application/media/img/dialog-warning-big.png | Bin 0 -> 2844 bytes application/media/img/gritter-close-ie6.gif | Bin 0 -> 718 bytes application/media/img/gritter.png | Bin 0 -> 4880 bytes application/media/img/help-about-big.png | Bin 0 -> 2978 bytes application/media/img/help-about.png | Bin 0 -> 981 bytes application/media/img/help-big.png | Bin 0 -> 1615 bytes application/media/img/help-faq-big.png | Bin 0 -> 2421 bytes application/media/img/help-faq.png | Bin 0 -> 1118 bytes application/media/img/help.png | Bin 0 -> 738 bytes .../media/img/jquery.gritter.close-ie6.gif | Bin 0 -> 718 bytes application/media/img/jquery.gritter.png | Bin 0 -> 4880 bytes application/media/img/request-feature-big.png | Bin 0 -> 1095 bytes application/media/img/smile-big.png | Bin 0 -> 1332 bytes application/media/img/toggle-closed.png | Bin 0 -> 102 bytes application/media/img/toggle-open.png | Bin 0 -> 98 bytes application/media/js/jquery.gritter-1.5.js | 21 ++ .../media/js/jquery.stickyfloat-1.0.js | 48 ++++ application/media/js/themes/default/d.png | Bin 0 -> 7635 bytes .../media/js/themes/default/dot_for_ie.gif | Bin 0 -> 43 bytes application/media/js/themes/default/style.css | 56 +++++ .../media/js/themes/default/throbber.gif | Bin 0 -> 1849 bytes application/messages/.htaccess | 2 + application/views/.htaccess | 2 + application/views/login.php | 4 +- application/views/template.php | 1 + 46 files changed, 466 insertions(+), 200 deletions(-) create mode 100644 application/classes/controller/lnapp/login.php create mode 100644 application/i18n/.htaccess create mode 100644 application/media/css/jquery.gritter.css create mode 100644 application/media/img/address-book-new-big.png create mode 100644 application/media/img/address-book-new.png create mode 100644 application/media/img/ajax-progress.gif create mode 100644 application/media/img/bug-big.png create mode 100644 application/media/img/dialog-error-big.png create mode 100644 application/media/img/dialog-information-big.png create mode 100644 application/media/img/dialog-password-big.png create mode 100644 application/media/img/dialog-question-big.png create mode 100644 application/media/img/dialog-question.png create mode 100644 application/media/img/dialog-warning-big.png create mode 100644 application/media/img/gritter-close-ie6.gif create mode 100755 application/media/img/gritter.png create mode 100644 application/media/img/help-about-big.png create mode 100644 application/media/img/help-about.png create mode 100644 application/media/img/help-big.png create mode 100644 application/media/img/help-faq-big.png create mode 100644 application/media/img/help-faq.png create mode 100644 application/media/img/help.png create mode 100644 application/media/img/jquery.gritter.close-ie6.gif create mode 100644 application/media/img/jquery.gritter.png create mode 100644 application/media/img/request-feature-big.png create mode 100644 application/media/img/smile-big.png create mode 100644 application/media/img/toggle-closed.png create mode 100644 application/media/img/toggle-open.png create mode 100644 application/media/js/jquery.gritter-1.5.js create mode 100644 application/media/js/jquery.stickyfloat-1.0.js create mode 100644 application/media/js/themes/default/d.png create mode 100644 application/media/js/themes/default/dot_for_ie.gif create mode 100644 application/media/js/themes/default/style.css create mode 100644 application/media/js/themes/default/throbber.gif create mode 100644 application/messages/.htaccess create mode 100644 application/views/.htaccess create mode 100644 application/views/template.php diff --git a/application/bootstrap.php b/application/bootstrap.php index c10916f..0f4adad 100644 --- a/application/bootstrap.php +++ b/application/bootstrap.php @@ -36,14 +36,6 @@ ini_set('unserialize_callback_func', 'spl_autoload_call'); //-- Configuration and initialization ----------------------------------------- -/** - * Set Kohana::$environment if a 'KOHANA_ENV' environment variable has been supplied. - */ -if (getenv('KOHANA_ENV') !== FALSE) -{ - Kohana::$environment = getenv('KOHANA_ENV'); -} - /** * Initialize Kohana, setting the default options. * diff --git a/application/classes/controller/lnapp/login.php b/application/classes/controller/lnapp/login.php new file mode 100644 index 0000000..4a82b52 --- /dev/null +++ b/application/classes/controller/lnapp/login.php @@ -0,0 +1,213 @@ +logged_in()!= 0) { + // Redirect to the user account + Request::instance()->redirect('welcome/index'); + } + + // If there is a post and $_POST is not empty + if ($_POST) { + // Store our details in a session key + Session::instance()->set('username',$_POST['username']); + Session::instance()->set('password',$_POST['password']); + + // Instantiate a new user + $user = ORM::factory('account'); + + // Check Auth + $status = $user->login($_POST); + + // If the post data validates using the rules setup in the user model + if ($status) { + // Redirect to the user account + if ($redir = Session::instance()->get('afterlogin')) { + Session::instance()->delete('afterlogin'); + Request::instance()->redirect($redir); + + } else + Request::instance()->redirect('welcome/index'); + + } else { + SystemMessage::add(array( + 'title'=>_('Invalid username or password'), + 'type'=>'error', + 'body'=>_('The username or password was invalid.') + )); + } + } + + Block::add(array( + 'title'=>_('Login to server'), + 'body'=>View::factory('login'), + 'style'=>array('css/login.css'=>'screen'), + )); + + $this->template->control = HTML::anchor($this->request->uri(),'Login',array('id'=>'ajxbody')); + $this->template->content = Block::factory(); + + Script::add(array('type'=>'stdin','data'=>' + $(document).ready(function() { + $("#ajxbody").click(function() {$("#ajBODY").load("'.$this->request->uri().'/"); return false;}); + });' + )); + } + + public function action_register() { + // If user already signed-in + if (Auth::instance()->logged_in()!= 0) { + // Redirect to the user account + Request::instance()->redirect('welcome/index'); + } + + // Instantiate a new user + $account = ORM::factory('account'); + + // If there is a post and $_POST is not empty + if ($_POST) { + // Check Auth + $status = $account->values($_POST)->check(); + + if (! $status) { + foreach ($account->validate()->errors() as $f=>$r) { + // $r[0] has our reason for validation failure + switch ($r[0]) { + // Generic validation reason + default: + SystemMessage::add(array( + 'title'=>_('Validation failed'), + 'type'=>'error', + 'body'=>sprintf(_('The defaults on your submission were not valid for field %s (%s).'),$f,$r[0]) + )); + } + } + } + + $ido = ORM::factory('module') + ->where('name','=','account') + ->find(); + + $account->id = $ido->record_id->next_id($ido->id); + // Save the user details + if ($account->save()) {} + + } + + SystemMessage::add(array( + 'title'=>_('Already have an account?'), + 'type'=>'info', + 'body'=>_('If you already have an account, please login..') + )); + + Block::add(array( + 'title'=>_('Register'), + 'body'=>View::factory('bregister') + ->set('account',$account) + ->set('errors',$account->validate()->errors()), + 'style'=>array('css/bregister.css'=>'screen'), + )); + + $this->template->control = HTML::anchor($this->request->uri(),'Register',array('id'=>'ajxbody')); + $this->template->content = Block::factory(); + $this->template->left = HTML::anchor('login','Login').'...'; + } + + /** + * Enable user password reset + */ + public function action_reset() { + // If user already signed-in + if (Auth::instance()->logged_in()!= 0) { + // Redirect to the user account + Request::instance()->redirect('welcome/index'); + } + + // If the user posted their details to reset their password + if ($_POST) { + // If the email address is correct, create a method token + if (! empty($_POST['email']) AND ($ao=ORM::factory('account',array('email'=>$_POST['email']))) AND $ao->loaded()) { + $mt = ORM::factory('module_method_token'); + + // Find out our password reset method id + // @todo move this to a more generic method, so that it can be called by other methods + $mo = ORM::factory('module',array('name'=>'account')); + $mmo = ORM::factory('module_method',array('name'=>'user_resetpassword','module_id'=>$mo->id)); + + // Check to see if there is already a token, if so, do nothing. + if ($mt->where('account_id','=',$ao->id)->and_where('method_id','=',$mmo->id)->find()) { + if ($mt->date_expire < time()) { + $mt->delete(); + $mt->clear(); + } + } + + if (! $mt->loaded()) { + $mt->account_id = $ao->id; + $mt->method_id = $mmo->id; + $mt->date_expire = time() + 15*3600; + $mt->token = md5(sprintf('%s:%s:%s',$mt->account_id,$mt->method_id,$mt->date_expire)); + $mt->save(); + + // Send our email with the token + $et = EmailTemplate::instance('account_reset_password'); + $et->to = array($mt->account->email=>sprintf('%s %s',$mt->account->first_name,$mt->account->last_name)); + $et->variables = array( + 'SITE'=>URL::base(TRUE,TRUE), + 'SITE_ADMIN'=>Config::sitename(), + 'SITE_NAME'=>Config::sitename(), + 'TOKEN'=>$mt->token, + 'USER_NAME'=>sprintf('%s %s',$mt->account->first_name,$mt->account->last_name), + ); + $et->send(); + } + + // Redirect to our password reset, the Auth will validate the token. + } elseif (! empty($_REQUEST['token'])) { + Request::instance()->redirect(sprintf('user/account/resetpassword?token=%s',$_REQUEST['token'])); + } + + // Show our token screen even if the email was invalid. + if (isset($_POST['email'])) + Block::add(array( + 'title'=>_('Reset your password'), + 'body'=>View::factory('login_reset_sent'), + 'style'=>array('css/login.css'=>'screen'), + )); + else + Request::instance()->redirect('login'); + + } else { + Block::add(array( + 'title'=>_('Reset your password'), + 'body'=>View::factory('login_reset'), + 'style'=>array('css/login.css'=>'screen'), + )); + } + + $this->template->content = Block::factory(); + } + + public function action_noaccess() { + $this->template->content = ' '; + + SystemMessage::add(array( + 'title'=>_('No access to requested resource'), + 'type'=>'error', + 'body'=>_('You do not have access to the requested resource, please contact your administrator.') + )); + } +} +?> diff --git a/application/classes/controller/lnapp/templatedefault.php b/application/classes/controller/lnapp/templatedefault.php index 343804f..22ef6f1 100644 --- a/application/classes/controller/lnapp/templatedefault.php +++ b/application/classes/controller/lnapp/templatedefault.php @@ -61,9 +61,9 @@ abstract class Controller_lnApp_TemplateDefault extends Controller_Template { if (! Kohana::Config('config.method_security')) return FALSE; - return (($this->auth_required !== FALSE && Auth::instance()->logged_in() === FALSE) || + return (($this->auth_required !== FALSE && Auth::instance()->logged_in(NULL,get_class($this).'|'.__METHOD__) === FALSE) || (is_array($this->secure_actions) && array_key_exists($this->request->action,$this->secure_actions) && - Auth::instance()->logged_in($this->secure_actions[$this->request->action]) === FALSE)); + Auth::instance()->logged_in($this->secure_actions[$this->request->action],get_class($this).'|'.__METHOD__) === FALSE)); } /** diff --git a/application/classes/controller/login.php b/application/classes/controller/login.php index bd9288e..59a728d 100644 --- a/application/classes/controller/login.php +++ b/application/classes/controller/login.php @@ -1,138 +1,4 @@ logged_in()!= 0) { - // Redirect to the user account - Request::instance()->redirect('welcome/index'); - } - - // If there is a post and $_POST is not empty - if ($_POST) { - // Store our details in a session key - Session::instance()->set('admin_name',$_POST['admin_name']); - Session::instance()->set('password',$_POST['password']); - - // Instantiate a new user - $user = ORM::factory('account'); - - // Check Auth - $status = $user->login($_POST); - - // If the post data validates using the rules setup in the user model - if ($status) { - // Redirect to the user account - if ($redir = Session::instance()->get('afterlogin')) { - Session::instance()->delete('afterlogin'); - Request::instance()->redirect($redir); - - } else - Request::instance()->redirect('welcome/index'); - - } else { - SystemMessage::add(array( - 'title'=>_('Invalid username or password'), - 'type'=>'error', - 'body'=>_('The username or password was invalid.') - )); - } - } - - Block::add(array( - 'title'=>_('Login to server'), - 'body'=>View::factory('login'), - 'style'=>array('css/login.css'=>'screen'), - )); - - $this->template->control = HTML::anchor($this->request->uri(),'Login',array('id'=>'ajxbody')); - $this->template->content = Block::factory(); - - Script::add(array('type'=>'stdin','data'=>' - $(document).ready(function() { - $("#ajxbody").click(function() {$("#ajBODY").load("'.$this->request->uri().'/"); return false;}); - });' - )); - } - - public function action_register() { - // If user already signed-in - if (Auth::instance()->logged_in()!= 0) { - // Redirect to the user account - Request::instance()->redirect('welcome/index'); - } - - // Instantiate a new user - $account = ORM::factory('account'); - - // If there is a post and $_POST is not empty - if ($_POST) { - // Check Auth - $status = $account->values($_POST)->check(); - - if (! $status) { - foreach ($account->validate()->errors() as $f=>$r) { - // $r[0] has our reason for validation failure - switch ($r[0]) { - // Generic validation reason - default: - SystemMessage::add(array( - 'title'=>_('Validation failed'), - 'type'=>'error', - 'body'=>sprintf(_('The defaults on your submission were not valid for field %s (%s).'),$f,$r[0]) - )); - } - } - } - - $ido = ORM::factory('module') - ->where('name','=','account') - ->find(); - - $account->id = $ido->record_id->next_id($ido->id); - // Save the user details - if ($account->save()) {} - - } - - SystemMessage::add(array( - 'title'=>_('Already have an account?'), - 'type'=>'info', - 'body'=>_('If you already have an account, please login..') - )); - - Block::add(array( - 'title'=>_('Register'), - 'body'=>View::factory('bregister') - ->set('account',$account) - ->set('errors',$account->validate()->errors()), - 'style'=>array('css/bregister.css'=>'screen'), - )); - - $this->template->control = HTML::anchor($this->request->uri(),'Register',array('id'=>'ajxbody')); - $this->template->content = Block::factory(); - $this->template->left = HTML::anchor('login','Login').'...'; - } - - public function action_noaccess() { - $this->template->content = ' '; - - SystemMessage::add(array( - 'title'=>_('No access to requested resource'), - 'type'=>'error', - 'body'=>_('You do not have access to the requested resource, please contact your administrator.') - )); - } -} +class Controller_Login extends Controller_lnApp_Login {} ?> diff --git a/application/classes/database/tsm.php b/application/classes/database/tsm.php index 303015a..717f163 100644 --- a/application/classes/database/tsm.php +++ b/application/classes/database/tsm.php @@ -55,7 +55,7 @@ class Database_TSM extends Database { // Get user login details from user session - these are set by login if (! $username) - $username = Session::instance()->get_once('admin_name'); + $username = Session::instance()->get_once('username'); if (! $password) $password = Session::instance()->get_once('password'); diff --git a/application/classes/lnapp/config.php b/application/classes/lnapp/config.php index d8ce71e..8389266 100644 --- a/application/classes/lnapp/config.php +++ b/application/classes/lnapp/config.php @@ -12,39 +12,6 @@ * @license http://dev.leenooks.net/license.html */ abstract class lnApp_Config extends Kohana { - /** - * Find a list of all database enabled modules - * - * @uses cache - */ - public static function appmodules() { - $cacheable = TRUE; - - if (array_key_exists('cache',Kohana::modules())) { - $cache = Cache::instance(static::cachetype()); - - if ($cacheable AND $cache->get('modules')) - return $cache->get('modules'); - - } else - $cache = ''; - - $modules = array(); - $module_table = 'module'; - - if (class_exists('Model_'.ucfirst($module_table))) { - $mo = ORM::factory($module_table)->where('status','=',1)->find_all()->as_array(); - - foreach ($mo as $o) - $modules[$o->name] = MODPATH.$o->name; - } - - if ($cache) - $cache->set('modules',$modules); - - return $modules; - } - /** * Return our site name */ @@ -90,7 +57,13 @@ abstract class lnApp_Config extends Kohana { return Kohana::config('config.site_name'); } + public static function logo_file() { + // @todo Move the logo filename to a config file + return Kohana::find_file(sprintf('media/%s',Config::siteid()),'img/logo-small','png'); + } + public static function logo() { + // @todo Move the logo filename to a config file $mediapath = Route::get('default/media'); $logo = $mediapath->uri(array('file'=>'img/logo-small.png'),array('alt'=>static::sitename())); diff --git a/application/classes/model/auth/userdefault.php b/application/classes/model/auth/userdefault.php index 723aa74..5759a92 100644 --- a/application/classes/model/auth/userdefault.php +++ b/application/classes/model/auth/userdefault.php @@ -51,13 +51,13 @@ class Model_Auth_UserDefault extends Model_Auth_User { * @return boolean */ public function login(array & $array, $redirect = FALSE) { - $fieldname = 'admin_name'; + $fieldname = 'admin_name'; // @todo This should be defined in a config or database driver file $array = Validate::factory($array) - ->label('admin_name', $this->_labels[$fieldname]) + ->label('username', $this->_labels[$fieldname]) ->label('password', $this->_labels['password']) ->filter(TRUE, 'trim') - ->filter('admin_name','strtoupper') - ->rules('admin_name', $this->_rules[$fieldname]) + ->filter('username','strtoupper') + ->rules('username', $this->_rules[$fieldname]) ->rules('password', $this->_rules['password']); // Get the remember login option @@ -69,7 +69,7 @@ class Model_Auth_UserDefault extends Model_Auth_User { if ($array->check()) { // Attempt to load the user - $this->where($fieldname, '=', $array['admin_name'])->find(); + $this->where($fieldname, '=', $array['username'])->find(); if ($this->loaded() AND Auth::instance()->login($this, $array['password'], $remember)) { diff --git a/application/classes/tsm.php b/application/classes/tsm.php index 217b46b..fe1d2b8 100644 --- a/application/classes/tsm.php +++ b/application/classes/tsm.php @@ -13,7 +13,7 @@ class TSM { public function set($username,$password,Database_TSM_Result $server) { // @todo Consider encrypting this - Session::instance()->set('admin_name',$username); + Session::instance()->set('username',$username); Session::instance()->set('password',$password); Session::instance()->set('SERVER',$server); diff --git a/application/config/auth.php b/application/config/auth.php index 9be58f5..a0561fc 100644 --- a/application/config/auth.php +++ b/application/config/auth.php @@ -12,18 +12,11 @@ */ return array( - - 'driver' => 'ORM', - 'hash_method' => 'sha1', - 'salt_pattern' => '1, 3, 5, 9, 14, 15, 20, 21, 28, 30', - 'lifetime' => 1209600, - 'session_key' => 'admin_name', - 'forced_key' => 'auth_forced', - - // Username/password combinations for the Auth File driver - 'users' => array( - // 'admin' => 'b3154acf3a344170077d11bdb5fff31532f679a1919e716a02', - ), - + 'driver' => 'ORM', + 'hash_method' => 'sha1', + 'salt_pattern' => '1, 3, 5, 9, 14, 15, 20, 21, 28, 30', + 'lifetime' => 1209600, + 'session_key' => 'username', + 'forced_key' => 'auth_forced', ); ?> diff --git a/application/i18n/.htaccess b/application/i18n/.htaccess new file mode 100644 index 0000000..281d5c3 --- /dev/null +++ b/application/i18n/.htaccess @@ -0,0 +1,2 @@ +order allow,deny +deny from all diff --git a/application/media/css/default.css b/application/media/css/default.css index 1592830..1f76b7c 100644 --- a/application/media/css/default.css +++ b/application/media/css/default.css @@ -1,10 +1,13 @@ /* Default Template CSS */ -table.box-full { border: 1px solid #AAAACC; margin-right: auto; width: 100%; } table.box-left { border: 1px solid #AAAACC; margin-right: auto; } table.box-center { border: 1px solid #AAAACC; margin-left: auto; margin-right: auto; } +table.box-full { border: 1px solid #AAAACC; margin-right: auto; width: 100%; } tr.head { font-weight: bold; } td.head { font-weight: bold; } +td.bold { font-weight: bold; } +td.bold-right { font-weight: bold; text-align: right; } +td.right { text-align: right; } tr.odd { background-color: #FCFCFE; } tr.even { background-color: #F6F6F8; } diff --git a/application/media/css/jquery.gritter.css b/application/media/css/jquery.gritter.css new file mode 100644 index 0000000..0d6cba5 --- /dev/null +++ b/application/media/css/jquery.gritter.css @@ -0,0 +1,92 @@ +/* ie6 trash */ +* html #gritter-notice-wrapper { + position:absolute; +} +* html .gritter-top { + margin-bottom:-10px; +} +* html .gritter-item { + padding-bottom:0; +} +* html .gritter-bottom { + margin-bottom:0; +} +* html .gritter-close { + background:url(../img/jquery.gritter-close-ie6.gif); + width:22px; + height:22px; + top:7px; + left:7px; +} + +/* the norm */ +#gritter-notice-wrapper { + position:fixed; + top:20px; + right:20px; + width:301px; + z-index:9999; +} +.gritter-item-wrapper { + position:relative; + margin:0 0 10px 0; +} +.gritter-top { + background:url(../img/jquery.gritter.png) no-repeat left -30px; + height:10px; +} +.hover .gritter-top { + background-position:right -30px; +} +.gritter-bottom { + background:url(../img/jquery.gritter.png) no-repeat left bottom; + height:8px; + margin:0; +} +.hover .gritter-bottom { + background-position: bottom right; +} +.gritter-item { + display:block; + background:url(../img/jquery.gritter.png) no-repeat left -40px; + color:#eee; + padding:2px 11px 8px 11px; + font-size: 11px; + font-family:verdana; +} +.hover .gritter-item { + background-position:right -40px; +} +.gritter-item p { + padding:0; + margin:0; +} +.gritter-close { + position:absolute; + top:5px; + left:3px; + background:url(../img/jquery.gritter.png) no-repeat left top; + cursor:pointer; + width:30px; + height:30px; +} +.gritter-title { + font-size:14px; + font-weight:bold; + padding:0 0 7px 0; + display:block; + text-shadow:1px 1px #000; /* Not supported by IE :( */ +} +.gritter-image { + width:24px; + height:24px; + float:left; +} +.gritter-with-image, +.gritter-without-image { + padding:0 0 0px 0; +} +.gritter-with-image { + width:250px; + float:right; +} diff --git a/application/media/img/address-book-new-big.png b/application/media/img/address-book-new-big.png new file mode 100644 index 0000000000000000000000000000000000000000..aa7c4e016c9a9f73b0de9857e3df5fb576257c73 GIT binary patch literal 3787 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 BGL`@U literal 0 HcmV?d00001 diff --git a/application/media/img/address-book-new.png b/application/media/img/address-book-new.png new file mode 100644 index 0000000000000000000000000000000000000000..e37385cc152e1728bc16c20ed1a8ce242fa30ada GIT binary patch literal 1305 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 TRS@nf!FPIzm+~vs(zpKy%_B!@ literal 0 HcmV?d00001 diff --git a/application/media/img/bug-big.png b/application/media/img/bug-big.png new file mode 100644 index 0000000000000000000000000000000000000000..0758a85529421df9045a6d866f7a2a8b3bab744b GIT binary patch literal 928 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 mYsBkJiAEZ_asKa;d1 zdQ8v#A`CcuEMLC<)3}>aIhvvW{4@ll$ZX9JJx9O$zcwJk7pSzOV0J60*N)DH3ERWh z3-BZQQ7G38K!v6sbo$X*Gcha46MSiFKO|l3fkaek%j}u3A$+eS`F=>P*1|cZ7Luzh zn84TC%7jhe3pqRiR4NTY!o;pvk1f7oX>EjrPE$f1UhCZ8_m^OTo2(KH3Vyp($gz7@I zu~?ysZcre+tfUj7i>^bi`ld}x%ox6~u@B-AjuNJ%Q~b`MQL0oJ2vzL^ z5Q*;-;ZGv`@$@zbJgG0{YkT08161rt`m(?~p(jp^lJ1#+*j9*3cs@O(ju zm0c#V4+nMlzA>Ncpr+#v9KWDJ_*OWQ+KTYa;Fr_{J_(H=$JNy7xCs@RP)ulI%J3;T zVS+L)LvSYb_A)op!Rio-W++wa`~!qmVpU`aLeGWeb%6T%_a+9k0}miDO@r{5d~!4R z5`1DKc*Zrrw{kVa6kaiyD4fK^q|=7rX(JvzPs`l~LFu&g?GTI=U`Db8QKt!*O_yx^ zIa_${R8~90mRvJ2(D%cCA>f<<@0Tbf?}hN+ApF-d6?_#_4-sg5#9*R#ToYryNzvvJ z=RCp7al-hg;4e?? zi}2p@4Vb(dzKtdLdN>eM2m7LGVQ)k&oXKgInCKBqn0>P|F+gAaWclqw41PqoIu|z6L%Iy9B#Kl@OAtF_?(VZXF`VaSd#Ajo04$iSe_`zDHaWc*Zw@R|0hujU-`T zaoPQo1v7_9SOsPX?`cCGVFp{+&q=tc^?K7yoTltHr0yYCfxAqA-ydBEUq;r#7vVLq z=S($&cMVa3^T|pG$kZ&!BfYvusEb@kU98Oh=vw$Urv61Zrhd8_Tuxqu zoyRNS!@x4wcC-wFQk$n{fR-mFw~aX%!U~1wUja9nni+9tW*V3gPiBTHfWj*HSWsi< zU6bUC8*d`GN&r90!K3P6FG9PXR>H0m7h%V-a@dZ*q-{q_VcU^X+~f@ygpM5}BC}=U z3eg7HfSb6OZ(?Qwllk&k4<|UPg?~4;4s0f4e)uj z-PT>mCNdF%7o|NoB|b;(CDFK}jTcJ5O85wYcVI1?j#a?D2SaT9iK4oUmo`CfWhw^W zcr||bn;QJoKFl!_T7!vTob{i5hnwysB`iz}f)>DyX+InsG1&tw%Scj(Kz*e!e*~Hh?#K z)UQx;QBR>3y!w|tuRA&``bKfA8NWB;0t&(AZL zpVxlc26*x&@Tg}{i+{Iq=Nn{#u9CtRcO9D~mePLrpa8zvCm%dx>&)O|Z@;|3=}kQ5 zZ|S)F_~s_&SZx4rkBPP6%lb4=Xc6jJ)RGkrTh}-`%Wq3fP_LzFlm3q2Bu|+UK2zDr z;9p$3Wi1}-1v(x-?jnAkr=@k8iGe503@qkp(FtEz{>RPh%uP^5HgjmwCU1hT9Rt7Y z4}WvSW4tIaAg+Scz>_mEU@uvL`KX0Fq2HjMLp_gLwtUSd2WFzyXoAw-Kt8XgkM4L=f`=DA9oQy&wR-W*iUy4SXu?C2}*1!B}i2u6ZH8-G~pMo0{;Y+1pYdM zC&T!j_tAF5-UfB3a=Wzf^Z|O5Hy|H@LJ6-{fnE3i#vi{fKc0a!0`IT?s?_TATWIJx&QzG literal 0 HcmV?d00001 diff --git a/application/media/img/dialog-question.png b/application/media/img/dialog-question.png new file mode 100644 index 0000000000000000000000000000000000000000..ec0776145dd1f81ce086d6a742b97ff7672253e8 GIT binary patch literal 1086 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 literal 0 HcmV?d00001 diff --git a/application/media/img/gritter.png b/application/media/img/gritter.png new file mode 100755 index 0000000000000000000000000000000000000000..0ca3bc0a0f8068194082db9719d6e20a8645985f GIT binary patch literal 4880 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 Zf3P5-;PGuo@D~?gbJgKWjfL<1{{eTAuA%?{ literal 0 HcmV?d00001 diff --git a/application/media/img/help-about-big.png b/application/media/img/help-about-big.png new file mode 100644 index 0000000000000000000000000000000000000000..45b5d620625fcf15fffa10e5a6b33427886969c3 GIT binary patch literal 2978 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 literal 0 HcmV?d00001 diff --git a/application/media/img/help-about.png b/application/media/img/help-about.png new file mode 100644 index 0000000000000000000000000000000000000000..435ea0eeaae4e0f4fd7f35cec165cf184e96f937 GIT binary patch literal 981 zcmV;`11kK9P)0=OBTd6P1FeF#9cDLHp>8UQ zAn0g8g-ryfUWqVvU!jxYh2m~xf52$R2D_*fS{ca1U9^Fw7Al8kXM22Obio z92raO{h&!XGRBbnqwZgUCp+j5w{$nepFBt;mTZ{pp#QOewN`^|T?fO)a)NG>eFj(ygfAUM_$4X4$J`CyeiZ`O=5>($3%^QIj3? zYexokAlkL7^Q};<{T+qLAU1~^+y#K48PN%r)8CrK*^y#pJ#*Fb%oi^&FwW=JYyqc+ zrB^w6ED}#PL=(@2BP~g+zk>0X(7Fycxcg6VrIf+}4`@qlN6^g`DyI zxA%W!FN(F6=`+&kdn%oH_T8rD#6Bve48`mPlma){h8t`{2jVz-mC_xM zFp>CSl#a5zaF&Hj->f>?wr{Oi>#<-s7KydL5Q((*pp?ch-@=+zwA+kw>Ni^97ZAN0 zHD9A_)~`*C{kYg8Bsw1>Y83hB*NVr zr%mR@_XUi(=J~dEk88R@F(4|?x98Qb1Eu^${K_J3sGDHqMP|=`QnuEcFviw&1=iXf zN9q)#b5pPQOE*8WH-CECuH5>{&ZS=SQ>SEfC*8IWL`0N`IN2P>m(tS(L zm?~s*_PB^RBDFuHhbCns9KZ$Y4;|)6uaryv{DC7}2kHU0x`Av9 zt}ZGdP!%-+v6(C87U_tM28wQ zK~#9!m6mI4Tt^jvzx(p8?W`ZM<2X%>A4%&+OyZ~&;Hs^Ks6b6xf`Wq5{sDyeL4Op1 z_yMSdN7WS61|lJ70il9gMWD1zDhP$Rv~KH~*p1`HapTx=yz$yzuOGW!@8iDa&b|EL zx>!M|%8{;SG@5h1d*+-uXB2KtlnwLXRuyiRO$}}PTB<5zPnDIG-60*b!gU-~Hw@p` zqWN@Y^_pv2k1xirOaW`R1ZZg6x2JYX-E;Td)7|~hg9oUqsU}uYNoi>*bEzfP3Kq%a z0x!REhSB#g4z6XEA4|_(8wTV@0y;j?^Yv0yKKM&x=qzPT zG+k#UXHs+}uJBMbm8w`7mhG~A$2L0mbQ!}J-n+kOiBm7oB{15U_PX zjm2Vj8<7Za42)1;SIba;A7k&Fpt`Od#0r7$BC_vdxXaYnYWT92=Z_!aiRVu6%NI|R z%bOG|7t6AVltch!FHiwwbwKev*<4w@1(_={HMfMKsA$pKu(KabC77@McJ_np{t;@YydML3k3+lW4j| zHkZej9zhUzfDWiS5cr-OFJxEt=_L_tSJ1Qn5W1$J=_fS15wd|R@Fq&@o|K}b;HkbC@f6O z0AoNN@YVsN>FGRKB++W%|%T6ooeTwh=RtyC(t zzWz7hPhrgRKqfSr4x!@a*M{;DFAfce0MT$<_gIGB+F@hy!gT*1`8P&w9Xc2aXUzZr N002ovPDHLkV1f>g7GVGY literal 0 HcmV?d00001 diff --git a/application/media/img/help-faq-big.png b/application/media/img/help-faq-big.png new file mode 100644 index 0000000000000000000000000000000000000000..1d57544fcfda07203ab62a1bb0f0bc87e716c83b GIT binary patch literal 2421 zcmV-*35xcKP)_O?|2fWbkhH`5;0jjp)m)ZtayBgX>V`;falG7tTyf-Cz#KgSOdvL9B;0b>_RC#?6=^7OiutvlJE`& z9}Wk{9RN~tm%UV~bvUjzLTZwckr4u&<|Mo}5{Zzjj;nQ|m8)RclGkJa9C(2W##-OO z?5TD#J1U$^8R=l^|JlRz-1DZq=F?9r4|jESHVzIB<{Wf74G#~J&dys6Rx8Ws0%+-e z$dsJ9$((caFxOr8WL1CF!xWUa$Uq2~e9eJF_L^8MMuI{AxC4YjeuDS5+W2D$0IV44 zBnOq^co}iY5Y8UYsB;#6znr_{9lR>Mx0y3GCID~{KZ|-EdYN67PIv=1mD2h2d8{1S z06bnV`KzOv!a#QNC#=S;wJ9<-mC!FhXx?5Ti3h2Oc4Z+X?4%*OW8&b zKugy{VyI~+UxHICQwo!;6+-Gi#)|NR+t8$BuszI{(FIu23j= zuD?G@w2~TK{W~{pGQSdS&^$oTEMqh&xA%#q5I*7WTO$h+I-9AIG3h(0duLUSO zWbcD&LW9A;xC4Yj0gCrNa`a&I@#Dt?h3SK}U)|59gq1)~4GV-Nf|dQ<<;$11;3R|q z7H+?s@Z%l4D%_wC99JY4^~d^&RpL%ef^9Nt)v8s~jjZv9Ry+R-Tw-G7$OZsYJ^kEq zhgust=&b9-lrelIkRh%U1!WfbtYgN9h3oFGIo0 z&_7@8p^nb`vZ}wjO$&~|+sQ2% z!s-4`+G|w+D6okoV>aO$prZ14Ez6sCZru3Gg-X0nQV29vIWSENfP?s1bo+sq?y7Q9 z@G=yPwe0s8xW0 zfdO3tFGGtU_w}~d04xA4RD>`uuUN5SnbBDC`%jJ@IE$Z9v=Cr%2rrt8l>DET_LH3o z0KP+)`hrmkUPgC&4Zu9me2rdGf9HRY{{ul_k2W=3IIDddoM@@Rc}q_BYyjw6^hksh zGS&V|cY6)M9MCru&D99^=PX*ZXs*HV@mr;3(ixA(BM%_wao=TQUH|u@mqe zx`gS2wO?<0#Y&7QgK?%(8k41-n^90u@G38{d|iF*nM+NV8u6ns)&74VS&~g~qZ7q7 zz(i;uHb7xEeW;f0G@7O;Pbn^wInMM3rVx0yV;KSPYx1qmj^QVZk?{>4H(1yV!YZv) zQ~jnWK~7Pm9-o{Xo84YK&%znDavZlLEr7{nS|C_CFD^dD8=||rYZ#oQmth#JI#cK~ z{68Q`lQTBhXWI8VKs>m7_6G|5Z#l=Uk8 z3B};8UAuO!(NwYn^7U_!cRo%q$FyR3(;#@60bD9(0>RDM-Zr$)u-B?o8PyJ8j!&H^ zfN4r6vz1QgD-#aRoZkfDQ(V4nTR|ZJMtbhJTiInjJpKbaJmzpk)2v&Q-WC;_dS-Z-)&a&orFomF;-gzMaDbh>pV^q_ndYY78hUbeHnK(l^ n*p=_TP=K)tJpEXFkgWd#=zh}tL(H{K00000NkvXXu0mjfj>wB7 literal 0 HcmV?d00001 diff --git a/application/media/img/help-faq.png b/application/media/img/help-faq.png new file mode 100644 index 0000000000000000000000000000000000000000..69e0ce1e958fecf4830943d1e6bc29add6ba1293 GIT binary patch literal 1118 zcmeAS@N?(olHy`uVBq!ia0vp^Vj#@H3?x5i&EW)6%*9TgAsieWw;%dH0CG7CJR*yM z%CCbkqm#z$3ZS55iEBhjaDG}zd16s2LwR|*US?i)adKios$PCk`s{Z$QVa}?p8|YB zT>t<74^-dK&;TS?ty%>nApjx*VH+D8!-NsEgM$N{lbxLnXY=szz}XN+Mn*KST2f0#OJ84iPk(1;XIpJUZFOD6 zCLq|psiV8KySL-ryEk9HeEI$zh`s}z4OH{y&C90NhK}yG=GMlYySH_9we?Nts&A<6 z>~8I!(B0G9HFf%=n!3uGhN_7Z`=(BxykXPYO`F#5Ik4y8!2_qxoSHDPXY01jPo6w^ z{rY9uq6_V7uXc8|_Vjhm*nWM{o?DCd-CA|@-kPKL_MCrw;KJkkPhPxx_x8i551&4L z`26|v*RP+yfBy<}$&Vl3fBpLP=g*(NfBynq_4@Uz=9Y%tdw1^KwWF)M9q69^i9JBF z59pr0uHOEx8MCHMn?8BVwoTi%Zvi@KRZ(nAE#@%f`n~9>018 zby7!HE6_a)_X6E>d)1M5>bN1ZOPZV8 zJ32ZiPMI5CJ zO}Wfe`CpHxufMF({`A>JoUx)juWSB%+rV^e|N78tstWS5>)tnJy{}6QH9B&4)zZxA zuED)YF?mNNPP(uy)a5)W(XnL8r&V8qm5$ApNLHDAp~rCp_uX8zL?#xlx|lQ}z4?v1 ze5+Oe?3wYbYSKp;v(4Xcv%ls3S?KZiZ6KH80w4RB^XYe&N&U6<4_~@}=KVA7hrT>H zU3K-$w3UI&zg~Sl+5i5x_s0?qEplgVn;o0;_OGu~S7z-so~p+;k3UP?d~b{RS%a5e zFL$l8tN(T3ca(TRu==j6Sy#7hUvAAFexFg6VNV_V1N+d&JyVYB92Eg&K~Gmdmvv4F FO#t}{G$8;0 literal 0 HcmV?d00001 diff --git a/application/media/img/help.png b/application/media/img/help.png new file mode 100644 index 0000000000000000000000000000000000000000..674a8e92b7f20890210e7f9e52c3bc44733dffa8 GIT binary patch literal 738 zcmV<80v-K{P)nJY(i5b*a|{viz&fDK@p;)lY?EeSqdF8xKuX>ow^r?;1CFf z(zR|ajxHHoN*y~$Kok)|(xfU$Ufz4TdmVg9W2)lN@ATui?}z*SJNQo$J@Gvt2|T`| zw+4I%8h}w9U^<!n|*(9aPSGJcR;dQt!9$R zQzhr+``n9vO!`$2)nM?+y6vh~|))-^1+*iGjcDvoJl`#fm z45?I#v9U3<)_9(W)*8oga9#IiP_x;*JX8wHvJgU0tJP?=T1-z*<2VkE<6zr1wryjK z`4{AQ-tSVWL?jX+6bf}=OG`^wmPMn{!1KH==;-K(dcE!d2Jkx|Q>)cJtgo*>4~N4~ zrIe!6-o?em@cjHdo12^Z?Ch+iweC!I`SkR3J6MswpklH3qgX7y0v-i>Ct|VKlgY`+ zFO^D#-QC@vp!2P}-<4$@3db%707*qoM6N<$g2Gft=>Px# literal 0 HcmV?d00001 diff --git a/application/media/img/jquery.gritter.close-ie6.gif b/application/media/img/jquery.gritter.close-ie6.gif new file mode 100644 index 0000000000000000000000000000000000000000..aea6e427ede71a9f7f709aeb7daa48e6fb5f07e0 GIT binary patch literal 718 zcmZ?wbhEHb6k`x$c$UP#%F258?%jtEA8y~i-NM4c)YNp%nl%Rx9<;W$uCK3;i;Fvd z{`~Xj&v|%wTwPs_jErPuWxc$-G&D4(PoG{>Q?p{liYHH=T)upH)~s3P=H@9WDTaoI zot>RNK0a1fRb&dSOvEG*2;&HeM|kAi~2*|TTgy?gib=g&uv9_8ib855-6)ej#& ztX;cy+O%l`0s?k+cG=n485tSJj~{n%aEOYEI(6z)Wo2bpSlIgY>lZIx{Nu-u_V)Iw zswxo?ksCK|?Afzt-MV#$4joEJNSHEZNCMki?(^G9DBs4DA0KlA4-XUF{g-;~8~>S)2Qt zr4^YHrt(BjO<>ZDo6y8!o1iYtm$)pEH7Y*AOKt*-K?1YN@~w$NZVB8R69W^p8MbX> z2v1<=Z;IJ;@X(=<1m7f9COv`W{2W_#B6*itXfVlfC0H&un##G%Tr5F&xm1FqNdn7q zmDLHH)^8GImisBQu{=oBX0p?n%41+0%5+gUQE*yHP=>bWBJM*fH78PBXE3_T=XfRr zWU^RA$1;U5B%i&)KPiEy-n&Lx;gRF-Jl+UR$iBA%yu2tBQB0m*KZV klO;q&G-@>)84n8x&q`bHRhy%cqp_2ThePmiumXcM0E(Ob2mk;8 literal 0 HcmV?d00001 diff --git a/application/media/img/jquery.gritter.png b/application/media/img/jquery.gritter.png new file mode 100644 index 0000000000000000000000000000000000000000..0ca3bc0a0f8068194082db9719d6e20a8645985f GIT binary patch literal 4880 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 Zf3P5-;PGuo@D~?gbJgKWjfL<1{{eTAuA%?{ literal 0 HcmV?d00001 diff --git a/application/media/img/request-feature-big.png b/application/media/img/request-feature-big.png new file mode 100644 index 0000000000000000000000000000000000000000..b7b124144bc8fd0e05daffbc4c561e6897333478 GIT binary patch literal 1095 zcmV-N1i1T&P)*tZti#T z|DFH;ocmq)k4vm(QAPa+&ml;gpYZS;tilBSO-xG;MK5?9T=ezp?)HJs#u_QZ1 zH2OtDZTYr!xtVM!Euh4fgQ`j#E)N|)U88qk{QT(IH)?ASwJAL6qS*=*TJ0Z9Z>2vjLB85JxU3O!d`yx;osP(bASl`l6TTxYRFCst3L|L(wijq9aigGAimx(b$#S@58m}kM`3+6-%pV)cn)S)kz zYsqvGDMHpYJYI=G6>KZbry$RaK~)e!U{Dooxn{Q8t$2fR4)3qQVlh6ol1^H{daE%W zPwHq1m0_2U*?EmvJc+LB#NtW30gchgIaE~=(V`fQYW7MxYC3>Hl_P;rwAw5*;hBe< zP7i%UPK5aD*s3ZwP*#$UswnvVVG8v9{Q0JAaU+`x^g%XfWIq?AWWP^>>I3P8{>S|c^U6~@c7NnH(hH2063@p zZ9o1tN={amF3{0+oeKlE*z>?<@(fW1N2c}RKfHKm1MTTF{sE{y*uMDj{eI@?U;?#e z#4#<3bK)ezv+UdD#zYWBXlTAZ5s4*VcAR^AarX~3w~JMcimJxejKQ|1*y$5n-?CXe zA1y4FB8d<>BEyCrb2H|*A31nz@ZY(4b6^MDKzO;6bbt&X3n<+Ch}?0!Irpn{8P+v<_X0D(6yOIE zOCk3H6aa-lrhQB0k@{!%Jw56eXY7^>EfW5Ie01alpaCA>HsAx|s{u&B2xJ5KKwc{6 zg&&j-B!L(Z0A^E=P|CqQZ_xroO`U}$^%zpUg&4GyXc&krkLQ1>KLK_xgU+LC1OWg5 N002ovPDHLkV1lZ2^SA&2 literal 0 HcmV?d00001 diff --git a/application/media/img/smile-big.png b/application/media/img/smile-big.png new file mode 100644 index 0000000000000000000000000000000000000000..22fba5ffce41d5eb25b1267871a8091ce49cd1f1 GIT binary patch literal 1332 zcmV-41Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iOb@ z2reP?;x3T@00gv2L_t(Y$HkRfh*eb>$A8~md+&43c$}*x*4M*1 z6VsSdFSTI9y6pA+zP0{*{{{bN6Tp*mtjj-(@wd&B`l@p*0&Wg{S?>vp6mY6zNy>g; zrzea7IQ*e4S-YZ1^BKWf%fwW~{=;S2wzp6iIvTxFiFAuV zMgIxF6L89kh4X@KFFx42ZqqfLPC=-p>YP<;ElHY)sFkT&q_2Ni@ScCSaB#ff?h)Zz zokcOTX$n34J(=yhp6kEpigg`HZ3^?v4`t5l%1N3yvCc`x7dd#Oj4{ZHg?_rS*DM}B zR=c!NVGt<(CE=L^twWx9`Qar4tNQX0u@}7g(eG@0>?`?VY@UR3J0%x58Tzg!o1Q%` zJBNHUyC~@G(&&MWa|eKD&bX23j$c2^`bTc-+kM||457Evrk;f3diZsVG8GqB!xvj8HHT4o@asDH zrg4FQG1GcEK~ohGiLL5DpE0?RTdkW7XbhHgha1)`&k~hlQRfu3lBV^)lf(iJa3o26 z&Z)s6ViVPJ%}GzEN5@>*FtbMfqCse6SvG(;wUWs>Ax>DcJPQbG)?E%Z1941Ww-3NA z*R7>mDU%72I917KAq-^MIYicsx|H7wG52j9W%5*sr#3HO-@9A5abSvQ{Cmn}!wnZ1 z-g)6JZojgbk&$7xyr-0^Dfuk;hRj(3ajGXz6k>9La>23%`sk}=Y+U7vr9(^|9VCux zl%tedDqO$fI3EqZ#nv5${{H2f4ZvE5b9!=SOrJlcgJQ*w938Fow&s1k_cAMQH+A#y zYZdzPdwA&P`4ox?Nn$xMneg}?h!+-t&cl5_R^+@^yEZEy4$b^zD>P- zU)z@jKGWG&F>Mj6mjpYWyrZRmPR_HTucourXs%N>|d-UD0U-S+UhNmrKrWbjhV4U*!Ef;6E+0}v+6489l(*><6?|hQT;IMsOgjZFmK;30$UXds)7C3QaENxCww|eP(4^^kds%W8V z)U{JabiC`;yw}KV}(k??52Rpzq9MbKsV3>%m-EhYgaAymUOmA zd&b8Y4-$+0ZBkEv{i7QN4gtr33E(GS6!^8#KLd~f769{rE`er+xeaJ55H|M2jVvbw zqDJNuz&LOc_!)@K_M!zq7xlo+z#LBq5Im_DrU0S}PSHl7QUh27ext6#x!>eQm3K5w q6*lxTGxpfVmo!dvdOGX>wEY3UCM(zdn1^Ek00003VS!P@cil)z4*}Q$iB}d>0za literal 0 HcmV?d00001 diff --git a/application/media/js/jquery.gritter-1.5.js b/application/media/js/jquery.gritter-1.5.js new file mode 100644 index 0000000..bf3bd47 --- /dev/null +++ b/application/media/js/jquery.gritter-1.5.js @@ -0,0 +1,21 @@ +(function($){$.gritter={};$.gritter.options={fade_in_speed:'medium',fade_out_speed:2000,time:6000} +$.gritter.add=function(params){try{if(!params.title||!params.text){throw'You need to fill out the first 2 params: "title" and "text"';}}catch(e){alert('Gritter Error: '+e);} +return Gritter.add(params);} +$.gritter.remove=function(id,params){Gritter.removeSpecific(id,params||'');} +$.gritter.removeAll=function(params){Gritter.stop(params||'');} +var Gritter={fade_in_speed:'',fade_out_speed:'',time:'',_custom_timer:0,_item_count:0,_is_setup:0,_tpl_close:'
',_tpl_item:'',_tpl_wrap:'
',add:function(params){if(!this._is_setup){this._runSetup();} +var user=params.title,text=params.text,image=params.image||'',sticky=params.sticky||false,time_alive=params.time||'';this._verifyWrapper();this._item_count++;var number=this._item_count,tmp=this._tpl_item;this['_before_open_'+number]=($.isFunction(params.before_open))?params.before_open:function(){};this['_after_open_'+number]=($.isFunction(params.after_open))?params.after_open:function(){};this['_before_close_'+number]=($.isFunction(params.before_close))?params.before_close:function(){};this['_after_close_'+number]=($.isFunction(params.after_close))?params.after_close:function(){};this._custom_timer=0;if(time_alive){this._custom_timer=time_alive;} +var image_str=(image!='')?'':'',class_name=(image!='')?'gritter-with-image':'gritter-without-image';tmp=this._str_replace(['[[username]]','[[text]]','[[image]]','[[number]]','[[class_name]]'],[user,text,image_str,this._item_count,class_name],tmp);this['_before_open_'+number]();$('#gritter-notice-wrapper').append(tmp);var item=$('#gritter-item-'+this._item_count);item.fadeIn(this.fade_in_speed,function(){Gritter['_after_open_'+number]($(this));});if(!sticky){this._setFadeTimer(item,number);} +$(item).bind('mouseenter mouseleave',function(event){if(event.type=='mouseenter'){if(!sticky){Gritter.restoreItemIfFading(this,number);}} +else{if(!sticky){Gritter._setFadeTimer(this,number);}} +Gritter._hoverState(this,event.type);});return number;},_countRemoveWrapper:function(unique_id){this['_after_close_'+unique_id]($('#gritter-item-'+unique_id));if($('.gritter-item-wrapper').length==0){$('#gritter-notice-wrapper').remove();}},_fade:function(e,unique_id){Gritter['_before_close_'+unique_id]($(e));$(e).animate({opacity:0},Gritter.fade_out_speed,function(){$(e).animate({height:0},300,function(){$(e).remove();Gritter._countRemoveWrapper(unique_id);})})},_hoverState:function(e,type){if(type=='mouseenter'){$(e).addClass('hover');if($(e).find('img').length){$(e).find('img').before(this._tpl_close);} +else{$(e).find('span').before(this._tpl_close);} +$(e).find('.gritter-close').click(function(){Gritter._remove(this);});} +else{$(e).removeClass('hover');$(e).find('.gritter-close').remove();}},_remove:function(e){var gritter_wrap=$(e).parents('.gritter-item-wrapper');var unique_id=gritter_wrap.attr('id').split('-')[2];this['_before_close_'+unique_id](gritter_wrap);gritter_wrap.fadeOut('medium',function(){$(this).remove();Gritter._countRemoveWrapper(unique_id);});},removeSpecific:function(unique_id,params){var e=$('#gritter-item-'+unique_id);this['_before_close_'+unique_id](e);if(typeof(params)==='object'){if(params.fade){var speed=this.fade_out_speed;if(params.speed){speed=params.speed;} +e.fadeOut(speed,function(){e.remove();});}} +else{e.remove();} +this._countRemoveWrapper(unique_id);},restoreItemIfFading:function(e,number){window.clearTimeout(Gritter['_int_id_'+number]);$(e).stop().css({opacity:1});},_runSetup:function(){for(opt in $.gritter.options){this[opt]=$.gritter.options[opt];} +this._is_setup=1;},_setFadeTimer:function(item,number){var timer_str=(this._custom_timer)?this._custom_timer:this.time;Gritter['_int_id_'+number]=window.setTimeout(function(){Gritter._fade(item,number);},timer_str);},stop:function(params){var before_close=($.isFunction(params.before_close))?params.before_close:function(){};var after_close=($.isFunction(params.after_close))?params.after_close:function(){};var wrap=$('#gritter-notice-wrapper');before_close(wrap);wrap.fadeOut(function(){$(this).remove();after_close();});},_str_replace:function(search,replace,subject,count){var i=0,j=0,temp='',repl='',sl=0,fl=0,f=[].concat(search),r=[].concat(replace),s=subject,ra=r instanceof Array,sa=s instanceof Array;s=[].concat(s);if(count){this.window[count]=0;} +for(i=0,sl=s.length;i opts.startOffset; // check if the window was scrolled down more than the start offset declared. + var objFartherThanTopPos = $obj.offset().top > startOffset; // check if the object is at it's top position (starting point) + var objBiggerThanWindow = $obj.outerHeight() < $(window).height(); // if the window size is smaller than the Obj size, then do not animate. + + // if window scrolled down more than startOffset OR obj position is greater than + // the top position possible (+ offsetY) AND window size must be bigger than Obj size + if( (pastStartOffset || objFartherThanTopPos) && objBiggerThanWindow ){ + var newpos = ($(document).scrollTop() -startOffset + opts.offsetY ); + if ( newpos > bottomPos ) + newpos = bottomPos; + if ( $(document).scrollTop() < opts.startOffset ) // if window scrolled < starting offset, then reset Obj position (opts.offsetY); + newpos = parentPaddingTop; + + $obj.animate({ top: newpos }, opts.duration ); + } + }); +}; diff --git a/application/media/js/themes/default/d.png b/application/media/js/themes/default/d.png new file mode 100644 index 0000000000000000000000000000000000000000..8540175a04b0cd303e3966d1727f30ee9b8a7254 GIT binary patch literal 7635 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 literal 0 HcmV?d00001 diff --git a/application/media/js/themes/default/style.css b/application/media/js/themes/default/style.css new file mode 100644 index 0000000..2ca17ea --- /dev/null +++ b/application/media/js/themes/default/style.css @@ -0,0 +1,56 @@ +/* + * jsTree default theme 1.0 + * Supported features: dots/no-dots, icons/no-icons, focused, loading + * Supported plugins: ui (hovered, clicked), checkbox, contextmenu, search + */ + +.jstree-default li, +.jstree-default ins { background-image:url("d.png"); background-repeat:no-repeat; background-color:transparent; } +.jstree-default li { background-position:-90px 0; background-repeat:repeat-y; } +.jstree-default li.jstree-last { background:transparent; } +.jstree-default .jstree-open > ins { background-position:-72px 0; } +.jstree-default .jstree-closed > ins { background-position:-54px 0; } +.jstree-default .jstree-leaf > ins { background-position:-36px 0; } + +.jstree-default .jstree-hovered { background:#FFF0C0; border:1px solid #841212; padding:0 2px 0 1px; color: #841212;} +.jstree-default .jstree-clicked { background:#FCFCFC; border:1px solid #FCFCFC; padding:0 2px 0 1px; color: #841212;} +.jstree-default a .jstree-icon { background-position:-56px -19px; } +.jstree-default a.jstree-loading .jstree-icon { background:url("throbber.gif") center center no-repeat !important; } + +.jstree-default.jstree-focused { background:#FCFCFC; } + +.jstree-default .jstree-no-dots li, +.jstree-default .jstree-no-dots .jstree-leaf > ins { background:transparent; } +.jstree-default .jstree-no-dots .jstree-open > ins { background-position:-18px 0; } +.jstree-default .jstree-no-dots .jstree-closed > ins { background-position:0 0; } + +.jstree-default .jstree-no-icons a .jstree-icon { display:none; } + +.jstree-default .jstree-search { font-style:italic; } + +.jstree-default .jstree-no-icons .checkbox { display:inline-block; } +.jstree-default .jstree-no-checkboxes .checkbox { display:none !important; } +.jstree-default .jstree-checked > a > .checkbox { background-position:-38px -19px; } +.jstree-default .jstree-unchecked > a > .checkbox { background-position:-2px -19px; } +.jstree-default .jstree-undetermined > a > .checkbox { background-position:-20px -19px; } +.jstree-default .jstree-checked > a > .checkbox:hover { background-position:-38px -37px; } +.jstree-default .jstree-unchecked > a > .checkbox:hover { background-position:-2px -37px; } +.jstree-default .jstree-undetermined > a > .checkbox:hover { background-position:-20px -37px; } + +#vakata-dragged.jstree-default ins { background:transparent !important; } +#vakata-dragged.jstree-default .jstree-ok { background:url("d.png") -2px -53px no-repeat !important; } +#vakata-dragged.jstree-default .jstree-invalid { background:url("d.png") -18px -53px no-repeat !important; } +#jstree-marker.jstree-default { background:url("d.png") -41px -57px no-repeat !important; } + +.jstree-default a.jstree-search { color:aqua; } + +#vakata-contextmenu.jstree-default-context, +#vakata-contextmenu.jstree-default-context li ul { background:#f0f0f0; border:1px solid #979797; -moz-box-shadow: 1px 1px 2px #999; -webkit-box-shadow: 1px 1px 2px #999; box-shadow: 1px 1px 2px #999; } +#vakata-contextmenu.jstree-default-context li { } +#vakata-contextmenu.jstree-default-context a { color:black; } +#vakata-contextmenu.jstree-default-context a:hover, +#vakata-contextmenu.jstree-default-context .vakata-hover > a { padding:0 5px; background:#e8eff7; border:1px solid #aecff7; color:black; -moz-border-radius:2px; -webkit-border-radius:2px; border-radius:2px; } +#vakata-contextmenu.jstree-default-context li.vakata-separator { background:white; border-top:1px solid #e0e0e0; margin:0; } +#vakata-contextmenu.jstree-default-context li ul { margin-left:-4px; } + +/* TODO: IE6 support - the `>` selectors */ diff --git a/application/media/js/themes/default/throbber.gif b/application/media/js/themes/default/throbber.gif new file mode 100644 index 0000000000000000000000000000000000000000..5b33f7e54f4e55b6b8774d86d96895db9af044b4 GIT binary patch literal 1849 zcma*odr(tX9tZI2z31lM+(&YVk%mZ}5P~KlG2s=WSbGzm0!x7^P##Mnh7t-jP!X0Q zk_SQ}Po-L1tlDK;6l?(>v)e5ZBQx4|Y-Q?nr@Px3?9h(3ZWr3^tj=`TP57gKr87N$ zp2wWee1GRRCwo_xahnw)5cxNPJbCg2L6DV|6`#+yw6v6!mDS$f9-JvFD^n;GQ&UrZ zzh5jCkByB101O60U0q#p_1BM>Cv-vP?&s4@g_((4_1L=L$(a91)0=J91Gas#R{McE znYG^9*0A5YZ>#;~+Wkn(W5B0^yELIYLP!K}mB~<)AM@1&nqekynuaEGqPrzoH|KodRXJy)%+w_fu3nE5>@Bd_b zqC$EQ;{c`T&?EsNO|igL9gC7Ygxv?aQUEXMq?~>wg{EyW;VcJ37CUF#HjrT=KQO_* zS>M9yydXk18D(+QDJ1>r);Lav_uYKp$T?4vr{Q$lTo&pKv^?(>L-)G2*lwH!Ah7k? z7oH<8h-(KTKt5V6$8gF)C7Io&P5=SjTh)=zV=E2EUhQZP##L8S{d%UK>>+y82>+FV+#^BzW7u3F)Bb>=lYQ%%j`F>ASe zo*cw@V#u6T`A2He;70mR(V&iV&-7{qP~=SRf&jm9-T{*ZeZ}$rd0#6c&fLG^xJcf5 z+p<`wJYgW+_s*V{uI$nMB;%8`S_3>PfGOj3Rq}@Cx^+j?rk92fANSFDBYnOqQ>Vdj z)(|$AhP4t&Lb=Gvo2#3Gl%9<=Gv`Mz?Po@P4iLF!x}GUWJICDlFk-hS^Whyh7x~VH z@0vD1>HYD4&e+~yzS*-sFR{9`{QEEZO1zg7>R&7cHts-6j!xHVdA8eI+ZlVzd%`es zJT@$#GX(gvCJ1oJN%yLBK}{V=V;seo;!w|Yte!W1%5qLNFWqvZW>h&IiH+oPT=b@E zPhGzv5=(Un*X>v`>%8h_nj^NdYcE6NHS_ifkCV$*D)Tqrbu`s;<=t<4 zAHNqNV?6(g<1PY-w@#I-WYFViz?9TrkMr)u0g`O`u|>T;k|2sV*YF^punvT;$SuTy{j3Gv)yqD!R_CF>yR)MzmmYS5v+~R zXAdD%ng9?df;wd8GxR#%3O+gz};Vo;)sK%Bj-q>Oq%R7JU-KD?vYu>#2UjaDo z&8$>5xW~?KPD_#XFToU1hIb*VOMidUr6iYiO0N|i-7s`T8!cFT`rN!^1Pt78J93i6 z5HI1wIM$94m{3SLDvISDe6$ZG1;eq_D9RTaaC>=cO{@Bs>$IlPCPJJ$h$)-3vzNUQ6OsN#_zWxey!_9%hxwH2_dEJi=yY|1c7nDm2_Lm!Cof8-R_+9UkS zcBE(o47yE)oMR(Q=dp1a2wTX5KvvGyLqlWTa7V&!A*|w|)ax~1_~aJ0=_Lilg*0iQk7#ZD EAHN$8j{pDw literal 0 HcmV?d00001 diff --git a/application/messages/.htaccess b/application/messages/.htaccess new file mode 100644 index 0000000..281d5c3 --- /dev/null +++ b/application/messages/.htaccess @@ -0,0 +1,2 @@ +order allow,deny +deny from all diff --git a/application/views/.htaccess b/application/views/.htaccess new file mode 100644 index 0000000..281d5c3 --- /dev/null +++ b/application/views/.htaccess @@ -0,0 +1,2 @@ +order allow,deny +deny from all diff --git a/application/views/login.php b/application/views/login.php index a9a595d..56ec060 100644 --- a/application/views/login.php +++ b/application/views/login.php @@ -2,11 +2,13 @@ - + + + diff --git a/application/views/template.php b/application/views/template.php new file mode 100644 index 0000000..6f72764 --- /dev/null +++ b/application/views/template.php @@ -0,0 +1 @@ +