Commit 4f955705 by Ajil

settings

parent de20132d
...@@ -89,7 +89,7 @@ $autoload['drivers'] = array(); ...@@ -89,7 +89,7 @@ $autoload['drivers'] = array();
| |
| $autoload['helper'] = array('url', 'file'); | $autoload['helper'] = array('url', 'file');
*/ */
$autoload['helper'] = array('url'); $autoload['helper'] = array('url','generals_helper','file');
/* /*
| ------------------------------------------------------------------- | -------------------------------------------------------------------
......
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Brand extends CI_Controller {
public function __construct() {
parent::__construct();
date_default_timezone_set("Asia/Kolkata");
$this->load->model('Brand_model');
if(!$this->session->userdata('logged_in')) {
redirect(base_url());
}
else {
$menu = $this->session->userdata('admin');
if( $menu!=1 ) {
$this->session->set_flashdata('message', array('message' => "You don't have permission to access testimonials page.",'class' => 'danger'));
redirect(base_url().'dashboard');
}
}
}
public function index()
{
$data['menu'] = 'Brand Management';
$data['smenu'] = 'View Brand List';
$data['pTitle'] = "Brand Management";
$data['pDescription'] = "View Brand List";
$data['page'] = 'Brand/list';
$data['datatable'] = 1;
$data['brandData']=$this->Brand_model->getBrandData();
$this->load->view('template', $data);
}
public function create()
{
$data['menu'] = 'Brand Management';
$data['smenu'] = 'Add Brand';
$data['pTitle'] = "Brand Management";
$data['pDescription'] = "Add Brand";
$data['page'] = 'Brand/create';
$data['brandData'] = $this->Brand_model->getBrandData();
$this->load->view('template', $data);
}
public function create_brand()
{
$flashMsg = array('message'=>'Something went wrong, please try again..!','class'=>'error');
if(!isset($_POST) || empty($_POST)){
$this->session->set_flashdata('message',$flashMsg);
redirect(base_url('Brand/create'));
}
$err = 0;
$errMsg = '';
if($err == 0 && (!isset($_POST['brand_name']) || empty($_POST['brand_name']))){
$err = 1;
$errMsg = 'Provide a Brand Name';
} else if($err == 0 && (!isset($_FILES) || empty($_FILES) ||
!isset($_FILES['brand']) || empty($_FILES['brand']))){
$err = 1;
$errMsg = 'Provide a Brand Image';
}
if($err == 0){
$files = $_FILES;
$cpt = count($_FILES['brand']['name']);
$_FILES['userfile']['name']= time().$files['brand']['name'];
$_FILES['userfile']['type']= $files['brand']['type'];
$_FILES['userfile']['tmp_name']= $files['brand']['tmp_name'];
$_FILES['userfile']['error']= $files['brand']['error'];
$_FILES['userfile']['size']= $files['brand']['size'];
$config = array();
$config['upload_path'] = './uploads/brand';
$config['allowed_types'] = 'gif|jpg|jpeg|png|flv|f4v';
$config['max_size'] = '';
$config['overwrite'] = FALSE;
$this->load->library('upload', $config);
$this->upload->initialize($config);
$upload_img = $this->upload->do_upload();
$uploading_file = $this->upload->data();
$image_file = $config['upload_path'].'/'.$uploading_file['file_name'];
$brandData = array(
'brand_name' => $this->input->post('brand_name'),
'brand_image' => $image_file
);
}
if($err == 1){
$flashMsg['message'] = $errMsg;
$this->session->set_flashdata('message',$flashMsg);
redirect(base_url('Brand/create'));
}
$qry = $this->Brand_model->add_brand($brandData);
if($qry)
{
$this->session->set_flashdata('message', array('message' => "Successfully added.",'class' => 'success'));
redirect(base_url().'Brand');
}else{
$this->session->set_flashdata('message',$flashMsg);
}
}
function edit($brand_id=''){
$flashMsg = array('message'=>'Something went wrong, please try again..!','class'=>'error');
if(empty($brand_id) || empty(decode_param($brand_id))){
$this->session->set_flashdata('message',$flashMsg);
redirect(base_url('Brand/list'));
}
$data['page'] = 'Brand/create';
$data['menu'] = 'Brand Management';
$data['smenu'] = 'Edit Brand';
$data['pTitle'] = "Edit Brand";
$data['pDescription'] = "Update Brand Data";
$data['brand_id'] = $brand_id;
$data['brandData'] = $this->Brand_model->getBrandData(decode_param($brand_id));
$this->load->view('template',$data);
}
public function edit_brand($brand_id='')
{
$flashMsg = array('message'=>'Something went wrong, please try again..!','class'=>'error');
if(!isset($_POST) || empty($_POST) || empty($brand_id)){
$this->session->set_flashdata('message',$flashMsg);
redirect(base_url('Brand'));
}
if(isset($_FILES['brand']['name']) && !empty($_FILES['brand']['name']))
{
$files = $_FILES;
$cpt = count($_FILES['brand']['name']);
$_FILES['userfile']['name']= time().$files['brand']['name'];
$_FILES['userfile']['type']= $files['brand']['type'];
$_FILES['userfile']['tmp_name']= $files['brand']['tmp_name'];
$_FILES['userfile']['error']= $files['brand']['error'];
$_FILES['userfile']['size']= $files['brand']['size'];
$config = array();
$config['upload_path'] = './uploads/brand';
$config['allowed_types'] = 'gif|jpg|jpeg|png|flv|f4v';
$config['max_size'] = '';
$config['overwrite'] = FALSE;
$this->load->library('upload', $config);
$this->upload->initialize($config);
$upload_img = $this->upload->do_upload();
if(!$upload_img){
$this->session->set_flashdata('message', array('message' => $this->upload->display_errors(),'class' => 'danger'));
} else{
$uploading_file = $this->upload->data();
$image_file = $config['upload_path'].'/'.$uploading_file['file_name'];
}
$brandData = array(
'brand_name' => $this->input->post('brand_name'),
'brand_image' => $image_file);
}else{
$brandData = array(
'brand_name' => $this->input->post('brand_name'));
}
$result = $this->Brand_model->update_brand(decode_param($brand_id),$brandData);
if($result)
{
$this->session->set_flashdata('message', array('message' => "Successfully Updated.",'class' => 'success'));
redirect(base_url().'Brand');
}else{
$this->session->set_flashdata('message', array('message' => "Please try again.",'class' => 'danger'));
}
}
public function delete($brand_id='') {
$result = $this->Brand_model->delete_brand(decode_param($brand_id));
$this->session->set_flashdata('message', array('message' => 'Brand Deleted Successfully','class' => 'success'));
redirect(base_url().'Brand');
}
}
...@@ -5,7 +5,7 @@ class Category extends CI_Controller { ...@@ -5,7 +5,7 @@ class Category extends CI_Controller {
public function __construct() { public function __construct() {
parent::__construct(); parent::__construct();
date_default_timezone_set("Asia/Kolkata"); date_default_timezone_set("Asia/Kolkata");
$this->load->model('Category/Category_model'); $this->load->model('Category_model');
if(!$this->session->userdata('logged_in')) { if(!$this->session->userdata('logged_in')) {
redirect(base_url()); redirect(base_url());
} }
...@@ -17,100 +17,223 @@ public function __construct() { ...@@ -17,100 +17,223 @@ public function __construct() {
} }
} }
} }
public function index()
{
$data['page'] = 'Category/list';
$data['datatable'] = 1;
$this->load->view('template', $data);
}
public function create() public function index()
{ {
$data['page'] = 'Category/create';
if(isset($_FILES['category']['name'])) $data['menu'] = 'Category Management';
{ $data['smenu'] = 'View Category List';
$files = $_FILES; $data['pTitle'] = "Category Management";
$data['pDescription'] = "View Category List";
$data['page'] = 'Category/list';
$data['datatable'] = 1;
$data['categoryData']=$this->Category_model->getCategoryData();
$this->load->view('template', $data);
}
public function create()
{
$data['menu'] = 'Category Management';
$data['smenu'] = 'Add Category';
$data['pTitle'] = "Category Management";
$data['pDescription'] = "Add Category";
$data['page'] = 'Category/create';
$data['categoryData'] = $this->Category_model->getCategoryData();
$this->load->view('template', $data);
}
public function create_category()
{
$flashMsg = array('message'=>'Something went wrong, please try again..!','class'=>'error');
if(!isset($_POST) || empty($_POST)){
$this->session->set_flashdata('message',$flashMsg);
redirect(base_url('Category/create'));
}
$err = 0;
$errMsg = '';
if($err == 0 && (!isset($_POST['cat_name']) || empty($_POST['cat_name']))){
$err = 1;
$errMsg = 'Provide a Category Name';
} else if($err == 0 && (!isset($_FILES) || empty($_FILES) ||
!isset($_FILES['category']) || empty($_FILES['category']))){
$err = 1;
$errMsg = 'Provide a Category Image';
}
if($err == 0){
$files = $_FILES;
$cpt = count($_FILES['category']['name']); $cpt = count($_FILES['category']['name']);
$_FILES['userfile']['name']= $files['category']['name']; $_FILES['userfile']['name']= time().$files['category']['name'];
$_FILES['userfile']['type']= $files['category']['type']; $_FILES['userfile']['type']= $files['category']['type'];
$_FILES['userfile']['tmp_name']= $files['category']['tmp_name']; $_FILES['userfile']['tmp_name']= $files['category']['tmp_name'];
$_FILES['userfile']['error']= $files['category']['error']; $_FILES['userfile']['error']= $files['category']['error'];
$_FILES['userfile']['size']= $files['category']['size']; $_FILES['userfile']['size']= $files['category']['size'];
$config = array();
$imgconfig="./uploads/category"; $config['upload_path'] = './uploads/category';
$this->upload->initialize($this->set_upload_options($imgconfig)); $config['allowed_types'] = 'gif|jpg|jpeg|png|flv|f4v';
$config['max_size'] = '';
$config['overwrite'] = FALSE;
$this->load->library('upload', $config);
$this->upload->initialize($config); $this->upload->initialize($config);
$upload_img = $this->upload->do_upload(); $upload_img = $this->upload->do_upload();
if(!$upload_img){
$uploading_file = $this->upload->data();
$image_file = $config['upload_path'].'/'.$uploading_file['file_name'];
$categoryData = array(
'cat_name' => $this->input->post('cat_name'),
'cat_image' => $image_file
$this->session->set_flashdata('message', array('message' => $this->upload->display_errors(),'class' => 'danger'));
} else{
$uploading_file = $this->upload->data();
$image_file = $uploading_file['file_name'];
}
$created_on = date('Y-m-d H:i:s');
$categoryData = array(
'title' => $this->input->post('title'),
'description' => $this->input->post('description'),
'image' => $image_file,
'created_on' => $created_on,
); );
$qry = $this->Category_model->add_category($categoryData);
if($qry) }
{
$this->session->set_flashdata('message', array('message' => "Successfully added.",'class' => 'success')); if($err == 1){
$flashMsg['message'] = $errMsg;
}else{ $this->session->set_flashdata('message',$flashMsg);
$this->session->set_flashdata('message', array('message' => "Please try again.",'class' => 'danger')); redirect(base_url('Category'));
}
}
}else{
$this->session->set_flashdata('message', array('message' => "Please choose image.",'class' => 'danger')); $qry = $this->Category_model->add_category($categoryData);
if($qry)
} {
$this->session->set_flashdata('message', array('message' => "Successfully added.",'class' => 'success'));
redirect(base_url().'Category');
}else{
$this->session->set_flashdata('message',$flashMsg);
}
}
function edit($category_id=''){
$flashMsg = array('message'=>'Something went wrong, please try again..!','class'=>'error');
if(empty($category_id) || empty(decode_param($category_id))){
$this->session->set_flashdata('message',$flashMsg);
redirect(base_url('Category/list'));
}
$data['page'] = 'Category/create';
$data['menu'] = 'Category Management';
$data['smenu'] = 'Edit Category';
$data['pTitle'] = "Edit Category";
$data['pDescription'] = "Update Category Data";
$data['category_id'] = $category_id;
$data['categoryData'] = $this->Category_model->getCategoryData(decode_param($category_id));
$this->load->view('template',$data);
}
public function edit_category($category_id='')
{
$this->load->view('template', $data); $flashMsg = array('message'=>'Something went wrong, please try again..!','class'=>'error');
}
if(!isset($_POST) || empty($_POST) || empty($category_id)){
$this->session->set_flashdata('message',$flashMsg);
redirect(base_url('Category'));
}
if(isset($_FILES['category']['name']) && !empty($_FILES['category']['name']))
{
$files = $_FILES;
$cpt = count($_FILES['category']['name']);
$_FILES['userfile']['name']= time().$files['category']['name'];
$_FILES['userfile']['type']= $files['category']['type'];
$_FILES['userfile']['tmp_name']= $files['category']['tmp_name'];
$_FILES['userfile']['error']= $files['category']['error'];
$_FILES['userfile']['size']= $files['category']['size'];
$config = array();
$config['upload_path'] = './uploads/category';
$config['allowed_types'] = 'gif|jpg|jpeg|png|flv|f4v';
$config['max_size'] = '';
$config['overwrite'] = FALSE;
$this->load->library('upload', $config);
$this->upload->initialize($config);
$upload_img = $this->upload->do_upload();
if(!$upload_img){
$this->session->set_flashdata('message', array('message' => $this->upload->display_errors(),'class' => 'danger'));
} else{
$uploading_file = $this->upload->data();
$image_file = $config['upload_path'].'/'.$uploading_file['file_name'];
}
$categoryData = array(
'cat_name' => $this->input->post('cat_name'),
'cat_image' => $image_file);
private function set_upload_options($imgconfig)
{
}else{
$categoryData = array(
'cat_name' => $this->input->post('cat_name'));
}
$config = array();
$config['upload_path'] = './'.$imgconfig.'/'; $result = $this->Category_model->update_category(decode_param($category_id),$categoryData);
$config['allowed_types'] = 'gif|jpg|png|jpeg|PNG|JPEG|JPG'; if($result)
$config['max_size'] = '2400'; {
$config['encrypt_name'] = TRUE;
$config['overwrite'] = FALSE; $this->session->set_flashdata('message', array('message' => "Successfully Updated.",'class' => 'success'));
return $config; redirect(base_url().'Category');
}
}else{
$this->session->set_flashdata('message', array('message' => "Please try again.",'class' => 'danger'));
}
}
public function delete($category_id='') {
$result = $this->Category_model->delete_category(decode_param($category_id));
$this->session->set_flashdata('message', array('message' => 'Category Deleted Successfully','class' => 'success'));
redirect(base_url().'Category');
}
......
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Settings extends CI_Controller {
public function __construct() {
parent::__construct();
date_default_timezone_set("Asia/Kolkata");
$this->load->model('Settings_model');
if(!$this->session->userdata('logged_in')) {
redirect(base_url());
}
else {
$menu = $this->session->userdata('admin');
if( $menu!=1 ) {
$this->session->set_flashdata('message', array('message' => "You don't have permission to access testimonials page.",'class' => 'danger'));
redirect(base_url().'dashboard');
}
}
}
public function index() {
$template['page'] = 'Settings/viewSettings';
$template['menu'] = 'Settings';
$template['smenu'] = "Site Settings";
$template['pTitle'] = "Change Settings";
$template['pDescription'] = "Edit or View Settings";
$template['page_title'] = "Settings";
$template['data'] = $this->Settings_model->settings_viewing();
$this->load->view('template',$template);
}
public function change_settings(){
$flashMsg = array('message'=>'Something went wrong, please try again..!','class'=>'error');
if(!isset($_POST) || empty($_POST)){
$this->session->set_flashdata('message',$flashMsg);
redirect(base_url('Settings'));
}
if(isset($_FILES['site_logo']) && !empty($_FILES['site_logo'])){
$config = set_upload_service("uploads/services");
$this->load->library('upload');
$config['file_name'] = time()."_".$_FILES['site_logo']['name'];
$this->upload->initialize($config);
if($this->upload->do_upload('site_logo')){
$upload_data = $this->upload->data();
$_POST['site_logo'] = $config['upload_path']."/".$upload_data['file_name'];
}
}
if(isset($_FILES['fav_icon']) && !empty($_FILES['fav_icon'])){
$config = set_upload_service("uploads/services");
$this->load->library('upload');
$config['file_name'] = time()."_".$_FILES['fav_icon']['name'];
$this->upload->initialize($config);
if($this->upload->do_upload('fav_icon')){
$upload_data = $this->upload->data();
$_POST['fav_icon'] = $config['upload_path']."/".$upload_data['file_name'];
}
}
$status = $this->Settings_model->update_settings($_POST);
if($status){
$flashMsg['class'] = 'success';
$flashMsg['message'] = 'Settings Successfully Updated..!';
$settings = $this->Settings_model->settings_viewing();
if(!empty($settings)){
$this->session->set_userdata('settings', $settings);
}
}
$this->session->set_flashdata('message',$flashMsg);
redirect(base_url('Settings'));
}
}
?>
\ No newline at end of file
...@@ -3,34 +3,243 @@ defined('BASEPATH') OR exit('No direct script access allowed'); ...@@ -3,34 +3,243 @@ defined('BASEPATH') OR exit('No direct script access allowed');
class Sub_category extends CI_Controller { class Sub_category extends CI_Controller {
public function __construct() { public function __construct() {
parent::__construct(); parent::__construct();
date_default_timezone_set("Asia/Kolkata"); date_default_timezone_set("Asia/Kolkata");
//$this->load->model('Category_model'); $this->load->model('Subcategory_model');
if(!$this->session->userdata('logged_in')) { if(!$this->session->userdata('logged_in')) {
redirect(base_url()); redirect(base_url());
} }
else { else {
$menu = $this->session->userdata('admin'); $menu = $this->session->userdata('admin');
if( $menu!=1 ) { if( $menu!=1 ) {
$this->session->set_flashdata('message', array('message' => "You don't have permission to access testimonials page.",'class' => 'danger')); $this->session->set_flashdata('message', array('message' => "You don't have permission to access testimonials page.",'class' => 'danger'));
redirect(base_url().'dashboard'); redirect(base_url().'dashboard');
} }
} }
} }
public function index()
{
public function index()
{ $data['menu'] = 'Subcategory Management';
$data['page'] = 'Subcategory/list'; $data['smenu'] = 'View Subcategory List';
$data['datatable'] = 1; $data['pTitle'] = "Category Management";
$this->load->view('template', $data); $data['pDescription'] = "View Subcategory List";
} $data['page'] = 'Subcategory/list';
$data['datatable'] = 1;
public function create() $data['subcatData']=$this->Subcategory_model->getsubcatData();
{
$data['page'] = 'Subcategory/create'; $this->load->view('template', $data);
$this->load->view('template', $data); }
}
public function create()
{
$data['menu'] = 'Subcategory Management';
$data['smenu'] = 'Add Subcategory';
$data['pTitle'] = "Subcategory Management";
$data['pDescription'] = "Add Subcategory";
$data['page'] = 'Subcategory/create';
$data['subcatData'] = $this->Subcategory_model->getsubcatData();
$data['catData'] = $this->Subcategory_model->getcatData();
//echo json_encode($data);exit;
$this->load->view('template', $data);
}
public function create_Subcategory()
{
$flashMsg = array('message'=>'Something went wrong, please try again..!','class'=>'error');
if(!isset($_POST) || empty($_POST)){
$this->session->set_flashdata('message',$flashMsg);
redirect(base_url('Sub_category/create'));
}
$err = 0;
$errMsg = '';
if($err == 0 && (!isset($_POST['sub_cat_name']) || empty($_POST['sub_cat_name']))){
$err = 1;
$errMsg = 'Provide a Subcategory Name';
} else if($err == 0 && (!isset($_FILES) || empty($_FILES) ||
!isset($_FILES['subcategory']) || empty($_FILES['subcategory']))){
$err = 1;
$errMsg = 'Provide a Subcategory Image';
}
if($err == 0){
$files = $_FILES;
$cpt = count($_FILES['subcategory']['name']);
$_FILES['userfile']['name']= time().$files['subcategory']['name'];
$_FILES['userfile']['type']= $files['subcategory']['type'];
$_FILES['userfile']['tmp_name']= $files['subcategory']['tmp_name'];
$_FILES['userfile']['error']= $files['subcategory']['error'];
$_FILES['userfile']['size']= $files['subcategory']['size'];
$config = array();
$config['upload_path'] = './uploads/subcategory';
$config['allowed_types'] = 'gif|jpg|jpeg|png|flv|f4v';
$config['max_size'] = '';
$config['overwrite'] = FALSE;
$this->load->library('upload', $config);
$this->upload->initialize($config);
$upload_img = $this->upload->do_upload();
$uploading_file = $this->upload->data();
$image_file = $config['upload_path'].'/'.$uploading_file['file_name'];
$subcatData = array('sub_cat_name' => $this->input->post('sub_cat_name'),
'cat_id' => $this->input->post('cat_id'),
'sub_cat_image' => $image_file );
}
if($err == 1){
$flashMsg['message'] = $errMsg;
$this->session->set_flashdata('message',$flashMsg);
redirect(base_url('Sub_category'));
}
$qry = $this->Subcategory_model->add_subcategory($subcatData);
if($qry)
{
$this->session->set_flashdata('message', array('message' => "Successfully added.",'class' => 'success'));
redirect(base_url().'Sub_category');
}else{
$this->session->set_flashdata('message',$flashMsg);
}
}
function edit($subcat_id=''){
$flashMsg = array('message'=>'Something went wrong, please try again..!','class'=>'error');
if(empty($subcat_id) || empty(decode_param($subcat_id))){
$this->session->set_flashdata('message',$flashMsg);
redirect(base_url('Sub_category/list'));
}
$data['page'] = 'Subcategory/create';
$data['menu'] = 'Subcategory Management';
$data['smenu'] = 'Edit Subcategory';
$data['pTitle'] = "Edit Subcategory";
$data['pDescription'] = "Update Subcategory Data";
$data['catData'] = $this->Subcategory_model->getcatData();
$data['subcat_id'] = $subcat_id;
$data['subcatData'] = $this->Subcategory_model->getsubcatData(decode_param($subcat_id));
$this->load->view('template',$data);
}
public function edit_Subcategory($subcat_id='')
{
$flashMsg = array('message'=>'Something went wrong, please try again..!','class'=>'error');
if(!isset($_POST) || empty($_POST) || empty($subcat_id)){
$this->session->set_flashdata('message',$flashMsg);
redirect(base_url('Sub_category'));
}
if(isset($_FILES['subcategory']['name']) && !empty($_FILES['subcategory']['name']))
{
$files = $_FILES;
$cpt = count($_FILES['subcategory']['name']);
$_FILES['userfile']['name']= time().$files['subcategory']['name'];
$_FILES['userfile']['type']= $files['subcategory']['type'];
$_FILES['userfile']['tmp_name']= $files['subcategory']['tmp_name'];
$_FILES['userfile']['error']= $files['subcategory']['error'];
$_FILES['userfile']['size']= $files['subcategory']['size'];
$config = array();
$config['upload_path'] = './uploads/subcategory';
$config['allowed_types'] = 'gif|jpg|jpeg|png|flv|f4v';
$config['max_size'] = '';
$config['overwrite'] = FALSE;
$this->load->library('upload', $config);
$this->upload->initialize($config);
$upload_img = $this->upload->do_upload();
if(!$upload_img){
$this->session->set_flashdata('message', array('message' => $this->upload->display_errors(),'class' => 'danger'));
} else{
$uploading_file = $this->upload->data();
$image_file = $config['upload_path'].'/'.$uploading_file['file_name'];
}
$SubcatData = array(
'sub_cat_name' => $this->input->post('sub_cat_name'),
'cat_id' => $this->input->post('cat_id'),
'sub_cat_image' => $image_file);
}else{
$SubcatData = array(
'sub_cat_name' => $this->input->post('sub_cat_name'),
'cat_id' => $this->input->post('cat_id'));
}
$result = $this->Subcategory_model->update_subcategory(decode_param($subcat_id),$SubcatData);
if($result)
{
$this->session->set_flashdata('message', array('message' => "Successfully Updated.",'class' => 'success'));
redirect(base_url().'Sub_category');
}else{
$this->session->set_flashdata('message', array('message' => "Please try again.",'class' => 'danger'));
}
}
public function delete($subcat_id='') {
$result = $this->Subcategory_model->delete_subcategory(decode_param($subcat_id));
$this->session->set_flashdata('message', array('message' => 'Subcategory Deleted Successfully','class' => 'success'));
redirect(base_url().'Sub_category');
}
} }
<?php
function set_upload_service($path){
$config = array();
$config['upload_path'] = $path;
$config['allowed_types'] = '*';
$config['overwrite'] = FALSE;
return $config;
}
function encode_param($param = ''){
if(empty($param)){
return;
}
$encode = base64_encode('{*}'.$param.'{*}');
$encode = base64_encode('a%a'.$encode.'a%a');
$encode = base64_encode('b'.$encode.'b');
$encode = base64_encode('Ta7K'.$encode.'eyRq');
return urlencode($encode);
}
function decode_param($param = ''){
if(empty($param)){
return;
}
$decode = urldecode(trim($param));
$decode = trim(base64_decode(urldecode($decode)),'Ta7K');
$decode = trim($decode,'eyRq');
$decode = trim(base64_decode(urldecode($decode)),'b');
$decode = trim(base64_decode(urldecode($decode)),'a%a');
$decode = trim(base64_decode(urldecode($decode)),'{*}');
return $decode;
}
?>
\ No newline at end of file
<?php
class Brand_model extends CI_Model {
public function _consruct(){
parent::_construct();
}
public function getBrandData($brand_id='',$view=''){
$cond = (!empty($view))?" status IN ($view) ":" status != '0' ";
$cond .= (!empty($brand_id))?" AND id='$brand_id' ":"";
$brandData = $this->db->query("SELECT * FROM brand WHERE $cond");
if(!empty($brandData)){
return (empty($brand_id))?$brandData->result():$brandData->row();
}
return 0;
}
public function add_brand($brandData){
$qry = $this->db->insert('brand',$brandData);
if ($this->db->trans_status() === TRUE)
{
$this->db->trans_commit();
return TRUE;
}else
{
$this->db->trans_rollback();
return false;
}
}
public function update_brand($id,$brandData)
{
$this->db->where('id',$id);
$qry = $this->db->update('brand',$brandData);
return true;
}
public function delete_brand($id) {
$data = array('status' => '0');
$this->db->where('id', $id);
$result = $this->db->update('brand', $data);
if($result) {
return "Success";
}
else {
return "Error";
}
}
}
...@@ -3,18 +3,59 @@ class Category_model extends CI_Model { ...@@ -3,18 +3,59 @@ class Category_model extends CI_Model {
public function _consruct(){ public function _consruct(){
parent::_construct(); parent::_construct();
} }
function add_category($categoryData){
$qry = $this->db->insert('category',$categoryData); public function getCategoryData($category_id='',$view=''){
$cond = (!empty($view))?" status IN ($view) ":" status != '0' ";
if ($this->db->trans_status() === TRUE) $cond .= (!empty($category_id))?" AND id='$category_id' ":"";
{
$this->db->trans_commit(); $categoryData = $this->db->query("SELECT * FROM category WHERE $cond");
return TRUE;
}else if(!empty($categoryData)){
{ return (empty($category_id))?$categoryData->result():$categoryData->row();
$this->db->trans_rollback(); }
return false; return 0;
} }
public function add_category($categoryData){
$qry = $this->db->insert('category',$categoryData);
if ($this->db->trans_status() === TRUE)
{
$this->db->trans_commit();
return TRUE;
}else
{
$this->db->trans_rollback();
return false;
}
}
function update_category($id,$categoryData)
{
$this->db->where('id',$id);
$qry = $this->db->update('category',$categoryData);
return true;
} }
function delete_category($id) {
$data = array(
'status' => '0'
);
$this->db->where('id', $id);
$result = $this->db->update('category', $data);
if($result) {
return "Success";
}
else {
return "Error";
}
}
} }
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Settings_model extends CI_Model {
public function _consruct(){
parent::_construct();
}
function settings_viewing(){
$query = $this->db->query(" SELECT * FROM `settings` order by id DESC ");
if(!empty($query)){
return $query->row_array();
}
return;
}
public function update_settings($data){
//echo json_encode($data);exit;
$result = $this->db->update('settings', $data);
return $result;
}
}
?>
\ No newline at end of file
<?php
class subcategory_model extends CI_Model {
public function _consruct(){
parent::_construct();
}
public function getsubcatData($subcat_id='',$view=''){
$cond = (!empty($view))?" status IN ($view) ":" sc.status != '0' ";
$cond .= (!empty($subcat_id))?" AND sc.id='$subcat_id' ":"";
$subcatData = $this->db->query("SELECT sc.*,c.cat_name FROM sub_category as sc
LEFT JOIN category as c ON c.id = sc.cat_id
WHERE $cond");
if(!empty($subcatData)){
return (empty($subcat_id))?$subcatData->result():$subcatData->row();
}
return 0;
}
public function add_subcategory($subcatData){
$qry = $this->db->insert('sub_category',$subcatData);
if ($this->db->trans_status() === TRUE)
{
$this->db->trans_commit();
return TRUE;
}else
{
$this->db->trans_rollback();
return false;
}
}
function update_subcategory($id,$subcatData)
{
$this->db->where('id',$id);
$qry = $this->db->update('sub_category',$subcatData);
return true;
}
function getcatData(){
$query = $this->db->query(" SELECT * FROM `category` order by id DESC ");
if(!empty($query)){
return $query->result_array();
}
return;
}
function delete_subcategory($id) {
$data = array(
'status' => '0'
);
$this->db->where('id', $id);
$result = $this->db->update('sub_category', $data);
if($result) {
return "Success";
}
else {
return "Error";
}
}
}
<style type="text/css">
.catagory_image_div{
width: 60px;
height:60px;
border-radius: 50%;
background: #a8a8a8;
}
.catagory_image_div img{
width: 100%;
height:100%;
border-radius: 50%;
object-fit: cover;
object-position: center;
}
</style>
<div class="breadcrumbs">
<div class="breadcrumbs-inner">
<div class="row m-0">
<div class="col-sm-4">
<div class="page-header float-left">
<div class="page-title">
<h1><?= $pTitle ?></h1>
</div>
</div>
</div>
<div class="col-sm-8">
<div class="page-header float-right">
<div class="page-title">
<ol class="breadcrumb text-right">
<li><a href="<?= base_url() ?>">Dashboard
</a></li>
<li><a ><?= $menu ?></a></li>
<li class="active"><?= $smenu ?></li>
</ol>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="content">
<div class="animated fadeIn">
<div class="row">
<div class="col-lg-12">
<?php
$url = (!isset($brand_id)||empty($brand_id))
?'Brand/create_brand':'Brand/edit_brand/'.$brand_id;
if($this->session->flashdata('message')) {
$flashdata = $this->session->flashdata('message'); ?>
<div class="alert alert-<?= $flashdata['class'] ?>">
<button class="close" data-dismiss="alert" type="button">×</button>
<?= $flashdata['message'] ?>
</div>
<?php } ?>
<div class="card">
<div class="card-header">
<strong><?= $pDescription ?></strong>
</div>
<div class="card-body card-block">
<form role="form" action="<?= base_url($url) ?>" method="post"
class="validate" data-parsley-validate="" enctype="multipart/form-data">
<div class="form-group"><label for="nf-email" class=" form-control-label">Brand Name</label>
<input type="text" id="nf-brand" name="brand_name" placeholder="Enter Brand Name" class="form-control required" value="<?= (isset($brandData->brand_name))?$brandData->brand_name:'' ?>" >
</div>
</div>
</div>
<div class="form-group">
<div class="row">
<div class="col-md-12">
<label for="nf-password" class=" form-control-label">Category Image</label>
</div>
</div>
<?php if(!empty($brandData->brand_image)) { ?>
<br>
<div class="row">
<div class="col-md-12">
<div class="catagory_image_div">
<img src="<?= (isset($brandData->brand_image))?base_url($brandData->brand_image):'' ?>" />
</div>
</div>
</div>
<br>
<?php } ?>
<div class="row">
<div class="col-md-12">
<input type="file" id="nf-password" name="brand" placeholder="Enter Password.." class="form-control">
</div>
</div>
</div>
<div class="card-footer">
<button type="submit" class="btn btn-primary btn-sm">
<i class="fa fa-dot-circle-o"></i> Submit
</button>
</form>
</div>
</div>
</div>
</div>
</div>
</div>
\ No newline at end of file
<style type="text/css">
.catagory_image_div{
width: 50px;
height:50px;
border-radius: 50%;
background: #a8a8a8;
}
.catagory_image_div img{
width: 100%;
height:100%;
border-radius: 50%;
object-fit: cover;
object-position: center;
}
</style>
<div class="breadcrumbs">
<div class="breadcrumbs-inner">
<?php
if($this->session->flashdata('message')) {
$message = $this->session->flashdata('message');
?>
<div class="alert alert-<?php echo $message['class']; ?>">
<button class="close" data-dismiss="alert" type="button">×</button>
<?php echo $message['message']; ?>
</div>
<?php
}
?>
<div class="row m-0">
<div class="col-sm-4">
<div class="page-header float-left">
<div class="page-title">
<h1><?= $pTitle ?></h1>
</div>
</div>
</div>
<div class="col-sm-8">
<div class="page-header float-right">
<div class="page-title">
<ol class="breadcrumb text-right">
<li><a href="<?= base_url() ?>">Dashboard
</a></li>
<li><a ><?= $menu ?></a></li>
<li class="active"><?= $smenu ?></li>
</ol>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="content">
<div class="animated fadeIn">
<div class="row">
<div class="col-md-12">
<div class="card">
<div class="card-header">
<strong class="card-title"><?= $pDescription ?></strong>
</div>
<div class="card-body">
<table id="bootstrap-data-table" class="table table-striped table-bordered">
<thead>
<tr>
<th>No</th>
<th>Name</th>
<th>Image</th>
<th>Action</th>
</tr>
</thead>
<tbody>
<?php
if(!empty($brandData)){
foreach($brandData as $key => $brand) { ?>
<tr>
<td><?php echo $key+1;?></td>
<td><?= $brand->brand_name ?>
</td>
<td>
<div class="catagory_image_div">
<img src="<?php echo base_url(); ?><?= $brand->brand_image ?> " />
</div>
</td>
<td><a class="btn btn-info btn-sm" href="<?= base_url('Brand/edit/'.encode_param($brand->id))?>">
<i class="glyphicon glyphicon-edit icon-white"></i>
Edit
</a>
<a class="btn btn-sm btn-danger"
href="<?= base_url('Brand/delete/'.encode_param($brand->id))?>"
onClick="return doconfirm()">
<i class="fa fa-fw fa-trash"></i>Delete
</a>
</td>
</tr>
<?php }} ?>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div><!-- .animated -->
</div><!-- .content -->
<script type="text/javascript">
function doconfirm(){
action = confirm("Are you sure to delete permanently?");
if(action != true) return false;
}
</script>
\ No newline at end of file
<style type="text/css">
.catagory_image_div{
width: 60px;
height:60px;
border-radius: 50%;
background: #a8a8a8;
}
.catagory_image_div img{
width: 100%;
height:100%;
border-radius: 50%;
object-fit: cover;
object-position: center;
}
</style>
<div class="breadcrumbs"> <div class="breadcrumbs">
<div class="breadcrumbs-inner"> <div class="breadcrumbs-inner">
<div class="row m-0"> <div class="row m-0">
<div class="col-sm-4"> <div class="col-sm-4">
<div class="page-header float-left"> <div class="page-header float-left">
<div class="page-title"> <div class="page-title">
<h1>Dashboard</h1> <h1><?= $pTitle ?></h1>
</div> </div>
</div> </div>
</div> </div>
...@@ -12,9 +28,10 @@ ...@@ -12,9 +28,10 @@
<div class="page-header float-right"> <div class="page-header float-right">
<div class="page-title"> <div class="page-title">
<ol class="breadcrumb text-right"> <ol class="breadcrumb text-right">
<li><a href="#">Dashboard</a></li> <li><a href="<?= base_url() ?>">Dashboard
<li><a href="#">Customer</a></li> </a></li>
<li class="active">Create</li> <li><a ><?= $menu ?></a></li>
<li class="active"><?= $smenu ?></li>
</ol> </ol>
</div> </div>
</div> </div>
...@@ -26,25 +43,68 @@ ...@@ -26,25 +43,68 @@
<div class="animated fadeIn"> <div class="animated fadeIn">
<div class="row"> <div class="row">
<div class="col-lg-12"> <div class="col-lg-12">
<?php
$url = (!isset($category_id)||empty($category_id))
?'Category/create_category':'Category/edit_category/'.$category_id;
if($this->session->flashdata('message')) {
$flashdata = $this->session->flashdata('message'); ?>
<div class="alert alert-<?= $flashdata['class'] ?>">
<button class="close" data-dismiss="alert" type="button">×</button>
<?= $flashdata['message'] ?>
</div>
<?php } ?>
<div class="card"> <div class="card">
<div class="card-header"> <div class="card-header">
<strong>Category</strong> Form <strong><?= $pDescription ?></strong>
</div> </div>
<div class="card-body card-block"> <div class="card-body card-block">
<form role="form" method="post" class="validate" data-parsley-validate="" enctype="multipart/form-data"> <form role="form" action="<?= base_url($url) ?>" method="post"
<div class="form-group"><label for="nf-email" class=" form-control-label">Category Name</label><input type="email" id="nf-email" name="cat_name" placeholder="Enter Email.." class="form-control required" data-parsley-trigger="change" required=""><span class="glyphicon form-control-feedback"></span></div> class="validate" data-parsley-validate="" enctype="multipart/form-data">
<div class="form-group"><label for="nf-password" class=" form-control-label">Category Image</label><input type="file" id="nf-password" name="category" placeholder="Enter Password.." class="form-control"><span class="help-block">Please enter your password</span></div> <div class="form-group"><label for="nf-email" class=" form-control-label">Category Name</label>
<input type="text" id="nf-brand" name="cat_name" placeholder="Enter Brand Name" class="form-control required" value="<?= (isset($categoryData->cat_name))?$categoryData->cat_name:'' ?>" >
</div> </div>
</div>
</div>
<div class="form-group">
<div class="row">
<div class="col-md-12">
<label for="nf-password" class=" form-control-label">Category Image</label>
</div>
</div>
<?php if(!empty($categoryData->cat_image)) { ?>
<br>
<div class="row">
<div class="col-md-12">
<div class="catagory_image_div">
<img src="<?= (isset($categoryData->cat_image))?base_url($categoryData->cat_image):'' ?>" />
</div>
</div>
</div>
<br>
<?php } ?>
<div class="row">
<div class="col-md-12">
<input type="file" id="nf-password" name="category" placeholder="Enter Password.." class="form-control">
</div>
</div>
</div>
<div class="card-footer"> <div class="card-footer">
<button type="submit" class="btn btn-primary btn-sm"> <button type="submit" class="btn btn-primary btn-sm">
<i class="fa fa-dot-circle-o"></i> Submit <i class="fa fa-dot-circle-o"></i> Submit
</button> </button>
</form> </form>
<!-- <button type="reset" class="btn btn-danger btn-sm">
<i class="fa fa-ban"></i> Reset
</button> -->
</div> </div>
</div> </div>
</div> </div>
......
<style type="text/css">
.catagory_image_div{
width: 60px;
height:60px;
border-radius: 50%;
background: #a8a8a8;
}
.catagory_image_div img{
width: 100%;
height:100%;
border-radius: 50%;
object-fit: cover;
object-position: center;
}
</style>
<div class="breadcrumbs">
<div class="breadcrumbs-inner">
<div class="row m-0">
<div class="col-sm-4">
<div class="page-header float-left">
<div class="page-title">
<h1>Dashboard</h1>
</div>
</div>
</div>
<div class="col-sm-8">
<div class="page-header float-right">
<div class="page-title">
<ol class="breadcrumb text-right">
<li><a href="#">Dashboard</a></li>
<li><a href="#">Customer</a></li>
<li class="active">Create</li>
</ol>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="content">
<div class="animated fadeIn">
<div class="row">
<div class="col-lg-12">
<div class="card">
<div class="card-header">
<strong>Category</strong> Form
</div>
<div class="card-body card-block">
<form role="form" action="<?php echo base_url(); ?>Category/edit_category/<?php echo $category['id'];?>" method="post" class="validate" data-parsley-validate="" enctype="multipart/form-data">
<div class="row">
<div class="col-md-12">
<div class="form-group"><label for="nf-email" class=" form-control-label">Category Name</label>
<input type="text" id="nf-email" value="<?php echo $category['cat_name'];?>" name="cat_name" placeholder="Enter Category Name" class="form-control required">
</div>
</div>
</div>
<div class="form-group">
<div class="row">
<div class="col-md-12">
<label for="nf-password" class=" form-control-label">Category Image</label>
</div>
</div>
<br>
<div class="row">
<div class="col-md-12">
<div class="catagory_image_div">
<img src="<?php echo base_url(); ?><?php echo $category['cat_image'];?>" />
</div>
</div>
</div>
<br>
<div class="row">
<div class="col-md-12">
<input type="file" id="nf-password" name="category" placeholder="Enter Password.." class="form-control">
</div>
</div>
</div>
</div>
<div class="card-footer">
<button type="submit" class="btn btn-primary btn-sm">
<i class="fa fa-dot-circle-o"></i> Submit
</button>
</form>
</div>
</div>
</div>
</div>
</div>
</div>
\ No newline at end of file
<style type="text/css">
.catagory_image_div{
width: 50px;
height:50px;
border-radius: 50%;
background: #a8a8a8;
}
.catagory_image_div img{
width: 100%;
height:100%;
border-radius: 50%;
object-fit: cover;
object-position: center;
}
</style>
<div class="breadcrumbs"> <div class="breadcrumbs">
<div class="breadcrumbs-inner"> <div class="breadcrumbs-inner">
<?php
if($this->session->flashdata('message')) {
$message = $this->session->flashdata('message');
?>
<div class="alert alert-<?php echo $message['class']; ?>">
<button class="close" data-dismiss="alert" type="button">×</button>
<?php echo $message['message']; ?>
</div>
<?php
}
?>
<div class="row m-0"> <div class="row m-0">
<div class="col-sm-4"> <div class="col-sm-4">
<div class="page-header float-left"> <div class="page-header float-left">
<div class="page-title"> <div class="page-title">
<h1>Customer</h1> <h1><?= $pTitle ?></h1>
</div> </div>
</div> </div>
</div> </div>
...@@ -12,8 +44,10 @@ ...@@ -12,8 +44,10 @@
<div class="page-header float-right"> <div class="page-header float-right">
<div class="page-title"> <div class="page-title">
<ol class="breadcrumb text-right"> <ol class="breadcrumb text-right">
<li><a href="#">Customer</a></li> <li><a href="<?= base_url() ?>">Dashboard
<li class="active">List</li> </a></li>
<li><a ><?= $menu ?></a></li>
<li class="active"><?= $smenu ?></li>
</ol> </ol>
</div> </div>
</div> </div>
...@@ -28,361 +62,46 @@ ...@@ -28,361 +62,46 @@
<div class="col-md-12"> <div class="col-md-12">
<div class="card"> <div class="card">
<div class="card-header"> <div class="card-header">
<strong class="card-title">Data Table</strong> <strong class="card-title"><?= $pDescription ?></strong>
</div> </div>
<div class="card-body"> <div class="card-body">
<table id="bootstrap-data-table" class="table table-striped table-bordered"> <table id="bootstrap-data-table" class="table table-striped table-bordered">
<thead> <thead>
<tr> <tr>
<th>No</th>
<th>Name</th> <th>Name</th>
<th>Position</th> <th>Image</th>
<th>Office</th> <th>Action</th>
<th>Salary</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
<tr> <?php
<td>Tiger Nixon</td> if(!empty($categoryData)){
<td>System Architect</td> foreach($categoryData as $key => $category) { ?>
<td>Edinburgh</td> <tr>
<td>$320,800</td> <td><?php echo $key+1;?></td>
</tr> <td><?= $category->cat_name ?>
<tr> </td>
<td>Garrett Winters</td> <td>
<td>Accountant</td> <div class="catagory_image_div">
<td>Tokyo</td> <img src="<?php echo base_url(); ?><?= $category->cat_image ?> " />
<td>$170,750</td>
</tr> </div>
<tr> </td>
<td>Ashton Cox</td> <td><a class="btn btn-info btn-sm" href="<?= base_url('Category/edit/'.encode_param($category->id))?>">
<td>Junior Technical Author</td> <i class="glyphicon glyphicon-edit icon-white"></i>
<td>San Francisco</td> Edit
<td>$86,000</td> </a>
</tr> <a class="btn btn-sm btn-danger"
<tr> href="<?= base_url('Category/delete/'.encode_param($category->id))?>"
<td>Cedric Kelly</td>
<td>Senior Javascript Developer</td>
<td>Edinburgh</td> onClick="return doconfirm()">
<td>$433,060</td> <i class="fa fa-fw fa-trash"></i>Delete
</tr> </a>
<tr> </td>
<td>Airi Satou</td>
<td>Accountant</td>
<td>Tokyo</td>
<td>$162,700</td>
</tr>
<tr>
<td>Brielle Williamson</td>
<td>Integration Specialist</td>
<td>New York</td>
<td>$372,000</td>
</tr>
<tr>
<td>Herrod Chandler</td>
<td>Sales Assistant</td>
<td>San Francisco</td>
<td>$137,500</td>
</tr>
<tr>
<td>Rhona Davidson</td>
<td>Integration Specialist</td>
<td>Tokyo</td>
<td>$327,900</td>
</tr>
<tr>
<td>Colleen Hurst</td>
<td>Javascript Developer</td>
<td>San Francisco</td>
<td>$205,500</td>
</tr>
<tr>
<td>Sonya Frost</td>
<td>Software Engineer</td>
<td>Edinburgh</td>
<td>$103,600</td>
</tr>
<tr>
<td>Jena Gaines</td>
<td>Office Manager</td>
<td>London</td>
<td>$90,560</td>
</tr>
<tr>
<td>Quinn Flynn</td>
<td>Support Lead</td>
<td>Edinburgh</td>
<td>$342,000</td>
</tr>
<tr>
<td>Charde Marshall</td>
<td>Regional Director</td>
<td>San Francisco</td>
<td>$470,600</td>
</tr>
<tr>
<td>Haley Kennedy</td>
<td>Senior Marketing Designer</td>
<td>London</td>
<td>$313,500</td>
</tr>
<tr>
<td>Tatyana Fitzpatrick</td>
<td>Regional Director</td>
<td>London</td>
<td>$385,750</td>
</tr>
<tr>
<td>Michael Silva</td>
<td>Marketing Designer</td>
<td>London</td>
<td>$198,500</td>
</tr>
<tr>
<td>Paul Byrd</td>
<td>Chief Financial Officer (CFO)</td>
<td>New York</td>
<td>$725,000</td>
</tr>
<tr>
<td>Gloria Little</td>
<td>Systems Administrator</td>
<td>New York</td>
<td>$237,500</td>
</tr>
<tr>
<td>Bradley Greer</td>
<td>Software Engineer</td>
<td>London</td>
<td>$132,000</td>
</tr>
<tr>
<td>Dai Rios</td>
<td>Personnel Lead</td>
<td>Edinburgh</td>
<td>$217,500</td>
</tr>
<tr>
<td>Jenette Caldwell</td>
<td>Development Lead</td>
<td>New York</td>
<td>$345,000</td>
</tr>
<tr>
<td>Yuri Berry</td>
<td>Chief Marketing Officer (CMO)</td>
<td>New York</td>
<td>$675,000</td>
</tr>
<tr>
<td>Caesar Vance</td>
<td>Pre-Sales Support</td>
<td>New York</td>
<td>$106,450</td>
</tr>
<tr>
<td>Doris Wilder</td>
<td>Sales Assistant</td>
<td>Sidney</td>
<td>$85,600</td>
</tr>
<tr>
<td>Angelica Ramos</td>
<td>Chief Executive Officer (CEO)</td>
<td>London</td>
<td>$1,200,000</td>
</tr>
<tr>
<td>Gavin Joyce</td>
<td>Developer</td>
<td>Edinburgh</td>
<td>$92,575</td>
</tr>
<tr>
<td>Jennifer Chang</td>
<td>Regional Director</td>
<td>Singapore</td>
<td>$357,650</td>
</tr>
<tr>
<td>Brenden Wagner</td>
<td>Software Engineer</td>
<td>San Francisco</td>
<td>$206,850</td>
</tr>
<tr>
<td>Fiona Green</td>
<td>Chief Operating Officer (COO)</td>
<td>San Francisco</td>
<td>$850,000</td>
</tr>
<tr>
<td>Shou Itou</td>
<td>Regional Marketing</td>
<td>Tokyo</td>
<td>$163,000</td>
</tr>
<tr>
<td>Michelle House</td>
<td>Integration Specialist</td>
<td>Sidney</td>
<td>$95,400</td>
</tr>
<tr>
<td>Suki Burks</td>
<td>Developer</td>
<td>London</td>
<td>$114,500</td>
</tr>
<tr>
<td>Prescott Bartlett</td>
<td>Technical Author</td>
<td>London</td>
<td>$145,000</td>
</tr>
<tr>
<td>Gavin Cortez</td>
<td>Team Leader</td>
<td>San Francisco</td>
<td>$235,500</td>
</tr>
<tr>
<td>Martena Mccray</td>
<td>Post-Sales support</td>
<td>Edinburgh</td>
<td>$324,050</td>
</tr>
<tr>
<td>Unity Butler</td>
<td>Marketing Designer</td>
<td>San Francisco</td>
<td>$85,675</td>
</tr>
<tr>
<td>Howard Hatfield</td>
<td>Office Manager</td>
<td>San Francisco</td>
<td>$164,500</td>
</tr>
<tr>
<td>Hope Fuentes</td>
<td>Secretary</td>
<td>San Francisco</td>
<td>$109,850</td>
</tr>
<tr>
<td>Vivian Harrell</td>
<td>Financial Controller</td>
<td>San Francisco</td>
<td>$452,500</td>
</tr>
<tr>
<td>Timothy Mooney</td>
<td>Office Manager</td>
<td>London</td>
<td>$136,200</td>
</tr>
<tr>
<td>Jackson Bradshaw</td>
<td>Director</td>
<td>New York</td>
<td>$645,750</td>
</tr>
<tr>
<td>Olivia Liang</td>
<td>Support Engineer</td>
<td>Singapore</td>
<td>$234,500</td>
</tr>
<tr>
<td>Bruno Nash</td>
<td>Software Engineer</td>
<td>London</td>
<td>$163,500</td>
</tr>
<tr>
<td>Sakura Yamamoto</td>
<td>Support Engineer</td>
<td>Tokyo</td>
<td>$139,575</td>
</tr>
<tr>
<td>Thor Walton</td>
<td>Developer</td>
<td>New York</td>
<td>$98,540</td>
</tr>
<tr>
<td>Finn Camacho</td>
<td>Support Engineer</td>
<td>San Francisco</td>
<td>$87,500</td>
</tr>
<tr>
<td>Serge Baldwin</td>
<td>Data Coordinator</td>
<td>Singapore</td>
<td>$138,575</td>
</tr>
<tr>
<td>Zenaida Frank</td>
<td>Software Engineer</td>
<td>New York</td>
<td>$125,250</td>
</tr>
<tr>
<td>Zorita Serrano</td>
<td>Software Engineer</td>
<td>San Francisco</td>
<td>$115,000</td>
</tr>
<tr>
<td>Jennifer Acosta</td>
<td>Junior Javascript Developer</td>
<td>Edinburgh</td>
<td>$75,650</td>
</tr>
<tr>
<td>Cara Stevens</td>
<td>Sales Assistant</td>
<td>New York</td>
<td>$145,600</td>
</tr>
<tr>
<td>Hermione Butler</td>
<td>Regional Director</td>
<td>London</td>
<td>$356,250</td>
</tr>
<tr>
<td>Lael Greer</td>
<td>Systems Administrator</td>
<td>London</td>
<td>$103,500</td>
</tr>
<tr>
<td>Jonas Alexander</td>
<td>Developer</td>
<td>San Francisco</td>
<td>$86,500</td>
</tr>
<tr>
<td>Shad Decker</td>
<td>Regional Director</td>
<td>Edinburgh</td>
<td>$183,000</td>
</tr>
<tr>
<td>Michael Bruce</td>
<td>Javascript Developer</td>
<td>Singapore</td>
<td>$183,000</td>
</tr>
<tr>
<td>Donna Snider</td>
<td>Customer Support</td>
<td>New York</td>
<td>$112,000</td>
</tr> </tr>
<?php }} ?>
</tbody> </tbody>
</table> </table>
</div> </div>
...@@ -394,4 +113,10 @@ ...@@ -394,4 +113,10 @@
</div><!-- .animated --> </div><!-- .animated -->
</div><!-- .content --> </div><!-- .content -->
<script type="text/javascript">
\ No newline at end of file
function doconfirm(){
action = confirm("Are you sure to delete permanently?");
if(action != true) return false;
}
</script>
\ No newline at end of file
<style type="text/css">
.catagory_image_div{
width: 60px;
height:60px;
border-radius: 50%;
background: #a8a8a8;
}
.catagory_image_div img{
width: 100%;
height:100%;
border-radius: 50%;
object-fit: cover;
object-position: center;
}
</style>
<div class="breadcrumbs">
<div class="breadcrumbs-inner">
<div class="row m-0">
<div class="col-sm-4">
<div class="page-header float-left">
<div class="page-title">
<h1><?= $pTitle ?></h1>
</div>
</div>
</div>
<div class="col-sm-8">
<div class="page-header float-right">
<div class="page-title">
<ol class="breadcrumb text-right">
<li><a href="<?= base_url() ?>">Dashboard
</a></li>
<li><a ><?= $menu ?></a></li>
<li class="active"><?= $smenu ?></li>
</ol>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="content">
<div class="animated fadeIn">
<div class="row">
<div class="col-lg-12">
<?php
$url = (!isset($subcat_id)||empty($subcat_id))
?'Sub_category/create_Subcategory':'Sub_category/edit_Subcategory/'.$subcat_id;
if($this->session->flashdata('message')) {
$flashdata = $this->session->flashdata('message'); ?>
<div class="alert alert-<?= $flashdata['class'] ?>">
<button class="close" data-dismiss="alert" type="button">×</button>
<?= $flashdata['message'] ?>
</div>
<?php } ?>
<div class="card">
<div class="card-header">
<strong><?= $pDescription ?></strong>
</div>
<div class="card-body card-block">
<form method="post" class="validate" role="form" action="<?= base_url().'Settings/change_settings'?>" enctype="multipart/form-data" data-parsley-validate="">
<div class="form-group col-xs-4">
<label>Site Title</label>
<input type="text" name="title" class="form-control required" placeholder="Enter Site Title" value="<?= $data['title'] ?>">
</div>
<div class="form-group col-xs-3">
<label>Title Short</label>
<input type="text" name="title_short" class="form-control required" placeholder="Enter Site Title" value="<?= $data['title_short'] ?>">
</div>
<div class="form-group col-xs-5">
<label>Site Logo</label>
<div class="col-md-12">
<div class="col-md-3">
<img id="site_logo" src="<?= base_url($data['site_logo']) ?>" onerror="this.src='<?=base_url("assets/images/no_image.png")?>';" height="75" width="75">
</div>
<div class="col-md-9" style="padding-top: 25px;">
<input name="site_logo" type="file" accept="image/*" onchange="setImg(this,'site_logo');" />
</div>
</div>
</div>
</div>
<div class="row">
<div class="form-group col-xs-4">
<label>Country Code</label>
<input type="text" name="country_flag" class="form-control required" placeholder="Enter SMTP Username" value="<?= $data['country_flag'] ?>">
</div>
<div class="form-group col-xs-3">
<label>Currency</label>
<input type="text" name="currency" class="form-control required" placeholder="Enter SMTP Password" value="<?= $data['currency'] ?>">
</div>
<div class="form-group col-xs-5">
<label>Favicon Icon</label>
<div class="col-md-12">
<div class="col-md-3">
<img id="fav_icon_image" src="<?= base_url($data['fav_icon']) ?>" onerror="this.src='<?=base_url("assets/images/no_image.png")?>';" height="75" width="75">
</div>
<div class="col-md-9" style="padding-top: 25px;">
<input name="fav_icon" type="file" accept="image/*" onchange="setImg(this,'fav_icon_image');" />
</div>
</div>
</div>
</div>
<div class="row">
<div class="form-group col-xs-4">
<label>SMTP Username</label>
<input type="text" name="smtp_username" class="form-control required" placeholder="Enter SMTP Username" value="<?= $data['smtp_username'] ?>">
</div>
<div class="form-group col-xs-3">
<label>SMTP Password</label>
<input type="text" name="smtp_password" class="form-control required" placeholder="Enter SMTP Password" value="<?= $data['smtp_password'] ?>">
</div>
<div class="form-group col-xs-4">
<label>Google API Key</label>
<input type="text" name="google_api_key" class="form-control required" placeholder="Enter Google API" value="<?= $data['google_api_key'] ?>">
</div>
</div>
<div class="row">
<div class="form-group col-xs-4">
<label>Commission Per Booking</label>
<input type="text" name="service_charge" class="form-control required" placeholder="Enter Service Charge" value="<?= $data['service_charge'] ?>">
</div>
<!-- <div class="form-group col-xs-3">
<label>BayanPay Merchant Key</label>
<input type="text" name="merchant_key" class="form-control required" placeholder="Enter Merchant Key" value="<?= $data['merchant_key'] ?>">
</div>
<div class="form-group col-xs-4">
<label>BayanPay Merchant ID</label>
<input type="text" name="merchant_id" class="form-control required" placeholder="Enter Merchant ID" value="<?= $data['merchant_id'] ?>">
</div> -->
</div>
</div>
<div class="box-footer" style="padding-left:46%">
<button type="submit" class="btn btn-info">Update</button>
</div>
</form>
</div>
</div>
</div>
</div>
\ No newline at end of file
<style type="text/css">
.catagory_image_div{
width: 60px;
height:60px;
border-radius: 50%;
background: #a8a8a8;
}
.catagory_image_div img{
width: 100%;
height:100%;
border-radius: 50%;
object-fit: cover;
object-position: center;
}
</style>
<div class="breadcrumbs"> <div class="breadcrumbs">
<div class="breadcrumbs-inner"> <div class="breadcrumbs-inner">
<div class="row m-0"> <div class="row m-0">
<div class="col-sm-4"> <div class="col-sm-4">
<div class="page-header float-left"> <div class="page-header float-left">
<div class="page-title"> <div class="page-title">
<h1>Dashboard</h1> <h1><?= $pTitle ?></h1>
</div> </div>
</div> </div>
</div> </div>
...@@ -12,9 +28,10 @@ ...@@ -12,9 +28,10 @@
<div class="page-header float-right"> <div class="page-header float-right">
<div class="page-title"> <div class="page-title">
<ol class="breadcrumb text-right"> <ol class="breadcrumb text-right">
<li><a href="#">Dashboard</a></li> <li><a href="<?= base_url() ?>">Dashboard
<li><a href="#">Customer</a></li> </a></li>
<li class="active">Create</li> <li><a ><?= $menu ?></a></li>
<li class="active"><?= $smenu ?></li>
</ol> </ol>
</div> </div>
</div> </div>
...@@ -26,49 +43,92 @@ ...@@ -26,49 +43,92 @@
<div class="animated fadeIn"> <div class="animated fadeIn">
<div class="row"> <div class="row">
<div class="col-lg-12"> <div class="col-lg-12">
<div class="card"> <?php
<div class="card-header"> $url = (!isset($subcat_id)||empty($subcat_id))
<strong>Customer</strong> Create ?'Sub_category/create_Subcategory':'Sub_category/edit_Subcategory/'.$subcat_id;
</div>
<div class="card-body card-block">
<form action="#" method="post" class="form-horizontal">
<div class="row form-group">
<div class="col col-md-3"><label for="hf-email" class=" form-control-label">Email</label></div>
<div class="col-12 col-md-9"><input type="email" id="hf-email" name="hf-email" placeholder="Enter Email..." class="form-control"><span class="help-block">Please enter your email</span></div>
</div>
<div class="row form-group">
<div class="col col-md-3"><label for="hf-password" class=" form-control-label">Password</label></div>
<div class="col-12 col-md-9"><input type="password" id="hf-password" name="hf-password" placeholder="Enter Password..." class="form-control"><span class="help-block">Please enter your password</span></div>
</div>
</form>
</div>
<div class="card-footer">
<button type="submit" class="btn btn-primary btn-sm">
<i class="fa fa-dot-circle-o"></i> Submit
</button>
<button type="reset" class="btn btn-danger btn-sm">
<i class="fa fa-ban"></i> Reset
</button>
</div>
</div>
if($this->session->flashdata('message')) {
$flashdata = $this->session->flashdata('message'); ?>
<div class="alert alert-<?= $flashdata['class'] ?>">
<button class="close" data-dismiss="alert" type="button">×</button>
<?= $flashdata['message'] ?>
</div>
<?php } ?>
<div class="card"> <div class="card">
<div class="card-header"> <div class="card-header">
<strong>Normal</strong> Form <strong><?= $pDescription ?></strong>
</div> </div>
<div class="card-body card-block"> <div class="card-body card-block">
<form action="#" method="post" class=""> <form role="form" action="<?= base_url($url) ?>" method="post"
<div class="form-group"><label for="nf-email" class=" form-control-label">Email</label><input type="email" id="nf-email" name="nf-email" placeholder="Enter Email.." class="form-control"><span class="help-block">Please enter your email</span></div> class="validate" data-parsley-validate="" enctype="multipart/form-data">
<div class="form-group"><label for="nf-password" class=" form-control-label">Password</label><input type="password" id="nf-password" name="nf-password" placeholder="Enter Password.." class="form-control"><span class="help-block">Please enter your password</span></div>
</form>
</div> <div class="form-group"><label for="nf-email" class=" form-control-label">Category Name</label>
<select name="cat_id" id="selectSm" class="form-control-sm form-control">
<option value="">Please select</option>
<?php foreach($catData as $key => $category) { ?>
<?php if (isset($subcat_id)||!empty($subcat_id)) { ?>
<option <?= $subcatData->cat_id == $category['id'] ? "selected" : "" ; ?> value="<?= $category['id'] ?>"><?= $category['cat_name'] ?></option>
<?php } ?>
<option value="<?= $category['id'] ?>"><?= $category['cat_name'] ?></option>
<?php } ?>
</select>
</div>
<div class="form-group"><label for="nf-email" class=" form-control-label">Subcategory Name</label>
<input type="text" id="nf-brand" name="sub_cat_name" placeholder="Enter Brand Name" class="form-control required" value="<?= (isset($subcatData->sub_cat_name))?$subcatData->sub_cat_name:'' ?>" >
</div>
</div>
</div>
<div class="form-group">
<div class="row">
<div class="col-md-12">
<label for="nf-password" class=" form-control-label">Category Image</label>
</div>
</div>
<?php if(!empty($subcatData->sub_cat_image)) { ?>
<br>
<div class="row">
<div class="col-md-12">
<div class="catagory_image_div">
<img src="<?= (isset($subcatData->sub_cat_image))?base_url($subcatData->sub_cat_image):'' ?>" />
</div>
</div>
</div>
<br>
<?php } ?>
<div class="row">
<div class="col-md-12">
<input type="file" id="nf-password" name="subcategory" placeholder="Enter Password.." class="form-control">
</div>
</div>
</div>
<div class="card-footer"> <div class="card-footer">
<button type="submit" class="btn btn-primary btn-sm"> <button type="submit" class="btn btn-primary btn-sm">
<i class="fa fa-dot-circle-o"></i> Submit <i class="fa fa-dot-circle-o"></i> Submit
</button> </button>
<button type="reset" class="btn btn-danger btn-sm"> </form>
<i class="fa fa-ban"></i> Reset
</button>
</div> </div>
</div> </div>
</div> </div>
......
<style type="text/css">
.catagory_image_div{
width: 60px;
height:60px;
border-radius: 50%;
background: #a8a8a8;
}
.catagory_image_div img{
width: 100%;
height:100%;
border-radius: 50%;
object-fit: cover;
object-position: center;
}
</style>
<div class="breadcrumbs">
<div class="breadcrumbs-inner">
<div class="row m-0">
<div class="col-sm-4">
<div class="page-header float-left">
<div class="page-title">
<h1>Dashboard</h1>
</div>
</div>
</div>
<div class="col-sm-8">
<div class="page-header float-right">
<div class="page-title">
<ol class="breadcrumb text-right">
<li><a href="#">Dashboard</a></li>
<li><a href="#">Customer</a></li>
<li class="active">Create</li>
</ol>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="content">
<div class="animated fadeIn">
<div class="row">
<div class="col-lg-12">
<div class="card">
<div class="card-header">
<strong>Category</strong> Form
</div>
<div class="card-body card-block">
<form role="form" action="<?php echo base_url(); ?>Category/edit_category/<?php echo $category['id'];?>" method="post" class="validate" data-parsley-validate="" enctype="multipart/form-data">
<div class="row">
<div class="col-md-12">
<div class="form-group"><label for="nf-email" class=" form-control-label">Category Name</label>
<input type="text" id="nf-email" value="<?php echo $category['cat_name'];?>" name="cat_name" placeholder="Enter Category Name" class="form-control required">
</div>
</div>
</div>
<div class="form-group">
<div class="row">
<div class="col-md-12">
<label for="nf-password" class=" form-control-label">Category Image</label>
</div>
</div>
<br>
<div class="row">
<div class="col-md-12">
<div class="catagory_image_div">
<img src="<?php echo base_url(); ?><?php echo $category['cat_image'];?>" />
</div>
</div>
</div>
<br>
<div class="row">
<div class="col-md-12">
<input type="file" id="nf-password" name="category" placeholder="Enter Password.." class="form-control">
</div>
</div>
</div>
</div>
<div class="card-footer">
<button type="submit" class="btn btn-primary btn-sm">
<i class="fa fa-dot-circle-o"></i> Submit
</button>
</form>
</div>
</div>
</div>
</div>
</div>
</div>
\ No newline at end of file
<style type="text/css">
.catagory_image_div{
width: 50px;
height:50px;
border-radius: 50%;
background: #a8a8a8;
}
.catagory_image_div img{
width: 100%;
height:100%;
border-radius: 50%;
object-fit: cover;
object-position: center;
}
</style>
<div class="breadcrumbs"> <div class="breadcrumbs">
<div class="breadcrumbs-inner"> <div class="breadcrumbs-inner">
<?php
if($this->session->flashdata('message')) {
$message = $this->session->flashdata('message');
?>
<div class="alert alert-<?php echo $message['class']; ?>">
<button class="close" data-dismiss="alert" type="button">×</button>
<?php echo $message['message']; ?>
</div>
<?php
}
?>
<div class="row m-0"> <div class="row m-0">
<div class="col-sm-4"> <div class="col-sm-4">
<div class="page-header float-left"> <div class="page-header float-left">
<div class="page-title"> <div class="page-title">
<h1>Customer</h1> <h1><?= $pTitle ?></h1>
</div> </div>
</div> </div>
</div> </div>
...@@ -12,8 +44,10 @@ ...@@ -12,8 +44,10 @@
<div class="page-header float-right"> <div class="page-header float-right">
<div class="page-title"> <div class="page-title">
<ol class="breadcrumb text-right"> <ol class="breadcrumb text-right">
<li><a href="#">Customer</a></li> <li><a href="<?= base_url() ?>">Dashboard
<li class="active">List</li> </a></li>
<li><a ><?= $menu ?></a></li>
<li class="active"><?= $smenu ?></li>
</ol> </ol>
</div> </div>
</div> </div>
...@@ -28,361 +62,48 @@ ...@@ -28,361 +62,48 @@
<div class="col-md-12"> <div class="col-md-12">
<div class="card"> <div class="card">
<div class="card-header"> <div class="card-header">
<strong class="card-title">Data Table</strong> <strong class="card-title"><?= $pDescription ?></strong>
</div> </div>
<div class="card-body"> <div class="card-body">
<table id="bootstrap-data-table" class="table table-striped table-bordered"> <table id="bootstrap-data-table" class="table table-striped table-bordered">
<thead> <thead>
<tr> <tr>
<th>No</th>
<th>Category</th>
<th>Name</th> <th>Name</th>
<th>Position</th> <th>Image</th>
<th>Office</th> <th>Action</th>
<th>Salary</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
<tr> <?php
<td>Tiger Nixon</td> if(!empty($subcatData)){
<td>System Architect</td> foreach($subcatData as $key => $category) { ?>
<td>Edinburgh</td> <tr>
<td>$320,800</td> <td><?php echo $key+1;?></td>
</tr> <td><?= $category->cat_name ?>
<tr> <td><?= $category->sub_cat_name ?>
<td>Garrett Winters</td> </td>
<td>Accountant</td> <td>
<td>Tokyo</td> <div class="catagory_image_div">
<td>$170,750</td> <img src="<?php echo base_url(); ?><?= $category->sub_cat_image ?> " />
</tr>
<tr> </div>
<td>Ashton Cox</td> </td>
<td>Junior Technical Author</td> <td><a class="btn btn-info btn-sm" href="<?= base_url('Sub_category/edit/'.encode_param($category->id))?>">
<td>San Francisco</td> <i class="glyphicon glyphicon-edit icon-white"></i>
<td>$86,000</td> Edit
</tr> </a>
<tr> <a class="btn btn-sm btn-danger"
<td>Cedric Kelly</td> href="<?= base_url('Sub_category/delete/'.encode_param($category->id))?>"
<td>Senior Javascript Developer</td>
<td>Edinburgh</td>
<td>$433,060</td> onClick="return doconfirm()">
</tr> <i class="fa fa-fw fa-trash"></i>Delete
<tr> </a>
<td>Airi Satou</td> </td>
<td>Accountant</td>
<td>Tokyo</td>
<td>$162,700</td>
</tr>
<tr>
<td>Brielle Williamson</td>
<td>Integration Specialist</td>
<td>New York</td>
<td>$372,000</td>
</tr>
<tr>
<td>Herrod Chandler</td>
<td>Sales Assistant</td>
<td>San Francisco</td>
<td>$137,500</td>
</tr>
<tr>
<td>Rhona Davidson</td>
<td>Integration Specialist</td>
<td>Tokyo</td>
<td>$327,900</td>
</tr>
<tr>
<td>Colleen Hurst</td>
<td>Javascript Developer</td>
<td>San Francisco</td>
<td>$205,500</td>
</tr>
<tr>
<td>Sonya Frost</td>
<td>Software Engineer</td>
<td>Edinburgh</td>
<td>$103,600</td>
</tr>
<tr>
<td>Jena Gaines</td>
<td>Office Manager</td>
<td>London</td>
<td>$90,560</td>
</tr>
<tr>
<td>Quinn Flynn</td>
<td>Support Lead</td>
<td>Edinburgh</td>
<td>$342,000</td>
</tr>
<tr>
<td>Charde Marshall</td>
<td>Regional Director</td>
<td>San Francisco</td>
<td>$470,600</td>
</tr>
<tr>
<td>Haley Kennedy</td>
<td>Senior Marketing Designer</td>
<td>London</td>
<td>$313,500</td>
</tr>
<tr>
<td>Tatyana Fitzpatrick</td>
<td>Regional Director</td>
<td>London</td>
<td>$385,750</td>
</tr>
<tr>
<td>Michael Silva</td>
<td>Marketing Designer</td>
<td>London</td>
<td>$198,500</td>
</tr>
<tr>
<td>Paul Byrd</td>
<td>Chief Financial Officer (CFO)</td>
<td>New York</td>
<td>$725,000</td>
</tr>
<tr>
<td>Gloria Little</td>
<td>Systems Administrator</td>
<td>New York</td>
<td>$237,500</td>
</tr>
<tr>
<td>Bradley Greer</td>
<td>Software Engineer</td>
<td>London</td>
<td>$132,000</td>
</tr>
<tr>
<td>Dai Rios</td>
<td>Personnel Lead</td>
<td>Edinburgh</td>
<td>$217,500</td>
</tr>
<tr>
<td>Jenette Caldwell</td>
<td>Development Lead</td>
<td>New York</td>
<td>$345,000</td>
</tr>
<tr>
<td>Yuri Berry</td>
<td>Chief Marketing Officer (CMO)</td>
<td>New York</td>
<td>$675,000</td>
</tr>
<tr>
<td>Caesar Vance</td>
<td>Pre-Sales Support</td>
<td>New York</td>
<td>$106,450</td>
</tr>
<tr>
<td>Doris Wilder</td>
<td>Sales Assistant</td>
<td>Sidney</td>
<td>$85,600</td>
</tr>
<tr>
<td>Angelica Ramos</td>
<td>Chief Executive Officer (CEO)</td>
<td>London</td>
<td>$1,200,000</td>
</tr>
<tr>
<td>Gavin Joyce</td>
<td>Developer</td>
<td>Edinburgh</td>
<td>$92,575</td>
</tr>
<tr>
<td>Jennifer Chang</td>
<td>Regional Director</td>
<td>Singapore</td>
<td>$357,650</td>
</tr>
<tr>
<td>Brenden Wagner</td>
<td>Software Engineer</td>
<td>San Francisco</td>
<td>$206,850</td>
</tr>
<tr>
<td>Fiona Green</td>
<td>Chief Operating Officer (COO)</td>
<td>San Francisco</td>
<td>$850,000</td>
</tr>
<tr>
<td>Shou Itou</td>
<td>Regional Marketing</td>
<td>Tokyo</td>
<td>$163,000</td>
</tr>
<tr>
<td>Michelle House</td>
<td>Integration Specialist</td>
<td>Sidney</td>
<td>$95,400</td>
</tr>
<tr>
<td>Suki Burks</td>
<td>Developer</td>
<td>London</td>
<td>$114,500</td>
</tr>
<tr>
<td>Prescott Bartlett</td>
<td>Technical Author</td>
<td>London</td>
<td>$145,000</td>
</tr>
<tr>
<td>Gavin Cortez</td>
<td>Team Leader</td>
<td>San Francisco</td>
<td>$235,500</td>
</tr>
<tr>
<td>Martena Mccray</td>
<td>Post-Sales support</td>
<td>Edinburgh</td>
<td>$324,050</td>
</tr>
<tr>
<td>Unity Butler</td>
<td>Marketing Designer</td>
<td>San Francisco</td>
<td>$85,675</td>
</tr>
<tr>
<td>Howard Hatfield</td>
<td>Office Manager</td>
<td>San Francisco</td>
<td>$164,500</td>
</tr>
<tr>
<td>Hope Fuentes</td>
<td>Secretary</td>
<td>San Francisco</td>
<td>$109,850</td>
</tr>
<tr>
<td>Vivian Harrell</td>
<td>Financial Controller</td>
<td>San Francisco</td>
<td>$452,500</td>
</tr>
<tr>
<td>Timothy Mooney</td>
<td>Office Manager</td>
<td>London</td>
<td>$136,200</td>
</tr>
<tr>
<td>Jackson Bradshaw</td>
<td>Director</td>
<td>New York</td>
<td>$645,750</td>
</tr>
<tr>
<td>Olivia Liang</td>
<td>Support Engineer</td>
<td>Singapore</td>
<td>$234,500</td>
</tr>
<tr>
<td>Bruno Nash</td>
<td>Software Engineer</td>
<td>London</td>
<td>$163,500</td>
</tr>
<tr>
<td>Sakura Yamamoto</td>
<td>Support Engineer</td>
<td>Tokyo</td>
<td>$139,575</td>
</tr>
<tr>
<td>Thor Walton</td>
<td>Developer</td>
<td>New York</td>
<td>$98,540</td>
</tr>
<tr>
<td>Finn Camacho</td>
<td>Support Engineer</td>
<td>San Francisco</td>
<td>$87,500</td>
</tr>
<tr>
<td>Serge Baldwin</td>
<td>Data Coordinator</td>
<td>Singapore</td>
<td>$138,575</td>
</tr>
<tr>
<td>Zenaida Frank</td>
<td>Software Engineer</td>
<td>New York</td>
<td>$125,250</td>
</tr>
<tr>
<td>Zorita Serrano</td>
<td>Software Engineer</td>
<td>San Francisco</td>
<td>$115,000</td>
</tr>
<tr>
<td>Jennifer Acosta</td>
<td>Junior Javascript Developer</td>
<td>Edinburgh</td>
<td>$75,650</td>
</tr>
<tr>
<td>Cara Stevens</td>
<td>Sales Assistant</td>
<td>New York</td>
<td>$145,600</td>
</tr>
<tr>
<td>Hermione Butler</td>
<td>Regional Director</td>
<td>London</td>
<td>$356,250</td>
</tr>
<tr>
<td>Lael Greer</td>
<td>Systems Administrator</td>
<td>London</td>
<td>$103,500</td>
</tr>
<tr>
<td>Jonas Alexander</td>
<td>Developer</td>
<td>San Francisco</td>
<td>$86,500</td>
</tr>
<tr>
<td>Shad Decker</td>
<td>Regional Director</td>
<td>Edinburgh</td>
<td>$183,000</td>
</tr>
<tr>
<td>Michael Bruce</td>
<td>Javascript Developer</td>
<td>Singapore</td>
<td>$183,000</td>
</tr>
<tr>
<td>Donna Snider</td>
<td>Customer Support</td>
<td>New York</td>
<td>$112,000</td>
</tr> </tr>
<?php }} ?>
</tbody> </tbody>
</table> </table>
</div> </div>
...@@ -394,4 +115,10 @@ ...@@ -394,4 +115,10 @@
</div><!-- .animated --> </div><!-- .animated -->
</div><!-- .content --> </div><!-- .content -->
<script type="text/javascript">
\ No newline at end of file
function doconfirm(){
action = confirm("Are you sure to delete permanently?");
if(action != true) return false;
}
</script>
\ No newline at end of file
...@@ -18,14 +18,34 @@ ...@@ -18,14 +18,34 @@
<li><i class="fa fa-user-plus"></i><a href="<?php echo base_url('Sub_category/create'); ?>">Create</a></li> <li><i class="fa fa-user-plus"></i><a href="<?php echo base_url('Sub_category/create'); ?>">Create</a></li>
<li><i class="fa fa-tasks"></i><a href="<?php echo base_url('Sub_category'); ?>">List</a></li> <li><i class="fa fa-tasks"></i><a href="<?php echo base_url('Sub_category'); ?>">List</a></li>
</ul> </ul>
</li> </li>
<li class="menu-item-has-children dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> <i class="menu-icon fa fa-cogs"></i>Manage Brand</a>
<ul class="sub-menu children dropdown-menu">
<li><i class="fa fa-user-plus"></i><a href="<?php echo base_url('Brand/create'); ?>">Create</a></li>
<li><i class="fa fa-tasks"></i><a href="<?php echo base_url('Brand'); ?>">List</a></li>
</ul>
</li>
<li class="menu-item-has-children dropdown"> <li class="menu-item-has-children dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> <i class="menu-icon fa fa-cogs"></i>Manage Customer</a> <a href="#" class="dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> <i class="menu-icon fa fa-cogs"></i>Manage Customer</a>
<ul class="sub-menu children dropdown-menu"> <ul class="sub-menu children dropdown-menu">
<li><i class="fa fa-user-plus"></i><a href="<?php echo base_url('index.php/customer/create'); ?>">Create</a></li> <li><i class="fa fa-user-plus"></i><a href="<?php echo base_url('index.php/customer/create'); ?>">Create</a></li>
<li><i class="fa fa-tasks"></i><a href="<?php echo base_url('index.php/customer'); ?>">List</a></li> <li><i class="fa fa-tasks"></i><a href="<?php echo base_url('index.php/customer'); ?>">List</a></li>
</ul> </ul>
</li> </li>
<li class="menu-item-has-children dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> <i class="menu-icon fa fa-cogs"></i>Settings</a>
<ul class="sub-menu children dropdown-menu">
<li><i class="fa fa-user-plus"></i><a href="<?php echo base_url('Settings'); ?>">Create</a></li>
</ul>
</li>
</ul> </ul>
</div><!-- /.navbar-collapse --> </div><!-- /.navbar-collapse -->
</nav> </nav>
......
...@@ -7,5 +7,5 @@ ...@@ -7,5 +7,5 @@
* MIT Licensed * MIT Licensed
*/ */
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("jquery")):"function"==typeof define&&define.amd?define(["jquery"],t):e.parsley=t(e.jQuery)}(this,function(e){"use strict";function t(e,t){return e.parsleyAdaptedCallback||(e.parsleyAdaptedCallback=function(){var i=Array.prototype.slice.call(arguments,0);i.unshift(this),e.apply(t||M,i)}),e.parsleyAdaptedCallback}function i(e){return 0===e.lastIndexOf(O,0)?e.substr(O.length):e}var n=1,r={},s={attr:function(e,t,i){var n,r,s,a=new RegExp("^"+t,"i");if("undefined"==typeof i)i={};else for(n in i)i.hasOwnProperty(n)&&delete i[n];if("undefined"==typeof e||"undefined"==typeof e[0])return i;for(s=e[0].attributes,n=s.length;n--;)r=s[n],r&&r.specified&&a.test(r.name)&&(i[this.camelize(r.name.slice(t.length))]=this.deserializeValue(r.value));return i},checkAttr:function(e,t,i){return e.is("["+t+i+"]")},setAttr:function(e,t,i,n){e[0].setAttribute(this.dasherize(t+i),String(n))},generateID:function(){return""+n++},deserializeValue:function(t){var i;try{return t?"true"==t||("false"==t?!1:"null"==t?null:isNaN(i=Number(t))?/^[\[\{]/.test(t)?e.parseJSON(t):t:i):t}catch(n){return t}},camelize:function(e){return e.replace(/-+(.)?/g,function(e,t){return t?t.toUpperCase():""})},dasherize:function(e){return e.replace(/::/g,"/").replace(/([A-Z]+)([A-Z][a-z])/g,"$1_$2").replace(/([a-z\d])([A-Z])/g,"$1_$2").replace(/_/g,"-").toLowerCase()},warn:function(){window.console&&"function"==typeof window.console.warn&&window.console.warn.apply(window.console,arguments)},warnOnce:function(e){r[e]||(r[e]=!0,this.warn.apply(this,arguments))},_resetWarnings:function(){r={}},trimString:function(e){return e.replace(/^\s+|\s+$/g,"")},objectCreate:Object.create||function(){var e=function(){};return function(t){if(arguments.length>1)throw Error("Second argument not supported");if("object"!=typeof t)throw TypeError("Argument must be an object");e.prototype=t;var i=new e;return e.prototype=null,i}}()},a=s,o={namespace:"data-parsley-",inputs:"input, textarea, select",excluded:"input[type=button], input[type=submit], input[type=reset], input[type=hidden]",priorityEnabled:!0,multiple:null,group:null,uiEnabled:!0,validationThreshold:3,focus:"first",trigger:!1,errorClass:"parsley-error",successClass:"parsley-success",classHandler:function(e){},errorsContainer:function(e){},errorsWrapper:'<ul class="parsley-errors-list"></ul>',errorTemplate:"<li></li>"},l=function(){};l.prototype={asyncSupport:!0,actualizeOptions:function(){return a.attr(this.$element,this.options.namespace,this.domOptions),this.parent&&this.parent.actualizeOptions&&this.parent.actualizeOptions(),this},_resetOptions:function(e){this.domOptions=a.objectCreate(this.parent.options),this.options=a.objectCreate(this.domOptions);for(var t in e)e.hasOwnProperty(t)&&(this.options[t]=e[t]);this.actualizeOptions()},_listeners:null,on:function(e,t){this._listeners=this._listeners||{};var i=this._listeners[e]=this._listeners[e]||[];return i.push(t),this},subscribe:function(t,i){e.listenTo(this,t.toLowerCase(),i)},off:function(e,t){var i=this._listeners&&this._listeners[e];if(i)if(t)for(var n=i.length;n--;)i[n]===t&&i.splice(n,1);else delete this._listeners[e];return this},unsubscribe:function(t,i){e.unsubscribeTo(this,t.toLowerCase())},trigger:function(e,t,i){t=t||this;var n,r=this._listeners&&this._listeners[e];if(r)for(var s=r.length;s--;)if(n=r[s].call(t,t,i),n===!1)return n;return this.parent?this.parent.trigger(e,t,i):!0},reset:function(){if("ParsleyForm"!==this.__class__)return this._trigger("reset");for(var e=0;e<this.fields.length;e++)this.fields[e]._trigger("reset");this._trigger("reset")},destroy:function(){if("ParsleyForm"!==this.__class__)return this.$element.removeData("Parsley"),this.$element.removeData("ParsleyFieldMultiple"),void this._trigger("destroy");for(var e=0;e<this.fields.length;e++)this.fields[e].destroy();this.$element.removeData("Parsley"),this._trigger("destroy")},asyncIsValid:function(){return a.warnOnce("asyncIsValid is deprecated; please use whenIsValid instead"),this.whenValid.apply(this,arguments)},_findRelatedMultiple:function(){return this.parent.$element.find("["+this.options.namespace+'multiple="'+this.options.multiple+'"]')}};var u={string:function(e){return e},integer:function(e){if(isNaN(e))throw'Requirement is not an integer: "'+e+'"';return parseInt(e,10)},number:function(e){if(isNaN(e))throw'Requirement is not a number: "'+e+'"';return parseFloat(e)},reference:function(t){var i=e(t);if(0===i.length)throw'No such reference: "'+t+'"';return i},"boolean":function(e){return"false"!==e},object:function(e){return a.deserializeValue(e)},regexp:function(e){var t="";return/^\/.*\/(?:[gimy]*)$/.test(e)?(t=e.replace(/.*\/([gimy]*)$/,"$1"),e=e.replace(new RegExp("^/(.*?)/"+t+"$"),"$1")):e="^"+e+"$",new RegExp(e,t)}},d=function(e,t){var i=e.match(/^\s*\[(.*)\]\s*$/);if(!i)throw'Requirement is not an array: "'+e+'"';var n=i[1].split(",").map(a.trimString);if(n.length!==t)throw"Requirement has "+n.length+" values when "+t+" are needed";return n},h=function(e,t){var i=u[e||"string"];if(!i)throw'Unknown requirement specification: "'+e+'"';return i(t)},p=function(e,t,i){var n=null,r={};for(var s in e)if(s){var a=i(s);"string"==typeof a&&(a=h(e[s],a)),r[s]=a}else n=h(e[s],t);return[n,r]},f=function(t){e.extend(!0,this,t)};f.prototype={validate:function(t,i){if(this.fn)return arguments.length>3&&(i=[].slice.call(arguments,1,-1)),this.fn.call(this,t,i);if(e.isArray(t)){if(!this.validateMultiple)throw"Validator `"+this.name+"` does not handle multiple values";return this.validateMultiple.apply(this,arguments)}if(this.validateNumber)return isNaN(t)?!1:(arguments[0]=parseFloat(arguments[0]),this.validateNumber.apply(this,arguments));if(this.validateString)return this.validateString.apply(this,arguments);throw"Validator `"+this.name+"` only handles multiple values"},parseRequirements:function(t,i){if("string"!=typeof t)return e.isArray(t)?t:[t];var n=this.requirementType;if(e.isArray(n)){for(var r=d(t,n.length),s=0;s<r.length;s++)r[s]=h(n[s],r[s]);return r}return e.isPlainObject(n)?p(n,t,i):[h(n,t)]},requirementType:"string",priority:2};var c=function(e,t){this.__class__="ParsleyValidatorRegistry",this.locale="en",this.init(e||{},t||{})},m={email:/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))$/i,number:/^-?(?:\d+|\d{1,3}(?:,\d{3})+)?(?:\.\d+)?$/,integer:/^-?\d+$/,digits:/^\d+$/,alphanum:/^\w+$/i,url:new RegExp("^(?:(?:https?|ftp)://)?(?:\\S+(?::\\S*)?@)?(?:(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,})))(?::\\d{2,5})?(?:/\\S*)?$","i")};m.range=m.number,c.prototype={init:function(t,i){this.catalog=i,this.validators=e.extend({},this.validators);for(var n in t)this.addValidator(n,t[n].fn,t[n].priority);window.Parsley.trigger("parsley:validator:init")},setLocale:function(e){if("undefined"==typeof this.catalog[e])throw new Error(e+" is not available in the catalog");return this.locale=e,this},addCatalog:function(e,t,i){return"object"==typeof t&&(this.catalog[e]=t),!0===i?this.setLocale(e):this},addMessage:function(e,t,i){return"undefined"==typeof this.catalog[e]&&(this.catalog[e]={}),this.catalog[e][t]=i,this},addMessages:function(e,t){for(var i in t)this.addMessage(e,i,t[i]);return this},addValidator:function(e,t,i){if(this.validators[e])a.warn('Validator "'+e+'" is already defined.');else if(o.hasOwnProperty(e))return void a.warn('"'+e+'" is a restricted keyword and is not a valid validator name.');return this._setValidator.apply(this,arguments)},updateValidator:function(e,t,i){return this.validators[e]?this._setValidator(this,arguments):(a.warn('Validator "'+e+'" is not already defined.'),this.addValidator.apply(this,arguments))},removeValidator:function(e){return this.validators[e]||a.warn('Validator "'+e+'" is not defined.'),delete this.validators[e],this},_setValidator:function(e,t,i){"object"!=typeof t&&(t={fn:t,priority:i}),t.validate||(t=new f(t)),this.validators[e]=t;for(var n in t.messages||{})this.addMessage(n,e,t.messages[n]);return this},getErrorMessage:function(e){var t;if("type"===e.name){var i=this.catalog[this.locale][e.name]||{};t=i[e.requirements]}else t=this.formatMessage(this.catalog[this.locale][e.name],e.requirements);return t||this.catalog[this.locale].defaultMessage||this.catalog.en.defaultMessage},formatMessage:function(e,t){if("object"==typeof t){for(var i in t)e=this.formatMessage(e,t[i]);return e}return"string"==typeof e?e.replace(new RegExp("%s","i"),t):""},validators:{notblank:{validateString:function(e){return/\S/.test(e)},priority:2},required:{validateMultiple:function(e){return e.length>0},validateString:function(e){return/\S/.test(e)},priority:512},type:{validateString:function(e,t){var i=m[t];if(!i)throw new Error("validator type `"+t+"` is not supported");return i.test(e)},priority:256},pattern:{validateString:function(e,t){return t.test(e)},requirementType:"regexp",priority:64},minlength:{validateString:function(e,t){return e.length>=t},requirementType:"integer",priority:30},maxlength:{validateString:function(e,t){return e.length<=t},requirementType:"integer",priority:30},length:{validateString:function(e,t,i){return e.length>=t&&e.length<=i},requirementType:["integer","integer"],priority:30},mincheck:{validateMultiple:function(e,t){return e.length>=t},requirementType:"integer",priority:30},maxcheck:{validateMultiple:function(e,t){return e.length<=t},requirementType:"integer",priority:30},check:{validateMultiple:function(e,t,i){return e.length>=t&&e.length<=i},requirementType:["integer","integer"],priority:30},min:{validateNumber:function(e,t){return e>=t},requirementType:"number",priority:30},max:{validateNumber:function(e,t){return t>=e},requirementType:"number",priority:30},range:{validateNumber:function(e,t,i){return e>=t&&i>=e},requirementType:["number","number"],priority:30},equalto:{validateString:function(t,i){var n=e(i);return n.length?t===n.val():t===i},priority:256}}};var y=function(e){this.__class__="ParsleyUI"};y.prototype={listen:function(){var e=this;return window.Parsley.on("form:init",function(){e.setupForm(this)}).on("field:init",function(){e.setupField(this)}).on("field:validated",function(){e.reflow(this)}).on("form:validated",function(){e.focus(this)}).on("field:reset",function(){e.reset(this)}).on("form:destroy",function(){e.destroy(this)}).on("field:destroy",function(){e.destroy(this)}),this},reflow:function(e){if("undefined"!=typeof e._ui&&!1!==e._ui.active){var t=this._diff(e.validationResult,e._ui.lastValidationResult);e._ui.lastValidationResult=e.validationResult,e._ui.validatedOnce=!0,this.manageStatusClass(e),this.manageErrorsMessages(e,t),this.actualizeTriggers(e),(t.kept.length||t.added.length)&&!0!==e._ui.failedOnce&&this.manageFailingFieldTrigger(e)}},getErrorsMessages:function(e){if(!0===e.validationResult)return[];for(var t=[],i=0;i<e.validationResult.length;i++)t.push(e.validationResult[i].errorMessage||this._getErrorMessage(e,e.validationResult[i].assert));return t},manageStatusClass:function(e){e.hasConstraints()&&e.needsValidation()&&!0===e.validationResult?this._successClass(e):e.validationResult.length>0?this._errorClass(e):this._resetClass(e)},manageErrorsMessages:function(t,i){if("undefined"==typeof t.options.errorsMessagesDisabled){if("undefined"!=typeof t.options.errorMessage)return i.added.length||i.kept.length?(this._insertErrorWrapper(t),0===t._ui.$errorsWrapper.find(".parsley-custom-error-message").length&&t._ui.$errorsWrapper.append(e(t.options.errorTemplate).addClass("parsley-custom-error-message")),t._ui.$errorsWrapper.addClass("filled").find(".parsley-custom-error-message").html(t.options.errorMessage)):t._ui.$errorsWrapper.removeClass("filled").find(".parsley-custom-error-message").remove();for(var n=0;n<i.removed.length;n++)this.removeError(t,i.removed[n].assert.name,!0);for(n=0;n<i.added.length;n++)this.addError(t,i.added[n].assert.name,i.added[n].errorMessage,i.added[n].assert,!0);for(n=0;n<i.kept.length;n++)this.updateError(t,i.kept[n].assert.name,i.kept[n].errorMessage,i.kept[n].assert,!0)}},addError:function(t,i,n,r,s){this._insertErrorWrapper(t),t._ui.$errorsWrapper.addClass("filled").append(e(t.options.errorTemplate).addClass("parsley-"+i).html(n||this._getErrorMessage(t,r))),!0!==s&&this._errorClass(t)},updateError:function(e,t,i,n,r){e._ui.$errorsWrapper.addClass("filled").find(".parsley-"+t).html(i||this._getErrorMessage(e,n)),!0!==r&&this._errorClass(e)},removeError:function(e,t,i){e._ui.$errorsWrapper.removeClass("filled").find(".parsley-"+t).remove(),!0!==i&&this.manageStatusClass(e)},focus:function(e){if(e._focusedField=null,!0===e.validationResult||"none"===e.options.focus)return null;for(var t=0;t<e.fields.length;t++){var i=e.fields[t];if(!0!==i.validationResult&&i.validationResult.length>0&&"undefined"==typeof i.options.noFocus&&(e._focusedField=i.$element,"first"===e.options.focus))break}return null===e._focusedField?null:e._focusedField.focus()},_getErrorMessage:function(e,t){var i=t.name+"Message";return"undefined"!=typeof e.options[i]?window.Parsley.formatMessage(e.options[i],t.requirements):window.Parsley.getErrorMessage(t)},_diff:function(e,t,i){for(var n=[],r=[],s=0;s<e.length;s++){for(var a=!1,o=0;o<t.length;o++)if(e[s].assert.name===t[o].assert.name){a=!0;break}a?r.push(e[s]):n.push(e[s])}return{kept:r,added:n,removed:i?[]:this._diff(t,e,!0).added}},setupForm:function(t){t.$element.on("submit.Parsley",!1,e.proxy(t.onSubmitValidate,t)),t.$element.on("click.Parsley",'input[type="submit"], button[type="submit"]',e.proxy(t.onSubmitButton,t)),!1!==t.options.uiEnabled&&t.$element.attr("novalidate","")},setupField:function(t){var i={active:!1};!1!==t.options.uiEnabled&&(i.active=!0,t.$element.attr(t.options.namespace+"id",t.__id__),i.$errorClassHandler=this._manageClassHandler(t),i.errorsWrapperId="parsley-id-"+(t.options.multiple?"multiple-"+t.options.multiple:t.__id__),i.$errorsWrapper=e(t.options.errorsWrapper).attr("id",i.errorsWrapperId),i.lastValidationResult=[],i.validatedOnce=!1,i.validationInformationVisible=!1,t._ui=i,this.actualizeTriggers(t))},_manageClassHandler:function(t){if("string"==typeof t.options.classHandler&&e(t.options.classHandler).length)return e(t.options.classHandler);var i=t.options.classHandler(t);return"undefined"!=typeof i&&i.length?i:!t.options.multiple||t.$element.is("select")?t.$element:t.$element.parent()},_insertErrorWrapper:function(t){var i;if(0!==t._ui.$errorsWrapper.parent().length)return t._ui.$errorsWrapper.parent();if("string"==typeof t.options.errorsContainer){if(e(t.options.errorsContainer).length)return e(t.options.errorsContainer).append(t._ui.$errorsWrapper);a.warn("The errors container `"+t.options.errorsContainer+"` does not exist in DOM")}else"function"==typeof t.options.errorsContainer&&(i=t.options.errorsContainer(t));if("undefined"!=typeof i&&i.length)return i.append(t._ui.$errorsWrapper);var n=t.$element;return t.options.multiple&&(n=n.parent()),n.after(t._ui.$errorsWrapper)},actualizeTriggers:function(t){var i=t.$element;if(t.options.multiple&&(i=e("["+t.options.namespace+'multiple="'+t.options.multiple+'"]')),i.off(".Parsley"),!1!==t.options.trigger){var n=t.options.trigger.replace(/^\s+/g,"").replace(/\s+$/g,"");""!==n&&i.on(n.split(" ").join(".Parsley ")+".Parsley",e.proxy("function"==typeof t.eventValidate?t.eventValidate:this.eventValidate,t))}},eventValidate:function(e){new RegExp("key").test(e.type)&&!this._ui.validationInformationVisible&&this.getValue().length<=this.options.validationThreshold||(this._ui.validatedOnce=!0,this.validate())},manageFailingFieldTrigger:function(t){return t._ui.failedOnce=!0,t.options.multiple&&e("["+t.options.namespace+'multiple="'+t.options.multiple+'"]').each(function(){return new RegExp("change","i").test(e(this).parsley().options.trigger||"")?void 0:e(this).on("change.ParsleyFailedOnce",!1,e.proxy(t.validate,t))}),t.$element.is("select")&&!new RegExp("change","i").test(t.options.trigger||"")?t.$element.on("change.ParsleyFailedOnce",!1,e.proxy(t.validate,t)):new RegExp("keyup","i").test(t.options.trigger||"")?void 0:t.$element.on("keyup.ParsleyFailedOnce",!1,e.proxy(t.validate,t))},reset:function(e){this.actualizeTriggers(e),e.$element.off(".ParsleyFailedOnce"),"undefined"!=typeof e._ui&&"ParsleyForm"!==e.__class__&&(e._ui.$errorsWrapper.removeClass("filled").children().remove(),this._resetClass(e),e._ui.validatedOnce=!1,e._ui.lastValidationResult=[],e._ui.validationInformationVisible=!1,e._ui.failedOnce=!1)},destroy:function(e){this.reset(e),"ParsleyForm"!==e.__class__&&("undefined"!=typeof e._ui&&e._ui.$errorsWrapper.remove(),delete e._ui)},_successClass:function(e){e._ui.validationInformationVisible=!0,e._ui.$errorClassHandler.removeClass(e.options.errorClass).addClass(e.options.successClass)},_errorClass:function(e){e._ui.validationInformationVisible=!0,e._ui.$errorClassHandler.removeClass(e.options.successClass).addClass(e.options.errorClass)},_resetClass:function(e){e._ui.$errorClassHandler.removeClass(e.options.successClass).removeClass(e.options.errorClass)}};var g=function(t,i,n){this.__class__="ParsleyForm",this.__id__=a.generateID(),this.$element=e(t),this.domOptions=i,this.options=n,this.parent=window.Parsley,this.fields=[],this.validationResult=null},v={pending:null,resolved:!0,rejected:!1};g.prototype={onSubmitValidate:function(e){var t=this;if(!0!==e.parsley)return this._$submitSource=this._$submitSource||this.$element.find('input[type="submit"], button[type="submit"]').first(),this._$submitSource.is("[formnovalidate]")?void(this._$submitSource=null):(e.stopImmediatePropagation(),e.preventDefault(),this.whenValidate(void 0,void 0,e).done(function(){t._submit()}).always(function(){t._$submitSource=null}),this)},onSubmitButton:function(t){this._$submitSource=e(t.target)},_submit:function(){!1!==this._trigger("submit")&&(this.$element.find(".parsley_synthetic_submit_button").remove(),this._$submitSource&&e('<input class="parsley_synthetic_submit_button" type="hidden">').attr("name",this._$submitSource.attr("name")).attr("value",this._$submitSource.attr("value")).appendTo(this.$element),this.$element.trigger(e.extend(e.Event("submit"),{parsley:!0})))},validate:function(e,t,i){return v[this.whenValidate(e,t,i).state()]},whenValidate:function(t,i,n){var r=this;this.submitEvent=n,this.validationResult=!0,this._trigger("validate"),this._refreshFields();var s=this._withoutReactualizingFormOptions(function(){return e.map(this.fields,function(e){return!t||r._isFieldInGroup(e,t)?e.whenValidate(i):void 0})}),a=function(){var t=e.Deferred();return!1===r.validationResult&&t.reject(),t.resolve().promise()};return e.when.apply(e,s).done(function(){r._trigger("success")}).fail(function(){r.validationResult=!1,r._trigger("error")}).always(function(){r._trigger("validated")}).pipe(a,a)},isValid:function(e,t){return v[this.whenValid(e,t).state()]},whenValid:function(t,i){var n=this;this._refreshFields();var r=this._withoutReactualizingFormOptions(function(){return e.map(this.fields,function(e){return!t||n._isFieldInGroup(e,t)?e.whenValid(i):void 0})});return e.when.apply(e,r)},_isFieldInGroup:function(t,i){return e.isArray(t.options.group)?-1!==e.inArray(i,t.options.group):t.options.group===i},_refreshFields:function(){return this.actualizeOptions()._bindFields()},_bindFields:function(){var t=this,i=this.fields;return this.fields=[],this.fieldsMappedById={},this._withoutReactualizingFormOptions(function(){this.$element.find(this.options.inputs).not(this.options.excluded).each(function(){var e=new window.Parsley.Factory(this,{},t);"ParsleyField"!==e.__class__&&"ParsleyFieldMultiple"!==e.__class__||!0===e.options.excluded||"undefined"==typeof t.fieldsMappedById[e.__class__+"-"+e.__id__]&&(t.fieldsMappedById[e.__class__+"-"+e.__id__]=e,t.fields.push(e))}),e(i).not(t.fields).each(function(){this._trigger("reset")})}),this},_withoutReactualizingFormOptions:function(e){var t=this.actualizeOptions;this.actualizeOptions=function(){return this};var i=e.call(this);return this.actualizeOptions=t,i},_trigger:function(e){return this.trigger("form:"+e)}};var _=function(t,i,n,r,s){if(!new RegExp("ParsleyField").test(t.__class__))throw new Error("ParsleyField or ParsleyFieldMultiple instance expected");var a=window.Parsley._validatorRegistry.validators[i],o=new f(a);e.extend(this,{validator:o,name:i,requirements:n,priority:r||t.options[i+"Priority"]||o.priority,isDomConstraint:!0===s}),this._parseRequirements(t.options)},w=function(e){var t=e[0].toUpperCase();return t+e.slice(1)};_.prototype={validate:function(e,t){var i=this.requirementList.slice(0);return i.unshift(e),i.push(t),this.validator.validate.apply(this.validator,i)},_parseRequirements:function(e){var t=this;this.requirementList=this.validator.parseRequirements(this.requirements,function(i){return e[t.name+w(i)]})}};var F=function(t,i,n,r){this.__class__="ParsleyField",this.__id__=a.generateID(),this.$element=e(t),"undefined"!=typeof r&&(this.parent=r),this.options=n,this.domOptions=i,this.constraints=[],this.constraintsByName={},this.validationResult=[],this._bindConstraints()},b={pending:null,resolved:!0,rejected:!1};F.prototype={validate:function(e){var t=this.whenValidate(e);switch(t.state()){case"pending":return null;case"resolved":return!0;case"rejected":return this.validationResult}},whenValidate:function(e){var t=this;return this.value=this.getValue(),this._trigger("validate"),this.whenValid(e,this.value).done(function(){t._trigger("success")}).fail(function(){t._trigger("error")}).always(function(){t._trigger("validated")})},hasConstraints:function(){return 0!==this.constraints.length},needsValidation:function(e){return"undefined"==typeof e&&(e=this.getValue()),e.length||this._isRequired()||"undefined"!=typeof this.options.validateIfEmpty?!0:!1},isValid:function(e,t){return b[this.whenValid(e,t).state()]},whenValid:function(t,i){if(this.refreshConstraints(),this.validationResult=!0,!this.hasConstraints())return e.when();if("boolean"!=typeof t&&"undefined"==typeof i&&(i=t,t=!1),("undefined"==typeof i||null===i)&&(i=this.getValue()),!this.needsValidation(i)&&!0!==t)return e.when();var n=this._getGroupedConstraints(),r=[],s=this;return e.each(n,function(t,n){var a=e.when.apply(e,e.map(n,e.proxy(s,"_validateConstraint",i)));return r.push(a),"rejected"===a.state()?!1:void 0}),e.when.apply(e,r)},_validateConstraint:function(t,i){var n=this,r=i.validate(t,this);return!1===r&&(r=e.Deferred().reject()),e.when(r).fail(function(e){!0===n.validationResult&&(n.validationResult=[]),n.validationResult.push({assert:i,errorMessage:"string"==typeof e&&e})})},getValue:function(){var e;return e="function"==typeof this.options.value?this.options.value(this):"undefined"!=typeof this.options.value?this.options.value:this.$element.val(),"undefined"==typeof e||null===e?"":this._handleWhitespace(e)},refreshConstraints:function(){return this.actualizeOptions()._bindConstraints()},addConstraint:function(e,t,i,n){if(window.Parsley._validatorRegistry.validators[e]){var r=new _(this,e,t,i,n);"undefined"!==this.constraintsByName[r.name]&&this.removeConstraint(r.name),this.constraints.push(r),this.constraintsByName[r.name]=r}return this},removeConstraint:function(e){for(var t=0;t<this.constraints.length;t++)if(e===this.constraints[t].name){this.constraints.splice(t,1);break}return delete this.constraintsByName[e],this},updateConstraint:function(e,t,i){return this.removeConstraint(e).addConstraint(e,t,i)},_bindConstraints:function(){for(var e=[],t={},i=0;i<this.constraints.length;i++)!1===this.constraints[i].isDomConstraint&&(e.push(this.constraints[i]),t[this.constraints[i].name]=this.constraints[i]);this.constraints=e,this.constraintsByName=t;for(var n in this.options)this.addConstraint(n,this.options[n],void 0,!0);return this._bindHtml5Constraints()},_bindHtml5Constraints:function(){(this.$element.hasClass("required")||this.$element.attr("required"))&&this.addConstraint("required",!0,void 0,!0),"string"==typeof this.$element.attr("pattern")&&this.addConstraint("pattern",this.$element.attr("pattern"),void 0,!0),"undefined"!=typeof this.$element.attr("min")&&"undefined"!=typeof this.$element.attr("max")?this.addConstraint("range",[this.$element.attr("min"),this.$element.attr("max")],void 0,!0):"undefined"!=typeof this.$element.attr("min")?this.addConstraint("min",this.$element.attr("min"),void 0,!0):"undefined"!=typeof this.$element.attr("max")&&this.addConstraint("max",this.$element.attr("max"),void 0,!0),"undefined"!=typeof this.$element.attr("minlength")&&"undefined"!=typeof this.$element.attr("maxlength")?this.addConstraint("length",[this.$element.attr("minlength"),this.$element.attr("maxlength")],void 0,!0):"undefined"!=typeof this.$element.attr("minlength")?this.addConstraint("minlength",this.$element.attr("minlength"),void 0,!0):"undefined"!=typeof this.$element.attr("maxlength")&&this.addConstraint("maxlength",this.$element.attr("maxlength"),void 0,!0);var e=this.$element.attr("type");return"undefined"==typeof e?this:"number"===e?"undefined"==typeof this.$element.attr("step")||0===parseFloat(this.$element.attr("step"))%1?this.addConstraint("type","integer",void 0,!0):this.addConstraint("type","number",void 0,!0):/^(email|url|range)$/i.test(e)?this.addConstraint("type",e,void 0,!0):this},_isRequired:function(){return"undefined"==typeof this.constraintsByName.required?!1:!1!==this.constraintsByName.required.requirements},_trigger:function(e){return this.trigger("field:"+e)},_handleWhitespace:function(e){return!0===this.options.trimValue&&a.warnOnce('data-parsley-trim-value="true" is deprecated, please use data-parsley-whitespace="trim"'),"squish"===this.options.whitespace&&(e=e.replace(/\s{2,}/g," ")),("trim"===this.options.whitespace||"squish"===this.options.whitespace||!0===this.options.trimValue)&&(e=a.trimString(e)),e},_getGroupedConstraints:function(){if(!1===this.options.priorityEnabled)return[this.constraints];for(var e=[],t={},i=0;i<this.constraints.length;i++){var n=this.constraints[i].priority;t[n]||e.push(t[n]=[]),t[n].push(this.constraints[i])}return e.sort(function(e,t){return t[0].priority-e[0].priority}),e}};var $=F,C=function(){this.__class__="ParsleyFieldMultiple"};C.prototype={addElement:function(e){return this.$elements.push(e),this},refreshConstraints:function(){var t;if(this.constraints=[],this.$element.is("select"))return this.actualizeOptions()._bindConstraints(),this;for(var i=0;i<this.$elements.length;i++)if(e("html").has(this.$elements[i]).length){t=this.$elements[i].data("ParsleyFieldMultiple").refreshConstraints().constraints;for(var n=0;n<t.length;n++)this.addConstraint(t[n].name,t[n].requirements,t[n].priority,t[n].isDomConstraint)}else this.$elements.splice(i,1);return this},getValue:function(){if("undefined"!=typeof this.options.value)return this.options.value;if(this.$element.is("input[type=radio]"))return this._findRelatedMultiple().filter(":checked").val()||"";if(this.$element.is("input[type=checkbox]")){var t=[];return this._findRelatedMultiple().filter(":checked").each(function(){t.push(e(this).val())}),t}return this.$element.is("select")&&null===this.$element.val()?[]:this.$element.val()},_init:function(){return this.$elements=[this.$element],this}};var x=function(t,i,n){this.$element=e(t);var r=this.$element.data("Parsley");if(r)return"undefined"!=typeof n&&r.parent===window.Parsley&&(r.parent=n,r._resetOptions(r.options)),r;if(!this.$element.length)throw new Error("You must bind Parsley on an existing element.");if("undefined"!=typeof n&&"ParsleyForm"!==n.__class__)throw new Error("Parent instance must be a ParsleyForm instance");return this.parent=n||window.Parsley,this.init(i)};x.prototype={init:function(e){return this.__class__="Parsley",this.__version__="@@version",this.__id__=a.generateID(),this._resetOptions(e),this.$element.is("form")||a.checkAttr(this.$element,this.options.namespace,"validate")&&!this.$element.is(this.options.inputs)?this.bind("parsleyForm"):this.isMultiple()?this.handleMultiple():this.bind("parsleyField")},isMultiple:function(){return this.$element.is("input[type=radio], input[type=checkbox]")||this.$element.is("select")&&"undefined"!=typeof this.$element.attr("multiple")},handleMultiple:function(){var t,i,n=this;if(this.options.multiple||("undefined"!=typeof this.$element.attr("name")&&this.$element.attr("name").length?this.options.multiple=t=this.$element.attr("name"):"undefined"!=typeof this.$element.attr("id")&&this.$element.attr("id").length&&(this.options.multiple=this.$element.attr("id"))),this.$element.is("select")&&"undefined"!=typeof this.$element.attr("multiple"))return this.options.multiple=this.options.multiple||this.__id__,this.bind("parsleyFieldMultiple");if(!this.options.multiple)return a.warn("To be bound by Parsley, a radio, a checkbox and a multiple select input must have either a name or a multiple option.",this.$element),this;this.options.multiple=this.options.multiple.replace(/(:|\.|\[|\]|\{|\}|\$)/g,""),"undefined"!=typeof t&&e('input[name="'+t+'"]').each(function(){e(this).is("input[type=radio], input[type=checkbox]")&&e(this).attr(n.options.namespace+"multiple",n.options.multiple)});for(var r=this._findRelatedMultiple(),s=0;s<r.length;s++)if(i=e(r.get(s)).data("Parsley"),"undefined"!=typeof i){this.$element.data("ParsleyFieldMultiple")||i.addElement(this.$element);break}return this.bind("parsleyField",!0),i||this.bind("parsleyFieldMultiple")},bind:function(t,i){var n;switch(t){case"parsleyForm":n=e.extend(new g(this.$element,this.domOptions,this.options),window.ParsleyExtend)._bindFields();break;case"parsleyField":n=e.extend(new $(this.$element,this.domOptions,this.options,this.parent),window.ParsleyExtend);break;case"parsleyFieldMultiple":n=e.extend(new $(this.$element,this.domOptions,this.options,this.parent),new C,window.ParsleyExtend)._init();break;default:throw new Error(t+"is not a supported Parsley type")}return this.options.multiple&&a.setAttr(this.$element,this.options.namespace,"multiple",this.options.multiple),"undefined"!=typeof i?(this.$element.data("ParsleyFieldMultiple",n),n):(this.$element.data("Parsley",n),n._trigger("init"),n)}};var P=e.fn.jquery.split(".");if(parseInt(P[0])<=1&&parseInt(P[1])<8)throw"The loaded version of jQuery is too old. Please upgrade to 1.8.x or better.";P.forEach||a.warn("Parsley requires ES5 to run properly. Please include https://github.com/es-shims/es5-shim");var V=e.extend(new l,{$element:e(document),actualizeOptions:null,_resetOptions:null,Factory:x,version:"@@version"});e.extend($.prototype,l.prototype),e.extend(g.prototype,l.prototype),e.extend(x.prototype,l.prototype),e.fn.parsley=e.fn.psly=function(t){if(this.length>1){var i=[];return this.each(function(){i.push(e(this).parsley(t))}),i}return e(this).length?new x(this,t):void a.warn("You must bind Parsley on an existing element.")},"undefined"==typeof window.ParsleyExtend&&(window.ParsleyExtend={}),V.options=e.extend(a.objectCreate(o),window.ParsleyConfig),window.ParsleyConfig=V.options, !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("jquery")):"function"==typeof define&&define.amd?define(["jquery"],t):e.parsley=t(e.jQuery)}(this,function(e){"use strict";function t(e,t){return e.parsleyAdaptedCallback||(e.parsleyAdaptedCallback=function(){var i=Array.prototype.slice.call(arguments,0);i.unshift(this),e.apply(t||M,i)}),e.parsleyAdaptedCallback}function i(e){return 0===e.lastIndexOf(O,0)?e.substr(O.length):e}var n=1,r={},s={attr:function(e,t,i){var n,r,s,a=new RegExp("^"+t,"i");if("undefined"==typeof i)i={};else for(n in i)i.hasOwnProperty(n)&&delete i[n];if("undefined"==typeof e||"undefined"==typeof e[0])return i;for(s=e[0].attributes,n=s.length;n--;)r=s[n],r&&r.specified&&a.test(r.name)&&(i[this.camelize(r.name.slice(t.length))]=this.deserializeValue(r.value));return i},checkAttr:function(e,t,i){return e.is("["+t+i+"]")},setAttr:function(e,t,i,n){e[0].setAttribute(this.dasherize(t+i),String(n))},generateID:function(){return""+n++},deserializeValue:function(t){var i;try{return t?"true"==t||("false"==t?!1:"null"==t?null:isNaN(i=Number(t))?/^[\[\{]/.test(t)?e.parseJSON(t):t:i):t}catch(n){return t}},camelize:function(e){return e.replace(/-+(.)?/g,function(e,t){return t?t.toUpperCase():""})},dasherize:function(e){return e.replace(/::/g,"/").replace(/([A-Z]+)([A-Z][a-z])/g,"$1_$2").replace(/([a-z\d])([A-Z])/g,"$1_$2").replace(/_/g,"-").toLowerCase()},warn:function(){window.console&&"function"==typeof window.console.warn&&window.console.warn.apply(window.console,arguments)},warnOnce:function(e){r[e]||(r[e]=!0,this.warn.apply(this,arguments))},_resetWarnings:function(){r={}},trimString:function(e){return e.replace(/^\s+|\s+$/g,"")},objectCreate:Object.create||function(){var e=function(){};return function(t){if(arguments.length>1)throw Error("Second argument not supported");if("object"!=typeof t)throw TypeError("Argument must be an object");e.prototype=t;var i=new e;return e.prototype=null,i}}()},a=s,o={namespace:"data-parsley-",inputs:"input, textarea, select",excluded:"input[type=button], input[type=submit], input[type=reset], input[type=hidden]",priorityEnabled:!0,multiple:null,group:null,uiEnabled:!0,validationThreshold:3,focus:"first",trigger:!1,errorClass:"parsley-error",successClass:"parsley-success",classHandler:function(e){},errorsContainer:function(e){},errorsWrapper:'<ul class="parsley-errors-list"></ul>',errorTemplate:"<li></li>"},l=function(){};l.prototype={asyncSupport:!0,actualizeOptions:function(){return a.attr(this.$element,this.options.namespace,this.domOptions),this.parent&&this.parent.actualizeOptions&&this.parent.actualizeOptions(),this},_resetOptions:function(e){this.domOptions=a.objectCreate(this.parent.options),this.options=a.objectCreate(this.domOptions);for(var t in e)e.hasOwnProperty(t)&&(this.options[t]=e[t]);this.actualizeOptions()},_listeners:null,on:function(e,t){this._listeners=this._listeners||{};var i=this._listeners[e]=this._listeners[e]||[];return i.push(t),this},subscribe:function(t,i){e.listenTo(this,t.toLowerCase(),i)},off:function(e,t){var i=this._listeners&&this._listeners[e];if(i)if(t)for(var n=i.length;n--;)i[n]===t&&i.splice(n,1);else delete this._listeners[e];return this},unsubscribe:function(t,i){e.unsubscribeTo(this,t.toLowerCase())},trigger:function(e,t,i){t=t||this;var n,r=this._listeners&&this._listeners[e];if(r)for(var s=r.length;s--;)if(n=r[s].call(t,t,i),n===!1)return n;return this.parent?this.parent.trigger(e,t,i):!0},reset:function(){if("ParsleyForm"!==this.__class__)return this._trigger("reset");for(var e=0;e<this.fields.length;e++)this.fields[e]._trigger("reset");this._trigger("reset")},destroy:function(){if("ParsleyForm"!==this.__class__)return this.$element.removeData("Parsley"),this.$element.removeData("ParsleyFieldMultiple"),void this._trigger("destroy");for(var e=0;e<this.fields.length;e++)this.fields[e].destroy();this.$element.removeData("Parsley"),this._trigger("destroy")},asyncIsValid:function(){return a.warnOnce("asyncIsValid is deprecated; please use whenIsValid instead"),this.whenValid.apply(this,arguments)},_findRelatedMultiple:function(){return this.parent.$element.find("["+this.options.namespace+'multiple="'+this.options.multiple+'"]')}};var u={string:function(e){return e},integer:function(e){if(isNaN(e))throw'Requirement is not an integer: "'+e+'"';return parseInt(e,10)},number:function(e){if(isNaN(e))throw'Requirement is not a number: "'+e+'"';return parseFloat(e)},reference:function(t){var i=e(t);if(0===i.length)throw'No such reference: "'+t+'"';return i},"boolean":function(e){return"false"!==e},object:function(e){return a.deserializeValue(e)},regexp:function(e){var t="";return/^\/.*\/(?:[gimy]*)$/.test(e)?(t=e.replace(/.*\/([gimy]*)$/,"$1"),e=e.replace(new RegExp("^/(.*?)/"+t+"$"),"$1")):e="^"+e+"$",new RegExp(e,t)}},d=function(e,t){var i=e.match(/^\s*\[(.*)\]\s*$/);if(!i)throw'Requirement is not an array: "'+e+'"';var n=i[1].split(",").map(a.trimString);if(n.length!==t)throw"Requirement has "+n.length+" values when "+t+" are needed";return n},h=function(e,t){var i=u[e||"string"];if(!i)throw'Unknown requirement specification: "'+e+'"';return i(t)},p=function(e,t,i){var n=null,r={};for(var s in e)if(s){var a=i(s);"string"==typeof a&&(a=h(e[s],a)),r[s]=a}else n=h(e[s],t);return[n,r]},f=function(t){e.extend(!0,this,t)};f.prototype={validate:function(t,i){if(this.fn)return arguments.length>3&&(i=[].slice.call(arguments,1,-1)),this.fn.call(this,t,i);if(e.isArray(t)){if(!this.validateMultiple)throw"Validator `"+this.name+"` does not handle multiple values";return this.validateMultiple.apply(this,arguments)}if(this.validateNumber)return isNaN(t)?!1:(arguments[0]=parseFloat(arguments[0]),this.validateNumber.apply(this,arguments));if(this.validateString)return this.validateString.apply(this,arguments);throw"Validator `"+this.name+"` only handles multiple values"},parseRequirements:function(t,i){if("string"!=typeof t)return e.isArray(t)?t:[t];var n=this.requirementType;if(e.isArray(n)){for(var r=d(t,n.length),s=0;s<r.length;s++)r[s]=h(n[s],r[s]);return r}return e.isPlainObject(n)?p(n,t,i):[h(n,t)]},requirementType:"string",priority:2};var c=function(e,t){this.__class__="ParsleyValidatorRegistry",this.locale="en",this.init(e||{},t||{})},m={email:/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))$/i,number:/^-?(?:\d+|\d{1,3}(?:,\d{3})+)?(?:\.\d+)?$/,integer:/^-?\d+$/,digits:/^\d+$/,alphanum:/^\w+$/i,url:new RegExp("^(?:(?:https?|ftp)://)?(?:\\S+(?::\\S*)?@)?(?:(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,})))(?::\\d{2,5})?(?:/\\S*)?$","i")};m.range=m.number,c.prototype={init:function(t,i){this.catalog=i,this.validators=e.extend({},this.validators);for(var n in t)this.addValidator(n,t[n].fn,t[n].priority);window.Parsley.trigger("parsley:validator:init")},setLocale:function(e){if("undefined"==typeof this.catalog[e])throw new Error(e+" is not available in the catalog");return this.locale=e,this},addCatalog:function(e,t,i){return"object"==typeof t&&(this.catalog[e]=t),!0===i?this.setLocale(e):this},addMessage:function(e,t,i){return"undefined"==typeof this.catalog[e]&&(this.catalog[e]={}),this.catalog[e][t]=i,this},addMessages:function(e,t){for(var i in t)this.addMessage(e,i,t[i]);return this},addValidator:function(e,t,i){if(this.validators[e])a.warn('Validator "'+e+'" is already defined.');else if(o.hasOwnProperty(e))return void a.warn('"'+e+'" is a restricted keyword and is not a valid validator name.');return this._setValidator.apply(this,arguments)},updateValidator:function(e,t,i){return this.validators[e]?this._setValidator(this,arguments):(a.warn('Validator "'+e+'" is not already defined.'),this.addValidator.apply(this,arguments))},removeValidator:function(e){return this.validators[e]||a.warn('Validator "'+e+'" is not defined.'),delete this.validators[e],this},_setValidator:function(e,t,i){"object"!=typeof t&&(t={fn:t,priority:i}),t.validate||(t=new f(t)),this.validators[e]=t;for(var n in t.messages||{})this.addMessage(n,e,t.messages[n]);return this},getErrorMessage:function(e){var t;if("type"===e.name){var i=this.catalog[this.locale][e.name]||{};t=i[e.requirements]}else t=this.formatMessage(this.catalog[this.locale][e.name],e.requirements);return t||this.catalog[this.locale].defaultMessage||this.catalog.en.defaultMessage},formatMessage:function(e,t){if("object"==typeof t){for(var i in t)e=this.formatMessage(e,t[i]);return e}return"string"==typeof e?e.replace(new RegExp("%s","i"),t):""},validators:{notblank:{validateString:function(e){return/\S/.test(e)},priority:2},required:{validateMultiple:function(e){return e.length>0},validateString:function(e){return/\S/.test(e)},priority:512},type:{validateString:function(e,t){var i=m[t];if(!i)throw new Error("validator type `"+t+"` is not supported");return i.test(e)},priority:256},pattern:{validateString:function(e,t){return t.test(e)},requirementType:"regexp",priority:64},minlength:{validateString:function(e,t){return e.length>=t},requirementType:"integer",priority:30},maxlength:{validateString:function(e,t){return e.length<=t},requirementType:"integer",priority:30},length:{validateString:function(e,t,i){return e.length>=t&&e.length<=i},requirementType:["integer","integer"],priority:30},mincheck:{validateMultiple:function(e,t){return e.length>=t},requirementType:"integer",priority:30},maxcheck:{validateMultiple:function(e,t){return e.length<=t},requirementType:"integer",priority:30},check:{validateMultiple:function(e,t,i){return e.length>=t&&e.length<=i},requirementType:["integer","integer"],priority:30},min:{validateNumber:function(e,t){return e>=t},requirementType:"number",priority:30},max:{validateNumber:function(e,t){return t>=e},requirementType:"number",priority:30},range:{validateNumber:function(e,t,i){return e>=t&&i>=e},requirementType:["number","number"],priority:30},equalto:{validateString:function(t,i){var n=e(i);return n.length?t===n.val():t===i},priority:256}}};var y=function(e){this.__class__="ParsleyUI"};y.prototype={listen:function(){var e=this;return window.Parsley.on("form:init",function(){e.setupForm(this)}).on("field:init",function(){e.setupField(this)}).on("field:validated",function(){e.reflow(this)}).on("form:validated",function(){e.focus(this)}).on("field:reset",function(){e.reset(this)}).on("form:destroy",function(){e.destroy(this)}).on("field:destroy",function(){e.destroy(this)}),this},reflow:function(e){if("undefined"!=typeof e._ui&&!1!==e._ui.active){var t=this._diff(e.validationResult,e._ui.lastValidationResult);e._ui.lastValidationResult=e.validationResult,e._ui.validatedOnce=!0,this.manageStatusClass(e),this.manageErrorsMessages(e,t),this.actualizeTriggers(e),(t.kept.length||t.added.length)&&!0!==e._ui.failedOnce&&this.manageFailingFieldTrigger(e)}},getErrorsMessages:function(e){if(!0===e.validationResult)return[];for(var t=[],i=0;i<e.validationResult.length;i++)t.push(e.validationResult[i].errorMessage||this._getErrorMessage(e,e.validationResult[i].assert));return t},manageStatusClass:function(e){e.hasConstraints()&&e.needsValidation()&&!0===e.validationResult?this._successClass(e):e.validationResult.length>0?this._errorClass(e):this._resetClass(e)},manageErrorsMessages:function(t,i){if("undefined"==typeof t.options.errorsMessagesDisabled){if("undefined"!=typeof t.options.errorMessage)return i.added.length||i.kept.length?(this._insertErrorWrapper(t),0===t._ui.$errorsWrapper.find(".parsley-custom-error-message").length&&t._ui.$errorsWrapper.append(e(t.options.errorTemplate).addClass("parsley-custom-error-message")),t._ui.$errorsWrapper.addClass("filled").find(".parsley-custom-error-message").html(t.options.errorMessage)):t._ui.$errorsWrapper.removeClass("filled").find(".parsley-custom-error-message").remove();for(var n=0;n<i.removed.length;n++)this.removeError(t,i.removed[n].assert.name,!0);for(n=0;n<i.added.length;n++)this.addError(t,i.added[n].assert.name,i.added[n].errorMessage,i.added[n].assert,!0);for(n=0;n<i.kept.length;n++)this.updateError(t,i.kept[n].assert.name,i.kept[n].errorMessage,i.kept[n].assert,!0)}},addError:function(t,i,n,r,s){this._insertErrorWrapper(t),t._ui.$errorsWrapper.addClass("filled").append(e(t.options.errorTemplate).addClass("parsley-"+i).html(n||this._getErrorMessage(t,r))),!0!==s&&this._errorClass(t)},updateError:function(e,t,i,n,r){e._ui.$errorsWrapper.addClass("filled").find(".parsley-"+t).html(i||this._getErrorMessage(e,n)),!0!==r&&this._errorClass(e)},removeError:function(e,t,i){e._ui.$errorsWrapper.removeClass("filled").find(".parsley-"+t).remove(),!0!==i&&this.manageStatusClass(e)},focus:function(e){if(e._focusedField=null,!0===e.validationResult||"none"===e.options.focus)return null;for(var t=0;t<e.fields.length;t++){var i=e.fields[t];if(!0!==i.validationResult&&i.validationResult.length>0&&"undefined"==typeof i.options.noFocus&&(e._focusedField=i.$element,"first"===e.options.focus))break}return null===e._focusedField?null:e._focusedField.focus()},_getErrorMessage:function(e,t){var i=t.name+"Message";return"undefined"!=typeof e.options[i]?window.Parsley.formatMessage(e.options[i],t.requirements):window.Parsley.getErrorMessage(t)},_diff:function(e,t,i){for(var n=[],r=[],s=0;s<e.length;s++){for(var a=!1,o=0;o<t.length;o++)if(e[s].assert.name===t[o].assert.name){a=!0;break}a?r.push(e[s]):n.push(e[s])}return{kept:r,added:n,removed:i?[]:this._diff(t,e,!0).added}},setupForm:function(t){t.$element.on("submit.Parsley",!1,e.proxy(t.onSubmitValidate,t)),t.$element.on("click.Parsley",'input[type="submit"], button[type="submit"]',e.proxy(t.onSubmitButton,t)),!1!==t.options.uiEnabled&&t.$element.attr("novalidate","")},setupField:function(t){var i={active:!1};!1!==t.options.uiEnabled&&(i.active=!0,t.$element.attr(t.options.namespace+"id",t.__id__),i.$errorClassHandler=this._manageClassHandler(t),i.errorsWrapperId="parsley-id-"+(t.options.multiple?"multiple-"+t.options.multiple:t.__id__),i.$errorsWrapper=e(t.options.errorsWrapper).attr("id",i.errorsWrapperId),i.lastValidationResult=[],i.validatedOnce=!1,i.validationInformationVisible=!1,t._ui=i,this.actualizeTriggers(t))},_manageClassHandler:function(t){if("string"==typeof t.options.classHandler&&e(t.options.classHandler).length)return e(t.options.classHandler);var i=t.options.classHandler(t);return"undefined"!=typeof i&&i.length?i:!t.options.multiple||t.$element.is("select")?t.$element:t.$element.parent()},_insertErrorWrapper:function(t){var i;if(0!==t._ui.$errorsWrapper.parent().length)return t._ui.$errorsWrapper.parent();if("string"==typeof t.options.errorsContainer){if(e(t.options.errorsContainer).length)return e(t.options.errorsContainer).append(t._ui.$errorsWrapper);a.warn("The errors container `"+t.options.errorsContainer+"` does not exist in DOM")}else"function"==typeof t.options.errorsContainer&&(i=t.options.errorsContainer(t));if("undefined"!=typeof i&&i.length)return i.append(t._ui.$errorsWrapper);var n=t.$element;return t.options.multiple&&(n=n.parent()),n.after(t._ui.$errorsWrapper)},actualizeTriggers:function(t){var i=t.$element;if(t.options.multiple&&(i=e("["+t.options.namespace+'multiple="'+t.options.multiple+'"]')),i.off(".Parsley"),!1!==t.options.trigger){var n=t.options.trigger.replace(/^\s+/g,"").replace(/\s+$/g,"");""!==n&&i.on(n.split(" ").join(".Parsley ")+".Parsley",e.proxy("function"==typeof t.eventValidate?t.eventValidate:this.eventValidate,t))}},eventValidate:function(e){new RegExp("key").test(e.type)&&!this._ui.validationInformationVisible&&this.getValue().length<=this.options.validationThreshold||(this._ui.validatedOnce=!0,this.validate())},manageFailingFieldTrigger:function(t){return t._ui.failedOnce=!0,t.options.multiple&&e("["+t.options.namespace+'multiple="'+t.options.multiple+'"]').each(function(){return new RegExp("change","i").test(e(this).parsley().options.trigger||"")?void 0:e(this).on("change.ParsleyFailedOnce",!1,e.proxy(t.validate,t))}),t.$element.is("select")&&!new RegExp("change","i").test(t.options.trigger||"")?t.$element.on("change.ParsleyFailedOnce",!1,e.proxy(t.validate,t)):new RegExp("keyup","i").test(t.options.trigger||"")?void 0:t.$element.on("keyup.ParsleyFailedOnce",!1,e.proxy(t.validate,t))},reset:function(e){this.actualizeTriggers(e),e.$element.off(".ParsleyFailedOnce"),"undefined"!=typeof e._ui&&"ParsleyForm"!==e.__class__&&(e._ui.$errorsWrapper.removeClass("filled").children().remove(),this._resetClass(e),e._ui.validatedOnce=!1,e._ui.lastValidationResult=[],e._ui.validationInformationVisible=!1,e._ui.failedOnce=!1)},destroy:function(e){this.reset(e),"ParsleyForm"!==e.__class__&&("undefined"!=typeof e._ui&&e._ui.$errorsWrapper.remove(),delete e._ui)},_successClass:function(e){e._ui.validationInformationVisible=!0,e._ui.$errorClassHandler.removeClass(e.options.errorClass).addClass(e.options.successClass)},_errorClass:function(e){e._ui.validationInformationVisible=!0,e._ui.$errorClassHandler.removeClass(e.options.successClass).addClass(e.options.errorClass)},_resetClass:function(e){e._ui.$errorClassHandler.removeClass(e.options.successClass).removeClass(e.options.errorClass)}};var g=function(t,i,n){this.__class__="ParsleyForm",this.__id__=a.generateID(),this.$element=e(t),this.domOptions=i,this.options=n,this.parent=window.Parsley,this.fields=[],this.validationResult=null},v={pending:null,resolved:!0,rejected:!1};g.prototype={onSubmitValidate:function(e){var t=this;if(!0!==e.parsley)return this._$submitSource=this._$submitSource||this.$element.find('input[type="submit"], button[type="submit"]').first(),this._$submitSource.is("[formnovalidate]")?void(this._$submitSource=null):(e.stopImmediatePropagation(),e.preventDefault(),this.whenValidate(void 0,void 0,e).done(function(){t._submit()}).always(function(){t._$submitSource=null}),this)},onSubmitButton:function(t){this._$submitSource=e(t.target)},_submit:function(){!1!==this._trigger("submit")&&(this.$element.find(".parsley_synthetic_submit_button").remove(),this._$submitSource&&e('<input class="parsley_synthetic_submit_button" type="hidden">').attr("name",this._$submitSource.attr("name")).attr("value",this._$submitSource.attr("value")).appendTo(this.$element),this.$element.trigger(e.extend(e.Event("submit"),{parsley:!0})))},validate:function(e,t,i){return v[this.whenValidate(e,t,i).state()]},whenValidate:function(t,i,n){var r=this;this.submitEvent=n,this.validationResult=!0,this._trigger("validate"),this._refreshFields();var s=this._withoutReactualizingFormOptions(function(){return e.map(this.fields,function(e){return!t||r._isFieldInGroup(e,t)?e.whenValidate(i):void 0})}),a=function(){var t=e.Deferred();return!1===r.validationResult&&t.reject(),t.resolve().promise()};return e.when.apply(e,s).done(function(){r._trigger("success")}).fail(function(){r.validationResult=!1,r._trigger("error")}).always(function(){r._trigger("validated")}).pipe(a,a)},isValid:function(e,t){return v[this.whenValid(e,t).state()]},whenValid:function(t,i){var n=this;this._refreshFields();var r=this._withoutReactualizingFormOptions(function(){return e.map(this.fields,function(e){return!t||n._isFieldInGroup(e,t)?e.whenValid(i):void 0})});return e.when.apply(e,r)},_isFieldInGroup:function(t,i){return e.isArray(t.options.group)?-1!==e.inArray(i,t.options.group):t.options.group===i},_refreshFields:function(){return this.actualizeOptions()._bindFields()},_bindFields:function(){var t=this,i=this.fields;return this.fields=[],this.fieldsMappedById={},this._withoutReactualizingFormOptions(function(){this.$element.find(this.options.inputs).not(this.options.excluded).each(function(){var e=new window.Parsley.Factory(this,{},t);"ParsleyField"!==e.__class__&&"ParsleyFieldMultiple"!==e.__class__||!0===e.options.excluded||"undefined"==typeof t.fieldsMappedById[e.__class__+"-"+e.__id__]&&(t.fieldsMappedById[e.__class__+"-"+e.__id__]=e,t.fields.push(e))}),e(i).not(t.fields).each(function(){this._trigger("reset")})}),this},_withoutReactualizingFormOptions:function(e){var t=this.actualizeOptions;this.actualizeOptions=function(){return this};var i=e.call(this);return this.actualizeOptions=t,i},_trigger:function(e){return this.trigger("form:"+e)}};var _=function(t,i,n,r,s){if(!new RegExp("ParsleyField").test(t.__class__))throw new Error("ParsleyField or ParsleyFieldMultiple instance expected");var a=window.Parsley._validatorRegistry.validators[i],o=new f(a);e.extend(this,{validator:o,name:i,requirements:n,priority:r||t.options[i+"Priority"]||o.priority,isDomConstraint:!0===s}),this._parseRequirements(t.options)},w=function(e){var t=e[0].toUpperCase();return t+e.slice(1)};_.prototype={validate:function(e,t){var i=this.requirementList.slice(0);return i.unshift(e),i.push(t),this.validator.validate.apply(this.validator,i)},_parseRequirements:function(e){var t=this;this.requirementList=this.validator.parseRequirements(this.requirements,function(i){return e[t.name+w(i)]})}};var F=function(t,i,n,r){this.__class__="ParsleyField",this.__id__=a.generateID(),this.$element=e(t),"undefined"!=typeof r&&(this.parent=r),this.options=n,this.domOptions=i,this.constraints=[],this.constraintsByName={},this.validationResult=[],this._bindConstraints()},b={pending:null,resolved:!0,rejected:!1};F.prototype={validate:function(e){var t=this.whenValidate(e);switch(t.state()){case"pending":return null;case"resolved":return!0;case"rejected":return this.validationResult}},whenValidate:function(e){var t=this;return this.value=this.getValue(),this._trigger("validate"),this.whenValid(e,this.value).done(function(){t._trigger("success")}).fail(function(){t._trigger("error")}).always(function(){t._trigger("validated")})},hasConstraints:function(){return 0!==this.constraints.length},needsValidation:function(e){return"undefined"==typeof e&&(e=this.getValue()),e.length||this._isRequired()||"undefined"!=typeof this.options.validateIfEmpty?!0:!1},isValid:function(e,t){return b[this.whenValid(e,t).state()]},whenValid:function(t,i){if(this.refreshConstraints(),this.validationResult=!0,!this.hasConstraints())return e.when();if("boolean"!=typeof t&&"undefined"==typeof i&&(i=t,t=!1),("undefined"==typeof i||null===i)&&(i=this.getValue()),!this.needsValidation(i)&&!0!==t)return e.when();var n=this._getGroupedConstraints(),r=[],s=this;return e.each(n,function(t,n){var a=e.when.apply(e,e.map(n,e.proxy(s,"_validateConstraint",i)));return r.push(a),"rejected"===a.state()?!1:void 0}),e.when.apply(e,r)},_validateConstraint:function(t,i){var n=this,r=i.validate(t,this);return!1===r&&(r=e.Deferred().reject()),e.when(r).fail(function(e){!0===n.validationResult&&(n.validationResult=[]),n.validationResult.push({assert:i,errorMessage:"string"==typeof e&&e})})},getValue:function(){var e;return e="function"==typeof this.options.value?this.options.value(this):"undefined"!=typeof this.options.value?this.options.value:this.$element.val(),"undefined"==typeof e||null===e?"":this._handleWhitespace(e)},refreshConstraints:function(){return this.actualizeOptions()._bindConstraints()},addConstraint:function(e,t,i,n){if(window.Parsley._validatorRegistry.validators[e]){var r=new _(this,e,t,i,n);"undefined"!==this.constraintsByName[r.name]&&this.removeConstraint(r.name),this.constraints.push(r),this.constraintsByName[r.name]=r}return this},removeConstraint:function(e){for(var t=0;t<this.constraints.length;t++)if(e===this.constraints[t].name){this.constraints.splice(t,1);break}return delete this.constraintsByName[e],this},updateConstraint:function(e,t,i){return this.removeConstraint(e).addConstraint(e,t,i)},_bindConstraints:function(){for(var e=[],t={},i=0;i<this.constraints.length;i++)!1===this.constraints[i].isDomConstraint&&(e.push(this.constraints[i]),t[this.constraints[i].name]=this.constraints[i]);this.constraints=e,this.constraintsByName=t;for(var n in this.options)this.addConstraint(n,this.options[n],void 0,!0);return this._bindHtml5Constraints()},_bindHtml5Constraints:function(){(this.$element.hasClass("required")||this.$element.attr("required"))&&this.addConstraint("required",!0,void 0,!0),"string"==typeof this.$element.attr("pattern")&&this.addConstraint("pattern",this.$element.attr("pattern"),void 0,!0),"undefined"!=typeof this.$element.attr("min")&&"undefined"!=typeof this.$element.attr("max")?this.addConstraint("range",[this.$element.attr("min"),this.$element.attr("max")],void 0,!0):"undefined"!=typeof this.$element.attr("min")?this.addConstraint("min",this.$element.attr("min"),void 0,!0):"undefined"!=typeof this.$element.attr("max")&&this.addConstraint("max",this.$element.attr("max"),void 0,!0),"undefined"!=typeof this.$element.attr("minlength")&&"undefined"!=typeof this.$element.attr("maxlength")?this.addConstraint("length",[this.$element.attr("minlength"),this.$element.attr("maxlength")],void 0,!0):"undefined"!=typeof this.$element.attr("minlength")?this.addConstraint("minlength",this.$element.attr("minlength"),void 0,!0):"undefined"!=typeof this.$element.attr("maxlength")&&this.addConstraint("maxlength",this.$element.attr("maxlength"),void 0,!0);var e=this.$element.attr("type");return"undefined"==typeof e?this:"number"===e?"undefined"==typeof this.$element.attr("step")||0===parseFloat(this.$element.attr("step"))%1?this.addConstraint("type","integer",void 0,!0):this.addConstraint("type","number",void 0,!0):/^(email|url|range)$/i.test(e)?this.addConstraint("type",e,void 0,!0):this},_isRequired:function(){return"undefined"==typeof this.constraintsByName.required?!1:!1!==this.constraintsByName.required.requirements},_trigger:function(e){return this.trigger("field:"+e)},_handleWhitespace:function(e){return!0===this.options.trimValue&&a.warnOnce('data-parsley-trim-value="true" is deprecated, please use data-parsley-whitespace="trim"'),"squish"===this.options.whitespace&&(e=e.replace(/\s{2,}/g," ")),("trim"===this.options.whitespace||"squish"===this.options.whitespace||!0===this.options.trimValue)&&(e=a.trimString(e)),e},_getGroupedConstraints:function(){if(!1===this.options.priorityEnabled)return[this.constraints];for(var e=[],t={},i=0;i<this.constraints.length;i++){var n=this.constraints[i].priority;t[n]||e.push(t[n]=[]),t[n].push(this.constraints[i])}return e.sort(function(e,t){return t[0].priority-e[0].priority}),e}};var $=F,C=function(){this.__class__="ParsleyFieldMultiple"};C.prototype={addElement:function(e){return this.$elements.push(e),this},refreshConstraints:function(){var t;if(this.constraints=[],this.$element.is("select"))return this.actualizeOptions()._bindConstraints(),this;for(var i=0;i<this.$elements.length;i++)if(e("html").has(this.$elements[i]).length){t=this.$elements[i].data("ParsleyFieldMultiple").refreshConstraints().constraints;for(var n=0;n<t.length;n++)this.addConstraint(t[n].name,t[n].requirements,t[n].priority,t[n].isDomConstraint)}else this.$elements.splice(i,1);return this},getValue:function(){if("undefined"!=typeof this.options.value)return this.options.value;if(this.$element.is("input[type=radio]"))return this._findRelatedMultiple().filter(":checked").val()||"";if(this.$element.is("input[type=checkbox]")){var t=[];return this._findRelatedMultiple().filter(":checked").each(function(){t.push(e(this).val())}),t}return this.$element.is("select")&&null===this.$element.val()?[]:this.$element.val()},_init:function(){return this.$elements=[this.$element],this}};var x=function(t,i,n){this.$element=e(t);var r=this.$element.data("Parsley");if(r)return"undefined"!=typeof n&&r.parent===window.Parsley&&(r.parent=n,r._resetOptions(r.options)),r;if(!this.$element.length)throw new Error("You must bind Parsley on an existing element.");if("undefined"!=typeof n&&"ParsleyForm"!==n.__class__)throw new Error("Parent instance must be a ParsleyForm instance");return this.parent=n||window.Parsley,this.init(i)};x.prototype={init:function(e){return this.__class__="Parsley",this.__version__="@@version",this.__id__=a.generateID(),this._resetOptions(e),this.$element.is("form")||a.checkAttr(this.$element,this.options.namespace,"validate")&&!this.$element.is(this.options.inputs)?this.bind("parsleyForm"):this.isMultiple()?this.handleMultiple():this.bind("parsleyField")},isMultiple:function(){return this.$element.is("input[type=radio], input[type=checkbox]")||this.$element.is("select")&&"undefined"!=typeof this.$element.attr("multiple")},handleMultiple:function(){var t,i,n=this;if(this.options.multiple||("undefined"!=typeof this.$element.attr("name")&&this.$element.attr("name").length?this.options.multiple=t=this.$element.attr("name"):"undefined"!=typeof this.$element.attr("id")&&this.$element.attr("id").length&&(this.options.multiple=this.$element.attr("id"))),this.$element.is("select")&&"undefined"!=typeof this.$element.attr("multiple"))return this.options.multiple=this.options.multiple||this.__id__,this.bind("parsleyFieldMultiple");if(!this.options.multiple)return a.warn("To be bound by Parsley, a radio, a checkbox and a multiple select input must have either a name or a multiple option.",this.$element),this;this.options.multiple=this.options.multiple.replace(/(:|\.|\[|\]|\{|\}|\$)/g,""),"undefined"!=typeof t&&e('input[name="'+t+'"]').each(function(){e(this).is("input[type=radio], input[type=checkbox]")&&e(this).attr(n.options.namespace+"multiple",n.options.multiple)});for(var r=this._findRelatedMultiple(),s=0;s<r.length;s++)if(i=e(r.get(s)).data("Parsley"),"undefined"!=typeof i){this.$element.data("ParsleyFieldMultiple")||i.addElement(this.$element);break}return this.bind("parsleyField",!0),i||this.bind("parsleyFieldMultiple")},bind:function(t,i){var n;switch(t){case"parsleyForm":n=e.extend(new g(this.$element,this.domOptions,this.options),window.ParsleyExtend)._bindFields();break;case"parsleyField":n=e.extend(new $(this.$element,this.domOptions,this.options,this.parent),window.ParsleyExtend);break;case"parsleyFieldMultiple":n=e.extend(new $(this.$element,this.domOptions,this.options,this.parent),new C,window.ParsleyExtend)._init();break;default:throw new Error(t+"is not a supported Parsley type")}return this.options.multiple&&a.setAttr(this.$element,this.options.namespace,"multiple",this.options.multiple),"undefined"!=typeof i?(this.$element.data("ParsleyFieldMultiple",n),n):(this.$element.data("Parsley",n),n._trigger("init"),n)}};var P=e.fn.jquery.split(".");if(parseInt(P[0])<=1&&parseInt(P[1])<8)throw"The loaded version of jQuery is too old. Please upgrade to 1.8.x or better.";P.forEach||a.warn("Parsley requires ES5 to run properly. Please include https://github.com/es-shims/es5-shim");var V=e.extend(new l,{$element:e(document),actualizeOptions:null,_resetOptions:null,Factory:x,version:"@@version"});e.extend($.prototype,l.prototype),e.extend(g.prototype,l.prototype),e.extend(x.prototype,l.prototype),e.fn.parsley=e.fn.psly=function(t){if(this.length>1){var i=[];return this.each(function(){i.push(e(this).parsley(t))}),i}return e(this).length?new x(this,t):void a.warn("You must bind Parsley on an existing element.")},"undefined"==typeof window.ParsleyExtend&&(window.ParsleyExtend={}),V.options=e.extend(a.objectCreate(o),window.ParsleyConfig),window.ParsleyConfig=V.options,
window.Parsley=window.psly=V,window.ParsleyUtils=a;var E=window.Parsley._validatorRegistry=new c(window.ParsleyConfig.validators,window.ParsleyConfig.i18n);window.ParsleyValidator={},e.each("setLocale addCatalog addMessage addMessages getErrorMessage formatMessage addValidator updateValidator removeValidator".split(" "),function(t,i){window.Parsley[i]=e.proxy(E,i),window.ParsleyValidator[i]=function(){return a.warnOnce("Accessing the method '"+i+"' through ParsleyValidator is deprecated. Simply call 'window.Parsley."+i+"(...)'"),window.Parsley[i].apply(window.Parsley,arguments)}}),window.ParsleyUI="function"==typeof window.ParsleyConfig.ParsleyUI?(new window.ParsleyConfig.ParsleyUI).listen():(new y).listen(),!1!==window.ParsleyConfig.autoBind&&e(function(){e("[data-parsley-validate]").length&&e("[data-parsley-validate]").parsley()});var M=e({}),R=function(){a.warnOnce("Parsley's pubsub module is deprecated; use the 'on' and 'off' methods on parsley instances or window.Parsley")},O="parsley:";e.listen=function(e,n){var r;if(R(),"object"==typeof arguments[1]&&"function"==typeof arguments[2]&&(r=arguments[1],n=arguments[2]),"function"!=typeof n)throw new Error("Wrong parameters");window.Parsley.on(i(e),t(n,r))},e.listenTo=function(e,n,r){if(R(),!(e instanceof $||e instanceof g))throw new Error("Must give Parsley instance");if("string"!=typeof n||"function"!=typeof r)throw new Error("Wrong parameters");e.on(i(n),t(r))},e.unsubscribe=function(e,t){if(R(),"string"!=typeof e||"function"!=typeof t)throw new Error("Wrong arguments");window.Parsley.off(i(e),t.parsleyAdaptedCallback)},e.unsubscribeTo=function(e,t){if(R(),!(e instanceof $||e instanceof g))throw new Error("Must give Parsley instance");e.off(i(t))},e.unsubscribeAll=function(t){R(),window.Parsley.off(i(t)),e("form,input,textarea,select").each(function(){var n=e(this).data("Parsley");n&&n.off(i(t))})},e.emit=function(e,t){R();var n=t instanceof $||t instanceof g,r=Array.prototype.slice.call(arguments,n?2:1);r.unshift(i(e)),n||(t=window.Parsley),t.trigger.apply(t,r)};e.extend(!0,V,{asyncValidators:{"default":{fn:function(e){return e.status>=200&&e.status<300},url:!1},reverse:{fn:function(e){return e.status<200||e.status>=300},url:!1}},addAsyncValidator:function(e,t,i,n){return V.asyncValidators[e]={fn:t,url:i||!1,options:n||{}},this},eventValidate:function(e){new RegExp("key").test(e.type)&&!this._ui.validationInformationVisible&&this.getValue().length<=this.options.validationThreshold||(this._ui.validatedOnce=!0,this.whenValidate())}}),V.addValidator("remote",{requirementType:{"":"string",validator:"string",reverse:"boolean",options:"object"},validateString:function(t,i,n,r){var s,a,o={},l=n.validator||(!0===n.reverse?"reverse":"default");if("undefined"==typeof V.asyncValidators[l])throw new Error("Calling an undefined async validator: `"+l+"`");i=V.asyncValidators[l].url||i,i.indexOf("{value}")>-1?i=i.replace("{value}",encodeURIComponent(t)):o[r.$element.attr("name")||r.$element.attr("id")]=t;var u=e.extend(!0,n.options||{},V.asyncValidators[l].options);s=e.extend(!0,{},{url:i,data:o,type:"GET"},u),r.trigger("field:ajaxoptions",r,s),a=e.param(s),"undefined"==typeof V._remoteCache&&(V._remoteCache={});var d=V._remoteCache[a]=V._remoteCache[a]||e.ajax(s),h=function(){var t=V.asyncValidators[l].fn.call(r,d,i,n);return t||(t=e.Deferred().reject()),e.when(t)};return d.then(h,h)},priority:-1}),V.on("form:submit",function(){V._remoteCache={}}),window.ParsleyExtend.addAsyncValidator=function(){return ParsleyUtils.warnOnce("Accessing the method `addAsyncValidator` through an instance is deprecated. Simply call `Parsley.addAsyncValidator(...)`"),V.apply(V.addAsyncValidator,arguments)},V.addMessages("en",{defaultMessage:"This value seems to be invalid.",type:{email:"This value should be a valid email.",url:"This value should be a valid url.",number:"This value should be a valid number.",integer:"This value should be a valid integer.",digits:"This value should be digits.",alphanum:"This value should be alphanumeric."},notblank:"This value should not be blank.",required:"This value is required.",pattern:"This value seems to be invalid.",min:"This value should be greater than or equal to %s.",max:"This value should be lower than or equal to %s.",range:"This value should be between %s and %s.",minlength:"This value is too short. It should have %s characters or more.",maxlength:"This value is too long. It should have %s characters or fewer.",length:"This value length is invalid. It should be between %s and %s characters long.",mincheck:"You must select at least %s choices.",maxcheck:"You must select %s choices or fewer.",check:"You must select between %s and %s choices.",equalto:"This value should be the same."}),V.setLocale("en");var q=V;return q}); window.Parsley=window.psly=V,window.ParsleyUtils=a;var E=window.Parsley._validatorRegistry=new c(window.ParsleyConfig.validators,window.ParsleyConfig.i18n);window.ParsleyValidator={},e.each("setLocale addCatalog addMessage addMessages getErrorMessage formatMessage addValidator updateValidator removeValidator".split(" "),function(t,i){window.Parsley[i]=e.proxy(E,i),window.ParsleyValidator[i]=function(){return a.warnOnce("Accessing the method '"+i+"' through ParsleyValidator is deprecated. Simply call 'window.Parsley."+i+"(...)'"),window.Parsley[i].apply(window.Parsley,arguments)}}),window.ParsleyUI="function"==typeof window.ParsleyConfig.ParsleyUI?(new window.ParsleyConfig.ParsleyUI).listen():(new y).listen(),!1!==window.ParsleyConfig.autoBind&&e(function(){e("[data-parsley-validate]").length&&e("[data-parsley-validate]").parsley()});var M=e({}),R=function(){a.warnOnce("Parsley's pubsub module is deprecated; use the 'on' and 'off' methods on parsley instances or window.Parsley")},O="parsley:";e.listen=function(e,n){var r;if(R(),"object"==typeof arguments[1]&&"function"==typeof arguments[2]&&(r=arguments[1],n=arguments[2]),"function"!=typeof n)throw new Error("Wrong parameters");window.Parsley.on(i(e),t(n,r))},e.listenTo=function(e,n,r){if(R(),!(e instanceof $||e instanceof g))throw new Error("Must give Parsley instance");if("string"!=typeof n||"function"!=typeof r)throw new Error("Wrong parameters");e.on(i(n),t(r))},e.unsubscribe=function(e,t){if(R(),"string"!=typeof e||"function"!=typeof t)throw new Error("Wrong arguments");window.Parsley.off(i(e),t.parsleyAdaptedCallback)},e.unsubscribeTo=function(e,t){if(R(),!(e instanceof $||e instanceof g))throw new Error("Must give Parsley instance");e.off(i(t))},e.unsubscribeAll=function(t){R(),window.Parsley.off(i(t)),e("form,input,textarea,select").each(function(){var n=e(this).data("Parsley");n&&n.off(i(t))})},e.emit=function(e,t){R();var n=t instanceof $||t instanceof g,r=Array.prototype.slice.call(arguments,n?2:1);r.unshift(i(e)),n||(t=window.Parsley),t.trigger.apply(t,r)};e.extend(!0,V,{asyncValidators:{"default":{fn:function(e){return e.status>=200&&e.status<300},url:!1},reverse:{fn:function(e){return e.status<200||e.status>=300},url:!1}},addAsyncValidator:function(e,t,i,n){return V.asyncValidators[e]={fn:t,url:i||!1,options:n||{}},this},eventValidate:function(e){new RegExp("key").test(e.type)&&!this._ui.validationInformationVisible&&this.getValue().length<=this.options.validationThreshold||(this._ui.validatedOnce=!0,this.whenValidate())}}),V.addValidator("remote",{requirementType:{"":"string",validator:"string",reverse:"boolean",options:"object"},validateString:function(t,i,n,r){var s,a,o={},l=n.validator||(!0===n.reverse?"reverse":"default");if("undefined"==typeof V.asyncValidators[l])throw new Error("Calling an undefined async validator: `"+l+"`");i=V.asyncValidators[l].url||i,i.indexOf("{value}")>-1?i=i.replace("{value}",encodeURIComponent(t)):o[r.$element.attr("name")||r.$element.attr("id")]=t;var u=e.extend(!0,n.options||{},V.asyncValidators[l].options);s=e.extend(!0,{},{url:i,data:o,type:"GET"},u),r.trigger("field:ajaxoptions",r,s),a=e.param(s),"undefined"==typeof V._remoteCache&&(V._remoteCache={});var d=V._remoteCache[a]=V._remoteCache[a]||e.ajax(s),h=function(){var t=V.asyncValidators[l].fn.call(r,d,i,n);return t||(t=e.Deferred().reject()),e.when(t)};return d.then(h,h)},priority:-1}),V.on("form:submit",function(){V._remoteCache={}}),window.ParsleyExtend.addAsyncValidator=function(){return ParsleyUtils.warnOnce("Accessing the method `addAsyncValidator` through an instance is deprecated. Simply call `Parsley.addAsyncValidator(...)`"),V.apply(V.addAsyncValidator,arguments)},V.addMessages("en",{defaultMessage:"This value seems to be invalid.",type:{email:"This value should be a valid email.",url:"This value should be a valid url.",number:"This value should be a valid number.",integer:"This value should be a valid integer.",digits:"This value should be digits.",alphanum:"This value should be alphanumeric."},notblank:"This value should not be blank.",required:"This field is required.",pattern:"This value seems to be invalid.",min:"This value should be greater than or equal to %s.",max:"This value should be lower than or equal to %s.",range:"This value should be between %s and %s.",minlength:"This value is too short. It should have %s characters or more.",maxlength:"This value is too long. It should have %s characters or fewer.",length:"This value length is invalid. It should be between %s and %s characters long.",mincheck:"You must select at least %s choices.",maxcheck:"You must select %s choices or fewer.",check:"You must select between %s and %s choices.",equalto:"This value should be the same."}),V.setLocale("en");var q=V;return q});
//# sourceMappingURL=parsley.min.js.map //# sourceMappingURL=parsley.min.js.map
...@@ -54,7 +54,7 @@ ob_start(); ...@@ -54,7 +54,7 @@ ob_start();
* *
* NOTE: If you change these, also change the error_reporting() code below * NOTE: If you change these, also change the error_reporting() code below
*/ */
define('ENVIRONMENT', isset($_SERVER['CI_ENV']) ? $_SERVER['CI_ENV'] : 'production'); define('ENVIRONMENT', isset($_SERVER['CI_ENV']) ? $_SERVER['CI_ENV'] : 'development');
/* /*
*--------------------------------------------------------------- *---------------------------------------------------------------
......
-- phpMyAdmin SQL Dump
-- version 4.8.5
-- https://www.phpmyadmin.net/
--
-- Host: 127.0.0.1
-- Generation Time: Apr 10, 2019 at 07:27 AM
-- Server version: 10.1.38-MariaDB
-- PHP Version: 7.1.27
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET AUTOCOMMIT = 0;
START TRANSACTION;
SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;
--
-- Database: `access`
--
-- --------------------------------------------------------
--
-- Table structure for table `admin`
--
CREATE TABLE `admin` (
`id` int(11) NOT NULL,
`role` int(11) DEFAULT '1' COMMENT '1=>Super Admin, 2=>Admin',
`username` varchar(50) DEFAULT NULL,
`password` varchar(255) DEFAULT NULL,
`status` int(11) DEFAULT '1' COMMENT '1=>Active, 0=>Deleted'
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
--
-- Dumping data for table `admin`
--
INSERT INTO `admin` (`id`, `role`, `username`, `password`, `status`) VALUES
(1, 1, '[email protected]', '21232f297a57a5a743894a0e4a801fc3', 1);
-- --------------------------------------------------------
--
-- Table structure for table `booking`
--
CREATE TABLE `booking` (
`id` int(11) NOT NULL,
`book_code` varchar(100) DEFAULT NULL,
`cust_id` int(11) NOT NULL,
`shopper_id` int(11) NOT NULL,
`prod_id` int(11) NOT NULL,
`booked_date` datetime DEFAULT NULL,
`prod_price` double DEFAULT NULL,
`vat` double DEFAULT NULL,
`shipping_charge` double DEFAULT NULL,
`amount` double DEFAULT NULL,
`commission` double DEFAULT NULL,
`shopper_amount` double DEFAULT NULL,
`qty` varchar(45) DEFAULT NULL,
`delivery_time` date DEFAULT NULL,
`track_status` varchar(50) DEFAULT NULL COMMENT 'Shipping Track Status',
`status` int(11) DEFAULT '1' COMMENT '0=>Cancelled, 1=>Booked, 2=>Processing, 3=>Completed'
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-- --------------------------------------------------------
--
-- Table structure for table `brand`
--
CREATE TABLE `brand` (
`id` int(11) NOT NULL,
`brand_image` varchar(444) NOT NULL,
`brand_name` varchar(50) DEFAULT NULL,
`status` int(11) DEFAULT '1' COMMENT '1=>Active, 0=> Inactive/Deleted'
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
--
-- Dumping data for table `brand`
--
INSERT INTO `brand` (`id`, `brand_image`, `brand_name`, `status`) VALUES
(1, './uploads/brand/1554720705green4.png', 'aa', 0),
(7, './uploads/brand/1554716795blue2.jpg', 'PUMA', 1),
(8, './uploads/brand/1554720626brown6.jpg', 'PUMA22', 1),
(9, './uploads/brand/1554787730black5.jpg', 'aa', 0);
-- --------------------------------------------------------
--
-- Table structure for table `cart`
--
CREATE TABLE `cart` (
`id` int(11) NOT NULL,
`cust_id` int(11) NOT NULL,
`shopper_id` int(11) NOT NULL,
`prod_id` int(11) NOT NULL,
`qty` int(11) DEFAULT NULL,
`status` int(11) DEFAULT '1' COMMENT '1=>Active, 0=>Inactive/Deleted'
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-- --------------------------------------------------------
--
-- Table structure for table `category`
--
CREATE TABLE `category` (
`id` int(11) NOT NULL,
`cat_name` varchar(50) DEFAULT NULL,
`cat_image` varchar(255) DEFAULT NULL,
`status` int(11) DEFAULT '1' COMMENT '1=>Active, 0=>Inactive/Deleted'
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
--
-- Dumping data for table `category`
--
INSERT INTO `category` (`id`, `cat_name`, `cat_image`, `status`) VALUES
(7, 'PUMA1', './uploads/category1554449751green4.png', 0),
(9, 'bb3412', './uploads/category/1554452377benzz.jpg', 1),
(10, 'gh', './uploads/category/1554803570blue2.jpg', 0);
-- --------------------------------------------------------
--
-- Table structure for table `currency`
--
CREATE TABLE `currency` (
`id` int(11) NOT NULL,
`curr_name` varchar(50) DEFAULT NULL,
`symbol` varchar(5) DEFAULT NULL,
`rate` double DEFAULT NULL COMMENT 'Rate Converted into SAR (1 USD = 3.75 SAR) ',
`status` int(11) DEFAULT '1' COMMENT '1=>Active, 2=>Inactive/Deleted'
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-- --------------------------------------------------------
--
-- Table structure for table `customer`
--
CREATE TABLE `customer` (
`id` int(11) NOT NULL,
`users_id` int(11) NOT NULL,
`name` varchar(45) DEFAULT NULL,
`email_id` varchar(50) DEFAULT NULL,
`phone_no` varchar(15) DEFAULT NULL,
`dob` varchar(25) DEFAULT NULL,
`address` varchar(255) DEFAULT NULL,
`profile_photo` varchar(255) DEFAULT NULL,
`assist_name` varchar(45) DEFAULT NULL,
`assist_phone_no` varchar(25) DEFAULT NULL,
`assist_email_id` varchar(50) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-- --------------------------------------------------------
--
-- Table structure for table `customer_address`
--
CREATE TABLE `customer_address` (
`id` int(11) NOT NULL,
`customer_id` int(11) NOT NULL,
`address_type` int(11) DEFAULT '1' COMMENT '1=> Home, 2=>Work',
`name` varchar(50) DEFAULT NULL,
`phone_no` varchar(15) DEFAULT NULL,
`pincode` varchar(15) DEFAULT NULL,
`building` varchar(100) DEFAULT NULL,
`area` varchar(100) DEFAULT NULL,
`city` varchar(50) DEFAULT NULL,
`state` varchar(50) DEFAULT NULL,
`landmark` varchar(100) DEFAULT NULL,
`status` int(11) DEFAULT '1' COMMENT '1=>Active, 0=>Inactive/Deleted'
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-- --------------------------------------------------------
--
-- Table structure for table `cust_shopper_wish`
--
CREATE TABLE `cust_shopper_wish` (
`id` int(11) NOT NULL,
`wish_id` int(11) NOT NULL,
`cust_id` int(11) NOT NULL,
`shopper_id` int(11) NOT NULL,
`curr_id` int(11) NOT NULL,
`cost` double DEFAULT NULL,
`delivery_time` varchar(50) DEFAULT NULL,
`status` int(11) DEFAULT '1' COMMENT '1=>Request, 2=>Accept, 0=>Decline'
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-- --------------------------------------------------------
--
-- Table structure for table `favourite`
--
CREATE TABLE `favourite` (
`id` int(11) NOT NULL,
`cust_id` int(11) NOT NULL,
`prod_id` int(11) NOT NULL,
`status` int(11) DEFAULT '1' COMMENT '1=>Active, 0=>Inactive/Deleted'
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-- --------------------------------------------------------
--
-- Table structure for table `notification`
--
CREATE TABLE `notification` (
`id` int(11) NOT NULL,
`date` datetime DEFAULT NULL,
`cust_id` int(11) NOT NULL,
`message` text,
`status` int(11) DEFAULT '1' COMMENT '1=> Active, 0=>Inactive'
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-- --------------------------------------------------------
--
-- Table structure for table `order_address`
--
CREATE TABLE `order_address` (
`id` int(11) NOT NULL,
`booking_id` int(11) NOT NULL,
`address_type` int(11) DEFAULT '1' COMMENT '1=> Home, 2=>Work',
`name` varchar(50) DEFAULT NULL,
`phone_no` varchar(15) DEFAULT NULL,
`pincode` varchar(15) DEFAULT NULL,
`building` varchar(100) DEFAULT NULL,
`area` varchar(100) DEFAULT NULL,
`city` varchar(50) DEFAULT NULL,
`state` varchar(50) DEFAULT NULL,
`landmark` varchar(100) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-- --------------------------------------------------------
--
-- Table structure for table `products`
--
CREATE TABLE `products` (
`id` int(11) NOT NULL,
`curr_id` int(11) NOT NULL,
`cat_id` int(11) NOT NULL,
`sub_cat_id` int(11) NOT NULL,
`brand_id` int(11) NOT NULL,
`prod_name` varchar(255) DEFAULT NULL,
`prod_desc` text,
`price` double DEFAULT NULL,
`delivery_time` varchar(50) DEFAULT NULL,
`location` varchar(100) DEFAULT NULL,
`image` varchar(100) DEFAULT NULL,
`qty` int(11) DEFAULT NULL,
`status` int(11) DEFAULT '1' COMMENT '1=>Active, 0=>Inactive/Deleted',
`wish_flag` int(11) DEFAULT '0'
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-- --------------------------------------------------------
--
-- Table structure for table `prod_galley`
--
CREATE TABLE `prod_galley` (
`id` int(11) NOT NULL,
`prod_id` int(11) NOT NULL,
`media_url` varchar(100) DEFAULT NULL,
`media_type` int(11) DEFAULT '1' COMMENT '1=>Image, 2=> Video',
`status` int(11) DEFAULT '1' COMMENT '1=>Active, 0=>Inactive/Deleted'
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-- --------------------------------------------------------
--
-- Table structure for table `recent`
--
CREATE TABLE `recent` (
`id` int(11) NOT NULL,
`cust_id` int(11) NOT NULL,
`prod_id` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-- --------------------------------------------------------
--
-- Table structure for table `settings`
--
CREATE TABLE `settings` (
`id` int(11) NOT NULL,
`commission` double DEFAULT NULL,
`vat` double DEFAULT NULL,
`smtp_host` varchar(50) DEFAULT NULL,
`smtp_username` varchar(45) DEFAULT NULL,
`smtp_password` varchar(100) DEFAULT NULL,
`smtp_port` int(11) DEFAULT NULL,
`title` varchar(150) NOT NULL,
`title_short` varchar(100) NOT NULL,
`site_logo` varchar(150) NOT NULL,
`country_flag` varchar(100) NOT NULL,
`currency` varchar(20) NOT NULL,
`fav_icon` varchar(55) NOT NULL,
`google_api_key` varchar(66) NOT NULL,
`service_charge` varchar(55) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
--
-- Dumping data for table `settings`
--
INSERT INTO `settings` (`id`, `commission`, `vat`, `smtp_host`, `smtp_username`, `smtp_password`, `smtp_port`, `title`, `title_short`, `site_logo`, `country_flag`, `currency`, `fav_icon`, `google_api_key`, `service_charge`) VALUES
(1, 20, 22, 'asffsfdgf', 'smtp', '123456', 8, 'access', 'acs', 'uploads/services/1554873867_black5.jpg', 'sse', '22', 'uploads/services/1554873867_brown6.jpg', 'fsgs', '2211');
-- --------------------------------------------------------
--
-- Table structure for table `shopper`
--
CREATE TABLE `shopper` (
`id` int(11) NOT NULL,
`users_id` int(11) NOT NULL,
`name` varchar(45) DEFAULT NULL,
`email_id` varchar(50) DEFAULT NULL,
`phone_no` varchar(15) DEFAULT NULL,
`shop_name` varchar(50) DEFAULT NULL,
`dob` varchar(25) DEFAULT NULL,
`profile_photo` varchar(255) DEFAULT NULL,
`commission` double DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-- --------------------------------------------------------
--
-- Table structure for table `sub_category`
--
CREATE TABLE `sub_category` (
`id` int(11) NOT NULL,
`sub_cat_name` varchar(50) DEFAULT NULL,
`sub_cat_image` varchar(100) DEFAULT NULL,
`status` int(11) DEFAULT '1' COMMENT '1=>Active, 0=>inactive',
`cat_id` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
--
-- Dumping data for table `sub_category`
--
INSERT INTO `sub_category` (`id`, `sub_cat_name`, `sub_cat_image`, `status`, `cat_id`) VALUES
(2, 'ajil', './uploads/subcategory/1554811443usADWQ.jpg', 1, 7),
(3, 'amal', './uploads/subcategory/1554811530green4.png', 1, 9);
-- --------------------------------------------------------
--
-- Table structure for table `transaction`
--
CREATE TABLE `transaction` (
`id` int(11) NOT NULL,
`booking_id` int(11) NOT NULL,
`book_code` varchar(100) DEFAULT NULL,
`trans_date` datetime DEFAULT NULL,
`trans_id` varchar(50) DEFAULT NULL,
`amount` double DEFAULT NULL,
`status` int(11) DEFAULT NULL COMMENT '1=>Success, 0=>Failure'
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-- --------------------------------------------------------
--
-- Table structure for table `users`
--
CREATE TABLE `users` (
`id` int(11) NOT NULL,
`user_type` int(11) DEFAULT NULL COMMENT '1=>Customer, 2=>Shopper',
`user_id` int(11) DEFAULT NULL,
`username` varchar(100) DEFAULT NULL,
`password` varchar(255) DEFAULT NULL,
`status` int(11) DEFAULT '0' COMMENT '1=>Active, 0=>Inactive, 2=>Deleted'
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-- --------------------------------------------------------
--
-- Table structure for table `wish`
--
CREATE TABLE `wish` (
`id` int(11) NOT NULL,
`cust_id` int(11) NOT NULL,
`cat_id` int(11) NOT NULL,
`sub_cat_id` int(11) NOT NULL,
`prod_name` varchar(50) DEFAULT NULL,
`description` text,
`media_url` text,
`price_range` varchar(45) DEFAULT NULL,
`status` int(11) DEFAULT '1' COMMENT '1=>Active, 0=>Inactive/Deleted'
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
--
-- Indexes for dumped tables
--
--
-- Indexes for table `admin`
--
ALTER TABLE `admin`
ADD PRIMARY KEY (`id`);
--
-- Indexes for table `booking`
--
ALTER TABLE `booking`
ADD PRIMARY KEY (`id`,`cust_id`,`shopper_id`,`prod_id`),
ADD KEY `fk_booking_customer1_idx` (`cust_id`),
ADD KEY `fk_booking_shopper1_idx` (`shopper_id`),
ADD KEY `fk_booking_products1_idx` (`prod_id`);
--
-- Indexes for table `brand`
--
ALTER TABLE `brand`
ADD PRIMARY KEY (`id`);
--
-- Indexes for table `cart`
--
ALTER TABLE `cart`
ADD PRIMARY KEY (`id`,`cust_id`,`shopper_id`,`prod_id`),
ADD KEY `fk_cart_customer1_idx` (`cust_id`),
ADD KEY `fk_cart_shopper1_idx` (`shopper_id`),
ADD KEY `fk_cart_products1_idx` (`prod_id`);
--
-- Indexes for table `category`
--
ALTER TABLE `category`
ADD PRIMARY KEY (`id`);
--
-- Indexes for table `currency`
--
ALTER TABLE `currency`
ADD PRIMARY KEY (`id`);
--
-- Indexes for table `customer`
--
ALTER TABLE `customer`
ADD PRIMARY KEY (`id`,`users_id`),
ADD KEY `fk_customer_users_idx` (`users_id`);
--
-- Indexes for table `customer_address`
--
ALTER TABLE `customer_address`
ADD PRIMARY KEY (`id`,`customer_id`),
ADD KEY `fk_customer_address_customer1_idx` (`customer_id`);
--
-- Indexes for table `cust_shopper_wish`
--
ALTER TABLE `cust_shopper_wish`
ADD PRIMARY KEY (`id`,`wish_id`,`cust_id`,`shopper_id`,`curr_id`),
ADD KEY `fk_cust_shopper_wish_customer1_idx` (`cust_id`),
ADD KEY `fk_cust_shopper_wish_wish2_idx` (`wish_id`),
ADD KEY `fk_cust_shopper_wish_shopper1_idx` (`shopper_id`),
ADD KEY `fk_cust_shopper_wish_currency1_idx` (`curr_id`);
--
-- Indexes for table `favourite`
--
ALTER TABLE `favourite`
ADD PRIMARY KEY (`id`,`cust_id`,`prod_id`),
ADD KEY `fk_favourite_customer1_idx` (`cust_id`),
ADD KEY `fk_favourite_products1_idx` (`prod_id`);
--
-- Indexes for table `notification`
--
ALTER TABLE `notification`
ADD PRIMARY KEY (`id`,`cust_id`),
ADD KEY `fk_notification_customer1_idx` (`cust_id`);
--
-- Indexes for table `order_address`
--
ALTER TABLE `order_address`
ADD PRIMARY KEY (`id`,`booking_id`),
ADD KEY `fk_order_address_booking1_idx` (`booking_id`);
--
-- Indexes for table `products`
--
ALTER TABLE `products`
ADD PRIMARY KEY (`id`,`curr_id`,`cat_id`,`sub_cat_id`,`brand_id`),
ADD KEY `fk_products_currency1_idx` (`curr_id`),
ADD KEY `fk_products_brand1_idx` (`brand_id`),
ADD KEY `fk_products_category1_idx` (`cat_id`),
ADD KEY `fk_products_sub_category1_idx` (`sub_cat_id`);
--
-- Indexes for table `prod_galley`
--
ALTER TABLE `prod_galley`
ADD PRIMARY KEY (`id`,`prod_id`),
ADD KEY `fk_prod_galley_products1_idx` (`prod_id`);
--
-- Indexes for table `recent`
--
ALTER TABLE `recent`
ADD PRIMARY KEY (`id`,`cust_id`,`prod_id`),
ADD KEY `fk_recent_customer1_idx` (`cust_id`),
ADD KEY `fk_recent_products1_idx` (`prod_id`);
--
-- Indexes for table `settings`
--
ALTER TABLE `settings`
ADD PRIMARY KEY (`id`);
--
-- Indexes for table `shopper`
--
ALTER TABLE `shopper`
ADD PRIMARY KEY (`id`,`users_id`),
ADD KEY `fk_shopper_users1_idx` (`users_id`);
--
-- Indexes for table `sub_category`
--
ALTER TABLE `sub_category`
ADD PRIMARY KEY (`id`,`cat_id`),
ADD KEY `fk_sub_category_category1_idx` (`cat_id`);
--
-- Indexes for table `transaction`
--
ALTER TABLE `transaction`
ADD PRIMARY KEY (`id`,`booking_id`),
ADD KEY `fk_transaction_booking1_idx` (`booking_id`);
--
-- Indexes for table `users`
--
ALTER TABLE `users`
ADD PRIMARY KEY (`id`);
--
-- Indexes for table `wish`
--
ALTER TABLE `wish`
ADD PRIMARY KEY (`id`,`cust_id`,`cat_id`,`sub_cat_id`),
ADD KEY `fk_wish_category1_idx` (`cat_id`),
ADD KEY `fk_wish_customer1_idx` (`cust_id`),
ADD KEY `fk_wish_sub_category1_idx` (`sub_cat_id`);
--
-- AUTO_INCREMENT for dumped tables
--
--
-- AUTO_INCREMENT for table `admin`
--
ALTER TABLE `admin`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;
--
-- AUTO_INCREMENT for table `booking`
--
ALTER TABLE `booking`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
--
-- AUTO_INCREMENT for table `brand`
--
ALTER TABLE `brand`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=10;
--
-- AUTO_INCREMENT for table `cart`
--
ALTER TABLE `cart`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
--
-- AUTO_INCREMENT for table `category`
--
ALTER TABLE `category`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=11;
--
-- AUTO_INCREMENT for table `customer`
--
ALTER TABLE `customer`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
--
-- AUTO_INCREMENT for table `customer_address`
--
ALTER TABLE `customer_address`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
--
-- AUTO_INCREMENT for table `cust_shopper_wish`
--
ALTER TABLE `cust_shopper_wish`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
--
-- AUTO_INCREMENT for table `favourite`
--
ALTER TABLE `favourite`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
--
-- AUTO_INCREMENT for table `notification`
--
ALTER TABLE `notification`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
--
-- AUTO_INCREMENT for table `order_address`
--
ALTER TABLE `order_address`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
--
-- AUTO_INCREMENT for table `products`
--
ALTER TABLE `products`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
--
-- AUTO_INCREMENT for table `prod_galley`
--
ALTER TABLE `prod_galley`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
--
-- AUTO_INCREMENT for table `recent`
--
ALTER TABLE `recent`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
--
-- AUTO_INCREMENT for table `shopper`
--
ALTER TABLE `shopper`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
--
-- AUTO_INCREMENT for table `sub_category`
--
ALTER TABLE `sub_category`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=4;
--
-- AUTO_INCREMENT for table `transaction`
--
ALTER TABLE `transaction`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
--
-- AUTO_INCREMENT for table `users`
--
ALTER TABLE `users`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
--
-- AUTO_INCREMENT for table `wish`
--
ALTER TABLE `wish`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
--
-- Constraints for dumped tables
--
--
-- Constraints for table `booking`
--
ALTER TABLE `booking`
ADD CONSTRAINT `fk_booking_customer1` FOREIGN KEY (`cust_id`) REFERENCES `customer` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION,
ADD CONSTRAINT `fk_booking_products1` FOREIGN KEY (`prod_id`) REFERENCES `products` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION,
ADD CONSTRAINT `fk_booking_shopper1` FOREIGN KEY (`shopper_id`) REFERENCES `shopper` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION;
--
-- Constraints for table `cart`
--
ALTER TABLE `cart`
ADD CONSTRAINT `fk_cart_customer1` FOREIGN KEY (`cust_id`) REFERENCES `customer` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION,
ADD CONSTRAINT `fk_cart_products1` FOREIGN KEY (`prod_id`) REFERENCES `products` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION,
ADD CONSTRAINT `fk_cart_shopper1` FOREIGN KEY (`shopper_id`) REFERENCES `shopper` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION;
--
-- Constraints for table `customer`
--
ALTER TABLE `customer`
ADD CONSTRAINT `fk_customer_users` FOREIGN KEY (`users_id`) REFERENCES `users` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION;
--
-- Constraints for table `customer_address`
--
ALTER TABLE `customer_address`
ADD CONSTRAINT `fk_customer_address_customer1` FOREIGN KEY (`customer_id`) REFERENCES `customer` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION;
--
-- Constraints for table `cust_shopper_wish`
--
ALTER TABLE `cust_shopper_wish`
ADD CONSTRAINT `fk_cust_shopper_wish_currency1` FOREIGN KEY (`curr_id`) REFERENCES `currency` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION,
ADD CONSTRAINT `fk_cust_shopper_wish_customer1` FOREIGN KEY (`cust_id`) REFERENCES `customer` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION,
ADD CONSTRAINT `fk_cust_shopper_wish_shopper1` FOREIGN KEY (`shopper_id`) REFERENCES `shopper` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION,
ADD CONSTRAINT `fk_cust_shopper_wish_wish2` FOREIGN KEY (`wish_id`) REFERENCES `wish` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION;
--
-- Constraints for table `favourite`
--
ALTER TABLE `favourite`
ADD CONSTRAINT `fk_favourite_customer1` FOREIGN KEY (`cust_id`) REFERENCES `customer` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION,
ADD CONSTRAINT `fk_favourite_products1` FOREIGN KEY (`prod_id`) REFERENCES `products` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION;
--
-- Constraints for table `notification`
--
ALTER TABLE `notification`
ADD CONSTRAINT `fk_notification_customer1` FOREIGN KEY (`cust_id`) REFERENCES `customer` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION;
--
-- Constraints for table `order_address`
--
ALTER TABLE `order_address`
ADD CONSTRAINT `fk_order_address_booking1` FOREIGN KEY (`booking_id`) REFERENCES `booking` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION;
--
-- Constraints for table `products`
--
ALTER TABLE `products`
ADD CONSTRAINT `fk_products_brand1` FOREIGN KEY (`brand_id`) REFERENCES `brand` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION,
ADD CONSTRAINT `fk_products_category1` FOREIGN KEY (`cat_id`) REFERENCES `category` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION,
ADD CONSTRAINT `fk_products_currency1` FOREIGN KEY (`curr_id`) REFERENCES `currency` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION,
ADD CONSTRAINT `fk_products_sub_category1` FOREIGN KEY (`sub_cat_id`) REFERENCES `sub_category` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION;
--
-- Constraints for table `prod_galley`
--
ALTER TABLE `prod_galley`
ADD CONSTRAINT `fk_prod_galley_products1` FOREIGN KEY (`prod_id`) REFERENCES `products` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION;
--
-- Constraints for table `recent`
--
ALTER TABLE `recent`
ADD CONSTRAINT `fk_recent_customer1` FOREIGN KEY (`cust_id`) REFERENCES `customer` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION,
ADD CONSTRAINT `fk_recent_products1` FOREIGN KEY (`prod_id`) REFERENCES `products` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION;
--
-- Constraints for table `shopper`
--
ALTER TABLE `shopper`
ADD CONSTRAINT `fk_shopper_users1` FOREIGN KEY (`users_id`) REFERENCES `users` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION;
--
-- Constraints for table `sub_category`
--
ALTER TABLE `sub_category`
ADD CONSTRAINT `fk_sub_category_category1` FOREIGN KEY (`cat_id`) REFERENCES `category` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION;
--
-- Constraints for table `transaction`
--
ALTER TABLE `transaction`
ADD CONSTRAINT `fk_transaction_booking1` FOREIGN KEY (`booking_id`) REFERENCES `booking` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION;
--
-- Constraints for table `wish`
--
ALTER TABLE `wish`
ADD CONSTRAINT `fk_wish_category1` FOREIGN KEY (`cat_id`) REFERENCES `category` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION,
ADD CONSTRAINT `fk_wish_customer1` FOREIGN KEY (`cust_id`) REFERENCES `customer` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION,
ADD CONSTRAINT `fk_wish_sub_category1` FOREIGN KEY (`sub_cat_id`) REFERENCES `sub_category` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION;
COMMIT;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment