Acceptance Tests

This commit is contained in:
Paminger
2016-04-10 18:11:09 +02:00
parent 5b3d3c401d
commit 3b39752ab7
659 changed files with 59893 additions and 54 deletions
+5
View File
@@ -8,3 +8,8 @@ documents/
.settings
.project
.buildpath
!/tests/codeception.yml
!/tests/codeception/api.suite.yml
!/tests/codeception/functional.suite.yml
!/tests/codeception/acceptance.suite.yml
!/submodules/d3/
+13
View File
@@ -0,0 +1,13 @@
CodeIgniter - FHComplete -> Hybrid Cyborg
=========================================
== CodeIgniter Basics
https://codeigniter.com/user_guide/
=== wichtige Pfadkonstanten
* FCPATH -> dort wo die index.php liegt -> Bspl: /var/www/html/
* BASEPATH -> Pfad zum CodeIgniter-Framework -> Bspl: '..../vendor/codeingiter/framework/system/'
* APPPATH -> Pfad zur Application-Folder '/var/www/html/application/'
@@ -0,0 +1,167 @@
<?php
if (!defined('BASEPATH'))
exit('No direct script access allowed');
class TblStudiengang extends FHC_Controller
{
function __construct()
{
parent::__construct();
$this->load->model('organisation/studiengang_model');
$this->load->library('form_validation');
}
public function index()
{
$keyword = '';
$this->load->library('pagination');
$config['base_url'] = base_url() . 'studiengang/index/';
$config['total_rows'] = $this->studiengang_model->total_rows();
$config['per_page'] = 10;
$config['uri_segment'] = 3;
$config['suffix'] = '.html';
$config['first_url'] = base_url() . 'studiengang.html';
$this->pagination->initialize($config);
$start = $this->uri->segment(3, 0);
$studiengang = $this->studiengang_model->index_limit($config['per_page'], $start);
$data = array(
'studiengang_data' => $studiengang,
'keyword' => $keyword,
'pagination' => $this->pagination->create_links(),
'total_rows' => $config['total_rows'],
'start' => $start,
);
$this->load->view('tbl_studiengang_list', $data);
}
public function search()
{
$keyword = $this->uri->segment(3, $this->input->post('keyword', TRUE));
$this->load->library('pagination');
if ($this->uri->segment(2)=='search') {
$config['base_url'] = base_url() . 'studiengang/search/' . $keyword;
} else {
$config['base_url'] = base_url() . 'studiengang/index/';
}
$config['total_rows'] = $this->studiengang_model->search_total_rows($keyword);
$config['per_page'] = 10;
$config['uri_segment'] = 4;
$config['suffix'] = '.html';
$config['first_url'] = base_url() . 'studiengang/search/'.$keyword.'.html';
$this->pagination->initialize($config);
$start = $this->uri->segment(4, 0);
$studiengang = $this->studiengang_model->search_index_limit($config['per_page'], $start, $keyword);
$data = array(
'studiengang_data' => $studiengang,
'keyword' => $keyword,
'pagination' => $this->pagination->create_links(),
'total_rows' => $config['total_rows'],
'start' => $start,
);
$this->load->view('tbl_studiengang_list', $data);
}
public function read($id)
{
$row = $this->studiengang_model->get_by_id($id);
if ($row) {
$data = array(
);
$this->load->view('tbl_studiengang_read', $data);
} else {
$this->session->set_flashdata('message', 'Record Not Found');
redirect(site_url('studiengang'));
}
}
public function create()
{
$data = array(
'button' => 'Create',
'action' => site_url('studiengang/create_action'),
);
$this->load->view('tbl_studiengang_form', $data);
}
public function create_action()
{
$this->_rules();
if ($this->form_validation->run() == FALSE) {
$this->create();
} else {
$data = array(
);
$this->studiengang_model->insert($data);
$this->session->set_flashdata('message', 'Create Record Success');
redirect(site_url('studiengang'));
}
}
public function update($id)
{
$row = $this->studiengang_model->get_by_id($id);
if ($row) {
$data = array(
'button' => 'Update',
'action' => site_url('studiengang/update_action'),
);
$this->load->view('tbl_studiengang_form', $data);
} else {
$this->session->set_flashdata('message', 'Record Not Found');
redirect(site_url('studiengang'));
}
}
public function update_action()
{
$this->_rules();
if ($this->form_validation->run() == FALSE) {
$this->update($this->input->post('', TRUE));
} else {
$data = array(
);
$this->studiengang_model->update($this->input->post('', TRUE), $data);
$this->session->set_flashdata('message', 'Update Record Success');
redirect(site_url('studiengang'));
}
}
public function delete($id)
{
$row = $this->studiengang_model->get_by_id($id);
if ($row) {
$this->studiengang_model->delete($id);
$this->session->set_flashdata('message', 'Delete Record Success');
redirect(site_url('studiengang'));
} else {
$this->session->set_flashdata('message', 'Record Not Found');
redirect(site_url('studiengang'));
}
}
public function _rules()
{
$this->form_validation->set_rules('', '', 'trim');
$this->form_validation->set_error_delimiters('<span class="text-danger">', '</span>');
}
};
/* End of file Studiengang.php */
/* Location: ./application/controllers/Studiengang.php */
+430
View File
@@ -0,0 +1,430 @@
<?php
/**
* FH-Complete
*
* @package FHC-Helper
* @author FHC-Team
* @copyright Copyright (c) 2016 fhcomplete.org
* @license GPLv3
* @link https://fhcomplete.org
* @since Version 1.0.0
* @filesource
*/
defined('BASEPATH') OR exit('No direct script access allowed');
//require_once 'include/basis.class.php';
/**
* FHC-Auth Helpers
*
* @package FH-Complete
* @subpackage Helpers
* @category Helpers
* @author FHC-Team
* @link http://fhcomplete.org/user_guide/helpers/fhcauth_helper.html
*/
// ------------------------------------------------------------------------
//require_once('include/sprache.class.php');
class basis_db
{
protected $ci=null;
protected $db_result=null;
protected $errormsg=null;
public function __construct($ci)
{
$this->ci=$ci;
}
public function db_connect()
{
$conn_str='host='.DB_HOST.' port='.DB_PORT.' dbname='.DB_NAME.' user='.DB_USER.' password='.DB_PASSWORD;
//Connection Herstellen
if (DB_CONNECT_PERSISTENT)
{
if(!basis_db::$db_conn = pg_pconnect($conn_str))
die('Fehler beim Oeffnen der Datenbankverbindung');
}
else
{
if(!basis_db::$db_conn = pg_connect($conn_str))
die('Fehler beim Oeffnen der Datenbankverbindung');
}
}
public function db_query($sql)
{
if ($this->db_result=$this->ci->db->simple_query($sql))
return $this->db_result;
else
{
$this->errormsg.='Abfrage in Datenbank fehlgeschlagen! '.$this->db_last_error();
return false;
}
}
public function db_num_rows($result=null)
{
if(is_null($result))
return pg_num_rows($this->db_result);
else
return pg_num_rows($result);
}
public function db_fetch_object($result = null, $i=null)
{
if(is_null($result))
{
if(is_null($i))
return pg_fetch_object($this->db_result);
else
return pg_fetch_object($this->db_result, $i);
}
else
{
if(is_null($i))
return pg_fetch_object($result);
else
return pg_fetch_object($result, $i);
}
}
public function db_fetch_row($result = null, $i=null)
{
if(is_null($result))
{
if(is_null($i))
return pg_fetch_row($this->db_result);
else
return pg_fetch_row($this->db_result, $i);
}
else
{
if(is_null($i))
return pg_fetch_row($result);
else
return pg_fetch_row($result, $i);
}
}
public function db_fetch_assoc($result = null, $i=null)
{
if(is_null($result))
{
if(is_null($i))
return pg_fetch_assoc($this->db_result);
else
return pg_fetch_assoc($this->db_result, $i);
}
else
{
if(is_null($i))
return pg_fetch_row($result);
else
return pg_fetch_row($result, $i);
}
}
public function db_result($result = null, $i,$item)
{
if(is_null($result))
{
return pg_result($this->db_result, $i,$item);
}
else
{
return pg_result($result, $i,$item);
}
}
public function db_getResultJSON($result = null)
{
$rows=array();
if(is_null($result))
{
while($r = pg_fetch_assoc($this->db_result))
$rows[] = $r;
//print json_encode($rows);
}
else
{
pg_result_seek($result, 0);
//var_dump($result);
while($r = pg_fetch_assoc($result))
{
$rows[] = $r;
}
//print json_encode($rows);
}
return json_encode($rows);
}
public function db_last_error()
{
return pg_last_error();
}
public function db_affected_rows($result=null)
{
if(is_null($result))
return pg_affected_rows($this->db_result);
else
return pg_affected_rows($result);
}
public function db_result_seek($result=null, $offset)
{
if(is_null($result))
return pg_result_seek($this->db_result, $offset);
else
return pg_result_seek($result, $offset);
}
public function db_fetch_array($result=null)
{
if(is_null($result))
return pg_fetch_array($this->db_result);
else
return pg_fetch_array($result);
}
public function db_num_fields($result=null)
{
if(is_null($result))
return pg_num_fields($this->db_result);
else
return pg_num_fields($result);
}
/**
* Liefert den Feldnamen mit index i
*/
public function db_field_name($result=null, $i)
{
if(is_null($result))
return pg_field_name($this->db_result, $i);
else
return pg_field_name($result, $i);
}
/**
* Gibt den Speicher wieder Frei.
* (ist das sinnvoll wenn es per Value uebergeben wird??)
*/
public function db_free_result($result = null)
{
if(is_null($result))
{
return pg_free_result($this->db_result);
}
else
{
return pg_free_result($result);
}
}
/**
* Liefert die aktuelle Datenbankversion
*/
public function db_version()
{
return pg_version(basis_db::$db_conn);
}
/**
* Escaped Sonderzeichen in Variablen vor der Verwendung in SQL Statements
* um SQL Injections zu verhindern
*
*/
public function db_escape($var)
{
return pg_escape_string($var);
}
/**
* Null Value Handling und Hochkomma für Inserts / Updates
* Wenn die Uebergebe Variable leer ist, wird ein String mit null
* zurueckgeliefert, wenn nicht dann wird der string unter Hochkomma zurueckgeliefert
* es sei denn qoute=false dann wird nur der String zurueckgeliefert
*
* @param $var String-Value fuer SQL Request
* @return string
*/
public function db_null_value($var, $qoute=true)
{
if($qoute)
return ($var!==''?$this->db_qoute($var):'null');
else
return ($var!==''?$var:'null');
}
/**
* Setzt einen String unter Hochkomma
* @param $var Value fuer Insert/Update
* @return value unter Hochkomma
*/
public function db_qoute($var)
{
return "'".$var."'";
}
/**
* Escaped einen Parameter fuer die Verwendung in Insert/Update SQL Befehlen
* Es werden abhaengig vom Typ Hochkomma oder Null hinzugefuegt
* @param $var Value der gesetzt werden soll
* @param $type Typ des Values (FHC_STRING | FHC_BOOLEAN | FHC_INTEGER | ...)
* @param $nullable boolean gibt an ob das Feld NULL sein darf. Wenn true wird
* NULL statt einem Leerstring zurueckgeliefert
* @return Escapter Value inklusive Hochkomma wenn noetig
*
* Verwendungsbeispiel:
* Update tbl_person set nachname=$this->db_add_param($var)
* Update tbl_person set aktiv=$this->db_add_param($var, FHC_BOOL, false)
* Update tbl_person set anzahlkinder=$this->db_add_param($var, FHC_INT)
*/
public function db_add_param($var, $type=FHC_STRING, $nullable=true)
{
if(($var==='' || is_null($var)) && $type!=FHC_BOOLEAN)
{
if($nullable)
return 'null';
else
return "''";
}
switch($type)
{
case FHC_INTEGER:
$var = $this->db_escape($var);
if(!is_numeric($var) && $var!=='')
die('Invalid Integer Parameter detected:'.$var);
$var = $this->db_null_value($var, false);
break;
case FHC_LANG_ARRAY:
$sprache = new sprache();
$sprache->getAll(true);
$buf = $var;
$var = array();
$languages = $sprache->getAllIndexesSorted();
foreach($languages as $sk => $sp)
{
if(!$sp || !isset($buf[$sp]))
$var[$sk] = "";
else
$var[$sk] = $this->db_escape($buf[$sp]);
}
$var = str_replace('\\', '\\\\', $var);
$var = str_replace('"', '\\\"', $var);
$var = '\'{"' . join('","', $var) . '"}\'';
break;
case FHC_BOOLEAN:
if($var===true)
$var='true';
elseif($var===false)
$var='false';
elseif($var=='' && $nullable)
$var = 'null';
else
die('Invalid Boolean Parameter detected');
break;
case FHC_STRING:
default:
$var = $this->db_escape($var);
$var = $this->db_null_value($var);
break;
}
return $var;
}
/**
* Erzeugt aus einem DB-Result-Boolean einen PHP Boolean
*/
public function db_parse_bool($var)
{
if($var=='t')
return true;
elseif($var=='f')
return false;
elseif($var=='')
return '';
else
die('Invalid DB Boolean. Wrong DB-Engine?');
}
/**
* Bereitet ein Array von Elementen auf, damit es in der IN-Klausel eines
* Select Befehls verwendet werden kann.
*/
public function db_implode4SQL($array)
{
$string = '';
foreach($array as $row)
{
if($string!='')
$string.=',';
$string.=$this->db_add_param($row);
}
return $string;
}
/**
* Erstellt aus einem DB Array ein PHP Array
* @param $var DB Result Array Spalte
* @return php array
*/
public function db_parse_array($var)
{
if ($var == '')
return;
preg_match_all('/(?<=^\{|,)(([^,"{]*)|\s*"((?:[^"\\\\]|\\\\(?:.|[0-9]+|x[0-9a-f]+))*)"\s*)(,|(?<!^\{)(?=\}$))/i', $var, $matches, PREG_SET_ORDER);
$values = array();
foreach ($matches as $match)
{
$values[] = $match[3] != '' ? stripcslashes($match[3]) : (strtolower($match[2]) == 'null' ? null : $match[2]);
}
return $values;
}
/**
* Erstellt aus einem DB Array ein PHP Array
* @param $var DB Result Array Spalte
* @return php array
*/
public function db_parse_lang_array($var)
{
if ($var == '')
return;
preg_match_all('/(?<=^\{|,)(([^,"{]*)|\s*"((?:[^"\\\\]|\\\\(?:.|[0-9]+|x[0-9a-f]+))*)"\s*)(,|(?<!^\{)(?=\}$))/i', $var, $matches, PREG_SET_ORDER);
$values = array();
$sprache = new sprache();
$sprache->loadIndexArray();
$sprache = new sprache();
$sprache->getAll(true);
$languages = $sprache->getAllIndexesSorted();
foreach ($matches as $mk => $match)
{
$values[$languages[$mk+1]] = $match[3] != '' ? stripcslashes($match[3]) : (strtolower($match[2]) == 'null' ? null : $match[2]);
}
return $values;
}
}
function indexSort($a, $b)
{
return strcmp($a->index, $b->index);
}
+2 -2
View File
@@ -6,9 +6,9 @@ class Migration_Init extends CI_Migration {
public function up()
{
//$this->load->database('system');
$this->load->database('system');
// Schemas
//$this->db->query('CREATE SCHEMA IF NOT EXISTS gis;');
$this->db->query('CREATE SCHEMA IF NOT EXISTS addon;');
}
+9 -15
View File
@@ -5,26 +5,20 @@ defined('BASEPATH') OR exit('No direct script access allowed');
class Migration_fhc30 extends CI_Migration {
public function up()
{
//$this->load->helper('file');
require_once(FCPATH.'include/basis_db.class.php');
$db = new basis_db();
//$db = $this->db;
//$db->db_query = $this->db->simple_query;
{
echo '<br/><h1>Update to FHC 3.0</h1><br/>';
$this->db=$this->load->database('system', true);
$this->load->helper('fhcdb');
$db = new basis_db($this);
require_once('./system/dbupdate_3.0.php');
}
public function down()
{
/*$this->db->simple_query('DROP SCHEMA bis;');
$this->db->simple_query('DROP SCHEMA campus;');
$this->db->simple_query('DROP SCHEMA fue;');
$this->db->simple_query('DROP SCHEMA kommune;');
$this->db->simple_query('DROP SCHEMA lehre;');
$this->db->simple_query('DROP SCHEMA sync;');
$this->db->simple_query('DROP SCHEMA system;');
$this->db->simple_query('DROP SCHEMA testtool;');
$this->db->simple_query('DROP SCHEMA wawi;');*/
/*$this->db->simple_query('DROP TABLE fue.tbl_scrumteam;');
$this->db->simple_query('DROP TABLE lehre.tbl_studienordnung;');
$this->db->simple_query('DROP TABLE lehre.tbl_studienordnung_semester;');
$this->db->simple_query('DROP TABLE lehre.tbl_studienplan;');*/
}
}
+5 -11
View File
@@ -6,17 +6,11 @@ class Migration_fhc31 extends CI_Migration {
public function up()
{
//$this->load->database('system');
if (!$this->db->table_exists('tbl_person'))
{
$this->load->helper('file');
$sqlfile = read_file('./system/fhcomplete3.0.sql');
if (!$this->db->simple_query($sqlfile))
{
echo "Error creating Basis DB-Schema!";
}
}
echo '<br/><h1>Update to FHC 3.1</h1><br/>';
$this->db=$this->load->database('system', true);
$this->load->helper('fhcdb');
$db = new basis_db($this);
require_once('./system/dbupdate_3.1.php');
}
public function down()
+5 -11
View File
@@ -6,17 +6,11 @@ class Migration_fhc32 extends CI_Migration {
public function up()
{
//$this->load->database('system');
if (!$this->db->table_exists('tbl_person'))
{
$this->load->helper('file');
$sqlfile = read_file('./system/fhcomplete3.0.sql');
if (!$this->db->simple_query($sqlfile))
{
echo "Error creating Basis DB-Schema!";
}
}
echo '<br/><h1>Update to FHC 3.2</h1><br/>';
$this->db=$this->load->database('system', true);
$this->load->helper('fhcdb');
$db = new basis_db($this);
require_once('./system/dbupdate_3.2.php');
}
public function down()
+592
View File
@@ -0,0 +1,592 @@
<?php
/**
* PHP grocery CRUD
*
* LICENSE
*
* Grocery CRUD is released with dual licensing, using the GPL v3 (license-gpl3.txt) and the MIT license (license-mit.txt).
* You don't have to do anything special to choose one license or the other and you don't have to notify anyone which license you are using.
* Please see the corresponding license file for details of these licenses.
* You are free to use, modify and distribute this software, but all copyright information must remain.
*
* @package grocery CRUD
* @copyright Copyright (c) 2010 through 2012, John Skoumbourdis
* @license https://github.com/scoumbourdis/grocery-crud/blob/master/license-grocery-crud.txt
* @version 1.4.2
* @author John Skoumbourdis <scoumbourdisj@gmail.com>
*/
// ------------------------------------------------------------------------
/**
* Grocery CRUD Model
*
*
* @package grocery CRUD
* @author John Skoumbourdis <scoumbourdisj@gmail.com>
* @version 1.5.4
* @link http://www.grocerycrud.com/documentation
*/
class Grocery_crud_model extends CI_Model {
protected $primary_key = null;
protected $table_name = null;
protected $relation = array();
protected $relation_n_n = array();
protected $primary_keys = array();
function __construct()
{
parent::__construct();
}
function db_table_exists($table_name = null)
{
return $this->db->table_exists($table_name);
}
function get_list()
{
if($this->table_name === null)
return false;
$select = "{$this->table_name}.*";
//set_relation special queries
if(!empty($this->relation))
{
foreach($this->relation as $relation)
{
list($field_name , $related_table , $related_field_title) = $relation;
$unique_join_name = $this->_unique_join_name($field_name);
$unique_field_name = $this->_unique_field_name($field_name);
if(strstr($related_field_title,'{'))
{
$related_field_title = str_replace(" ","&nbsp;",$related_field_title);
$select .= ", CONCAT('".str_replace(array('{','}'),array("',COALESCE({$unique_join_name}.",", ''),'"),str_replace("'","\\'",$related_field_title))."') as $unique_field_name";
}
else
{
$select .= ", $unique_join_name.$related_field_title AS $unique_field_name";
}
if($this->field_exists($related_field_title))
$select .= ", {$this->table_name}.$related_field_title AS {$this->table_name}.$related_field_title";
}
}
//set_relation_n_n special queries. We prefer sub queries from a simple join for the relation_n_n as it is faster and more stable on big tables.
if(!empty($this->relation_n_n))
{
$select = $this->relation_n_n_queries($select);
}
$this->db->select($select, false);
$results = $this->db->get($this->table_name)->result();
return $results;
}
public function get_row($table_name = null)
{
$table_name = $table_name === null ? $this->table_name : $table_name;
return $this->db->get($table_name)->row();
}
public function set_primary_key($field_name, $table_name = null)
{
$table_name = $table_name === null ? $this->table_name : $table_name;
$this->primary_keys[$table_name] = $field_name;
}
protected function relation_n_n_queries($select)
{
$this_table_primary_key = $this->get_primary_key();
foreach($this->relation_n_n as $relation_n_n)
{
list($field_name, $relation_table, $selection_table, $primary_key_alias_to_this_table,
$primary_key_alias_to_selection_table, $title_field_selection_table, $priority_field_relation_table) = array_values((array)$relation_n_n);
$primary_key_selection_table = $this->get_primary_key($selection_table);
$field = "";
$use_template = strpos($title_field_selection_table,'{') !== false;
$field_name_hash = $this->_unique_field_name($title_field_selection_table);
if($use_template)
{
$title_field_selection_table = str_replace(" ", "&nbsp;", $title_field_selection_table);
$field .= "CONCAT('".str_replace(array('{','}'),array("',COALESCE(",", ''),'"),str_replace("'","\\'",$title_field_selection_table))."')";
}
else
{
$field .= "$selection_table.$title_field_selection_table";
}
//Sorry Codeigniter but you cannot help me with the subquery!
$select .= ", (SELECT GROUP_CONCAT(DISTINCT $field) FROM $selection_table "
."LEFT JOIN $relation_table ON $relation_table.$primary_key_alias_to_selection_table = $selection_table.$primary_key_selection_table "
."WHERE $relation_table.$primary_key_alias_to_this_table = `{$this->table_name}`.$this_table_primary_key GROUP BY $relation_table.$primary_key_alias_to_this_table) AS $field_name";
}
return $select;
}
function order_by($order_by , $direction)
{
$this->db->order_by( $order_by , $direction );
}
function where($key, $value = NULL, $escape = TRUE)
{
$this->db->where( $key, $value, $escape);
}
function or_where($key, $value = NULL, $escape = TRUE)
{
$this->db->or_where( $key, $value, $escape);
}
function having($key, $value = NULL, $escape = TRUE)
{
$this->db->having( $key, $value, $escape);
}
function or_having($key, $value = NULL, $escape = TRUE)
{
$this->db->or_having( $key, $value, $escape);
}
function like($field, $match = '', $side = 'both')
{
$this->db->like($field, $match, $side);
}
function or_like($field, $match = '', $side = 'both')
{
$this->db->or_like($field, $match, $side);
}
function limit($value, $offset = '')
{
$this->db->limit( $value , $offset );
}
function get_total_results()
{
//set_relation_n_n special queries. We prefer sub queries from a simple join for the relation_n_n as it is faster and more stable on big tables.
if(!empty($this->relation_n_n))
{
$select = "{$this->table_name}.*";
$select = $this->relation_n_n_queries($select);
$this->db->select($select,false);
}
return $this->db->get($this->table_name)->num_rows();
}
function set_basic_table($table_name = null)
{
if( !($this->db->table_exists($table_name)) )
return false;
$this->table_name = $table_name;
return true;
}
function get_edit_values($primary_key_value)
{
$primary_key_field = $this->get_primary_key();
$this->db->where($primary_key_field,$primary_key_value);
$result = $this->db->get($this->table_name)->row();
return $result;
}
function join_relation($field_name , $related_table , $related_field_title)
{
$related_primary_key = $this->get_primary_key($related_table);
if($related_primary_key !== false)
{
$unique_name = $this->_unique_join_name($field_name);
$this->db->join( $related_table.' as '.$unique_name , "$unique_name.$related_primary_key = {$this->table_name}.$field_name",'left');
$this->relation[$field_name] = array($field_name , $related_table , $related_field_title);
return true;
}
return false;
}
function set_relation_n_n_field($field_info)
{
$this->relation_n_n[$field_info->field_name] = $field_info;
}
protected function _unique_join_name($field_name)
{
return 'j'.substr(md5($field_name),0,8); //This j is because is better for a string to begin with a letter and not with a number
}
protected function _unique_field_name($field_name)
{
return 's'.substr(md5($field_name),0,8); //This s is because is better for a string to begin with a letter and not with a number
}
function get_relation_array($field_name , $related_table , $related_field_title, $where_clause, $order_by, $limit = null, $search_like = null)
{
$relation_array = array();
$field_name_hash = $this->_unique_field_name($field_name);
$related_primary_key = $this->get_primary_key($related_table);
$select = "$related_table.$related_primary_key, ";
if(strstr($related_field_title,'{'))
{
$related_field_title = str_replace(" ", "&nbsp;", $related_field_title);
$select .= "CONCAT('".str_replace(array('{','}'),array("',COALESCE(",", ''),'"),str_replace("'","\\'",$related_field_title))."') as $field_name_hash";
}
else
{
$select .= "$related_table.$related_field_title as $field_name_hash";
}
$this->db->select($select,false);
if($where_clause !== null)
$this->db->where($where_clause);
if($where_clause !== null)
$this->db->where($where_clause);
if($limit !== null)
$this->db->limit($limit);
if($search_like !== null)
$this->db->having("$field_name_hash LIKE '%".$this->db->escape_like_str($search_like)."%'");
$order_by !== null
? $this->db->order_by($order_by)
: $this->db->order_by($field_name_hash);
$results = $this->db->get($related_table)->result();
foreach($results as $row)
{
$relation_array[$row->$related_primary_key] = $row->$field_name_hash;
}
return $relation_array;
}
function get_ajax_relation_array($search, $field_name , $related_table , $related_field_title, $where_clause, $order_by)
{
return $this->get_relation_array($field_name , $related_table , $related_field_title, $where_clause, $order_by, 10 , $search);
}
function get_relation_total_rows($field_name , $related_table , $related_field_title, $where_clause)
{
if($where_clause !== null)
$this->db->where($where_clause);
return $this->db->count_all_results($related_table);
}
function get_relation_n_n_selection_array($primary_key_value, $field_info)
{
$select = "";
$related_field_title = $field_info->title_field_selection_table;
$use_template = strpos($related_field_title,'{') !== false;;
$field_name_hash = $this->_unique_field_name($related_field_title);
if($use_template)
{
$related_field_title = str_replace(" ", "&nbsp;", $related_field_title);
$select .= "CONCAT('".str_replace(array('{','}'),array("',COALESCE(",", ''),'"),str_replace("'","\\'",$related_field_title))."') as $field_name_hash";
}
else
{
$select .= "$related_field_title as $field_name_hash";
}
$this->db->select('*, '.$select,false);
$selection_primary_key = $this->get_primary_key($field_info->selection_table);
if(empty($field_info->priority_field_relation_table))
{
if(!$use_template){
$this->db->order_by("{$field_info->selection_table}.{$field_info->title_field_selection_table}");
}
}
else
{
$this->db->order_by("{$field_info->relation_table}.{$field_info->priority_field_relation_table}");
}
$this->db->where($field_info->primary_key_alias_to_this_table, $primary_key_value);
$this->db->join(
$field_info->selection_table,
"{$field_info->relation_table}.{$field_info->primary_key_alias_to_selection_table} = {$field_info->selection_table}.{$selection_primary_key}"
);
$results = $this->db->get($field_info->relation_table)->result();
$results_array = array();
foreach($results as $row)
{
$results_array[$row->{$field_info->primary_key_alias_to_selection_table}] = $row->{$field_name_hash};
}
return $results_array;
}
function get_relation_n_n_unselected_array($field_info, $selected_values)
{
$use_where_clause = !empty($field_info->where_clause);
$select = "";
$related_field_title = $field_info->title_field_selection_table;
$use_template = strpos($related_field_title,'{') !== false;
$field_name_hash = $this->_unique_field_name($related_field_title);
if($use_template)
{
$related_field_title = str_replace(" ", "&nbsp;", $related_field_title);
$select .= "CONCAT('".str_replace(array('{','}'),array("',COALESCE(",", ''),'"),str_replace("'","\\'",$related_field_title))."') as $field_name_hash";
}
else
{
$select .= "$related_field_title as $field_name_hash";
}
$this->db->select('*, '.$select,false);
if($use_where_clause){
$this->db->where($field_info->where_clause);
}
$selection_primary_key = $this->get_primary_key($field_info->selection_table);
if(!$use_template)
$this->db->order_by("{$field_info->selection_table}.{$field_info->title_field_selection_table}");
$results = $this->db->get($field_info->selection_table)->result();
$results_array = array();
foreach($results as $row)
{
if(!isset($selected_values[$row->$selection_primary_key]))
$results_array[$row->$selection_primary_key] = $row->{$field_name_hash};
}
return $results_array;
}
function db_relation_n_n_update($field_info, $post_data ,$main_primary_key)
{
$this->db->where($field_info->primary_key_alias_to_this_table, $main_primary_key);
if(!empty($post_data))
$this->db->where_not_in($field_info->primary_key_alias_to_selection_table , $post_data);
$this->db->delete($field_info->relation_table);
$counter = 0;
if(!empty($post_data))
{
foreach($post_data as $primary_key_value)
{
$where_array = array(
$field_info->primary_key_alias_to_this_table => $main_primary_key,
$field_info->primary_key_alias_to_selection_table => $primary_key_value,
);
$this->db->where($where_array);
$count = $this->db->from($field_info->relation_table)->count_all_results();
if($count == 0)
{
if(!empty($field_info->priority_field_relation_table))
$where_array[$field_info->priority_field_relation_table] = $counter;
$this->db->insert($field_info->relation_table, $where_array);
}elseif($count >= 1 && !empty($field_info->priority_field_relation_table))
{
$this->db->update( $field_info->relation_table, array($field_info->priority_field_relation_table => $counter) , $where_array);
}
$counter++;
}
}
}
function db_relation_n_n_delete($field_info, $main_primary_key)
{
$this->db->where($field_info->primary_key_alias_to_this_table, $main_primary_key);
$this->db->delete($field_info->relation_table);
}
function get_field_types_basic_table()
{
$db_field_types = array();
foreach($this->db->query('SELECT column_name AS "Field", data_type AS "Type",
CASE WHEN indisprimary THEN '."'PRI'".' WHEN indisunique THEN '."'UNI'".' ELSE null END AS "Key", is_nullable AS "Null", NULL AS "Extra"
FROM information_schema.columns
JOIN pg_namespace ON (table_schema=nspname)
JOIN pg_class ON (pg_class.relnamespace = pg_namespace.oid AND pg_class.oid = table_name::regclass)
JOIN pg_attribute ON (pg_attribute.attrelid = pg_class.oid AND attname=column_name)
LEFT JOIN pg_index ON (indrelid = pg_class.oid AND
pg_attribute.attnum = any(pg_index.indkey))
WHERE table_name = '."'{$this->table_name}'")->result() as $db_field_type)
{
$type = explode("(",$db_field_type->Type);
$db_type = $type[0];
if(isset($type[1]))
{
if(substr($type[1],-1) == ')')
{
$length = substr($type[1],0,-1);
}
else
{
list($length) = explode(" ",$type[1]);
$length = substr($length,0,-1);
}
}
else
{
$length = '';
}
$db_field_types[$db_field_type->Field]['db_max_length'] = $length;
$db_field_types[$db_field_type->Field]['db_type'] = $db_type;
$db_field_types[$db_field_type->Field]['db_null'] = $db_field_type->Null == 'YES' ? true : false;
$db_field_types[$db_field_type->Field]['db_extra'] = $db_field_type->Extra;
$db_field_types[$db_field_type->Field]['db_key'] = $db_field_type->Key;
$db_field_types[$db_field_type->Field]['primary_key'] = $db_field_type->Key == 'PRI' ? 1 : 0;
}
$results = $this->db->field_data($this->table_name);
foreach($results as $num => $row)
{
$row = (array)$row;
$results[$num] = (object)( array_merge($row, $db_field_types[$row['name']]) );
}
return $results;
}
function get_field_types($table_name)
{
$results = $this->db->field_data($table_name);
return $results;
}
function db_update($post_array, $primary_key_value)
{
$primary_key_field = $this->get_primary_key();
return $this->db->update($this->table_name,$post_array, array( $primary_key_field => $primary_key_value));
}
function db_insert($post_array)
{
$insert = $this->db->insert($this->table_name,$post_array);
if($insert)
{
return $this->db->insert_id();
}
return false;
}
function db_delete($primary_key_value)
{
$primary_key_field = $this->get_primary_key();
if($primary_key_field === false)
return false;
$this->db->limit(1);
$this->db->delete($this->table_name,array( $primary_key_field => $primary_key_value));
if( $this->db->affected_rows() != 1)
return false;
else
return true;
}
function db_file_delete($field_name, $filename)
{
if( $this->db->update($this->table_name,array($field_name => ''),array($field_name => $filename)) )
{
return true;
}
else
{
return false;
}
}
function field_exists($field,$table_name = null)
{
if(empty($table_name))
{
$table_name = $this->table_name;
}
return $this->db->field_exists($field,$table_name);
}
function get_primary_key($table_name = null)
{
if($table_name == null)
{
if(isset($this->primary_keys[$this->table_name]))
{
return $this->primary_keys[$this->table_name];
}
if(empty($this->primary_key))
{
$fields = $this->get_field_types_basic_table();
foreach($fields as $field)
{
if($field->primary_key == 1)
{
return $field->name;
}
}
return false;
}
else
{
return $this->primary_key;
}
}
else
{
if(isset($this->primary_keys[$table_name]))
{
return $this->primary_keys[$table_name];
}
$fields = $this->get_field_types($table_name);
foreach($fields as $field)
{
/*if($field->primary_key == 1)
{
return $field->name;
}*/
}
return false;
}
}
function escape_str($value)
{
return $this->db->escape_str($value);
}
}
@@ -0,0 +1,703 @@
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Message_model extends DB_Model
{
public function __construct()
{
parent::__construct();
require_once APPPATH.'config/message.php';
//$this->load->helper('language');
$this->lang->load('message');
}
/** -----------------------------------------------------------------
* get_message() - will return a single message, including the status for specified user.
*
* @param integer $msg_id EQUIRED
* @param integer $user_id REQUIRED
* @return array
*/
function getMessage($msg_id, $user_id)
{
// Validate
if (empty($msg_id))
{
return $this->_invalid_id(MSG_ERR_INVALID_MSG_ID);
}
if (empty($user_id))
{
return $this->_invalid_id(MSG_ERR_INVALID_USER_ID);
}
$sql = 'SELECT m.*, s.status, t.subject, ' . USER_TABLE_USERNAME .
' FROM ' . $this->db->dbprefix . 'msg_messages m ' .
' JOIN ' . $this->db->dbprefix . 'msg_threads t ON (m.thread_id = t.id) ' .
' JOIN ' . $this->db->dbprefix . USER_TABLE_TABLENAME . ' ON (' . USER_TABLE_ID . ' = m.sender_id) '.
' JOIN ' . $this->db->dbprefix . 'msg_status s ON (s.message_id = m.id AND s.user_id = ? ) ' .
' WHERE m.id = ? ' ;
$result = $this->db->query($sql, array($user_id, $msg_id));
if ($result)
return $this->_success($result->result_array());
else
return $this->_general_error();
}
/** -----------------------------------------------------------------
* Get a Full Thread
* get_full_thread() - will return a entire thread, including the status for specified user.
*
* @param integer $thread_id REQUIRED
* @param integer $user_id REQUIRED
* @param boolean $full_thread OPTIONAL - If true, user will also see messages from thread posted BEFORE user became participant
* @param string $order_by OPTIONAL
* @return array
*/
function get_full_thread($thread_id, $user_id, $full_thread = FALSE, $order_by = 'ASC')
{
// Validate
if (empty($thread_id))
{
return $this->_invalid_id(MSG_ERR_INVALID_THREAD_ID);
}
if (empty($user_id))
{
return $this->_invalid_id(MSG_ERR_INVALID_USER_ID);
}
$sql = 'SELECT m.*, s.status, t.subject, '.USER_TABLE_USERNAME .
' FROM ' . $this->db->dbprefix . 'msg_participants p ' .
' JOIN ' . $this->db->dbprefix . 'msg_threads t ON (t.id = p.thread_id) ' .
' JOIN ' . $this->db->dbprefix . 'msg_messages m ON (m.thread_id = t.id) ' .
' JOIN ' . $this->db->dbprefix . USER_TABLE_TABLENAME . ' ON (' . USER_TABLE_ID . ' = m.sender_id) '.
' JOIN ' . $this->db->dbprefix . 'msg_status s ON (s.message_id = m.id AND s.user_id = ? ) ' .
' WHERE p.user_id = ? ' .
' AND p.thread_id = ? ';
if ( ! $full_thread)
{
$sql .= ' AND m.cdate >= p.cdate';
}
$sql .= ' ORDER BY m.cdate ' . $order_by;
$result = $this->db->query($sql, array($user_id, $user_id, $thread_id));
if ($result)
return $this->_success($result->result_array());
else
return $this->_general_error();
}
/** -----------------------------------------------------------------
* get_all_threads() - will return all threads for user, including the status for specified user.
*
* @param integer $user_id REQUIRED
* @param boolean $full_thread OPTIONAL - If true, user will also see messages from thread posted BEFORE user became participant
* @param string $order_by OPTIONAL
* @return array
*/
function get_all_threads($user_id, $full_thread = FALSE, $order_by = 'asc')
{
if (empty($user_id))
{
return $this->_invalid_id(MSG_ERR_INVALID_USER_ID);
}
$sql = 'SELECT m.*, s.status, t.subject, '.USER_TABLE_USERNAME .
' FROM ' . $this->db->dbprefix . 'msg_participants p ' .
' JOIN ' . $this->db->dbprefix . 'msg_threads t ON (t.id = p.thread_id) ' .
' JOIN ' . $this->db->dbprefix . 'msg_messages m ON (m.thread_id = t.id) ' .
' JOIN ' . $this->db->dbprefix . USER_TABLE_TABLENAME . ' ON (' . USER_TABLE_ID . ' = m.sender_id) '.
' JOIN ' . $this->db->dbprefix . 'msg_status s ON (s.message_id = m.id AND s.user_id = ? ) ' .
' WHERE p.user_id = ? ' ;
if (!$full_thread)
{
$sql .= ' AND m.cdate >= p.cdate';
}
$sql .= ' ORDER BY t.id ' . $order_by. ', m.cdate '. $order_by;
$result = $this->db->query($sql, array($user_id, $user_id));
if ($result)
return $this->_success($result->result_array());
else
return $this->_general_error();
}
/** -----------------------------------------------------------------
* Get all Threads Grouped
* get_all_threads_grouped() - will return all threads for user, including the status for specified user.
* - messages are grouped in threads.
*
* @param integer $user_id REQUIRED
* @param boolean $full_thread OPTIONAL - If true, user will also see messages from thread posted BEFORE user became participant
* @param string $order_by OPTIONAL
* @return array
*/
function get_all_threads_grouped($user_id, $full_thread = FALSE, $order_by = 'ASC')
{
if (empty($user_id))
{
return $this->_invalid_id(MSG_ERR_INVALID_USER_ID);
}
$message = $this->get_all_threads($user_id, $full_thread, $order_by);
if (is_array($message))
{
$threads = array();
foreach ($message as $msg)
{
if ( ! isset($threads[$msg['thread_id']]))
{
$threads[$msg['thread_id']]['thread_id'] = $msg['thread_id'];
$threads[$msg['thread_id']]['messages'] = array($msg);
}
else
{
$threads[$msg['thread_id']]['messages'][] = $msg;
}
}
return $this->_success($threads);
}
// General Error Occurred
return $this->_general_error();
}
/** -----------------------------------------------------------------
* Change Message Status
* update_message_status() - will change status on message for particular user
*
* @param integer $msg_id REQUIRED
* @param integer $user_id REQUIRED
* @param integer $status_id REQUIRED - should come from config/message.php list of constants
* @return array
*/
function update_message_status($msg_id, $user_id, $status_id)
{
// Validate
if (empty($msg_id))
{
return $this->_invalid_id(MSG_ERR_INVALID_MSG_ID);
}
if (empty($user_id))
{
return $this->_invalid_id(MSG_ERR_INVALID_USER_ID);
}
if (empty($status_id))
{
return $this->_invalid_id(MSG_ERR_INVALID_STATUS_ID);
}
$this->db->where(array('message_id' => $msg_id, 'user_id' => $user_id ));
$this->db->update('msg_status', array('status' => $status_id ));
$rows = $this->db->affected_rows();
if ($rows == 1)
return $this->_success($rows, MSG_STATUS_UPDATE);
else
return $this->_general_error();
}
/** -----------------------------------------------------------------
* Add a Participant
* add_participant() - adds user to existing thread
*
* @param integer $thread_id REQUIRED
* @param integer $user_id REQUIRED
* @return array
*/
function add_participant($thread_id, $user_id)
{
if (empty($thread_id))
{
return $this->_invalid_id(MSG_ERR_INVALID_THREAD_ID);
}
if (empty($user_id))
{
return $this->_invalid_id(MSG_ERR_INVALID_USER_ID);
}
if ( ! $this->valid_new_participant($thread_id, $user_id))
{
$this->_participant_error(MSG_ERR_PARTICIPANT_EXISTS);
}
if ( ! $this->application_user($user_id))
{
$this->_participant_error(MSG_ERR_PARTICIPANT_NONSYSTEM);
}
$this->db->trans_start();
$participants[] = array('thread_id' => $thread_id,'user_id' => $user_id);
$this->_insert_participants($participants);
// Get Messages by Thread
$messages = $this->_get_messages_by_thread_id($thread_id);
foreach ($messages as $message)
{
$statuses[] = array('message_id' => $message['id'], 'user_id' => $user_id, 'status' => MSG_STATUS_UNREAD);
}
$this->_insert_statuses($statuses);
$this->db->trans_complete();
if ($this->db->trans_status() === FALSE)
{
$this->db->trans_rollback();
return $this->_general_error();
}
return $this->_success(NULL, MSG_PARTICIPANT_ADDED);
}
/** ---------------------------------------------------------------
* Remove a Participant
* remove_participant() - removes user from existing thread
*
* @param integer $thread_id REQUIRED
* @param integer $user_id REQUIRED
* @return array
*/
function remove_participant($thread_id, $user_id)
{
// Validate
if (empty($thread_id))
{
return $this->_invalid_id(MSG_ERR_INVALID_THREAD_ID);
}
if (empty($user_id))
{
return $this->_invalid_id(MSG_ERR_INVALID_USER_ID);
}
$this->db->trans_start();
$this->_delete_participant($thread_id, $user_id);
$this->_delete_statuses($thread_id, $user_id);
$this->db->trans_complete();
if ($this->db->trans_status() === FALSE)
{
$this->db->trans_rollback();
return $this->_success(NULL, MSG_PARTICIPANT_REMOVED);
}
return $this->_general_error();
}
/** ----------------------------------------------------------------
* Send a New Message
* send_new_message() - sends new internal message. This function will create a new thread
*
* @param integer $sender_id REQUIRED
* @param mixed $recipients REQUIRED - a single integer or an array of integers, representing user_ids
* @param string $subject
* @param string $body
* @param integer $priority
* @return array
*/
function send_new_message($sender_id, $recipients, $subject, $body, $priority)
{
// Validate
if (empty($sender_id))
{
return $this->_invalid_id(MSG_ERR_INVALID_SENDER_ID);
}
if (empty($recipients))
{
return array(
'err' => 1,
'code' => MSG_ERR_INVALID_RECIPIENTS,
'msg' => lang('mahana_'.MSG_ERR_INVALID_RECIPIENTS)
);
}
$this->db->trans_start();
$thread_id = $this->_insert_thread($subject);
$msg_id = $this->_insert_message($thread_id, $sender_id, $body, $priority);
// Create batch inserts
$participants[] = array('thread_id' => $thread_id,'user_id' => $sender_id);
$statuses[] = array('message_id' => $msg_id, 'user_id' => $sender_id,'status' => MSG_STATUS_READ);
if ( ! is_array($recipients) )
{
if ($sender_id != $recipients)
{
$participants[] = array('thread_id' => $thread_id,'user_id' => $recipients);
$statuses[] = array('message_id' => $msg_id, 'user_id' => $recipients, 'status' => MSG_STATUS_UNREAD);
}
}
else
{
foreach ($recipients as $recipient)
{
if ($sender_id != $recipient)
{
$participants[] = array('thread_id' => $thread_id,'user_id' => $recipient);
$statuses[] = array('message_id' => $msg_id, 'user_id' => $recipient, 'status' => MSG_STATUS_UNREAD);
}
}
}
$participants=array_unique($participants, SORT_REGULAR); // Clean if sender and recipient is the same
$this->_insert_participants($participants);
$this->_insert_statuses($statuses);
$this->db->trans_complete();
if ($this->db->trans_status() === FALSE)
{
$this->db->trans_rollback();
return $this->_general_error();
}
return $this->_success($thread_id, MSG_MESSAGE_SENT);
}
/** --------------------------------------------------------------
* Reply to Message
* reply_to_message() - replies to internal message. This function will NOT create a new thread or participant list
*
* @param integer $msg_id REQUIRED
* @param integer $sender_id REQUIRED
* @param string $subject
* @param string $body
* @param integer $priority
* @return array
*/
function reply_to_message($reply_msg_id, $sender_id, $body, $priority)
{
// Validate
if (empty($sender_id))
{
return $this->_invalid_id(MSG_ERR_INVALID_SENDER_ID);
}
if (empty($msg_id))
{
return $this->_invalid_id(MSG_ERR_INVALID_MSG_ID);
}
$this->db->trans_start();
// Get the thread id to keep messages together
if ( ! $thread_id = $this->_get_thread_id_from_message($reply_msg_id))
{
return FALSE;
}
// Add this message
$msg_id = $this->_insert_message($thread_id, $sender_id, $body, $priority);
if ($recipients = $this->_get_thread_participants($thread_id, $sender_id))
{
$statuses[] = array('message_id' => $msg_id, 'user_id' => $sender_id,'status' => MSG_STATUS_READ);
foreach ($recipients as $recipient)
{
$statuses[] = array('message_id' => $msg_id, 'user_id' => $recipient['user_id'], 'status' => MSG_STATUS_UNREAD);
}
$this->_insert_statuses($statuses);
}
$this->db->trans_complete();
if ($this->db->trans_status() === FALSE)
{
$this->db->trans_rollback();
return $this->_general_error();
}
return $this->_success($msg_id, MSG_MESSAGE_SENT);
}
/** ----------------------------------------------------------------
* Get Participant List
* get_participant_list() - returns list of participants on given thread. If sender_id set, sender_id will be left off list
*
* @param integer $thread_id REQUIRED
* @param integer $sender_id REQUIRED
* @return array
*/
function get_participant_list($thread_id, $sender_id = 0)
{
// Validate
if (empty($thread_id))
{
return $this->_invalid_id(MSG_ERR_INVALID_THREAD_ID);
}
if ($results = $this->_get_thread_participants($thread_id, $sender_id))
return $this->_success($results);
else
return $this->_general_error();
}
/** ----------------------------------------------------------------
* Get Message Count
* get_msg_count() - returns integer with count of message for user, by status. defaults to new messages
*
* @param integer $user_id REQUIRED
* @param integer $status_id OPTIONAL - defaults to "Unread"
* @return array
*/
function get_msg_count($user_id, $status_id = MSG_STATUS_UNREAD)
{
if (empty($user_id))
{
return $this->_invalid_id(MSG_ERR_INVALID_USER_ID);
}
$result = $this->db->select('COUNT(*) AS msg_count')->where(array('user_id' => $user_id, 'status' => $status_id ))->get('msg_status');
$rows = $result->row()->msg_count;
if (is_numeric($rows))
return $this->_success($rows);
else
return $this->_general_error();
}
// ------------------------------------------------------------------------
/**
* Valid New Participant - because of CodeIgniter's DB Class return style,
* it is safer to check for uniqueness first
*
* @param integer $thread_id
* @param integer $user_id
* @return boolean
*/
function valid_new_participant($thread_id, $user_id)
{
$sql = 'SELECT COUNT(*) AS count ' .
' FROM ' . $this->db->dbprefix . 'msg_participants p ' .
' WHERE p.thread_id = ? ' .
' AND p.user_id = ? ';
$query = $this->db->query($sql, array($thread_id, $user_id));
if ($query->row()->count)
{
return FALSE;
}
return TRUE;
}
/** ---------------------------------------------------------------
* Application User
*
* @param integer $user_id`
* @return boolean
*/
function application_user($user_id)
{
$sql = 'SELECT COUNT(*) AS count ' .
' FROM ' . $this->db->dbprefix . USER_TABLE_TABLENAME .
' WHERE ' . USER_TABLE_ID . ' = ?' ;
$query = $this->db->query($sql, array($user_id));
if ($query->row()->count)
{
return TRUE;
}
return FALSE;
}
// ------------------------------------------------------------------------
// Private Functions from here out!
// ------------------------------------------------------------------------
/**
* Insert Thread
*
* @param string $subject
* @return integer
*/
private function _insert_thread($subject)
{
$insert_id = $this->db->insert('msg_threads', array('subject' => $subject));
return $this->db->insert_id();
}
/**
* Insert Message
*
* @param integer $thread_id
* @param integer $sender_id
* @param string $body
* @param integer $priority
* @return integer
*/
private function _insert_message($thread_id, $sender_id, $body, $priority)
{
$insert['thread_id'] = $thread_id;
$insert['sender_id'] = $sender_id;
$insert['body'] = $body;
$insert['priority'] = $priority;
$insert_id = $this->db->insert('msg_messages', $insert);
return $this->db->insert_id();
}
/**
* Insert Participants
*
* @param array $participants
* @return bool
*/
private function _insert_participants($participants)
{
return $this->db->insert_batch('msg_participants', $participants);
}
/**
* Insert Statuses
*
* @param array $statuses
* @return bool
*/
private function _insert_statuses($statuses)
{
return $this->db->insert_batch('msg_status', $statuses);
}
/**
* Get Thread ID from Message
*
* @param integer $msg_id
* @return integer
*/
private function _get_thread_id_from_message($msg_id)
{
$query = $this->db->select('thread_id')->get_where('msg_messages', array('id' => $msg_id));
if ($query->num_rows())
{
return $query->row()->thread_id;
}
return 0;
}
/**
* Get Messages by Thread
*
* @param integer $thread_id
* @return array
*/
private function _get_messages_by_thread_id($thread_id)
{
$query = $this->db->get_where('msg_messages', array('thread_id' => $thread_id));
return $query->result_array();
}
/**
* Get Thread Particpiants
*
* @param integer $thread_id
* @param integer $sender_id
* @return array
*/
private function _get_thread_participants($thread_id, $sender_id = 0)
{
$array['thread_id'] = $thread_id;
if ($sender_id) // If $sender_id 0, no one to exclude
{
$array['msg_participants.user_id != '] = $sender_id;
}
$this->db->select('msg_participants.user_id, '.USER_TABLE_USERNAME, FALSE);
$this->db->join(USER_TABLE_TABLENAME, 'msg_participants.user_id = ' . USER_TABLE_ID);
$query = $this->db->get_where('msg_participants', $array);
return $query->result_array();
}
/**
* Delete Participant
*
* @param integer $thread_id
* @param integer $user_id
* @return boolean
*/
private function _delete_participant($thread_id, $user_id)
{
$this->db->delete('msg_participants', array('thread_id' => $thread_id, 'user_id' => $user_id));
if ($this->db->affected_rows() > 0)
{
return TRUE;
}
return FALSE;
}
/**
* Delete Statuses
*
* @param integer $thread_id
* @param integer $user_id
* @return boolean
*/
private function _delete_statuses($thread_id, $user_id)
{
$sql = 'DELETE s FROM msg_status s ' .
' JOIN ' . $this->db->dbprefix . 'msg_messages m ON (m.id = s.message_id) ' .
' WHERE m.thread_id = ? ' .
' AND s.user_id = ? ';
$query = $this->db->query($sql, array($thread_id, $user_id));
return TRUE;
}
/** ---------------------------------------------------------------
* Error Particpant Exists
*
* @return array
*/
private function _participant_error($error = '')
{
return array(
'err' => 1,
'code' => 1,
'msg' => lang('mahana_' . $error)
);
}
}
/* end of file message_model.php */
@@ -0,0 +1,511 @@
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Message_model extends DB_Model
{
/**
* Send a New Message
*
* @param integer $sender_id
* @param mixed $recipients A single integer or an array of integers
* @param string $subject
* @param string $body
* @param integer $priority
* @return integer $new_thread_id
*/
function send_new_message($sender_id, $recipients, $subject, $body, $priority)
{
$this->db->trans_start();
$thread_id = $this->_insert_thread($subject);
$msg_id = $this->_insert_message($thread_id, $sender_id, $body, $priority);
// Create batch inserts
$participants[] = array('thread_id' => $thread_id,'user_id' => $sender_id);
$statuses[] = array('message_id' => $msg_id, 'user_id' => $sender_id,'status' => MSG_STATUS_READ);
if ( ! is_array($recipients))
{
$participants[] = array('thread_id' => $thread_id,'user_id' => $recipients);
$statuses[] = array('message_id' => $msg_id, 'user_id' => $recipients, 'status' => MSG_STATUS_UNREAD);
}
else
{
foreach ($recipients as $recipient)
{
$participants[] = array('thread_id' => $thread_id,'user_id' => $recipient);
$statuses[] = array('message_id' => $msg_id, 'user_id' => $recipient, 'status' => MSG_STATUS_UNREAD);
}
}
$this->_insert_participants($participants);
$this->_insert_statuses($statuses);
$this->db->trans_complete();
if ($this->db->trans_status() === FALSE)
{
$this->db->trans_rollback();
return FALSE;
}
return $thread_id;
}
// ------------------------------------------------------------------------
/**
* Reply to Message
*
* @param integer $reply_msg_id
* @param integer $sender_id
* @param string $body
* @param integer $priority
* @return integer $new_msg_id
*/
function reply_to_message($reply_msg_id, $sender_id, $body, $priority)
{
$this->db->trans_start();
// Get the thread id to keep messages together
if ( ! $thread_id = $this->_get_thread_id_from_message($reply_msg_id))
{
return FALSE;
}
// Add this message
$msg_id = $this->_insert_message($thread_id, $sender_id, $body, $priority);
if ($recipients = $this->_get_thread_participants($thread_id, $sender_id))
{
$statuses[] = array('message_id' => $msg_id, 'user_id' => $sender_id,'status' => MSG_STATUS_READ);
foreach ($recipients as $recipient)
{
$statuses[] = array('message_id' => $msg_id, 'user_id' => $recipient['user_id'], 'status' => MSG_STATUS_UNREAD);
}
$this->_insert_statuses($statuses);
}
$this->db->trans_complete();
if ($this->db->trans_status() === FALSE)
{
$this->db->trans_rollback();
return FALSE;
}
return $msg_id;
}
// ------------------------------------------------------------------------
/**
* Get a Single Message
*
* @param integer $msg_id
* @param integer $user_id
* @return array
*/
function get_message($msg_id, $user_id)
{
$sql = 'SELECT m.*, s.status, t.subject, ' . USER_TABLE_USERNAME .
' FROM ' . $this->db->dbprefix . 'msg_messages m ' .
' JOIN ' . $this->db->dbprefix . 'msg_threads t ON (m.thread_id = t.id) ' .
' JOIN ' . $this->db->dbprefix . USER_TABLE_TABLENAME . ' ON (' . USER_TABLE_ID . ' = m.sender_id) '.
' JOIN ' . $this->db->dbprefix . 'msg_status s ON (s.message_id = m.id AND s.user_id = ? ) ' .
' WHERE m.id = ? ' ;
$query = $this->db->query($sql, array($user_id, $msg_id));
return $query->result_array();
}
// ------------------------------------------------------------------------
/**
* Get a Full Thread
*
* @param integer $thread_id
* @param integer $user_id
* @param boolean $full_thread
* @param string $order_by
* @return array
*/
function get_full_thread($thread_id, $user_id, $full_thread = FALSE, $order_by = 'asc')
{
$sql = 'SELECT m.*, s.status, t.subject, '.USER_TABLE_USERNAME .
' FROM ' . $this->db->dbprefix . 'msg_participants p ' .
' JOIN ' . $this->db->dbprefix . 'msg_threads t ON (t.id = p.thread_id) ' .
' JOIN ' . $this->db->dbprefix . 'msg_messages m ON (m.thread_id = t.id) ' .
' JOIN ' . $this->db->dbprefix . USER_TABLE_TABLENAME . ' ON (' . USER_TABLE_ID . ' = m.sender_id) '.
' JOIN ' . $this->db->dbprefix . 'msg_status s ON (s.message_id = m.id AND s.user_id = ? ) ' .
' WHERE p.user_id = ? ' .
' AND p.thread_id = ? ';
if ( ! $full_thread)
{
$sql .= ' AND m.cdate >= p.cdate';
}
$sql .= ' ORDER BY m.cdate ' . $order_by;
$query = $this->db->query($sql, array($user_id, $user_id, $thread_id));
return $query->result_array();
}
// ------------------------------------------------------------------------
/**
* Get All Threads
*
* @param integer $user_id
* @param boolean $full_thread
* @param string $order_by
* @return array
*/
function get_all_threads($user_id, $full_thread = FALSE, $order_by = 'asc')
{
$sql = 'SELECT m.*, s.status, t.subject, '.USER_TABLE_USERNAME .
' FROM ' . $this->db->dbprefix . 'msg_participants p ' .
' JOIN ' . $this->db->dbprefix . 'msg_threads t ON (t.id = p.thread_id) ' .
' JOIN ' . $this->db->dbprefix . 'msg_messages m ON (m.thread_id = t.id) ' .
' JOIN ' . $this->db->dbprefix . USER_TABLE_TABLENAME . ' ON (' . USER_TABLE_ID . ' = m.sender_id) '.
' JOIN ' . $this->db->dbprefix . 'msg_status s ON (s.message_id = m.id AND s.user_id = ? ) ' .
' WHERE p.user_id = ? ' ;
if (!$full_thread)
{
$sql .= ' AND m.cdate >= p.cdate';
}
$sql .= ' ORDER BY t.id ' . $order_by. ', m.cdate '. $order_by;
$query = $this->db->query($sql, array($user_id, $user_id));
return $query->result_array();
}
// ------------------------------------------------------------------------
/**
* Change Message Status
*
* @param integer $msg_id
* @param integer $user_id
* @param integer $status_id
* @return integer
*/
function update_message_status($msg_id, $user_id, $status_id)
{
$this->db->where(array('message_id' => $msg_id, 'user_id' => $user_id ));
$this->db->update('msg_status', array('status' => $status_id ));
return $this->db->affected_rows();
}
// ------------------------------------------------------------------------
/**
* Add a Participant
*
* @param integer $thread_id
* @param integer $user_id
* @return boolean
*/
function add_participant($thread_id, $user_id)
{
$this->db->trans_start();
$participants[] = array('thread_id' => $thread_id,'user_id' => $user_id);
$this->_insert_participants($participants);
// Get Messages by Thread
$messages = $this->_get_messages_by_thread_id($thread_id);
foreach ($messages as $message)
{
$statuses[] = array('message_id' => $message['id'], 'user_id' => $user_id, 'status' => MSG_STATUS_UNREAD);
}
$this->_insert_statuses($statuses);
$this->db->trans_complete();
if ($this->db->trans_status() === FALSE)
{
$this->db->trans_rollback();
return FALSE;
}
return TRUE;
}
// ------------------------------------------------------------------------
/**
* Remove a Participant
*
* @param integer $thread_id
* @param integer $user_id
* @return boolean
*/
function remove_participant($thread_id, $user_id)
{
$this->db->trans_start();
$this->_delete_participant($thread_id, $user_id);
$this->_delete_statuses($thread_id, $user_id);
$this->db->trans_complete();
if ($this->db->trans_status() === FALSE)
{
$this->db->trans_rollback();
return FALSE;
}
return TRUE;
}
// ------------------------------------------------------------------------
/**
* Valid New Participant - because of CodeIgniter's DB Class return style,
* it is safer to check for uniqueness first
*
* @param integer $thread_id
* @param integer $user_id
* @return boolean
*/
function valid_new_participant($thread_id, $user_id)
{
$sql = 'SELECT COUNT(*) AS count ' .
' FROM ' . $this->db->dbprefix . 'msg_participants p ' .
' WHERE p.thread_id = ? ' .
' AND p.user_id = ? ';
$query = $this->db->query($sql, array($thread_id, $user_id));
if ($query->row()->count)
{
return FALSE;
}
return TRUE;
}
// ------------------------------------------------------------------------
/**
* Application User
*
* @param integer $user_id`
* @return boolean
*/
function application_user($user_id)
{
$sql = 'SELECT COUNT(*) AS count ' .
' FROM ' . $this->db->dbprefix . USER_TABLE_TABLENAME .
' WHERE ' . USER_TABLE_ID . ' = ?' ;
$query = $this->db->query($sql, array($user_id));
if ($query->row()->count)
{
return TRUE;
}
return FALSE;
}
// ------------------------------------------------------------------------
/**
* Get Participant List
*
* @param integer $thread_id
* @param integer $sender_id
* @return mixed
*/
function get_participant_list($thread_id, $sender_id = 0)
{
if ($results = $this->_get_thread_participants($thread_id, $sender_id))
{
return $results;
}
return FALSE;
}
// ------------------------------------------------------------------------
/**
* Get Message Count
*
* @param integer $user_id
* @param integer $status_id
* @return integer
*/
function get_msg_count($user_id, $status_id = MSG_STATUS_UNREAD)
{
$query = $this->db->select('COUNT(*) AS msg_count')->where(array('user_id' => $user_id, 'status' => $status_id ))->get('msg_status');
return $query->row()->msg_count;
}
// ------------------------------------------------------------------------
// Private Functions from here out!
// ------------------------------------------------------------------------
/**
* Insert Thread
*
* @param string $subject
* @return integer
*/
private function _insert_thread($subject)
{
$insert_id = $this->db->insert('msg_threads', array('subject' => $subject));
return $this->db->insert_id();
}
/**
* Insert Message
*
* @param integer $thread_id
* @param integer $sender_id
* @param string $body
* @param integer $priority
* @return integer
*/
private function _insert_message($thread_id, $sender_id, $body, $priority)
{
$insert['thread_id'] = $thread_id;
$insert['sender_id'] = $sender_id;
$insert['body'] = $body;
$insert['priority'] = $priority;
$insert_id = $this->db->insert('msg_messages', $insert);
return $this->db->insert_id();
}
/**
* Insert Participants
*
* @param array $participants
* @return bool
*/
private function _insert_participants($participants)
{
return $this->db->insert_batch('msg_participants', $participants);
}
/**
* Insert Statuses
*
* @param array $statuses
* @return bool
*/
private function _insert_statuses($statuses)
{
return $this->db->insert_batch('msg_status', $statuses);
}
/**
* Get Thread ID from Message
*
* @param integer $msg_id
* @return integer
*/
private function _get_thread_id_from_message($msg_id)
{
$query = $this->db->select('thread_id')->get_where('msg_messages', array('id' => $msg_id));
if ($query->num_rows())
{
return $query->row()->thread_id;
}
return 0;
}
/**
* Get Messages by Thread
*
* @param integer $thread_id
* @return array
*/
private function _get_messages_by_thread_id($thread_id)
{
$query = $this->db->get_where('msg_messages', array('thread_id' => $thread_id));
return $query->result_array();
}
/**
* Get Thread Particpiants
*
* @param integer $thread_id
* @param integer $sender_id
* @return array
*/
private function _get_thread_participants($thread_id, $sender_id = 0)
{
$array['thread_id'] = $thread_id;
if ($sender_id) // If $sender_id 0, no one to exclude
{
$array['msg_participants.user_id != '] = $sender_id;
}
$this->db->select('msg_participants.user_id, '.USER_TABLE_USERNAME, FALSE);
$this->db->join(USER_TABLE_TABLENAME, 'msg_participants.user_id = ' . USER_TABLE_ID);
$query = $this->db->get_where('msg_participants', $array);
return $query->result_array();
}
/**
* Delete Participant
*
* @param integer $thread_id
* @param integer $user_id
* @return boolean
*/
private function _delete_participant($thread_id, $user_id)
{
$this->db->delete('msg_participants', array('thread_id' => $thread_id, 'user_id' => $user_id));
if ($this->db->affected_rows() > 0)
{
return TRUE;
}
return FALSE;
}
/**
* Delete Statuses
*
* @param integer $thread_id
* @param integer $user_id
* @return boolean
*/
private function _delete_statuses($thread_id, $user_id)
{
$sql = 'DELETE s FROM msg_status s ' .
' JOIN ' . $this->db->dbprefix . 'msg_messages m ON (m.id = s.message_id) ' .
' WHERE m.thread_id = ? ' .
' AND s.user_id = ? ';
$query = $this->db->query($sql, array($thread_id, $user_id));
return TRUE;
}
}
/* end of file mahana_model.php */
+47
View File
@@ -0,0 +1,47 @@
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Seed_Person
{
public function seed($limit = 25)
{
echo "Seeding $limit persons ";
$this->fhc =& get_instance();
$this->fhc->load->model('person/Person_model');
for ($i = 0; $i < $limit; $i++)
{
echo ".";
$data = array(
// 'username' => $this->faker->unique()->userName, // get a unique nickname
'vorname' => $this->fhc->faker->firstName,
'vornamen' => $this->fhc->faker->firstName,
'nachname' => $this->fhc->faker->lastName,
//'address' => $this->faker->streetAddress,
'gebort' => $this->fhc->faker->city,
//'state' => $this->faker->state,
//'country' => $this->faker->country,
//'postcode' => $this->faker->postcode,
//'email' => $this->faker->email,
//'email_verified' => mt_rand(0, 1) ? '0' : '1',
//'phone' => $this->faker->phoneNumber,
'gebdatum' => $this->fhc->faker->dateTimeThisCentury->format('Y-m-d H:i:s'),
//'registration_date' => $this->faker->dateTimeThisYear->format('Y-m-d H:i:s'),
//'ip_address' => mt_rand(0, 1) ? $this->faker->ipv4 : $this->faker->ipv6,
);
$this->fhc->Person_model->insert($data);
}
echo PHP_EOL;
}
public function truncate()
{
//$this->db->query('EMPTY TABLE public.person;');
}
}
+1 -1
View File
@@ -1,4 +1,4 @@
<frameset rows="55px,*" frameborder="0" framespacing="0">
<frameset id="frameset-vilesci" rows="55px,*" frameborder="0" framespacing="0">
<frame src="<?php echo base_url('vilesci/top.php')?>" id="top" name="top" scrolling="No"/>
<frameset border="4" frameborder="1" framespacing="0" cols="200px,*" >
<frame style="border-right: 3px; border-right-style:solid; border-right-color: grey;" src="<?php echo base_url('vilesci/left.php')?>" id="nav" name="nav" />
+10
View File
@@ -0,0 +1,10 @@
<html>
<head>
<title>403 Forbidden</title>
</head>
<body>
<p>Directory access is forbidden.</p>
</body>
</html>
@@ -0,0 +1,33 @@
<?php
$language_alias = array(
'afrikaans' => 'af',
'arabic' => 'ar',
'bengali' => 'bn', // Timepicker is not avaliable yet
'bulgarian' => 'bg',
'chinese' => 'zh-cn',
'czech' => 'cs',
'danish' => 'da', // Timepicker is not avaliable yet
'dutch' => 'nl',
'french' => 'fr',
'german' => 'de',
'greek' => 'el',
'hungarian' => 'hu',
'indonesian' => 'id',
'italian' => 'it',
'japanese' => 'ja',
'korean' => 'ko',
'norwegian' => 'no',
'persian' => 'fa', // Timepicker is not avaliable yet
'polish' => 'pl',
'pt-br.portuguese' => 'pt-br',
'pt-pt.portuguese' => 'pt',
'romanian' => 'ro',
'russian' => 'ru',
'slovak' => 'sk',
'spanish' => 'es',
'thai' => 'th', // Timepicker is not avaliable yet
'turkish' => 'tr',
'ukrainian' => 'uk',
'vietnamese' => 'vi'
);
@@ -0,0 +1,169 @@
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
/*
| -------------------------------------------------------------------
| Transliteration characters
| -------------------------------------------------------------------
| This file based on ./application/config/foreign_chars.php file
| of Codeigniter's Framework and contains an array of foreign
| characters for transliteration conversion used by grocery CRUD library
|
*/
$translit_characters = array(
// Aa
'/Α|Ά|А|À|Á|Â|Ã|Ä|Å|Ǻ|Ā|Ă|Ą|Ǎ/' => 'A',
'/α|ά|а|à|á|â|ã|å|ǻ|ā|ă|ą|ǎ|ª/' => 'a',
// Bb
'/Β|Б/' => 'B',
'/β|б/' => 'b',
// Cc
'/Ç|Ć|Ĉ|Ċ|Č/' => 'C',
'/ç|ć|ĉ|ċ|č/' => 'c',
// Dd
'/Δ|Д|Ð|Ď|Đ/' => 'D',
'/δ|д|ð|ď|đ/' => 'd',
// Ee
'/Ε|Έ|Е|Э|Є|È|É|Ê|Ë|Ē|Ĕ|Ė|Ę|Ě/' => 'E',
'/ε|έ|е|э|є|è|é|ê|ë|ē|ĕ|ė|ę|ě/' => 'e',
// Ff
'/Φ|Ф/' => 'F',
'/φ|ф|ƒ/' => 'f',
// Gg
'/Γ|Г|Ĝ|Ğ|Ġ|Ģ/' => 'G',
'/γ|г|ĝ|ğ|ġ|ģ/' => 'g',
// Hh
'/Х|Ĥ|Ħ/' => 'H',
'/х|ĥ|ħ/' => 'h',
// Ii
'/Η|Ή|Ι|Ί|И|Ы|І|Ї|Ì|Í|Î|Ï|Ĩ|Ī|Ĭ|Ǐ|Į|İ/' => 'I',
'/η|ή|ι|ί|и|ы|і|ї|ì|í|î|ï|ĩ|ī|ĭ|ǐ|į|ı/' => 'i',
// Jj
'/Ĵ/' => 'J',
'/ĵ/' => 'j',
// Kk
'/Κ|К|Ķ/' => 'K',
'/κ|к|ķ/' => 'k',
// Ll
'/Λ|Л|Ĺ|Ļ|Ľ|Ŀ|Ł/' => 'L',
'/λ|л|ĺ|ļ|ľ|ŀ|ł/' => 'l',
// Mm
'/Μ|М/' => 'M',
'/μ|м/' => 'm',
// Nn
'/Ν|Н|Ñ|Ń|Ņ|Ň/' => 'N',
'/ν|н|ñ|ń|ņ|ň|ʼn/' => 'n',
// Oo
'/Ο|Ό|О|Ò|Ó|Ô|Õ|Ō|Ŏ|Ǒ|Ő|Ơ|Ø|Ǿ/' => 'O',
'/ο|ό|о|ò|ó|ô|õ|ō|ŏ|ǒ|ő|ơ|ø|ǿ|º/' => 'o',
// Pp
'/Π|П/' => 'P',
'/π|п/' => 'p',
// Qq
// '//' => 'Q',
// '//' => 'q',
// Rr
'/Ρ|Р|Ŕ|Ŗ|Ř/' => 'R',
'/ρ|р|ŕ|ŗ|ř/' => 'r',
// Ss
'/Σ|С|Ś|Ŝ|Ş|Š/' => 'S',
'/σ|ς|с|ś|ŝ|ş|š|ſ/' => 's',
// Tt
'/Τ|Т|Ţ|Ť|Ŧ/' => 'T',
'/τ|т|ţ|ť|ŧ/' => 't',
// Uu
'/У|Ù|Ú|Û|Ũ|Ū|Ŭ|Ů|Ű|Ų|Ư|Ǔ|Ǖ|Ǘ|Ǚ|Ǜ/' => 'U',
'/у|ù|ú|û|ũ|ū|ŭ|ů|ű|ų|ư|ǔ|ǖ|ǘ|ǚ|ǜ/' => 'u',
// Vv
'/В/' => 'V',
'/в/' => 'v',
// Ww
'/Ω|Ώ|Ŵ/' => 'W',
'/ω|ώ|ŵ/' => 'w',
// Xx
'/Χ/' => 'X',
'/χ/' => 'x',
// Yy
'/Υ|Ύ|Ψ|Й|Ý|Ÿ|Ŷ/' => 'Y',
'/υ|ύ|ψ|й|ý|ÿ|ŷ/' => 'y',
// Zz
'/Ζ|З|Ź|Ż|Ž/' => 'Z',
'/ζ|з|ź|ż|ž/' => 'z',
'/Θ/' => 'Th',
'/θ/' => 'th',
'/Ξ/' => 'Ks',
'/ξ/' => 'ks',
'/Ё/' => 'Yo',
'/ё/' => 'yo',
'/Ж/' => 'Zh',
'/ж/' => 'zh',
'/Ц/' => 'Ts',
'/ц/' => 'ts',
'/Ч/' => 'Ch',
'/ч/' => 'ch',
'/Ш/' => 'Sh',
'/ш/' => 'sh',
'/Щ/' => 'Sch',
'/щ/' => 'sch',
'/Ь|Ъ/' => '',
'/ь|ъ/' => '',
'/Ю/' => 'Yu',
'/ю/' => 'yu',
'/Я/' => 'Ya',
'/я/' => 'ya',
'/Æ|Ǽ/' => 'AE',
'/Ä/' => 'Ae',
'/ä|æ|ǽ/' => 'ae',
'/Œ/' => 'OE',
'/Ö/' => 'Oe',
'/ö|œ/' => 'oe',
'/Ü/' => 'Ue',
'/ü/' => 'ue',
'/IJ/' => 'IJ',
'/ij/' => 'ij',
'/ß/'=> 'ss',
);
/* End of file translit_chars.php */
/* Location: ./assets/grocery_crud/translit_chars.php */
+10
View File
@@ -0,0 +1,10 @@
<html>
<head>
<title>403 Forbidden</title>
</head>
<body>
<p>Directory access is forbidden.</p>
</body>
</html>
Binary file not shown.

After

Width:  |  Height:  |  Size: 538 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 738 B

@@ -0,0 +1,450 @@
/*!
Chosen, a Select Box Enhancer for jQuery and Prototype
by Patrick Filler for Harvest, http://getharvest.com
Version 1.4.2
Full source at https://github.com/harvesthq/chosen
Copyright (c) 2011-2015 Harvest http://getharvest.com
MIT License, https://github.com/harvesthq/chosen/blob/master/LICENSE.md
This file is generated by `grunt build`, do not edit it by hand.
*/
/* @group Base */
.chosen-container {
position: relative;
display: inline-block;
vertical-align: middle;
font-size: 13px;
zoom: 1;
*display: inline;
-webkit-user-select: none;
-moz-user-select: none;
user-select: none;
}
.chosen-container * {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
.chosen-container .chosen-drop {
position: absolute;
top: 100%;
left: -9999px;
z-index: 1010;
width: 100%;
border: 1px solid #aaa;
border-top: 0;
background: #fff;
box-shadow: 0 4px 5px rgba(0, 0, 0, 0.15);
}
.chosen-container.chosen-with-drop .chosen-drop {
left: 0;
}
.chosen-container a {
cursor: pointer;
}
.chosen-container .search-choice .group-name, .chosen-container .chosen-single .group-name {
margin-right: 4px;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
font-weight: normal;
color: #999999;
}
.chosen-container .search-choice .group-name:after, .chosen-container .chosen-single .group-name:after {
content: ":";
padding-left: 2px;
vertical-align: top;
}
/* @end */
/* @group Single Chosen */
.chosen-container-single .chosen-single {
position: relative;
display: block;
overflow: hidden;
padding: 0 0 0 8px;
height: 25px;
border: 1px solid #aaa;
border-radius: 5px;
background-color: #fff;
background: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(20%, #ffffff), color-stop(50%, #f6f6f6), color-stop(52%, #eeeeee), color-stop(100%, #f4f4f4));
background: -webkit-linear-gradient(top, #ffffff 20%, #f6f6f6 50%, #eeeeee 52%, #f4f4f4 100%);
background: -moz-linear-gradient(top, #ffffff 20%, #f6f6f6 50%, #eeeeee 52%, #f4f4f4 100%);
background: -o-linear-gradient(top, #ffffff 20%, #f6f6f6 50%, #eeeeee 52%, #f4f4f4 100%);
background: linear-gradient(top, #ffffff 20%, #f6f6f6 50%, #eeeeee 52%, #f4f4f4 100%);
background-clip: padding-box;
box-shadow: 0 0 3px white inset, 0 1px 1px rgba(0, 0, 0, 0.1);
color: #444;
text-decoration: none;
white-space: nowrap;
line-height: 24px;
}
.chosen-container-single .chosen-default {
color: #999;
}
.chosen-container-single .chosen-single span {
display: block;
overflow: hidden;
margin-right: 26px;
text-overflow: ellipsis;
white-space: nowrap;
}
.chosen-container-single .chosen-single-with-deselect span {
margin-right: 38px;
}
.chosen-container-single .chosen-single abbr {
position: absolute;
top: 6px;
right: 26px;
display: block;
width: 12px;
height: 12px;
background: url('chosen-sprite.png') -42px 1px no-repeat;
font-size: 1px;
}
.chosen-container-single .chosen-single abbr:hover {
background-position: -42px -10px;
}
.chosen-container-single.chosen-disabled .chosen-single abbr:hover {
background-position: -42px -10px;
}
.chosen-container-single .chosen-single div {
position: absolute;
top: 0;
right: 0;
display: block;
width: 18px;
height: 100%;
}
.chosen-container-single .chosen-single div b {
display: block;
width: 100%;
height: 100%;
background: url('chosen-sprite.png') no-repeat 0px 2px;
}
.chosen-container-single .chosen-search {
position: relative;
z-index: 1010;
margin: 0;
padding: 3px 4px;
white-space: nowrap;
}
.chosen-container-single .chosen-search input[type="text"] {
margin: 1px 0;
padding: 4px 20px 4px 5px;
width: 100%;
height: auto;
outline: 0;
border: 1px solid #aaa;
background: white url('chosen-sprite.png') no-repeat 100% -20px;
background: url('chosen-sprite.png') no-repeat 100% -20px;
font-size: 1em;
font-family: sans-serif;
line-height: normal;
border-radius: 0;
}
.chosen-container-single .chosen-drop {
margin-top: -1px;
border-radius: 0 0 4px 4px;
background-clip: padding-box;
}
.chosen-container-single.chosen-container-single-nosearch .chosen-search {
position: absolute;
left: -9999px;
}
/* @end */
/* @group Results */
.chosen-container .chosen-results {
color: #444;
position: relative;
overflow-x: hidden;
overflow-y: auto;
margin: 0 4px 4px 0;
padding: 0 0 0 4px;
max-height: 240px;
-webkit-overflow-scrolling: touch;
}
.chosen-container .chosen-results li {
display: none;
margin: 0;
padding: 5px 6px;
list-style: none;
line-height: 15px;
word-wrap: break-word;
-webkit-touch-callout: none;
}
.chosen-container .chosen-results li.active-result {
display: list-item;
cursor: pointer;
}
.chosen-container .chosen-results li.disabled-result {
display: list-item;
color: #ccc;
cursor: default;
}
.chosen-container .chosen-results li.highlighted {
background-color: #3875d7;
background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(20%, #3875d7), color-stop(90%, #2a62bc));
background-image: -webkit-linear-gradient(#3875d7 20%, #2a62bc 90%);
background-image: -moz-linear-gradient(#3875d7 20%, #2a62bc 90%);
background-image: -o-linear-gradient(#3875d7 20%, #2a62bc 90%);
background-image: linear-gradient(#3875d7 20%, #2a62bc 90%);
color: #fff;
}
.chosen-container .chosen-results li.no-results {
color: #777;
display: list-item;
background: #f4f4f4;
}
.chosen-container .chosen-results li.group-result {
display: list-item;
font-weight: bold;
cursor: default;
}
.chosen-container .chosen-results li.group-option {
padding-left: 15px;
}
.chosen-container .chosen-results li em {
font-style: normal;
text-decoration: underline;
}
/* @end */
/* @group Multi Chosen */
.chosen-container-multi .chosen-choices {
position: relative;
overflow: hidden;
margin: 0;
padding: 0 5px;
width: 100%;
height: auto !important;
height: 1%;
border: 1px solid #aaa;
background-color: #fff;
background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(1%, #eeeeee), color-stop(15%, #ffffff));
background-image: -webkit-linear-gradient(#eeeeee 1%, #ffffff 15%);
background-image: -moz-linear-gradient(#eeeeee 1%, #ffffff 15%);
background-image: -o-linear-gradient(#eeeeee 1%, #ffffff 15%);
background-image: linear-gradient(#eeeeee 1%, #ffffff 15%);
cursor: text;
}
.chosen-container-multi .chosen-choices li {
float: left;
list-style: none;
}
.chosen-container-multi .chosen-choices li.search-field {
margin: 0;
padding: 0;
white-space: nowrap;
}
.chosen-container-multi .chosen-choices li.search-field input[type="text"] {
margin: 1px 0;
padding: 0;
height: 25px;
outline: 0;
border: 0 !important;
background: transparent !important;
box-shadow: none;
color: #999;
font-size: 100%;
font-family: sans-serif;
line-height: normal;
border-radius: 0;
}
.chosen-container-multi .chosen-choices li.search-choice {
position: relative;
margin: 3px 5px 3px 0;
padding: 3px 20px 3px 5px;
border: 1px solid #aaa;
max-width: 100%;
border-radius: 3px;
background-color: #eeeeee;
background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(20%, #f4f4f4), color-stop(50%, #f0f0f0), color-stop(52%, #e8e8e8), color-stop(100%, #eeeeee));
background-image: -webkit-linear-gradient(#f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
background-image: -moz-linear-gradient(#f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
background-image: -o-linear-gradient(#f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
background-image: linear-gradient(#f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
background-size: 100% 19px;
background-repeat: repeat-x;
background-clip: padding-box;
box-shadow: 0 0 2px white inset, 0 1px 0 rgba(0, 0, 0, 0.05);
color: #333;
line-height: 13px;
cursor: default;
}
.chosen-container-multi .chosen-choices li.search-choice span {
word-wrap: break-word;
}
.chosen-container-multi .chosen-choices li.search-choice .search-choice-close {
position: absolute;
top: 4px;
right: 3px;
display: block;
width: 12px;
height: 12px;
background: url('chosen-sprite.png') -42px 1px no-repeat;
font-size: 1px;
}
.chosen-container-multi .chosen-choices li.search-choice .search-choice-close:hover {
background-position: -42px -10px;
}
.chosen-container-multi .chosen-choices li.search-choice-disabled {
padding-right: 5px;
border: 1px solid #ccc;
background-color: #e4e4e4;
background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(20%, #f4f4f4), color-stop(50%, #f0f0f0), color-stop(52%, #e8e8e8), color-stop(100%, #eeeeee));
background-image: -webkit-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
background-image: -moz-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
background-image: -o-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
background-image: linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
color: #666;
}
.chosen-container-multi .chosen-choices li.search-choice-focus {
background: #d4d4d4;
}
.chosen-container-multi .chosen-choices li.search-choice-focus .search-choice-close {
background-position: -42px -10px;
}
.chosen-container-multi .chosen-results {
margin: 0;
padding: 0;
}
.chosen-container-multi .chosen-drop .result-selected {
display: list-item;
color: #ccc;
cursor: default;
}
/* @end */
/* @group Active */
.chosen-container-active .chosen-single {
border: 1px solid #5897fb;
box-shadow: 0 0 5px rgba(0, 0, 0, 0.3);
}
.chosen-container-active.chosen-with-drop .chosen-single {
border: 1px solid #aaa;
-moz-border-radius-bottomright: 0;
border-bottom-right-radius: 0;
-moz-border-radius-bottomleft: 0;
border-bottom-left-radius: 0;
background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(20%, #eeeeee), color-stop(80%, #ffffff));
background-image: -webkit-linear-gradient(#eeeeee 20%, #ffffff 80%);
background-image: -moz-linear-gradient(#eeeeee 20%, #ffffff 80%);
background-image: -o-linear-gradient(#eeeeee 20%, #ffffff 80%);
background-image: linear-gradient(#eeeeee 20%, #ffffff 80%);
box-shadow: 0 1px 0 #fff inset;
}
.chosen-container-active.chosen-with-drop .chosen-single div {
border-left: none;
background: transparent;
}
.chosen-container-active.chosen-with-drop .chosen-single div b {
background-position: -18px 2px;
}
.chosen-container-active .chosen-choices {
border: 1px solid #5897fb;
box-shadow: 0 0 5px rgba(0, 0, 0, 0.3);
}
.chosen-container-active .chosen-choices li.search-field input[type="text"] {
color: #222 !important;
}
/* @end */
/* @group Disabled Support */
.chosen-disabled {
opacity: 0.5 !important;
cursor: default;
}
.chosen-disabled .chosen-single {
cursor: default;
}
.chosen-disabled .chosen-choices .search-choice .search-choice-close {
cursor: default;
}
/* @end */
/* @group Right to Left */
.chosen-rtl {
text-align: right;
}
.chosen-rtl .chosen-single {
overflow: visible;
padding: 0 8px 0 0;
}
.chosen-rtl .chosen-single span {
margin-right: 0;
margin-left: 26px;
direction: rtl;
}
.chosen-rtl .chosen-single-with-deselect span {
margin-left: 38px;
}
.chosen-rtl .chosen-single div {
right: auto;
left: 3px;
}
.chosen-rtl .chosen-single abbr {
right: auto;
left: 26px;
}
.chosen-rtl .chosen-choices li {
float: right;
}
.chosen-rtl .chosen-choices li.search-field input[type="text"] {
direction: rtl;
}
.chosen-rtl .chosen-choices li.search-choice {
margin: 3px 5px 3px 0;
padding: 3px 5px 3px 19px;
}
.chosen-rtl .chosen-choices li.search-choice .search-choice-close {
right: auto;
left: 4px;
}
.chosen-rtl.chosen-container-single-nosearch .chosen-search,
.chosen-rtl .chosen-drop {
left: 9999px;
}
.chosen-rtl.chosen-container-single .chosen-results {
margin: 0 0 4px 4px;
padding: 0 4px 0 0;
}
.chosen-rtl .chosen-results li.group-option {
padding-right: 15px;
padding-left: 0;
}
.chosen-rtl.chosen-container-active.chosen-with-drop .chosen-single div {
border-right: none;
}
.chosen-rtl .chosen-search input[type="text"] {
padding: 4px 5px 4px 20px;
background: white url('chosen-sprite.png') no-repeat -30px -20px;
background: url('chosen-sprite.png') no-repeat -30px -20px;
direction: rtl;
}
.chosen-rtl.chosen-container-single .chosen-single div b {
background-position: 6px 2px;
}
.chosen-rtl.chosen-container-single.chosen-with-drop .chosen-single div b {
background-position: -12px 2px;
}
/* @end */
/* @group Retina compatibility */
@media only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (min-resolution: 144dpi), only screen and (min-resolution: 1.5dppx) {
.chosen-rtl .chosen-search input[type="text"],
.chosen-container-single .chosen-single abbr,
.chosen-container-single .chosen-single div b,
.chosen-container-single .chosen-search input[type="text"],
.chosen-container-multi .chosen-choices .search-choice .search-choice-close,
.chosen-container .chosen-results-scroll-down span,
.chosen-container .chosen-results-scroll-up span {
background-image: url('chosen-sprite@2x.png') !important;
background-size: 52px 37px !important;
background-repeat: no-repeat !important;
}
}
/* @end */
File diff suppressed because one or more lines are too long
@@ -0,0 +1,10 @@
<html>
<head>
<title>403 Forbidden</title>
</head>
<body>
<p>Directory access is forbidden.</p>
</body>
</html>
Binary file not shown.

After

Width:  |  Height:  |  Size: 43 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 107 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 106 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 347 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 324 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 111 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 352 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 340 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 103 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 503 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 506 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 203 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 176 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

@@ -0,0 +1,359 @@
/*
* FancyBox - jQuery Plugin
* Simple and fancy lightbox alternative
*
* Examples and documentation at: http://fancybox.net
*
* Copyright (c) 2008 - 2010 Janis Skarnelis
* That said, it is hardly a one-person project. Many people have submitted bugs, code, and offered their advice freely. Their support is greatly appreciated.
*
* Version: 1.3.4 (11/11/2010)
* Requires: jQuery v1.3+
*
* Dual licensed under the MIT and GPL licenses:
* http://www.opensource.org/licenses/mit-license.php
* http://www.gnu.org/licenses/gpl.html
*/
#fancybox-loading {
position: fixed;
top: 50%;
left: 50%;
width: 40px;
height: 40px;
margin-top: -20px;
margin-left: -20px;
cursor: pointer;
overflow: hidden;
z-index: 1104;
display: none;
}
#fancybox-loading div {
position: absolute;
top: 0;
left: 0;
width: 40px;
height: 480px;
background-image: url('fancybox.png');
}
#fancybox-overlay {
position: absolute;
top: 0;
left: 0;
width: 100%;
z-index: 1100;
display: none;
}
#fancybox-tmp {
padding: 0;
margin: 0;
border: 0;
overflow: auto;
display: none;
}
#fancybox-wrap {
position: absolute;
top: 0;
left: 0;
padding: 20px;
z-index: 1101;
outline: none;
display: none;
}
#fancybox-outer {
position: relative;
width: 100%;
height: 100%;
background: #fff;
}
#fancybox-content {
width: 0;
height: 0;
padding: 0;
outline: none;
position: relative;
overflow: hidden;
z-index: 1102;
border: 0px solid #fff;
}
#fancybox-hide-sel-frame {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: transparent;
z-index: 1101;
}
#fancybox-close {
position: absolute;
top: -15px;
right: -15px;
width: 30px;
height: 30px;
background: transparent url('fancybox.png') -40px 0px;
cursor: pointer;
z-index: 1103;
display: none;
}
#fancybox-error {
color: #444;
font: normal 12px/20px Arial;
padding: 14px;
margin: 0;
}
#fancybox-img {
width: 100%;
height: 100%;
padding: 0;
margin: 0;
border: none;
outline: none;
line-height: 0;
vertical-align: top;
}
#fancybox-frame {
width: 100%;
height: 100%;
border: none;
display: block;
}
#fancybox-left, #fancybox-right {
position: absolute;
bottom: 0px;
height: 100%;
width: 35%;
cursor: pointer;
outline: none;
background: transparent url('blank.gif');
z-index: 1102;
display: none;
}
#fancybox-left {
left: 0px;
}
#fancybox-right {
right: 0px;
}
#fancybox-left-ico, #fancybox-right-ico {
position: absolute;
top: 50%;
left: -9999px;
width: 30px;
height: 30px;
margin-top: -15px;
cursor: pointer;
z-index: 1102;
display: block;
}
#fancybox-left-ico {
background-image: url('fancybox.png');
background-position: -40px -30px;
}
#fancybox-right-ico {
background-image: url('fancybox.png');
background-position: -40px -60px;
}
#fancybox-left:hover, #fancybox-right:hover {
visibility: visible; /* IE6 */
}
#fancybox-left:hover span {
left: 20px;
}
#fancybox-right:hover span {
left: auto;
right: 20px;
}
.fancybox-bg {
position: absolute;
padding: 0;
margin: 0;
border: 0;
width: 20px;
height: 20px;
z-index: 1001;
}
#fancybox-bg-n {
top: -20px;
left: 0;
width: 100%;
background-image: url('fancybox-x.png');
}
#fancybox-bg-ne {
top: -20px;
right: -20px;
background-image: url('fancybox.png');
background-position: -40px -162px;
}
#fancybox-bg-e {
top: 0;
right: -20px;
height: 100%;
background-image: url('fancybox-y.png');
background-position: -20px 0px;
}
#fancybox-bg-se {
bottom: -20px;
right: -20px;
background-image: url('fancybox.png');
background-position: -40px -182px;
}
#fancybox-bg-s {
bottom: -20px;
left: 0;
width: 100%;
background-image: url('fancybox-x.png');
background-position: 0px -20px;
}
#fancybox-bg-sw {
bottom: -20px;
left: -20px;
background-image: url('fancybox.png');
background-position: -40px -142px;
}
#fancybox-bg-w {
top: 0;
left: -20px;
height: 100%;
background-image: url('fancybox-y.png');
}
#fancybox-bg-nw {
top: -20px;
left: -20px;
background-image: url('fancybox.png');
background-position: -40px -122px;
}
#fancybox-title {
font-family: Helvetica;
font-size: 12px;
z-index: 1102;
}
.fancybox-title-inside {
padding-bottom: 10px;
text-align: center;
color: #333;
background: #fff;
position: relative;
}
.fancybox-title-outside {
padding-top: 10px;
color: #fff;
}
.fancybox-title-over {
position: absolute;
bottom: 0;
left: 0;
color: #FFF;
text-align: left;
}
#fancybox-title-over {
padding: 10px;
background-image: url('fancy_title_over.png');
display: block;
}
.fancybox-title-float {
position: absolute;
left: 0;
bottom: -20px;
height: 32px;
}
#fancybox-title-float-wrap {
border: none;
border-collapse: collapse;
width: auto;
}
#fancybox-title-float-wrap td {
border: none;
white-space: nowrap;
}
#fancybox-title-float-left {
padding: 0 0 0 15px;
background: url('fancybox.png') -40px -90px no-repeat;
}
#fancybox-title-float-main {
color: #FFF;
line-height: 29px;
font-weight: bold;
padding: 0 0 3px 0;
background: url('fancybox-x.png') 0px -40px;
}
#fancybox-title-float-right {
padding: 0 0 0 15px;
background: url('fancybox.png') -55px -90px no-repeat;
}
/* IE6 */
.fancybox-ie6 #fancybox-close { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_close.png', sizingMethod='scale'); }
.fancybox-ie6 #fancybox-left-ico { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_nav_left.png', sizingMethod='scale'); }
.fancybox-ie6 #fancybox-right-ico { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_nav_right.png', sizingMethod='scale'); }
.fancybox-ie6 #fancybox-title-over { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_title_over.png', sizingMethod='scale'); zoom: 1; }
.fancybox-ie6 #fancybox-title-float-left { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_title_left.png', sizingMethod='scale'); }
.fancybox-ie6 #fancybox-title-float-main { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_title_main.png', sizingMethod='scale'); }
.fancybox-ie6 #fancybox-title-float-right { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_title_right.png', sizingMethod='scale'); }
.fancybox-ie6 #fancybox-bg-w, .fancybox-ie6 #fancybox-bg-e, .fancybox-ie6 #fancybox-left, .fancybox-ie6 #fancybox-right, #fancybox-hide-sel-frame {
height: expression(this.parentNode.clientHeight + "px");
}
#fancybox-loading.fancybox-ie6 {
position: absolute; margin-top: 0;
top: expression( (-20 + (document.documentElement.clientHeight ? document.documentElement.clientHeight/2 : document.body.clientHeight/2 ) + ( ignoreMe = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop )) + 'px');
}
#fancybox-loading.fancybox-ie6 div { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_loading.png', sizingMethod='scale'); }
/* IE6, IE7, IE8 */
.fancybox-ie .fancybox-bg { background: transparent !important; }
.fancybox-ie #fancybox-bg-n { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_shadow_n.png', sizingMethod='scale'); }
.fancybox-ie #fancybox-bg-ne { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_shadow_ne.png', sizingMethod='scale'); }
.fancybox-ie #fancybox-bg-e { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_shadow_e.png', sizingMethod='scale'); }
.fancybox-ie #fancybox-bg-se { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_shadow_se.png', sizingMethod='scale'); }
.fancybox-ie #fancybox-bg-s { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_shadow_s.png', sizingMethod='scale'); }
.fancybox-ie #fancybox-bg-sw { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_shadow_sw.png', sizingMethod='scale'); }
.fancybox-ie #fancybox-bg-w { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_shadow_w.png', sizingMethod='scale'); }
.fancybox-ie #fancybox-bg-nw { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_shadow_nw.png', sizingMethod='scale'); }
@@ -0,0 +1,360 @@
html,body{margin:0;padding:0;}
h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,cite,code,del,dfn,em,img,q,s,samp,small,strike,strong,sub,sup,tt,var,dd,dl,dt,li,ol,ul,fieldset,form,label,legend,button,table,caption,tbody,tfoot,thead,tr,th,td{margin:0;padding:0;border:0;font-weight:normal;font-style:normal;font-size:100%;line-height:1;font-family:inherit;}
table{border-collapse:collapse;border-spacing:0;}
ol,ul{list-style:none;}
q:before,q:after,blockquote:before,blockquote:after{content:"";}
html{overflow-y:scroll;font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;}
a:focus{outline:thin dotted;}
a:hover,a:active{outline:0;}
article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block;}
audio,canvas,video{display:inline-block;*display:inline;*zoom:1;}
audio:not([controls]){display:none;}
sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline;}
sup{top:-0.5em;}
sub{bottom:-0.25em;}
img{border:0;-ms-interpolation-mode:bicubic;}
button,input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle;}
button,input{line-height:normal;*overflow:visible;}
button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0;}
button,input[type="button"],input[type="reset"],input[type="submit"]{cursor:pointer;-webkit-appearance:button;}
input[type="search"]{-webkit-appearance:textfield;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;}
input[type="search"]::-webkit-search-decoration{-webkit-appearance:none;}
textarea{overflow:auto;vertical-align:top;}
body{background-color:#ffffff;margin:0;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;font-weight:normal;line-height:18px;color:#404040;}
.container{width:940px;margin-left:auto;margin-right:auto;zoom:1;}.container:before,.container:after{display:table;content:"";zoom:1;}
.container:after{clear:both;}
.container-fluid{position:relative;min-width:940px;padding-left:20px;padding-right:20px;zoom:1;}.container-fluid:before,.container-fluid:after{display:table;content:"";zoom:1;}
.container-fluid:after{clear:both;}
.container-fluid>.sidebar{position:absolute;top:0;left:20px;width:220px;}
.container-fluid>.content{margin-left:240px;}
a{color:#0069d6;text-decoration:none;line-height:inherit;font-weight:inherit;}a:hover{color:#00438a;text-decoration:underline;}
.pull-right{float:right;}
.pull-left{float:left;}
.hide{display:none;}
.show{display:block;}
.row{zoom:1;margin-left:-20px;}.row:before,.row:after{display:table;content:"";zoom:1;}
.row:after{clear:both;}
.row>[class*="span"]{display:inline;float:left;margin-left:20px;}
.span1{width:40px;}
.span2{width:100px;}
.span3{width:160px;}
.span4{width:220px;}
.span5{width:280px;}
.span6{width:340px;}
.span7{width:400px;}
.span8{width:460px;}
.span9{width:520px;}
.span10{width:580px;}
.span11{width:640px;}
.span12{width:700px;}
.span13{width:760px;}
.span14{width:820px;}
.span15{width:880px;}
.span16{width:940px;}
.span17{width:1000px;}
.span18{width:1060px;}
.span19{width:1120px;}
.span20{width:1180px;}
.span21{width:1240px;}
.span22{width:1300px;}
.span23{width:1360px;}
.span24{width:1420px;}
.row>.offset1{margin-left:80px;}
.row>.offset2{margin-left:140px;}
.row>.offset3{margin-left:200px;}
.row>.offset4{margin-left:260px;}
.row>.offset5{margin-left:320px;}
.row>.offset6{margin-left:380px;}
.row>.offset7{margin-left:440px;}
.row>.offset8{margin-left:500px;}
.row>.offset9{margin-left:560px;}
.row>.offset10{margin-left:620px;}
.row>.offset11{margin-left:680px;}
.row>.offset12{margin-left:740px;}
.span-one-third{width:300px;}
.span-two-thirds{width:620px;}
.row>.offset-one-third{margin-left:340px;}
.row>.offset-two-thirds{margin-left:660px;}
p{font-size:13px;font-weight:normal;line-height:18px;margin-bottom:9px;}p small{font-size:11px;color:#bfbfbf;}
h1,h2,h3,h4,h5,h6{font-weight:bold;color:#404040;}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{color:#bfbfbf;}
h1{margin-bottom:18px;font-size:30px;line-height:36px;}h1 small{font-size:18px;}
h2{font-size:24px;line-height:36px;}h2 small{font-size:14px;}
h3,h4,h5,h6{line-height:36px;}
h3{font-size:18px;}h3 small{font-size:14px;}
h4{font-size:16px;}h4 small{font-size:12px;}
h5{font-size:14px;}
h6{font-size:13px;color:#bfbfbf;text-transform:uppercase;}
ul,ol{margin:0 0 18px 25px;}
ul ul,ul ol,ol ol,ol ul{margin-bottom:0;}
ul{list-style:disc;}
ol{list-style:decimal;}
li{line-height:18px;color:#808080;}
ul.unstyled{list-style:none;margin-left:0;}
dl{margin-bottom:18px;}dl dt,dl dd{line-height:18px;}
dl dt{font-weight:bold;}
dl dd{margin-left:9px;}
hr{margin:20px 0 19px;border:0;border-bottom:1px solid #eee;}
strong{font-style:inherit;font-weight:bold;}
em{font-style:italic;font-weight:inherit;line-height:inherit;}
.muted{color:#bfbfbf;}
blockquote{margin-bottom:18px;border-left:5px solid #eee;padding-left:15px;}blockquote p{font-size:14px;font-weight:300;line-height:18px;margin-bottom:0;}
blockquote small{display:block;font-size:12px;font-weight:300;line-height:18px;color:#bfbfbf;}blockquote small:before{content:'\2014 \00A0';}
address{display:block;line-height:18px;margin-bottom:18px;}
code,pre{padding:0 3px 2px;font-family:Monaco, Andale Mono, Courier New, monospace;font-size:12px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;}
code{background-color:#fee9cc;color:rgba(0, 0, 0, 0.75);padding:1px 3px;}
pre{background-color:#f5f5f5;display:block;padding:8.5px;margin:0 0 18px;line-height:18px;font-size:12px;border:1px solid #ccc;border:1px solid rgba(0, 0, 0, 0.15);-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;white-space:pre;white-space:pre-wrap;word-wrap:break-word;}
form{margin-bottom:18px;}
fieldset{margin-bottom:18px;padding-top:18px;}fieldset legend{display:block;padding-left:150px;font-size:19.5px;line-height:1;color:#404040;*padding:0 0 5px 145px;*line-height:1.5;}
form .clearfix{margin-bottom:18px;zoom:1;}form .clearfix:before,form .clearfix:after{display:table;content:"";zoom:1;}
form .clearfix:after{clear:both;}
label,input,select,textarea{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;font-weight:normal;line-height:normal;}
label{padding-top:6px;font-size:13px;line-height:18px;float:left;width:130px;text-align:right;color:#404040;}
form .input{margin-left:150px;}
input[type=checkbox],input[type=radio]{cursor:pointer;}
input,textarea,select,.uneditable-input{display:inline-block;width:210px;height:18px;padding:4px;font-size:13px;line-height:18px;color:#808080;border:1px solid #ccc;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;}
select{padding:initial;}
input[type=checkbox],input[type=radio]{width:auto;height:auto;padding:0;margin:3px 0;*margin-top:0;line-height:normal;border:none;}
input[type=file]{background-color:#ffffff;padding:initial;border:initial;line-height:initial;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;}
input[type=button],input[type=reset],input[type=submit]{width:auto;height:auto;}
select,input[type=file]{height:27px;*height:auto;line-height:27px;*margin-top:4px;}
select[multiple]{height:inherit;background-color:#ffffff;}
textarea{height:auto;}
.uneditable-input{background-color:#ffffff;display:block;border-color:#eee;-webkit-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.025);-moz-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.025);box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.025);cursor:not-allowed;}
:-moz-placeholder{color:#bfbfbf;}
::-webkit-input-placeholder{color:#bfbfbf;}
input,textarea{-webkit-transition:border linear 0.2s,box-shadow linear 0.2s;-moz-transition:border linear 0.2s,box-shadow linear 0.2s;-ms-transition:border linear 0.2s,box-shadow linear 0.2s;-o-transition:border linear 0.2s,box-shadow linear 0.2s;transition:border linear 0.2s,box-shadow linear 0.2s;-webkit-box-shadow:inset 0 1px 3px rgba(0, 0, 0, 0.1);-moz-box-shadow:inset 0 1px 3px rgba(0, 0, 0, 0.1);box-shadow:inset 0 1px 3px rgba(0, 0, 0, 0.1);}
input:focus,textarea:focus{outline:0;border-color:rgba(82, 168, 236, 0.8);-webkit-box-shadow:inset 0 1px 3px rgba(0, 0, 0, 0.1),0 0 8px rgba(82, 168, 236, 0.6);-moz-box-shadow:inset 0 1px 3px rgba(0, 0, 0, 0.1),0 0 8px rgba(82, 168, 236, 0.6);box-shadow:inset 0 1px 3px rgba(0, 0, 0, 0.1),0 0 8px rgba(82, 168, 236, 0.6);}
input[type=file]:focus,input[type=checkbox]:focus,select:focus{-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;outline:1px dotted #666;}
form .clearfix.error>label,form .clearfix.error .help-block,form .clearfix.error .help-inline{color:#b94a48;}
form .clearfix.error input,form .clearfix.error textarea{color:#b94a48;border-color:#ee5f5b;}form .clearfix.error input:focus,form .clearfix.error textarea:focus{border-color:#e9322d;-webkit-box-shadow:0 0 6px #f8b9b7;-moz-box-shadow:0 0 6px #f8b9b7;box-shadow:0 0 6px #f8b9b7;}
form .clearfix.error .input-prepend .add-on,form .clearfix.error .input-append .add-on{color:#b94a48;background-color:#fce6e6;border-color:#b94a48;}
form .clearfix.warning>label,form .clearfix.warning .help-block,form .clearfix.warning .help-inline{color:#c09853;}
form .clearfix.warning input,form .clearfix.warning textarea{color:#c09853;border-color:#ccae64;}form .clearfix.warning input:focus,form .clearfix.warning textarea:focus{border-color:#be9a3f;-webkit-box-shadow:0 0 6px #e5d6b1;-moz-box-shadow:0 0 6px #e5d6b1;box-shadow:0 0 6px #e5d6b1;}
form .clearfix.warning .input-prepend .add-on,form .clearfix.warning .input-append .add-on{color:#c09853;background-color:#d2b877;border-color:#c09853;}
form .clearfix.success>label,form .clearfix.success .help-block,form .clearfix.success .help-inline{color:#468847;}
form .clearfix.success input,form .clearfix.success textarea{color:#468847;border-color:#57a957;}form .clearfix.success input:focus,form .clearfix.success textarea:focus{border-color:#458845;-webkit-box-shadow:0 0 6px #9acc9a;-moz-box-shadow:0 0 6px #9acc9a;box-shadow:0 0 6px #9acc9a;}
form .clearfix.success .input-prepend .add-on,form .clearfix.success .input-append .add-on{color:#468847;background-color:#bcddbc;border-color:#468847;}
.input-mini,input.mini,textarea.mini,select.mini{width:60px;}
.input-small,input.small,textarea.small,select.small{width:90px;}
.input-medium,input.medium,textarea.medium,select.medium{width:150px;}
.input-large,input.large,textarea.large,select.large{width:210px;}
.input-xlarge,input.xlarge,textarea.xlarge,select.xlarge{width:270px;}
.input-xxlarge,input.xxlarge,textarea.xxlarge,select.xxlarge{width:530px;}
textarea.xxlarge{overflow-y:auto;}
input.span1,textarea.span1{display:inline-block;float:none;width:30px;margin-left:0;}
input.span2,textarea.span2{display:inline-block;float:none;width:90px;margin-left:0;}
input.span3,textarea.span3{display:inline-block;float:none;width:150px;margin-left:0;}
input.span4,textarea.span4{display:inline-block;float:none;width:210px;margin-left:0;}
input.span5,textarea.span5{display:inline-block;float:none;width:270px;margin-left:0;}
input.span6,textarea.span6{display:inline-block;float:none;width:330px;margin-left:0;}
input.span7,textarea.span7{display:inline-block;float:none;width:390px;margin-left:0;}
input.span8,textarea.span8{display:inline-block;float:none;width:450px;margin-left:0;}
input.span9,textarea.span9{display:inline-block;float:none;width:510px;margin-left:0;}
input.span10,textarea.span10{display:inline-block;float:none;width:570px;margin-left:0;}
input.span11,textarea.span11{display:inline-block;float:none;width:630px;margin-left:0;}
input.span12,textarea.span12{display:inline-block;float:none;width:690px;margin-left:0;}
input.span13,textarea.span13{display:inline-block;float:none;width:750px;margin-left:0;}
input.span14,textarea.span14{display:inline-block;float:none;width:810px;margin-left:0;}
input.span15,textarea.span15{display:inline-block;float:none;width:870px;margin-left:0;}
input.span16,textarea.span16{display:inline-block;float:none;width:930px;margin-left:0;}
input[disabled],select[disabled],textarea[disabled],input[readonly],select[readonly],textarea[readonly]{background-color:#f5f5f5;border-color:#ddd;cursor:not-allowed;}
.actions{background:#f5f5f5;margin-top:18px;margin-bottom:18px;padding:17px 20px 18px 150px;border-top:1px solid #ddd;-webkit-border-radius:0 0 3px 3px;-moz-border-radius:0 0 3px 3px;border-radius:0 0 3px 3px;}.actions .secondary-action{float:right;}.actions .secondary-action a{line-height:30px;}.actions .secondary-action a:hover{text-decoration:underline;}
.help-inline,.help-block{font-size:13px;line-height:18px;color:#bfbfbf;}
.help-inline{padding-left:5px;*position:relative;*top:-5px;}
.help-block{display:block;max-width:600px;}
.inline-inputs{color:#808080;}.inline-inputs span{padding:0 2px 0 1px;}
.input-prepend input,.input-append input{-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0;}
.input-prepend .add-on,.input-append .add-on{position:relative;background:#f5f5f5;border:1px solid #ccc;z-index:2;float:left;display:block;width:auto;min-width:16px;height:18px;padding:4px 4px 4px 5px;margin-right:-1px;font-weight:normal;line-height:18px;color:#bfbfbf;text-align:center;text-shadow:0 1px 0 #ffffff;-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px;}
.input-prepend .active,.input-append .active{background:#a9dba9;border-color:#46a546;}
.input-prepend .add-on{*margin-top:1px;}
.input-append input{float:left;-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px;}
.input-append .add-on{-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0;margin-right:0;margin-left:-1px;}
.inputs-list{margin:0 0 5px;width:100%;}.inputs-list li{display:block;padding:0;width:100%;}
.inputs-list label{display:block;float:none;width:auto;padding:0;margin-left:20px;line-height:18px;text-align:left;white-space:normal;}.inputs-list label strong{color:#808080;}
.inputs-list label small{font-size:11px;font-weight:normal;}
.inputs-list .inputs-list{margin-left:25px;margin-bottom:10px;padding-top:0;}
.inputs-list:first-child{padding-top:6px;}
.inputs-list li+li{padding-top:2px;}
.inputs-list input[type=radio],.inputs-list input[type=checkbox]{margin-bottom:0;margin-left:-20px;float:left;}
.form-stacked{padding-left:20px;}.form-stacked fieldset{padding-top:9px;}
.form-stacked legend{padding-left:0;}
.form-stacked label{display:block;float:none;width:auto;font-weight:bold;text-align:left;line-height:20px;padding-top:0;}
.form-stacked .clearfix{margin-bottom:9px;}.form-stacked .clearfix div.input{margin-left:0;}
.form-stacked .inputs-list{margin-bottom:0;}.form-stacked .inputs-list li{padding-top:0;}.form-stacked .inputs-list li label{font-weight:normal;padding-top:0;}
.form-stacked div.clearfix.error{padding-top:10px;padding-bottom:10px;padding-left:10px;margin-top:0;margin-left:-10px;}
.form-stacked .actions{margin-left:-20px;padding-left:20px;}
table{width:100%;margin-bottom:18px;padding:0;font-size:13px;border-collapse:collapse;}table th,table td{padding:10px 10px 9px;line-height:18px;text-align:left;}
table th{padding-top:9px;font-weight:bold;vertical-align:middle;}
table td{vertical-align:top;border-top:1px solid #ddd;}
table tbody th{border-top:1px solid #ddd;vertical-align:top;}
.condensed-table th,.condensed-table td{padding:5px 5px 4px;}
.bordered-table{border:1px solid #ddd;border-collapse:separate;*border-collapse:collapse;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}.bordered-table th+th,.bordered-table td+td,.bordered-table th+td{border-left:1px solid #ddd;}
.bordered-table thead tr:first-child th:first-child,.bordered-table tbody tr:first-child td:first-child{-webkit-border-radius:4px 0 0 0;-moz-border-radius:4px 0 0 0;border-radius:4px 0 0 0;}
.bordered-table thead tr:first-child th:last-child,.bordered-table tbody tr:first-child td:last-child{-webkit-border-radius:0 4px 0 0;-moz-border-radius:0 4px 0 0;border-radius:0 4px 0 0;}
.bordered-table tbody tr:last-child td:first-child{-webkit-border-radius:0 0 0 4px;-moz-border-radius:0 0 0 4px;border-radius:0 0 0 4px;}
.bordered-table tbody tr:last-child td:last-child{-webkit-border-radius:0 0 4px 0;-moz-border-radius:0 0 4px 0;border-radius:0 0 4px 0;}
table .span1{width:20px;}
table .span2{width:60px;}
table .span3{width:100px;}
table .span4{width:140px;}
table .span5{width:180px;}
table .span6{width:220px;}
table .span7{width:260px;}
table .span8{width:300px;}
table .span9{width:340px;}
table .span10{width:380px;}
table .span11{width:420px;}
table .span12{width:460px;}
table .span13{width:500px;}
table .span14{width:540px;}
table .span15{width:580px;}
table .span16{width:620px;}
.zebra-striped tbody tr:nth-child(odd) td,.zebra-striped tbody tr:nth-child(odd) th{background-color:#f9f9f9;}
.zebra-striped tbody tr:hover td,.zebra-striped tbody tr:hover th{background-color:#f5f5f5;}
table .header{cursor:pointer;}table .header:after{content:"";float:right;margin-top:7px;border-width:0 4px 4px;border-style:solid;border-color:#000 transparent;visibility:hidden;}
table .headerSortUp,table .headerSortDown{background-color:rgba(141, 192, 219, 0.25);text-shadow:0 1px 1px rgba(255, 255, 255, 0.75);}
table .header:hover:after{visibility:visible;}
table .headerSortDown:after,table .headerSortDown:hover:after{visibility:visible;filter:alpha(opacity=60);-khtml-opacity:0.6;-moz-opacity:0.6;opacity:0.6;}
table .headerSortUp:after{border-bottom:none;border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid #000;visibility:visible;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;filter:alpha(opacity=60);-khtml-opacity:0.6;-moz-opacity:0.6;opacity:0.6;}
table .blue{color:#049cdb;border-bottom-color:#049cdb;}
table .headerSortUp.blue,table .headerSortDown.blue{background-color:#ade6fe;}
table .green{color:#46a546;border-bottom-color:#46a546;}
table .headerSortUp.green,table .headerSortDown.green{background-color:#cdeacd;}
table .red{color:#9d261d;border-bottom-color:#9d261d;}
table .headerSortUp.red,table .headerSortDown.red{background-color:#f4c8c5;}
table .yellow{color:#ffc40d;border-bottom-color:#ffc40d;}
table .headerSortUp.yellow,table .headerSortDown.yellow{background-color:#fff6d9;}
table .orange{color:#f89406;border-bottom-color:#f89406;}
table .headerSortUp.orange,table .headerSortDown.orange{background-color:#fee9cc;}
table .purple{color:#7a43b6;border-bottom-color:#7a43b6;}
table .headerSortUp.purple,table .headerSortDown.purple{background-color:#e2d5f0;}
.topbar{height:40px;position:fixed;top:0;left:0;right:0;z-index:10000;overflow:visible;}.topbar a{color:#bfbfbf;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);}
.topbar h3 a:hover,.topbar .brand:hover,.topbar ul .active>a{background-color:#333;background-color:rgba(255, 255, 255, 0.05);color:#ffffff;text-decoration:none;}
.topbar h3{position:relative;}
.topbar h3 a,.topbar .brand{float:left;display:block;padding:8px 20px 12px;margin-left:-20px;color:#ffffff;font-size:20px;font-weight:200;line-height:1;}
.topbar p{margin:0;line-height:40px;}.topbar p a:hover{background-color:transparent;color:#ffffff;}
.topbar form{float:left;margin:5px 0 0 0;position:relative;filter:alpha(opacity=100);-khtml-opacity:1;-moz-opacity:1;opacity:1;}
.topbar form.pull-right{float:right;}
.topbar input{background-color:#444;background-color:rgba(255, 255, 255, 0.3);font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:normal;font-weight:13px;line-height:1;padding:4px 9px;color:#ffffff;color:rgba(255, 255, 255, 0.75);border:1px solid #111;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1),0 1px 0px rgba(255, 255, 255, 0.25);-moz-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1),0 1px 0px rgba(255, 255, 255, 0.25);box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1),0 1px 0px rgba(255, 255, 255, 0.25);-webkit-transition:none;-moz-transition:none;-ms-transition:none;-o-transition:none;transition:none;}.topbar input:-moz-placeholder{color:#e6e6e6;}
.topbar input::-webkit-input-placeholder{color:#e6e6e6;}
.topbar input:hover{background-color:#bfbfbf;background-color:rgba(255, 255, 255, 0.5);color:#ffffff;}
.topbar input:focus,.topbar input.focused{outline:0;background-color:#ffffff;color:#404040;text-shadow:0 1px 0 #ffffff;border:0;padding:5px 10px;-webkit-box-shadow:0 0 3px rgba(0, 0, 0, 0.15);-moz-box-shadow:0 0 3px rgba(0, 0, 0, 0.15);box-shadow:0 0 3px rgba(0, 0, 0, 0.15);}
.topbar-inner,.topbar .fill{background-color:#222;background-color:#222222;background-repeat:repeat-x;background-image:-khtml-gradient(linear, left top, left bottom, from(#333333), to(#222222));background-image:-moz-linear-gradient(top, #333333, #222222);background-image:-ms-linear-gradient(top, #333333, #222222);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #333333), color-stop(100%, #222222));background-image:-webkit-linear-gradient(top, #333333, #222222);background-image:-o-linear-gradient(top, #333333, #222222);background-image:linear-gradient(top, #333333, #222222);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#333333', endColorstr='#222222', GradientType=0);-webkit-box-shadow:0 1px 3px rgba(0, 0, 0, 0.25),inset 0 -1px 0 rgba(0, 0, 0, 0.1);-moz-box-shadow:0 1px 3px rgba(0, 0, 0, 0.25),inset 0 -1px 0 rgba(0, 0, 0, 0.1);box-shadow:0 1px 3px rgba(0, 0, 0, 0.25),inset 0 -1px 0 rgba(0, 0, 0, 0.1);}
.topbar div>ul,.nav{display:block;float:left;margin:0 10px 0 0;position:relative;left:0;}.topbar div>ul>li,.nav>li{display:block;float:left;}
.topbar div>ul a,.nav a{display:block;float:none;padding:10px 10px 11px;line-height:19px;text-decoration:none;}.topbar div>ul a:hover,.nav a:hover{color:#ffffff;text-decoration:none;}
.topbar div>ul .active>a,.nav .active>a{background-color:#222;background-color:rgba(0, 0, 0, 0.5);}
.topbar div>ul.secondary-nav,.nav.secondary-nav{float:right;margin-left:10px;margin-right:0;}.topbar div>ul.secondary-nav .menu-dropdown,.nav.secondary-nav .menu-dropdown,.topbar div>ul.secondary-nav .dropdown-menu,.nav.secondary-nav .dropdown-menu{right:0;border:0;}
.topbar div>ul a.menu:hover,.nav a.menu:hover,.topbar div>ul li.open .menu,.nav li.open .menu,.topbar div>ul .dropdown-toggle:hover,.nav .dropdown-toggle:hover,.topbar div>ul .dropdown.open .dropdown-toggle,.nav .dropdown.open .dropdown-toggle{background:#444;background:rgba(255, 255, 255, 0.05);}
.topbar div>ul .menu-dropdown,.nav .menu-dropdown,.topbar div>ul .dropdown-menu,.nav .dropdown-menu{background-color:#333;}.topbar div>ul .menu-dropdown a.menu,.nav .menu-dropdown a.menu,.topbar div>ul .dropdown-menu a.menu,.nav .dropdown-menu a.menu,.topbar div>ul .menu-dropdown .dropdown-toggle,.nav .menu-dropdown .dropdown-toggle,.topbar div>ul .dropdown-menu .dropdown-toggle,.nav .dropdown-menu .dropdown-toggle{color:#ffffff;}.topbar div>ul .menu-dropdown a.menu.open,.nav .menu-dropdown a.menu.open,.topbar div>ul .dropdown-menu a.menu.open,.nav .dropdown-menu a.menu.open,.topbar div>ul .menu-dropdown .dropdown-toggle.open,.nav .menu-dropdown .dropdown-toggle.open,.topbar div>ul .dropdown-menu .dropdown-toggle.open,.nav .dropdown-menu .dropdown-toggle.open{background:#444;background:rgba(255, 255, 255, 0.05);}
.topbar div>ul .menu-dropdown li a,.nav .menu-dropdown li a,.topbar div>ul .dropdown-menu li a,.nav .dropdown-menu li a{color:#999;text-shadow:0 1px 0 rgba(0, 0, 0, 0.5);}.topbar div>ul .menu-dropdown li a:hover,.nav .menu-dropdown li a:hover,.topbar div>ul .dropdown-menu li a:hover,.nav .dropdown-menu li a:hover{background-color:#191919;background-repeat:repeat-x;background-image:-khtml-gradient(linear, left top, left bottom, from(#292929), to(#191919));background-image:-moz-linear-gradient(top, #292929, #191919);background-image:-ms-linear-gradient(top, #292929, #191919);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #292929), color-stop(100%, #191919));background-image:-webkit-linear-gradient(top, #292929, #191919);background-image:-o-linear-gradient(top, #292929, #191919);background-image:linear-gradient(top, #292929, #191919);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#292929', endColorstr='#191919', GradientType=0);color:#ffffff;}
.topbar div>ul .menu-dropdown .active a,.nav .menu-dropdown .active a,.topbar div>ul .dropdown-menu .active a,.nav .dropdown-menu .active a{color:#ffffff;}
.topbar div>ul .menu-dropdown .divider,.nav .menu-dropdown .divider,.topbar div>ul .dropdown-menu .divider,.nav .dropdown-menu .divider{background-color:#222;border-color:#444;}
.topbar ul .menu-dropdown li a,.topbar ul .dropdown-menu li a{padding:4px 15px;}
li.menu,.dropdown{position:relative;}
a.menu:after,.dropdown-toggle:after{width:0;height:0;display:inline-block;content:"&darr;";text-indent:-99999px;vertical-align:top;margin-top:8px;margin-left:4px;border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid #ffffff;filter:alpha(opacity=50);-khtml-opacity:0.5;-moz-opacity:0.5;opacity:0.5;}
.menu-dropdown,.dropdown-menu{background-color:#ffffff;float:left;display:none;position:absolute;top:40px;z-index:900;min-width:160px;max-width:220px;_width:160px;margin-left:0;margin-right:0;padding:6px 0;zoom:1;border-color:#999;border-color:rgba(0, 0, 0, 0.2);border-style:solid;border-width:0 1px 1px;-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px;-webkit-box-shadow:0 2px 4px rgba(0, 0, 0, 0.2);-moz-box-shadow:0 2px 4px rgba(0, 0, 0, 0.2);box-shadow:0 2px 4px rgba(0, 0, 0, 0.2);-webkit-background-clip:padding-box;-moz-background-clip:padding-box;background-clip:padding-box;}.menu-dropdown li,.dropdown-menu li{float:none;display:block;background-color:none;}
.menu-dropdown .divider,.dropdown-menu .divider{height:1px;margin:5px 0;overflow:hidden;background-color:#eee;border-bottom:1px solid #ffffff;}
.topbar .dropdown-menu a,.dropdown-menu a{display:block;padding:4px 15px;clear:both;font-weight:normal;line-height:18px;color:#808080;text-shadow:0 1px 0 #ffffff;}.topbar .dropdown-menu a:hover,.dropdown-menu a:hover,.topbar .dropdown-menu a.hover,.dropdown-menu a.hover{background-color:#dddddd;background-repeat:repeat-x;background-image:-khtml-gradient(linear, left top, left bottom, from(#eeeeee), to(#dddddd));background-image:-moz-linear-gradient(top, #eeeeee, #dddddd);background-image:-ms-linear-gradient(top, #eeeeee, #dddddd);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #eeeeee), color-stop(100%, #dddddd));background-image:-webkit-linear-gradient(top, #eeeeee, #dddddd);background-image:-o-linear-gradient(top, #eeeeee, #dddddd);background-image:linear-gradient(top, #eeeeee, #dddddd);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#dddddd', GradientType=0);color:#404040;text-decoration:none;-webkit-box-shadow:inset 0 1px 0 rgba(0, 0, 0, 0.025),inset 0 -1px rgba(0, 0, 0, 0.025);-moz-box-shadow:inset 0 1px 0 rgba(0, 0, 0, 0.025),inset 0 -1px rgba(0, 0, 0, 0.025);box-shadow:inset 0 1px 0 rgba(0, 0, 0, 0.025),inset 0 -1px rgba(0, 0, 0, 0.025);}
.open .menu,.dropdown.open .menu,.open .dropdown-toggle,.dropdown.open .dropdown-toggle{color:#ffffff;background:#ccc;background:rgba(0, 0, 0, 0.3);}
.open .menu-dropdown,.dropdown.open .menu-dropdown,.open .dropdown-menu,.dropdown.open .dropdown-menu{display:block;}
.tabs,.pills{margin:0 0 18px;padding:0;list-style:none;zoom:1;}.tabs:before,.pills:before,.tabs:after,.pills:after{display:table;content:"";zoom:1;}
.tabs:after,.pills:after{clear:both;}
.tabs>li,.pills>li{float:left;}.tabs>li>a,.pills>li>a{display:block;}
.tabs{border-color:#ddd;border-style:solid;border-width:0 0 1px;}.tabs>li{position:relative;margin-bottom:-1px;}.tabs>li>a{padding:0 15px;margin-right:2px;line-height:34px;border:1px solid transparent;-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0;}.tabs>li>a:hover{text-decoration:none;background-color:#eee;border-color:#eee #eee #ddd;}
.tabs .active>a,.tabs .active>a:hover{color:#808080;background-color:#ffffff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default;}
.tabs .menu-dropdown,.tabs .dropdown-menu{top:35px;border-width:1px;-webkit-border-radius:0 6px 6px 6px;-moz-border-radius:0 6px 6px 6px;border-radius:0 6px 6px 6px;}
.tabs a.menu:after,.tabs .dropdown-toggle:after{border-top-color:#999;margin-top:15px;margin-left:5px;}
.tabs li.open.menu .menu,.tabs .open.dropdown .dropdown-toggle{border-color:#999;}
.tabs li.open a.menu:after,.tabs .dropdown.open .dropdown-toggle:after{border-top-color:#555;}
.pills a{margin:5px 3px 5px 0;padding:0 15px;line-height:30px;text-shadow:0 1px 1px #ffffff;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px;}.pills a:hover{color:#ffffff;text-decoration:none;text-shadow:0 1px 1px rgba(0, 0, 0, 0.25);background-color:#00438a;}
.pills .active a{color:#ffffff;text-shadow:0 1px 1px rgba(0, 0, 0, 0.25);background-color:#0069d6;}
.pills-vertical>li{float:none;}
.tab-content>.tab-pane,.pill-content>.pill-pane,.tab-content>div,.pill-content>div{display:none;}
.tab-content>.active,.pill-content>.active{display:block;}
.breadcrumb{padding:7px 14px;margin:0 0 18px;background-color:#f5f5f5;background-repeat:repeat-x;background-image:-khtml-gradient(linear, left top, left bottom, from(#ffffff), to(#f5f5f5));background-image:-moz-linear-gradient(top, #ffffff, #f5f5f5);background-image:-ms-linear-gradient(top, #ffffff, #f5f5f5);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #ffffff), color-stop(100%, #f5f5f5));background-image:-webkit-linear-gradient(top, #ffffff, #f5f5f5);background-image:-o-linear-gradient(top, #ffffff, #f5f5f5);background-image:linear-gradient(top, #ffffff, #f5f5f5);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#f5f5f5', GradientType=0);border:1px solid #ddd;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-box-shadow:inset 0 1px 0 #ffffff;-moz-box-shadow:inset 0 1px 0 #ffffff;box-shadow:inset 0 1px 0 #ffffff;}.breadcrumb li{display:inline;text-shadow:0 1px 0 #ffffff;}
.breadcrumb .divider{padding:0 5px;color:#bfbfbf;}
.breadcrumb .active a{color:#404040;}
.hero-unit{background-color:#f5f5f5;margin-bottom:30px;padding:60px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;}.hero-unit h1{margin-bottom:0;font-size:60px;line-height:1;letter-spacing:-1px;}
.hero-unit p{font-size:18px;font-weight:200;line-height:27px;}
footer{margin-top:17px;padding-top:17px;border-top:1px solid #eee;}
.page-header{margin-bottom:17px;border-bottom:1px solid #ddd;-webkit-box-shadow:0 1px 0 rgba(255, 255, 255, 0.5);-moz-box-shadow:0 1px 0 rgba(255, 255, 255, 0.5);box-shadow:0 1px 0 rgba(255, 255, 255, 0.5);}.page-header h1{margin-bottom:8px;}
.btn.danger,.alert-message.danger,.btn.danger:hover,.alert-message.danger:hover,.btn.error,.alert-message.error,.btn.error:hover,.alert-message.error:hover,.btn.success,.alert-message.success,.btn.success:hover,.alert-message.success:hover,.btn.info,.alert-message.info,.btn.info:hover,.alert-message.info:hover{color:#ffffff;}
.btn .close,.alert-message .close{font-family:Arial,sans-serif;line-height:18px;}
.btn.danger,.alert-message.danger,.btn.error,.alert-message.error{background-color:#c43c35;background-repeat:repeat-x;background-image:-khtml-gradient(linear, left top, left bottom, from(#ee5f5b), to(#c43c35));background-image:-moz-linear-gradient(top, #ee5f5b, #c43c35);background-image:-ms-linear-gradient(top, #ee5f5b, #c43c35);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #ee5f5b), color-stop(100%, #c43c35));background-image:-webkit-linear-gradient(top, #ee5f5b, #c43c35);background-image:-o-linear-gradient(top, #ee5f5b, #c43c35);background-image:linear-gradient(top, #ee5f5b, #c43c35);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#c43c35', GradientType=0);text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);border-color:#c43c35 #c43c35 #882a25;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);}
.btn.success,.alert-message.success{background-color:#57a957;background-repeat:repeat-x;background-image:-khtml-gradient(linear, left top, left bottom, from(#62c462), to(#57a957));background-image:-moz-linear-gradient(top, #62c462, #57a957);background-image:-ms-linear-gradient(top, #62c462, #57a957);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #62c462), color-stop(100%, #57a957));background-image:-webkit-linear-gradient(top, #62c462, #57a957);background-image:-o-linear-gradient(top, #62c462, #57a957);background-image:linear-gradient(top, #62c462, #57a957);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#57a957', GradientType=0);text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);border-color:#57a957 #57a957 #3d773d;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);}
.btn.info,.alert-message.info{background-color:#339bb9;background-repeat:repeat-x;background-image:-khtml-gradient(linear, left top, left bottom, from(#5bc0de), to(#339bb9));background-image:-moz-linear-gradient(top, #5bc0de, #339bb9);background-image:-ms-linear-gradient(top, #5bc0de, #339bb9);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #5bc0de), color-stop(100%, #339bb9));background-image:-webkit-linear-gradient(top, #5bc0de, #339bb9);background-image:-o-linear-gradient(top, #5bc0de, #339bb9);background-image:linear-gradient(top, #5bc0de, #339bb9);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de', endColorstr='#339bb9', GradientType=0);text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);border-color:#339bb9 #339bb9 #22697d;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);}
.btn{cursor:pointer;display:inline-block;background-color:#e6e6e6;background-repeat:no-repeat;background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), color-stop(25%, #ffffff), to(#e6e6e6));background-image:-webkit-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6);background-image:-moz-linear-gradient(top, #ffffff, #ffffff 25%, #e6e6e6);background-image:-ms-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6);background-image:-o-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6);background-image:linear-gradient(#ffffff, #ffffff 25%, #e6e6e6);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#e6e6e6', GradientType=0);padding:5px 14px 6px;text-shadow:0 1px 1px rgba(255, 255, 255, 0.75);color:#333;font-size:13px;line-height:normal;border:1px solid #ccc;border-bottom-color:#bbb;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.2),0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.2),0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.2),0 1px 2px rgba(0, 0, 0, 0.05);-webkit-transition:0.1s linear all;-moz-transition:0.1s linear all;-ms-transition:0.1s linear all;-o-transition:0.1s linear all;transition:0.1s linear all;}.btn:hover{background-position:0 -15px;color:#333;text-decoration:none;}
.btn:focus{outline:1px dotted #666;}
.btn.primary{color:#ffffff;background-color:#0064cd;background-repeat:repeat-x;background-image:-khtml-gradient(linear, left top, left bottom, from(#049cdb), to(#0064cd));background-image:-moz-linear-gradient(top, #049cdb, #0064cd);background-image:-ms-linear-gradient(top, #049cdb, #0064cd);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #049cdb), color-stop(100%, #0064cd));background-image:-webkit-linear-gradient(top, #049cdb, #0064cd);background-image:-o-linear-gradient(top, #049cdb, #0064cd);background-image:linear-gradient(top, #049cdb, #0064cd);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#049cdb', endColorstr='#0064cd', GradientType=0);text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);border-color:#0064cd #0064cd #003f81;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);}
.btn.active,.btn:active{-webkit-box-shadow:inset 0 2px 4px rgba(0, 0, 0, 0.25),0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 0 2px 4px rgba(0, 0, 0, 0.25),0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:inset 0 2px 4px rgba(0, 0, 0, 0.25),0 1px 2px rgba(0, 0, 0, 0.05);}
.btn.disabled{cursor:default;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);filter:alpha(opacity=65);-khtml-opacity:0.65;-moz-opacity:0.65;opacity:0.65;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;}
.btn[disabled]{cursor:default;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);filter:alpha(opacity=65);-khtml-opacity:0.65;-moz-opacity:0.65;opacity:0.65;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;}
.btn.large{font-size:15px;line-height:normal;padding:9px 14px 9px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;}
.btn.small{padding:7px 9px 7px;font-size:11px;}
:root .alert-message,:root .btn{border-radius:0 \0;}
button.btn::-moz-focus-inner,input[type=submit].btn::-moz-focus-inner{padding:0;border:0;}
.close{float:right;color:#000000;font-size:20px;font-weight:bold;line-height:13.5px;text-shadow:0 1px 0 #ffffff;filter:alpha(opacity=25);-khtml-opacity:0.25;-moz-opacity:0.25;opacity:0.25;}.close:hover{color:#000000;text-decoration:none;filter:alpha(opacity=40);-khtml-opacity:0.4;-moz-opacity:0.4;opacity:0.4;}
.alert-message{position:relative;padding:7px 15px;margin-bottom:18px;color:#404040;background-color:#eedc94;background-repeat:repeat-x;background-image:-khtml-gradient(linear, left top, left bottom, from(#fceec1), to(#eedc94));background-image:-moz-linear-gradient(top, #fceec1, #eedc94);background-image:-ms-linear-gradient(top, #fceec1, #eedc94);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #fceec1), color-stop(100%, #eedc94));background-image:-webkit-linear-gradient(top, #fceec1, #eedc94);background-image:-o-linear-gradient(top, #fceec1, #eedc94);background-image:linear-gradient(top, #fceec1, #eedc94);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fceec1', endColorstr='#eedc94', GradientType=0);text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);border-color:#eedc94 #eedc94 #e4c652;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);text-shadow:0 1px 0 rgba(255, 255, 255, 0.5);border-width:1px;border-style:solid;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.25);-moz-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.25);box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.25);}.alert-message .close{margin-top:1px;*margin-top:0;}
.alert-message a{font-weight:bold;color:#404040;}
.alert-message.danger p a,.alert-message.error p a,.alert-message.success p a,.alert-message.info p a{color:#ffffff;}
.alert-message h5{line-height:18px;}
.alert-message p{margin-bottom:0;}
.alert-message div{margin-top:5px;margin-bottom:2px;line-height:28px;}
.alert-message .btn{-webkit-box-shadow:0 1px 0 rgba(255, 255, 255, 0.25);-moz-box-shadow:0 1px 0 rgba(255, 255, 255, 0.25);box-shadow:0 1px 0 rgba(255, 255, 255, 0.25);}
.alert-message.block-message{background-image:none;background-color:#fdf5d9;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);padding:14px;border-color:#fceec1;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;}.alert-message.block-message ul,.alert-message.block-message p{margin-right:30px;}
.alert-message.block-message ul{margin-bottom:0;}
.alert-message.block-message li{color:#404040;}
.alert-message.block-message .alert-actions{margin-top:5px;}
.alert-message.block-message.error,.alert-message.block-message.success,.alert-message.block-message.info{color:#404040;text-shadow:0 1px 0 rgba(255, 255, 255, 0.5);}
.alert-message.block-message.error{background-color:#fddfde;border-color:#fbc7c6;}
.alert-message.block-message.success{background-color:#d1eed1;border-color:#bfe7bf;}
.alert-message.block-message.info{background-color:#ddf4fb;border-color:#c6edf9;}
.alert-message.block-message.danger p a,.alert-message.block-message.error p a,.alert-message.block-message.success p a,.alert-message.block-message.info p a{color:#404040;}
.pagination{height:36px;margin:18px 0;}.pagination ul{float:left;margin:0;border:1px solid #ddd;border:1px solid rgba(0, 0, 0, 0.15);-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:0 1px 2px rgba(0, 0, 0, 0.05);}
.pagination li{display:inline;}
.pagination a{float:left;padding:0 14px;line-height:34px;border-right:1px solid;border-right-color:#ddd;border-right-color:rgba(0, 0, 0, 0.15);*border-right-color:#ddd;text-decoration:none;}
.pagination a:hover,.pagination .active a{background-color:#c7eefe;}
.pagination .disabled a,.pagination .disabled a:hover{background-color:transparent;color:#bfbfbf;}
.pagination .next a{border:0;}
.well{background-color:#f5f5f5;margin-bottom:20px;padding:19px;min-height:20px;border:1px solid #eee;border:1px solid rgba(0, 0, 0, 0.05);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.05);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.05);}.well blockquote{border-color:#ddd;border-color:rgba(0, 0, 0, 0.15);}
.modal-backdrop{background-color:#000000;position:fixed;top:0;left:0;right:0;bottom:0;z-index:10000;}.modal-backdrop.fade{opacity:0;}
.modal-backdrop,.modal-backdrop.fade.in{filter:alpha(opacity=80);-khtml-opacity:0.8;-moz-opacity:0.8;opacity:0.8;}
.modal{position:fixed;top:50%;left:50%;z-index:11000;width:560px;margin:-250px 0 0 -280px;background-color:#ffffff;border:1px solid #999;border:1px solid rgba(0, 0, 0, 0.3);*border:1px solid #999;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);-moz-box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);-webkit-background-clip:padding-box;-moz-background-clip:padding-box;background-clip:padding-box;}.modal .close{margin-top:7px;}
.modal.fade{-webkit-transition:opacity .3s linear, top .3s ease-out;-moz-transition:opacity .3s linear, top .3s ease-out;-ms-transition:opacity .3s linear, top .3s ease-out;-o-transition:opacity .3s linear, top .3s ease-out;transition:opacity .3s linear, top .3s ease-out;top:-25%;}
.modal.fade.in{top:50%;}
.modal-header{border-bottom:1px solid #eee;padding:5px 15px;}
.modal-body{padding:15px;}
.modal-body form{margin-bottom:0;}
.modal-footer{background-color:#f5f5f5;padding:14px 15px 15px;border-top:1px solid #ddd;-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px;-webkit-box-shadow:inset 0 1px 0 #ffffff;-moz-box-shadow:inset 0 1px 0 #ffffff;box-shadow:inset 0 1px 0 #ffffff;zoom:1;margin-bottom:0;}.modal-footer:before,.modal-footer:after{display:table;content:"";zoom:1;}
.modal-footer:after{clear:both;}
.modal-footer .btn{float:right;margin-left:5px;}
.modal .popover,.modal .twipsy{z-index:12000;}
.twipsy{display:block;position:absolute;visibility:visible;padding:5px;font-size:11px;z-index:1000;filter:alpha(opacity=80);-khtml-opacity:0.8;-moz-opacity:0.8;opacity:0.8;}.twipsy.fade.in{filter:alpha(opacity=80);-khtml-opacity:0.8;-moz-opacity:0.8;opacity:0.8;}
.twipsy.above .twipsy-arrow{bottom:0;left:50%;margin-left:-5px;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid #000000;}
.twipsy.left .twipsy-arrow{top:50%;right:0;margin-top:-5px;border-top:5px solid transparent;border-bottom:5px solid transparent;border-left:5px solid #000000;}
.twipsy.below .twipsy-arrow{top:0;left:50%;margin-left:-5px;border-left:5px solid transparent;border-right:5px solid transparent;border-bottom:5px solid #000000;}
.twipsy.right .twipsy-arrow{top:50%;left:0;margin-top:-5px;border-top:5px solid transparent;border-bottom:5px solid transparent;border-right:5px solid #000000;}
.twipsy-inner{padding:3px 8px;background-color:#000000;color:white;text-align:center;max-width:200px;text-decoration:none;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}
.twipsy-arrow{position:absolute;width:0;height:0;}
.popover{position:absolute;top:0;left:0;z-index:1000;padding:5px;display:none;}.popover.above .arrow{bottom:0;left:50%;margin-left:-5px;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid #000000;}
.popover.right .arrow{top:50%;left:0;margin-top:-5px;border-top:5px solid transparent;border-bottom:5px solid transparent;border-right:5px solid #000000;}
.popover.below .arrow{top:0;left:50%;margin-left:-5px;border-left:5px solid transparent;border-right:5px solid transparent;border-bottom:5px solid #000000;}
.popover.left .arrow{top:50%;right:0;margin-top:-5px;border-top:5px solid transparent;border-bottom:5px solid transparent;border-left:5px solid #000000;}
.popover .arrow{position:absolute;width:0;height:0;}
.popover .inner{background:#000000;background:rgba(0, 0, 0, 0.8);padding:3px;overflow:hidden;width:280px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);-moz-box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);}
.popover .title{background-color:#f5f5f5;padding:9px 15px;line-height:1;-webkit-border-radius:3px 3px 0 0;-moz-border-radius:3px 3px 0 0;border-radius:3px 3px 0 0;border-bottom:1px solid #eee;}
.popover .content{background-color:#ffffff;padding:14px;-webkit-border-radius:0 0 3px 3px;-moz-border-radius:0 0 3px 3px;border-radius:0 0 3px 3px;-webkit-background-clip:padding-box;-moz-background-clip:padding-box;background-clip:padding-box;}.popover .content p,.popover .content ul,.popover .content ol{margin-bottom:0;}
.fade{-webkit-transition:opacity 0.15s linear;-moz-transition:opacity 0.15s linear;-ms-transition:opacity 0.15s linear;-o-transition:opacity 0.15s linear;transition:opacity 0.15s linear;opacity:0;}.fade.in{opacity:1;}
.label{padding:1px 3px 2px;font-size:9.75px;font-weight:bold;color:#ffffff;text-transform:uppercase;white-space:nowrap;background-color:#bfbfbf;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;}.label.important{background-color:#c43c35;}
.label.warning{background-color:#f89406;}
.label.success{background-color:#46a546;}
.label.notice{background-color:#62cffc;}
.media-grid{margin-left:-20px;margin-bottom:0;zoom:1;}.media-grid:before,.media-grid:after{display:table;content:"";zoom:1;}
.media-grid:after{clear:both;}
.media-grid li{display:inline;}
.media-grid a{float:left;padding:4px;margin:0 0 18px 20px;border:1px solid #ddd;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:0 1px 1px rgba(0, 0, 0, 0.075);}.media-grid a img{display:block;}
.media-grid a:hover{border-color:#0069d6;-webkit-box-shadow:0 1px 4px rgba(0, 105, 214, 0.25);-moz-box-shadow:0 1px 4px rgba(0, 105, 214, 0.25);box-shadow:0 1px 4px rgba(0, 105, 214, 0.25);}
/* grocery CRUD extra */
input,textarea,select,.uneditable-input{color:#444444;}
/* ------------------ */
@@ -0,0 +1,29 @@
.qq-upload-button {
display:block; /* or inline-block */
padding: 7px 15px;
text-align:center;
border:1px solid #AAA;
color: #555555;
border-radius: 5px;
float:left;
background: #ccc;
background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #ccc), color-stop(0.6, #eee));
background-image: -webkit-linear-gradient(center bottom, #ccc 0%, #eee 60%);
background-image: -moz-linear-gradient(center bottom, #ccc 0%, #eee 60%);
background-image: -o-linear-gradient(bottom, #ccc 0%, #eee 60%);
background-image: -ms-linear-gradient(top, #cccccc 0%,#eeeeee 60%);
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#cccccc', endColorstr='#eeeeee',GradientType=0 );
background-image: linear-gradient(top, #cccccc 0%,#eeeeee 60%);
}
.qq-upload-button:hover {
background: #bbb;
background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #bbb), color-stop(0.6, #ddd));
background-image: -webkit-linear-gradient(center bottom, #bbb 0%, #ddd 60%);
background-image: -moz-linear-gradient(center bottom, #bbb 0%, #ddd 60%);
background-image: -o-linear-gradient(bottom, #bbb 0%, #ddd 60%);
background-image: -ms-linear-gradient(top, #bbbbbb 0%,#dddddd 60%);
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#bbbbbb', endColorstr='#dddddd',GradientType=0 );
background-image: linear-gradient(top, #bbbbbb 0%,#dddddd 60%);
}
.qq-upload-button:focus {outline:1px dotted black;}
@@ -0,0 +1,71 @@
.qq-uploader { position:relative; width: 100%;}
.qq-upload-button {
display:block; /* or inline-block */
padding: 7px 15px;
text-align:center;
border:1px solid #AAA;
color: #555555;
border-radius: 5px;
float:left;
}
.qq-upload-button-hover {
}
.qq-upload-button-focus {outline:1px dotted black;}
.qq-upload-drop-area {
position:absolute; top:0; left:0; width: 510px; height: 35px; z-index:2;
background:#FF9797; text-align:center;
}
.qq-upload-drop-area span {
display:block; position:absolute; top: 50%; width:100%; margin-top:-8px; font-size:16px;
}
.qq-upload-drop-area-active {background:#FF7171;}
.qq-upload-list {margin: 10px 5px 0px 10px; padding:0; list-style: none; float:left;}
.qq-upload-list li { margin:0; padding:0; line-height:15px; font-size:12px; float:left;}
.qq-upload-file, .qq-upload-spinner, .qq-upload-size, .qq-upload-cancel, .qq-upload-failed-text {
margin-right: 7px;
}
.qq-upload-file {}
.qq-upload-spinner {display:inline-block; background: url("loading.gif"); width:15px; height:15px; vertical-align:text-bottom;}
.qq-upload-size,.qq-upload-cancel {font-size:11px;}
.qq-upload-failed-text {display:none;}
.qq-upload-fail .qq-upload-failed-text {display:inline;}
a.qq-upload-cancel
{
color: red !important;
}
/* Grocery CRUD extras */
a.open-file
{
color: #000;
font-weight: bold;
text-decoration: none;
}
a.open-file:hover
{
text-decoration: underline;
}
a.delete-anchor
{
color: red !important;
}
.image-thumbnail img
{
cursor: -moz-zoom-in;
cursor: -webkit-zoom-in;
}
.form-field-box.even .image-thumbnail img
{
border: 4px solid #fff;
}
.form-field-box.odd .image-thumbnail img
{
border: 4px solid #ddd;
}
/* ------------------- */
@@ -0,0 +1,56 @@
@charset 'UTF-8';
/*
* jQuery File Upload UI Plugin CSS 6.0
* https://github.com/blueimp/jQuery-File-Upload
*
* Copyright 2010, Sebastian Tschan
* https://blueimp.net
*
* Licensed under the MIT license:
* http://www.opensource.org/licenses/MIT
*/
.fileinput-button input {
position: absolute;
top: 0;
right: 0;
margin: 0;
border: solid transparent;
border-width: 0 0 100px 200px;
opacity: 0;
filter: alpha(opacity=0);
-moz-transform: translate(-300px, 0) scale(4);
direction: ltr;
cursor: pointer;
}
.fileinput-button {
position: relative;
overflow: hidden;
float: left;
margin-right: 4px;
}
.progressbar,
.progressbar div {
width: 200px;
height: 20px;
-webkit-border-radius: 4px;
-moz-border-radius: 4px;
border-radius: 4px;
-webkit-box-shadow: inset 0 1px 2px 0 rgba(0, 0, 0, 0.3);
-moz-box-shadow: inset 0 1px 2px 0 rgba(0, 0, 0, 0.3);
box-shadow: inset 0 1px 2px 0 rgba(0, 0, 0, 0.3);
background: #fff;
}
.progressbar div {
width: auto;
background: url(progressbar.gif);
}
.fileupload-progressbar {
float: right;
width: 400px;
margin-top: 4px;
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

@@ -0,0 +1,10 @@
<html>
<head>
<title>403 Forbidden</title>
</head>
<body>
<p>Directory access is forbidden.</p>
</body>
</html>
@@ -0,0 +1,10 @@
.ui-timepicker-div .ui-widget-header { margin-bottom: 8px; }
.ui-timepicker-div dl { text-align: left; }
.ui-timepicker-div dl dt { height: 25px; margin-bottom: -25px; }
.ui-timepicker-div dl dd { margin: 0 10px 10px 65px; }
.ui-timepicker-div td { font-size: 90%; }
.ui-tpicker-grid-label { background: none; border: none; margin: 0; padding: 0; }
.ui-timepicker-rtl{ direction: rtl; }
.ui-timepicker-rtl dl { text-align: right; }
.ui-timepicker-rtl dl dd { margin: 0 65px 10px 10px; }
@@ -0,0 +1,116 @@
@CHARSET "UTF-8";
/*demo page css*/
.demoHeaders {
margin-top: 2em;
}
#dialog_link {
padding: .4em 1em .4em 20px;
text-decoration: none;
position: relative;
}
#dialog_link span.ui-icon {
margin: 0 5px 0 0;
position: absolute;
left: .2em;
top: 50%;
margin-top: -8px;
}
ul#icons {
margin: 0;
padding: 0;
}
ul#icons li {
margin: 2px;
position: relative;
padding: 4px 0;
cursor: pointer;
float: left;
list-style: none;
}
ul#icons span.ui-icon {
float: left;
margin: 0 4px;
}
.selHrs, .selMins {
width:2.5em;
}
.selHrs {
margin-left:5px;
}
.dayPeriod {
display:inline-block;
width:20px;
}
.slider {
height:120px;
float:left;
margin:10px
}
#tpSelectedTime {
margin-bottom:0;
border-bottom:1px solid #aaa;
padding:5px;
color:#000;
background:#fff;
text-transform:none;
}
#tpSelectedTime span {
fon-weight:bold;
}
#datepicker {
}
#pickerplug {
overflow:hidden;
display:none;
position:absolute;
top:200px;
left:300px;
padding:0;
margin:0;
z-index:500;
}
#pickerplug li {
display:block;
float:left;
}
#timepicker {
border:1px solid #aaa;
background:#fff;
}
#timepicker ul {
overflow:hidden;
padding:5px;
}
#timepicker ul li {
position:relative;
display:block;
float:left;
width:50px;
}
#timepicker ul li h4 {
width:100%;
background:transparent;
color:#000;
text-align:center;
}
#timepicker ul li .slider {
position:relative;
left:10px;
/* background:#FBF9EE url(images/ui-bg_glass_55_fbf9ee_1x400.png) repeat-x scroll 50% 50%;
border:1px solid #FCEFA1;*/
}
@@ -0,0 +1,32 @@
/* Multiselect
----------------------------------*/
.ui-multiselect { border: solid 1px; font-size: 0.8em; }
.ui-multiselect ul { -moz-user-select: none; }
.ui-multiselect li { margin: 0; padding: 0; cursor: default; line-height: 20px; height: 20px; font-size: 11px; list-style: none; }
.ui-multiselect li a { color: #999; text-decoration: none; padding: 0; display: block; float: left; cursor: pointer;}
.ui-multiselect li.ui-draggable-dragging { padding-left: 10px; }
.ui-multiselect div.selected { position: relative; padding: 0; margin: 0; border: 0; float:left; }
.ui-multiselect ul.selected { position: relative; padding: 0; overflow: auto; overflow-x: hidden; background: #fff; margin: 0; list-style: none; border: 0; position: relative; width: 100%; }
.ui-multiselect ul.selected li { }
.ui-multiselect div.available { position: relative; padding: 0; margin: 0; border: 0; float:left; border-left: 1px solid; }
.ui-multiselect ul.available { position: relative; padding: 0; overflow: auto; overflow-x: hidden; background: #fff; margin: 0; list-style: none; border: 0; width: 100%; }
.ui-multiselect ul.available li { padding-left: 10px; }
.ui-multiselect .ui-state-default { border: none; margin-bottom: 1px; position: relative; padding-left: 20px;}
.ui-multiselect .ui-state-hover { border: none; }
.ui-multiselect .ui-widget-header {border: none; font-size: 11px; margin-bottom: 1px;}
.ui-multiselect .add-all { float: right; padding: 10px 7px 10px 0; font-size: 11px; }
.ui-multiselect .remove-all { float: right; padding: 10px 7px 11px 0; font-size: 11px; }
.ui-multiselect .search { float: left; padding:0;}
.ui-multiselect .count { float: left; padding: 10px 7px;}
.ui-multiselect li span.ui-icon-arrowthick-2-n-s { position: absolute; left: 2px; }
.ui-multiselect li a.action { position: absolute; right: 2px; top: 2px; }
.ui-multiselect input.search { height: 20px !important; padding: 2px !important; opacity: 0.5 !important; margin: 4px !important; width: 150px !important; }
select.multiselect{ width:704px; }
Binary file not shown.

After

Width:  |  Height:  |  Size: 143 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 143 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

@@ -0,0 +1,644 @@
/*
Uniform Theme: Uniform Default
Version: 1.8
By: Josh Pyles
License: MIT License
---
For use with the Uniform plugin:
http://pixelmatrixdesign.com/uniform/
---
Generated by Uniform Theme Generator:
http://pixelmatrixdesign.com/uniform/themer.html
*/
/* Global Declaration */
div.selector,
div.selector span,
div.checker span,
div.radio span,
div.uploader,
div.uploader span.action,
div.button,
div.button span {
background-image: url(images/sprite.png);
background-repeat: no-repeat;
-webkit-font-smoothing: antialiased;
}
.selector,
.radio,
.checker,
.uploader,
.button,
.selector *,
.radio *,
.checker *,
.uploader *,
.button *{
margin: 0;
padding: 0;
}
/* INPUT & TEXTAREA */
input.text,
input.email,
input.search,
input.tel,
input.url,
input.datetime,
input.date,
input.month,
input.week,
input.time,
input.datetime-local,
input.number,
input.color,
input.password,
select.uniform-multiselect,
textarea.uniform {
font-size: 12px;
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
font-weight: normal;
padding: 3px;
color: #777;
background: url('images/bg-input-focus.png') repeat-x 0px 0px;
background: url('images/bg-input.png') repeat-x 0px 0px;
border-top: solid 1px #aaa;
border-left: solid 1px #aaa;
border-bottom: solid 1px #ccc;
border-right: solid 1px #ccc;
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
border-radius: 3px;
outline: 0;
}
/* remove default webkit and possible mozilla .search styles */
input.search, input.search:active {
-moz-appearance: none;
-webkit-appearance: none;
}
input.text:focus,
input.email:focus,
input.search:focus,
input.tel:focus,
input.url:focus,
input.datetime:focus,
input.date:focus,
input.month:focus,
input.week:focus,
input.time:focus,
input.datetime-local:focus,
input.number:focus,
input.color:focus,
input.password:focus,
select.uniform-multiselect:focus,
textarea.uniform:focus {
-webkit-box-shadow: 0px 0px 4px rgba(0,0,0,0.3);
-moz-box-shadow: 0px 0px 4px rgba(0,0,0,0.3);
box-shadow: 0px 0px 4px rgba(0,0,0,0.3);
border-color: #999;
background: url('images/bg-input-focus.png') repeat-x 0px 0px;
}
/* SPRITES */
/* Select */
div.selector {
background-position: -483px -130px;
line-height: 26px;
height: 26px;
}
div.selector span {
background-position: right 0px;
height: 26px;
line-height: 26px;
}
div.selector select {
/* change these to adjust positioning of select element */
top: 0px;
left: 0px;
}
div.selector:active,
div.selector.active {
background-position: -483px -156px;
}
div.selector:active span,
div.selector.active span {
background-position: right -26px;
}
div.selector.focus, div.selector.hover, div.selector:hover {
background-position: -483px -182px;
}
div.selector.focus span, div.selector.hover span, div.selector:hover span {
background-position: right -52px;
}
div.selector.focus:active,
div.selector.focus.active,
div.selector:hover:active,
div.selector.active:hover {
background-position: -483px -208px;
}
div.selector.focus:active span,
div.selector:hover:active span,
div.selector.active:hover span,
div.selector.focus.active span {
background-position: right -78px;
}
div.selector.disabled {
background-position: -483px -234px;
}
div.selector.disabled span {
background-position: right -104px;
}
/* Checkbox */
div.checker {
width: 19px;
height: 19px;
}
div.checker input {
width: 19px;
height: 19px;
}
div.checker span {
background-position: 0px -260px;
height: 19px;
width: 19px;
}
div.checker:active span,
div.checker.active span {
background-position: -19px -260px;
}
div.checker.focus span,
div.checker:hover span {
background-position: -38px -260px;
}
div.checker.focus:active span,
div.checker:active:hover span,
div.checker.active:hover span,
div.checker.focus.active span {
background-position: -57px -260px;
}
div.checker span.checked {
background-position: -76px -260px;
}
div.checker:active span.checked,
div.checker.active span.checked {
background-position: -95px -260px;
}
div.checker.focus span.checked,
div.checker:hover span.checked {
background-position: -114px -260px;
}
div.checker.focus:active span.checked,
div.checker:hover:active span.checked,
div.checker.active:hover span.checked,
div.checker.active.focus span.checked {
background-position: -133px -260px;
}
div.checker.disabled span,
div.checker.disabled:active span,
div.checker.disabled.active span {
background-position: -152px -260px;
}
div.checker.disabled span.checked,
div.checker.disabled:active span.checked,
div.checker.disabled.active span.checked {
background-position: -171px -260px;
}
/* Radio */
div.radio {
width: 18px;
height: 18px;
}
div.radio input {
width: 18px;
height: 18px;
}
div.radio span {
height: 18px;
width: 18px;
background-position: 0px -279px;
}
div.radio:active span,
div.radio.active span {
background-position: -18px -279px;
}
div.radio.focus span,
div.radio:hover span {
background-position: -36px -279px;
}
div.radio.focus:active span,
div.radio:active:hover span,
div.radio.active:hover span,
div.radio.active.focus span {
background-position: -54px -279px;
}
div.radio span.checked {
background-position: -72px -279px;
}
div.radio:active span.checked,
div.radio.active span.checked {
background-position: -90px -279px;
}
div.radio.focus span.checked, div.radio:hover span.checked {
background-position: -108px -279px;
}
div.radio.focus:active span.checked,
div.radio:hover:active span.checked,
div.radio.focus.active span.checked,
div.radio.active:hover span.checked {
background-position: -126px -279px;
}
div.radio.disabled span,
div.radio.disabled:active span,
div.radio.disabled.active span {
background-position: -144px -279px;
}
div.radio.disabled span.checked,
div.radio.disabled:active span.checked,
div.radio.disabled.active span.checked {
background-position: -162px -279px;
}
/* Uploader */
div.uploader {
background-position: 0px -297px;
height: 28px;
}
div.uploader span.action {
background-position: right -409px;
height: 24px;
line-height: 24px;
}
div.uploader span.filename {
height: 24px;
/* change this line to adjust positioning of filename area */
margin: 2px 0px 2px 2px;
line-height: 24px;
}
div.uploader.focus,
div.uploader.hover,
div.uploader:hover {
background-position: 0px -353px;
}
div.uploader.focus span.action,
div.uploader.hover span.action,
div.uploader:hover span.action {
background-position: right -437px;
}
div.uploader.active span.action,
div.uploader:active span.action {
background-position: right -465px;
}
div.uploader.focus.active span.action,
div.uploader:focus.active span.action,
div.uploader.focus:active span.action,
div.uploader:focus:active span.action {
background-position: right -493px;
}
div.uploader.disabled {
background-position: 0px -325px;
}
div.uploader.disabled span.action {
background-position: right -381px;
}
div.button {
background-position: 0px -523px;
}
div.button span {
background-position: right -643px;
}
div.button.focus,
div.button:focus,
div.button:hover,
div.button.hover {
background-position: 0px -553px;
}
div.button.focus span,
div.button:focus span,
div.button:hover span,
div.button.hover span {
background-position: right -673px;
}
div.button.active,
div.button:active {
background-position: 0px -583px;
}
div.button.active span,
div.button:active span {
background-position: right -703px;
color: #555;
}
div.button.disabled,
div.button:disabled {
background-position: 0px -613px;
}
div.button.disabled span,
div.button:disabled span {
background-position: right -733px;
color: #bbb;
cursor: default;
}
/* PRESENTATION */
/* Button */
div.button {
height: 30px;
}
div.button span {
margin-left: 13px;
height: 22px;
padding-top: 8px;
font-weight: bold;
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
font-size: 12px;
letter-spacing: 1px;
text-transform: uppercase;
padding-left: 2px;
padding-right: 15px;
}
/* Select */
div.selector {
width: 190px;
font-size: 12px;
}
div.selector select {
min-width: 190px;
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
font-size: 12px;
border: solid 1px #fff;
}
div.selector span {
padding: 0px 25px 0px 2px;
cursor: pointer;
}
div.selector span {
color: #666;
width: 158px;
text-shadow: 0 1px 0 #fff;
}
div.selector.disabled span {
color: #bbb;
}
/* Checker */
div.checker {
margin-right: 5px;
}
/* Radio */
div.radio {
margin-right: 3px;
}
/* Uploader */
div.uploader {
width: 190px;
cursor: pointer;
}
div.uploader span.action {
width: 85px;
text-align: center;
text-shadow: #fff 0px 1px 0px;
background-color: #fff;
font-size: 11px;
font-weight: bold;
}
div.uploader span.filename {
color: #777;
width: 82px;
border-right: solid 1px #bbb;
font-size: 11px;
}
div.uploader input {
width: 190px;
}
div.uploader.disabled span.action {
color: #aaa;
}
div.uploader.disabled span.filename {
border-color: #ddd;
color: #aaa;
}
/*
CORE FUNCTIONALITY
Not advised to edit stuff below this line
-----------------------------------------------------
*/
.selector,
.checker,
.button,
.radio,
.uploader {
display: -moz-inline-box;
display: inline-block;
vertical-align: middle;
zoom: 1;
*display: inline;
}
.selector select:focus, .radio input:focus, .checker input:focus, .uploader input:focus {
outline: 0;
}
/* Button */
div.button a,
div.button button,
div.button input {
position: absolute;
}
div.button {
cursor: pointer;
position: relative;
}
div.button span {
display: -moz-inline-box;
display: inline-block;
line-height: 1;
text-align: center;
}
/* Select */
div.selector {
position: relative;
padding-left: 10px;
overflow: hidden;
}
div.selector span {
display: block;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
div.selector select {
position: absolute;
opacity: 0;
filter: alpha(opacity=0);
-moz-opacity: 0;
height: 25px;
border: none;
background: none;
}
/* Checker */
div.checker {
position: relative;
}
div.checker span {
display: -moz-inline-box;
display: inline-block;
text-align: center;
}
div.checker input {
opacity: 0;
filter: alpha(opacity=0);
-moz-opacity: 0;
display: inline-block;
background: none;
}
/* Radio */
div.radio {
position: relative;
}
div.radio span {
display: -moz-inline-box;
display: inline-block;
text-align: center;
}
div.radio input {
opacity: 0;
filter: alpha(opacity=0);
-moz-opacity: 0;
text-align: center;
display: inline-block;
background: none;
}
/* Uploader */
div.uploader {
position: relative;
overflow: hidden;
cursor: default;
}
div.uploader span.action {
float: left;
display: inline;
padding: 2px 0px;
overflow: hidden;
cursor: pointer;
}
div.uploader span.filename {
padding: 0px 10px;
float: left;
display: block;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
cursor: default;
}
div.uploader input {
opacity: 0;
filter: alpha(opacity=0);
-moz-opacity: 0;
position: absolute;
top: 0;
right: 0;
bottom: 0;
float: right;
height: 25px;
border: none;
cursor: default;
}
+10
View File
@@ -0,0 +1,10 @@
<html>
<head>
<title>403 Forbidden</title>
</head>
<body>
<p>Directory access is forbidden.</p>
</body>
</html>
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 274 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 271 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 387 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 272 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 375 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 368 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 384 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 360 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

@@ -0,0 +1,10 @@
<html>
<head>
<title>403 Forbidden</title>
</head>
<body>
<p>Directory access is forbidden.</p>
</body>
</html>
File diff suppressed because one or more lines are too long
+10
View File
@@ -0,0 +1,10 @@
<html>
<head>
<title>403 Forbidden</title>
</head>
<body>
<p>Directory access is forbidden.</p>
</body>
</html>
+7
View File
@@ -0,0 +1,7 @@
/*
Copyright (c) 2008 Ryan Grove <ryan@wonko.com>. All rights reserved.
Licensed under the BSD License:
http://www.opensource.org/licenses/bsd-license.html
Version: 1.0.4
*/
var LazyLoad=function(){var E=document,D=null,A=[],C;function B(){if(C){return }var G=navigator.userAgent,F;C={gecko:0,ie:0,webkit:0};F=G.match(/AppleWebKit\/(\S*)/);if(F&&F[1]){C.webkit=parseFloat(F[1])}else{F=G.match(/MSIE\s([^;]*)/);if(F&&F[1]){C.ie=parseFloat(F[1])}else{if((/Gecko\/(\S*)/).test(G)){C.gecko=1;F=G.match(/rv:([^\s\)]*)/);if(F&&F[1]){C.gecko=parseFloat(F[1])}}}}}return{load:function(K,L,J,I){var H=E.getElementsByTagName("head")[0],G,F;if(K){K=K.constructor===Array?K:[K];for(G=0;G<K.length;++G){A.push({url:K[G],callback:G===K.length-1?L:null,obj:J,scope:I})}}if(D||!(D=A.shift())){return }B();F=E.createElement("script");F.src=D.url;if(C.ie){F.onreadystatechange=function(){if(this.readyState==="loaded"||this.readyState==="complete"){LazyLoad.requestComplete()}}}else{if(C.gecko||C.webkit>=420){F.onload=LazyLoad.requestComplete;F.onerror=LazyLoad.requestComplete}}H.appendChild(F);if(!C.ie&&!C.gecko&&!(C.webkit>=420)){F=E.createElement("script");F.appendChild(E.createTextNode("LazyLoad.requestComplete();"));H.appendChild(F)}},loadOnce:function(N,O,L,P,G){var H=[],I=E.getElementsByTagName("script"),M,J,K,F;N=N.constructor===Array?N:[N];for(M=0;M<N.length;++M){K=false;F=N[M];for(J=0;J<I.length;++J){if(F===I[J].src){K=true;break}}if(!K){H.push(F)}}if(H.length>0){LazyLoad.load(H,O,L,P)}else{if(G){if(L){if(P){O.call(L)}else{O.call(window,L)}}else{O.call()}}}},requestComplete:function(){if(D.callback){if(D.obj){if(D.scope){D.callback.call(D.obj)}else{D.callback.call(window,D.obj)}}else{D.callback.call()}}D=null;if(A.length){LazyLoad.load()}}}}();
+82
View File
@@ -0,0 +1,82 @@
var js_libraries = [];
var fnOpenEditForm = function(this_element){
var href_url = this_element.attr("href");
var dialog_height = $(window).height() - 80;
//Close all
$(".ui-dialog-content").dialog("close");
$.ajax({
url: href_url,
data: {
is_ajax: 'true'
},
type: 'post',
dataType: 'json',
beforeSend: function() {
this_element.closest('.flexigrid').addClass('loading-opacity');
this_element.closest('.dataTablesContainer').addClass('loading-opacity');
},
complete: function(){
this_element.closest('.flexigrid').removeClass('loading-opacity');
this_element.closest('.dataTablesContainer').removeClass('loading-opacity');
},
success: function (data) {
if (typeof CKEDITOR !== 'undefined' && typeof CKEDITOR.instances !== 'undefined') {
$.each(CKEDITOR.instances,function(index){
delete CKEDITOR.instances[index];
});
}
LazyLoad.loadOnce(data.js_lib_files);
LazyLoad.load(data.js_config_files);
$.each(data.css_files,function(index,css_file){
load_css_file(css_file);
});
$("<div/>").html(data.output).dialog({
width: 910,
modal: true,
height: dialog_height,
close: function(){
$(this).remove();
},
open: function(){
var this_dialog = $(this);
$('#cancel-button').click(function(){
this_dialog.dialog("close");
});
}
});
}
});
};
var add_edit_button_listener = function () {
//If dialog AJAX forms is turned on from grocery CRUD config
if (dialog_forms) {
$('.edit_button,.add_button').unbind('click');
$('.edit_button,.add_button').click(function(){
fnOpenEditForm($(this));
return false;
});
}
}
var load_css_file = function(css_file) {
if ($('head').find('link[href="'+css_file+'"]').length == 0) {
$('head').append($('<link/>').attr("type","text/css")
.attr("rel","stylesheet").attr("href",css_file));
}
};
+10
View File
@@ -0,0 +1,10 @@
<html>
<head>
<title>403 Forbidden</title>
</head>
<body>
<p>Directory access is forbidden.</p>
</body>
</html>
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+87
View File
@@ -0,0 +1,87 @@
(function() {
(function($) {
var my_timer = null;
var my_timer2 = null;
return $.fn.ajaxChosen = function(options, callback) {
var select;
select = this;
this.chosen({allow_single_deselect:true});
this.next('.chzn-container').find(".search-field > input").bind('keyup', function() {
var field, val;
val = $.trim($(this).attr('value'));
if (val.length < 2 || val === $(this).data('prevVal')) return false;
if (this.timer) clearTimeout(this.timer);
$(this).data('prevVal', val);
field = $(this);
options.data = {
term: val,
field_name: select.attr('name') //Inserted for grocery CRUD
};
if (typeof success === "undefined" || success === null) {
success = options.success;
}
options.success = function(data) {
var items;
if (!(data != null)) return;
select.find('option').each(function() {
if (!$(this).is(":selected")) return $(this).remove();
});
items = callback(data);
$.each(items, function(value, text) {
return $("<option />").attr('value', value).html(text).appendTo(select);
});
select.trigger("liszt:updated");
field.attr('value', val);
if (typeof success !== "undefined" && success !== null) return success();
};
if(my_timer !== null) clearTimeout(my_timer);
my_timer = setTimeout(function() {
return $.ajax(options);
}, 800);
return my_timer;
});
return this.next('.chzn-container').find(".chzn-search > input").bind('keyup', function() {
var field, val;
val = $.trim($(this).attr('value'));
if (val.length < 2 || val === $(this).data('prevVal')) return false;
field = $(this);
options.data = {
term: val,
field_name: select.attr('name') //Inserted for grocery CRUD
};
if (typeof success === "undefined" || success === null) {
success = options.success;
}
options.success = function(data) {
var items;
if (!(data != null)) return;
select.find('option').each(function() {
return $(this).remove();
});
items = callback(data);
$.each(items, function(value, text) {
return $("<option />").attr('value', value).html(text).appendTo(select);
});
select.trigger("liszt:updated");
field.attr('value', val);
if (typeof success !== "undefined" && success !== null) return success();
};
if(my_timer2 !== null) clearTimeout(my_timer2);
my_timer2 = setTimeout(function() {
return $.ajax(options);
}, 800);
return my_timer2;
});
};
})(jQuery);
}).call(this);
@@ -0,0 +1,10 @@
<html>
<head>
<title>403 Forbidden</title>
</head>
<body>
<p>Directory access is forbidden.</p>
</body>
</html>
@@ -0,0 +1,17 @@
$(function(){
$('.datetime-input').datetimepicker({
timeFormat: 'HH:mm:ss',
dateFormat: js_date_format,
showButtonPanel: true,
changeMonth: true,
changeYear: true
});
$('.datetime-input-clear').button();
$('.datetime-input-clear').click(function(){
$(this).parent().find('.datetime-input').val("");
return false;
});
});
@@ -0,0 +1,3 @@
$(function(){
$(".chosen-select,.chosen-multiple-select").chosen({allow_single_deselect:true});
});
@@ -0,0 +1,4 @@
$(function(){
$( 'textarea.texteditor' ).ckeditor({toolbar:'Full'});
$( 'textarea.mini-texteditor' ).ckeditor({toolbar:'Basic',width:700});
});
@@ -0,0 +1,16 @@
$(function(){
$('.datepicker-input').datepicker({
dateFormat: js_date_format,
showButtonPanel: true,
changeMonth: true,
changeYear: true
});
$('.datepicker-input-clear').button();
$('.datepicker-input-clear').click(function(){
$(this).parent().find('.datepicker-input').val("");
return false;
});
});
@@ -0,0 +1,14 @@
$(function(){
$('.datetime-input').datetime({
userLang : 'en',
americanMode: true,
});
$('.datetime-input-clear').button();
$('.datetime-input-clear').click(function(){
$(this).parent().find('.datetime-input').val("");
return false;
});
});
@@ -0,0 +1,9 @@
$(function(){
$('.image-thumbnail').fancybox({
'transitionIn' : 'elastic',
'transitionOut' : 'elastic',
'speedIn' : 600,
'speedOut' : 200,
'overlayShow' : false
});
});
@@ -0,0 +1,160 @@
function show_upload_button(unique_id, uploader_element)
{
$('#upload-state-message-'+unique_id).html('');
$("#loading-"+unique_id).hide();
$('#upload-button-'+unique_id).slideDown('fast');
$("input[rel="+uploader_element.attr('name')+"]").val('');
$('#success_'+unique_id).slideUp('fast');
}
function load_fancybox(elem)
{
elem.fancybox({
'transitionIn' : 'elastic',
'transitionOut' : 'elastic',
'speedIn' : 600,
'speedOut' : 200,
'overlayShow' : false
});
}
$(function(){
$('.gc-file-upload').each(function(){
var unique_id = $(this).attr('id');
var uploader_url = $(this).attr('rel');
var uploader_element = $(this);
var delete_url = $('#delete_url_'+unique_id).attr('href');
eval("var file_upload_info = upload_info_"+unique_id+"");
$(this).fileupload({
dataType: 'json',
url: uploader_url,
dropZone: $(this).closest('.form-field-box'),
cache: false,
acceptFileTypes: file_upload_info.accepted_file_types,
beforeSend: function(){
$('#upload-state-message-'+unique_id).html(string_upload_file);
$("#loading-"+unique_id).show();
$("#upload-button-"+unique_id).slideUp("fast");
},
limitMultiFileUploads: 1,
maxFileSize: file_upload_info.max_file_size,
send: function (e, data) {
var errors = '';
if (data.files.length > 1) {
errors += error_max_number_of_files + "\n" ;
}
$.each(data.files,function(index, file){
if (!(data.acceptFileTypes.test(file.type) || data.acceptFileTypes.test(file.name))) {
errors += error_accept_file_types + "\n";
}
if (data.maxFileSize && file.size > data.maxFileSize) {
errors += error_max_file_size + "\n";
}
if (typeof file.size === 'number' && file.size < data.minFileSize) {
errors += error_min_file_size + "\n";
}
});
if(errors != '')
{
alert(errors);
return false;
}
return true;
},
done: function (e, data) {
if(typeof data.result.success != 'undefined' && data.result.success)
{
$("#loading-"+unique_id).hide();
$("#progress-"+unique_id).html('');
$.each(data.result.files, function (index, file) {
$('#upload-state-message-'+unique_id).html('');
$("input[rel="+uploader_element.attr('name')+"]").val(file.name);
var file_name = file.name;
var is_image = (file_name.substr(-4) == '.jpg'
|| file_name.substr(-4) == '.png'
|| file_name.substr(-5) == '.jpeg'
|| file_name.substr(-4) == '.gif'
|| file_name.substr(-5) == '.tiff')
? true : false;
if(is_image)
{
$('#file_'+unique_id).addClass('image-thumbnail');
load_fancybox($('#file_'+unique_id));
$('#file_'+unique_id).html('<img src="'+file.url+'" height="50" />');
}
else
{
$('#file_'+unique_id).removeClass('image-thumbnail');
$('#file_'+unique_id).unbind("click");
$('#file_'+unique_id).html(file_name);
}
$('#file_'+unique_id).attr('href',file.url);
$('#hidden_'+unique_id).val(file_name);
$('#success_'+unique_id).fadeIn('slow');
$('#delete_url_'+unique_id).attr('rel',file_name);
$('#upload-button-'+unique_id).slideUp('fast');
});
}
else if(typeof data.result.message != 'undefined')
{
alert(data.result.message);
show_upload_button(unique_id, uploader_element);
}
else
{
alert(error_on_uploading);
show_upload_button(unique_id, uploader_element);
}
},
autoUpload: true,
error: function()
{
alert(error_on_uploading);
show_upload_button(unique_id, uploader_element);
},
fail: function(e, data)
{
// data.errorThrown
// data.textStatus;
// data.jqXHR;
alert(error_on_uploading);
show_upload_button(unique_id, uploader_element);
},
progress: function (e, data) {
$("#progress-"+unique_id).html(string_progress + parseInt(data.loaded / data.total * 100, 10) + '%');
}
});
$('#delete_'+unique_id).click(function(){
if( confirm(message_prompt_delete_file) )
{
var file_name = $('#delete_url_'+unique_id).attr('rel');
$.ajax({
url: delete_url+"/"+file_name,
cache: false,
success:function(){
show_upload_button(unique_id, uploader_element);
},
beforeSend: function(){
$('#upload-state-message-'+unique_id).html(string_delete_file);
$('#success_'+unique_id).hide();
$("#loading-"+unique_id).show();
$("#upload-button-"+unique_id).slideUp("fast");
}
});
}
return false;
});
});
});
@@ -0,0 +1,35 @@
// ----------------------------------------------------------------------------
// markItUp!
// ----------------------------------------------------------------------------
// Copyright (C) 2011 Jay Salvat
// http://markitup.jaysalvat.com/
// ----------------------------------------------------------------------------
// Html tags
// http://en.wikipedia.org/wiki/html
// ----------------------------------------------------------------------------
// Basic set. Feel free to add more tags
// ----------------------------------------------------------------------------
var mySettings = {
onShiftEnter: {keepDefault:false, replaceWith:'<br />\n'},
onCtrlEnter: {keepDefault:false, openWith:'\n<p>', closeWith:'</p>'},
onTab: {keepDefault:false, replaceWith:' '},
markupSet: [
{name:'Bold', key:'B', openWith:'(!(<strong>|!|<b>)!)', closeWith:'(!(</strong>|!|</b>)!)' },
{name:'Italic', key:'I', openWith:'(!(<em>|!|<i>)!)', closeWith:'(!(</em>|!|</i>)!)' },
{name:'Stroke through', key:'S', openWith:'<del>', closeWith:'</del>' },
{separator:'---------------' },
{name:'Bulleted List', openWith:' <li>', closeWith:'</li>', multiline:true, openBlockWith:'<ul>\n', closeBlockWith:'\n</ul>'},
{name:'Numeric List', openWith:' <li>', closeWith:'</li>', multiline:true, openBlockWith:'<ol>\n', closeBlockWith:'\n</ol>'},
{separator:'---------------' },
{name:'Picture', key:'P', replaceWith:'<img src="[![Source:!:http://]!]" alt="[![Alternative text]!]" />' },
{name:'Link', key:'L', openWith:'<a href="[![Link:!:http://]!]"(!( title="[![Title]!]")!)>', closeWith:'</a>', placeHolder:'Your text to link...' },
{separator:'---------------' },
{name:'Clean', className:'clean', replaceWith:function(markitup) { return markitup.selection.replace(/<(.*?)>/g, "") } },
{name:'Preview', className:'preview', call:'preview'}
]
};
$(document).ready(function() {
$('.texteditor').markItUp(mySettings);
$( 'textarea.mini-texteditor' ).markItUp(mySettings);
});
@@ -0,0 +1,3 @@
$(function(){
$(".multiselect").multiselect();
});
@@ -0,0 +1,53 @@
function success_message(success_message)
{
noty({
text: success_message,
type: 'success',
dismissQueue: true,
layout: 'top',
callback: {
afterShow: function() {
setTimeout(function(){
$.noty.closeAll();
},7000);
}
}
});
}
function error_message(error_message)
{
noty({
text: error_message,
type: 'error',
layout: 'top',
dismissQueue: true
});
}
function form_success_message(success_message)
{
$('#report-success').slideUp('fast');
$('#report-success').html(success_message);
if ($('#report-success').closest('.ui-dialog').length !== 0) {
$('.go-to-edit-form').click(function(){
fnOpenEditForm($(this));
return false;
});
}
$('#report-success').slideDown('normal');
$('#report-error').slideUp('fast').html('');
}
function form_error_message(error_message)
{
$('#report-error').slideUp('fast');
$('#report-error').html(error_message);
$('#report-error').slideDown('normal');
$('#report-success').slideUp('fast').html('');
}
@@ -0,0 +1,36 @@
$(function(){
$('.numeric').numeric();
$('.numeric').keydown(function(e){
if(e.keyCode == 38)
{
if(IsNumeric($(this).val()))
{
var new_number = parseInt($(this).val()) + 1;
$(this).val(new_number);
}else if($(this).val().length == 0)
{
var new_number = 1;
$(this).val(new_number);
}
}
else if(e.keyCode == 40)
{
if(IsNumeric($(this).val()))
{
var new_number = parseInt($(this).val()) - 1;
$(this).val(new_number);
}else if($(this).val().length == 0)
{
var new_number = -1;
$(this).val(new_number);
}
}
});
});
function IsNumeric(input)
{
return (input - 0) == input && input.length > 0;
}
@@ -0,0 +1,47 @@
$(function() {
var tinymce_path = default_texteditor_path+'/tiny_mce/';
var tinymce_options = {
// Location of TinyMCE script
script_url : tinymce_path +"tiny_mce.js",
// General options
theme : "advanced",
plugins : "pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template,advlist",
// Theme options
theme_advanced_buttons1 : "save,newdocument,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,styleselect,formatselect,fontselect,fontsizeselect",
theme_advanced_buttons2 : "cut,copy,paste,pastetext,pasteword,|,search,replace,|,bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code,|,insertdate,inserttime,preview,|,forecolor,backcolor",
theme_advanced_buttons3 : "tablecontrols,|,hr,removeformat,visualaid,|,sub,sup,|,charmap,emotions,iespell,media,advhr,|,print,|,ltr,rtl,|,fullscreen",
theme_advanced_buttons4 : "insertlayer,moveforward,movebackward,absolute,|,styleprops,|,cite,abbr,acronym,del,ins,attribs,|,visualchars,nonbreaking,template,pagebreak",
theme_advanced_toolbar_location : "top",
theme_advanced_toolbar_align : "left",
theme_advanced_statusbar_location : "bottom",
theme_advanced_resizing : true,
entity_encoding : "raw",
/*
// Example content CSS (should be your site CSS)
content_css : "css/content.css",
*/
// Drop lists for link/image/media/template dialogs
template_external_list_url : tinymce_path +"lists/template_list.js",
external_link_list_url : tinymce_path +"lists/link_list.js",
external_image_list_url : tinymce_path +"lists/image_list.js",
media_external_list_url : tinymce_path +"lists/media_list.js",
// Replace values for the template plugin
template_replace_values : {
username : "Some User",
staffid : "991234"
}
};
$('textarea.texteditor').tinymce(tinymce_options);
var minimal_tinymce_options = $.extend({}, tinymce_options);
minimal_tinymce_options.theme = "simple";
$('textarea.mini-texteditor').tinymce(minimal_tinymce_options);
});
@@ -0,0 +1,3 @@
$(function(){
$(".radio-uniform").uniform();
});
@@ -0,0 +1,10 @@
<html>
<head>
<title>403 Forbidden</title>
</head>
<body>
<p>Directory access is forbidden.</p>
</body>
</html>
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,69 @@
/*
* jQuery timepicker addon
* By: Trent Richardson [http://trentrichardson.com]
* Version 1.0.5
* Last Modified: 10/06/2012
*
* Copyright 2012 Trent Richardson
* You may use this project under MIT or GPL licenses.
* http://trentrichardson.com/Impromptu/GPL-LICENSE.txt
* http://trentrichardson.com/Impromptu/MIT-LICENSE.txt
*/
(function(e){function r(){this.regional=[];this.regional[""]={currentText:"Now",closeText:"Done",ampm:!1,amNames:["AM","A"],pmNames:["PM","P"],timeFormat:"hh:mm tt",timeSuffix:"",timeOnlyTitle:"Choose Time",timeText:"Time",hourText:"Hour",minuteText:"Minute",secondText:"Second",millisecText:"Millisecond",timezoneText:"Time Zone",isRTL:!1};this._defaults={showButtonPanel:!0,timeOnly:!1,showHour:!0,showMinute:!0,showSecond:!1,showMillisec:!1,showTimezone:!1,showTime:!0,stepHour:1,stepMinute:1,stepSecond:1,
stepMillisec:1,hour:0,minute:0,second:0,millisec:0,timezone:null,useLocalTimezone:!1,defaultTimezone:"+0000",hourMin:0,minuteMin:0,secondMin:0,millisecMin:0,hourMax:23,minuteMax:59,secondMax:59,millisecMax:999,minDateTime:null,maxDateTime:null,onSelect:null,hourGrid:0,minuteGrid:0,secondGrid:0,millisecGrid:0,alwaysSetTime:!0,separator:" ",altFieldTimeOnly:!0,altSeparator:null,altTimeSuffix:null,showTimepicker:!0,timezoneIso8601:!1,timezoneList:null,addSliderAccess:!1,sliderAccessArgs:null,controlType:"slider",
defaultValue:null};e.extend(this._defaults,this.regional[""])}function s(c,b){e.extend(c,b);for(var a in b)if(null===b[a]||void 0===b[a])c[a]=b[a];return c}e.ui.timepicker=e.ui.timepicker||{};if(!e.ui.timepicker.version){e.extend(e.ui,{timepicker:{version:"1.0.5"}});e.extend(r.prototype,{$input:null,$altInput:null,$timeObj:null,inst:null,hour_slider:null,minute_slider:null,second_slider:null,millisec_slider:null,timezone_select:null,hour:0,minute:0,second:0,millisec:0,timezone:null,defaultTimezone:"+0000",
hourMinOriginal:null,minuteMinOriginal:null,secondMinOriginal:null,millisecMinOriginal:null,hourMaxOriginal:null,minuteMaxOriginal:null,secondMaxOriginal:null,millisecMaxOriginal:null,ampm:"",formattedDate:"",formattedTime:"",formattedDateTime:"",timezoneList:null,units:["hour","minute","second","millisec"],control:null,setDefaults:function(c){s(this._defaults,c||{});return this},_newInst:function(c,b){var a=new r,d={},f={},g,i;for(g in this._defaults)if(this._defaults.hasOwnProperty(g)){var h=c.attr("time:"+
g);if(h)try{d[g]=eval(h)}catch(k){d[g]=h}}g={beforeShow:function(b,d){if(e.isFunction(a._defaults.evnts.beforeShow))return a._defaults.evnts.beforeShow.call(c[0],b,d,a)},onChangeMonthYear:function(b,d,f){a._updateDateTime(f);e.isFunction(a._defaults.evnts.onChangeMonthYear)&&a._defaults.evnts.onChangeMonthYear.call(c[0],b,d,f,a)},onClose:function(b,d){!0===a.timeDefined&&""!==c.val()&&a._updateDateTime(d);e.isFunction(a._defaults.evnts.onClose)&&a._defaults.evnts.onClose.call(c[0],b,d,a)}};for(i in g)g.hasOwnProperty(i)&&
(f[i]=b[i]||null);a._defaults=e.extend({},this._defaults,d,b,g,{evnts:f,timepicker:a});a.amNames=e.map(a._defaults.amNames,function(a){return a.toUpperCase()});a.pmNames=e.map(a._defaults.pmNames,function(a){return a.toUpperCase()});"string"===typeof a._defaults.controlType?("slider"==a._defaults.controlType&&void 0===e.fn.slider&&(a._defaults.controlType="select"),a.control=a._controls[a._defaults.controlType]):a.control=a._defaults.controlType;null===a._defaults.timezoneList&&(d="-1200 -1100 -1000 -0930 -0900 -0800 -0700 -0600 -0500 -0430 -0400 -0330 -0300 -0200 -0100 +0000 +0100 +0200 +0300 +0330 +0400 +0430 +0500 +0530 +0545 +0600 +0630 +0700 +0800 +0845 +0900 +0930 +1000 +1030 +1100 +1130 +1200 +1245 +1300 +1400".split(" "),
a._defaults.timezoneIso8601&&(d=e.map(d,function(a){return"+0000"==a?"Z":a.substring(0,3)+":"+a.substring(3)})),a._defaults.timezoneList=d);a.timezone=a._defaults.timezone;a.hour=a._defaults.hour;a.minute=a._defaults.minute;a.second=a._defaults.second;a.millisec=a._defaults.millisec;a.ampm="";a.$input=c;b.altField&&(a.$altInput=e(b.altField).css({cursor:"pointer"}).focus(function(){c.trigger("focus")}));if(0===a._defaults.minDate||0===a._defaults.minDateTime)a._defaults.minDate=new Date;if(0===a._defaults.maxDate||
0===a._defaults.maxDateTime)a._defaults.maxDate=new Date;void 0!==a._defaults.minDate&&a._defaults.minDate instanceof Date&&(a._defaults.minDateTime=new Date(a._defaults.minDate.getTime()));void 0!==a._defaults.minDateTime&&a._defaults.minDateTime instanceof Date&&(a._defaults.minDate=new Date(a._defaults.minDateTime.getTime()));void 0!==a._defaults.maxDate&&a._defaults.maxDate instanceof Date&&(a._defaults.maxDateTime=new Date(a._defaults.maxDate.getTime()));void 0!==a._defaults.maxDateTime&&a._defaults.maxDateTime instanceof
Date&&(a._defaults.maxDate=new Date(a._defaults.maxDateTime.getTime()));a.$input.bind("focus",function(){a._onFocus()});return a},_addTimePicker:function(c){var b=this.$altInput&&this._defaults.altFieldTimeOnly?this.$input.val()+" "+this.$altInput.val():this.$input.val();this.timeDefined=this._parseTime(b);this._limitMinMaxDateTime(c,!1);this._injectTimePicker()},_parseTime:function(c,b){this.inst||(this.inst=e.datepicker._getInst(this.$input[0]));if(b||!this._defaults.timeOnly){var a=e.datepicker._get(this.inst,
"dateFormat");try{var d=t(a,this._defaults.timeFormat,c,e.datepicker._getFormatConfig(this.inst),this._defaults);if(!d.timeObj)return!1;e.extend(this,d.timeObj)}catch(f){return!1}}else{a=e.datepicker.parseTime(this._defaults.timeFormat,c,this._defaults);if(!a)return!1;e.extend(this,a)}return!0},_injectTimePicker:function(){var c=this.inst.dpDiv,b=this.inst.settings,a=this,d="",f="",g={},i={},h=null;if(0===c.find("div.ui-timepicker-div").length&&b.showTimepicker){for(var h='<div class="ui-timepicker-div'+
(b.isRTL?" ui-timepicker-rtl":"")+'"><dl><dt class="ui_tpicker_time_label"'+(b.showTime?"":' style="display:none;"')+">"+b.timeText+'</dt><dd class="ui_tpicker_time"'+(b.showTime?"":' style="display:none;"')+"></dd>",k=0,l=this.units.length;k<l;k++){d=this.units[k];f=d.substr(0,1).toUpperCase()+d.substr(1);g[d]=parseInt(b[d+"Max"]-(b[d+"Max"]-b[d+"Min"])%b["step"+f],10);i[d]=0;h+='<dt class="ui_tpicker_'+d+'_label"'+(b["show"+f]?"":' style="display:none;"')+">"+b[d+"Text"]+'</dt><dd class="ui_tpicker_'+
d+'"><div class="ui_tpicker_'+d+'_slider"'+(b["show"+f]?"":' style="display:none;"')+"></div>";if(b["show"+f]&&0<b[d+"Grid"]){h+='<div style="padding-left: 1px"><table class="ui-tpicker-grid-label"><tr>';if("hour"==d)for(f=b[d+"Min"];f<=g[d];f+=parseInt(b[d+"Grid"],10)){i[d]++;var j=b.ampm&&12<f?f-12:f;10>j&&(j="0"+j);b.ampm&&(j=0===f?"12a":12>f?j+"a":j+"p");h+='<td data-for="'+d+'">'+j+"</td>"}else for(f=b[d+"Min"];f<=g[d];f+=parseInt(b[d+"Grid"],10))i[d]++,h+='<td data-for="'+d+'">'+(10>f?"0":"")+
f+"</td>";h+="</tr></table></div>"}h+="</dd>"}var h=h+('<dt class="ui_tpicker_timezone_label"'+(b.showTimezone?"":' style="display:none;"')+">"+b.timezoneText+"</dt>"),h=h+('<dd class="ui_tpicker_timezone" '+(b.showTimezone?"":' style="display:none;"')+"></dd>"),m=e(h+"</dl></div>");!0===b.timeOnly&&(m.prepend('<div class="ui-widget-header ui-helper-clearfix ui-corner-all"><div class="ui-datepicker-title">'+b.timeOnlyTitle+"</div></div>"),c.find(".ui-datepicker-header, .ui-datepicker-calendar").hide());
k=0;for(l=a.units.length;k<l;k++)d=a.units[k],f=d.substr(0,1).toUpperCase()+d.substr(1),a[d+"_slider"]=a.control.create(a,m.find(".ui_tpicker_"+d+"_slider"),d,a[d],b[d+"Min"],g[d],b["step"+f]),b["show"+f]&&0<b[d+"Grid"]&&(h=100*i[d]*b[d+"Grid"]/(g[d]-b[d+"Min"]),m.find(".ui_tpicker_"+d+" table").css({width:h+"%",marginLeft:b.isRTL?"0":h/(-2*i[d])+"%",marginRight:b.isRTL?h/(-2*i[d])+"%":"0",borderCollapse:"collapse"}).find("td").click(function(){var c=e(this),d=c.html(),c=c.data("for");if("hour"==
c&&b.ampm)var f=d.substring(2).toLowerCase(),d=parseInt(d.substring(0,2),10),d="a"==f?12==d?0:d:12==d?12:d+12;a.control.value(a,a[c+"_slider"],parseInt(d,10));a._onTimeChange();a._onSelectHandler()}).css({cursor:"pointer",width:100/i[d]+"%",textAlign:"center",overflow:"hidden"}));this.timezone_select=m.find(".ui_tpicker_timezone").append("<select></select>").find("select");e.fn.append.apply(this.timezone_select,e.map(b.timezoneList,function(a){return e("<option />").val("object"==typeof a?a.value:
a).text("object"==typeof a?a.label:a)}));"undefined"!=typeof this.timezone&&null!==this.timezone&&""!==this.timezone?e.timepicker.timeZoneOffsetString(new Date(this.inst.selectedYear,this.inst.selectedMonth,this.inst.selectedDay,12))==this.timezone?q(a):this.timezone_select.val(this.timezone):"undefined"!=typeof this.hour&&null!==this.hour&&""!==this.hour?this.timezone_select.val(b.defaultTimezone):q(a);this.timezone_select.change(function(){a._defaults.useLocalTimezone=!1;a._onTimeChange()});d=c.find(".ui-datepicker-buttonpane");
d.length?d.before(m):c.append(m);this.$timeObj=m.find(".ui_tpicker_time");null!==this.inst&&(c=this.timeDefined,this._onTimeChange(),this.timeDefined=c);if(this._defaults.addSliderAccess){var p=this._defaults.sliderAccessArgs,n=this._defaults.isRTL;p.isRTL=n;setTimeout(function(){if(0===m.find(".ui-slider-access").length){m.find(".ui-slider:visible").sliderAccess(p);var a=m.find(".ui-slider-access:eq(0)").outerWidth(!0);a&&m.find("table:visible").each(function(){var b=e(this),c=b.outerWidth(),d=b.css(n?
"marginRight":"marginLeft").toString().replace("%",""),f=c-a,g={width:f,marginRight:0,marginLeft:0};g[n?"marginRight":"marginLeft"]=d*f/c+"%";b.css(g)})}},10)}}},_limitMinMaxDateTime:function(c,b){var a=this._defaults,d=new Date(c.selectedYear,c.selectedMonth,c.selectedDay);if(this._defaults.showTimepicker){if(null!==e.datepicker._get(c,"minDateTime")&&void 0!==e.datepicker._get(c,"minDateTime")&&d){var f=e.datepicker._get(c,"minDateTime"),g=new Date(f.getFullYear(),f.getMonth(),f.getDate(),0,0,0,
0);if(null===this.hourMinOriginal||null===this.minuteMinOriginal||null===this.secondMinOriginal||null===this.millisecMinOriginal)this.hourMinOriginal=a.hourMin,this.minuteMinOriginal=a.minuteMin,this.secondMinOriginal=a.secondMin,this.millisecMinOriginal=a.millisecMin;c.settings.timeOnly||g.getTime()==d.getTime()?(this._defaults.hourMin=f.getHours(),this.hour<=this._defaults.hourMin?(this.hour=this._defaults.hourMin,this._defaults.minuteMin=f.getMinutes(),this.minute<=this._defaults.minuteMin?(this.minute=
this._defaults.minuteMin,this._defaults.secondMin=f.getSeconds(),this.second<=this._defaults.secondMin?(this.second=this._defaults.secondMin,this._defaults.millisecMin=f.getMilliseconds()):(this.millisec<this._defaults.millisecMin&&(this.millisec=this._defaults.millisecMin),this._defaults.millisecMin=this.millisecMinOriginal)):(this._defaults.secondMin=this.secondMinOriginal,this._defaults.millisecMin=this.millisecMinOriginal)):(this._defaults.minuteMin=this.minuteMinOriginal,this._defaults.secondMin=
this.secondMinOriginal,this._defaults.millisecMin=this.millisecMinOriginal)):(this._defaults.hourMin=this.hourMinOriginal,this._defaults.minuteMin=this.minuteMinOriginal,this._defaults.secondMin=this.secondMinOriginal,this._defaults.millisecMin=this.millisecMinOriginal)}if(null!==e.datepicker._get(c,"maxDateTime")&&void 0!==e.datepicker._get(c,"maxDateTime")&&d){f=e.datepicker._get(c,"maxDateTime");g=new Date(f.getFullYear(),f.getMonth(),f.getDate(),0,0,0,0);if(null===this.hourMaxOriginal||null===
this.minuteMaxOriginal||null===this.secondMaxOriginal)this.hourMaxOriginal=a.hourMax,this.minuteMaxOriginal=a.minuteMax,this.secondMaxOriginal=a.secondMax,this.millisecMaxOriginal=a.millisecMax;c.settings.timeOnly||g.getTime()==d.getTime()?(this._defaults.hourMax=f.getHours(),this.hour>=this._defaults.hourMax?(this.hour=this._defaults.hourMax,this._defaults.minuteMax=f.getMinutes(),this.minute>=this._defaults.minuteMax?(this.minute=this._defaults.minuteMax,this._defaults.secondMax=f.getSeconds()):
this.second>=this._defaults.secondMax?(this.second=this._defaults.secondMax,this._defaults.millisecMax=f.getMilliseconds()):(this.millisec>this._defaults.millisecMax&&(this.millisec=this._defaults.millisecMax),this._defaults.millisecMax=this.millisecMaxOriginal)):(this._defaults.minuteMax=this.minuteMaxOriginal,this._defaults.secondMax=this.secondMaxOriginal,this._defaults.millisecMax=this.millisecMaxOriginal)):(this._defaults.hourMax=this.hourMaxOriginal,this._defaults.minuteMax=this.minuteMaxOriginal,
this._defaults.secondMax=this.secondMaxOriginal,this._defaults.millisecMax=this.millisecMaxOriginal)}void 0!==b&&!0===b&&(a=parseInt(this._defaults.hourMax-(this._defaults.hourMax-this._defaults.hourMin)%this._defaults.stepHour,10),d=parseInt(this._defaults.minuteMax-(this._defaults.minuteMax-this._defaults.minuteMin)%this._defaults.stepMinute,10),f=parseInt(this._defaults.secondMax-(this._defaults.secondMax-this._defaults.secondMin)%this._defaults.stepSecond,10),g=parseInt(this._defaults.millisecMax-
(this._defaults.millisecMax-this._defaults.millisecMin)%this._defaults.stepMillisec,10),this.hour_slider&&(this.control.options(this,this.hour_slider,{min:this._defaults.hourMin,max:a}),this.control.value(this,this.hour_slider,this.hour)),this.minute_slider&&(this.control.options(this,this.minute_slider,{min:this._defaults.minuteMin,max:d}),this.control.value(this,this.minute_slider,this.minute)),this.second_slider&&(this.control.options(this,this.second_slider,{min:this._defaults.secondMin,max:f}),
this.control.value(this,this.second_slider,this.second)),this.millisec_slider&&(this.control.options(this,this.millisec_slider,{min:this._defaults.millisecMin,max:g}),this.control.value(this,this.millisec_slider,this.millisec)))}},_onTimeChange:function(){var c=this.hour_slider?this.control.value(this,this.hour_slider):!1,b=this.minute_slider?this.control.value(this,this.minute_slider):!1,a=this.second_slider?this.control.value(this,this.second_slider):!1,d=this.millisec_slider?this.control.value(this,
this.millisec_slider):!1,f=this.timezone_select?this.timezone_select.val():!1,g=this._defaults;"object"==typeof c&&(c=!1);"object"==typeof b&&(b=!1);"object"==typeof a&&(a=!1);"object"==typeof d&&(d=!1);"object"==typeof f&&(f=!1);!1!==c&&(c=parseInt(c,10));!1!==b&&(b=parseInt(b,10));!1!==a&&(a=parseInt(a,10));!1!==d&&(d=parseInt(d,10));var i=g[12>c?"amNames":"pmNames"][0],h=c!=this.hour||b!=this.minute||a!=this.second||d!=this.millisec||0<this.ampm.length&&12>c!=(-1!==e.inArray(this.ampm.toUpperCase(),
this.amNames))||null===this.timezone&&f!=this.defaultTimezone||null!==this.timezone&&f!=this.timezone;h&&(!1!==c&&(this.hour=c),!1!==b&&(this.minute=b),!1!==a&&(this.second=a),!1!==d&&(this.millisec=d),!1!==f&&(this.timezone=f),this.inst||(this.inst=e.datepicker._getInst(this.$input[0])),this._limitMinMaxDateTime(this.inst,!0));g.ampm&&(this.ampm=i);this.formattedTime=e.datepicker.formatTime(this._defaults.timeFormat,this,this._defaults);this.$timeObj&&this.$timeObj.text(this.formattedTime+g.timeSuffix);
this.timeDefined=!0;h&&this._updateDateTime()},_onSelectHandler:function(){var c=this._defaults.onSelect||this.inst.settings.onSelect,b=this.$input?this.$input[0]:null;c&&b&&c.apply(b,[this.formattedDateTime,this])},_updateDateTime:function(c){var c=this.inst||c,b=e.datepicker._daylightSavingAdjust(new Date(c.selectedYear,c.selectedMonth,c.selectedDay)),a=e.datepicker._get(c,"dateFormat"),c=e.datepicker._getFormatConfig(c),d=null!==b&&this.timeDefined,a=this.formattedDate=e.datepicker.formatDate(a,
null===b?new Date:b,c);if(!0===this._defaults.timeOnly)a=this.formattedTime;else if(!0!==this._defaults.timeOnly&&(this._defaults.alwaysSetTime||d))a+=this._defaults.separator+this.formattedTime+this._defaults.timeSuffix;this.formattedDateTime=a;if(this._defaults.showTimepicker)if(this.$altInput&&!0===this._defaults.altFieldTimeOnly)this.$altInput.val(this.formattedTime),this.$input.val(this.formattedDate);else if(this.$altInput){this.$input.val(a);var a="",d=this._defaults.altSeparator?this._defaults.altSeparator:
this._defaults.separator,f=this._defaults.altTimeSuffix?this._defaults.altTimeSuffix:this._defaults.timeSuffix;(a=this._defaults.altFormat?e.datepicker.formatDate(this._defaults.altFormat,null===b?new Date:b,c):this.formattedDate)&&(a+=d);a=this._defaults.altTimeFormat?a+(e.datepicker.formatTime(this._defaults.altTimeFormat,this,this._defaults)+f):a+(this.formattedTime+f);this.$altInput.val(a)}else this.$input.val(a);else this.$input.val(this.formattedDate);this.$input.trigger("change")},_onFocus:function(){if(!this.$input.val()&&
this._defaults.defaultValue){this.$input.val(this._defaults.defaultValue);var c=e.datepicker._getInst(this.$input.get(0)),b=e.datepicker._get(c,"timepicker");if(b&&b._defaults.timeOnly&&c.input.val()!=c.lastVal)try{e.datepicker._updateDatepicker(c)}catch(a){e.datepicker.log(a)}}},_controls:{slider:{create:function(c,b,a,d,f,g,i){var h=c._defaults.isRTL;return b.prop("slide",null).slider({orientation:"horizontal",value:h?-1*d:d,min:h?-1*g:f,max:h?-1*f:g,step:i,slide:function(a,b){c.control.value(c,
e(this),h?-1*b.value:b.value);c._onTimeChange()},stop:function(){c._onSelectHandler()}})},options:function(c,b,a,d){if(c._defaults.isRTL){if("string"==typeof a)return"min"==a||"max"==a?void 0!==d?b.slider(a,-1*d):Math.abs(b.slider(a)):b.slider(a);c=a.min;d=a.max;a.min=a.max=null;void 0!==c&&(a.max=-1*c);void 0!==d&&(a.min=-1*d);return b.slider(a)}return"string"==typeof a&&void 0!==d?b.slider(a,d):b.slider(a)},value:function(c,b,a){return c._defaults.isRTL?void 0!==a?b.slider("value",-1*a):Math.abs(b.slider("value")):
void 0!==a?b.slider("value",a):b.slider("value")}},select:{create:function(c,b,a,d,f,g,i){for(var h='<select class="ui-timepicker-select" data-unit="'+a+'" data-min="'+f+'" data-max="'+g+'" data-step="'+i+'">',k=-1!==c._defaults.timeFormat.indexOf("t")?"toLowerCase":"toUpperCase",l=0;f<=g;f+=i)h+='<option value="'+f+'"'+(f==d?" selected":"")+">","hour"==a&&c._defaults.ampm?(l=f%12,h=0===f||12===f?h+"12":10>l?h+("0"+l.toString()):h+l,h+=" "+(12>f?c._defaults.amNames[0]:c._defaults.pmNames[0])[k]()):
h="millisec"==a||10<=f?h+f:h+("0"+f.toString()),h+="</option>";h+="</select>";b.children("select").remove();e(h).appendTo(b).change(function(){c._onTimeChange();c._onSelectHandler()});return b},options:function(c,b,a,d){var e={},g=b.children("select");if("string"==typeof a){if(void 0===d)return g.data(a);e[a]=d}else e=a;return c.control.create(c,b,g.data("unit"),g.val(),e.min||g.data("min"),e.max||g.data("max"),e.step||g.data("step"))},value:function(c,b,a){c=b.children("select");return void 0!==
a?c.val(a):c.val()}}}});e.fn.extend({timepicker:function(c){var c=c||{},b=Array.prototype.slice.call(arguments);"object"==typeof c&&(b[0]=e.extend(c,{timeOnly:!0}));return e(this).each(function(){e.fn.datetimepicker.apply(e(this),b)})},datetimepicker:function(c){var c=c||{},b=arguments;return"string"==typeof c?"getDate"==c?e.fn.datepicker.apply(e(this[0]),b):this.each(function(){var a=e(this);a.datepicker.apply(a,b)}):this.each(function(){var a=e(this);a.datepicker(e.timepicker._newInst(a,c)._defaults)})}});
e.datepicker.parseDateTime=function(c,b,a,d,e){c=t(c,b,a,d,e);c.timeObj&&(b=c.timeObj,c.date.setHours(b.hour,b.minute,b.second,b.millisec));return c.date};e.datepicker.parseTime=function(c,b,a){var d=s(s({},e.timepicker._defaults),a||{}),a="^"+c.toString().replace(/(hh?|mm?|ss?|[tT]{1,2}|[lz]|'.*?')/g,function(a){switch(a.charAt(0).toLowerCase()){case "h":return"(\\d?\\d)";case "m":return"(\\d?\\d)";case "s":return"(\\d?\\d)";case "l":return"(\\d?\\d?\\d)";case "z":return"(z|[-+]\\d\\d:?\\d\\d|\\S+)?";
case "t":var a=d.amNames,b=d.pmNames,c=[];a&&e.merge(c,a);b&&e.merge(c,b);c=e.map(c,function(a){return a.replace(/[.*+?|()\[\]{}\\]/g,"\\$&")});return"("+c.join("|")+")?";default:return"("+a.replace(/\'/g,"").replace(/(\.|\$|\^|\\|\/|\(|\)|\[|\]|\?|\+|\*)/g,function(a){return"\\"+a})+")?"}}).replace(/\s/g,"\\s?")+d.timeSuffix+"$",f=c.toLowerCase().match(/(h{1,2}|m{1,2}|s{1,2}|l{1}|t{1,2}|z|'.*?')/g),c={h:-1,m:-1,s:-1,l:-1,t:-1,z:-1};if(f)for(var g=0;g<f.length;g++)-1==c[f[g].toString().charAt(0)]&&
(c[f[g].toString().charAt(0)]=g+1);f="";a=b.match(RegExp(a,"i"));b={hour:0,minute:0,second:0,millisec:0};if(a){-1!==c.t&&(void 0===a[c.t]||0===a[c.t].length?(f="",b.ampm=""):(f=-1!==e.inArray(a[c.t].toUpperCase(),d.amNames)?"AM":"PM",b.ampm=d["AM"==f?"amNames":"pmNames"][0]));-1!==c.h&&(b.hour="AM"==f&&"12"==a[c.h]?0:"PM"==f&&"12"!=a[c.h]?parseInt(a[c.h],10)+12:Number(a[c.h]));-1!==c.m&&(b.minute=Number(a[c.m]));-1!==c.s&&(b.second=Number(a[c.s]));-1!==c.l&&(b.millisec=Number(a[c.l]));if(-1!==c.z&&
void 0!==a[c.z]){c=a[c.z].toUpperCase();switch(c.length){case 1:c=d.timezoneIso8601?"Z":"+0000";break;case 5:d.timezoneIso8601&&(c="0000"==c.substring(1)?"Z":c.substring(0,3)+":"+c.substring(3));break;case 6:d.timezoneIso8601?"00:00"==c.substring(1)&&(c="Z"):c="Z"==c||"00:00"==c.substring(1)?"+0000":c.replace(/:/,"")}b.timezone=c}return b}return!1};e.datepicker.formatTime=function(c,b,a){var a=a||{},a=e.extend({},e.timepicker._defaults,a),b=e.extend({hour:0,minute:0,second:0,millisec:0,timezone:"+0000"},
b),d=a.amNames[0],f=parseInt(b.hour,10);a.ampm&&(11<f&&(d=a.pmNames[0],12<f&&(f%=12)),0===f&&(f=12));c=c.replace(/(?:hh?|mm?|ss?|[tT]{1,2}|[lz]|'.*?')/g,function(c){switch(c.toLowerCase()){case "hh":return("0"+f).slice(-2);case "h":return f;case "mm":return("0"+b.minute).slice(-2);case "m":return b.minute;case "ss":return("0"+b.second).slice(-2);case "s":return b.second;case "l":return("00"+b.millisec).slice(-3);case "z":return null===b.timezone?a.defaultTimezone:b.timezone;case "t":case "tt":return a.ampm?
(1==c.length&&(d=d.charAt(0)),"T"===c.charAt(0)?d.toUpperCase():d.toLowerCase()):"";default:return c.replace(/\'/g,"")||"'"}});return c=e.trim(c)};e.datepicker._base_selectDate=e.datepicker._selectDate;e.datepicker._selectDate=function(c,b){var a=this._getInst(e(c)[0]),d=this._get(a,"timepicker");d?(d._limitMinMaxDateTime(a,!0),a.inline=a.stay_open=!0,this._base_selectDate(c,b),a.inline=a.stay_open=!1,this._notifyChange(a),this._updateDatepicker(a)):this._base_selectDate(c,b)};e.datepicker._base_updateDatepicker=
e.datepicker._updateDatepicker;e.datepicker._updateDatepicker=function(c){var b=c.input[0];if(!e.datepicker._curInst||!(e.datepicker._curInst!=c&&e.datepicker._datepickerShowing&&e.datepicker._lastInput!=b))if("boolean"!==typeof c.stay_open||!1===c.stay_open)if(this._base_updateDatepicker(c),b=this._get(c,"timepicker"))b._addTimePicker(c),b._defaults.useLocalTimezone&&(q(b,new Date(c.selectedYear,c.selectedMonth,c.selectedDay,12)),b._onTimeChange())};e.datepicker._base_doKeyPress=e.datepicker._doKeyPress;
e.datepicker._doKeyPress=function(c){var b=e.datepicker._getInst(c.target),a=e.datepicker._get(b,"timepicker");if(a&&e.datepicker._get(b,"constrainInput")){var d=a._defaults.ampm,b=e.datepicker._possibleChars(e.datepicker._get(b,"dateFormat")),a=a._defaults.timeFormat.toString().replace(/[hms]/g,"").replace(/TT/g,d?"APM":"").replace(/Tt/g,d?"AaPpMm":"").replace(/tT/g,d?"AaPpMm":"").replace(/T/g,d?"AP":"").replace(/tt/g,d?"apm":"").replace(/t/g,d?"ap":"")+" "+a._defaults.separator+a._defaults.timeSuffix+
(a._defaults.showTimezone?a._defaults.timezoneList.join(""):"")+a._defaults.amNames.join("")+a._defaults.pmNames.join("")+b,d=String.fromCharCode(void 0===c.charCode?c.keyCode:c.charCode);return c.ctrlKey||" ">d||!b||-1<a.indexOf(d)}return e.datepicker._base_doKeyPress(c)};e.datepicker._base_updateAlternate=e.datepicker._updateAlternate;e.datepicker._updateAlternate=function(c){var b=this._get(c,"timepicker");if(b){var a=b._defaults.altField;if(a){var d=this._getDate(c),c=e.datepicker._getFormatConfig(c),
f,g=b._defaults.altSeparator?b._defaults.altSeparator:b._defaults.separator;f=b._defaults.altTimeSuffix?b._defaults.altTimeSuffix:b._defaults.timeSuffix;f=""+(e.datepicker.formatTime(void 0!==b._defaults.altTimeFormat?b._defaults.altTimeFormat:b._defaults.timeFormat,b,b._defaults)+f);!b._defaults.timeOnly&&!b._defaults.altFieldTimeOnly&&(f=b._defaults.altFormat?e.datepicker.formatDate(b._defaults.altFormat,null===d?new Date:d,c)+g+f:b.formattedDate+g+f);e(a).val(f)}}else e.datepicker._base_updateAlternate(c)};
e.datepicker._base_doKeyUp=e.datepicker._doKeyUp;e.datepicker._doKeyUp=function(c){var b=e.datepicker._getInst(c.target),a=e.datepicker._get(b,"timepicker");if(a&&a._defaults.timeOnly&&b.input.val()!=b.lastVal)try{e.datepicker._updateDatepicker(b)}catch(d){e.datepicker.log(d)}return e.datepicker._base_doKeyUp(c)};e.datepicker._base_gotoToday=e.datepicker._gotoToday;e.datepicker._gotoToday=function(c){var b=this._getInst(e(c)[0]),a=b.dpDiv;this._base_gotoToday(c);c=this._get(b,"timepicker");q(c);this._setTime(b,
new Date);e(".ui-datepicker-today",a).click()};e.datepicker._disableTimepickerDatepicker=function(c){var b=this._getInst(c);if(b){var a=this._get(b,"timepicker");e(c).datepicker("getDate");a&&(a._defaults.showTimepicker=!1,a._updateDateTime(b))}};e.datepicker._enableTimepickerDatepicker=function(c){var b=this._getInst(c);if(b){var a=this._get(b,"timepicker");e(c).datepicker("getDate");a&&(a._defaults.showTimepicker=!0,a._addTimePicker(b),a._updateDateTime(b))}};e.datepicker._setTime=function(c,b){var a=
this._get(c,"timepicker");if(a){var d=a._defaults;a.hour=b?b.getHours():d.hour;a.minute=b?b.getMinutes():d.minute;a.second=b?b.getSeconds():d.second;a.millisec=b?b.getMilliseconds():d.millisec;a._limitMinMaxDateTime(c,!0);a._onTimeChange();a._updateDateTime(c)}};e.datepicker._setTimeDatepicker=function(c,b,a){if(c=this._getInst(c)){var d=this._get(c,"timepicker");d&&(this._setDateFromField(c),b&&("string"==typeof b?(d._parseTime(b,a),b=new Date,b.setHours(d.hour,d.minute,d.second,d.millisec)):b=new Date(b.getTime()),
"Invalid Date"==b.toString()&&(b=void 0),this._setTime(c,b)))}};e.datepicker._base_setDateDatepicker=e.datepicker._setDateDatepicker;e.datepicker._setDateDatepicker=function(c,b){var a=this._getInst(c);if(a){var d=b instanceof Date?new Date(b.getTime()):b;this._updateDatepicker(a);this._base_setDateDatepicker.apply(this,arguments);this._setTimeDatepicker(c,d,!0)}};e.datepicker._base_getDateDatepicker=e.datepicker._getDateDatepicker;e.datepicker._getDateDatepicker=function(c,b){var a=this._getInst(c);
if(a){var d=this._get(a,"timepicker");return d?(void 0===a.lastVal&&this._setDateFromField(a,b),(a=this._getDate(a))&&d._parseTime(e(c).val(),d.timeOnly)&&a.setHours(d.hour,d.minute,d.second,d.millisec),a):this._base_getDateDatepicker(c,b)}};e.datepicker._base_parseDate=e.datepicker.parseDate;e.datepicker.parseDate=function(c,b,a){var d;try{d=this._base_parseDate(c,b,a)}catch(e){d=this._base_parseDate(c,b.substring(0,b.length-(e.length-e.indexOf(":")-2)),a)}return d};e.datepicker._base_formatDate=
e.datepicker._formatDate;e.datepicker._formatDate=function(c){var b=this._get(c,"timepicker");return b?(b._updateDateTime(c),b.$input.val()):this._base_formatDate(c)};e.datepicker._base_optionDatepicker=e.datepicker._optionDatepicker;e.datepicker._optionDatepicker=function(c,b,a){var d=this._getInst(c),f;if(!d)return null;if(d=this._get(d,"timepicker")){var g=null,i=null,h=null,k=d._defaults.evnts,l={},j;if("string"==typeof b)if("minDate"===b||"minDateTime"===b)g=a;else if("maxDate"===b||"maxDateTime"===
b)i=a;else if("onSelect"===b)h=a;else{if(k.hasOwnProperty(b)){if("undefined"===typeof a)return k[b];l[b]=a;f={}}}else if("object"==typeof b)for(j in b.minDate?g=b.minDate:b.minDateTime?g=b.minDateTime:b.maxDate?i=b.maxDate:b.maxDateTime&&(i=b.maxDateTime),k)k.hasOwnProperty(j)&&b[j]&&(l[j]=b[j]);for(j in l)l.hasOwnProperty(j)&&(k[j]=l[j],f||(f=e.extend({},b)),delete f[j]);if(j=f)a:{j=f;for(var m in j)if(j.hasOwnProperty(j)){j=!1;break a}j=!0}if(j)return;g?(g=0===g?new Date:new Date(g),d._defaults.minDate=
g,d._defaults.minDateTime=g):i?(i=0===i?new Date:new Date(i),d._defaults.maxDate=i,d._defaults.maxDateTime=i):h&&(d._defaults.onSelect=h)}return void 0===a?this._base_optionDatepicker.call(e.datepicker,c,b):this._base_optionDatepicker.call(e.datepicker,c,f||b,a)};var t=function(c,b,a,d,f){var g;a:{try{var i=f&&f.separator?f.separator:e.timepicker._defaults.separator,h=f&&f.timeFormat?f.timeFormat:e.timepicker._defaults.timeFormat,k=f&&f.ampm?f.ampm:e.timepicker._defaults.ampm,l=h.split(i),j=l.length,
m=a.split(i),p=m.length;k||(l=e.trim(h.replace(/t/gi,"")).split(i),j=l.length);if(1<p){g=[m.splice(0,p-j).join(i),m.splice(0,j).join(i)];break a}}catch(n){if(0<=n.indexOf(":")){g=a.length-(n.length-n.indexOf(":")-2);a.substring(g);g=[e.trim(a.substring(0,g)),e.trim(a.substring(g))];break a}else throw n;}g=[a,""]}c=e.datepicker._base_parseDate(c,g[0],d);if(""!==g[1]){b=e.datepicker.parseTime(b,g[1],f);if(null===b)throw"Wrong time format";return{date:c,timeObj:b}}return{date:c}},q=function(c,b){if(c&&
c.timezone_select){c._defaults.useLocalTimezone=!0;var a=e.timepicker.timeZoneOffsetString("undefined"!==typeof b?b:new Date);c._defaults.timezoneIso8601&&(a=a.substring(0,3)+":"+a.substring(3));c.timezone_select.val(a)}};e.timepicker=new r;e.timepicker.timeZoneOffsetString=function(c){var c=-1*c.getTimezoneOffset(),b=c%60;return(0<=c?"+":"-")+("0"+(101*((c-b)/60)).toString()).substr(-2)+("0"+(101*b).toString()).substr(-2)};e.timepicker.timeRange=function(c,b,a){return e.timepicker.handleRange("timepicker",
c,b,a)};e.timepicker.dateTimeRange=function(c,b,a){e.timepicker.dateRange(c,b,a,"datetimepicker")};e.timepicker.dateRange=function(c,b,a,d){e.timepicker.handleRange(d||"datepicker",c,b,a)};e.timepicker.handleRange=function(c,b,a,d){function f(c,d,e){d.val()&&new Date(b.val())>new Date(a.val())&&d.val(e)}function g(a,b,d){e(a).val()&&(a=e(a)[c].call(e(a),"getDate"),a.getTime&&e(b)[c].call(e(b),"option",d,a))}e.fn[c].call(b,e.extend({onClose:function(b){f(this,a,b)},onSelect:function(){g(this,a,"minDate")}},
d,d.start));e.fn[c].call(a,e.extend({onClose:function(a){f(this,b,a)},onSelect:function(){g(this,b,"maxDate")}},d,d.end));"timepicker"!=c&&d.reformat&&e([b,a]).each(function(){var a=e(this)[c].call(e(this),"option","dateFormat"),b=new Date(e(this).val());e(this).val()&&b&&e(this).val(e.datepicker.formatDate(a,b))});f(b,a,b.val());g(b,a,"minDate");g(a,b,"maxDate");return e([b.get(0),a.get(0)])};e.timepicker.version="1.0.5"}})(jQuery);
File diff suppressed because it is too large Load Diff

Some files were not shown because too many files have changed in this diff Show More